[设计模式] 浅谈依赖倒置原则
依赖倒置原则 原则说明: 依赖倒置原则(Dependency Inversion Principle,DIP),高层模块不应该依赖于低层模块,两者都应该依赖于抽象;抽象不应该依赖于细节,细节应该依赖于抽象。 为什么要遵守该原则 通过依赖抽象(接口或抽象类)可以用来降低类之间的耦合度,提高系统的可扩展性和可维护性。 用一个简单的例子说明 // 抽象类或接口 public interface Reader { String read(); } // 低层模块 public class FileReader implements Reader...
[设计模式] 浅谈里氏替换原则
里氏替换原则 原则说明: 里氏替换原则(Liskov Substitution principle)是对子类型的特别定义,派生类(子类)对象可以在程序中代替其基类(超类)对象。 为什么要遵守该原则 违反里氏替换原则会导致代码的复杂性增加,可读性降低,同时也会增加代码修改的难度。当一个子类不能完全替代其父类时,这就增加了出错的可能性。 按我自己遇到的场景去理解,我调用了一个计算面积的方法,而子类无法完全替代超类,导致一个Bug的产生。下面就是一个简单的案例。 用一个简单的例子说明 假定我们有两个类,一个是矩形,一个是正方形继承矩形。 pub...
[设计模式] 浅谈单一职责原则
单一职责原则 原则说明: 单一职责原则(Single responsibility principle)规定每个类都应该有一个单一的功能,并且该功能应该由这个类完全封装起来。 为什么要遵守该原则 违反单一职责原则会导致代码的复杂性增加,可读性降低,同时也会增加代码修改的难度。当一个类承担的职责过多时,这个类的复杂性就会增加,这就增加了出错的可能性。 用一个简单的例子说明 假定我们要输出一个日志,定义了一个日志类。 public class Log { public void getLog() { // 获取Log ...
[C++] 如何使用 Crypto++
本文使用环境 系统:windows 11 开发环境: vs2010 Crypto++ 功能介绍 Crypto++ 库是一个用c++ 编写的免费的密码类库,包括密码,消息认证代码,单向哈希函数,公钥密码系统,密钥协议方案和压缩压缩。 下载 官方下载地址 编译工程 下载解压后是一个工程目录,打开cryptest.sln工程(本文介绍静态库的编译和使用) | 工程名 | 说明 | | --- | --- | | cryptdll | 生成cryptopp.dll动态库 | | dlltest...
[C++] 如何使用libcurl.lib
本文使用环境 系统:windows 11 开发环境: vs2010 libcurl库的功能 libcurl主要功能就是用不同的协议连接和沟通不同的服务器~也就是相当封装了的sockPHP 支持libcurl(允许你用不同的协议连接和沟通不同的服务器)。 libcurl当前支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。 libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传(当然你也可以使用PHP的ftp扩展), HTTP基本表单上传,代理,c...
[Java]边界类型和静态字段访问
在 Java 的泛型中,边界类型是用来限制泛型参数的类型范围的。 首先,我们定义两个类,它们都有一个静态字段 public class Parent { public static final String FIELD = "Parent"; } public class Child extends Parent { public static final String FIELD = "Child"; } 然后,我们定义一个泛型类,它尝试访问泛型参数的静态字段: public class Container<T exten...
[CMD]给Ping加上时间信息
> 前言:最近更新1000M宽带,把光猫换光猫棒,实测一下网络的稳定性。记录一下ping的命令行。 1. 先给ping命令加上时间。(用PowerShell) ```cmd ping.exe -t www.baidu.com | Foreach{"{0} - {1}" -f (Get-Date),$_} ``` 2. 随着时间边长,早期的就被覆盖了,然后在加个保存到文件的命令。 ```cmd ping.exe -t www.baidu.com | Foreach{"{0} - {1}" -f (Get-Date),$_} >> d:/ping.txt ```
[Java]RetryTemplate重试机制工具
基于 RetryTemplate,封装为工具包使用 RetryUtils package com.common.utils; import com.common.enums.RetryTypeEnum; import lombok.SneakyThrows; import org.springframework.retry.RecoveryCallback; import org.springframework.retry.RetryCallback; import org.springframework.retry.RetryState; import o...
[Java]Redis分布式锁
RedisLock.java package com.bf.form.common.aspect; import org.springframework.core.Ordered; import org.springframework.core.annotation.Order; import java.lang.annotation.*; /** @Author: hyakutake @Date: 2022/05/23 10:00 @Description: **/ @Documented @Target({ElementType.METHO...
[Java]POI-工具类
前言:Java 中操作 Excel 的工具类 - 基于 POI 封装 ExcelUtils.java import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.poi.hssf.usermodel.*; import org.apache.poi.hssf.util.HSSFColor; import org.apache.poi.ss.usermodel.*; impo...