java学习过程
文章平均质量分 71
knight_ljl
分享学习过程
展开
-
设计模式-单例-工厂
设计原则一句话归纳目的开闭原则对扩展开放,对修改关闭降低维护带来的新风险依赖倒置原则高层不应该依赖低层,要面向接口编程更利于代码结构的升级扩展单一职责原则一个类只干一件事,实现类要单一便于理解,提高代码的可读性接口隔离原则一个接口只干一件事,接口要精简单一功能解耦,高聚合、低耦合迪米特法则不该知道的不要知道,一个类应该保持对其它对象最少的了解,降低耦合度只和朋友交流,不和陌生人说话,减少代码臃肿里氏替换原则不要破坏继承体系,子类重写方...原创 2021-07-22 09:59:00 · 159 阅读 · 0 评论 -
常用算法-顺序排序
定义排序就是根据某一个标准,对某一组内容进行某一种规定进行顺序排列。分类顺序排序使用一对嵌套循环进行排序,n2n^2n2的时间复杂度。选择排序插入排序冒泡排序对数排序快速排序归并排序选择排序通过反复将某一特定的值放到它在列表中的最终已排序位置。选择排序策略扫描整个列表,找到最小值。最小值放到第一位扫描除了第一个值的其他值,找到最小值。最小值放到第二位以此类推选择排序代码实现 /** * data 待排序列表 * min 从0开始 * index原创 2021-05-27 16:24:06 · 3828 阅读 · 0 评论 -
常用算法-查找
定义查找就是在某个项目群中,找到其中想要的项目,或者说确定想要的项目是否在该项目群中。线性查找从头到尾一次比较每一个值,知道找到目标值。public static <T extends Comparable<? super T>> boolean linearSearch( T[] data, int min, int max, T target){ int index = min; boolean found = false; while(!found &am原创 2021-05-25 15:23:38 · 108 阅读 · 0 评论 -
数据结构-栈
定义栈的元素是按照后进先出(LIFO)的顺序,通常我们把栈的末端叫做栈顶,我们对它的添加删除都是在栈顶操作。一般我们使用栈的时候,大部分都是用它来颠倒顺序。术语压入(push):添加一个元素都栈顶弹出(pop):从栈顶移出一个元素查看(peek):查看栈顶元素非空(isEmpty):确定当前栈是否为空大小(size):当前栈中元素个数栈接口这里定义一些操作,具体实现由类完成。public interface StackADT<T>{ public void push(T原创 2021-05-08 15:35:08 · 80 阅读 · 0 评论 -
数据结构-算法分析
效率分析时间效率假设:洗一个盘子需要30秒,烘干一个盘子也需要30秒,那么洗完n个盘子加烘干需要多少分钟?Tn个盘子 = n x (30秒洗+30秒烘干) = 60n 秒用函数表达就是:f(x) = 60x又假设在洗一个盘子时,总会溅水到之前的盘子上,也就是要烘干之前的所有盘子。每洗一个盘子30秒,花30秒烘干最后一个盘子,花30x2秒烘干倒数第二个盘子,花费90秒烘干倒数第三个盘子,以此类推。Tn = n x(30秒洗) + (∑i=1n(i×30))\displaystyle \left(原创 2021-04-27 17:57:10 · 179 阅读 · 0 评论 -
Spring Cloud学习过程二
Spring Cloud HystrixHystrix也是基于Netflix,它具有服务降级,服务熔断,线程隔离,请求缓存,请求合并以及服务监控等功能。使用步骤:1.引用<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix</artifactId></dependency>原创 2021-04-27 10:49:50 · 181 阅读 · 2 评论 -
Spring Cloud学习过程一
Spring Cloud 在服务治理中为我们做了一层抽象,方便我们集成各种服务治理组件。如:eureka,consul,zookeeper等。Spring Cloud Eureka实现步骤:1.创建项目,引用<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artif原创 2021-04-23 14:51:33 · 157 阅读 · 0 评论 -
浅析java中的集合类(容器)
泛型和类型安全的容器在javaSE5之前,我们主要考虑的问题就是编译器允许你向容器插入不正确的类型。例如在一个apple对象的容器中,插入了orange。正常情况下,编译器会发出警告,因为没有使用泛型。我们可以使用javaSE5中的注解特性来取消警告。class Apple{ private static long counter; private final long id =原创 2017-07-19 14:03:26 · 245 阅读 · 0 评论 -
Stack/Set/Map/Queue浅析
栈“栈”通常是表示“后进先出”的容器。就好比在盘子里叠入披萨,最后放进去的总是在最上面。ListkedList具有能直接实现栈的所有功能的方法,因此可以直接将LinkedList当作栈使用。不过,有时候一个真正的“栈”更能把事情说明白:import java.util.LinkedList;public class Stack<T>{ private LinkedList<T> stor原创 2017-07-21 15:36:52 · 426 阅读 · 0 评论 -
清理:终结处理和垃圾回收
GC的原理通常我们在使用一个对象后就会对其“弃之不顾”,但是这样并非是安全的。当然,java有GC负责回收无用对象占据的内存资源。但也有特殊情况:假如你的对象活的了一块“特殊”的内存区域,由于GC只知道释放那些经由new分配的内存,所以它不知道该如何释放该对象的这块“特殊”内存。为了解决这样的情况,java允许在类中定义一个名为finalize()的方法。finalize的原理它的工作原理“假定”原创 2017-07-18 13:06:34 · 428 阅读 · 0 评论 -
JAVA学习过程初始化和清理
用构造器确保初始化初始化和清理是涉及安全的两个问题。在java中引入了构造器的概念。并且额外的提供了GC(垃圾回收器)。可以假想为编写的每个类都定义了一个初始化方法。该方法的名称提醒自己在使用其对象之前,应该首先调用初始化方法,然而这同时意味着用户必须记得自己去调用此方法。在java中,通过提供构造器,类的设计者可确保每个对象都会得到初始化。创建对象时,如果其类具有构造器,java就会在用户有能原创 2017-04-10 16:20:47 · 226 阅读 · 0 评论 -
详解List、Iterator
ListList可以将元素维护在特定的序列中。List接口在Collection的基础上添加了大量的方法,使得可以在List的中间插入和移除元素。两种基本的List类型:1.ArrayList,它长于随机访问元素,但在List的中间插入和移除元素较慢。2.LinkedList,它通过代价比较低的在List中间进行的插入和删除操作,提供了优化的顺序访问。LinkedList在随机访问方面比较慢,但原创 2017-07-20 14:26:03 · 628 阅读 · 0 评论