随笔分类 - java
摘要:面向对象 01、构造器参数太多怎么办? 如果参数很多,会导致构造方法非常多,拓展性差,代码难编写,且难以看懂。 用 JavaBeans 模式, get 和 set 一行构造编程多行代码实现,需要使用额外机制确保一致性和线程安全。 用 builder 模式, 1、5 个或者 5 个以上的成员变量 2、
阅读全文
摘要:调优的原则 1、 大多数的 java 应用不需要 GC 调优 2、 大部分需要 GC 调优的的,不是参数问题,是代码问题 3、 在实际使用中,分析 GC 情况优化代码比优化 GC 参数要多得多; 4、 GC 调优是最后的手 目的 GC 的时间够小 GC 的次数够少 发生 Full GC 的周期足够的
阅读全文
摘要:JDK 为我们提供的jvm工具 命令行工具 jps 、jstat、jinfo、jmap、jhat、jstack 可视化工具 JMX、Jconsole、visualvm 生产服务器推荐开启 -XX:-HeapDumpOnOutOfMemoryError 默认关闭,建议开启,在 java.lang.Ou
阅读全文
摘要:类加载机制 概述 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)7 个
阅读全文
摘要:垃圾回收算法 复制算法(Copying) 将可用内存按容量划分为大小相等的两块,每次只使用其中的一块。当这一块的内存用完了,就将还存活着的对象复制到另外一块上面,然后再把已使 用过的内存空间一次清理掉。这样使得每次都是对整个半区进行内存回收,内存分配时也就不用考虑内存碎片等复杂情况,只要按顺序分配内
阅读全文
摘要:判断对象的存活 引用计数法 给对象添加一个引用计数器,当对象增加一个引用时计数器加 1,引用失效时计数器减 1。引用计数为 0 的对象可被回收。(Python 在用,但主流虚拟 机没有使用) 优点:快,方便,实现简单。 缺陷:对象相互引用时(A.instance=B 同时 B.instance=A)
阅读全文
摘要:虚拟机中的对象 对象的分配 虚拟机遇到一条 new 指令时:根据 new 的参数是否能在常量池中定位到一个类的符号引用,如果没有,说明还未定义该类,抛出ClassNotFoundException 1)检查加载 先执行相应的类加载过程。如果没有,则进行类加载 2)分配内存 根据方法区的信息确定为该类
阅读全文
摘要:一、JVM运行时数据区 JVM运行时数据区是一个抽象概念,主要依赖于寄存器、高速缓存、主内存几个部分组成。 计算机运行 = 指令 + 数据,指令用于执行 方法, 数据 用于指向 存放的数据和对象。 虚拟机栈 用于执行java方法 本地方法栈 执行本地方法(通常时c语言实现的) 程序计数器 用于对 执
阅读全文
摘要:介绍 BCD码(Binary-Coded Decimal)亦称二进码十进数或二-十进制代码,BCD码这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。 这种编码技巧最常用于会计系统的设计里,因为会计制度经常需要对很长的数字串作准确的计算。相对于一般的浮点式记
阅读全文
摘要:由来 Java中有assert关键字,但是存在许多问题: assert关键字需要在运行时显式开启才能生效,否则你的断言就没有任何意义。 用assert代替if是陷阱之二。assert的判断和if语句差不多,但两者的作用有着本质的区别:assert关键字本意上是为测试调试程序时使用的,但如果不小心用a
阅读全文
摘要:为什么会有这个类 平常我们使用单例不外乎两种方式: 在对象里加个静态方法getInstance()来获取。此方式可以参考 【转】线程安全的单例模式 (opens new window)这篇博客,可分为饿汉和饱汉模式。 通过Spring这类容器统一管理对象,用的时候去对象池中拿。Spring也可以通过
阅读全文
摘要:由来 如果你了解Python,你一定知道Python有dict这一数据结构,也是一种KV(Key-Value)结构的数据结构,类似于Java中的Map,但是提供了更加灵活多样的使用。Hutool中的Dict对象旨在实现更加灵活的KV结构,针对强类型,提供丰富的getXXX操作,将HashMap扩展为
阅读全文
摘要:介绍 提供ClassLoader相关的工具类,例如类加载(Class.forName包装)等 方法 获取ClassLoader getContextClassLoader 获取当前线程的ClassLoader,本质上调用Thread.currentThread().getContextClassLo
阅读全文
摘要:介绍 CharsetUtil主要针对编码操作做了工具化封装,同时提供了一些常用编码常量。 常量 常量在需要编码的地方直接引用,可以很好的提高便利性。 字符串形式 ISO_8859_1 UTF_8 GBK Charset对象形式 CHARSET_ISO_8859_1 CHARSET_UTF_8 CHA
阅读全文
摘要:介绍 SPI(Service Provider Interface),是一种服务发现机制。它通过在ClassPath路径下的META-INF/services文件夹查找文件,自动加载文件里所定义的类。 更多介绍见:https://www.jianshu.com/p/3a3edbcd8f24 使用 定
阅读全文
摘要:介绍 法人和其他组织统一社会信用代码制度,相当于让法人和其他组织拥有了一个全国统一的“身份证号”。 规则如下: 第一部分:登记管理部门代码1位 (数字或大写英文字母) 第二部分:机构类别代码1位 (数字或大写英文字母) 第三部分:登记管理机关行政区划码6位 (数字) 第四部分:主体标识码(组织机构代
阅读全文
摘要:介绍 在数据处理或清洗中,可能涉及到很多隐私信息的脱敏工作,因此Hutool针对常用的信息封装了一些脱敏方法。 现阶段支持的脱敏数据类型包括: 用户id 中文姓名 身份证号 座机号 手机号 地址 电子邮件 密码 中国大陆车牌,包含普通车辆、新能源车辆 银行卡 整体来说,所谓脱敏就是隐藏掉信息中的一部
阅读全文
摘要:由来 在日常开发中,我们对身份证的验证主要是正则方式(位数,数字范围等),但是中国身份证,尤其18位身份证每一位都有严格规定,并且最后一位为校验位。而我们在实际应用中,针对身份证的验证理应严格至此。于是IdcardUtil应运而生。 IdcardUtil从3.0.4版本起加入Hutool工具家族,升
阅读全文
摘要:由来 在文本处理中,正则表达式几乎是全能的,但是Java的正则表达式有时候处理一些事情还是有些繁琐,所以我封装了部分常用功能。就比如说我要匹配一段文本中的某些部分,我们需要这样做: String content = "ZZZaaabbbccc中文1234"; Pattern pattern = Pa
阅读全文
摘要:介绍 引用工具类,主要针对Reference 工具化封装 主要封装包括: SoftReference 软引用,在GC报告内存不足时会被GC回收 WeakReference 弱引用,在GC时发现弱引用会回收其对象 PhantomReference 虚引用,在GC时发现虚引用对象,会将PhantomRe
阅读全文

浙公网安备 33010602011771号