java
文章平均质量分 56
大洼X
躺平和躺平?This is a question
展开
-
从汇编码理解final、static、static final
实例代码 public class FinalDemo { public final int finalState = 8; public int unFinalState = 2; public static int staticState = 3; public static final int allState = 4; public static void main(String[] args) {原创 2022-05-06 15:28:48 · 512 阅读 · 0 评论 -
try-with-resources详解
从汇编详解try-with-resource机制原创 2022-04-06 15:47:53 · 785 阅读 · 0 评论 -
arthas高级用法-监听特定线程
官方文档地址:https://arthas.aliyun.com/doc/官方文档中有基本指令使用的demo,文档简单易懂,此处不做赘述高级指令监听某线程的全局变量【-n 1表示只展示一次数据】:watch 类 方法 'target.变量' '@Thread@currentThread().getName().contains("线程名")' -n 1获取运行该方法的线程:watch 类 方法 '{@java.lang.Thread@currentThread()}'...原创 2020-12-02 10:50:44 · 2676 阅读 · 0 评论 -
代码规范【1】-调用静态方法
文章目录使用类名调用静态方法,而不要用实例或表达式来调用使用类名调用静态方法,而不要用实例或表达式来调用明确使用类名调用静态方法不容易造成混淆当子类和父类有同名静态方法时,声明父类引用子类实例,调用该静态方法调用的是父类的静态方法而非子类的静态方法【该说法有误,笔者尝试了jdk6、8、14,均未出现该问题】class Animal { public static void name() { System.out.println("i am Animal"); }原创 2020-06-02 00:37:06 · 1996 阅读 · 0 评论 -
float乘法 精度问题(9.9*100=989)
问题如题,由于微信在下单时使用的是整数,如9.9元,下单时价格为990,而公司平台的价格各有不同,并不仅仅支持微信支付,所以是在进行微信下单时,将现有的价格*100,就发现了该问题,代码如下:float x = 9.9f;System.out.println((int)( x * 100));笔者预期的输出是990,但是实际输出确是989解决方案float x = 9.9f;Big...原创 2020-05-08 10:35:40 · 1376 阅读 · 0 评论 -
list去重之springboot写法
protected final <T> List<T> removeDuplicates(List<T> list) { return new ArrayList<>(new LinkedHashSet<>(list))}原创 2020-04-22 10:56:46 · 744 阅读 · 0 评论 -
springboot监听器实现
自定义监听器要在springboot中注入自定义的监听器,需要完成以下两个步骤实现接口注入框架实现接口第一种【实现ApplicationListener接口】实现ApplicationListener接口在实现时声明支持的事件// 示例中ApplicationStartedEvent就是声明的支持的事件,监听器将会在监听到该事件后打印出"hello world"publi...原创 2020-03-08 21:40:52 · 2716 阅读 · 0 评论 -
单精度四舍五入算法(细节改进)
单精度四舍五入算法从输入中读取浮点数将浮点数加上0.5后取整代码实现如下是单精度四舍五入算法的代码实现import java.util.Scanner;/** * 写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于5,向上取整;小于5,则向下取整。 */public class Rounded { public static void...原创 2020-02-20 18:59:15 · 652 阅读 · 0 评论 -
查看java源码中的native方法
带有native关键字的方法表示调用的不是java源码,而是c代码,需要找到对应的openjdk,查看对应的c语言源码注意:不同版本的源码在不同方法中稍有不同,请对应自己的版本查找...原创 2019-12-13 17:37:04 · 523 阅读 · 0 评论 -
停止线程,volatile设置boolean标记位
这种做法是错误的,或者说不够全面,最好的方案还是使用线程的中断 – interrupt()方法原因:如果我们遇到了线程的长时间阻塞(如生产者-消费者模式,生产的速度大于消费速度),就灭有办法唤醒线程,或者永远无法唤醒...原创 2019-12-13 17:00:47 · 619 阅读 · 0 评论 -
创建线程,实现runnable接口还是继承Thread类好
实现runnable接口更好原因:代码架构上来说,具体执行的任务应该是和线程类(线程创建和运行机制)是解耦的继承thread类的形式,每次新建一个任务都需要创建一个新的独立线程->运行->销毁,性能损耗较大,实现runnable接口的形式可以调用线程池等实现线程复用,减少线程的创建和销毁带来的损耗继承Thread类后,由于java不支持多继承,限制了该类的可操作性...原创 2019-12-13 14:37:28 · 1094 阅读 · 1 评论 -
图的拓扑排序(动图)
文章目录概述度的定义排序描述示例示例动图伪代码概述对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边<u,v>∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序列。简单的说,由某个集合上的一个偏...原创 2019-12-11 18:43:09 · 1943 阅读 · 1 评论 -
二分图/二部图检测(动图&代码实现)
文章目录定义二分图检测染色代码实现(java)定义二分图(中文翻译问题,有时也称作二部图),是图论中的一种特殊模型。如果图可以分为两部分: 绿色和蓝色,并且每一条连线都连接着一个绿色顶点和一个蓝色定点,则称这个图为一个二分图.下图就是一个二分图.二分图检测示例图,如下:肉眼很难区分出两部分,需要采用一定的算法才可区分,下面就介绍检测的方法–染色.染色首先,选择一个节点,置为蓝色...原创 2019-11-27 11:43:15 · 1076 阅读 · 0 评论 -
红黑树与2-3树的等价性->深入理解红黑树
2-3树定义节点可以存放一个或者两个元素,称为2节点和3节点(这也是2-3树名称的由来),如下图是一棵绝对平衡的二插树,下图示例就是一个2-3树任意一个节点到叶子节点的深度是一致的满足二分搜索树的基本性质,即 中序遍历的结果是有序二节点 -> 左节点<中间节点<右节点,如图中的以52为根节点的子树三节点 -> 左节点<中左节点<中间节点&...原创 2019-11-14 17:36:05 · 441 阅读 · 0 评论 -
二分搜索树 前中后序(递归和非递归)和层序遍历(动图)
二分搜索树前序\中序\后序遍历理解根据获取中间节点的不同,来分为前序\中序\后序,如图⇓先序遍历 -> 先打印中间节点,再依次打印左节点和右节点中序遍历 -> 先打印左节点,再打印中间节点,最后打印右节点后序遍历 -> 先依次打印左节点和右节点,再打印中间节点二分搜索树前序\中序\后序遍历节点访问顺序图解上图是一棵示例的二分搜索树,满足左节点<中间节点&...原创 2019-10-11 15:14:52 · 1751 阅读 · 0 评论 -
java HashMap、ArrayList动态扩容机制分析(均摊复杂度和复杂度振荡)
均摊复杂度当数组A满了则会触发数据扩容,即创建一个新的数组B,将数组A中所有的元素复制到数组B中,这个操作的复杂度为O(n)。则可以理解为插入元素的复杂度为O(n),但是这样的理解不够准确,并不是每一个插入都会触发数组扩容,只有当插入第N+1个元素的时候才会。如图;上图中扩容到2N为笔者任意设定,读者也可自定(至少要保证倍数大于1)。不论扩容的倍数为多少,均摊复杂度都为O(1)。复杂度振荡...原创 2019-09-23 07:55:55 · 1175 阅读 · 1 评论