自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(85)
  • 收藏
  • 关注

原创 布隆过滤器的原理及使用

布隆过滤器

2022-10-23 11:23:46 275

原创 什么情况下考虑分库分表

什么情况考虑分库分表

2022-07-05 12:57:41 759

原创 幂等处理技术方案

一、背景我们实际系统中有很多操作,是不管做多少次,都应该产生一样的效果或返回一样的结果。 例如1. 前端重复提交选中的数据,应该后台只产生对应这个数据的一个反应结果;2. 我们发起一笔付款请求,应该只扣用户账户一次钱,当遇到网络重发或系统bug重发,也应该只扣一次钱;3. 发送消息,也应该只发一次,同样的短信发给用户,用户会哭的;4. 创建业务订单,一次业务请求只能创建一个,创建多个就会出大问题等等很多重要的情况都需要幂等的特性来支持。二、幂等性概念幂等(idempotent、idempotence)

2021-11-11 12:05:39 121

原创 MySQL缓存机制

1. MySQL缓存简介MySQL缓存机制说明MySQL缓存机制即缓存sql 文本及缓存结果,用KV形式保存再服务器内存中,如果运行相同的sql,服务器直接从缓存中去获取结果,不需要再去解析、优化、执行sqlMySQL缓存失效在表的结构或数据发生改变时,查询缓存中的数据不再有效,查询缓存值的相关条目将被清空INSERT、UPDATE、 DELETE、TRUNCATE、ALTER TABLE、DROP TABLE或DROP DATABASE会导致缓存数据失效使用场景对于频繁更新的表,

2021-09-28 10:30:30 2719

原创 开发中什么场景使用分布式锁

在分布式事务中,需要保证不同节点对共享资源的访问是互斥的,否则可能会导致数据不一致的问题,此时可以使用分布式锁来保证在事务执行过程中,各个节点之间对共享资源的访问是互斥的。需要注意的是,分布式锁是一种非常重要的机制,但同时也会带来一定的性能开销和复杂度,因此在使用分布式锁时需要权衡系统的性能和可维护性,以及使用分布式锁所带来的成本和风险。在分布式缓存中,需要保证各个节点对缓存的访问是互斥的,否则可能会导致缓存中的数据不一致,此时可以使用分布式锁来保证各个节点对缓存的访问是互斥的。

2023-03-22 19:33:26 8

原创 redis分布式锁,java 执行时间超过锁的过期时间如何解决

另一种方法是在获取锁时设置一个足够长的锁过期时间,比如设置为一个小时或一天等,这样可以确保在Java方法还未处理完的情况下,锁不会被其他线程获取,但是这种方法需要确保锁过期时间足够长,否则可能会造成锁被持有时间过长,影响系统性能。无论哪种方式,都需要确保获取锁和释放锁的代码能够正常执行,否则可能会出现死锁或锁无法释放的情况。

2023-03-22 19:06:54 33

原创 openldap 的加密密码都是不可逆的吗

但是,尽管密码是不可逆的,黑客仍可以使用密码破解技术来尝试找到与给定散列值相对应的原始密码。为了增加密码的安全性,OpenLDAP 还可以使用“盐”(salt)来增加密码的复杂度,从而降低黑客破解的成功率。OpenLDAP 使用一种称为散列函数(hash function)的算法来加密密码。散列函数是一种单向函数,其将输入数据(即密码)转换为固定长度的哈希值,该哈希值通常被用作加密后的密码。因此,一旦密码被散列,就无法将其还原回原始密码。这意味着,OpenLDAP 中的密码是不可逆的。

2023-03-22 17:07:24 12

原创 java: 程序包sun.net.util不存在

common module jdk版本导致的问题。

2023-03-15 11:54:35 37

原创 jvm 性能调优

jmap分析内存泄漏,首先应该明确的是,jmap命令只能为泄漏提供一些线索和依据,但是不能确切的排查出代码中哪一行真正的出现了问题。jstat用于监视虚拟机运行时状态信息的命令,它可以显示出虚拟机进程中的类装载、内存、垃圾收集、JIT编译(即使编译)等运行数据。一、jstack(查看线程)、jmap(查看内存)和jstat(性能分析)命令。12、每1 秒一次显示进程号为6的java进程垃圾回收统计情况,显示10次。11、每1 秒一次显示进程号为6的java进程的GC情况。2、查看cup、内存使用情况。

2023-03-13 20:49:38 163

原创 MySQL 共享锁 (lock in share mode),排他锁 (for update)

mysql 共享锁 (lock in share mode)允许其它事务也增加共享锁读取不允许其它事务增加排他锁 (for update)当事务同时增加共享锁时候,事务的更新必须等待先执行的事务 commit 后才行,如果同时并发太大可能很容易造成死锁共享锁,事务都加,都能读。修改是惟一的,必须等待前一个事务 commit,才可以事务之间不允许其它排他锁或共享锁读取,修改更不允许所有事务中有一个排他锁执行 commit 之后,其它事务才可执行不允许其它事务增加共享或排他锁读取。

2023-02-13 15:03:07 238

原创 IDEA使用有道翻译引擎

​ 翻译引擎选择有道词典,点击配置 输入第三步获取的id,密钥。2、打开idea设置 settings - 工具 - 翻译。1、idea需要安装插件- Translate。背景:2022.10 谷歌翻译也不在中国了。

2022-12-21 23:00:49 1610

原创 Java 执行SQL脚本文件

【代码】Java 执行SQL脚本文件。

2022-12-21 21:45:00 261

原创 @Transactional 注解 同一个类下的两个方法

calculateAllByEaArea方法(有声明式事务注解 事务传播级别为propagation = Propagation.REQUIRES_NEW 访问域为public)calculateAllByEaArea方法(有声明式事务注解 事务传播级别为propagation = Propagation.REQUIRES_NEW 访问域为public)calculateAllByEaArea方法(有声明式事务注解 事务传播级别为默认 访问域为public)原理是Spring的动态代理。

2022-11-30 15:30:21 655

原创 docker 打包部署报错 no main manifest attribute, in xxx.jar

【代码】docker 打包部署报错 no main manifest attribute, in xxx.jar。

2022-11-18 17:09:07 345

原创 logstash常用命令

4、添加config.reload.automatic命令参数,自动加载配置,不需要重新启动logstash。5、通过配置文件启动logstash。

2022-11-13 22:49:27 408

原创 Linux OpenLDAP配置ACL

版本 CentOS。

2022-11-13 18:07:25 420

原创 关于Linux安装OpenLDAP说明

首先LDAP是一种通讯协议,LDAP支持TCP/IP。协议就是标准,并且是抽象的。在这套标准下,AD(Active Directory)是微软出的一套实现。那AD是什么呢?暂且把它理解成是个数据库。也有很多人直接把LDAP说成数据库(可以把LDAP理解成存储数据的数据库)。像是其他数据库一样,LDAP也是有client端和server端。server端是用来存放资源,client端用来操作增删改查等操作。而我们通常说的LDAP是指运行这个数据库的服务器。可以简单理解AD =LDAP服务器+LDAP应用。

2022-11-11 22:07:35 812

原创 windows安装多个jdk,并随意切换jdk默认版本

jdk版本切换  在变量值最后输入%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

2022-11-09 18:08:32 448 1

原创 Windows Redis 重启数据丢失解决方案

windows redis重启数据丢失问题

2022-11-09 12:28:24 644

原创 谷歌浏览器自带的翻译插件为什么不能用?

然后就到http://tool.chinaz.com/nslookup/ 查询一下。得到180.163.151.33,ping了一下能通,而且延迟很低,就修改hosts文件添加一行180.163.151.33 translate.googleapis.com ,再试了一下浏览器翻译,没问题了。这个IP会被墙,所以如果不能用了,需要更新一个新的IP到hosts,IP可以从https://ping.chinaz.com/translate.googleapis.com 找一个你本地电脑能ping通的。

2022-10-08 14:01:57 607

原创 spring注解 bean的默认名称生成策略

spring注解 bean的默认名称生成策略

2022-09-21 13:28:55 646

原创 Spring注解——注入bean的注解

Spring注解——注入bean的注解

2022-09-21 11:39:58 322

原创 spring的@Bean用法

spring的@Bean用法

2022-09-21 10:13:30 100

原创 什么是覆盖索引

覆盖索引

2022-09-04 16:41:07 121

原创 联合索引ABC的几种索引利用情况

联合索引ABC的几种索引利用情况

2022-07-05 12:25:15 462

原创 sql优化——count(1)、count(*)与count(列名)的区别

一、从执行效果来看1.count(1) and count(*):基本没差别,都是求表的总行数count(*)包括了所有的列,相当于求记录总行数,在统计结果的时候,不会忽略NULL2. count(1) and count(列名):(1) count(1) 会统计表中的所有的记录数,不会忽略NULL,包含字段为null 的记录(2) count(列名) 会统计该列字段在表中出现的次数,会忽略字段为null 的情况,即不统计字段为null 的记录。二、从执行效率来看若列名为主键,count(列

2022-05-19 18:27:52 273

转载 多核CPU 和多个CPU 区别? 并行和并发 操作系统内存管理模块 进程和线程

1、单核CPU是如何实现多进程和多线程?链接: link12、多CPU和多核CPU对应多进程和多线程调度:链接: link23、单核处理器、多核处理器、多处理器与多线程编程链接: link34、多CPU/多核/多进程/多线程/并发/并行之间的关系链接: link45、进程切换和线程切换链接: link5重点:2,其他为辅补充:目前有些大型机经常会有多个CPU,每个CPU都是多核的。如2个物理CPU,每个物理CPU都有4个核,那么最终的CPU就是8核的,个人笔记本都是单CPU,可以查看处

2022-05-18 17:06:40 182

原创 Java多场景需求使用各自独立线程池还是共用一个线程池?

在Java项目开发过程中,我们经常会使用到线程池,但是当面对多个任务场景,我们是给每个场景单独定义一个线程池,还是所有场景共用一个线程池?想必,很多同学也为此纠结过,那我们应该具体怎么做呢?一、建议这里我们建议,如果你的Java项目中有多个场景需要使用线程池,那么最好为每一个业务场景使用独立的线程池,不要让所有的场景共用一个线程池二、原因分析1)独立的线城池之间互相不影响彼此的任务作业,更有利于保证本任务的独立性和完整性,更符合低耦合的设计思想2)如果所有的场景共用一个线程池,可能会出现如下问题,

2022-05-12 00:40:10 1823

原创 IDEA maven compile报错OutOfMemoryError(内存溢出)解决及jvm分析

一、编译报错如下:http://cwiki.apache.org/confluence/display/MAVEN/OutOfMemoryError二、解决办法在VM堆大小那里调整默认值700---->改成1400或者更大三、jvm监测(使用jstack)(1)Maven Runner vm options无配置运行编译时候,系统默认初始化指定堆大小和最大堆大小(2)Maven Runner vm options 配置-Xms256m -Xmx1024m运行编译时候,系统按

2022-05-08 02:21:40 4882 1

原创 CPU100%问题如何快速定位

三个步骤:1. 找到最耗CPU的进程工具: top 方法:执行 top -c ,显示进程运行信息列表键入 P (大写 p),进程按照 CPU 使用率排序2. 找到最耗CPU的线程工具: top 方法:top -Hp 10765 ,显示一个进程的线程运行信息列表键入 P (大写 p),线程按照 CPU 使用率排序3. 查看堆栈,定位线程在干嘛,定位对应代码首先,将线程 PID 转化为 16 进制。工具:printf方法:printf “%x\n” 10804之所以要转化为

2022-05-07 22:55:40 713

原创 线程池的使用场景

为什么要使用线程池?创建线程和销毁线程的花销是比较大的(比如项目中手动创建线程, new Thread 类),这些时间有可能比处理业务的时间还要长。这样频繁的创建线程和销毁线程,再加上业务工作线程,消耗系统资源的时间,可能导致系统资源不足。(我们可以把创建和销毁的线程的过程去掉)线程池有什么作用?1、提高效率 创建好一定数量的线程放在池中,等需要使用的时候就从池中拿一个,这要比需要的时候创建一个线程对象要快的多。2、方便管理 可以编写线程池管理代码对池中的线程同一进行管理,比如说启动时有该程序创建1

2022-04-20 15:42:19 8246 2

原创 Cookie/Session机制

目前项目前端会把cookie会放在请求header头里,只是传输一种方式, 每次请求接口都会判断cookie是否存在,如果浏览器里为null(不存在),则直接跳转到登录页,如果浏览器存在,后端会校验cookie过期时间,如果已过期,后端跳转到登录页, 如果未过期,则正常访问接口待写参考:link,待修改...

2022-04-15 18:32:17 775

原创 网络通信协议TCP、SOCKET和HTTP三次握手及ConnectionTimeOut和SocketTimeOut参数理解

一、TCP与SOCKET的三次握手的对应关系要想理解socket首先得熟悉一下TCP/IP协议族, TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,定义了主机如何连入因特网及数据如何再它们之间传输的标准,从字面意思来看TCP/IP是TCP和IP协议的合称,但实际上TCP/IP协议是指因特网整个TCP/IP协议族。不同于ISO模型的七个分层,TCP/IP协议参考模型把所有的TCP/IP系列协议归类到四个抽象层中应用层

2022-04-14 21:38:41 612

原创 java字节流与字符流

字节流与字符流的比较字节流操作的基本单元是字节;字符流操作的基本单元为Unicode码元字节流在操作的时候本身不会用到缓冲区的,是与文件本身直接操作的;而字符流在操作的时候使用到缓冲区的所有文件的存储都是字节(byte)的存储,在磁盘上保留的是字节在使用字节流操作中,即使没有关闭资源(close方法),也能输出;而字符流不使用clode方法的话,不会输出任何内容。说明字符流用到了缓冲区,如果执行关闭输出流的话会刷新缓冲区,所以可以把内容输出。如果没有关闭,可以调用flush()方法强制刷新缓冲

2022-04-14 19:23:55 403

原创 布隆过滤器总结

海量数据处理以及缓存穿透这两个场景让我认识了 布隆过滤器 ,我查阅了一些资料来了解它,但是很多现成资料并不满足我的需求,所以就决定自己总结一篇关于布隆过滤器的文章。希望通过这篇文章让更多人了解布隆过滤器,并且会实际去使用它!下面我们将分为几个方面来介绍布隆过滤器:什么是布隆过滤器?布隆过滤器的原理介绍布隆过滤器使用场景通过 Java 编程手动实现布隆过滤器利用 Google 开源的 Guava 中自带的布隆过滤器Redis 中的布隆过滤器什么是布隆过滤器?首先,我们需要了解布隆过滤器的

2022-04-12 21:14:51 81

原创 HTTP通信与RPC通信区别

概念HTTP,首先回顾一下计算机的七层协议:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层,tcp属于应用层协议,http是建立在tcp之上的应用层协议RPC,即 Remote Procedure Call(远程过程调用),一种进程间的通信方式,允许像调用本地服务一样调用远程服务(rpc就像方法之间调用一样,很简单)1、灵活性RPC,要求服务器和客户端都采用相同的框架,相同语言HTTP,跨语言、跨平台,更加灵活2、传输协议RPC,可以基于TCP协议,也可以基于HTTP、UDP等协议

2022-04-12 12:14:56 1651 1

原创 不可重复读和幻读如何解决

详细参考:https://tech.meituan.com/2014/08/20/innodb-lock.html个人总结:一、什么是不可重复读和幻读RC隔离级别为读已提交,解决了不可提交问题,但是会出现不可重复读和幻读问题RR隔离级别为不可重复读,解决不可重复读和幻读的问题,不可重复读重点在于update和delete,而幻读的重点在于insert二、不可重复读和幻读如何解决快照读的不可重复读和幻读-mvcc 解决当前读的不可重复读和幻读-Next-Key锁(行锁和GAP(间隙锁)的合并)解

2022-04-10 17:35:14 326

原创 mysql中不等于到底走不走索引?实测记录

很多人疑惑!= 到底走不走索引, 这里可以肯定的说该操作是可以走索引的,但实际情况中都为啥都不走索引呢? 首先我们要知道走索引与数据量和数据趋势(cardinality)有很大的关系,如果表本身就上百条记录,那走索引和表扫描区别不大,甚至在存在书签跳转情况下还不如表扫描更有效率,这个时候可能是不走索引的我们来看看个例子:CREATE TABLE `b` ( `id` int(11) NOT NULL AUTO_INCREMENT, `age` bigint(20) DEFAULT 50,

2022-04-08 14:58:10 1220

原创 RSA加密、解密、签名、验签的原理及方法

一、RSA加密简介  RSA加密是一种非对称加密。可以在不直接传递密钥的情况下,完成解密。这能够确保信息的安全性,避免了直接传递密钥所造成的被破解的风险。是由一对密钥来进行加解密的过程,分别称为公钥和私钥。两者之间有数学相关,该加密算法的原理就是对一极大整数做因数分解的困难性来保证安全性。通常个人保存私钥,公钥是公开的(可能同时多人持有)。二、RSA加密、签名区别  加密和签名都是为了安全性考虑,但略有不同。常有人问加密和签名是用私钥还是公钥?其实都是对加密和签名的作用有所混淆。简单的说,加密是为了

2022-04-06 11:00:57 3318

转载 一文搞懂分布式锁及其业务场景

为什么用分布式锁?在讨论这个问题之前,我们先来看一个业务场景:系统A是一个电商系统,目前是一台机器部署,系统中有一个用户下订单的接口,但是用户下订单之前一定要去检查一下库存,确保库存足够了才会给用户下单。由于系统有一定的并发,所以会预先将商品的库存保存在redis中,用户下单的时候会更新redis的库存。此时系统架构如下:但是这样一来会产生一个问题:假如某个时刻,redis里面的某个商品库存为1,此时两个请求同时到来,其中一个请求执行到上图的第3步,更新数据库的库存为0,但是第4步还没有执行。

2022-04-01 18:28:07 416

空空如也

空空如也

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

TA关注的人

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