![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
云梦惊蝉
这个作者很懒,什么都没留下…
展开
-
HeadFast设计模式之最少知识原则
什么是最小知识原则最小知识原则就是在设计代码的时候,注意减少对象之间的交互,只和满足条件的对象进行交互。最小知识原则的特点1 最小知识原则与德墨忒尔法则的关系?答 :其实这两个名词指的是同一个原则,但是我们更倾向于使用最小知识原则称呼,原因有两个,(1)这个名字更直接。(2)法则给人的感觉是强制,事实上没有任何原则是法律。2 最小知识原则有哪些缺点?答:虽然这个原则减少了对象之间的依赖,但是会导致使用更多的包装类,可能导致时间复杂度和空间复杂度的增加,降低运行中的性能。最小知识原则的条件原创 2020-08-20 22:15:31 · 152 阅读 · 0 评论 -
线程池submit和execute方法原理
线程池的作用 :1. 避免大量的线程强占资源2. 避免大量的线程创建和销毁带来的开销 线程池的原理 :创建线程池的时候,可以使用executors的静态方法,也可以使用new ThreadPoolExecutor的方式手动创建线程池,通过在线程池中指定参数达到创建不同类型的线程池的效果其中,executors底层其实也是调用的new ThreadPoolExecutor()的方式创...原创 2019-05-19 15:48:22 · 8506 阅读 · 0 评论 -
ArrayList的add()和get()方法
add()方法用add()方法,首先判断当前arraylist的数组长度是否需要扩容,在扩容的方法中 : 初始化的长度是10,以后每次增加是采用size+(size>>1)的方式,然后判断扩容后的长度与数组需要的最小长度对比,如果小于,则把当前最小长度最为新的数组的长度,如果新的长度大于数组的最大长度,则使用integer的最大值作为长度然后在数组中添加要添加的元素,返回tr...原创 2019-05-19 15:46:46 · 11408 阅读 · 2 评论 -
Linkedlist的add()和get()方法
add()方法调用add()方法添加元素,会调用linkedlast(),把新添加的元素放在原链表最后一位首先获取原链表最后一个元素,根据当前输入的元素构建一个node,把原最后一位元素最为新构建的元素中pre对应的变量新构建的node覆盖之前最后一个node变量判断为添加前的最后一位是否为空,如果为空,新添加的一个node也是first变量对应的元素如果添加前的最后一位不为空,则未添...原创 2019-05-19 15:43:40 · 5702 阅读 · 0 评论 -
Hashtable的get()和put()
jdk1.8 中hashtable的get()首先计算key的下标,获取hashtable中的数组找到对应下标数组,获取对应的链表遍历俩表,判断是否有满足条件的entry,如果有,获取value对应的值返回否则,返回为空. @SuppressWarnings("unchecked") public synchronized V get(Object key) { ...原创 2019-05-19 15:39:31 · 5860 阅读 · 0 评论 -
ConcurrentHashMap的Get()和Put()方法
jdk 1.8get()方法首先获取到concurrentHashmap中segments数组的下标,找到对应的segment,然后找到对应的hashentrys数组,通过hash值计算获取下标,遍历hashentrys中指定下标的链表从中判断是否存在hashentry满足输入的key的条件,如果有,则返回对应的value,如果没有,返回为空.public V get(Object k...原创 2019-05-19 15:36:06 · 5119 阅读 · 6 评论 -
HashMap中Put()和Get()方法原理
JDK1.7:get()方法首先判断输入的key是否为空,如果为空,从hashmap数组下标为0的位置获取值返回如果不为空,根据key的值,从hashmap数组中获取对应的entry对象,判断这个对象是否为空,为空返回null,不为空返回对应的value值, 获取value的方法中key为空和不为空时的方法里都先判断数组中的元素是否为0 ,如果不为0,才继续查找// hashmap的...原创 2019-05-19 15:33:13 · 14775 阅读 · 1 评论 -
《JAVA多线程编程核心技术》-- 第一章 -- java多线程技能
1.1 进程和多线程的概念以及线程的优点进程: 进程是操作系统进行资源分配和调度的基本单位(可以将windows中任务管理器中的每个exe程序理解为一个进程)线程: 线程可以理解为进行中独立运行的主任务例如: 电脑管家这个程序可以看做一个进程,电脑管家里的病毒查杀,清理垃圾等可以做为线程单线程与多线程的区别:相对于单线程,多线程可以同时处理多个任务,减少总的任务完成时间,这是多线...原创 2019-04-14 13:28:16 · 221 阅读 · 0 评论 -
笔试题: 使用两个线程交替打印奇偶数
项目路径:创建一个打印数字的对象,对象内有一个用于计数的成员变量,一个用于打印偶数的方法,一个用于打印奇数的方法.通过使用阻塞的方式来决定当前线程是否可以打印.PrintNum.javapackage com.beikai.springboottestdemo.writtentest.Thread;/** * @ClassName PrintNum * @Description T...原创 2019-04-09 21:43:52 · 1264 阅读 · 0 评论 -
Java-IO的一些方法
项目路径:Test01.javapackage com.beikai.springboottestdemo.IO;import java.io.*;/** * 地址工具类 */class AddressUtils2 { public static String address = "E:\\StorageTest\\abc"; public static Str...原创 2019-04-09 21:34:36 · 175 阅读 · 0 评论 -
Java-通过线程实现生产者消费者设计模式(平衡)
项目目录定义一个消费者,通过构造器的方式注入仓库对象,用于线程调用仓库对象的消费方法,用于消费仓库中的产品.Customer.javapackage com.beikai.springboottestdemo.Thread.ProductorAndCustomer;/** * @ClassName Customer * @Description TODO * @Author Ad...原创 2019-04-09 20:46:22 · 216 阅读 · 0 评论 -
Java-定时器Timer创建线程
通过定时器的方式创建线程,设置线程多久后开始,每过多久再次执行一次(循环)AboutTimerThread.javapackage com.beikai.springboottestdemo.Thread.timer;import java.util.Date;import java.util.Timer;import java.util.TimerTask;/** * @Cla...原创 2019-04-09 20:30:43 · 968 阅读 · 0 评论 -
JAVA-线程的一些方法
项目路径:package com.beikai.springboottestdemo.Thread;import com.beikai.springboottestdemo.Thread.test.BankAccount;import com.beikai.springboottestdemo.Thread.test.BankAccount1;import com.beikai.spr...原创 2019-04-09 20:09:54 · 177 阅读 · 0 评论 -
String 中 == 和 equal()笔试题
String test1 = new String(“张三”); 这种方式会产生两个对象:一个是 “张三” 在 String pool中产生的一个值为 “张三” 的对象,另一个是在堆中产生一个值为 “张三” 的对象,这个对象是String Pool中的 “张三” 的拷贝,上述中 test1 最后指向的是...原创 2019-04-01 23:20:20 · 448 阅读 · 0 评论 -
SpringAOP底层原理探究
spring 中aop 使用哪种方式的代理?使用idea 打开spring项目,双加shift,搜索AopProxy,可以找到这个类:查看这个类有几个实现类:可以看到有三个: CglibAopProxy.java JdkDynamicAopProxy.java ObjenesisCglibAopProxy.java 但是这三个类其实代表的是两种,分别是 jdk的代理类和...原创 2019-03-27 20:59:44 · 4084 阅读 · 0 评论 -
JAVA-反射的一些方法
项目路径:Test01.java/** * @ClassName Test01 * @Description TODO * @Author Admin * @Date 2019/4/5 9:04 * @Version 1.0 * <p> * 反射: * 反射就是利用字节码文件,获取对象的属性,字段,方法,构造方法的类的内部内容,根据字节码文件创建对象,调用对象方法...原创 2019-04-05 22:57:31 · 940 阅读 · 0 评论 -
算法(笔试题) : 城市天际线
题目:用一个二维数组,grid来表示城市天际线,二维数组中的每个数代表相应位置上建筑的高度,从横向和纵向观察到最高点,构成城市天际线,集城市天际线有每一列的最大值两个 一维数组构成,问:在保持城市天际线不变的情况下,所有建筑加起来的总高度最多还能增加多少,每个建筑增加的高度可以不一样,建筑的高度也可以时0示例 1:例子:输入: grid = [[3,0,8,4],[2,4,5,7],[...原创 2019-03-18 23:40:18 · 1185 阅读 · 1 评论 -
算法(笔试题) : 最近人的最远距离
题目: 在一排座位( seats)中,1 代表有人坐在座位上,0 代表座位上是空的。至少有一个空座位,且至少有一人坐在座位上。 亚历克斯希望坐在一个能够使他与离他最近的人之间的距离达到最大化的座位上。返回他到离他最近的人的最大距离。示例 1:输入:[1,0,0,0,1,0,1]输出:2解释: 如果亚历克斯坐在第二个空位(seats[2])上,他到离他最近的人的距离为 2 。 如果亚...原创 2019-03-18 23:30:16 · 1031 阅读 · 0 评论