言尽于此,完结
无论是一个初级的 coder,高级的程序员,还是顶级的系统架构师,应该都有深刻的领会到设计模式的重要性。
- 第一,设计模式能让专业人之间交流方便,如下:
程序员A:这里我用了XXX设计模式
程序员B:那我大致了解你程序的设计思路了
- 第二,易维护
项目经理:今天客户有这样一个需求…
程序员:明白了,这里我使用了XXX设计模式,所以改起来很快
- 第三,设计模式是编程经验的总结
程序员A:B,你怎么想到要这样去构建你的代码
程序员B:在我学习了XXX设计模式之后,好像自然而然就感觉这样写能避免一些问题
- 第四,学习设计模式并不是必须的
程序员A:B,你这段代码使用的是XXX设计模式对吗?
程序员B:不好意思,我没有学习过设计模式,但是我的经验告诉我是这样写的
从设计思想解读开源框架,一步一步到Spring、Spring5、SpringMVC、MyBatis等源码解读,我都已收集整理全套,篇幅有限,这块只是详细的解说了23种设计模式,整理的文件如下图一览无余!
搜集费时费力,能看到此处的都是真爱!
// 构造方法
public Byte(byte value) {
this.value = value;
}
// 构造方法,默认传进来的数值是十进制数,如果不是,则抛出异常
public Byte(String s) throws NumberFormatException {
this.value = parseByte(s, 10);
}
二: 缓存静态内部类
// Byte的取值的范围,使用静态内部类缓存起来,方便多次使用,取值范围: -128 - 127
private static class ByteCache {
private ByteCache(){}
static final Byte cache[] = new Byte[-(-128) + 127 + 1];
static {
// 从-128到127逐个添加到缓存数组中
for(int i = 0; i < cache.length; i++)
cache[i] = new Byte((byte)(i - 128));
}
}
三: toString(byte b)方法
// 将byte转换成指定进制位的String值
public static String toString(byte b) {
return Integer.toString((int)b, 10);
}
四: valueOf(byte b)方法
// 将基础byte类型转成包装类型Byte
public static Byte valueOf(byte b) {
final int offset = 128;
// 偏移量128,防止传入值为负数时下标为负数
return ByteCache.cache[(int)b + offset];
}
五: parseByte(String s, int radix)方法
// 将指定的字符串转成一个整数数值,前提是参数二的值应该和参数:
// 参数一: 需要转换的值
// 参数二: 参数一值的对应进制数:
// 例子: 参数一:000000001 参数二: 2
// 例子: 参数一:123 参数二: 10
public static byte parseByte(String s, int radix)
throws NumberFormatException {
int i = Integer.parseInt(s, radix);
if (i < MIN_VALUE || i > MAX_VALUE)
throw new NumberFormatException(
“Value out of range. Value:”" + s + “” Radix:" + radix);
return (byte)i;
}
六: parseByte(String s)方法
// 将一个字符串值转换成一个byte类型的值,默认进制是10进制
public static byte parseByte(String s) throws NumberFormatException {
return parseByte(s, 10);
}
七: valueOf(String s, int radix)方法
// 将一个进制为:radix类型的,字符串的byte值,转换成对应的Byte类型
public static Byte valueOf(String s, int radix)
throws NumberFormatException {
return valueOf(parseByte(s, radix));
}
八: valueOf(String s)方法
// 将一个十进制的字符串数值转换成Byte类型
public static Byte valueOf(String s) throws NumberFormatException {
return valueOf(s, 10);
}
九: decode(String nm)方法
// 将一个字符串数值解析成Byte类型的值,不需要指定这个数值的进制数,方法中会自动判断
// 可以是整数或者负数
public static Byte decode(String nm) throws NumberFormatException {
int i = Integer.decode(nm);
if (i < MIN_VALUE || i > MAX_VALUE)
throw new NumberFormatException(
"Value " + i + " out of range from input " + nm);
return valueOf((byte)i);
}
十: hashCode()和equals(Object obj)方法
// 获取Byte类型值的hashCode值
@Override
public int hashCode() {
return Byte.hashCode(value);
}
// 比较obj和当前Byte对象的值
// 如果比较值的类型是Byte,则比较两者的值,相等则返回true,否则返回false
// 如果比较的对象不是Byte类型,则直接返回false
public boolean equals(Object obj) {
if (obj instanceof Byte) {
return value == ((Byte)obj).byteValue();
}
return false;
}
十一: toUnsignedInt(byte x)方法
// 无符号类型就是不表示负数,只表示正数的数据类型
// 将byte类型数值转换成无符号int类型的数值
public static int toUnsignedInt(byte x) {
return ((int) x) & 0xff;
}
十二:toUnsignedLong(byte x)方法
// 无符号类型就是不表示负数,只表示正数的数据类型
// 将byte类型数值转换成无符号long类型的数值
public static long toUnsignedLong(byte x) {
return ((long) x) & 0xffL;
}
十三:Byte类型转换成其他基本数据类型的方法
Docker步步实践
目录文档:
①Docker简介
②基本概念
③安装Docker
④使用镜像:
⑤操作容器:
⑥访问仓库:
⑦数据管理:
⑧使用网络:
⑨高级网络配置:
⑩安全:
⑪底层实现:
⑫其他项目:
4UbsJ3c0-1715597175799)]
⑩安全:
[外链图片转存中…(img-ASXU9GHO-1715597175799)]
⑪底层实现:
[外链图片转存中…(img-MAfR1dQU-1715597175800)]
⑫其他项目:
[外链图片转存中…(img-RIh3vHdX-1715597175800)]