豫州牧的笔记

307 阅读5分钟

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]}


202407191550_33693.png

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

12 fastjson

图片.png