Java_规范
it_lihongmin
不要觉得自己怎么样,现实就是比你厉害的人,比你更努力!
当才华撑不起自己野心的时候,老老实实地踏实学习吧!
展开
-
Java深度拷贝方式和性能对比
二、性能对比 创建一个50个字段的对象,并使用不同的深度拷贝方式,创建对象N多遍。@Data@NoArgsConstructor@AllArgsConstructorpublic class DeepCopyEntity implements Cloneable, Serializable { /** * 序列化标识 */ private static final long serialVersionUID...原创 2020-09-27 16:26:03 · 3876 阅读 · 1 评论 -
ArrayList、LinkedList、Victor区别
一、ArrayList和Vector 1)、ArrayList和Victor都实现了iterator和List接口,并且底层都是基于数组方式实现(所以同时具备数据的特点,可以根据下标查找数据,所以查询快,但是插入和查询时候需要遍历,所以速度慢)。 2)、都有初始化的长度,当发生扩容时,Vector默认扩容为原来的两倍,扩容倍数可以更改。而ArrayList只能扩容为原来的1...原创 2018-06-23 23:36:55 · 1191 阅读 · 0 评论 -
HashMap、Hashtable、 TreeMap、WeakhashMap的区别
一、HashMap与HashTable的区别 首先HashMap(java1.8后HashMap使用数组加链表或数组加红黑树组成)和Hashtable都使用数组加链表的方式进行实现,同时具有数组和链表的特点。 1、HashMap可以理解为是Hashtable的一个轻量级非线程安全的实现,HashMap允许一个null的key值,而Hashtable不允许 hash...原创 2018-06-23 23:14:49 · 340 阅读 · 0 评论 -
Integer使用==判断的问题
之前项目中用到Integer使用的==判断,出问题打断点发现问题,查询后发现是缓存的问题,但是没有仔细去想里面的问题,现将其进行了分析。说明:1、Integer类在初始化时将常用的数字 -128到127直接使用其内部类cache块进行初始化,我们要知道在该范围内的Integer可以使用==进行比较是因为其使用缓存,引用类型比较是判断内存是否同一地址。 ...原创 2017-07-31 12:41:16 · 1112 阅读 · 0 评论 -
手写HashMap实现
一、理解说明是哈希表,hashmap的实现原理哈希表由数组+链表进行实现,见下图可进行说明,理解哈希表的内存模型和特点对于理解hashmap非常重要。哈希表的使用场景非常广泛,比如memcache其实就是一张非常大的哈希表。二、重新hashmap的方法,主要理解思想package demo.netty_lihongmin.map;/** * 抽取自己的HashM...原创 2017-07-30 15:49:31 · 1127 阅读 · 1 评论 -
读写properties文件属性
说明:很多时候都是项目需求推动才会去找一些实现方式,然后草草的就实现了,想想不太对,决定将自己在工作中遇到的问题慢慢的进行总结,为自己也为别人方便。 需求大致如下,有个spriung boot项目的定时器,每天会执行一次,将扫描mongodb中的某一张表中的type为某一类型的数据,定时copy到mysql数据库中,为了效率问题,需要将上一次扫描的最大id记录到一个单例的类中进行存...原创 2017-05-20 17:37:41 · 827 阅读 · 0 评论 -
final关键字
一、final修饰类 1、被final修饰的类不能再被继承 2、类的所有方法会被隐式的设置为final类型,成员变量不会被隐式设置 3、使用:除非真的该类需要设置为不能被继承,否则需要谨慎设置final类二、final修饰方法 1、只有在防止子类继承的情况下需要将方法设置为final类型,现在的版本与性能无关(之前性能会加快)。 2、被pr...原创 2018-07-27 19:08:25 · 2100 阅读 · 0 评论 -
ThreadLocal结构和用法
1、ThreadLocal的数据结构 ThreadLocal内部维护的是一个类似Map的ThreadLocalMap数据结构,key为当前对象的Thread对象,值为泛型的Object。使用ThreadLocal比较方便的就是当thread不变的情况下,可以很方便的设置或者获取对象。但是需要注意的是ThreadLocal中的Entry的key和value的关系有系统进行维护,若维护不当则...原创 2018-07-25 22:11:41 · 11947 阅读 · 0 评论 -
跨域分享问题
一、什么是跨域调用问题?跨域调用是指同一浏览器下,一个页面(属于一个域名)的ajax需要调用另一个域名下的接口等以获取资源,而浏览器为了安全问题一般都限制了跨域访问,也就是不允许跨域请求资源。注意:跨域限制访问,其实是浏览器的限制。而我们的h5的项目通常都与数据接口部署在不同的域名下面(一般是在不同的二级域名下面),所以浏览器也会限制跨域访问,而浏览器对跨域访问不一定是在请求发出的时候,也有可能是...原创 2018-03-19 10:35:41 · 360 阅读 · 0 评论 -
Java spi
一、spi需要遵循的标准 1、需要统一的加载目录:resources/META-INF/services 2、在services目录下创建一个配置文件,满足: 1)、文件名是扩展(接口实现)的接口的全名 2)、文件内部的内容是实现接口的实现类的全路径 3)、文件的编码必须为UTF-8原创 2017-09-01 13:43:53 · 412 阅读 · 0 评论 -
java序列化
一、Java序列化的问题 1、序列化的结果为二进制文件,文件比较大,传输过程较长 2、不能跨语言原创 2017-09-12 00:26:57 · 550 阅读 · 0 评论 -
HashMap实现原理及源码分析
哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,而HashMap的实现原理也常常出现在各类的面试题中,重要性可见一斑。本文会对java集合框架中的对应实现HashMap的实现原理进行讲解,然后会对JDK7的HashMap源码进行分析。目录 一、什么是哈希表转载 2017-06-25 15:15:01 · 294 阅读 · 0 评论 -
HashMap的工作原理
HashMap的工作原理是近年来常见的Java面试题。几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道Hashtable和HashMap之间的区别,那么为何这道面试题如此特殊呢?是因为这道题考察的深度很深。这题经常出现在高级或中高级面试中。投资银行更喜欢问这个问题,甚至会要求你实现HashMap来考察你的编程能力。ConcurrentHashMap和其它同步集合的引入转载 2017-06-25 15:13:11 · 197 阅读 · 0 评论 -
HashMap实现原理分析
1. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难,插入和删除容易。转载 2017-06-25 15:11:00 · 213 阅读 · 0 评论 -
多数据源配置(mysql读写分离)
applicationContext.xml 配置:<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" x原创 2017-06-17 18:26:28 · 354 阅读 · 0 评论 -
创建线程安全的SimpleDateFormat
1、使用ThreadLocal进行封装package demo.util;import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.time.LocalDateTime;import java.time.format.DateT...原创 2017-05-21 15:05:52 · 672 阅读 · 0 评论 -
String
一、String 的substring用法:我们一般使用 String str = “1231sgdh”;str = str.substring(3);正解: str = new String(str.substring(2));看看源码/** * Returns a string that is a substring of this string原创 2017-05-21 14:21:59 · 282 阅读 · 0 评论 -
java中几种Map在什么情况下使用,并简单介绍原因及原理
一、Map用于保存具有映射关系的数据,Map里保存着两组数据:key和value,它们都可以使任何引用类型的数据,但key不能重复。所以通过指定的key就可以取出对应的value。Map接口定义了如下常用的方法:1、void clear():删除Map中所以键值对。2、boolean containsKey(Object key):查询Map中是否包含指定key,如果包含则返回true。转载 2017-05-25 15:15:33 · 337 阅读 · 0 评论