- 博客(778)
- 资源 (2)
- 问答 (8)
- 收藏
- 关注
原创 redis原理深入解析之看完这篇还需要努力
len:4 alloc:4 flags:1 数组 \0sds可追加:动态扩容 减少内存分配次数 二进制安全如新字符串1m 新空间为扩展后字符串长度+1m+1 内存预分配。
2024-03-07 06:16:59
1050
原创 jmeter压测
h3>调用哪个服务的哪个方法这里设置线程相关jmeter强大到很强大 hh~可设置一下 上面的 参数${}对应的有后置HTTP请求数据库设置
2023-10-17 18:58:47
300
原创 集成shiro
基础概念1、UsernamePasswordToken,用来封装用户登录信息 public UsernamePasswordToken(final String username, final char[] password, final boolean rememberMe, final String host) { this.username = username; this.password
2022-01-18 12:04:15
3370
原创 如何写出气定神闲的代码——泛型
使用了Mybatis 增强工具包https://gitee.com/baomidou/mybatis-plushttps://blog.csdn.net/s10461/article/details/53941091泛型相关 本来这里有一大段溢美之词,但是写完感觉也没什么高大上的,但是作为小白下面的代码极其思想是我需要多学习的,之前一直加班,现在有点时间开始欣赏cto的代码;大概介绍一下:简单的三层,采用springboot,redis,baomidou,一切从简原来的mq也去掉...
2021-05-07 18:38:41
855
原创 python批量修改数据库字段类型
#首先这个代码没有提取不够简练#!/usr/bin/python# -*- coding: UTF-8 -*-import pymysqlimport datetimeimport timeimport re,stringhost = "19.206.25.24"mysql_user_name = "root"now = datetime.datetime.now()now_timestamp = int(time.time())def update_create_time..
2021-01-25 18:14:18
983
5
原创 JIT
JIT,又是一块带肉的骨头;just-in-time compilation,运行时编译,吭哧吭哧写了半天的bug不能到最后还让人来做吧?“侬脑子瓦特了”——当然是交给机器做,javac把java源文件翻译成class文件(字节码组成),jvm加载这些文件逐条取出字节码并执行,这就是解释执行了!当然还可以重新编译优化字节码以生成机器码,CPU直接执行,这样效率更高,这里有java如此受欢迎的原因,这里点破不说破,然后怎么让机器去执行呐?当然是告诉它了:要有源代码或者字节码到机器码的转换过程,...
2020-10-18 12:15:43
326
原创 对象一定分配在堆上吗?
读过之前半文章的小哥哥们肯定都知道,宝宝我最近入坑了Golang,当然这不是自愿的也说不上胁迫,反正就入坑了,没想到21世纪的C语言也有了堆和栈,随之而来的战利品是逃逸分析,自然这只是其中之一,其他的离题比较远,写文章最主要的是什么?不被催稿(奋斗状)!这个我有生之年是做不到了 官方回答逃逸分析:一种确定指针动态范围的方法,就是在程序的哪些地方可访问到这些指针,具体涉及到指针分析和形状分析,是不是不好理解,在次要特别鸣谢公司让贫下中农的我可以”科学上网“;再直白一些:逃逸分析确定某个指针可...
2020-10-13 22:07:41
613
1
原创 springboot自动装配
装载谁@SpringBootApplication @SpringBootConfiguration,@EnableAutoConfiguration,@ComponentScan@EnableAutoConfiguration开启自动装配 在classpath下找到all配置的bean进行装配,据若干conditional定制规则初始化@Import(EnableAutoConfigurationImportSelector.class)1.5中过时,查看父类AutoC...
2020-09-02 23:29:55
209
原创 DDD Domain Drive Design
源自圣杰https://www.cnblogs.com/sheng-jie/p/6931646.htmlDDD理论系列文章DDD综合软件系统分析和设计的面向对象建模的方法通用语言:通过团队交流达成共识 能简单清晰准确 传递业务规则的语言(文字 图片)《实现领域驱动设计》书中有一个简单的例子(P238)系统必须对User进行认证,并且只有当Tenant(租户)处于激活状态时才能对...
2019-09-05 21:14:15
460
原创 ShardingSphere下
使用规范不支持:不支持case when,having,union可解析至第一个含表的子查询,在下层嵌套再次找到子查询抛错子查询不支持聚合函数,不支持含shema的SQL:shardingsphere对sql的访问都是在同一个逻辑schema上分页完全支持MySQL、PostgreSQL和Oracle的分页查询,SQLServer由于分页查询较为复杂,仅部分支持性能编...
2019-08-27 15:01:58
2641
1
原创 开源监控:Prometheus
开源的系统监控及告警工具,适用于以服务器为中心,高动态 面向服务架构 的监控;架构图:prometheus server:核心,据配置采集数据,服务发现,数据存储prometheus targets:探针exporter提供采集接口,或应用本身提供的支持promethenus数据模型采集接口pushgateway:为部分push场景提供插件,监控数据先推送到push...
2019-05-29 22:54:16
887
1
转载 kafka入坑
高级消费者提供消费消息的方法而屏蔽底层细节;高级消费者在zk特点分区存储最后的偏离(kafka启动时准备完毕),全局kafka集群消费群体,任何老逻辑的消费者应该被关闭然后运行新的代码,当一个新的进程拥有相同的消费者群的名字,kafka新增进程的线程来消费topic且引发“重新平衡”:分配现有分区到all可用线程如果你提供比在topic分区多的线程数量,一些线程将永远不会看到消息。 如果...
2019-03-19 22:04:26
405
4
转载 canal详解
canal在github上的文档:https://github.com/alibaba/canal/wiki/ClientExamplemysqlcanal伪装成mysql slave,如此“降低”姿态,mysql当然要做出些表示:那便是开启binlog支持[mysqld]log-bin=mysql-bin #添加这一行就okbinlog-format=ROW #选择row模式...
2019-03-09 16:46:45
3939
原创 ClickHouse 来一篇
是时候来见证一下真正的面向列的DBMS了!!!真正的DBMS没有任何垃圾值,数据紧凑存储(无需存数值长度):定长数值clickhouse容许在运行时可建表建库,加载数据进行查询,不需要重新配置 重启服务器快:不是一般的飞快支持事务,无隔离级别:ACID是没戏了,so数据可能不一致 我们CK是分析性数据库嘛 引擎:合并树MergeTree系列通主键字典排序,主键可以是列...
2019-03-03 10:30:46
577
原创 三三学习_一些你不知道的事
人工智能是web3的一部分!这不得不提全球資訊網之父的Tim Berners-Lee,2005指出Semantic Web就是他心目中的 Web 3.0的那段采访。哎、上面刚说所有权,现在提这个?是不是有疑问,这是好的开始哦?俗话说性别交换、天差地别,咱们对象不一样,结论也是如此。这个事情很恐怖啊,友友们、细思极恐的时代还没真正到来,只要逐渐强大才能灵活应对。还有几个,忘记了,不好意思,后面有机会补充。使得数据的存储和检索变得透明且难以篡改。
2026-04-09 21:51:09
313
原创 深度全面学习负载均衡Ribbon/Spring Cloud LoadBalancer
造人:写一个类继承(这是IRule的默认实现,省事)。定规矩:重写choose方法,把你的业务逻辑写进去。上岗:告诉 Ribbon 别用默认的,用你写的这个。场景:假设你有两台机器,A 是超级服务器(权重 8),B 是普通服务器(权重 2)。你希望 80% 的流量给 A,20% 给 B。我们需要写一个类继承,但在choose方法里,我们不写算法,而是直接调用 Nacos 的 API。@Slf4j@Autowired@Override// 初始化配置,一般留空即可。
2026-04-08 22:08:24
398
原创 服务注册与发现:Nacos与Eureka的底层原理大揭秘
私房话:如果你追求极致的实时性和一致性,选Nacos。它的“推拉结合”和快速剔除机制,能让你在毫秒级感知服务变化。如果你的网络环境不太稳定,或者你更看重高可用性,Eureka的“自我保护”机制可能会让你更安心。
2026-04-07 22:19:02
318
原创 分布式事务
“分布式事务没有银弹。所有的方案都是在一致性、可用性和性能之间做交易。作为架构师,你的任务不是寻找完美的方案,而是找到最适合你业务场景的那个‘平衡点’。”能用 MQ 最终一致性,就别用强一致性。能用 Seata AT,就别手写 TCC。只有在 Seata AT 性能扛不住时,再考虑 TCC。
2026-04-06 23:33:05
355
原创 高并发系统的“救命稻草”——BASE 理论
最终一致性不是“放弃一致性”,而是通过异步处理、重试补偿、定时对账等机制,在保证系统高可用的前提下,实现数据的最终正确性。最后,送上金句:“最终一致性是互联网架构的‘遮羞布’,它让我们在高并发、大流量的场景下,既能保证系统不挂,又能保证数据最终正确。但记住,它不是万能的,对于银行转账等强一致性场景,还是要用 ACID。”
2026-04-06 15:12:58
377
原创 CAP定理:分布式系统的“渣男”定律
分布式系统的本质就是在不可靠的网络上构建可靠的系统。CAP定理告诉我们,当网络分区这个“黑天鹅”降临时,你必须想清楚:你是要“正确但不可用”的系统,还是要“可用但不一定正确”的系统?
2026-04-04 21:17:16
292
原创 雪花算法和时区的关系
“雪花算法生成的 ID 本质是基于 UTC 毫秒数 的长整型,因此时区设置(Timezone)本身不会导致 ID 不一致。但在跨国部署时,真正的挑战不在于时区,而在于防止跨时区的 NTP 时间同步导致的时钟回拨,以及确保全球范围内的 Worker ID 唯一性。”
2026-04-04 20:36:54
399
原创 jvm之生老病死
看日志。不看日志就调优,就是耍流氓。定目标低延迟(如金融交易):选G1或ZGC。高吞吐(如后台报表):选Parallel。调参数新生代大小-Xmn。新生代太小,对象过早进入老年代,导致老年代频繁GC;新生代太大,Minor GC时间变长。晋升年龄。堆内存比例。JVM的垃圾回收,本质上是在吞吐量和延迟之间做权衡。想快:选Parallel,但停顿久。想稳:选G1,平衡吞吐和延迟。想极致低延迟:选ZGC,但吃CPU。最后,送上金句“调优不是靠猜,是靠数据。
2026-04-03 17:51:06
431
原创 数据库运维与数据安全:备份恢复、日志分析与故障排查
当然这要看业务和公司重点,咱全部拉满来说运维与数据安全是一个系统工程,它不仅仅是技术,更是流程、管理和文化的结合。运维与安全,是程序员的底线。无论你的架构设计得多么精妙,如果没有可靠的备份恢复方案,就是在裸奔。“一个健壮的运维体系,是70%的流程规范 + 20%的自动化工具 + 10%的应急技术。没有流程的约束,再好的工具也会被一次误操作打回原形。”最后,送上老师的金句:“架构师的底线是数据安全。无论架构多复杂,如果没有可靠的备份恢复方案,就是在裸奔。”
2026-04-01 20:42:40
150
原创 雪花算法:分布式世界的“身份证号”
嘿,朋友!想象一下,你是一家拥有几千台服务器的互联网大厂架构师。现在有个小麻烦:你的订单系统每秒钟要生成几万个订单号。如果让数据库自己搞(自增ID),几台数据库凑在一起,肯定会出现“撞车”——大家都生成了ID ,这就像两个新生儿都叫“张三”,户籍科(数据库)当场就得炸毛。这时候,Twitter 的那帮天才掏出了一个叫 雪花算法 的宝贝。这玩意儿生成的 ID 不长,还是个数字,但就像雪花一样,世界上没有两片完全相同的雪花。它是怎么做到的呢?全靠“拼积木”。雪花算法生成的 ID 是一个 64 位的长整型数字(在
2026-04-01 20:42:32
496
3
原创 MyCat:数据库界的“霸道总裁”
总的来说如果你的系统处于起步阶段且难以预测未来数据量,首选一致性哈希(MurmurHash);如果是明确的时间序列数据,选范围分片;如果是核心交易链路且关联查询多,务必配合ER 分片策略。
2026-04-01 20:42:24
286
原创 扩展之ShardingSphere
ShardingSphere 的底层原理,本质上是一个围绕 SQL 生命周期的精密处理框架。它通过解析理解意图,通过路由定位数据,通过改写适配环境,通过执行完成操作,最后通过归并呈现结果。这套机制使其能够以无侵入的方式,为任何 JDBC 兼容的数据库提供强大的分片和治理能力。
2026-04-01 20:42:14
328
原创 延伸之canal
伪装”成 MySQL 从库(Slave)的特殊客户端。它的核心工作就是模拟 MySQL 主从复制的协议,来实时捕获并解析主库(Master)的数据变更日志(Binlog)
2026-04-01 20:42:05
402
原创 高可用与扩展:主从复制、读写分离与分库分表
分库分表是架构演进的“核武器”,威力大但副作用也大(运维复杂、跨库查询难)。不到万不得已(单表 500w-1000w+),不要轻易使用。最后,送上金句:“分库分表是架构演进的‘核武器’,威力大但副作用也大(运维复杂、跨库查询难)。不到万不得已(单表 500w-1000w+),不要轻易使用。”
2026-04-01 20:41:50
341
原创 锁机制全景图:从行锁、间隙锁到死锁排查实战
锁是保护数据一致性的最后一道防线,但也是性能杀手。优秀的架构师懂得如何用‘索引’来缩小‘锁’的打击范围,用‘顺序’来避免死锁的发生。
2026-04-01 20:41:17
392
原创 SQL 性能调优:EXPLAIN 详解与慢查询优化案例
SQL 调优不是靠猜,是靠数据。EXPLAIN 是你的听诊器,通过 type 听心跳,通过 Extra 找病灶。索引 是你的高速公路,别让 ALL 把你拉回泥泞土路。覆盖索引 是你的VIP通道,能不走回头路(回表)就不走。最后,送上金句:“调优不是靠猜,是靠数据。EXPLAIN 是你的听诊器,通过分析执行计划,让每一条 SQL 都走在最短的路径上。”
2026-03-30 21:56:39
383
原创 MVCC 与事务隔离:MySQL 如何实现“读不阻塞写”?
MVCC不是真的复制了多份数据,而是利用Undo Log版本链 + Read View动态构建出的“历史视图”。Undo Log:存储历史版本,形成版本链。Read View:判断版本可见性,实现隔离性。隐藏字段:连接当前数据和历史版本。最后,送师金句:“MVCC不是真的复制了多份数据,而是利用Undo Log版本链 + Read View动态构建出的‘历史视图’。它是高并发下读写并行的核心秘密。”
2026-03-29 22:56:37
416
原创 B+树的胜利:为什么MySQL索引非它莫属?
B+树的胜利,是“磁盘I/O优化”的胜利。它用“矮胖”的结构减少了I/O次数。它用“链表”结构优化了范围查询。它用“聚簇”结构保证了数据的物理有序。最后,送上金句:“索引设计的本质是‘空间换时间’。B+树通过降低树的高度(矮胖),将随机I/O转化为顺序I/O,这是关系型数据库屹立不倒的基石。”
2026-03-29 09:30:22
335
原创 InnoDB的“身体结构”:页、Buffer Pool与Redo Log的底层奥秘
从底层带你了解InnoDB的伟大之处,在于它深刻地理解了计算机硬件的特性。它用Buffer Pool解决了内存与磁盘的速度差。它用Redo Log解决了随机写与顺序写的速度差。它用页结构解决了数据管理的粒度问题。 “MySQL的性能瓶颈通常在磁盘I/O。InnoDB的伟大之处在于用‘内存(Buffer Pool)’换‘磁盘速度’,用‘顺序写(Redo Log)’换‘随机写’。理解了这一点,你就理解了数据库性能优化的本质。”
2026-03-28 22:48:09
341
原创 生产环境的 AOP:性能损耗分析与异常处理最佳实践
在生产环境中,AOP 不仅仅是代码复用的技巧,更是系统稳定性的基石。性能上:相信 CGLIB,但警惕切面内的“重逻辑”。异常上:切面要能“吞”异常,也要能统一“吐”异常。事务上:永远记得配置 rollbackFor = Exception.class。监控上:开启 DEBUG 日志,让隐形的切面显形。最后,送上金句:“在生产环境中,AOP 不仅是功能工具,更是系统的‘黑匣子’和‘安全网’。合理的切面设计能让系统在出现故障时依然有据可查、有序降级。”
2026-03-28 17:13:31
397
原创 自定义注解 + AOP:打造企业级通用组件(日志、限流、幂等)
通过这三个案例,我们可以看到自定义注解 + AOP 的强大之处:零侵入:业务代码里只有 @OperLog、@Idempotent,干干净净。可复用:写一次切面,全公司 100 个微服务都能用。易维护:修改限流算法?改切面代码就行,不用动业务逻辑。最后,送上架构师金句:“优秀的架构师善于利用 AOP 将非业务逻辑封装成‘基础设施’。业务开发人员只需要关注核心逻辑(怎么赚钱),剩下的脏活累活(怎么记账、怎么安保),交给注解和切面。”现在,去给你的项目贴上“标记”,部署“安检员”吧!️
2026-03-27 21:43:38
432
原创 AOP 代理对象的诞生时刻:Bean 生命周期中的“夺舍”瞬间
理解 AOP 代理的诞生时刻,是掌握 Spring 精髓的关键一步。时机:通常在 postProcessAfterInitialization(初始化后),除非涉及循环依赖(提前到属性填充期)。本质:是替换,不是修饰。容器里最终存的是代理,原始对象被隐藏。铁律构造函数和 @PostConstruct中的自调用,永远无法触发 AOP。因为那时“替身”还没上场。最后,送上金句“AOP 代理是在 Bean 初始化完成后才生成的‘替身’。任何在‘出生’阶段(构造函数、
2026-03-27 21:29:11
340
原创 AOP 失效的 7 种死法与复活指南
“AOP 失效通常不是因为框架 bug,而是因为开发者误以为自己在和代理对象交互,实际上却直接操作了目标对象。理解‘代理对象’的存在感,是避坑的关键。”
2026-03-27 21:28:40
371
原创 JDK 动态代理 vs CGLIB:Spring 背后的“变脸”绝技
排查故障:当 AOP 不生效时,你能立刻反应过来:“是不是用了 JDK 代理但方法没在接口里?”或者“是不是手贱加了final关键字?架构设计:知道 CGLIB 的继承特性,你就不会在 Bean 里随意使用final类或方法。性能调优:在极端场景下,知道 CGLIB 是更优解。最后,送上架构师金句“理解 JDK 代理与 CGLIB 的区别,是理解 Spring AOP 局限性的关键。CGLIB 是通过继承实现的,所以它永远无法突破final的封印;
2026-03-26 21:46:31
375
ELK6.1.2,filebeat及es的常用head和ik插件
2018-04-03
Highcharts
2017-03-05
连接阿里云数据库RDS失败,想选40C币 没有那么多了,请大家帮帮忙,急
2018-06-16
springboot项目controller注入失败,空指针;单元测试没有问题
2018-06-15
service层判断返回值是否为空,空的话返回一个=null的model,不为空的话
2017-08-22
服务用jenkins构建之后注册不上dubbo,url访问500,重启tomca问题解决
2017-08-22
JAVA用SSH框架,Source not found for OrderService
2017-03-01
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅