自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(557)
  • 资源 (49)
  • 收藏
  • 关注

原创 数据库连接池优化实践

在 高并发场景和 微服务架构中,合理配置和优化连接池对系统性能和稳定性至关重要。

2025-03-26 00:29:53 464

原创 分库分表后,跨库查询和分布式事务解决方案

分库分表主要是为了解决单库单表的性能瓶颈,但拆分后数据分散在不同库和表中,这就导致了跨库查询和分布式事务的问题。

2025-03-23 23:40:12 689

原创 数据库锁机制

悲观锁:优先保证数据强一致,以性能为代价,适合短事务、高冲突场景。乐观锁:以重试成本换取高并发能力,适合长事务、低冲突场景。选型核心:根据业务冲突概率、一致性要求及系统架构(如分布式环境)综合决策。

2025-03-23 20:27:51 801

原创 分区表的应用场景与优化实践

当表的数据量非常大,达到几千万甚至上亿行时,全表扫描会很慢,这时候分区可以帮助缩小扫描范围。比如,在一个电商系统中,订单表可能按月份分区,这样查询某个月的订单时,只需要扫描对应的分区,而不是整个表。或者在日志系统中,按天分区,方便归档和删除旧日志。另外,如果数据有明显的分区键,比如时间字段,按时间分区可以方便地管理历史数据,比如删除旧数据时直接删除整个分区,效率更高。当然,分区键的选择不当可能导致性能问题,或者分区过多带来的管理复杂性。分区表是将一个大表分成多个较小的、更易管理的部分,每个部分称为一个

2025-03-23 20:05:12 662

原创 Canal同步延迟和数据丢失优化方案

Canal是通过解析MySQL的binlog来获取数据变更事件的,然后将这些变更事件发送到下游,比如Redis。在同步的过程中需要解决实时性和一致性的问题。首先,实时性方面,可能涉及到Canal本身的处理速度,比如是否及时解析binlog,以及下游处理的速度,比如Redis写入是否够快。此外,网络延迟也是一个因素。一致性方面,可能需要确保数据变更的顺序正确,以及事务的原子性,比如一个事务内的多个操作是否被正确处理。

2025-03-23 17:29:05 955

原创 数据库性能分析

任意时间段的慢sql数量,具体的sql语句和参数,执行次数、执行时间和总耗时等。以下简述如何应用mysql自身集成的命令和第三方工具统计慢sql,定位瓶颈。

2025-03-23 16:37:16 450

原创 应用索引下推、索引覆盖、索引跳跃扫描等特性优化数据库查询效率

ICP:优化复合索引的非前导列过滤,减少回表。覆盖索引:直接通过索引返回数据,避免IO开销。索引跳跃扫描:弥补缺失前导列的查询,避免全表扫描。实践建议:通过EXPLAIN分析执行计划,结合业务场景设计索引,优先选择覆盖索引,必要时启用ICP或Skip Scan。

2025-03-23 13:23:04 515

原创 数据库索引定期检查优化策略

通过定期监控、自动化工具和谨慎的索引设计,减少维护成本。数据库索引的维护和优化是保障查询性能的关键环节。

2025-03-23 11:16:56 602

原创 雪花算法生成分布式唯一ID

雪花算法的结构是由时间戳、工作机器ID和序列号构成。要确保全局唯一,必须保证每个节点的机器ID唯一,并且同一毫秒内序列号不重复。在分库分表的环境下使用雪花算法,机器ID的分配是关键。常见的做法是通过分布式系统协调,比如使用ZooKeeper或者数据库来分配唯一的机器ID,在启动时从外部服务获取ID,并持久化存储,防止重启后ID变化。另外,时间戳部分需要保证各节点的时钟同步,否则可能出现时间不一致导致ID冲突。

2025-03-23 10:40:38 1143

原创 MySQL分库分表后单表数据还是过大怎么办

针对使用ShardingSphere分库分表后MySQL单表数据仍然过大的问题,以下是分步骤的解决方案:首先明确单表数据量过大的具体原因:2.2 增加分片数量若当前分片数为,可扩容至或更高,需配合数据迁移工具(如ShardingSphere-Scaling)平滑迁移。动态分片:设计支持动态扩容的分片规则(如按范围分片时预留分片空间)。2.3 多维度分片组合分片策略:例如同时按和分片,避免单维度热点。**3. 冷热数据分离3.1 归档历史数据将历史数据(如3年前订单)迁移至归档

2025-02-23 15:09:53 1089

原创 线程池上下文参数传递

传统做法是在任务执行前设置ThreadLocal变量,但线程池中的任务可能由不同的线程执行,导致主线程设置的ThreadLocal变量在任务线程中不可见。任务可能在另一个线程执行,该线程的ThreadLocal变量未被设置,导致任务无法获取到主线程的上下文。如果这个线程之前执行过某个任务,并且该任务设置了ThreadLocal变量,那么这些变量可能仍然存在于该线程中,导致后续任务访问到旧的数据,或者如果任务没有正确清理ThreadLocal变量,可能导致内存泄漏或数据混乱。

2025-02-04 14:18:36 599

原创 CountDownLatch和CyclicBarrier的区别,这回看懂了!

CountDownLatch的计数器由外部控制,而CyclicBarrier由线程自己调用await来减少计数。CountDownLatch适用于主线程等待多个子任务完成,而CyclicBarrier适合分阶段的任务,比如多轮计算。CyclicBarrier有屏障损坏的问题,而CountDownLatch一旦到零就不会改变。CyclicBarrier自动重置,而CountDownLatch需要重新创建。

2025-02-03 22:42:13 291

原创 深入理解Java虚拟线程的同步编程模型

传统上,Java使用的是平台线程(Platform Threads),也就是操作系统线程,每个平台线程都对应一个操作系统线程,创建和切换成本较高,尤其是在高并发场景下,线程数量增多会导致资源消耗大,甚至可能引发性能问题。虚拟线程(Virtual Threads)是Project Loom引入的,旨在解决这些问题。虚拟线程是轻量级的,由JVM管理,而不是直接映射到操作系统线程。这使得可以创建大量的虚拟线程而不会显著增加系统开销。听起来这很适用于高并发的I/O密集型应用,比如Web服务器处理大量请求的情况。

2025-02-03 12:37:09 1159

原创 linux系统排查命令

如下查看进程ID为9739的进程打开的文件句柄,可以看到进程的所有mysql、redis、nacos等网络连接和打开的文件路径,这个在程序出现文件流操作未关闭和内存泄漏等情况排查比较有用。linux系统对每个进程打开的文件句柄数限制有上限,如果进程持续操作文件流未关闭,可能会出现“Too many open files”的IO异常。

2024-11-19 23:42:13 265

原创 k8s部署微服务项目

而在实际生产中,大部分中小企业不会自建云,容易故障踩坑,更多选择云托管。自主搭建Jenkins,Maven私服,Rancher管理k8s集群,好一点的会自主研发Devops平台加入审批流,上线前研发Leader审批版本发布、sql脚本等。阿里云效其实也是干这种事情,最近在上面走了下流程,可以给大家简单看下我成功运行过的流水线。一般互联网公司的发布流程大致也是这样,前面还会有git分支管理合并等,如果代码合并有冲突也会中断。在代码构建前会有代码扫描、安全扫描、漏洞检测、单元测试覆盖率等,代码扫描完可以查看

2024-04-27 11:03:08 2308 1

原创 Saas系统多任务分发排队

这里可以根据用户等级拆分不同主题的队列,如免费版的topic和vip版的topic,里面调度逻辑一模一样,只不过对应不同的消费者,发送使用的账号可能也不同

2024-04-21 17:16:44 329

原创 JVM内存区域与常见问题

一次方法调用会产生一个栈帧,如果出现递归死循环调用栈空间满了,会出现StackOutOfErrorException。这里先以JDK1.8 hotspot垃圾收集器为例,讲讲每块区域存储的数据以及可能会抛的异常。存放类class对象,会自己动态调整大小,满了会引发Full GC。记录线程代码执行的位置,cpu时间片轮转后在原来的位置继续执行。各内存区域划分为大小相等的Region,可预测的停顿时间。灰色,有指向黑色标记节点的引用,不是GC ROOT节点。存放对象实例,会出现内存溢出或内存泄露等情况。

2024-01-01 18:04:07 667

原创 RocketMQ原理解读

RocketMQ整个中间件可以分两块,一块是NameServer,保存注册上来的Broker地址信息,另一块是Broker,保存队列消息,直接与发送端或消费者通信。NameServer是一个AP模型的架构。关键代码?Broker是一个CP模型的架构。关键代码?主要涉及3个物理文件commit_log,单个文件1G大小,顺序写入,保持实际消息内容consume_queue,保存消息ID和队列消息存储的offset地址index_file,辅助队列消息轨迹搜索。

2023-12-20 19:06:05 570

原创 【微服务】服务间调用

当我们的应用从一个大单体拆分成多个微服务之后,服务间调用有多少种方式?服务间调用如果出现超时,如果避免雪崩,即如何做限流熔断机制,原理是什么?

2023-12-17 21:58:10 759

原创 Nacos讲解

在Nacos1.x版本,服务间消息通信采用HTTP1.1长轮询,而Nacos2.x升级为gRPC长连接后,除了推送性能提升,内存消耗也大幅降低。而作为配置中心,数据的实时性等不是首要的,但服务间配置信息不一致是不能接受的,Nacos采用JRaft协议实现AP模型。作为服务注册与配置中心,如果不可用,会直接影响到业务,Nacos采用自研的Distro协议实现AP模型;在微服务架构里边,我们主要用Nacos做两块应用,一块是服务注册与发现,一块是配置中心。

2023-12-16 21:15:33 541

原创 MyBatis原理解读

我们项目中多用MyBatis进行数据库的读写,开源的MyBatis-Plus框架对其进行了增强,使用上更加简单,我们之前的很多项目也是直接用的MyBatis-Plus。数据库操作的时候,简单的单表读写,我们可以直接在方法里链式组装SQL,复杂的SQL或涉及多表联合join的,需要在xml手写SQL语句,这些框架上怎么执行的呢?MyBatis其实用到了很多设计模式。MyBatis的二级缓存。

2023-12-15 23:36:55 465

原创 SpringBoot自动装配

该注解import的AutoConfigurationImportSelector会去扫描classpath路径下META-INF/spring.factories文件,通过类加载器进行bean的自动化配置。SpringBoot的自动配置,其实跟下代码很简单,算是框架提供的一个很重要的特性,我们封装的很多starter公共组件,也是基于SPI机制实现功能拓展。我们每个SpringBoot项目的启动类都会加上@SpringBootApplication注解。

2023-12-15 22:45:07 511

原创 谈谈系统的稳定性建设

随着前段时间阿里语雀、滴滴生产事故的发生,从招聘信息来看越来越多的中小企业开始重视系统的稳定性建设。那么,系统的稳定性建设会涉及哪些方面呢?

2023-12-15 17:09:08 481

原创 说说限流处理

实现org.springframework.cloud.gateway.filter.ratelimit.KeyResolver我们可以基于ip或请求参数等指定不同维度,然后在配置文件指定令牌生成的频率和桶的容量,定制自己的限流逻辑。对于限流,从一个完整的请求链路上来看的话,可以分几块,有nginx接入层网关的限流,微服务网关gateway的限流,在业务层我们也可以实现自己的限流逻辑,Redission和Google的Guava包本身也提供了一些限流工具。

2023-12-15 16:26:42 430

原创 Spring事务

事务的传播机制,枚举定义了7种,如果不指定,默认是REQUIRED,比如父方法调用子方法,如果父方法已经有事务了,子方法就共用父方法的事务。如果子方法修改了事务的传播机制,改成REQUIRES_NEW,就不会共用父方法的事务,而是重新创建一个新的,实现上就是新建一个数据库连接去进行数据库操作,两个连接不互相影响。事务的隔离级别,MySQL的事务隔离级别都知道是4种,默认是RR,在一定程度上解决了幻读问题,有间隙锁、临键锁,容易导致数据库死锁,整个吞吐量也较低,所以有些并发高的业务或大厂会改成RC。

2023-12-13 22:14:43 535 1

原创 微服务网关Gateway

网关过滤器是配置在具体服务下的,只作用于配置对应的服务。如果参数是key-value结构的,可以实现org.springframework.cloud.gateway.filter.factory.AbstractNameValueGatewayFilterFactory抽象类,实际上也是继承了AbstractGatewayFilterFactory。如果需要自定义,同样实现org.springframework.cloud.gateway.filter.GlobalFilter,重写filter方法。

2023-12-13 19:48:29 852

原创 多线程分别顺序循环执行

通过线程序号控制ReentrantLock中Condition的阻塞唤醒,都知道ReentrantLock的实现中有同步队列和条件队列两种,在多线程加锁执行的时候,每个线程会封装成一个Node节点加入到阻塞队列中,这里通过ReentrantLock给每个线程分配一个Condition,执行await()方法,当前线程释放锁,加入条件队列等待,signal()则唤醒对应的线程。

2023-12-12 23:08:12 734

原创 Java线程状态

网上关于线程状态的文章很多,有的个别有些小差异。这个其实在线程类Thread里面已经定义了枚举类,直接进JDK源码看就好了。同时在Thread类里面可以看到很多操作方法都用了syntronized关键字修饰,最终是去调用native修饰的原生方法。对于接口阻塞,比如有线程死锁等情况可以用jstack工具查看线程状态。可以看到里面定义了6种,有的文章加了READY(就绪状态)。

2023-12-12 22:47:05 496

原创 Graalvm构建原生镜像

今天主要先跑下Spring3.0,体验下Graalvm构建原生镜像带来的性能提升。先看下GraalVM与JVM的性能对比:对比可以看到,最新支持 Spring Boot 3.0 基于 GraalVM 的 Spring Cloud Alibaba 应用会在启动速度、运行时内存占用和应用包大小方面得到大幅度降低。

2023-06-04 20:52:47 390

原创 VuePress搭建知识库

项目打包启动,布局是不是很熟悉的很多开源项目的guide start,后面只需要把页面文案和路由替换成自己的,然后不断添加Markdown文件,会自动生成html给浏览器渲染。node.js 推荐16.19.0版本,今天因为版本18.x比较新,很多兼容问题。后面是计划利用ChatGPT生成对应的主题文章,形成内部业务学习知识库。点击Quick Start,就是常规的侧边栏,右边是菜单对应的文章内容。用create-vuepress-site插件初始化项目。Windows系统调试如果出现。

2023-06-01 00:00:42 369

原创 从0到1接入钉钉消息通知

前段时间给项目接入监控告警,消息通知渠道选了钉钉。预算的原因内部办公刚从飞书转回钉钉,飞书消息通知之前就有一套了,测试钉钉从应用授权到消息测试花了不少时间。这里记录下从钉钉开放平台权限申请到消息接收全流程,给后面有同样需求的人少踩坑。

2023-05-28 12:15:11 2745

原创 clickhouse部署

从clickhouse官网下载二进制安装包解压安装tar -xzvf clickhouse-common-static-dbg-21.9.4.35.tgztar -xzvf ...sudo clickhouse-common-static-21.9.4.35/install/doinst.shsudo clickhouse-client-21.9.4.35/install/doinst.shsudo clickhouse-common-static-dbg-21.9.4.35/install/

2022-02-13 22:23:33 2661

原创 nginx: [error] open() “/run/nginx.pid“ failed (2: No such file or directory)

yum安装nginx后起不来nginx安装完默认启动脚本在/usr/sbin页面在/usr/share/nginx/html执行nginx -c /etc/nginx/nginx.confnginx -s reload

2021-11-10 11:17:04 3944

原创 从Nacos配置中心读取数据乱码

微服务项目配置从nacos读取,一直起不来nacos读取配置文件默认使用UTF-8,本地IDEA默认编码格式为GBK,编码不一致导致配置读取格式异常,像控制台打印的乱码启动参数添加 -Dfile.encoding=utf-8 指定格式...

2021-10-09 14:45:15 4699

原创 DataX之MysqlReader插件的使用

{ "job": { "setting": { "speed": { "record":100 } }, "content": [ { "reader": { "name": "mysqlreader", "parameter": {

2021-07-21 11:11:59 1450

原创 linux部署nodejs

wget https://cdn.npm.taobao.org/dist/node/v14.16.1/node-v14.16.1-linux-x64.tar.xztar -xvf node-v14.16.1-linux-x64.tar.xzmv node-v14.16.1-linux-x64.tar.xz nodejsln -s /usr/local/nodejs/bin/npm /usr/local/bin/ln -s /usr/local/nodejs/bin/node /usr/local/b

2021-05-26 10:35:11 345

原创 linux安装nginx

wget -c https://nginx.org/download/nginx-1.9.9.tar.gz解压#使用默认配置./configure#编译安装makemake install编译安装到/usr/local/nginx进入sbin目录#重启nginx,建议先停止,再启动./nginx -s stop./nginx#在rc.local增加启动代码即可vi /etc/rc.local#增加一行 /usr/local/nginx/sbin/nginx,增加后保存#设置执行

2021-04-16 12:40:53 202

原创 org.apache.rocketmq.client.exception.MQBrokerException: CODE: 1 DESC: the producer group[] not exist

如果生产者发送完调用了producer.shutdown();,mq会移除生产者组,在控制台查看Producer列表,看到的提示找不到生产者组的报错本地测试可以注释调producer.shutdown();就可以在控制台正常看到如下生产者组,生产环境不能注释...

2021-03-24 16:05:35 11461 5

原创 org.apache.rocketmq.remoting.exception.RemotingTooMuchRequestException: sendDefaultImpl call timeout

ff

2021-03-24 15:49:08 808

原创 org.apache.rocketmq.client.exception.MQClientException: No route info of this topic, mail-send

排查了几种情况最后确定是版本的问题,服务端部的是目前最新的4.8.0,而maven引的rocketmq-clients是4.3.0,升级工程依赖解决

2021-03-24 13:44:41 1152

你可能不知道的Notification用法

http://blog.youkuaiyun.com/lindonglian/article/details/43346549

2015-01-31

你可能不知道的Toast用法

http://blog.youkuaiyun.com/lindonglian/article/details/43340219

2015-01-31

子线程接收主线程发送的消息

http://blog.youkuaiyun.com/lindonglian/article/details/43316599

2015-01-30

管理MessageQueue的Looper使用

http://blog.youkuaiyun.com/lindonglian/article/details/43316239 不使用默认的looper

2015-01-30

管理MessageQueue的Looper

http://blog.youkuaiyun.com/lindonglian

2015-01-30

Message消息的两种发送方式样例send和post

http://blog.youkuaiyun.com/lindonglian/article/details/43315681

2015-01-30

Message的各种使用案例

http://blog.youkuaiyun.com/lindonglian/article/details/43303339

2015-01-30

AsynTaskProject

http://blog.youkuaiyun.com/lindonglian/article/details/43231487

2015-01-28

FileSaveToSDCard

http://blog.youkuaiyun.com/lindonglian/article/details/43226881 将数据保存的SDCard

2015-01-28

PopupWindow

http://blog.youkuaiyun.com/lindonglian/article/details/43205429

2015-01-27

写数据到手机内存

http://blog.youkuaiyun.com/lindonglian/article/details/43191629

2015-01-27

ProgressDialog应用实例

http://blog.youkuaiyun.com/lindonglian/article/details/43158929

2015-01-26

DateAndTimeDialog

http://blog.youkuaiyun.com/lindonglian/article/details/43159237

2015-01-26

AlertDialog

http://blog.youkuaiyun.com/lindonglian/article/details/43158633

2015-01-26

Android的SQLite详细应用实例

http://blog.youkuaiyun.com/lindonglian/article/details/43090901

2015-01-24

隐式Intent的应用

打电话、发短信、访问网页 http://blog.youkuaiyun.com/lindonglian/article/details/43064499

2015-01-23

用Android写的MP3Player

学习service的好例子,详情请睹http://blog.youkuaiyun.com/lindonglian/article/details/43063883

2015-01-23

标准struts2和mvc写的用户管理

标准struts2和mvc写的用户管理,最基本的添加、删除、修改、查询功能都有,已调好,非常适合入门

2014-11-19

struct2的jar包.rar

用structs2开发需要用到的jar包,包含5个

2014-10-29

用MVC模式写的JSP连接数据库操作完整代码包

用MVC模式写的用户登录,用javascript校验登录信息。主要是JSP连接数据库操作,涉及的技术JSP+Servlet+JDBC

2014-10-29

netflix-statistics

netflix-statistics netflix-statistics netflix-statistics jar包

2018-07-27

redis客户端redis-desktop-manager

在win7上亲测可用redis-desktop-manager

2017-03-15

Notepad++主题样式配置文件stylers.xml

已配好的Notepad++主题样式文件

2016-07-26

gocode.exe

http://blog.youkuaiyun.com/lindonglian/article/details/50659776

2016-02-13

gocode.rar

http://blog.youkuaiyun.com/lindonglian/article/details/50659776

2016-02-13

go1.5.3.windows-amd64.msi

go1.5.3.windows-amd64.msi

2016-01-25

editplus-go.stx

让editplus支持Go语言编写的go.stx文件

2016-01-22

Package Control.sublime-package

Package Control.sublime-package

2015-12-15

commons-pool-1.6.jar

commons-pool-1.6.jar用于redis池

2015-11-16

工作流流程设计器

activiti-designer-5.15.0.zip工作流流程设计器

2015-09-12

slf4j-1.7.12.zip

slf4j-1.7.12.zip,目前官方最新的jar包,需要就下吧

2015-07-30

slf4j-1.6.1.zip

slf4j-1.6.1.zip,需要就下吧,官方的,东西很全

2015-07-30

log4j-1.2.17.zip

这个用到的都知道,log4j-1.2.17.zip,目前最新的jar

2015-07-30

axis2-1.6.2-war.zip

Web services之Axis插件,

2015-05-27

人人分享接口开发包

人人分享接口开发包

2015-02-28

QQ和QQ空间分享接口开发包

这里有QQ和QQ空间分享接口开发包免积分提供下载,就不用到开发平台去找了

2015-02-28

ActionMode和PopupMenu应用

http://blog.youkuaiyun.com/lindonglian/article/details/43915751

2015-02-23

Android实现二级菜单和标题栏菜单

http://blog.youkuaiyun.com/lindonglian/article/details/43908147

2015-02-22

Menu应用实例

http://blog.youkuaiyun.com/lindonglian/article/details/43907303

2015-02-22

Android官方API文档完整版.chm

中文完整的Android Api参考资料,开发Android最完整的参考资料,开发过程中遇到的问题都可以在上面找到根源

2015-01-30

空空如也

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

TA关注的人

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