发布了文章2022-03-07
我们知道,在Java中,创建对象,仅仅是在 JVM 的堆里分配一块内存而已;而创建一个线程,却需要调用操作系统内核的 API,然后操作系统要为线程分配一系列的资源,这个成本就很高了,所以线程是一个重量级的对象,应该避免频繁创建和销毁。
发布了文章2022-02-09
Spring3开始提供了@Async注解,该注解可以标注在方法或者类上,从而可以方便的实现方法的异步调用。调用者在调用异步方法时将立即返回,方法的实际执行将提交给指定的线程池中的线程执行。
发布了文章2021-12-14
以-X开头:非标准参数。基本都是传递给JVM使用的,默认JVM实现这些参数的功能,但并不保证所有JVM都满足,且不保证向后兼容。例如:-Xmx4g、-Xms2g。可以使用java -X命令来查看当前JVM支持的非标准参数。
发布了文章2021-12-08
垃圾收集(Garbage Collection,下文简称GC)可以理解为无用内存的回收,1960年诞生的Lisp语言的作者John McCarthy就思考过垃圾收集需要完成的三件事情:
发布了文章2021-12-07
之所以说这条原则难理解,那是因为,“怎样的代码改动才被定义为‘扩展’?怎样的代码改动才被定义为‘修改’?怎么才算满足或违反‘开闭原则’?修改代码就一定意味着违反‘开闭原则’吗?”等等这些问题,都比较难理解。
发布了文章2021-12-07
垃圾收集算法的实现涉及大量的程序细节,且各个平台的虚拟机操作内存的方法都有差异,此处我们暂不过多讨论算法实现,只重点介绍分代收集理论和几种算法思想及其发展过程。
发布了文章2021-12-06
初始数据表数据初始化语句放在了文章附录。表对应Java实体类: {代码...} $lookup(左连接)$lookup相当于进行左连接,右表数据以数组形式显示原生查询示例grade表左连接student表 {代码...} MongoTemplate查询示例在主表对象中使用List存储连接表的数据,若某行记录...
发布了文章2021-12-06
将原来的 long 型变量 count 替换为了原子类 AtomicLong,原来的 count +=1 替换成了 count.getAndIncrement(),仅需要这两处简单的改动就能使 add10K() 方法变成线程安全的。
发布了文章2021-12-06
Jackson是Java的一套数据处理工具,包括一流的JSON解析/生成库,匹配数据绑定库(用于类与JSON串之间的转换),和其他数据格式模块,以处理Avro、BSON、CBOR、CSV、Smile、(Java) Properties、Protobuf、XML或YAML编码的数据。
关注了问题2020-02-06