把一些零散的知识点都记录到这里

1. spring 资源文件加载方式

spring中资源加载的地址前缀如下:

classpath:表示从类路径加载资源

file:使用UrlResource从文件系统目录中装载资源,可采用绝对或相对路径

http:// :从Web服务器中装载资源

ftp:// : 从FTP服务器中装载资源

其中,classpath:和classpath*:的区别在于classpath*:会扫描所有类路径下出现的资源,而classpath只会在第一个加载的包下查找,即就是只加载一个资源文件。 ———————————————— 原文链接:https://blog.csdn.net/zhuxinquan61/article/details/53589874

2. js 中把字符串转 Unicode 码的方法

const str = 'ADFGSADASD';
const unicode = str.charCodeAt(1); //第二个字符转Unicode码
const newStr = String.fromCharCode(unicode); //Unicode 转字符串

3. 为什么在 spring 中俩个 bean 互相依赖 却没有报循环依赖的错误?

spring bean 之间的依赖分为两种:

  1. A弱依赖B: 即A 的实例化过程不需要 B 的参与, 一般来说, 如果构造函数为默认, 那么 bean 中的依赖大部分都为弱依赖
  2. A强依赖B: 即A 的实例化过程需要 B 的参与, 在初始化 A 的时候需要使用 B 的实例来执行一些业务逻辑

在不使用依赖注入技术时, 我们通常使用构造函数去传入实例化时需要的依赖对象, 这样久而久之, 类之间的依赖关系就会变得难以管理, 而造成代码维护,运行时风险提高

spring 通过以下几种方式降低了类之间的依赖紧密度:

  1. 使用无参构造函数
  2. 使用 setter getter 或注解分析依赖关系, 并自动注入需要的
  3. 通过bean 的声明周期, 横向分解类实例化的过程, 把实例化与实例化期间执行的逻辑分解到: @PostConstruct 和 InitializingBean 的 afterPropertiesSet()中

通过上述三种方式, 使 bean 的初始化变得无状态化, 而在所有 bean 都实例化之后统一管理后续的生命周期方法, 进而达到依赖调节的目标, 使强依赖弱化为弱依赖

结论: 通过构造函数的依赖传递可能造成无法调解的强依赖, 通过 setter/getter 进行依赖注入可以被调解

上述结论在 @Configuration 注解的类中不适用


@Configuration
public class ConfigurationBean{

  // b 是强依赖, spring 为了规避内部其他 bean 在初始化时的空指针风险(initA 中用到了 b), 强制规定配置类的属性为强依赖
  @Bean
  private B b;

  @Bean
  private A initA(){
    //if use b, and b is null
    return new A();
  }

}

4. 忽略maven 从父工程继承的spring-boot-maven-plugin插件

因为大部分工程都是服务类工程, 所以我在顶级工程中配置了spring-boot-maven-plugin, 方便子工程使用, 但是有例外的非微服务工程也集成顶级工程

此时需要排除spring-boot-maven-plugin插件, 以免出现错误, exp: 找不到 main-class, 配置如下:

<properties>
    <spring-boot.repackage.skip>true</spring-boot.repackage.skip>
</properties>

具体请看: RepackageMojo.java

5. servlet3.0 注解声明 servlet 不生效的问题

应该是 web.xml 的版本太低了, 导致应用的 servlet 标准低, 换成下方版本可解决

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
	      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
	      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	      version="3.0">

  <display-name>Servlet 3.0 Web Application</display-name>


</web-app>

6. 自定义 starter 偏好文件自动生成 yml 提示

在工程中加入以下依赖, 那么配置了 configurationProperties 的类将会自动生成偏好文件描述

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-autoconfigure-processor</artifactId>
    <optional>true</optional>
</dependency>

7. maven 整体版本号提升

mvn versions:set -DnewVersion=1.1.1-SNAPSHOT

mvn versions:revert

mvn versions:commit

8. idea mapper 不显示提示

设置了数据源, 但是 mybatis 的 xml 还是不显示表提示, 点击 preference, 然后搜索 sql resolution, 选择数据源即可

9. 建表常用字段

alter table tableName
    add hold_flag varchar(10) default '0' not null comment '0:启用  1:禁用',
    add delete_flag int(1) default 0 not null comment '0:未删除 >0 删除',
    add create_time datetime not null comment '创建时间',
    add create_user_id varchar(100) not null comment '创建人 ID',
    add update_time datetime null comment '更新时间',
    add update_user_id bigint null comment '更新人 ID';

10. MAC 蓝牙功率调解

defaults write com.apple.BluetoothAudioAgent "Apple Bitpool Max (editable)" 80 
defaults write com.apple.BluetoothAudioAgent "Apple Bitpool Min (editable)" 80 
defaults write com.apple.BluetoothAudioAgent "Apple Initial Bitpool (editable)" 80 
defaults write com.apple.BluetoothAudioAgent "Apple Initial Bitpool Min (editable)" 80 
defaults write com.apple.BluetoothAudioAgent "Negotiated Bitpool" 80 
defaults write com.apple.BluetoothAudioAgent "Negotiated Bitpool Max" 80 
defaults write com.apple.BluetoothAudioAgent "Negotiated Bitpool Min" 80

11. ruby 安装大坑

yum 安装的 ruby 版本太低了 大概是 2.0.0 左右的版本, 不满足一些其他应用 gem 安装的版本要求 所以不要使用 yum 安装 ruby

而且 yum 安装的 ruby 有问题, gem 也有问题 很奇怪

推荐使用 rvm 管理 ruby 版本

官网链接: http://rvm.io/ 根据 rvm 官网提示, 需要先下载公钥, 从 gpg 仓库, 但是这里有一个大坑

gpg2 –recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

这个链接时好时坏, 至少我最近一次安装 rvm 的时候, 就不好用, gpg no name 的错误

解决办法: gpg2 –keyserver hkp://keyserver.ubuntu.com:80 –recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

–keyserver hkp://keyserver.ubuntu.com:80 这个地址是好用的 像一些官网服务一般来说都不好使

$ rvm list known # 获取可用版本
$ rvm install [version] # 安装指定版本的 ruby

12. gem 镜像更改

$ gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
$ gem sources -l

13. vpn 搭建遇到的问题

vpn client -> vpn server 不通, 一开始以为是 tcp 端口的问题, 后来排查是因为 UDP 端口的问题

vps manager 管理端走的是 tcp 协议, 但是 vpn 隧道连接时使用的是 udp 协议, 具体如下:

PPTP: 1723

L2TP: 500 / 4500

vpn 服务器安装之后应该开启虚拟 nat 和 dhcp 否则远程机器连接不到

14. Axure 使用笔记

找元件, 好的元件库事半功倍 > 定制母版 > 锁定母版 > 画界面(不要做效果, 只调样式) > 为每个元素添加事件

把多个元素设置成 > 动态面板(不要设置成组合, 不然又好多事件和效果不能触发), 也就是选中多个元素之后, 右键选择 create dynamic pannel, 而不是 group

动态面板可以隔离多余的干扰信息(isolate), 按钮在关闭左边(右上角)

移动效果选择经过, 不要选到达, 到达是绝对定位, 而经过是相对移动

所有的元件最好有名字, 搜索起来快, 交互是可以复制的

页面之间保持独立性, 不要用动态面板来做(比如新增和查看页面), 如果使用动态面板来做, 会存在变量污染, 好多变量和名称都要重新改一遍(因为查看是copy新增的副本)

15. Mac 短位密码设置

pwpolicy -clearaccountpolicies 清除密码策略

16. 知识点

三姬分金: 博弈论

经济学: 亚当斯密 大卫李嘉图


相关文章:
⤧  上一篇 人为什么会死, DNA 染色体 细胞 基因是咋回事