
Java
有一天我也能变成大牛
慢慢沉淀
展开
-
JDK不同版本内存模型总结
1.不同版本JDK的intern()区别 JDK6中当调用intern方法时,如果字符串常量池先前已创建出该字符串对象,则返回池中的该字符串的引用。否则,将此字符串对象添加到字符串常量池中,并返回该字符串对象的引用。 JDK6+中当调用intern方法时,如果字符串常量池先前已创建出该字符串对象,则返回池中的该字符串的引用。否则如果该字符串对象已经存在于Java堆中,则将堆中此对象的引用添加到字符串常量池中,并且返回该引用;如果堆中不存在,则在池中创建该字符串并返回其引用。2.方法区、常量原创 2020-06-21 17:29:41 · 426 阅读 · 0 评论 -
FastJson那些事儿
FastJson对于Java程序员来说肯定不会陌生,正如它的名字一样,他的特点就是快,那么阿里巴巴的FastJson、开源的Jackson、Google的Gson各有什么特点呢?1.FastJson,不需要依赖额外的jar包,提供静态方法,调用简单方便,而且速度在三者之中相对最快(查阅资料的发现有人说,在反序列化时,json字符串较大,反序列速度略低于Jackson),但与Jackson差不了多少。2.开源的Jackson,所依赖的jar包较少,但是使用时需要实例化,调用繁琐,可以在使用的时候进原创 2020-05-24 15:04:11 · 220 阅读 · 0 评论 -
Java面试题总结
1.spring生命周期,几种scope区别singleton(默认)、prototype、request、session、global session原创 2019-11-20 20:36:36 · 129 阅读 · 0 评论 -
RateLimiter限流
import com.google.common.util.concurrent.RateLimiter;引用guava封装的RateLimiterprivate Map<String, RateLimiter> rateLimiterMap = new ConcurrentHashMap<>();//tps从数据库或者缓存中获取RateLimiter ...原创 2019-11-18 20:36:21 · 726 阅读 · 0 评论 -
ContextLoaderListener
项目启动初始化问题原创 2019-07-18 19:53:38 · 168 阅读 · 0 评论 -
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException
在settings-maven-runner的VMoptions里添加-Dmaven.multiModuleProjectDirectory=$MAVEN_HOME-Dmaven.wagon.http.ssl.insecure=true-Dmaven.wagon.http.ssl.allowall=true-Dmaven.wagon.http.ssl.ignore.validity...原创 2019-05-17 19:04:39 · 1716 阅读 · 3 评论 -
注解@Aspect的AOP实现
待完成原创 2019-05-07 10:36:40 · 194 阅读 · 0 评论 -
Failed to read artifact descriptor for xxx
在pom.xml中导入包时有时候会出现这样的问题,找到C:\Users\xxx\.m2\repository的路径,找到对应的包,如图文件家里有个.lastUpdated的文件,删掉它,然后重新导入ok了。...原创 2019-03-06 15:51:06 · 3196 阅读 · 2 评论 -
死锁
死锁四个必要条件互斥条件请求和保持条件不剥夺条件环路等待条件public class DeadLock implements Runnable { public int flag = 1; //静态对象是类的所有对象的共享,o1与o2的争夺满足必要条件之一,互斥 //满足不可剥夺条件,进程所获得的资源在未使用完毕之前,不被其他进程强行剥夺 //请求和保持条件:进程...原创 2018-05-27 22:31:50 · 138 阅读 · 0 评论 -
HashMap与ConcurrentHashMap
HashMapHashMap是数组(桶)+链表+红黑树(JDK1.8后,若链表长度大于8时,则转化为红黑树)final int hash; //用来定位数组索引位置final K key;V value;Node<K,V> next; //链表的下一个nodeNode是HashMap的一个内部类,本质是就是一个映射(键值对),HashMap使用哈希表来存储的。HashM...原创 2018-05-27 22:33:06 · 135 阅读 · 0 评论 -
数据结构中常见的树
BST树即二叉搜索树:1.所有的非叶结点至多拥有两个子结点2.所有的结点存储一个关键字3.非叶结点的左指针小于其关键字的子树,右子针指向大于其关键字的子树 BST的搜索,从根结点开始,如果查询的关键字与结点关键字相等,那么就命中;否则,如果查询关键字比结点关键字小,就进入左儿子;如果比结点关键字大,就进入右儿子;如果左儿子或右儿子指针为空,则没找到相应的关键字 如果BST树的所有非叶子结点的左右...原创 2018-05-27 22:34:36 · 155 阅读 · 0 评论 -
volatile和synchronized
volatile1. volatile修饰的变量具有可见性volatile是变量修饰符,其修饰的变量具有可见性,当对volatile标记的变量进行修改时,会将其他缓存中存储的修改前的变量清除,当用到缓存中的变量时,需要重内存中重新读取。在Java中为了加快程序的运行效率,对一些变量的操作通常是在该线程的寄存器或是CPU缓存上进行的,之后才会同步到主存中,而加了volatile修饰符的变量相当于直接...原创 2018-05-27 22:36:02 · 107 阅读 · 0 评论 -
敏感词过滤
@Service// Spring中InitializingBean接口为bean提供了初始化方法的方式,它只包括afterPropertiesSet方法,// 凡是继承该接口的类,在初始化bean的时候会执行该方法。public class SensitiveService implements InitializingBean { private static final Lo...原创 2018-05-27 22:36:49 · 342 阅读 · 0 评论 -
equals和hashCode
关于equals和hashCode 方法,一致的约定是:重写了equals与方法的对象必须同时重写hashCode()方法。如果2个对象通过equals调用后返回是true,那么这个2个对象的hashCode方法也必须返回同样的int型散列码如果2个对象通过equals返回false,他们的hashCode返回的值允许相同。(但是hashCode返回独一无二的散列码,能提高散列的性能,会让存储这个...原创 2018-06-20 16:45:39 · 133 阅读 · 0 评论 -
Socket类的getInputStream方法与getOutputStream方法的使用
客户端上的使用1.getInputStream方法可以得到一个输入流,客户端的Socket对象上的getInputStream方法得到输入流其实就是从服务器端发回的数据。2.getOutputStream方法得到的是一个输出流,客户端的Socket对象上的getOutputStream方法得到的输出流其实就是发送给服务器端的数据。服务器端上的使用1.getInputStream方法...转载 2018-07-19 10:49:42 · 827 阅读 · 0 评论 -
list!=null和list.size()>0
1.list==null,list没有分配地址,在堆内不存在。 2.list.size()=0,意思list分配了地址,在内存堆存在,但是没有元素,所以大小为零。 3.list如果为null的话,说明没有进行初始化,这时list调用任何的方法都会抛出空指针异常。list.size()==0说明list已经被new过,但是里面没有值。 ...原创 2018-09-09 12:59:24 · 1190 阅读 · 0 评论 -
文件上传到ftp时文件尾部出现丢失问题
FtpUtil.putFileToFtp(ftpHost, ftpUser, ftpPwd, ftpPath, fileName, file);System.out.println(file.length());csv.flush();csv.close();csv.flush();csv.close();FtpUtil.putFileToFtp(ftpHost, ftpUser...原创 2018-09-20 14:24:13 · 3314 阅读 · 0 评论 -
list.toArray()中的问题
public void testToArray() { String[] strArray = new String[] { "aa", "bb", "cc" }; List<String> list = new ArrayList<>(Arrays.asList(strArray)); String[] strArray2...原创 2019-01-16 17:03:15 · 904 阅读 · 1 评论 -
foreach与iterator
1.foreach执行下面这段代码的时候会抛出异常public void testForeach() { List<Integer> list = new ArrayList<>(); for (int i = 0; i < 10; i++) { list.add(i); } ...原创 2019-02-26 15:20:55 · 852 阅读 · 0 评论 -
线程池
ThreadPoolExecutorcorePoolSize:核心线程数量maximumPoolSize:线程最大线程数workQueue:阻塞队列,存储等待执行的任务,对线程运行过程产生重大影响三个参数的关系:如果线程数小于corePoolSize,直接创建新的线程处理任务,无论其他线程是否空闲。线程数量大于corePoolSize且小于maximumPoolSize时,只有当workQueue...原创 2018-05-27 22:30:00 · 146 阅读 · 0 评论