java
文章平均质量分 95
java
modouwu
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
nacos源码阅读
代码学习 代码用法 AtomicReference 参考 项目使用 保存白名单配置,并在合适的时候更新配置 public class AggrWhitelist { /** * 判断指定的dataId是否在聚合dataId白名单。 */ static public boolean isAggrDataId(String dataId) { if (null == dataId) { throw new IllegalArgumen原创 2022-05-02 23:57:31 · 1318 阅读 · 0 评论 -
java开发规约
编程规约 命名风格 【强制】类名使用 UpperCamelCase 风格,但以下情形例外:DO / BO / DTO / VO / AO / PO / UID 等。 正例:ForceCode / UserDO / HtmlDTO / XmlService / TcpUdpDeal / TaPromotion 反例:forcecode / UserDo / HTMLDto / XMLService / TCPUDPDeal / TAPromotion 【强制】抽象类命名使用 Abstract 或 Base原创 2022-03-06 11:10:15 · 995 阅读 · 0 评论 -
HashMap细节及Map实践
结构 从结构实现来说,HashMap是数组+链表+红黑树(JDK1.8增加了红黑树部分)实现的 下面简述一下hashmap的属性和重要方法put(k,v)和resize(): 属性 默认初始容量为16 默认负载因子为0.75 桶中链表节点转化为红黑树节点的桶元素个数阈值为8 桶中红黑树节点转化为链表节点的桶元素个数阈值为6 链表节点转化为红黑树节点的最小元素个数为64,即如果桶内元素已经达到转化红黑树阈值,但是表元素总数未达到阈值,则值进行扩容,不进行树形化 //默认初始容量为16,容量必须为2的幂原创 2021-08-26 20:28:13 · 392 阅读 · 0 评论 -
java开发规约
编码规约 命名规约 【强制】类名使用UpperCamelCase风格,以下情形例外:DO / BO / DTO / VO / AO / UID等。 正例:ForceCode / UserDO / HtmlDTO / XmlService / TcpUdpDeal / TaPromotion 反例:forcecode / UserDo / HTMLDto / XMLService / TCPUDPDeal / TAPromotion 【强制】常量命名应该全部大写,单词间用下划线隔开,力求语义表达完整清楚,不原创 2021-04-26 15:43:41 · 418 阅读 · 1 评论 -
Java ms总结
小米服务器端 1.hashMap扩容为什么是2的幂次? 减小hash碰撞,方便扩容 2.G1收集器介绍一下 参考 1⃣️并行与并发 2⃣️分代收集 3⃣️可预测的停顿 G1把内存划分成很多小块, 每个小块会被标记为E/S/O中的一个,从而可以垃圾回收工作更彻底的并行化 它回收的大致过程是这样的: 在垃圾回收的最开始有一个短暂的时间段(Inital Mark)会停止应用(stop-the-world) 然后应用继续运行,同时G1开始Concurrent Mark 再次停止应用,来一个Final Mark (原创 2021-03-05 12:47:25 · 696 阅读 · 1 评论 -
Nginx Epoll Redis 网络
Nginx 负载均衡 nginx的原理 Nginx 采用的是多进程(单线程) & 多路IO复用模型 1、Nginx 在启动后,会有一个 master 进程和多个相互独立的 worker 进程 2、master进程接收来自外界的信号,向各worker进程发送信号,每个进程都有可能来处理这个连接 3、 master 进程能监控 worker 进程的运行状态,当 worker 进程退出后(异常情况下),会自动启动新的 worker 进程 worker 进程数,一般会设置成机器 cpu 核数。因为更多的原创 2021-01-25 10:19:47 · 784 阅读 · 0 评论 -
Java虚拟机jvm
jvm Java内存区域 运行时数据区域 程序计数器:当前线程执行的字节码的行号指示器。如果线程执行的时Java方法,则计数器记录的是正在执行的虚拟机字节码指令的地址;如果执行的是native方法,则为空 虚拟机栈:描述的是Java方法执行的内存模型,每个方法在执行的同时都会创建一个栈桢用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法从调用直到执行完成的过程,就对应一个栈桢在虚拟机栈中入栈到出栈的过程 本地方法栈:native方法服务的栈 堆:存放对象实例。是垃圾收集器管理的主要区域。可原创 2021-01-19 22:06:25 · 466 阅读 · 0 评论 -
Java知识总结
java.util包 list arraylist 初始容量为10,底层(有一个属性)是一个对象数组, add元素时,先确保容量足够,不够就扩容,扩容大小为原来的1.5倍。add(index,e)时,先检查越界了没,再看是否要扩容,将index后面的元素整体后移,添加元素 细节: arraylist的迭代循环,用迭代器迭代的时候,要用迭代器的remove方法,不能用list的remove方法,不然会抛异常;或者用数组索引的方式迭代就可以避免这个问题 linkedlist 底层是一个双端链表结构,实现了原创 2021-01-17 14:32:37 · 1764 阅读 · 1 评论 -
常见问题
关键字 transient 变量修饰符。 1)用transient声明一个实例变量,不参与序列化过程 2)一个静态变量不管是否被transient修饰,均不能被序列化 transient使用细节——被transient关键字修饰的变量真的不能被序列化吗 否。对象的序列化可以通过实现两种接口来实现,若实现的是Serializable接口,则所有的序列化将会自动进行,若实现的是Externalizable接口,则没有任何东西可以自动序列化,需要在writeExternal方法中进行手工指定所要序列化的变量,这与原创 2020-12-17 12:26:24 · 150 阅读 · 0 评论 -
java语法糖
switch 支持 String 与枚举 在开始coding之前先科普下,Java中的swith自身原本就支持基本类型。比如int、char等。 对于int类型,直接进行数值的比较。对于char类型则是比较其ascii码。 所以,对于编译器来说,switch中其实只能使用整型,任何类型的比较都要转换成整型。比如byte。short,char(ackii码是整型)以及int 那么接下来看下switch对String得支持,有以下代码: 反编译后内容如下: 仔细看下可以发现,进行switch的实际是哈希值,原创 2020-12-16 22:51:00 · 458 阅读 · 0 评论 -
java8新特性
map compute 计算 default V compute(K key,BiFunction<? super K, ? super V, ? extends V> remappingFunction) 指定的key值在map中的value值进行操作, 如果key存在,则可操作value值,新值会更新回map; 如果key不存在,操作完成后key,value都保存到map中。函数:参数为key,value,返回value computeIfAbsent 不存在时计算 V compute原创 2020-12-16 17:46:13 · 1597 阅读 · 0 评论 -
threadlocal原理
底层原理 实际上是每个Thread线程维护着一个ThreadLocalMap,ThreadLocalMap底层是一个带有key,value的Entry数组,而Entry的键即是一个ThreadLocal对象,value是我们通过ThreadLocal.set()方法传进去的参数 ThreadLocal.java: 一个ThreadLocal对象只能存储一个value Thread.java: threadlocal.ThreadlocalMap.java: threadlocal.Threadloc转载 2020-12-16 16:18:15 · 746 阅读 · 0 评论 -
java 8 Stream 流
Java8 Stream流解析 Stream组成 Stream包含一个数据源头(Source),一组(0个或多个)中间操作和一个终止操作。 中间操作,如distinct、filter、limit、map、skip、sorted 终止操作,如count,forEach、collect Stream实现原理 以如下代码为例 List<String> list1 = Arrays.asList("1", "2", "3", "4", "5", "6", "7"); List<St转载 2020-11-24 16:59:39 · 375 阅读 · 0 评论 -
jmx artahs
jmx 监控java应用程序占用的内存、cpu、线程数等通用的属性; 也可以监控java bean的属性值; 也可以通过rmi远程方法调用的方式调用java bean的方法 参考:https://www.jianshu.com/p/fa4e88f95631原创 2020-11-19 20:47:33 · 242 阅读 · 0 评论
分享