Java 双亲委派机制 Java 双亲委派机制 一句话总结:自己不加载,交给父级加载器加载;打破双亲委派,就是自己去加载,继承 ClassLoder 并重写 loadClass 方法。 Java 类声明周期 Java 源文件到最终运行需要经过编译和加载两个阶段。 编译:Java 编译器将源代码编译为 .class(Java 字节码)文件 加载:将字节码文件加载到 JVM 内存中,得到一个 Class 对象(反射 2024-11-25 #Java #JVM #双亲委派机制 #类加载器
秒杀系统设计重点 秒杀系统设计重点 系统特点 1. 瞬时高并发 仅在秒杀时间点的前后几分钟,流量突增。 2. 读多写少 大量用户抢少量商品,大部分用户的访问不与修改库存的操作关联。 高性能 1. 动静分离 将动态页面改造成静态页面,可以将静态数据放在CDN中进行缓存。 2. 热点操作优化 刷新、下单、添加购物车一类的操作,是用户的行为,在秒杀时间点大量发生,可以做一些限制保护。如用户频繁刷新页面时提示 2024-11-25 #消息队列 #系统设计 #秒杀系统 #高并发 #缓存
使用 GDB 或 Delve 对已经运行起来的 Go 程序进行远程调试 使用 GDB 或 Delve 对已经运行起来的 Go 程序进行远程调试 背景 Java 程序可以很方便地通过 jdwp 参数指定一个对外端口进行远程调试,如 123java \-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=50055 \-jar remote-debug-0.0.1-SNAPSHOT.jar & 2024-11-18 #Golang #GDB #Delve #调试 #远程调试 #Goland
Golang 不常被注意的特性 Golang 不常被注意的特性 阅读项目https://github.com/astaxie/build-web-application-with-golang进行的查漏补缺。 1. rune和byte类型 rune和byte是 go 内置的两种类型别名。其中rune是int32的别称,byte是uint8的别称。 在处理中文时,使用rune可以正确计算字符串长度(截取字符串也是这样): 12 2024-11-14 #Golang #编程语言
WSL2 使用 Clash for Windows 代理连接 WSL2 使用 Clash for Windows 代理连接 环境 Window版本:23H2 (可使用winver查看) 方法 1. Clash 客户端设置 打开Allow LAN开关,并记下端口号,默认为7890 2. WSL配置 编辑C:\Users\<UserName>\.wslconfig(如果没有则创建一个),在其中添加以下内容关闭DNS通道。 12[wsl2]d 2024-11-14 #WSL #WSL2 #Clash #代理 #网络
WSL2 安装 Defects4j 环境 虚拟环境:Win11 23H2 + WSL2 操作系统:Ubutnu(Linux DESKTOP-OC45MQL 5.10.16.3-microsoft-standard-WSL2 #1 SMP Fri Apr 2 22:23:49 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux) 外部依赖 1234apt install subversion -y # 2024-11-14 #WSL #WSL2 #Defects4j #数据集
正则表达式和 shell 通配符展开 问题背景 遇到这样一个语句: -E参数表示为grep启用扩展的正则表达式ere,但*是一个限定符,表示重复前面一个字符任意次,而语句中*前面没有任何字符,因此这是一个错误的表达式。 问题在于:这样的表达式能够正确被grep解析: 背景知识 shell 通配符展开 借通配符展开问题描述 shell 的整个执行流程_shell 通配 展开-CSDN博客 shell 中使用通配符,如*,?,它 2024-09-14 #正则表达式 #shell #通配符
Remote Execution API (go version) 解析 基于编译出的的go文件进行说明 远程执行的目的是通过两个独立但相关的概念:远程缓存和远程执行来加快构建过程。远程缓存允许用户共享构建输出,而远程执行则允许在远程机器集群上运行操作,这些机器集群可能比用户本地使用的机器集群功能更强大(或配置不同)。 远程执行应用程序接口(REAPI)描述了一个 gRPC + 协议缓冲区接口,为远程缓存和执行提供了三种主要服务: 内容可寻址存储(ContentA 2024-08-15 #buildfarm #remote execution api #grpc #构建系统
Java 代码编译为环境无关的可执行文件 问题背景 在分布式构建系统项目的研究过程中,为了实现任务能够在用户指定的自定义镜像中运行的目的,采用 sidecar 模式,用户自定义镜像作为 sidecar 容器,运行一个执行器程序,与 buildfarm worker 通过某种机制通信,执行发来的指令。 由于 buildfarm 是 java 程序,因此 sidecar 中的执行器采用 Java RMI 机制进行通信。 从易用性出发,用户需 2024-08-15 #编译 #java
Logstream API (go version) 解析 结构体 日志流 12345678910111213141516171819202122232425262728293031// 一个日志的句柄(有序的字节序列)。type LogStream struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownF 2024-08-15 #remote execution api #grpc #构建系统