自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(201)
  • 资源 (9)
  • 问答 (1)
  • 收藏
  • 关注

原创 Java线程亲和实战

环境:Linux version 5.4.0-1084-aws (buildd@lcy02-amd64-044) (gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)) #91~18.04.1-Ubuntu SMP Sun Aug 14 01:24:43 UTC 2022。

2024-04-06 23:13:12 950

原创 图说Linux cpuinfo

即为所有物理CPU上的core的总数,实际数量可能

2024-03-30 10:59:20 747

原创 Disruptor概览

一文简短的文章帮助你掌握Disruptor设计原理

2024-03-23 10:54:47 620

原创 spring-cloud-loadbalancer-3.1.1版本bug踩点记录

问题复现后基本原因也很明确了,问题出现在第2147483462次递增,也就是num=185+2147483462=2147483647,那么此时2147483647递增后结果为-2147483648。abs对-2147483648求值结果为2147483648。对整形熟悉的朋友都知道,整形的范围是:-2147483648 至 2147483647。查看abs源码如下。代码很简单,如果是负数直接取-a。也就是说绝对值2147483648对于整形发生了越界,即得到结果是一个负数:-2147483648。

2024-02-24 09:43:56 1105

原创 Mysql锁实战

基于唯一索引更新,行锁基于非唯一索引更新,next-key-lock,行锁+gap锁,锁范围前后均为闭区间,以user_age索引字段为例:between 18 and 40, 锁范围:[18,40]19,锁范围:[19,+∞]

2023-08-13 15:14:47 307

原创 ES索引Json格式字段设计

properties嵌套对象,基本满足的大部分需求,并且实现简单properties嵌套索引,查询用法会有些差异,如果子properties对于数组json的检索场景要求对象字段之间匹配关系是与运算关系(and关系),则需要使用该类型子properties的字段可以动态添加,如果dynamic=false新增的字段不能用于检索,新增字段想要用于检索需要reindex,如果dynamic=true新增的字段可以用于检索,例如:下面案例,新增itemId字段可以直接用检索,dynamic=true时。

2023-07-16 11:01:18 2507

原创 JQuery select支持模糊搜索

模态框select2下拉框不能搜索,使用模态框,一般都会自动带上一个属性, tabindex=“-1” ,因为这个属性的存在,导致select2的搜索框无法输入,去掉这个属性即可解决。html中tabindex属性可以设置键盘中的TAB键在控件中的移动顺序,即焦点顺序。模态框中的select2下拉框很窄,增加宽度属性。增加js,在页面加载完成时重写select。引入:select2。

2023-07-02 10:35:40 865

原创 httpclient连接泄漏实战-_-

连接泄漏的原因小结客户端没有主动释放连接服务端长轮询定时任务刚好是30S与Tomcat的异步请求超时时间30S吻合在数据没有准备好时,服务端定时任务(ScheduledThreadPoolExecutor�)30S到时调度任务期间,个别任务还未被调度唤醒时,Tomcat异步请求超时,提前响应了客户端,客户端收到异常请求时没有主动关闭连接,导致连接发生泄漏解决方法主动释放连接客户端超时时间设置低于30S超时监控:起一个定时任务,定期检查连接是否已超时,超时则主动释放。

2023-05-27 21:01:16 1178

原创 ES reindex 实战

文档量:54851887文档大小:15.4GBES节点:单个耗时:55-60分钟负载:cpu=50%左右,内存=70%左右。

2023-05-21 16:35:51 781

原创 RocketMQ的延迟队列实现

例如Slot案例中写入的三条数据对应的两条延迟消息(均为延迟时间:2023-04-16 20:00:00)之间,夹杂着一条更晚触发的延迟消息(2023-04-16 20:05:00)老版本延迟队列仅支持几个延迟时间,而不是任意延迟时间,新版本进行了升级,可以支持任意版本。

2023-04-16 21:54:22 2301

翻译 从Amazon OpenSearch Service迁移(以前的Amazon Elasticsearch Service)

这是一份相当技术性的指南,用于从 Amazon OpenSearch Service(以前称为 Amazon Elasticsearch Service、Amazon ES 或 AWS ES)迁移到 Elastic Cloud 上的 Elasticsearch Service。这些步骤可能需要一些编程经验。Amazon OpenSearch Service集群通常配置到一个具有私有IP地址的私有云(VPC)中。他们也可以位于一个面向公域的端点上。

2023-03-25 16:38:35 361

原创 Tomcat and Jetty

Jetty服务架构更加简洁,且可插拔特性很适合定制一些个性化功能Tomcat服务架构相对复杂些,且容器的组件之间存在强依赖。Tomcat的架构中可以看到它支持配置多个host端口,Jetty是不支持的,需要启动多个JettyWebServer支持Jetty的Handler设计略复杂,scope抽象的应用场景没有很明显的优势,甚至有些与handle混淆,有些Handler仅实现了scope抽象,handle抽象用不到直接传递至下一个节点。整个handler链有点像是层高为2的跳跃表。

2023-03-18 17:12:32 862

原创 JMeter压测

软件:jetty:jetty-io-9.4.22.v20191022.jar,spring-boot-2.2.1.RELEASE.jar,mysql:Ver 8.0.29硬件:mac:内存16G,磁盘HD 1T,cpu:Apple M1 Pro,核总数: 10(8性能和2能效),网络:电信100M下载地址:https://jmeter.apache.org/download_jmeter.cgi例如mac/linux可以选择:https://dlcdn.apache.org//jmeter/bina

2023-03-12 11:13:58 1363

原创 Could not extract response: no suitable HttpMessageConverter

版本:spring-cloud-openfeign-core-2.1.1.RELEASE.jar,spring-webmvc-5.1.14.RELEASE.jar,jetty-server-9.4.41.v20210516.jar,tomcat-embed-core-9.0.48.jar。

2023-02-26 15:35:08 10202

原创 mysql索引字段设计

基于索引选择性创建联合索引,字段设计可以根据实际业务场景来评估例如:字段1(基数=10W),字段2(基数=10W),字段3(基数=20)虽然字段1,2独立的选择性更高,但是如果字段1与字段2基本1:1,而字段1与字段3基本1:5。那么字段1+字段3无疑是更佳的选择。

2023-01-15 22:10:13 761

原创 GC中的一些设计

个人认为还有一个前提是使用了标记-整理算法,不存在内存碎片,新对象不会被分配至碎片内存中。标记过程中修改了引用关系,B.C=null,A.D=D,此时如果不做特殊处理的话,那么D会被误杀,因为A已经为黑色标记完成,不会再尝试去标记它的子节点D。CMS解决方法是针对条件1:新增黑色节点对白色节点引用时会将新引用关系的引用者(黑色节点)标记为灰色。G1/ZGC解决方法是针对条件2:删除灰色节点对白色节点引用时会将老引用关系的被引用者标记为灰色。通常有两种方法记录引用关系:Point In/Point Out。

2023-01-07 14:55:20 707

原创 Elasticsearch学习

每个shard向cooridinating节点返回足够的信息,以允许它合并与重排序shard级别的结果至一个全局排序的结果集,结果集最大长度为请求需求的size。与"Query Then Fetch"相似,区别是初始分发阶段,它会去计算分布式TF值,以获取更准确的评分。与query_then_fetch区别在于,只有一个阶段,第一阶段就返回文档内容,即将两个阶段合二为一了。查询Segment缓存中的数据,因此ES是一个近实时数据,默认写入的数据1S内进入Segment。hot数据迁移至warm节点。

2023-01-01 22:20:19 650

原创 Es客户端学习

版本:opensearch-rest-high-level-client-2.3.0.jar,httpcore-nio-4.4.11.jar,httpasyncclient-4.1.4.jar。

2022-12-25 12:09:46 1968

原创 apollo分布式配置优先级学习

apollo/properties配置spring读取配置阿波罗在spring上下文刷新前加载配置至Environment环境配置的第一优先级位置:com.ctrip.framework.apollo.spring.boot.ApolloApplicationContextInitializer#initialize(org.springframework.context.ConfigurableApplicationContext)

2022-11-13 13:41:22 2165

原创 踩点记录-_-!!!

为什么要用jdk17?检查Mapper响应类型没问题,那么就是缓存问题,查看userSwitch缓存配置为Boolean类型-.-!原因:如果缓存的key是常量,需要使用单引号将常量包起来。新增缓存并配置匹配的序列化类型。原因:lombok版本过低。解决方法:修改配置如下。

2022-10-29 21:26:14 409

原创 mongodb脚本

【代码】mongodb脚本。

2022-08-20 09:15:06 830

原创 聊聊接口设计

Java语言开发,API中不能使用枚举类型,否则服务端新增枚举会影响客户端批量请求的接口特点是高吞吐单个请求的接口特点是高并发就单个接口而言,吞吐与并发是互斥的,设计过程中可以基于实际的业务进行设计。就像jvm的Parallel GC与CMS GC的选择。...............

2022-08-20 09:12:44 472

原创 git常用命令

注:与shell命令的manual相同,中括号[]表示参数非必传reflog 查看分支基于哪个分支创建。

2022-08-13 13:13:07 340

原创 分布式锁故障转移问题

背景:基于redis实现分布式锁。客户端:lettuce-core-5.1.7.RELEASE。连接池:commons-pool2-2.6.2。

2022-08-06 20:51:34 636

原创 jdbc连接mysql8.x踩坑

使用jdbc连接数据库报错密码错误,提示检查编码使用手工连接数据库正常,密码没有问题。。。

2022-07-30 22:45:06 471

原创 shardingshpere客户端封装之泛型踩坑

环境:jdk11感觉也可以叫shardingsphere客户端踩坑记录-_-!!!报错很明确,类型转换错误,日志如下问题原因公司封装了sharding sphere客户端,抛出异常的代码第23行是: Long index = shardingValue.getValue() % availableTargetNames.size();完整源代码如下:问题定位很简单,增加断点发现入参的shardingValue.getValue()为Integer,该值取自数据库字段,数据库类型为int,因此出现了

2022-07-24 11:20:40 676

原创 Could not determine which parameter to assign generated keys to

环境:jdk11,generator插件增强包:com.itfsw(1.2.4)generator配置问题原因问题原因报错中提示很清晰,报错是由Jdbc3KeyGenerator抛出,就是说由于sql语句存在多个参数,回填主键时无法确定将主键回填给哪个字段我们配置了identity,所以主键回填应该使用,但实际使用的Jdbc3KeyGenerator,而不是SelectKeyGenerator。其实只有扩展的batch部分没有使用selectKey,其他insert相关方法都是使用的selectK

2022-07-17 09:17:41 3126 2

原创 java虚表虚函数

虚函数实际是C++语言术语,主要功能是为了实现多态Java 虚函数C++中使用virtual修饰的普通成员函数为虚函数。Java没有虚函数的概念,它的普通函数就相当于C++的虚函数,动态绑定是Java的默认行为。如果Java中不希望某个函数具有虚函数特性,可以加上final关键字变成非虚函数。C++中纯虚函数Java中纯虚函数虚函数实现案例代码...

2022-07-10 16:20:28 727

原创 适配器错误的打开方式

适配器模式踩坑

2022-06-19 17:05:32 148

原创 mybatis-generator报错Communications link failure

mybatis-generator报错Communications link failure

2022-06-12 22:22:55 1813 1

原创 CopyOnWriteArrayList源码学习

常用ListList特点:有序,元素可能重复​数据结构数组数组结构特点:适合随机读,写入性能比链表差ArrayList,并发不安全,读写均不加锁Vector,并发安全,读写均加锁CopyOnWriteArrayList,并发安全,读不加锁,写加锁链表数组结构特点:适合顺序读,写入性能比数组高LinkedList,并发不安全,读写均未加锁​写addpublic void add(int index, E element) { final ReentrantLock

2021-09-05 22:33:10 140

原创 背包问题-Java版实现

背包问题简而言之:背包承重有限情况如果装入物品的价值最高。细化分类有有三种01背包问题(unbounded knapsack problem):一共有N件物品,第i(i从1开始)件物品的重量为w[i],价值为v[i]。在总重量不超过背包承载上限W的情况下,能够装入背包的最大价值是多少完全背包问题(unbounded knapsack problem):与01背包不同就是每种物品可以有无限多个:一共有N种物品,每种物品有无限多个,第i(i从1开始)种物品的重量为w[i],价值为v[i]。在总重量不超过

2021-08-29 20:01:13 571

原创 并查集应用

并查集简单回顾下并查集概念的几个概念初始化,makeSet,为每个元素构建一个集合find,查找集合根节点union,合并集合详情任意门:https://blog.csdn.net/u010597819/article/details/104600289​并查集的应用场景判断两个集合是否存在交集最小生成树​应用岛屿数量题目给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直

2021-08-22 19:23:41 177

原创 tcp之半连接全连接队列

全连接半连接半连接:syn queue,完成第一次握手后,服务端收到后回复SYN+ACK后,服务端进入SYN_RCVD状态,连接会放入半连接队列。当服务端发送SYN_ACK后将会开启一个定时器,如果超时没有收到客户端的ACK,将会重发SYN_ACK包。重传的次数由/proc/sys/net/ipv4/tcp_synack_retries控制,默认是5次。全连接:accept queue,完成三次握手后,连接会移除半连接队列,放入全连接队列tcp与半连接全连接队列关系图监控配置// 半连接配置-

2021-08-15 19:04:08 675

原创 mysql锁与当前读快照读

当前读快照读mysql事务隔离级别为:read committed,此时默认的查询为“当前读”,即可以读取最新提交的数据mysql事务隔离级别为:repeatable read(简称RR),此时默认的查询为“快照读”,即近读取事物开启时那个时刻的数据快照那么RR隔离级别的读是否可以变更为当前读呢?当然时可以的,那么如何实现呢?select for update案例数据mysql> select * from user;+----+-----------+-----------+| id

2021-08-07 15:00:57 559

原创 缓存置换算法之LRU/LFU

常见缓存置换算法LRU 最近最久未使用FIFO 先进先出置换算法 类似队列OPT 最佳置换算法 (理想中存在的)NRU Clock置换算法LFU 最少使用置换算法PBA 页面缓冲算法LRU实现原理:链表+hash表查询插入时间复杂度:O(1)代码实现:LinkedHashMapdubbo的工具LRU工具类便是继承自LinkedHashMap:com.alibaba.dubbo.common.utils.LRUCache数据结构HashMap结构基础上,为所有Node节点维护一个

2021-07-31 16:35:58 342

原创 二叉树四种遍历方式

二叉树四种遍历方式,前中后序遍历按照根节点的访问顺序命名前序遍历:根节点-》左子树-》右子树中序遍历:左子树-》根节点-》右子树后序遍历:左子树-》右子树-》根节点平行序遍历源码地址:https://github.com/GallantKong/tree.git案例数据 /** * 案例数据: * 15 * / \ * 10 20 * / \ / \

2021-07-25 15:15:29 108

原创 分库分表设计

为什么要分库分表?单库表无论是存储还是cpu/网络等物理资源存在极限,对于日益增长的业务无法支撑分库分表设计默认按照主键作为分库分表的keyhash散列分库分表优劣优点:hash散列分布均匀,负载较为均衡缺点:扩容难扩容问题扩容需要数据rehash+数据迁移,当然可以选择业务低峰时逐个迁移做到业务无感,但是迁移的成本与数据量成正比可以学习参考HashMap的方案,扩容时避免rehash并且减少了迁移量,但是实用吗?为了成本当然时一台台扩容更为理想,不能每次扩容都成倍增长,该方案不适用

2021-07-18 16:03:25 280

原创 分布式事务之胡扯

为什么需要分布式事务?随着互联网的高速发展,业务数据量级也已经不是单库表所能承担的,于是微服务与分库则应时而生,同时也引入了一些问题,最常见的案例:下单并支付动作需要触发,扣减库存以及账户余额。库存管理服务,账户管理服务两个微服务使用两个独立的数据库,而此时需要同时成功或失败回滚。​分布式事务实现方案常见的方案有如下几种本地消息表,方案最初有ebay提出(https://queue.acm.org/detail.cfm?id=1394128)TCC,TryConfirmCancelAT,Au

2021-07-11 21:09:56 134 1

原创 缓存一致性问题之缓存模式

上篇文章聊了聊redis框架底层HA与数据库一致性的方案,本篇文章主要介绍redis缓存与数据库之间的一致性问题,以及常用的设计模式缓存模式Cache-as-SoRRead/Write ThroughWrite behind cachingCache AsideCache-as-SoR(system-of-record)Read Through流程读(Read Through)查询缓存模块缓存模块命中直接返回缓存模块未命中,缓存模块查询数据库更新缓存模块并返回Wr

2021-07-04 18:24:47 196

hsdis-amd64.dylib

打印Java字节码插件 mac版

2021-02-18

数据结构与算法分析Java语言描述

数据结构与算法分析Java语言描述,很棒的图书,由浅入深,经典之作

2018-06-05

DbVisualizer破解版

数据库链接工具,已破解,查看数据库元数据,导入导出数据等等,功能强大

2018-06-05

Sybase PowerDesigner16.5破解文件

相关的源文件下载: 官网:http://www.powerdesigner.de/ 国内:http://rj.baidu.com/soft/detail/16619.html?ald 上面的文件直接安装,之后下载该破解文件 放到安装目录的D:\Program Files (x86)\Sybase\PowerDesigner Viewer 16 文件夹下,进行文件覆盖就可以了(要选择自己安装目录) 亲自测试可用,与大家分享,希望对大家有用…………

2017-08-18

Java_HotSpotTM虚拟机内存管理

Java HotSpotTM虚拟机内存管理 gc 垃圾回收 内存管理

2017-06-12

jprofiler.linux.windws.64.bit.part2.破解版

jprofiler.6.2.4,亲测,可用,第一部分为windows,第二部分为linux

2016-07-08

jprofiler.linux.windws.64.bit.part1.破解版

破解版,jprofiler.6.2.4,亲测,可用,第一部分为windows,第二部分为linux

2016-07-08

jprofiler.linux.windws.64.bit.part2

jprofiler.6.2.4,亲测,可用,第一部分为windows,第二部分为linux

2016-07-08

jprofiler.linux.windws.64.bit.part1

jprofiler.6.2.4,亲测,可用,第一部分为windows,第二部分为linux

2016-07-08

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

TA关注的人

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