springboot中注入对象很方便,但是如果类是个工具类,里面的静态方法,只能使用静态属性。这时候就要想办法让静态属性可以被注入。
重点有两点
- 让spring接管类,可以使用@Component、@Service等注解
- 使用setter或@PostConstruct,将属性注入
springboot中注入对象很方便,但是如果类是个工具类,里面的静态方法,只能使用静态属性。这时候就要想办法让静态属性可以被注入。
重点有两点
记录一次mysql log迁移经理
系统:Ubuntu18.04.6
mysql版本:mysql5.7
1 | systemctl stop mysql.service |
1 | sudo mkdir /data/log/mysql |
/etc/mysql/mysql.conf.d/mysqld.cnf
,找到log的相关的配置修改目录1 | log_error = /data/log/mysql/error.log |
/etc/apparmor.d/usr.sbin.mysqld
添加以下配置1 | /data/log/mysql.err rw, |
1 | systemctl restart apparmor |
项目中会遇到数据库名称和密码需要加密防止泄露的需求,因此引入了jasypt。下面的例子是将jasypt的加密密钥写在了配置文件中,为了安全,实际引用时,需要将配置放到服务器的启动命令中,避免在代码中暴露密钥
1.引入maven依赖jasypt-spring-boot-starter
1 | <dependency> |
2.启动类添加注解@EnableEncryptableProperties
1 | import com.ulisesbocchio.jasyptspringboot.annotation.EnableEncryptableProperties; |
三种jar包启动时传参的方式
jvm传值 -Dkey_name=value
这种方式已 -D
开头,放在jar包之前
1 | java -Ddatabasename=test -jar test.jar |
给main函数传值 key_name=value
1 | java -jar test.jar databasename=test |
治理要求参数放在jar包之后,main方法中可以接收参数
1 | public static void main(String[] args) throws IOException { |
覆盖yaml或properties 文件参数 –key_name=value
1 | java -jar tes.jar --logName=log.txt |
这里要求参数放在jar包之后用--
开头,程序中可以使用@Value
注解获取参数值
1 | @Value("${logName}") |
mysql root用户通过外网登录数据库后,想要添加用户分配权限,结果发现不行。但是在服务器上通过localhost登录后可以配置。
原因是新增的root@%
没有超级权限。只有个root@localhost
才有。
解决方法是,使用root@localhost
账户为root@%
添加超级权限。
在服务器上使用mysql -u root -p
登录,然后执行以下命令
1 | UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root'; |
这是通过mysql客户端工具,使用外网链接数据库就可以设置用户权限了
Springboot官方建议使用final来修饰成员变量,然后通过构造方法来进行注入。原因:final修饰的成员变量是不能够被修改的,反射除外。
既然不推荐使用Autowired了,应该如何修改我们的代码呢?
在ubuntu18.04 配置环境,发现无法下载网络资源,但是用ip可以访问外网资源。问题应该是dns没有解析。
试了好多种方法无效,最后找到了解决方法,记录一下
修改/etc/systemd/resolved.conf
将里面的dns注释去掉,配置上自己的dns就可以了
1 | [Resolve] |
注意:修改完成后,需要重启一下服务器
深度操作系统内核版本,会以一定周期进行更新,已经安装系统的用户,需要安装最新的内核版本,可通过在[终端]应用中输入命令行操作。
1 | sudo apt install linux-image-deepin-amd64 linux-headers-deepin-amd64 |
1 | sudo apt install linux-image-deepin-stable-amd64 linux-headers-deepin-stable-amd64 |
1 | dpkg -l | grep "linux-image\|linux-headers" |
1 | sudo apt purge linux-image-5.10.18-amd64-desktop linux-headers-5.10.18-amd64-desktop |
每种语言都免不了和字符串打交道,rust也不例外。由于rust本身的一些特性,字符串的使用和其他语言有很大的不同。