windows
# C盘清理
win+R 打开运行窗口,输入 services.msc 找到 windowsupdate 服务并停止
删除更新下载
C:\Windows\SoftwareDistribution\Download
-Dspring.cloud.nacos.discovery.register-enabled=false
IDE 下载
idea 下载
https://www.jetbrains.com/idea/download/other.html
termius ssh连接工具
https://www.termius.com/
python dash plotly html 绘图教程
https://dash.plotly.com/tutorial
复制网页文本
https://github.com/flower0wine/nice
# ps 进程启动和持续时间
ps -o pid,lstart,etime 206111
202407cloud
NoClassDefFoundError: org/springframework/boot/logging/DeferredLogFactory
springcloud 和 springboot 版本不对应,需要找适配的版本即可。
springboot 版本
https://start.spring.io/actuator/info
https://sca.aliyun.com/docs/2023/overview/what-is-sca/
# gravitee 网关 el 表达式编写
https://github.com/gravitee-io/gravitee-policy-dynamic-routing/tree/master?tab=readme-ov-file
/api/platform/user/balance
{#endpoints['service-name']}/api/platform/user/balance
/api/platform/(?<version>[a-z]*)/balance
{#endpoints['service-name']}/api/platform/{#groupName['version']}/balance
/api/platform/(.*)
{#endpoints['service-name']}/api/platform/{#group[0]}
20240813 java
// java 反射的相关操作
// 可见,调用getMethods方法输出的是自身的public方法和父类Object的public方法。
// 调用getDeclaredMethods方法输出的是自身的public、protected、private方法。
User user = new User();
Field age = ReflectionUtils.findField(user.getClass(), "age");
age.setAccessible(true);
age.set(user, 45);
User entity = ReflectUtil.newInstance(User.class);
// ReflectUtil.setFieldValue();
// 分片 xxl job
@XxlJob(value = "shardingJob")
public ReturnT<String> execute() throws Exception {
int shardIndex = XxlJobHelper.getShardIndex();
int total = XxlJobHelper.getShardTotal();
log.info("shardIndex {} total {}", shardIndex, total);
return ReturnT.SUCCESS;
}
1 git
因为 git 默认是不区分大小写的,所以 git status 是不会提示你有修改的 。
1、可以通过 git config --get core.ignorecase 查看默认配置
2、通过 git config core.ignorecase false 设置为区分大小写
全局修改用户名称和邮箱
git config –global user.name “Your Name”
git config –global user.email “Your Email”
# git修改提交人信息和邮箱,针对已经提交的代码
git filter-branch --env-filter '
oldEmail="old@163.com"
newName="kaiyang"
newEmail="kaiyang@qq.com"
if [ "$GIT_COMMITTER_EMAIL" = "$oldEmail" ]; then
export GIT_COMMITTER_NAME="$newName"
export GIT_COMMITTER_EMAIL="$newEmail"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$oldEmail" ]; then
export GIT_AUTHOR_NAME="$newName"
export GIT_AUTHOR_EMAIL="$newEmail"
fi
' --tag-name-filter cat -- --branches --tags
git add . 工作空间添加到暂存区
git commit -m "提交修改" 暂存区提交到本地
git commit --amend -m "修改上一次提交的注释" 修改注释
git push origin master 推送本地修改到远程
git reflog git 操作记录 按 q 退出查看
git reset --hard HEAD~2 (或者版本号) 回退版本 当前空间的所有操作都会清空
git push -f origin master 版本回退后强制更新远程
git revert HEAD | HEAD~1 | 版本号 //撤销最近一次、上一次、指定版本号 提交
git push origin master revert 是做一个可逆操作
git stash 存草稿 存储 (适用于需要切换分支,但是修改不能提交)
git status 查看状态
git stash save "test-cmd-stash" 保存草稿
git pop 弹出
git stash drop 清除指定
git stash clear 清除所有
git stash branch testchanges 从stash 创建分支
git stash show -p 查看详情
git stash list 展示列表
git cherry-pick <commit id> 将某次的提交合并到当前分支
git archive可以将加了tag的某个版本打包提取出来,例如:
git archive -v --format=zip v0.1 > v0.1.zip
--format表示打包的格式,如zip,-v表示对应的tag名,后面跟的是tag名,如v0.1。
git tag -a v1.4 -m 'my version 1.4' 打标签
# 创建tag
git tag -a v1.0 -m "basic version"
git show v1.0
git push origin tag v1.0
git checkout v1.0
# 删除远程分支
git push origin --delete dev
# 删除本地dev 分支
git branch -d dev
# 从远程master 拉一个最新的dev分支
git checkout -b dev origin/master
git checkout 切换分支
git checkout -b dev-tmp 从当前分支为版本拉去一个dev-tmp分支
git pull origin master --allow-unrelated-histories
# 全局设置用户名和邮箱
git config --global user.name "thedestiny"
git config --global user.email "xieyue86@163.com"
# 本地未建项目的情况
mkdir the_detint
cd the_detint
git init
git commit -m "first commit"
git remote add origin git@gitee.com:xieyue86/the_detint.git
git push -u origin master
# 本地已建项目,建立远程和本地项目的关联关系
cd existing_git_repo
git remote add origin https://gitee.com/xieyue86/elephant.git
git push -u origin master
# 添加远程原仓库地址
git remote add upstream <原仓库github地址>
# 查看远程分支
git remote -v
# 获取远程fork仓库内容
git fetch upstream
# 合并分支
git merge upstream/master
# 允许拉取
git pull origin master --allow-unrelated-histories
提示文件名过长时设置
git config --system core.longpaths true
cd existing_repo
git remote rename origin old-origin
git remote add origin git@gitlab.com:thedestiny/kangraoo.git
git push -u origin --all
git push -u origin --tags
# 创建指定名称创建公私钥
ssh-keygen -t rsa -C "example@163.com" -f ~/.ssh/gitee_id_rsa
.ssh 文件夹下创建 config 文件
# gitlab account [github_user]
Host gitlab.com
HostName gitlab.com
User xieyue86
IdentityFile C:\Users\user.ssh\gitlib_id_rsa
IdentitiesOnly yes
# gitee
Host gitee.com
HostName gitee.com
User xieyue86
IdentityFile C:\Users\user.ssh\gitee_id_rsa
IdentitiesOnly yes
# 列出项目 git 下的所有文件
git ls-files
# 统计某个人的代码
git log --author="userzm" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }'
# 某段时间区间代码
git log --since=2023-01-01 --until=2023-12-30 --author="userzm" --pretty=tformat: --numstat | grep -v ".jar" | grep -v ".idea" | sort -u
git log --since=2023-01-01 --until=2023-12-30 --author="‘yangliming03’" --pretty=tformat: --numstat
# 某段时间某个人的代码
git log --since=2023-01-01 --until=2023-12-30 --format='%aN' | sort -u | while read name; do echo -en "$name\t"; git log --author="$name" --pretty=tformat: --numstat | grep -v ".jar" | grep -v ".idea" | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -; done
# git 统计代码,按照总数倒序排列
git log --since=2023-01-01 --until=2023-12-30 --pretty=tformat: --numstat | awk ' {printf "%s\t%s\t%s\t%s\n", $1+$2, $1 ,$2 , $3}' | sort -u -t \t -k 1nr
sort -u 去重
-k 第几列
-t 分隔符
-n 按照数值排序
2 python
python官方各版本下载地址:
https://www.python.org/ftp/python/
国内华为镜像:
**https://mirrors.huaweicloud.com/python/**
1. 清华大学开源软件镜像站: https://mirrors.tuna.tsinghua.edu.cn/
2. 阿里云开源镜像站: https://mirrors.aliyun.com/
3. 中国科学技术大学镜像站: https://mirrors.ustc.edu.cn/
4. 华中科技大学镜像站: https://mirrors.hust.edu.cn/
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple [package_name]
python 实现两个数组对应位置相加
import numpy as np
d1 = [0, 0, 5, 0, 0]
d2 = [0, 1, 0, 0, 0]
# 求数组之和
print(sum(d1))
# 数组对应位置相加
d3 = np.sum([d1, d2], axis=0).tolist()
print(d3)
#### python 读写文本
读文本
with open("./data.txt", mode="r", encoding="utf8") as f: # 打开文件
read 全文读取,分行展示
readline():读一行,默认只读第一行,如果循环执行readline()则每行依次读取
readlines():按行全文读取,读取结果不分行
写文本
w 清空文档再写入,如果文件不存在,创建后在写入
a 追加模式,不清空文档,直接在尾部追加
import os
文档重命名
os.rename("asss.txt", "123456.txt")
删除文件
os.remove("234455.txt")
创建文件夹
os.mkdir("2023_doc")
获取当前文件路径
os.getcwd()
3 java
# 分组求和
Map<String, BigDecimal> collect = dtoList.stream().filter(node -> NumberUtil.isGreater(node.getAmount(), BigDecimal.ONE))
.collect(Collectors.groupingBy(OrderInfoDto::getUserId, Collectors.reducing(BigDecimal.ZERO, OrderInfoDto::getAmount, NumberUtil::add)));
// 根据用户id分组对金额求和, compute 计算
result.compute(userId, (key, value) -> NumberUtil.add(value, amount));
// 如果不存在则进行计算
orders.computeIfAbsent(orderNo, key -> amount);
// 如果存在则进行计算
results.computeIfPresent(userId, (key, value) -> NumberUtil.add(value, amount));
// 进行数据合并
merges.merge(userId, amount, (val1, val2) -> NumberUtil.add(val1, val2));
// list 转 map 时 value 值为空可能会报错
// 解决方案1
Map<String, String> map = list.stream().collect(Collectors.toMap(
User::getCode,
entity -> Optional.ofNullable(entity.getName()).orElse("")
));
// 解决方案2
Map<String, String> collect = list.stream().collect(
HashMap::new,
(m, v) -> m.put(v.getCode(), v.getName()),
HashMap::putAll
);
4 shell
# grep 搜索
-A n 后n行,A记忆为(After)
-B n 前n行,B记忆为(Before)
-C n 前n行,后n行,C记忆为(Center)
grep -A 20 --color 搜索词 info.log
# 搜索多个关键字并彩色显示
grep --color -C 20 -P "关键字1|关键字2|关键字3" info.log
# 搜索多个关键字
grep -E 'pattern1|pattern2' filename
# tail 命令
查看后 300行数据
tail -300f data.log
查看后 20 行数据
tail -n 20 data.log
查看前10行之后的数据
tail -n +10 data.log
# 磁盘清理
磁盘使用情况
df -h
ls -alh 查看文件夹信息
查看磁盘较大的文件
du -sh *
# 端口占用进程
netstat -ano | findstr <port>
# 进程关闭
taskkill -PID <pid> -F
`df` (disk free) 命令用于查看文件系统的总空间、已使用空间、剩余空间以及使用率等信息。以下是一些基本用法:
# 显示所有文件系统及其磁盘使用情况,以人类可读的格式(KB、MB、GB等)
df -h
# 显示指定文件系统的磁盘使用情况
df -h /dev/sda1
# 更详细的输出,包括i节点数、块大小等
df -hT
`du` (disk usage) 命令用于计算文件和目录占据的磁盘空间。它可以用来查看单个文件、目录或整个文件系统的磁盘使用情况:
# 查看当前目录及其子目录占用的磁盘空间总量
du -sh *
# 查看当前目录下所有文件和目录的详细磁盘使用情况
du -h
# 查看指定目录的磁盘使用情况,包括子目录的总计
du -sh /path/to/directory
# 统计指定目录下所有文件和目录的磁盘使用量,并排序
du -sh /path/to/directory/* | sort -hr
5 Linux
# 系统时间添加16天或者减去16天
date -s "+16 days"
date -s "-16 days"
# 查看防火墙的状态 开启 停用 防火墙
systemctl status firewalld
sudo systemctl start firewalld;
sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo systemctl enable firewalld
# 安装tmux
yum install tmux
# 后台运行脚本
# 进入对应的windows会话窗口
tmux a -t sss | tmux attach -t sss
# 查看所有会话
tmux ls
# 新建会话
tmux new -s session1
# 退出会话
ctrl + b 然后按d 退出
# 销毁会话
tmux kill-session -t session-name
http://www.ruanyifeng.com/blog/2019/10/tmux.html
6 maven
<!-- aliyun -->
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
7 mysql
# 查询表名称和表注释
SELECT TABLE_NAME as 'tab_name',TABLE_COMMENT as 'tab_com',auto_increment
FROM information_schema.TABLES WHERE table_schema = 'victory';
# 查询数据库中的所有表信息
SELECT *, TABLE_NAME as 'tab_name',TABLE_COMMENT as 'tab_com',auto_increment,
concat("alter table ",TABLE_NAME ," AUTO_INCREMENT=", auto_increment + 300000000 , ";") as 'sql'
FROM information_schema.TABLES WHERE table_schema = 'db_name';
# 查询数据库表中的字段信息
select COLUMN_NAME,COLUMN_COMMENT from information_schema.columns where table_name='tab_name'
show VARIABLES like "%binlog%"
select group_concat(username) from tb_user
# mysql 查询最近一个月内每个用户最近一次的登录时间
SELECT
user_id as 'td', DATE_FORMAT(create_time,'%Y-%m-%d %T' ) as 'ct'
FROM
( SELECT *, ROW_NUMBER() OVER ( PARTITION BY user_id ORDER BY create_time DESC ) AS row_num FROM tb_user_log where create_time >= '2024-03-08' ) t
WHERE
row_num = 1;
8 maven-pom
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.3.RELEASE</version>
<relativePath/>
</parent>
<groupId>com.platform</groupId>
<artifactId>flex</artifactId>
<version>1.0</version>
<name>flex</name>
<description>flex </description>
<properties>
<java.version>1.8</java.version>
<hutool-version>5.8.9</hutool-version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.29</version>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<!-- <optional>true</optional>-->
<version>1.18.24</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>${hutool-version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>2.0.12</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>32.0.1-jre</version>
</dependency>
<dependency>
<groupId>com.mybatis-flex</groupId>
<artifactId>mybatis-flex-spring-boot-starter</artifactId>
<version>1.7.3</version>
</dependency>
<dependency>
<groupId>com.mybatis-flex</groupId>
<artifactId>mybatis-flex-processor</artifactId>
<version>1.7.3</version>
<scope>provided</scope>
</dependency>
<!-- 代码生成 -->
<!--<dependency>-->
<!--<groupId>com.mybatis-flex</groupId>-->
<!--<artifactId>mybatis-flex-codegen</artifactId>-->
<!--<version>1.7.3</version>-->
<!--</dependency>-->
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-inline</artifactId>
<version>3.12.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
9 mariadb 数据库安装
# touch /etc/yum.repos.d/mariadb.repo
# 写入一下内容
[mariadb]
name=MariaDB
baseurl=https://mirrors.aliyun.com/mariadb/yum/10.5/centos7-amd64
gpgkey=https://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1
# 数据库安装
yum install -y mariadb-server mariadb
yum install MariaDB-server MariaDB-client -y
systemctl start mariadb
systemctl stop mariadb
systemctl status mariadb
10 centos 环境配置
vi /etc/prifile && source /etc/prifile
export JAVA_HOME=/usr/local/soft/jdk1.8.0_361
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export MAVEN_HOME=/usr/local/soft/apache-maven-3.9.4
export PATH=$MAVEN_HOME/bin:$PATH
mysql 安装
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
rpm -ivh mysql57-community-release-el7-10.noarch.rpm
grep "password" /var/log/mysqld.log
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456你的密码';
systemctl start mysqld.service
systemctl status mysqld.service
11 node
# 安装依赖
npm install
# 建议不要直接使用 cnpm 安装依赖,会有各种诡异的 bug。可以通过如下操作解决 npm 下载速度慢的问题
npm install --registry=https://registry.npmmirror.com
# 启动服务
npm run dev