hang.li Blog

「离开世界之前 一切都是过程」

ArrayList常见方法解读(源码,以及对内存使用,gc的影响)

扩容方法 ensureCapacity, 普通扩容类似只是截取了此方法中的5,6,7步。 MAX_ARRAY_SIZE = Integer.MAX_VALUE-8; Integer.MAX_VALUE = 0x7fffffff; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 /** * 对eleme...

设计模式(二) 适配器模式

业务场景 制作一个发送短信的接口, 注册, 重置密码方法都要使用 系统对接的短信平台有好多,阿里,腾讯,华为 每个平台都有自己的sdk可以使用 短信大致可分为几类如: 验证码短信,通知类短信 UML类图 调用者只依赖SmsService接口(组合关系),当有平台的sdk有变化或者增加短信平台时,可避免大量修改调用者代码 代码 各个适配器中...

设计模式(三) 策略模式

借用设计模式(二)中的案例 问题分析 在Demo中部分代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 /** * 重置密码方法 */ public void resetPassword() { String smsType = "huawei"; s...

设计模式(四) 模板模式

借用设计模式(二)中的案例 问题分析 拿AliSmsAdapter举例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 public class AliSmsAdapter implements SmsService { ...

设计模式(一) 单例

饿汉式 优点: 不用考虑多线程问题,利用clinit机制实现单例对象 缺点:类加载时,即使用不到当前对象也要创建对象,占用内存 1 2 3 4 5 6 7 8 9 10 11 12 13 /** * 饿汉式 * 私有化静态空参构造器 * 初始化静态变量 * 添加getInstance方法 */ public class SingleTon { private ...

tcp

关键字说明 SYN:携带这个标志的包表示正在发起连接请求。因为连接是双向的,所以建立连接时,双方都要发一个SYN。 FIN:携带这个标志的包表示正在请求终止连接。因为连接是双向的,所以彻底关闭一个连接时,双方都要发一个FIN。 RST:用于重置一个混乱的连接,或者拒绝一个无效的请求。 Seq:当前报文开始的序号 Len:当前报文长度 ACK:确认号。确认目标报文的S...

docker

kubeadm方式 安装 runtime(docker) 检查k8s与docker匹配的版本 kubernates的github找到对应的更新日志,其中的dependencies中docker相关,给出的是docker的 tagId k8s 1.20.* 可以兼容19.03.11 提前准备 ``` 关闭防火墙 systemctl stop fir...

docker

使用常见问题 容器内时区问题 docker run 1 docker run -v /etc/localtime:/etc/localtime:ro xxxx docker-compose 1 2 volume: - /etc/localtime:/etc/localtime:ro 清理Docker系统中的无用数据 1 docker system prune --volume...

怎么快速构建spring源码

github加速 使用gitee克隆github中的仓库,然后使用gitee克隆(不推荐, 如果需要和github保持一致需要一直复制) 下载油猴插件, 安装链接脚本, url spring-framework 克隆代码到本地, github gradle可以指定gradle版本编译,最好下载源工程指定的版本 可修改maven仓库,找到目录下settings.g...

怎么优雅的处理跨域问题

1 2 3 4 5 6 7 8 9 10 11 12 @Bean public CorsFilter corsFilter() { CorsConfiguration config = new CorsConfiguration(); config.setAllowCredentials(true); config.addAll...