- 博客(803)
- 资源 (2)
- 问答 (8)
- 收藏
- 关注
原创 redis原理深入解析之看完这篇还需要努力
len:4 alloc:4 flags:1 数组 \0sds可追加:动态扩容 减少内存分配次数 二进制安全如新字符串1m 新空间为扩展后字符串长度+1m+1 内存预分配。
2024-03-07 06:16:59
1056
原创 jmeter压测
h3>调用哪个服务的哪个方法这里设置线程相关jmeter强大到很强大 hh~可设置一下 上面的 参数${}对应的有后置HTTP请求数据库设置
2023-10-17 18:58:47
313
原创 集成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
3376
原创 如何写出气定神闲的代码——泛型
使用了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
863
原创 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
989
5
原创 JIT
JIT,又是一块带肉的骨头;just-in-time compilation,运行时编译,吭哧吭哧写了半天的bug不能到最后还让人来做吧?“侬脑子瓦特了”——当然是交给机器做,javac把java源文件翻译成class文件(字节码组成),jvm加载这些文件逐条取出字节码并执行,这就是解释执行了!当然还可以重新编译优化字节码以生成机器码,CPU直接执行,这样效率更高,这里有java如此受欢迎的原因,这里点破不说破,然后怎么让机器去执行呐?当然是告诉它了:要有源代码或者字节码到机器码的转换过程,...
2020-10-18 12:15:43
331
原创 对象一定分配在堆上吗?
读过之前半文章的小哥哥们肯定都知道,宝宝我最近入坑了Golang,当然这不是自愿的也说不上胁迫,反正就入坑了,没想到21世纪的C语言也有了堆和栈,随之而来的战利品是逃逸分析,自然这只是其中之一,其他的离题比较远,写文章最主要的是什么?不被催稿(奋斗状)!这个我有生之年是做不到了 官方回答逃逸分析:一种确定指针动态范围的方法,就是在程序的哪些地方可访问到这些指针,具体涉及到指针分析和形状分析,是不是不好理解,在次要特别鸣谢公司让贫下中农的我可以”科学上网“;再直白一些:逃逸分析确定某个指针可...
2020-10-13 22:07:41
617
1
原创 springboot自动装配
装载谁@SpringBootApplication @SpringBootConfiguration,@EnableAutoConfiguration,@ComponentScan@EnableAutoConfiguration开启自动装配 在classpath下找到all配置的bean进行装配,据若干conditional定制规则初始化@Import(EnableAutoConfigurationImportSelector.class)1.5中过时,查看父类AutoC...
2020-09-02 23:29:55
219
原创 DDD Domain Drive Design
源自圣杰https://www.cnblogs.com/sheng-jie/p/6931646.htmlDDD理论系列文章DDD综合软件系统分析和设计的面向对象建模的方法通用语言:通过团队交流达成共识 能简单清晰准确 传递业务规则的语言(文字 图片)《实现领域驱动设计》书中有一个简单的例子(P238)系统必须对User进行认证,并且只有当Tenant(租户)处于激活状态时才能对...
2019-09-05 21:14:15
467
原创 ShardingSphere下
使用规范不支持:不支持case when,having,union可解析至第一个含表的子查询,在下层嵌套再次找到子查询抛错子查询不支持聚合函数,不支持含shema的SQL:shardingsphere对sql的访问都是在同一个逻辑schema上分页完全支持MySQL、PostgreSQL和Oracle的分页查询,SQLServer由于分页查询较为复杂,仅部分支持性能编...
2019-08-27 15:01:58
2646
1
原创 开源监控:Prometheus
开源的系统监控及告警工具,适用于以服务器为中心,高动态 面向服务架构 的监控;架构图:prometheus server:核心,据配置采集数据,服务发现,数据存储prometheus targets:探针exporter提供采集接口,或应用本身提供的支持promethenus数据模型采集接口pushgateway:为部分push场景提供插件,监控数据先推送到push...
2019-05-29 22:54:16
898
1
转载 kafka入坑
高级消费者提供消费消息的方法而屏蔽底层细节;高级消费者在zk特点分区存储最后的偏离(kafka启动时准备完毕),全局kafka集群消费群体,任何老逻辑的消费者应该被关闭然后运行新的代码,当一个新的进程拥有相同的消费者群的名字,kafka新增进程的线程来消费topic且引发“重新平衡”:分配现有分区到all可用线程如果你提供比在topic分区多的线程数量,一些线程将永远不会看到消息。 如果...
2019-03-19 22:04:26
415
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
3947
原创 ClickHouse 来一篇
是时候来见证一下真正的面向列的DBMS了!!!真正的DBMS没有任何垃圾值,数据紧凑存储(无需存数值长度):定长数值clickhouse容许在运行时可建表建库,加载数据进行查询,不需要重新配置 重启服务器快:不是一般的飞快支持事务,无隔离级别:ACID是没戏了,so数据可能不一致 我们CK是分析性数据库嘛 引擎:合并树MergeTree系列通主键字典排序,主键可以是列...
2019-03-03 10:30:46
582
原创 Elasticsearch 数据处理常见问题
ES 是"写时固化"的系统——分词器、mapping 在索引创建时就已确定,后续变更必须通过重建索引实现。:假设有 5 个分片,查第 10000 条数据,每个分片都要查出前 10010 条返回给协调节点,协调节点合并 50050 条后丢弃前 10000 条。:ES 更新文档时,会标记旧文档为已删除,然后为新文档创建新版本并索引。:Lucene 的 Segment 文件是不可变的,删除操作只是在 Segment 里标记"删除位",并未真正从物理磁盘抹掉数据。每天/每周跑一批,负载可控,失败可重试单批次。
2026-06-02 23:16:58
359
原创 数据同步的几种姿势
小项目:同步双写,简单粗暴中型项目:MQ 异步双写,解耦可靠大型项目:Canal 监听 Binlog,零侵入、高实时离线分析:Logstash 定时拉取,零代码改造数据迁移:DataX 批量同步,搬家式处理。
2026-06-02 22:55:52
191
原创 ThreadLocal之微服务链路追踪
问题表现解决方案异步线程拿不到 traceId日志链路断裂,线上无法排查ITL → TTL + 包装线程池线程复用读到上一个请求的数据用户A看到用户B的数据(越权)finally 中必须 remove()CompletableFuture 链路中断中间某个阶段拿不到上下文每个阶段用 TtlXXX.get() 包装老项目改造成本高到处都要改线程池代码加-javaagent参数,零侵入。
2026-06-01 17:19:42
270
原创 Threadlocal深度领悟
在 Java 中,引用就是"指向一个对象的指针"。你写obj就是一个引用,它指向堆内存中的那个 Object 实例。引用类型强度GC 的态度强引用(Strong Reference)最强只要还有强引用指着你,就绝不回收软引用(Soft Reference)较弱内存不足时才回收弱引用(Weak Reference)更弱下次 GC 时,不管内存够不够,都回收虚引用(Phantom Reference)最弱随时可能回收,几乎不用。
2026-06-01 16:20:52
273
原创 AI传动系统与燃料
如果说第一层的大模型是那个“全能博士”,那么框架与数据层就是“传动系统”与“燃料”。为什么这么说呢?因为那个云端的“博士”虽然博学,但他有两个致命弱点:框架与数据层(如 LangChain 和 RAG 技术)的存在,就是为了给这个博士“喂料”,并“立规矩”。我们可以从以下三个维度来拆解: 2. 链(Chains):把步骤串起来 以前你调用 API 是一次性的(问 -> 答)。现在有了业务逻辑,你需要把多个动作串成一条线。3. 工具(Tools):给模型的手和脚 你需要把公司内部的 AP
2026-05-24 11:32:24
326
原创 云原生架构两大“黑科技”——Sidecar和 Serverless
想象你骑着一辆摩托车(你的主业务容器),旁边挂了一个挎斗(Sidecar 容器)。这个挎斗里坐着一个“全能保镖”。从此以后,你只管骑车(处理业务逻辑),所有的对外联络、挡风遮雨、导航探路(网络通信、熔断限流、安全加密)全由这个保镖代劳。在 Service Mesh(服务网格,如 Istio)中,这个保镖通常就是大名鼎鼎的Envoy代理。传统的云服务器(ECS/EC2)就像买房:不管住不住,你都得按月交房租(为闲置资源付费),水管坏了还得自己修(运维操作系统)。Serverless 就像滴滴打车。
2026-05-13 21:13:02
394
原创 码头调度主任——Kubernetes
想象你要开一家连锁餐厅K8s 组件餐厅角色职责底层黑话Pod后厨工位厨师(容器)干活的地方,几个厨师挤一个工位共享调料(存储/网络)。Namespace 共享Deployment大堂经理确保任何时候都有 5 个工位有人在干活。有人跑路立马招新的。控制器循环Service点餐台/总机顾客只认点餐台。不管后面换了哪个厨师,菜都能端上来。iptables/IPVS 转发ConfigMap菜单/配方表挂在墙上的菜谱。想换口味直接换张纸,不用把厨师炒了。挂载卷/环境变量。
2026-05-13 20:58:48
393
原创 Docker “超级大厨”
在传统虚拟机时代,你要部署一个 App,得先装个几 GB 的操作系统,慢得像蜗牛。Docker 说:“太蠢了!咱们用千层蛋糕的思路。底层 (Base Image):铺一层 Ubuntu 系统(这是地基)。中间层 (Layer 2):撒一层 Python 依赖包(这是馅料)。顶层 (Layer 3):放你的代码app.py(这是樱桃)。Docker 有个超能力叫“写时复制” (Copy-on-Write, CoW)。当你运行这个镜像生成容器时,Docker 不会真的去复制那几百兆的底层蛋糕。
2026-05-10 16:41:12
421
原创 领域驱动设计(DDD)“老中医”治理订单
接收请求,参数校验。业务逻辑的大本营,各种if-else都在这里。纯粹的数据载体,只有,没有任何行为。这就好比一个公司,所有的决策都由一个庞大的“服务中心”做出,底下的员工(实体对象)全是只会听指令干活的木偶,没有任何主观能动性。这种模型被称为贫血模型 (Anemic Model)。它的致命弱点是:本该属于Order的“取消”逻辑,却散落在里,导致代码难以理解和维护。对象的内部状态可以被随意修改,业务规则形同虚设。
2026-05-08 20:26:48
343
原创 异地多活:单元化架构设计
单元化的核心思想是将一个庞大的、完整的业务系统,按照某个固定的维度(如用户ID)拆分成多个独立、对等、能够自给自足的业务单元(Cell)。处理所有业务逻辑。包括数据库、缓存、消息队列等。最关键的是,每个单元只负责一部分特定用户的全链路业务。这些用户的请求从接入到服务处理,再到数据读写,全部在同一个单元内部完成闭环,从根本上杜绝了跨地域的远程调用,从而解决了网络延迟问题。
2026-04-30 23:14:16
402
原创 分布式系统里的“交通警察”——限流
单机简单限流:首选Guava RateLimiter(令牌桶)。它开箱即用,非阻塞,性能极高,适合保护单机资源(如防止本地线程池被打满)。微服务复杂治理:首选Sentinel(滑动窗口)。它不仅能限流,还能熔断、降级、系统自适应保护,配合控制台简直是微服务治理的神器。网关层流量整形:如果是为了绝对保护下游数据库,可以在 Nginx 或网关层配置漏桶算法,强行把流量削平后再放行。记住,限流是系统稳定性的最后一道防线。在设计时,永远要假设流量会像洪水一样涌来,而你的算法就是那道坚不可摧的大坝。
2026-04-29 23:13:03
383
原创 分布式系统里的“快递中转站”——消息队列(MQ)
获取知识就是一个反复的过程,说正事之前我的一个朋友很好奇一个事情,真的是他好奇:就是……为什么……为什么有人不需要上班…………还能出去玩呢😭🥹😭别把 MQ 仅仅当成一个发通知的工具,那是大材小用。在架构师眼里,MQ 是你系统的。没有它,你的微服务架构就像一坨纠缠不清的意大利面,牵一发而动全身。今天我们就深入底层,看看 Kafka 和 RocketMQ 这两位“顶流”到底是怎么工作的,以及当它们“闹脾气”(积压、丢失、重复)时,你该怎么救火。
2026-04-28 20:35:13
396
原创 系统里的“特种部队”——缓存
缓存只是缓存,数据库才是真理。你可以容忍缓存短暂的不一致(比如几百毫秒),但不能容忍数据的永久丢失。设计架构时,永远要给缓存加个 TTL(过期时间),这是你最后的救命稻草。
2026-04-27 23:17:23
403
原创 微服务架构的“看门大爷”兼“前台接待”
总结API 网关不是简单的转发代理,它是微服务架构的中央控制塔。统一入口:隐藏内部服务拓扑,前端只认网关地址。鉴权:在网关层把非法请求挡在门外,保护脆弱的后端微服务。限流熔断:防止突发流量把系统打垮,留得青山在,不怕没柴烧。下次写网关代码时,记得把自己当成那个手握生杀大权的“看门大爷”,严谨一点,你的微服务才能活得久一点。
2026-04-26 22:28:11
327
原创 RPC 原理:Dubbo为了偷懒而存在的中间商
Dubbo 之所以牛,不是因为它发明了新的网络协议,而是因为它把这些复杂的网络通信(Netty)、对象转换(Serialization)、服务发现(Registry) 封装得滴水不漏,让你产生了一种“分布式系统其实很简单”的错觉。动态代理 解决了“怎么调”的问题(透明化)。序列化 解决了“传什么”的问题(标准化)。Netty 解决了“怎么快”的问题(高性能)。
2026-04-23 18:54:46
500
2
原创 OSI 七层模型之“跨国诈骗集团”深度讲解
上层(7-5):管的是业务逻辑(怎么说,说什么)。下层(4-1):管的是数据传输(怎么运,运到哪)。为什么分层?为了解耦。如果物理层从铜线换成了光纤,上面的应用层根本不用改代码,照样能刷抖音。这就是分层的魅力。
2026-04-18 17:56:01
434
原创 进程状态转换
上下文(Context),本质上就是CPU 寄存器里存的数据。想象你在玩单机游戏(进程A),突然妈妈叫你去洗碗(发生中断/调度)。你现在的血量、蓝量(通用寄存器你站在地图的哪个坐标(程序计数器 PC你的背包里有什么(栈指针 SP甚至你的浮点运算状态(浮点寄存器上下文切换把当前寄存器里的值保存到内存把内存里的值恢复到寄存器架构师视角的总结R 态不代表高性能,如果 R 态进程过多且 CPU 使用率低,说明发生了锁竞争(都在抢 CPU 时间片,导致上下文切换频繁)。D 态是运维的噩梦。
2026-04-15 23:00:45
372
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订阅