Spring
Spring是什么Spring 是一个轻量级 Java 开发框架,核心思想是 IoC 和 AOP。 IoC 用来管理对象的创建和依赖关系,降低耦合;AOP 用来把事务、日志、权限这些公共逻辑从业务代码中抽离出来。 在此基础上,Spring 又提供了 MVC、事务管理、整合数据库等能力,所以它成了 Java 后端开发的核心框架。 没有 Spring: 12UserService userService = new UserService();OrderService orderService = new OrderService(userService); 有 Spring: 12345678910@Servicepublic class UserService {}@Servicepublic class OrderService { @Autowired private UserService userService;} 区别: 以前你自己创建对象 现在 Spring 帮你创建对象 以前你自己维护依赖关系 现在 Spri...
多线程基础
进程和线程进程是程序执行的实体,每一个进程都是一个应用程序,都有自己的内存空间,CPU一个核心同时只能处理一件事情,当出现多个进程需要同时运行时,CPU一般通过时间片轮转调度算法,来实现多个进程的同时运行。 线程像进程里的执行路线 同一个进程里可以有多个线程 这些线程共享这个进程的内存和大部分资源 用来并发执行任务 维度 进程 (Process) 线程 (Thread) 本质 资源分配的基本单位 CPU 调度(执行)的基本单位 资源拥有 拥有独立的内存地址空间(Code, Data, Heap, Stack 等) 共享所属进程的资源,仅拥有少量的私有资源(如 PC, 栈, 寄存器) 创建/切换开销 大。需要分配内存空间、初始化数据段等 小。直接共享进程资源,上下文切换比进程快得多 通信方式 复杂。需通过 IPC(管道、信号量、Socket、共享内存等) 简单。通过读写同一进程内的全局变量或堆内存即可通信 健壮性 高。一个进程崩溃通常不会影响其他进程 低。一个线程崩溃可能导致整个进程内的所有线程一起挂掉 线程的创建和启动通过创建Thre...
集合
集合体系结构 Iterable // 可迭代接口,表示可以使用迭代器或增强 for 遍历 └── Collection // 单列集合的根接口,存一个一个的元素 ├── List // 有序、可重复、有索引 │ ├── ArrayList // 底层是动态数组,查询快,增删慢 │ ├── LinkedList // 底层是双向链表,增删快,查询慢 │ └── Vector // 老版本动态数组,线程安全,较少使用 ├── Set // 无索引、元素不可重复 │ ├── HashSet // 基于哈希表,无序,去重常用...
内部类和函数式编程
内部类内部类就是类中再套一个类 eg: 1234class Outer { class Inner { }} 作用: 让一个类和另一个类关系更紧密 内部类可以方便访问外部类的成员 有些场景下写起来更方便,比如事件处理、临时小对象 Java 里常见有 4 种: 成员内部类 静态内部类 局部内部类 匿名内部类 成员内部类就是:像成员变量一样,直接写在类里面,不加 static。 123456789class Outer { private String name = "Outer"; class Inner { public void show() { System.out.println(name); } }} 这里 Inner 可以直接访问 Outer 的私有成员 name。 创建对象成员内部类对象不能直接 new,一般要先有外部类对象: 123Outer outer =...
最大子数组和
https://leetcode.cn/problems/maximum-subarray/?envType=study-plan-v2&envId=top-100-liked 核心逻辑: Kadane 算法(动态规划) 1234567891011class Solution { public int maxSubArray(int[] nums) { int maxsum=nums[0]; int maxcurrent=nums[0]; for(int i=1;i<nums.length;i++){ maxcurrent=Math.max(nums[i],maxcurrent+nums[i]); maxsum=Math.max(maxcurrent,maxsum); } return maxsum; }} 1. 核心决策:你要不要“另起炉灶”?在遍历数组的每一个数字...
