- 博客(66)
- 收藏
- 关注
原创 二十三种设计模式
简单工厂不是一种设计模式,反而比较像是一种编程习惯。简单工厂模式又叫做静态工厂方法模式(static Factory Method pattern),它是通过使用静态方法接收不同的参数来返回不同的实例对象. 定义一个工厂类,根据传入的参数不同返回不同的实例,被创建的实例具有共同的父类或接口。(1)需要创建的对象较少。(2)客户端不关心对象的创建过程。封装了创建对象的过程,可以通过参数直接获取对象。
2025-02-27 22:12:48
954
原创 六大设计原则
对扩展开放和对修改关闭表示当一个类或一个方法有新需求或者需求发生改变时应该采用扩展的方式而不应该采用修改原有逻辑的方式来实现。因为扩展了新的逻辑如果有问题只会影响新的业务,不会影响老业务;开闭原则是所有设计模式的最核心目标,也是最难实现的目标,但是所有的软件设计模式都应该以开闭原则当作标准,才能使软件更加的稳定和健壮。也就是说在类的设计中 我们不要设计大而全的类,而是要设计粒度小、功能单一的类.改动成本最小,只需要追加新逻辑,不需要改的老逻辑。新老逻辑解耦,需求发生改变不会影响老业务的逻辑。
2025-02-12 20:34:08
300
原创 java单例的几种实现方式
线程 1 首先执行新建实例的第一步,也就是分配单例对象的内存空间,由于线程 1 被重排序,所以执行了新建实例的第三步,也就是把 singleton 指向之前分配出来的内存地址,在这第三步执行之后,singleton 对象便不再是 null。这里需要留意一下 1-2-3 的顺序,因为存在指令重排序的优化,也就是说第 2 步和第 3 步的顺序是不能保证的,最终的执行顺序,可能是 1-2-3,也有可能是 1-3-2。这个名称输出,反序列化的时候再通过这个名称,查找对应的枚举类型,因此反序列化后的实例也会。
2023-09-25 01:32:16
275
原创 多线程与并发
如果在main线程中调用了t1.join(2000),那么main线程会进入到等待状态,需要等待t1执行2s后,在恢复到就绪状态等待CPU调度。如果在等待期间,t1已经结束了,那么main线程自动变为就绪状态等待CPU调度。如果在main线程中调用了t1.join(),那么main线程会进入到等待状态,需要等待t1线程全部执行完毕,在恢复到就绪状态等待CPU调度。可以让获取synchronized锁资源的线程,通过notify或者notifyAll方法,将等待池中的线程唤醒,添加到。
2023-09-23 19:45:25
177
原创 类的加载机制以及jvm的介绍
1.3.在Java堆中生成一个代表这个类的java.lang.Class对象,作为对方法区中这些数据的访问入口。堆区域中,s0区和s1区的内存比为1:1,eden区比s0区比s1区 8:1:1。1.2.将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。1.装载:由类加载器来根据文件的全限定名来读取为二进制的字节流。向上查询类加载器,当前加载器能不能加载当前类,不能就向下委派。3.虚拟机栈:线程执行区域,存放线程执行的状态,java方法。打破双亲委派,自己继承一个类加载器的类重写方法。
2023-09-06 18:01:12
83
原创 15.算法习题之斐波那契数列
如果某个递归,除了初始项之外,具有如下的形式F(N) = C1 * F(N) + C2 * F(N-1) + … + Ck * F(N-k) ( C1…Ck 和k都是常数)并且这个递归的表达式是严格的、不随条件转移的那么都存在类似斐波那契数列的优化,时间复杂度都能优化成O(logN)
2023-04-23 22:13:53
456
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人