Java 小芝士

本文最后更新于 2 分钟前,文中所描述的信息可能已发生改变。

Annotation

@Value

在 Spring 框架中,@Value 注解用于注入属性值。@Value 可以接受两种形式的参数:${}和#{},它们的区别在于:

  • ${}:用于获取外部配置文件(如 application.properties 或 application.yml)中的属性值。例如,@Value("${server.port}") 会获取配置文件中 server.port 的值。
  • #{}:用于执行 Spring 表达式语言(SpEL)。SpEL 是一种强大的表达式语言,支持在运行时查询和操作对象图。例如,@Value(" #{systemProperties['java.home']}")会获取 Java 的安装目录。

所以,如果你只是想从配置文件中获取一个值,那么使用${}就足够了。如果你需要更复杂的操作,如调用方法、访问对象属性、计算表达式等,那么你应该使用#{}。

@lombok.Builder

Skills

停止在特定端口上运行的服务

  • 找到特定端口上运行的进程的 PID:netstat -ano | findstr 8080
  • 停止特定 PID 的进程:taskkill /F /PID 1234taskkill /PID 1234 /F

Mind: 8080 是端口号,1234 是进程 ID。这些命令需要在命令行中运行,并且可能需要管理员权限。

Base Knowledge

访问权限修饰符(Access Modifiers)

在 Java 中,访问修饰符用于设置类、方法和变量的可见性。Java 有四种访问修饰符:

  • public:公共的,任何类都可以访问。
  • protected:受保护的,只有在同一个包中的类或者是这个类的子类以及子类的子类可以访问。
  • default(没有关键字):默认的,只有在同一个包中的类可以访问。
  • private:私有的,只有在这个类内部可以访问。

面向对象设计的原则

原则英文描述
单一职责原则(SRP)Single Responsibility Principle一个类只负责一个功能
开闭原则(OCP)Open/Closed Principle对扩展开放,对修改关闭
里氏替换原则(LSP)Liskov Substitution Principle子类可以替换父类
依赖倒置原则(DIP)Dependency Inversion Principle高层模块不应该依赖底层模块,两者都应该依赖抽象
接口隔离原则(ISP)Interface Segregation Principle使用多个专门的接口,而不是一个总接口
最少知识原则/迪米特法则(LKP)Least Knowledge Principle/Law of Demeter一个对象应该对其他对象有最少的了解

Thread

Create Thread

Java Memory Model