![](https://img-blog.csdnimg.cn/20200518181831285.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java单排记
梦想成为海贼王的男人
只做了一点微小的努力
感觉惭愧
只是个人学习笔记,如有错误欢迎指点。
飞奔的小猪佩奇
不知何许人也,亦不详其姓字。好读书,求甚解。常著文章自娱,颇示己志。忘怀得失,有始有终......
展开
-
ConnectTimeout、ConnectionRequestTimeout、SocketTimeout的含义.md
代码块RequestConfig requestConfig = RequestConfig.custom() .setConnectionRequestTimeout(2000) .setConnectTimeout(1000) .setSocketTimeout(2000) .build();connectionRequestTimout:指从连接池获取连接的time原创 2020-05-29 15:37:55 · 2552 阅读 · 0 评论 -
log4j.properties配置文件详解
日志配置文件就是用来设置记录的级别,存放的位置和布局,它可接key=value格式的设置或xml格式的设置信息.#####一 基本配置格式#配置根Loggerlog4j.rootLogger = [ level ] , appenderName , appenderName1 , …#配置日志信息输出目的地Appender及Appender选项log4j.appender.appenderName = fully.qualified.name.of.appender.class log4j.原创 2020-05-19 10:35:54 · 296 阅读 · 0 评论 -
深入理解JVM之堆内存
一、为什么会有年轻代 为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是'''优化GC性能'''。你先想想,如果没有分代,那我们所有的对象都在一块,GC的时候我们要找到哪些对象没用,这样就会对堆的所有区域进行扫描。而我们的很多对象都是朝生夕死的,如果分代的话,我们把新创建的对象放到某一地方,当GC的时候先把这块存“朝生夕死”对象的区域进行回收,这样就会腾出很大的空间出来。二、JVM中的对象虚拟机遇到一条new指令时:根据new的参数是否能在常量池中定位原创 2020-05-19 10:33:40 · 338 阅读 · 0 评论 -
JVM 优化设置 -Xss -Xms -Xmx -Xmn 参数设置
-Xss -Xms -Xmx -Xmn 区别JVm对内存的参数配置 我们可以修改这些参数 让运行程序达到最好的效果参数含义-Xms堆内存最小大小 , 默认为初始化内存-Xmx堆内存最大内存-Xmn堆内新生代的大小. 通过这个值也可以得到年老代的大小 : -Xmx 减去 -Xmn除了这些配置,JVM还有非常多的配置,常用的如下:堆设置-Xms:初始堆大小-Xmx:最大堆大小-Xmn:新生代大小-XX:NewRatio:设置新生代和老年代的比值。如:原创 2020-05-19 10:32:34 · 951 阅读 · 0 评论 -
HashMap 的底层结构 设计原理 扩容机制
本文摘要Jdk1.8 引入了红黑树和扩容机制的优化!常用的Map 和 结构(1) HashMap它根据键的hashCode值存储数据,大多数情况下可以直接定位到它的值,因而具有很快的访问速度,但遍历顺序却是不确定的。HashMap最多只允许一条记录的键为null,允许多条记录的值为null。HashMap非线程安全,即任一时刻可以有多个线程同时写HashMap,可能会导致数据的不一致。如果需要满足线程安全,可以用 Collections的synchronizedMap方法使HashMap具有线程原创 2020-05-19 10:30:27 · 200 阅读 · 0 评论 -
让Java代码远离 bug
禁止使用构造方法 BigDecimal(double)BigDecimal(double) 存在精度损失风险,在精确计算或值比较的场景中可能会导致业务逻辑异常。反例:BigDecimal value = new BigDecimal(0.1D); // 0.100000000000000005551115...正例:BigDecimal value = BigDecimal.valueOf(0.1D);; // 0.1返回空数组和空集合而不是 null返回 null ,需要调用方强制检测原创 2020-05-19 10:29:46 · 86 阅读 · 0 评论 -
让Java代码更优雅
长整型常量后添加大写 L在使用长整型常量值时,后面需要添加 L ,必须是大写的 L不能是小写的 l ,小写 l 容易跟数字 1 混淆而造成误解。反例:long value = 1l;long max = Math.max(1L, 5);正例:long value = 1L;long max = Math.max(1L, 5L);不要使用魔法值当你编写一段代码时,使用魔法值可能看起来很明确,但在调试时它们却不显得那么明确了。这就是为什么需要把魔法值定义为可读取常量的原因。但是,-1、0原创 2020-05-19 10:28:22 · 312 阅读 · 0 评论 -
让Java代码性能更高
一.Map主键取值方法当循环中只需要 Map 的主键时,迭代 keySet() 是正确的。但是,当需要主键和取值时,迭代 entrySet() 才是更高效的做法,比先迭代 keySet() 后再去 get 取值性能更佳。创建MapMap<String, String> map = new HashMap<String ,String>(); for (int i = 0; i < 2000000; i++) { map.put("测原创 2020-05-19 10:27:46 · 124 阅读 · 0 评论 -
Java 对象深拷贝
##介绍在Java语言里,当我们需要拷贝一个对象时,有两种类型的拷贝:浅拷贝与深拷贝。浅拷贝只是拷贝了源对象的地址,所以源对象的值发生变化时,拷贝对象的值也会发生变化。而深拷贝则是拷贝了源对象的所有值,所以即使源对象的值发生变化时,拷贝对象的值也不会改变。如下图描述:##拷贝对象####拷贝一个简单的对象package text;public class User { private String name; private Address address;}}pack原创 2020-05-19 10:25:39 · 144 阅读 · 0 评论 -
Tcp协议 三次握手四次分手
简述TCP的三次握手过程一、TCP报文格式TCP/IP协议的详细信息参看《TCP/IP协议详解》三卷本。下面是TCP报文格式图:图1 TCP报文格式上图中有几个字段需要重点介绍下:(1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。(2)确认序号:Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1。(3)标志位:共6个,即URG、ACK、PSH、RST、SYN、FIN等,具体含义如下:(A)URG:紧急原创 2020-05-19 10:22:56 · 894 阅读 · 0 评论 -
云服务的三种模式
云服务的三种模式IaaS(基础设施即服务)IaaS(Infrastructure as a Service),即基础设施即服务。提供给消费者的服务是对所有计算基础设施的利用,包 括处理CPU、内存、存储、网络和其它基本的计算资源,用户能够部署和运行任意软件,包括操作系统和应用程 序。消费者不管理或控制任何云计算基础设施,但能控制操作系统的选择、存储空间、部署的应用,也有可能获得 有限制的网络组件(例如路由器、防火墙、负载均衡器等)的控制 1.1.2 PaaS(平台即服务)PaaS(Platform-原创 2020-05-19 10:20:29 · 4875 阅读 · 0 评论 -
Apache POI
Apache Poi 主要是用来处理excel 文件的:我们先来介绍一下目前市面上的Excel分为两个大的版本Excel2003和Excel2007及以上两个版本,两者之间的区别如下灬Excel2003Excel2007后缀xlsxlsx结构二进制格式.其核心结构是复核文档类型的结构XML类型的结构单sheet 数量行:65535 列 256行:1048576 列:16384特点存储容量有限基于xml压缩 占用空间小 操作效率高可以通用的方法原创 2020-05-18 18:39:00 · 449 阅读 · 0 评论 -
深入理解DecimalFormat.format()方法
DecimalFormat这个类,这就是格式化数据的类DecimalFormat可以处理科学计数法等问题,但是运行下面的语句会抛出错误:import java.text.DecimalFormat;public class BigDecimelTest { public static void main(String[] args) { System.out.println(new DecimalFormat("#").format("42412323545")); }原创 2020-05-18 18:35:23 · 2019 阅读 · 0 评论 -
运算神器 BigDecimal深入了解一下
前言我们都知道浮点型变量在进行计算的时候会出现丢失精度的问题。如下一段代码:System.out.println(0.05 + 0.01); System.out.println(1.0 - 0.42); System.out.println(4.015 * 100); System.out.println(123.3 / 100); 输出: 0.060000000000000005 0.5800000000000001 401.49999999999994 1.2原创 2020-05-18 18:33:35 · 105 阅读 · 0 评论 -
Integer和int的自动装箱和拆箱
我们先来看一段代码:public class IntegerDemo { public static void main(String[] args) { Integer a = new Integer(3); Integer b = 3; int c = 3; System.out.println(a == b); System.out.println(a == c); Integer f1 = 1原创 2020-05-18 18:22:38 · 278 阅读 · 0 评论