Linux shell下文本显示多行进度条方式(利用\r及\033来实现)

Linux shell下文本显示进度条方式(利用\r,以及特殊含义的转义符\033来实现)

# 单个进度条
function ProceessOne(){
spa=''
i=0
while [ $i -le 100 ]
do
 printf "我是单个进度条[%-10s] %d%% \r" "$spa" "$i";
 sleep 0.5
 ((i=i+10))
 spa+='#'
done
# 光标向下移动1行
echo

# 光标向下移动0行
#printf "\33[0B";
}

# 多个进度条
function ProceessThree(){
spa=''
i=0
while [ $i -le 100 ]
do
 printf "我是第一个进度条[%-10s] %d%% \n" "$spa" "$i";
 printf "我是第二个进度条[%-10s] %d%% \n" "$spa" "$i";
 printf "我是第三个进度条[%-10s] %d%% \n\33[3A" "$spa" "$i";
 sleep 0.5
 ((i=i+10))
 spa+='#'
done
# 光标向下移动3行
#echo
#echo
#echo

# 光标向下移动3行
printf "\33[3B";
}

ProceessOne
ProceessThree
printf "进度条执行完成";

运行后结果

我是单个进度条[##########] 100% 
我是第一个进度条[######### ] 90% 
我是第二个进度条[######### ] 90% 
我是第三个进度条[######### ] 90% 
进度条执行完成

033说明

格式: echo -e “\033[字背景颜色;字体颜色m字符串\033[0m” 

例如: 
echo -e “\033[41;36m something here \033[0m” 
其中41的位置代表底色, 36的位置是代表字的颜色 

那些ascii code 是对颜色调用的始末. 
\033[XX; m …… \033[0m   #XX表示下面的数字
字颜色:30———–37
30:黑 
31:红 
32:绿 
33:黄 
34:蓝色 
35:紫色 
36:深绿 
37:白色 

字背景颜色范围:40—-47
40:黑 
41:深红 
42:绿 
43:黄色 
44:蓝色 
45:紫色 
46:深绿 
47:白色

字体加亮颜色:90————97
90:黑 
91:红 
92:绿 
93:黄 
94:蓝色 
95:紫色 
96:深绿 
97:白色

背景加亮颜色范围:100——————–107
40:黑 
41:深红 
42:绿 
43:黄色 
44:蓝色 
45:紫色 
46:深绿 
47:白色


===============================================ANSI控制码的说明 
\33[0m 关闭所有属性 
\33[1m 设置高亮度 
\33[4m 下划线 
\33[5m 闪烁 
\33[7m 反显 
\33[8m 消隐 
\33[30m — \33[37m 设置前景色 
\33[40m — \33[47m 设置背景色 
\33[nA 光标上移n行 
\33[nB 光标下移n行 
\33[nC 光标右移n行 
\33[nD 光标左移n行 
\33[y;xH设置光标位置 
\33[2J 清屏 
\33[K 清除从光标到行尾的内容 
\33[s 保存光标位置 
\33[u 恢复光标位置 
\33[?25l 隐藏光标 
\33[?25h 显示光标

\x1b[2J\x1b[$;1H    $表示行位

参考地址:https://www.cnblogs.com/demonxian3/p/8963807.html

Maven项目引用本地jar包

pom.xml文件中配置

system,system依赖不是由maven仓库,而是本地的jar包,因此必须配合systemPath标签来指定本地的jar包所在全路径。这类jar包默认会参与编译、测试、运行,但是不会被参与打包阶段。

<!-- 引入本地lib包 -->
<!-- 达梦数据库驱动 -->
<dependency>
    <groupId>com.dm</groupId>
    <artifactId>DmJdbcDriver</artifactId>
    <scope>system</scope>
    <version>1.8.0</version>
    <systemPath>${project.basedir}/src/lib/DmJdbcDriver18.jar</systemPath>
</dependency>

如果使用Spring Boot也想打包进去的话,需要在插件里做配置true

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <!-- maven打包时会将外部引入的jar包(比如在根目录下或resource文件下新加外部jar包)打包到项目jar -->
        <includeSystemScope>true</includeSystemScope>
    </configuration>
</plugin>

ubuntu安装cuda

# 更新系统组件,并重启
sudo apt update
sudo apt dist-update
sudo apt upgrade
sudo reboot
# 安装必须的gcc软件
sudo apt-get install manpages-dev
sudo apt-get update
sudo apt install build-essential
# 到nvidia的官网【https://developer.nvidia.com/cuda-downloads】
# 下载系统ubuntu 22.04对应的cuda包,也就是下面的命令
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin
sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.7.0/local_installers/cuda-repo-ubuntu2204-11-7-local_11.7.0-515.43.04-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2204-11-7-local_11.7.0-515.43.04-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2204-11-7-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda
# gds相关组件,可以酌情安装,可以参考【https://docs.nvidia.com/gpudirect-storage/release-notes/index.html】
# sudo apt-get install nvidia-gds
# 接下来可以通过Nvidia专有指令,查看系统中的GPU卡。能够成功查看到GPU卡,说明安装成功
nvidia-smi
# 配置相关环境变量
cd /etc/profile.d/
sudo vim /etc/profile.d/cuda.sh
# 将下面的记录,加入到【cuda.sh】文件中
export PATH=/usr/local/cuda-11.7/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.7/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
# 保存cuda.sh文件后,cuda.sh的默认权限即可,重启电脑即可生效全局环境变量
sudo reboot

Spring Boot 与awt一起使用注意事项

Spring Boot与Java awt一起使用的时候,注意不要将包含awt初始化的类【例如Robot】加上@service之类的注解。会导致一些自定义的属性无效。例如

// 本应该可以生效的,但是awt在Spring boot初始化时候初始化过Robot,会导致设置为true无效。
this.menuBar.setUseSystemMenuBar(true);

Spring Boot启动javafx,需要注意设置headless

SpringApplicationBuilder builder = new SpringApplicationBuilder(Demo1Application.class);
        builder.headless(false);
        ConfigurableApplicationContext context = builder.run(args);

CNC ddraw的一些特殊配制

有很多老的游戏使用的ddraw的API,在vista、win7,win10中无法被调用起来。这个时候就可以下载cnc ddraw放到游戏程序执行目录中,直接运行起来

Releases · FunkyFr3sh/cnc-ddraw (github.com)

1.3.7.0版本Note: If you use cnc-ddraw with a game that got its own windowed mode built in then make sure you disable the games own windowed mode first. If you want to play in windowed mode then start the game once in fullscreen and then press Alt+Enter to enable the cnc-ddraw windowed mode (Or modify ddraw.ini without using Alt+Enter).

4.8.0.0版本博德之门2:Added support for Baldur’s Gate 2 – Note: ‘Use 3D Acceleration’ must be -disabled- and ‘Full Screen’ must be -enabled- in BGConfig.exe

本地虚拟机安装kubesphere

参考网址:All-in-One Installation of Kubernetes and KubeSphere on Linux

1、下载kk软件

# 安装必须的软件
sudo apt-get install socat conntrack ebtables ipset
# 因为是国内,可以直接下载kk软件
wget https://kubernetes.pek3b.qingstor.com/kubekey/releases/download/v2.2.0/kubekey-v2.2.0-linux-amd64.tar.gz
# 解压
tar -xzf kubekey-v2.2.0-linux-amd64.tar.gz
chmod +x kk

2、参考官方网址进行操作

3、安装完成后,按照终端上提示进行操作

# To start using your cluster, you need to run the following as a regular user:
 mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

# Alternatively, if you are the root user, you can run:
export KUBECONFIG=/etc/kubernetes/admin.conf

ubuntu创建用户,添加sudo权限

添加某个用户

# 这种方式添加用户,比较友好,能直接创建home目录
sudo adduser username
# 这种方式可以解决大多数情况下的sudo权限赋予(直接修改/etc/sudoers文件比较麻烦)
sudo usermod -aG sudo username

给某个用户添加docker操作权限

# 给xxx用户添加docker的组权限
sudo usermod -aG docker xxx

安装Docker engine

curl -fsSL https://get.docker.com -o get-docker.sh
# 从阿里云源站点进行安装,速度更快
sudo sh get-docker.sh Aliyun
# 之后可以通过下面的命令进行docker引擎的处理
sytemctl start/stop/restart/enable/disable docker

docker安装neo4j

例如在本地,新建一个目录【/data/neo4j-data/】
查看neo4j的docker要对外曝露的port是否被使用:

netstat -alpn | grep 7474
netstat -alpn | grep 7687

若端口已被使用,需要更换端口。确认端口未被使用,继续下面操作。
在【/data/neo4j-data/5.1.0-community】中,新建文件【docker-compose.yaml】,填写下面内容【其中部分配置,参考https://hub.docker.com/_/neo4j】,会在【/data/neo4j-data/5.1.0-community】中【自动创建一个目录data,mount到docker中】:

version: "3.6"
services:
  neo4j:
    image: neo4j:5.1.0-community
    container_name: neo4j-5.1.0-community
    restart: always
    network_mode: bridge
    ports:
    - "7474:7474"
    - "7687:7687"
    environment:
    - TZ=Asia/Shanghai
    volumes:
      - "./data:/data:rw"

执行下面操作,启动docker镜像

cd /data/neo4j-data/5.1.0-community
# 根据配置,启动docker镜像
docker-compose -f ./docker-compose.yaml up -d
# 不更改配置,仅重启docker镜像
docker-compose -f ./docker-compose.yaml restart
docker-compose -f ./docker-compose.yaml start
docker-compose -f ./docker-compose.yaml stop
# 谨慎操作,该命令会查看所有日志,不会动态显示最新日志
docker-compose -f ./docker-compose.yaml logs
# 谨慎操作,该命令会查看所有日志,并且动态显示最新日志
docker-compose -f ./docker-compose.yaml logs -f
# 该命令会查看日志最后5行,并且动态显示最新的日志
docker-compose -f ./docker-compose.yaml logs -f --tail=5
# 该命令会进入docker内部,进行相关查看
docker-compose -f ./docker-compose.yaml exec neo4j /bin/bash

启动之后,可以通过【http://127.0.0.1:7474】来进行配置访问

利用pk8,x509.pem转成jks签名文件

把pk8 跟 x509放到一个文件夹,并使用cd命令进入文件夹

openssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out platform.pem
# 其中android 为密码, Androiddebugkey为别名
openssl pkcs12 -export -in platform.x509.pem -out platform.p12 -inkey platform.pem -password pass:android -name androiddebugkey
keytool -importkeystore -deststorepass android -destkeystore ./platform.jks -srckeystore ./platform.p12 -srcstoretype PKCS12 -srcstorepass android

生成的jks,如果在android studio中gradle编译报错algorithm hmacpbesha256 not available,说明本地的jdk没有包含该算法包。

该算法包在jdk11.0.12中加入,所以将gradle使用的jdk升级到11.0.12之后的版本即可。

mac已安装xcode但是某些应用提示未安装的解决办法

提示xcode没有安装

#显示“未能找到金属编译器安装的Xcode。请安装Xcode并运行Xcode.app来接受协议,或确保激活的开发者目录设为当前的Xcode安装(使用xcode-select)

接下来只需要确认安装步骤就可以了
确保 Xcode 的安装路径是 【/Applications/Xcode.app】

执行 xcode-select -p 看一下输出,如果不是 /Applications/Xcode.app/Contents/Developer,那么再执行

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer