自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

橘子hhh

你是狗子,祝我幸福

  • 博客(36)
  • 收藏
  • 关注

原创 来了来了~逃逸分析理解教学

逃逸分析,栈上分配,标量替换

2023-09-27 16:33:53 100

原创 JDK8 CompletableFuture超时处理工具

CompletableFuture JDK1.8和1.9的超时处理办法

2023-07-27 11:08:35 2296 3

原创 热点探针,标量替换,栈上分配,G1

哈哈哈哈我只是记录一下这个知识点。

2023-04-14 16:57:30 119

原创 node报错required by node

linux安装nodejs报错后解决node依赖问题

2022-11-08 11:41:29 1466

原创 Mysql的索引问题

11

2022-10-17 19:33:37 2870

原创 Vue入门,8大基本用法

以上为Vue最基础且常用的内容,下次更新项目应用中整体结构、服务启动、路由等

2022-08-18 18:19:51 1374

原创 一篇文章教你玩懂网络

别在死磕网络协议书了,进来浅入深出了解网络关系

2022-08-17 15:43:08 241

原创 LocalDate使用手册~

简介伴随 lambda表达式、stream 以及一系列小优化,Java 8 推出了全新的日期时间API。Java处理日期、日历和时间的不足之处:将 java.util.Date 设定为可变类型,以及 SimpleDateFormat 的非线程安全使其应用非常受限。然后就在 java8 上面增加新的特性。全新API的众多好处之一就是,明确了日期时间概念,例如:瞬时(instant)、 长短(duration)、日期、时间、时区和周期。同时继承了Joda 库按人类语言和计算机各自解析的时间处理方

2022-02-23 11:00:29 1464

原创 为什么不能使用 BigDecimal 的 equals 方法做等值比较

总结放最前^v^:对于精确计算和比较时,例如钱,0.01分也是钱的时候,就用bigdecimal,bigdecimal建议还是在创建对象时,入参都进行toString,或者new string(param),保证精度不会丢失,不会出现小数点后面多几位,最重要的是计算则用它的自带加减乘除的方法,如果比较相等则用compareto方法比较。-----------------------------------------------------------------------------------

2022-02-18 15:41:36 208

原创 批量处理数据的三种方式

直接上结论:方法一、通过java for循环调用insert(单个对象),由于每次插入都会进行一次create SqlSession -> commit操作,因此数据量大时禁用,在插入条数少时可用,逻辑简单,使用方便。方法二、通过xml拼接sql foreach效率高,但条数过长会报错,插入条数长时可用,需要预估条数,在进行跑批。方法三、批处理java中自建sqlSession ->循环insert->commit,避免每次循环操作都进行commit,同方法二插入.

2022-02-11 18:12:12 4960

原创 在项目中用了Arrays.asList、subList,被公开批评

1. 使用Arrays.asList的注意事项1.1 可能会踩的坑先来看下Arrays.asList的使用:List<Integer> statusList = Arrays.asList(1, 2);System.out.println(statusList);System.out.println(statusList.contains(1));System.out.println(statusList.contains(3));输出结果如下图所示:然后,往statu

2022-01-17 18:08:11 97

原创 Java异步工具:CompletableFuture

通过阅读本篇文章你将了解到: CompletableFuture的使用 CompletableFure异步和同步的性能测试 已经有了Future为什么仍需要在JDK1.8中引入CompletableFuture CompletableFuture的应用场景 对CompletableFuture的使用优化 场景说明查询所有商店某个商品的价格并返回,并且查询商店某个商品的价格的API为同步 一个Shop类,提供一个名为getPrice的同步方法 店铺类

2022-01-12 11:36:23 305

原创 JAVA实现滑动时间窗口

先上代码package demo;import java.time.LocalTime;import java.util.LinkedList;import java.util.List;import java.util.Map;import java.util.Random;import java.util.concurrent.ConcurrentHashMap;/** * @author liaozian * @Description * @date 2021/12/..

2021-12-13 17:16:00 2335 1

原创 MySQL不用uuid做主键的原因

在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一,单机递增),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究竟有什么坏处?本篇博客我们就来分析这个问题,探讨一下内部的原因。目录一、mysql和程序实例二、使用uuid和自增id的索引结构对比三、总结一、mysql和程序实例1.1.要说明这个问题,我们首先来建立三张表分别是user_auto_key,us

2021-12-13 13:52:45 466

原创 Log4j2 漏洞风险演示与个人看法

大佬教学~链接如下Log4j2 漏洞风险演示与个人看法_哔哩哔哩_bilibili

2021-12-10 17:03:51 561

原创 sqlsever查询索引sql、表结构sql(复制即可用)

引言最近在使用sql server数据库,查询表索引和mysql不太一样,实在不太方便,花时间找了几种可尝试方法便于大家查看索引~查询索引方法一:SELECT 索引名称=a.name,表名=c.name,索引字段名=d.name,索引字段位置=d.colidFROM sysindexes a JOIN sysindexkeys b ON a.id=b.id AND a.indid=b.indid JOIN sysobjects c O...

2021-12-08 17:55:55 4776

转载 同事乱用 Redis 卡爆,我真是醉了...

首先说下问题现象:内网sandbox环境API持续1周出现应用卡死,所有api无响应现象刚开始当测试抱怨环境响应慢的时候 ,我们重启一下应用,应用恢复正常,于是没做处理。但是后来问题出现频率越来越频繁,越来越多的同事开始抱怨,于是感觉代码可能有问题,开始排查。top 命令首先发现开发的本地ide没有发现问题,应用卡死时候数据库,redis都正常,并且无特殊错误日志。开始怀疑是sandbox环境机器问题(测试环境本身就很脆!_!)于是ssh上了服务器 执行以下命令top这时发现机器

2021-12-06 15:23:38 101

原创 实现序列化与反序列化,一定要绕开这些坑

目录1.序列化与反序列化的概念2.子类实现Serializable接口,父类没有实现,子类可以序列化吗?3.类中存在引用对象,这个类对象在什么情况下可以实现序列化?4.同一个对象多次序列化之间有属性更新,前后的序列化有什么区别?1.序列化与反序列化的概念先说说序列化和反序列化的概念 序列化:将对象写入到IO流中 反序列化:从IO流中恢复对象 Serializable接口是一个标记接口,不用实现任何方法,标记当前类对象是可以序列化的,是给JVM看的。序列化机

2021-12-06 13:50:00 135

原创 Java 性能优化的几十个细节

目录1. 尽量在合适的场合使用单例2. 尽量避免随意使用静态变量3. 尽量避免过多过常的创建Java对象4. 尽量使用final修饰符5. 尽量使用局部变量6. 尽量处理好包装类型和基本类型两者的使用场所7. 慎用synchronized,尽量减小synchronize的方法9. 尽量不要使用finalize方法10. 尽量使用基本数据类型代替对象11. 多线程在未发生线程安全前提下应尽量使用HashMap、ArrayList12. 尽量合理的创建HashMap

2021-11-29 11:01:46 183

原创 HashMap解决hash冲突

1 什么是hash冲突我们知道HashMap底层是由数组+链表/红黑树构成的,当我们通过put(key, value)向hashmap中添加元素时,需要通过散列函数确定元素究竟应该放置在数组中的哪个位置,当不同的元素被放置在了数据的同一个位置时,后放入的元素会以链表的形式,插在前一个元素的尾部,这个时候我们称发生了hash冲突。2 如何解决hash冲突事实上,想让hash冲突完全不发生,是不太可能的,我们能做的只是尽可能的降低hash冲突发生的概率:下面介绍在HashMap中是如何应对hash冲

2021-11-23 18:02:40 4925 1

原创 MySQL 团队开发规范

数据库对象命名规范数据库对象数据库对象是数据库的组成部分,常见的有以下几种:表(Table )、索引(Index)、视图(View)、图表(Diagram)、缺省值(Default)、规则(Rule)、触发器(Trigger)、存储过程(Stored Procedure)、 用户(User)等。命名规范是指数据库对象如数据库(SCHEMA)、表(TABLE)、索引(INDEX)、约束(CONSTRAINTS)等的命名约定。数据库对象全局命名规范1、命名使用具有意义的英文词汇,词汇中间以下划线

2021-11-23 16:34:28 84

原创 利用coalsece、ifnull、full join查询结果集案例

题目有如下三张表T1110A(仓库期初)T1110B(仓库发出)T1110C(仓库收入)要求得到如下结果:该如何写这个SQL?测试语句CREATETABLET1110A(WAREHOUSEVARCHAR(10),ITEMVARCHAR(10),QTYINT)INSERTINTOT1110AVALUES('A','P001',100);INSERTINTOT1110AVALUES('A','P002',200);I...

2021-11-10 10:54:05 420

原创 漫谈Mybatis

引言从源码角度看,mybatis是十分优秀的源码,其设计思路清晰简洁,虽然代码复杂度不高(相较于某些复杂源码)但麻雀虽小五脏俱全,非常适合拿来学习分析。通过本次分享,希望收获如下:了解mybatis设计思想,知晓各部分组成与职责,推敲源码细节不再迷茫 建立属于自己的看源码技巧,从容面对复杂源码,如:Spring 更好的体会面向对象、面向接口思想,能够在合适的场景将设计模式融入日常开发中一、准备工作——JDK动态代理二、mybatis核心模块1.Configuratio.

2021-11-09 15:04:01 263

原创 构建个简单的LinkNode

由于java中没有结构体,所以用一个类来定义链表,代码如下主要包括一个data,还有一个指向后面一个节点的next重写了toString函数,返回你想要的数据定义链表的类: public class LinkNode { private String data; public LinkNode next; public String getData() { return data; } public void setData

2021-11-02 16:41:32 1645

原创 线程池源码分析

1.为什么要使用线程池 2.线程池相关类继承结构 3.ThreadPoolExecutor实现 3.1submit和execute方法实现 3.2execute代码执行流程 3.3Worker类 4.shutdown和shutdownNow的区别1.为什么要使用线程池 假如没有线程池,当存在较多的并发任务的时候,每执行一次任务,系统就要创建一个线程,任务完成后进行销毁,一旦并发任务过多,频繁的创建和销毁线程将会大大降低系统的效率。线程池能够对线程进行统一的分配,通过...

2021-10-19 15:11:47 349

原创 浅谈RPC的实现原理(一)

一、RPC的概念 二、RPC的通信流程 2.1、建立连接 2.2、数据传输 2.2.1、序列化 2.2.2、协议 2.3、动态代理 三、服务治理 3.1、服务发现 3.2、心跳检测 3.3、负载均衡 3.4、路由策略 3.5、业务分组 一、RPC的概念RPC 的全称是 Remote Procedure Call,即远程过程调用。RPC 是帮助我们屏蔽网络编程细节,实现调用远程方法就跟调用本地(同一个项目中的方法)一样的体验,我们.

2021-10-19 15:01:25 539

原创 浅谈SPRING AOP

一、什么是AOPAOP(Aspect Oriented Programming)意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。二、AOP中的相关概念1、这里还是先给出一个比较专业的概念定义:1)Aspect(切面).

2021-10-19 14:56:05 142

原创 分库分表详解

一.什么叫分库分表?1.1概念将存在一个数据库的数据分散到多个数据库中, 将一个表中的数据分散到多个表中.二.为什么要分库分表?当单表的数据量达到1000W或100G以后,读写的性能会下降,即使有索引,索引也会变得很大,性能同样会降下 数据库文件会得很大,数据库备份和恢复需要耗时很长 数据库文件越大,极端情况下丢失数据的风险越高 单机的连接数受限三.切分类型3.1垂直(纵向)拆分垂直切分常见有垂直分库和垂直分表两种。垂直分库就是根据业务耦合性,将关联度低的不同表存储在不同的

2021-10-19 14:51:45 2030

原创 FGC的发生场景及排查

一、了解现有环境主要配置线上配置实例说明: JAVA_OPTS="-server -Xms2g -Xmx2g -Xmn1g -Xss1024K -XX:PermSize=256m -XX:MaxPermSize=512m -XX:ParallelGCThreads=8 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:SurvivorRa

2021-10-19 14:43:12 517

原创 AQS原理解析

一、CAS原理1、简介CAS 全称是 compare and swap,是一种用于在多线程环境下实现同步功能的机制。CAS 操作包含三个操作数 -- 内存位置、预期数值和新值。CAS 的实现逻辑是将内存位置处的数值与预期数值想比较,若相等,则将内存位置处的值替换为新值。若不相等,则不做任何操作。具体实现,public final native boolean compareAndSwapInt(Object var1, long var2, int var4, int var5);这

2021-10-19 14:39:57 474

转载 感受 lambda 之美~

一、引言java8最大的特性就是引入Lambda表达式,即函数式编程,可以将行为进行传递。总结就是:使用不可变值与函数,函数对不可变值进行处理,映射成另一个值。二、Java重要的函数式接口1、什么是函数式接口函数接口是只有一个抽象方法的接口,用作 Lambda 表达式的类型。使用@FunctionalInterface注解修饰的类,编译器会检测该类是否只有一个抽象方法或接口,否则,会报错。可以有多个默认方法,静态方法。1.1 java8自带的常用函数式接口。publiccla.

2021-09-07 14:40:26 79

原创 JVM 调优一个月

通过这一个多月的努力,将FullGC从40次/天优化到近10天才触发一次,而且YoungGC的时间也减少了一半以上,这么大的优化,有必要记录一下中间的调优过程。对于JVM垃圾回收,之前一直都是处于理论阶段,就知道新生代,老年代的晋升关系,这些知识仅够应付面试使用的。前一段时间,线上服务器的FullGC非常频繁,平均一天40多次,而且隔几天就有服务器自动重启了,这表明的服务器的状态已经非常不正常了,得到这么好的机会,当然要主动请求进行调优了。未调优前的服务器GC数据,FullGC非常频繁。首先服务

2021-08-03 10:33:58 103 1

转载 “秒杀”问题的数据库和SQL设计

1. 问题的来源最近发现很多人被类似秒杀这样的设计困扰,其实这类问题可以很方便地解决,先来说说这类问题的关键点是什么: 一定要高性能,不然还能叫秒杀吗? 要强一致性,库存只有100个,不能卖出去101个吧?但是库存10000实际只卖了9999是否允许呢? 既然这里说了是秒杀,那往往还会针对每个用户有购买数量的限制。 总结一下,还是那几个词:高性能强一致性!下文的所有解决方案是在 Mysql InnoDB 下做的。因为用到了很多数据库特性。其他的数据库或其他的数据库.

2021-07-19 11:05:42 849

转载 10个解放双手的 IDEA 插件

1、GenerateAllSetter实际的开发中,可能会经常为某个对象中多个属性进行 set 赋值,尽管可以用BeanUtil.copyProperties()方式批量赋值,但这种方式有一些弊端,存在属性值覆盖的问题,所以不少场景还是需要手动 set。如果一个对象属性太多 set 起来也很痛苦,GenerateAllSetter可以一键将对象属性都 set 出来。快捷键:Alt+Enter2、Alibaba Java Coding Guidelines阿里出品的《Java 开发

2021-07-19 11:03:05 107

原创 Java必会的工具库,让你的代码量减少90%

工作很多年后,才发现有很多工具类库,可以大大简化代码量,提升开发效率,初级开发者却不知道。而这些类库早就成为了业界标准类库,大公司的内部也都在使用,如果刚工作的时候就有人告诉我使用这些工具类库,该多好!一块看一下有哪些工具类库你也用过。Java自带工具方法List集合拼接成以逗号分隔的字符串//如何把list集合拼接成以逗号分隔的字符串a,b,cList<String>list=Arrays.asList("a","b","c");//第一种方法,...

2021-07-19 10:42:25 64

转载 三种方式,教你优雅的替换if-else语句~

场景日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的,逻辑及时中断返回; 融入策略模式; 策略模式+工厂+单例模式,锦上添花; 接下来先附上一段很久以前自己写的业务代码,核心逻辑就是在支付回调中根

2021-07-19 10:37:41 332

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除