Kevin's Blog

Coding Time

常用的字符的转义

字符 十六进制 转义
空格 (space) 0x20 %20
叹号 ! 0x21 %21
双引号 0x22 %22
井号 # 0x23 %23
美元符 $ 0x24 %24
百分号 % 0x25 %25
和号 & 0x26 %26
闭单引号 0x27 %27
开括号 ( 0x28 %28
闭括号 ) 0x29 %29
星号 * 0x2A %2A
加号 + 0x2B %2B
逗号 , 0x2C %2C
减号/破折号 - 0x2D %2D
斜杠 / 0x2F %2F
冒号 : 0x3A %3A
分号 ; 0x3B %3B
小于 < 0x3C %3C
等号 = 0x3D %3D
大于 > 0x3E %3E
问号 ? 0x3F %3F
电子邮件符号 @ 0x40 %40
开方括号 [ 0x5B %5B
反斜杠 \ 0x5C %5C
闭方括号 ] 0x5D %5D
脱字符 ^ 0x5E %5E
下划线 _ 0x5F %5F
开花括号 { 0x7B %7B
垂线 I 0x7C %7C
闭花括号 } 0x7D %7D
波浪号 ~ 0x7E %7E

In Java, a vararg method is a method that can take a varying number of arguments of the same type. To pass a list as an argument to a vararg method, you can convert the list to an array and then pass the array as the vararg argument.

Here is an example:

1
2
3
4
5
6
7
8
9
10
public static void doSomething(String... args) {
// code here
}

List<String> myList = new ArrayList<>();
myList.add("arg1");
myList.add("arg2");
myList.add("arg3");

doSomething(myList.toArray(new String[0]));

In this example, the doSomething method takes a vararg argument of type String. We create a list of strings and add three elements to it. To pass this list as an argument to doSomething, we first convert the list to an array using the toArray method of ArrayList and then pass this array as the vararg argument to doSomething.

Note that we pass an empty array as an argument to the toArray method. This is because the size of the resulting array is determined by the size of the list, and we do not know this in advance. By passing an empty array, the toArray method creates a new array of the correct size.

软件设计模式原则提供了一些常用的思想和准则,让我们在开发软件系统时采用标准化的方法,使得我们能够开发出高质量、易读和易扩展的代码。软件设计模式原则主要包括以下几个方面:

单一职责原则

单一职责原则(SRP)的定义:一个类应该只有一个引起它变化的原因。一个类只负责一种职责,不会有太多的改变。这样当需求变化时,只需要修改对应的类,而不会让其它的类受到影响。这个原则可以避免类的耦合性太高,导致修改代码时需要修改其它很多的类的问题。

开放-封闭原则

开放-封闭原则(OCP)的定义:软件实体(类、模块、函数等等)应该可以轻易地扩展,但是却不应该容易地修改。这个原则的意思是,一个模块应该如何添加新的功能而不影响它的内部代码和外部的依赖。例如,我们应该使用接口来定义模块的功能,这样当需要添加新的功能时,我们仍然可以保持该模块的稳定性。

里氏替换原则

里氏替换原则(LSP)的定义:为了让子类更容易被复用,父类要尽可能地通用。这个原则的意思是,子类必须能够替代父类,而且继承关系中子类不应该修改父类的行为。什么是“是一个”关系(is-a relationship)是这个原则的一个基本前提条件。

依赖倒置原则

依赖倒置原则(DIP)的定义:高层模块不应该依赖于底层模块,两者都应该依赖于抽象。抽象不应该依赖于具体实现细节,具体实现细节应该依赖于抽象。这个原则的本质是通过抽象化来使得层次之间的依赖性减小,在程序设计中,我们应该使用接口或者抽象类来定义被依赖的高层模块的接口,然后让底层模块依赖于这个接口。

接口隔离原则

接口隔离原则(ISP)的定义:客户端不应该依赖它不需要的接口。这个原则的目的是避免一个类需要实现一些无用的、不相关的方法的情况,我们可以使用分类接口的方式,将一些不相关的逻辑拆分成多个接口,这样我们在实现类时就不需要实现接口中的无用方法。

合成复用原则

合成复用原则(CRP)的定义:尽量使用对象组合,而不是继承来实现代码复用。当我们想要复用一些已有的代码时,不一定非要使用继承来实现。因为继承关系可能过于复杂,继承关系中的子类可能会继承一些不适合自己的方法,并且会破坏类的封装性。使用组合的方式,可以更加清晰地表达出对象之间的关系。

0%