![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java技术
JAVA相关
怎么又有bug单
走走停停
展开
-
判断一个double类型的数是不是整数、连续数列的和、math的常用方法
java常用的方法 leecode刷题常用原创 2023-01-14 09:10:35 · 944 阅读 · 1 评论 -
full gc触发的条件
关于jvm虚拟机 full gc触发的条件?原创 2022-12-27 10:39:31 · 487 阅读 · 0 评论 -
rateLimiter使用
rateLimiter使用原创 2022-11-09 11:02:44 · 638 阅读 · 0 评论 -
java操作List根据某个元素分组的方式
使用Stream流来处理集合原创 2022-10-29 08:35:58 · 1092 阅读 · 0 评论 -
ThreadLocal常见使用场景
threadLocal常见常见,面试可用!原创 2022-10-29 08:24:48 · 640 阅读 · 0 评论 -
提供一个好用的pair工具类
好用pair工具类原创 2022-10-23 21:46:34 · 127 阅读 · 0 评论 -
hashmap底层如何实现
hashmap底层原理原创 2022-10-23 12:31:45 · 126 阅读 · 0 评论 -
ThreadLocal存储在jvm内存的哪部分
threadlocal相关知识原创 2022-09-25 20:18:10 · 1962 阅读 · 0 评论 -
java线程的生命周期
java线程的生命周期 常见面试题原创 2022-09-25 19:36:12 · 166 阅读 · 0 评论 -
什么是线程的拒绝策略&&核心线程数打满后就直接创建新线程吗
线程池常见的两道面试题~原创 2022-09-25 19:29:54 · 431 阅读 · 0 评论 -
MAC版idea常用快捷键
macbook版idea的快捷键原创 2022-09-25 11:53:55 · 664 阅读 · 0 评论 -
一个java深拷贝的方式推荐
java深拷贝代码示例原创 2022-09-25 11:48:59 · 172 阅读 · 0 评论 -
一个判断变量相等永远不出空指针的方式
还在使用==判断相等吗?用这个方法更优雅更安全原创 2022-09-17 12:42:54 · 165 阅读 · 0 评论 -
如何用stream流来过滤元素?(代码写法)
如何使用stream流优雅过滤元素原创 2022-09-17 11:16:09 · 887 阅读 · 0 评论 -
如何把时间戳2022-07-28T02:31:32.075+0000转为yyyy-MM-dd hh:mm:ss格式(vue和java两种方式)
代码】如何把时间戳2022-07-28T023132.075+0000转为yyyy-MM-ddhhmmss格式(vue和java两种方式)原创 2022-07-31 10:52:33 · 527 阅读 · 0 评论 -
Java集合去重
在日常工作中,我们时常会遇到需要对数据进行遍历去重的操作,笔者便将自己所熟知的几种方法分享给大家。首先模拟一个实体类,并创建一个main方法调用。原创 2022-07-23 12:07:50 · 132 阅读 · 0 评论 -
Java集合与Json的互转如何实现?
Json转换包装类与字符串我们已经很熟悉了,那如果是类似于List这样的包装类集合,那应该如何转换呢?可以使用谷歌的Gson.jar或者阿里的fastJson.jar。原创 2022-07-16 12:13:32 · 2977 阅读 · 0 评论 -
idea如何生成序列化id?
1、要生成序列化id的类首先要继承Serializable接口(这好像是句废话)2、idea需要设置setting→inspections→JVM languages→serializable class without ‘serialVersionUID’ 选中确认(我是mac2021版本)注:这里不同的idea版本路径也许会不同,所以建议直接搜索serializable class without ‘serialVersionUID’ 关键字3、鼠标放在类上,art+enter就会弹出相关提示原创 2022-07-09 16:39:21 · 14371 阅读 · 0 评论 -
key为断言的map是怎么玩的
在进入主题前,我们首先普及一下什么是断言,因为这也是java8的新特性,有些小伙伴可能还不清楚。而map,我们就不多解释了。。断言(assertion)是一种在程序中的一阶逻辑(如:一个结果为真或假的逻辑判断式),目的为了表示与验证软件开发者预期的结果——当程序执行到断言的位置时,对应的断言应该为真。若断言不为真时,程序会中止执行,并给出错误信息。编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设。程序员相信在程序中的某个特定点该表达式值为真,可以在任何时候启用和禁用断言验证,因此可以在原创 2022-06-12 12:20:57 · 216 阅读 · 0 评论 -
idea如何设置导包不带*号
idea 如果没有设置 默认超过5个相同包的类就会变成 * 号,这其实是很容易满足的,而且随着代码量的增多,我们往往不会去注意到顶部的导包代码。当一个类导入的包太多时,往往会影响到整个工程的启动速度,增加缓存。所以我们要尽可能避免这类导入*号的操作操作如下:这里的两个值,代表当有几个相同的导包时转为导*包,只需要改的大一点就可以了。假如这里设置为3,比如这样的:那此时idea编译器就会自动把这三行代码转为:这里我都设置为999,这就代表只有当导入同一个包下相同的类超过999个时,才会全部导入,基原创 2022-06-12 10:40:59 · 11746 阅读 · 2 评论 -
企业级服务端防重点思路
主要是依赖于分布式缓存中间件redis的setNxEx 会设置一个过期时间用户有时候会由于手抖、恶意、或者硬件设备本身的问题,在极短的时间间隔内重复点击一个按钮多次,即重复向同一个接口发送完全相同的请求多次。为了避免这种情况给服务端处理请求带来意外,需要防重点处理。防重点有时会做在前端,有时做在后端。但为了避免前后端的相互依赖,建议两个端都做会好一些。这里提供一个企业级服务端做防重点的思路(已在实际商用中)setnx是「SET if Not eXists」的缩写,只有不存在的时候才设置,可以利用它来实现原创 2022-06-09 16:19:19 · 157 阅读 · 2 评论 -
室友打了一盘英雄联盟,我学会了类加载
有下面的一个类,请问最后main方法输出是什么?请试着分析打印输出的过程,写出自己的理解。运行代码后输出:分析:类加载结束之后,开始执行main方法里面的代码,打印 书的静态方法 这句话。芜湖~ 看起来没那么复杂啊。但是通过这个小例子,却能很好地理解类加载的机制,尤其是各个代码块执行的顺序,一目了然。再比如下面的一个类,请问最后main方法输出是什么?运行结果:分析一番:以上就是本题的全部解析了,怎么样?是不是静下心来分析,也没那么难呢?还是那个道理,只要掌握了方法,分析任何问题都只是时间原创 2022-06-06 14:08:23 · 125 阅读 · 0 评论 -
start线程底层源码分析(深入到jdk源码)
今天给大家看一下,从最简单的一个start启动一个线程。能获得什么知识?结合jvm和操作系统底层的运作、结合C++源代码的分析来给大家介绍一个线程是如何起来的。到Thread线程内部第696行,这儿我们可以看得出所有的start其实调用到的是Thread.java这个类。然后它调用了这么一个同步的start方法,也就说这个线程必须要全部走完,对吧?再往下看所有的方法实质而言调用的是start0这个方法。在这儿有一个布尔值first start0,这个方法调用完成以后,马上变成代表启动成功,那么所谓的sta原创 2022-06-01 11:55:21 · 429 阅读 · 0 评论 -
Idea变量字段标记粉色下划线是怎么回事
在日常开发中,无意间发现一个现象,就是idea对不同的关键字会有不同的颜色标记。比如系统的关键字是橙色,自己定义的类名及变量名都是白色等等。这些其实并没有什么特别需要注意的,毕竟也是idea为了美化编译页面,便于开发者区分不同的变量名。但是最近我发现有一些自定义的变量名,有时候是白色,有时候变成了粉色还加上了下划线。起初也不以为然,今天突然想搞明白它,毕竟想想也应该不会特别难。于是去查了idea的官网:https://www.jetbrains.com/idea/现象如下:最后搞明白了,结论原创 2022-05-28 08:25:09 · 2563 阅读 · 4 评论 -
一次线上oom故障引发的思考
文章目录前言问题排查收获收获一 :什么是dump文件,为什么同事根据它查出了问题?收获二:使用threadLocal变量记得释放内存前言首先声明qvq 这个问题其实是同事搞得,我在他的故障复盘会议上,学到了很多新东西。我本人可没有搞出这种问题(自信 O(∩_∩)O)问题简言之就是容器oom了,出现了线上繁忙,部分服务响应时间过长。排查内存溢出了,根据这位同事的排查(查dump文件以及他最近的改动),是由于使用threadLocal变量未手动释放内存。后来通过修复,也证明了他的猜测是正确的。原创 2022-05-22 10:54:29 · 390 阅读 · 0 评论 -
网络爬虫实现
class WebReptils { public static void main(String[] args) { URL url = null; URLConnection urlconn = null; BufferedReader br = null; PrintWriter pw = null; String regex = "https://[\\w+\\.?/?]+\\.[A-Za-z]+";原创 2021-11-03 15:51:32 · 107 阅读 · 0 评论 -
java如何基于mysql-binlog-connector 监听mysql binlog日志
文章目录现状目标前置代码现状当前企业级开发中,基于数据库的binlog日志去做一些联动动作,已经是习以为常的解决方案。而如何监听binlog日志,发送mq给其他系统,逻辑往往被封装好直供开发者直接使用。目标自己写代码实现监听binlog日志(发mq就不写了,之前已经有过实现)前置首先需要确保mysql开启了binlog播报功能:当这里显示为ON,就代表当前库已经开启binlog播报了,我这边默认是开启的。所谓binlog,其实就是数据库系统自己的操作日志。代码public class原创 2022-04-28 20:20:11 · 4133 阅读 · 5 评论 -
包装类Integer的大坑----避坑必备
文章目录问题描述代码例1解释代码例2解决代码例3结论问题描述代码例1首先先贴出报错的代码: @Test public void test21() { Spaces spaces = new Spaces(); // 正常构建对象spaces spaces.setCommodityName("CommodityName"); spaces.setCommodityPrice("CommodityPrice");原创 2022-04-24 14:58:20 · 279 阅读 · 2 评论 -
JAVA中String类以形参传递到函数里面,修改后外面引用不能获取到更改后的值
文章目录代码示例Java中的“传值”和“传引用”问题关于String参数传递问题的曲解之一——直接赋值与对象赋值代码示例首先来个例子说明下本文研究的内容:public class StringTest { private String aa = "1111"; private StringBuilder bb = new StringBuilder("bbbb"); private char ca = 'y'; private Character cr = 'z';原创 2022-04-15 15:46:32 · 1941 阅读 · 0 评论 -
什么是打jar包 什么是打war包 他们一样吗
文章目录前言详解jar包war包SpringBoot中的打包前言首先明确一点,jar包是java程序打的,比如开发中依赖的jar包,通常是开发时要引用通用类,打成jar包便于存放管理。而war包是java web程序打的,是一个完整的可运行的java web程序,打成war包部署到服务器,目的是为了节省资源,提供效率。详解jar包jar是类的归档文件JAR(Java Archive,Java 归档文件)是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件,为 J2EE 应用程序创建的ja原创 2022-04-04 19:16:33 · 1791 阅读 · 0 评论 -
System.out.println()会调用tostring吗
答案是会的比如说我执行:System.out.println(stu);那么这行代码底层会调用stu的toString方法举例:先准备一个类:public class People { private String peopleName; public String getPeopleName() { return peopleName; } public void setPeopleName(String peopleName) {原创 2022-03-28 18:57:33 · 489 阅读 · 0 评论 -
使用抽象类的一个实例 抽象类和接口在使用上到底有什么区别
文章目录前言类图codeAbstractMessageListener:AbstractTestContextMessageListener1:MessageListener2:MessageListenerFactory:反射包org.reflections maven:controllerApplication前言使用抽象类和接口到底有什么区别呢?这两者都有一个共同的特点,就是只给出一部分定制,给出扩展的余地,用户可以根据自己的需求,在一定的前提下做自己的定制。那其实接口和抽象类的一大的区别也原创 2022-03-21 15:32:48 · 195 阅读 · 0 评论 -
Mysql索引原理及查询优化(一)
文章目录一、介绍1.什么是索引?2.为什么要有索引呢?二、索引的原理1.索引原理2.磁盘IO与预读3.索引的数据结构b+树的产生b+树图示b+树的查找过程b+树性质1.索引字段要尽量的小2.索引的最左匹配特性(即从左往右匹配)一、介绍1.什么是索引?在大多数的系统中,对于数据库数据的读操作数大约是写操作数的十倍左右。这也就意味着,对于数据库的性能优化,主要集中于对数据的查询操作。提到加速查询,也就不得不提到索引了,那么什么是索引呢?索引其实类似于我们在读书时用到的目录。仔细想想,你正在读一本新华原创 2022-03-18 18:14:13 · 104 阅读 · 0 评论 -
EventBus消息总线 使用举例
文章目录代码示例总结拓展与思路先上代码看下如何使用代码示例支付成功事件,在这里模拟一个事件,当该事件发生时,我们就给其他监听器发送消息。public class PaymentSuccessfulEvent { private String action; PaymentSuccessfulEvent(String action) { this.action = action; } String getAction() { retu原创 2022-03-14 14:56:10 · 266 阅读 · 0 评论 -
unicode转中文 中文转unicode的简单方式
统一码(Unicode),也叫万国码、单一码,是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。简单来说就是全球通行的一种编码。下面提供一种好用的unicode转中文,中文转unicode的方法://Unicode转中文方法private static String unicodeToCn(String unicode) {原创 2022-03-04 10:40:49 · 16623 阅读 · 2 评论 -
业务校验中如何阻断流程呢
文章目录前言代码前言当我们在一整个业务流程中,想要阻断流程时,该怎么做呢?比如说正常的业务流程是 :业务A---->B----->C------>D而在B和C中,可能会涉及到业务的合法校验。而如果不合法,则需要退出流程。这个时候,该怎么做呢?首先想到的可能是return,但是否有想过一个问题呢?如果B内部的方法return,而B本身没有返回值呢?也就是说ABCD都是无状态的方法,那return还管用吗?所以我们提出一种适用性更广的方式:抛出异常,外部调用方通过抛出的原创 2022-02-26 09:43:29 · 306 阅读 · 0 评论 -
wait、notify和notifyAll本质是在干什么?
为什么他们可以使线程等待?为什么可以让线程间相互通信?通过什么通信?其实是基于java的对象头。每一个java对象都有对象头,而wait,notify,notifyAll,就是基于对象头中的锁状态标识。这其实也是为什么使用wait,notify,notifyAll方法的对象,需要先使用synchronized同步的原因。使用举例:public class MainGLock { static class IRunable implements Runnable{ @Sne原创 2022-02-25 14:30:03 · 195 阅读 · 0 评论 -
HashMap面试题 头插法、尾插法、hash冲突、数组扩容、ConcurrentHashMap
文章目录HashMap 的数据结构?HashMap 的工作原理?HashMap 的 table 的容量如何确定?loadFactor 是什么?该容量如何变化?这种变化会带来什么问题?数组扩容的过程?说说你对红黑树的见解?jdk8中对HashMap做了哪些改变?HashMap & ConcurrentHashMap 的区别?为什么 ConcurrentHashMap 比 HashTable 效率要高?又到了春招季,是时候背面经,准备冲大厂啦!本次总结了一系列java面试中热点问题 HashMap原创 2022-02-24 18:39:53 · 1093 阅读 · 0 评论 -
synchronized底层到底是怎么回事
文章目录前言synchronized的使用同步原理什么是JAVA对象头对象头中Mark Word与线程中Lock Record监视器(Monitor)前言记得开始学习Java的时候,一遇到多线程情况就使用synchronized,可以说是解决多线程情况百试不爽的良药。but提及原理,总是选择绕过。。。随着学习的逐步深入,我们知道在JDK1.5之前synchronized是一个重量级锁,相对于j.u.c.Lock,它会显得那么笨重,以至于我们认为它不是那么的高效而慢慢摒弃它。不过,随着Javs SE原创 2022-02-22 20:56:57 · 119 阅读 · 0 评论 -
你真的懂try catch吗
@Testpublic void test10() { if (!dodo()) { System.out.println("f"); } else { System.out.println("t"); }}public boolean dodo() { int j = 10; try { j++; int i = 1 / 0; j = j / 10; return原创 2022-02-21 18:57:45 · 247 阅读 · 0 评论