LogoLDQ's Blog

LDQ's Blog

修改 Seata 源码使其支持 IPV6 地址
发表于2026-07-18
问题:在使用 Seata v1.6.1 时,客户端通过 IPV6 only 的域名访问 seata-server 时,会把解析到的 IPV6 地址简单粗暴地从第一个 : 处分割,前半部分作为 IP,后半部分作为端口号,这在 IPV4 的情况下能够正常工作,但是 IPV6 地址是冒分十六进制,其中有多个冒号,这种分割的方法会把 IPV6 地址从第一个冒号处分为两半,导致后续创建连接时会报错。 解决方法:从 Github 下载 Seata v1.6.1 源码,修改两处代码。 common/src/main/java/io/seata/common/util/NetUtil.java 81行 1234567891011121314public static InetSocketAddress toInetSocketAddress(String address) { int i = address.indexOf(':'); i = address.lastIndexOf(':'); // 获取最后一个冒号的位置,而不是...
ConcurrentHashMap 手撕源码
发表于2026-07-02
1. 成员变量 1234567891011121314151617// ----------------- 常量 -------------------// 默认的 table 初始容量private static final int DEFAULT_CAPACITY = 16;// table 容量上限 -> 2 的 30 次方private static final int MAXIMUM_CAPACITY = 1 << 30;// 默认的负载因子private static final float LOAD_FACTOR = 0.75f;// 默认的并发度(并发度在 JDK 1.7 中用于控制分段锁的数量;JDK 1.8 中无实际意义,指定并发度可以约束预期容量)private static final int DEFAULT_CONCURRENCY_LEVEL = 16;// resizeStamp 位数private static int RESIZE_STAMP_BITS = 16;// resizeStamp 在 sizeCtl 中的偏移量pr...
JDK 8 中 HashMap 和 ConcurrentHashMap 构造器的差异
发表于2026-07-02
在指定 initialCapacity 创建 HashMap 时,需要程序员手动计算出存入预期数量后不触发扩容的容量,即 size / loadFactor + 1,构造器会自动向上取最接近的一个 2 的整数幂 作为容器的初始容量,以保证计算数组下标时可以使用 hash & (n - 1),相较于直接取余运算速度更快。 在指定 initialCapacity 创建 ConcurrentHashMap 时,只需传入预期存入数量,构造器内部会自动计算不触发扩容的最小 2 的整数幂作为容器的初始容量。 JDK 19 开始的版本提供了 HashMap.newHashMap(size) 静态方法,可以像 ConcurrentHashMap 构造器一样自动创建合适容量的容器。
解决 DNS 泄露
发表于2026-06-27
解决 TUN 虚拟网卡代理下出现的 DNS 泄露问题1. 关闭严格路由,设置 DNS 劫持:any:53。2. 设置回退域名服务器(fallback):1234567fallback: - 'https://1.1.1.1/dns-query' - 'https://8.8.8.8/dns-query' - 'https://[2606:4700:4700::1111]/dns-query' - 'https://[2606:4700:4700::1001]/dns-query' - 'https://[2001:4860:4860::8888]/dns-query' - 'https://[2001:4860:4860::8844]/dns-query' 3. 防止 Windows 系统向外发起DNS查询 1. 打开组策略,计算机配置 -> 管理模板 -> 网络 -> DNS 客户端,双击 禁用智能多宿主名称解析,勾选已启用,确...
Cloudflare Worker 和 Page 项目绑定优选 IP 域名
发表于2026-06-23
1. 创建自定义主机名 创建一个自定义主机名,主机名为想要作为访问域名的子域名,如 a.example.com,回源域名随便创建一个当前域的子域名,如 b.example.com,验证方式选择 Http 验证。 创建一个 a.example.com 的 CNAME DNS 记录,内容为能解析出优选 IP 的域名,如 cloudflare.182682.xyz,关闭小黄云。 创建一个 b.example.com 的 AAAA DNS 记录,内容为 100::,开启小黄云。 (回源域名 b.example.com 可以复用,不用创建多个)2. 负责转发的 Worker创建中间 Worker Page 项目的中间 Worker 123456789101112131415export default { async fetch(request, env, ctx) { const url = new URL(request.url); url.hostname = "xxx.pages.dev"; const newHead...
Hello World
发表于2026-06-23
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub. Quick StartCreate a new post1$ hexo new "My New Post" More info: Writing Run server1$ hexo server More info: Server Generate static files1$ hexo generate More info: Generating Deploy to remote sites1$ hexo deploy More info: Deployment
avatar
LDQ
文章
6
标签
8
分类
0
Follow Me
公告
Hello World!
最新文章
修改 Seata 源码使其支持 IPV6 地址2026-07-18
ConcurrentHashMap 手撕源码2026-07-02
JDK 8 中 HashMap 和 ConcurrentHashMap 构造器的差异2026-07-02
解决 DNS 泄露2026-06-27
Cloudflare Worker 和 Page 项目绑定优选 IP 域名2026-06-23
标签
Security ConcurrentHashMap Seata IPV6 Java DNS Cloudflare Privacy
归档
  • 七月 2026 3
  • 六月 2026 3
网站信息
文章数目 :
6
本站访客数 :
本站总浏览量 :
最后更新时间 :
© 2026 By LDQ