深入理解JVM、高级特性、最佳实践(2)JVM内存管理 Java的任何程序的运行都离不开内存的管理,理解JVM是如何给程序分配内存和回收内存是有必要的。其中涉及到整个JVM虚拟机的内存区域划分,每个区域负责具体的服务。
深入理解JVM、高级特性、最佳实践(1)Java发展史 Java中最重要的有两个:JVM、JDK。每个JDk版本的升级或多或少都会带来JVM的升级优化,并且新特性不断出现。要知道JVM的相关知识在通往高级工程师的道路上是必不可少的。
探索JDK源码-每行代码堪称教科书级别(4)HashMap.java(下) HashMap的重要程度已经不必多说,除了put、get、remove、replace等基础方法,其实还有很多开发中常用且好用的方法需要学习:compute、computeIfAbsent、computeIfPresent。
探索JDK源码-每行代码堪称教科书级别(3)HashMap.java(中) 看源码除了应对面试官的拷问,最重要的其实是自我的提升。通过看JDK的源码,可以了解到HashMap具体是怎么工作的,每个方法都有怎样适合或不适合的使用场景。这样就能在工作中很好的使用HashMap了。还有一点很重要的就是源码作者的代码思想,每一个if-else,每一个遍历,每一种数据结构的运用,那都是课本上很难学来的,只有实践过,方知出彩。
探索JDK源码-每行代码堪称教科书级别(2)HashMap.java(上) HashMap是工作的百宝箱,也是面试官的试金石。如果你说不知道HashMap的扩容机制、载入因子、哈希索引、哈希冲突。那这篇文章将带你打开世界的大门,从HashMap最基础的扩容机制学起,尝试理解哈希冲突,并发现解决哈希冲突不过是一些数据结构的应用而已。可能对于刚学不久Java的你来说有点晦涩难懂,但是至少让你明白了HashMap是那么的完美,并继续学下去。
探索JDK源码-每行代码堪称教科书级别(1)Modifier.java 不管你的编码能力如何,阅读源码的能力是你最基本的技能也是最容易潜移默化的提升各方面能力的一部分。Java从1995年问世直到今天,它积累了太多前人的智慧结晶,每一行代码都是教科书级别的诠释。阅读它并在项目中学着应用其精华,想必对你的成长速度是最快的。从这篇文章开始,我将写下阅读JDK源码后的过程、困难和心得,让我们一起学习进步吧。
RecyclerView的Adapter绑定多类型ViewHolder RecyclerView的Adapter绑定多类型ViewHolder具体流程1、与一般Adapter的处理流程类似2、覆盖Adapter的getItemViewType(int position),通过自定义设置不同位置的View的类型。3、在onCreateViewHolder(ViewGroup parent, int viewType)中对不同的View类型创建不同的ViewHolder。使用场景需要在RecyclerView列表的顶部(中间、底部)增加必要的视图。注意事项在getI
Mycat数据库集群配置,与Springboot集成Mycat 配置Mycat (1)server.xml文件 <system> <!-- 添加SQL解析器 --> <property name="defaultSqlParser">druidparser</property> </system> <!-- 创建Mycat登录用户 和 所有Mycat逻辑数据库 --> <...
使用jlink工具模块化Java应用,结合Docker优化容器镜像(下) 使用jlink工具模块化Java应用,结合Docker优化容器镜像(上)使用jlink工具模块化Java应用,结合Docker优化容器镜像(中)依赖统一管理当项目中的依赖越来越多时,对模块的管理会越发的复杂,容易出错。这里使用maven-dependency-plugin插件对依赖做统一的管理,减少工作量,避免不必要的模块管理工作。注意:这个插件需要放在第一个插件的位置,避免将其它插...
使用jlink工具模块化Java应用,结合Docker优化容器镜像(中) 在开始这篇文章的学习之前,希望您先学习前一篇的内容《使用jlink工具模块化Java应用,结合Docker优化容器镜像(上)》,对jlink和Docker有一个初步了解,会更有助于您理解下面的内容。如果您已经掌握了jlink和Docker的基础内容,请直接往下阅读学习。构建一个自定义启动程序 Hello World是一个除了java.base之外不需要其它模块的应用。像java...
使用jlink工具模块化Java应用,结合Docker优化容器镜像(上) 如果你曾经尝试使用Java的模块,你可能已经发现模块化并不容易。第一个障碍可能就是将你自己的应用模块化,但更多的问题来自于第三方库模块化的现行状态。这是不幸的,因为一个应用被模块化一次,就可以当作一个可执行文件被分布到经过裁剪的JDK版本上运行。于现在的容器化时代来说,这就是一个小型的Docker镜像。通过这篇文章,我会解释如何使用jlink。这是一个从Java9就可用的命令行工具,可以用...
基于Lucene类库开发中小型应用的轻量级搜素引擎 关于Lucene:是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎。在Java开发环境里Lucene是一个成熟的免费开源工具。就其本身而言,Lucene是当前以及最近几年最受欢迎的免费Java信息检索程序库。
计划执行任务ScheduledExecutorService,定时延迟线程执行 ScheduledExecutorService线程执行计划服务,创建对应的线程池,通过向线程池队列添加计划执行的线程,设置执行计划的延迟时间,然后开启计划服务即可间隔执行计划的线程。无返回结果的执行计划线程;有返回结果的执行计划线程;使用计划执行任务ScheduledExecutorService实现窗体拖动。
GitHub桌面版之图标颜色和背景色的分析 合理的项目开发流程中,代码提交到Git仓库前一般要对代码进行代码审查,使用桌面版Github会大大提高我们的代码审查效率。所以你必须清楚:到底Github桌面版中各种颜色的图标和背景色的作用?
利用手机、平板开发安卓APP(入门篇) 在这之前,开发安卓APP的开发者们只能依赖PC端的eclipse或Android studio等IDE开发软件,至少在您打开这篇文章时就已经证明您从未使用手机开发过安卓APP。如果您继续往下读就会相信并且确信:单纯使用手机、平板也能构建一个十全十美的APP应用。其实这就是一款运行于手机和平板且集成代码编辑器和编译系统的开发软件,它让手机开发APP成为可能,那我也就不卖关子了,这个软件就叫AID...