查看TCP连接数
netstat -n |awk '/^tcp/ {++S[$NF]} END {for(a in S) print a,S[a]}'
数据库控制台导出查询的数据
生产环境中有时候需要将查询到的的数据导出到CSV文件或者Excel中,可以通过如下命令导出
select * from table表名 where 条件 into outfile "/var/lib/mysql-files/TestData.csv" fields terminated by ',' optionally enclosed by '"' escaped by '"' lines terminated by "\r\n";
Mysql服务相关命令
` 启动mysql服务:
systemctl start mysqld.service
停止mysql服务:
systemctl stop mysqld.service
重启mysql服务:
systemctl restart mysqld.service
查看mysql服务当前状态:
systemctl status mysqld.service
设置mysql服务开机自启动:
systemctl enable mysqld.service
停止mysql服务开机自启动:
systemctl disable mysqld.service `
查看mysql的端口
show global variables like 'port'
修改mysql的密码
用SET PASSWORD命令
首先登录MySQL。
命令格式:
mysql> set password for 用户名@localhost = password('新密码');
Eg:
mysql> set password for root@localhost = password('123');
mysqladmin
此时不用登录mysql客户端 命令格式:
mysqladmin -u用户名 -p旧密码 password 新密码
Eg:
mysqladmin -uroot -p123456 password 123
直接更新MySQL User表
首先登录MySQL。
mysql> use mysql;
mysql> update user set password=password('123') where user='root' and host='localhost';
mysql> flush privileges **;**
忘记root密码
以windows为例:
- 关闭正在运行的MySQL服务。
- 打开DOS窗口,转到mysqlin目录。
- 输入mysqld --skip-grant-tables 回车。–skip-grant-tables 的意思是启动MySQL服务的时候跳过权限表认证。
- 再开一个DOS窗口(因为刚才那个DOS窗口已经不能动了),转到mysqlin目录。
- 输入mysql回车,如果成功,将出现MySQL提示符 >。
- 连接权限数据库: use mysql; 。
- 改密码:update user set password=password(“123”) where user=“root”;(别忘了最后加分号)。
- 刷新权限(必须步骤):flush privileges;
- 退出 quit。
- 注销系统,再进入,使用用户名root和刚才设置的新密码123登录。
CompletableFuture 并发多任务处理使用示例
List<CompletableFuture<JSONObject>> futures = new ArrayList<>();
ThreadPoolExecutor poolExecutor = new ThreadPoolExecutor(6, 8, 1L, TimeUnit.SECONDS, new ArrayBlockingQueue<>(8));
for (int i=0;i<=10;i++) {
futures.add(CompletableFuture.supplyAsync(() -> {
JSONObject typeCount = getFunction();
return typeCount;
}, poolExecutor));
}
//等待全部完成
CompletableFuture.allOf(futures.toArray(new CompletableFuture[futures.size()])).join();
访问springboot接口出现401 、403、 Forbidden
出现401可能是框架中添加了 spring-boot-starter-security ,这时候需要进行http请求降级处理 如果是Spring Boot 1.x版本,在配置文件中添加 management.security.enabled=false 就可以
Spring Boot 2.x中的management.security.enabled=false无效问题,编写 SecurityConfig 继承 WebSecurityConfigurerAdapter ,重写configure(HttpSecurity http) 方法即可。
出现403,Forbidden,这个是因为开启了CSRF保护,关闭即可。
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
super.configure(http);
http.authorizeRequests().anyRequest().permitAll().
and().logout().permitAll()
.and().csrf().disable();//关闭CSRF保护即可。
;
}
}
如何将Docker容器中的文件拷贝到宿主机
可以使用 docker cp 命令来拷贝,语法格式如下:
docker cp 容器ID:容器内路径 目的主机路径
如果想将宿主机中的文件拷贝到容器中,只需要将源路径和目的路径调换即可:
docker cp 目的主机路径 容器ID:容器内路径
mysqldump 和 source 命令
mysqldump命令
mysqldump命令备份mysql中的数据,一般是对整个数据库进行备份,命令格式如下:
mysqldump -u root -p 数据库名 > 文件名.sql;
eg:
mysqldump -u root -p test_database > test_database.sql;
如果需要备份某个数据的某张表,可以使用如下命令:
mysqldump -u root -p -d database_name table_name > db.sql;
source命令
使用mysqldump生成备份文件后,可以使用source命令恢复数据,首选先登录mysql Console
mysql -u root -p 密码
然后选中要备份的数据库:
> use database;
然后就可以使用source命令进行数据恢复,命令格式如下:
> source 备份文件路径
eg:
source /home/mysql/backup/test_database.sql;
执行如上命令即可恢复数据!
Linux 常用命令
查看Linux 系统版本
cat /etc/*release
Centos7防火墙命令
检查防火墙状态
- systemctl status firewalld # 检查 firewalld 服务状态
- firewall-cmd --state # 检查防火墙是否启用
开启/关闭防火墙
- systemctl start firewalld # 启动防火墙
- systemctl stop firewalld # 停止防火墙
- systemctl restart firewalld # 重启防火墙
- systemctl enable firewalld # 开机自启动防火墙
- systemctl disable firewalld # 禁止开机自启动防火墙
添加端口
- firewall-cmd --zone=public --add-port=80/tcp --permanent # 打开80端口,添加永久规则
- firewall-cmd --zone=public --remove-port=80/tcp --permanent # 关闭80端口,移除永久规则
添加服务
- firewall-cmd --zone=public --add-service=http --permanent # 打开http服务,添加永久规则
- firewall-cmd --zone=public --remove-service=http --permanent # 关闭http服务,移除永久规则
防火墙命令汇总
-
启动firewalld服务
- systemctl start firewalld.service
-
关闭firewalld服务
- systemctl stop firewalld.service
-
重启firewalld服务
- systemctl restart firewalld.service
-
查看firewalld状态
- systemctl status firewalld.service
-
开机自启firewalld
- systemctl enable firewalld
-
查看版本
- firewall-cmd --version
-
查看帮助
- firewall-cmd --help
-
显示状态
- firewall-cmd --state
-
查看当前所有规则
- firewall-cmd --list-all
-
查看所有打开的端口
- firewall-cmd --zone=public --list-ports
-
添加开放端口
- firewall-cmd --zone=public --add-port=80/tcp --permanent
- permanent永久生效,没有此参数重启后失效
-
查看端口是否开放
- firewall-cmd --zone=public --query-port=80/tcp
-
删除开放端口
- firewall-cmd --zone=public --remove-port=80/tcp --permanent
-
批量开放一段TCP端口
- firewall-cmd --permanent --add-port=9001-9100/tcp
-
开放IP的访问
- firewall-cmd --permanent --add-source=192.168.1.1
-
开放整个源IP段的访问
- firewall-cmd --permanent --add-source=192.168.1.0/24
-
移除IP访问
- firewall-cmd --permanent --remove-source=192.168.1.1
-
允许指定IP访问本机80端口
- firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.1" port protocol="tcp" port="80" accept'
-
禁止指定IP访问本机80端口
- firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.1" port protocol="tcp" port="80" reject'
-
移除允许指定IP访问本机80端口规则
- firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="192.168.1.1" port protocol="tcp" port="80" accept'
-
更新防火墙规则
- firewall-cmd --reload
每次更改firewall规则后需重新加载 firewall-cmd --reload
SPU 和 SKU 定义
-
SPU:Standard Product Unit,标准产品单元,可以理解为一个产品型号,比如上面图片看到的iPhone 14 (A2884) 就是一个标准的产品单元,它属于生产制造过程的一个标准品,标准品在缺乏具体规格信息的时候是不能直接售卖的(除非这个产品系列只有一个规格)。
-
SKU:Stock Keeping Unit,最小库存单元,也就是对应仓库中的一件商品,这个商品的规格信息在入库的时候就已经确定了的,因此是可以直接售卖的。
SPU 和 SKU 的关系:SPU 是一个相对抽象的概念,而SKU 是具象化的 SPU,也就是在 SPU 基础上添加了一个可售卖完整的规格信息,从而能够让顾客明确知道拿到手的商品是什么样。以服装为例,服装的一个款式是一个 SPU,只有加上了尺码、颜色后才能成为一个 SKU。
工具类中注入配置文件属性
@Component
public class WxUtil {
private static String wxBaseUrl;
@PostConstruct
public void init() {
WxUtil wxUtil = this;
}
@Value("${common.wxBaseUrl}")
public void setWxBaseUrl(String wxBaseUrl) {
WxUtil.wxBaseUrl = wxBaseUrl;
}
public static String getWxInterfaceUrl(String address) {
return wxBaseUrl.concat(address);
}
}