- 博客(5)
- 资源 (1)
- 收藏
- 关注
原创 关于CAS的一点理解和思考
文章目录CASJava中的CAS操作加锁和CAS性能测试比较CAS不同线程数量下的额外开销CASCAS(Compare And Swap)是对一种处理器指令的称呼,中文译为:比较并交换。它需要三个参数:内存地址V、期望的旧值A、要替换的新值B。它要完成的功能:当且仅当内存地址V的值等于A时,将A替换为B并返回true,否则什么也不做直接返回false。用Java代码描述,大致如下所示:...
2020-03-27 21:08:23 3294
原创 线程间协作——等待与通知
文章目录前言wait和notify存在的问题notify和notifyAll用哪个?生产者消费者实战条件变量Condition前言系统的稳定运行,在单线程程序中得益于类与类之间的协作,在多线程程序中,还得益于线程与线程之间的协作。一段逻辑代码块的执行可能会依赖于某个先决条件,在单线程程序中可以使用if来构建分支,在多线程程序中可以使用Java提供的等待-通知功能。例如:生产者消费者模式中,...
2020-03-27 19:36:29 3130
原创 Java逃逸分析之栈上分配内存
目录什么是逃逸分析?栈上分配内存什么是逃逸分析?在很早以前,Java代码从编写完毕到JVM执行至少需要两个过程:javac将Java代码编译成字节码class文件。JVM载入class文件后,由解释器来逐条将字节码指令解释翻译成本地机器码并执行。因此,Java也被称为是一门”解释执行“的语言,由于解释执行比编译执行要慢,所以”Java程序很慢“在早期深入人心。为了解决“解释执行”的...
2020-03-19 20:31:18 3537
原创 手写MyBatis分页插件
目录前言MyBatis插件手写分页插件总结前言在开发查询类的接口时,有一个让开发者比较头疼的问题:分页。如果每次都要开发者自己去写limit,计算起始行和偏移量就太烦了,于是市面上诞生了一些优秀的分页插件,例如:PageHelper。PageHelper使用起来非常简单,如下示例代码:Page page = PageHelper.startPage(1, 10);//sql: sele...
2020-03-16 20:15:00 4211
原创 关于Java是否应该在循环外声明变量的一点思考
目录前言性能和内存性能测试内存测试编译优化总结前言“不要把变量声明在循环体内”,经常看到类似的言论,那么到底有没有必要这么去做呢?首先,将变量声明在循环体外有以下几个缺点:作用域变大,存在被无意引用的风险防止变量命名冲突可读性较差综上,如果“在循环体外声明变量”不能在其他方面(如性能上)带来优化,那么我实在想不出有什么理由需要这么去做。性能和内存在语法的可读性上,“循环外声明...
2020-03-15 12:29:40 4108 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人