jenkin部署spring boot项目【从0到1】

写在前面,遇到的很多错误

本来想用docker启动Jenkins的,也这样做了,但是遇到了一个非常严重的问题,就是mvn命令在docker里面不生效,然后就修改文件,但是发现vi不存在,好的。接着用yum安装vi工具,发现yum不存在,我真服了,我搞个docker还得自己去下载yum再上传到docker,这么麻烦,我用它干啥

好的,接下来我们就用最简单的java -jar来启动jenkins.war,本来找了个兼容8、11、17的版本,结果等安装好发现一堆漏洞,你敢在生产环境用么,慌的一批,好,换版本。
在这里插入图片描述

再说一下为啥网上的页面大部分都不一样,这个就是因为jenkins是前后端一体的项目,而且有了漏洞马上修复,页面也在不断优化,所以就导致不同时间的不同版本的页面是不一样的,如果不按照博客的版本其实很难安装成功

而且Jenkins启动需要Java环境,并且在2022年11月已经弃用了Java8,使用Java8的jenkins漏洞也比较多,看上图,所以咱们用最新的jenkins以及Java17来操作

假设有条分割线


Linux 系统的管理员必须在安装 Jenkins LTS 2.387.2.之前在其 Linux 服务器上安装新的存储库签名密钥。

Red Hat/CentOS LTS 版本
$ sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key

sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key

rpm --import

yum install fontconfig java-11-openjdk
yum install jenkins

硬件最低要求:

  • 256 MB 内存,但建议超过 2 GB
  • 1 GB 驱动器空间(但如果运行,建议至少 10 GB 作为 Jenkins 和 Docker 容器)

小型团队的推荐硬件配置:

  • 4 GB+ 内存
  • 50 GB+ 驱动器空间

jenkins版本和Java版本的对应关系,官网地址https://get.jenkins.io/war-stable/

jenkins版本Java版本
2.361.1开始Java 11, or Java 17
2.346.1开始Java 8, Java 11, or Java 17
2.60.1开始Java 8
1.625.1 开始Java 7

docker的文件系统被称之为镜像

一 准备工作

最好是三台服务器,分别用来放gitlab、jenkins、部署项目
我只有一台阿里云,所以就把Jenkins和部署项目放一起了

或者使用VMware来充当服务器也行

1 新建springboot项目

1.1 打开idea,File–New–Project

在这里插入图片描述

自定义项目名字和Group,这里用java8的maven项目

在这里插入图片描述
1.2 boot版本别太高,3.0以上使用Java17的,这里选择2.7.10,选一个spring web依赖,部署到服务器要验证能不能调通接口
在这里插入图片描述
然后等一会就好了

1.3 写这样的一个代码,没有其它了
在这里插入图片描述

package cn.fox.mydemo.controller;import org.springframework.web.bind.annotation.*;@RestController
public class MyController {@RequestMapping("/getStr")public String getStr(){String str = "恭喜你,调用成功!";System.out.println(str);return str;}
}

yml文件,这里改一个端口号,因为jenkins是8080,避免冲突改为8081

server:port: 8081servlet:context-path: /@artifactId@/encoding:charset: UTF-8

2 将spring boot项目放到gitee上(一般情况公司代码在gitlab上托管的)

2.1 在gitee上注册账号,新建仓库
在这里插入图片描述
2.2 初始化redme文件
在这里插入图片描述
2.3 复制项目地址
在这里插入图片描述
拉取gitee项目需要用户名(就是个人主页的红框的名字,没有@符号)密码(就是登录gitee的密码)【这里尽量不要克隆,直接把本地项目推送到gitee就行。克隆下来在把项目复制进去再提交也行】

在这里插入图片描述

2.4 在本地电脑上打开git bash here窗口,将项目推送到gitee仓库

  • 初始化gitgit init
  • 关联远程仓库 git remote add origin 你的用户名gitee项目地址
  • 拉取远程仓库代码git pull origin master
  • 将spring boot项目添加git版本控制git add .
  • 提交到本地git仓库git commit -m "初始化"
  • 推送到远程仓库giteegit push origin master

在这里插入图片描述

在这里插入图片描述

二 下载并安装jdk17、maven、git和Jenkins

1 配置jdk

Linux一般会自带jdk
输入rpm -qa | grep java 搜索jdk的安装包
输入rpm -e --nodeps + 包名 来删除包

java 17页面
https://www.oracle.com/cn/java/technologies/downloads/#java17
在这里插入图片描述

下载、解压、移动目录、配置全局变量


wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gztar -zxvf jdk-17_linux-x64_bin.tar.gzmv jdk-17.0.7/ /usr/local/jdkvim /etc/profile加入下面几行,按esc,再按:wq保存并退出# java环境jdk路径
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin刷新配置
source /etc/profile查看Java版本
java -version

在这里插入图片描述

2 配置maven【打包用】

# 建立仓库位置的文件夹,-p确保目录名称存在,不存在的就建一个。
mkdir -p /mnt/repository# 去本地目录
cd /usr/local/# 下载二进制Linu的maven文件
wget https://archive.apache.org/dist/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz
# 解压 -C<目的目录>或--directory=<目的目录> 切换到指定的目录
tar -zxvf apache-maven-3.5.4-bin.tar.gz # 改个文件名字
mv apache-maven-3.5.4 /usr/local/maven# 改settings文件,这里是全路径,cd到conf目录再vim也行
vim /usr/local/maven/conf/settings.xml
  • 然后按/斜杠来查找关键字
  • 输入/localRepository再点击n来实现查找下一个关键字
  • i进入编辑状态,复制粘贴下面的两段配置
  • 最后按esc键退出编辑,按:wq保存

实在不会看一下这个Linux改文件内容的基础教程https://www.runoob.com/linux/linux-vim.html

本地仓库位置和使用阿里云镜像


<localRepository>/mnt/repository</localRepository><mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf>
</mirror>

如图所示

在这里插入图片描述

在这里插入图片描述

3 安装git【拉取代码用】

git官网不支持centOS直接安装git,有两种办法

简单的办法就是直接安装,然后等一会输入y,最后查看版本【版本最高1.8】

yum install gitgit --version

复杂的从源码编译安装【可以安装最新版,以及自定义目录】
https://mirrors.edge.kernel.org/pub/software/scm/git/git-manpages-2.37.0.tar.gz

4 安装jenkins

所有版本页面
https://get.jenkins.io/war-stable/
在这里插入图片描述

在这里插入图片描述

创建文件夹,进入文件夹,下载Jenkins.war文件

cd /
mkdir jenkins
cd jenkinswget https://get.jenkins.io/war-stable/2.401.1/jenkins.war

在这里插入图片描述

启动jar包,默认8080

nohup java -jar /jenkins/jenkins.war >/jenkins/jenkins.log 2>&1 &

也可以启动的时候指定端口号

nohup java -jar /jenkins/jenkins.war --httpPort=9999 >/jenkins/jenkins.log 2>&1 &

如果是java8会出现这个错误

nohup: ignoring input
Running with Java 8 from /usr/local/jdk/jre, which is older than the minimum required version (Java 11).
Supported Java versions are: [11, 17]
See https://jenkins.io/redirect/java-support/ for more information.

-----------------------分割线--------------------------------

本来想下载这个版本,但是安装上后发现一堆漏洞,故放弃此版本
下载2.346.3,这个版本是Java8、11、17都兼容的

wget https://get.jenkins.io/war-stable/2.346.3/jenkins.war

然后出现这个错误,大致意思就是https的证书失效,不能用wget下载

--2023-06-05 11:11:30--  https://get.jenkins.io/war-stable/2.346.3/jenkins.war
Resolving get.jenkins.io (get.jenkins.io)... 52.167.253.43
Connecting to get.jenkins.io (get.jenkins.io)|52.167.253.43|:443... connected.
ERROR: cannot verify get.jenkins.io's certificate, issued by ‘/C=US/O=Let's Encrypt/CN=R3’:Issued certificate has expired.
To connect to get.jenkins.io insecurely, use `--no-check-certificate'.

设置运行下载失效证书的文件

sudo yum install -y ca-certificates

再次下载即可,或则windows下载完上传到linux也行

三 访问并配置jenkins

3.1 浏览器输入http://localhost:8080出现如图所示

在这里插入图片描述

3.2 去服务器找密钥来解锁 Jenkins

cat 页面上的红色路径,密钥的位置可能和大家的不一样

# 查看密钥
cat /var/jenkins_home/secrets/initialAdminPassword

3.3 选择安装推荐的插件

在这里插入图片描述
在这里插入图片描述
等一会等安装完需要创建用户,也可以直接用admin

在这里插入图片描述
配置实例,默认的不用改,点击保存并完成

在这里插入图片描述
点击开始使用
在这里插入图片描述

然后就进入了jenkins页面

在这里插入图片描述

3.4 重启docker让配置生效

# 查看容器信息
docker ps -a
# 重启容器
# docker restart <容器 ID>
docker restart 5adc6d39e47a

在这里插入图片描述

四 安装插件

点击 系统管理–插件管理

在这里插入图片描述
4.1 安装gitee插件,拉取gitee上面的代码
在这里插入图片描述
在这里插入图片描述
4.2. 安装maven,打包jar包用
在这里插入图片描述

4.3. 安装ssh,将打好的jar包传输到测试、生产服务器
在这里插入图片描述
在这里插入图片描述
安装完成后选择重启,来刷新插件

4.4 jenkins页面配置环境变量

点击全局工具配置
在这里插入图片描述

3.1 配置maven
/usr/local/maven/conf/setting.xml

在这里插入图片描述

3.2 配置jdk

jenkins内部已经有jdk了,就不用单独在主机中安装并添加docker映射了

/usr/local/jdk

在这里插入图片描述

在这里插入图片描述

3.3 配置git

jenkins内部也有git,就按默认的来
yum install git
在这里插入图片描述

3.4 配置gitee凭证,拉取代码用

到这个地址上创建gitee令牌
https://gitee.com/profile/personal_access_tokens
在这里插入图片描述
输入描述,勾选projects、pull_requests点击提交
在这里插入图片描述
输入密码验证
在这里插入图片描述
将令牌保存下来
在这里插入图片描述

点击jenkins的系统配置
在这里插入图片描述
找到gitee,先添加令牌,选择Gitee API 令牌,粘贴上面的令牌,点击添加然后下拉框选择刚才创建的令牌
在这里插入图片描述
添加项目地址,和令牌(此文档的jenkins版本不允许直接写gitee的用户名和密码)

在这里插入图片描述

3.5 配置ssh凭证,把打好的包放到测试或生产服务器用
3.5.1 服务器用root用户创建一个子用户

Linux创建用户和组的基础教程https://www.runoob.com/linux/linux-user-manage.html

# 创建用户
useradd zhangsan# 修改密码,需要输入两次,而且为了保密,是看不见的,不是键盘坏了
passwd zhangsan# 查看用户关系,最后一行有刚才创建的zhangsan
cat /etc/passwd

默认/home/zhangsan目录可以使用,这里就不赋权限了,截图是我已经创建zhangsan了,就再创建一个lisi
在这里插入图片描述

3.5.2 我出现的问题说一下,使用阿里云服务器默认不允许使用账号密码远程连接服务器,我先打开运行这样做
# 编辑ssh配置
vim /etc/ssh/sshd_config# 输入/Pass,点击n键查找,找到将PasswordAuthentication no改为yes,然保存# 重启ssh
service sshd restart

在这里插入图片描述
在这里插入图片描述

3.5.3 jenkins页面找到ssh,应该是最下面,点击新增

在这里插入图片描述
输入基本信息,这里使用密码验证,建议使用令牌(后面再试验)
在这里插入图片描述
点击测试,出现success代表正确,然保存
在这里插入图片描述
我出现的问题说一下,使用阿里云服务器默认不允许使用账号密码远程连接服务器,我先打开运行这样做

# 编辑ssh配置
vim /etc/ssh/sshd_config# 输入/Pass,点击n键查找,找到将PasswordAuthentication no改为yes,然保存# 重启ssh
service sshd restart

在这里插入图片描述
在这里插入图片描述

八 构建任务

1 点击新建任务,输入任务名字,选择maven项目,点击确定

在这里插入图片描述
在这里插入图片描述

2 任务基础配置
2.1 源码管理–选git–写gitee项目地址–选令牌

令牌是前面配置好的
在这里插入图片描述

2.2 构建触发器
  • 选择gitee webhook选项(都是默认值)这句话后面有个地址,一会儿写到gitee上
  • 后面生成Gitee WebHook 密码用来给gitee配置
  • 最后勾选上时间戳
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
3 配置gitee,先做这一步,不然不能拉取代码
  1. 点击“管理”,点击“WebHooks”,点击“添加WebHook”
  2. 填写jenkins的URL和密钥,勾选push、激活,点击添加

在这里插入图片描述

在这里插入图片描述

2.3 配置Build

拉取代码

在这里插入图片描述

选择ssh将打包好的jar包发送到生产服务器
在这里插入图片描述

在这里插入图片描述

重新启动jar包脚本

#!/bin/bashjarName=my-demo1-0.0.1-SNAPSHOT.jar
PID=$(ps -ef | grep  ${jarName} | grep -v grep | awk '{ print $2 }')# -z 字符串 字符串的长度为零则为真
if [ -z "$PID" ]
thenecho "程序未启动。"
elseecho "程序在启动中,正在停止..."kill -9 $PID
fiecho '开启启动程序 ...'# 这里先刷新一下配置文件,
source /etc/profilenohup java -jar /app/jar/${jarName} >/app/jar/my-demo1.log 2>&1 &echo "starting service..."
sleep 20#根据重启后是否有当前应用判断启动是否成功
endPID=$(ps -ef | grep  ${jarName} | grep -v grep | awk '{ print $2 }')if [ -z "$endPID" ]
thenecho "程序启动失败。"
elseecho "程序重启成功...pid:"${endPID}fi

然后启动,查看执行情况在这里插入图片描述
查看执行情况
在这里插入图片描述

如果启动的时候出现这个错误
nohup: failed to run command ‘java’: No such file or directory
就执行一下下面的软连接
ln -s /usr/local/jdk /bin/java

如果遇到这个错误
nohup: failed to run command ‘java’: No such file or directory
就在脚本里面java之前增加source /etc/profile
oracle jdk会有这种情况,而openjdk不会有这种情况。

在这里插入图片描述

去服务器看日志,已经启动成功了
在这里插入图片描述

以下不用看了


【不用看】 CentOS操作系统上安装docker

官网地址https://docs.docker.com/engine/install/centos/

官网推荐用存储库的方式安装,方便后续升级

1 如果之前安装过,先删除docker包
sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine
2 安装软件包(提供实用程序)
sudo yum install -y yum-utils

安装完成后有Complete!提示

3 设置存储库,这个命令就是换行的,不要设置成一行
sudo yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo

在这里插入图片描述

4 安装分为直接安装最新版和自定义安装某个版本
  1. 1 安装最新版
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

此命令安装 Docker,但不启动 Docker。它还会创建一个组,但是,默认情况下不会向该组添加任何用户
安装完成后有Complete!提示

  1. 2 查找decker的版本
yum list docker-ce --showduplicates | sort -r

在这里插入图片描述
选择一个版本安装,中间那一列第一个冒号到第一个一个中划线就是版本号,将<VERSION_STRING>替换为版本号执行即可
此命令安装 Docker,但不启动 Docker。它还会创建一个组,但是,默认情况下不会向该组添加任何用户

sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io docker-buildx-plugin docker-compose-plugin
# 替换好版本号的命令
sudo yum install docker-ce-20.10.9 docker-ce-cli-20.10.9 containerd.io docker-buildx-plugin docker-compose-plugin
5 启动docker
sudo systemctl start docker
6 通过运行映像来验证 Docker 引擎安装是否成功。hello-world
sudo docker run hello-world

此命令下载测试映像并在容器中运行它。当 容器运行,它会打印确认消息并退出。

[root@iZ8vb917sZ ~]# sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete 
Digest: sha256:4e83453afed1b4fa1a3500525091dbfca6ce1e66903fd4c01ff015dbcb1ba33e
Status: Downloaded newer image for hello-world:latestHello from Docker!
This message shows that your installation appears to be working correctly.To generate this message, Docker took the following steps:1. The Docker client contacted the Docker daemon.2. The Docker daemon pulled the "hello-world" image from the Docker Hub.(amd64)3. The Docker daemon created a new container from that image which runs theexecutable that produces the output you are currently reading.4. The Docker daemon streamed that output to the Docker client, which sent itto your terminal.To try something more ambitious, you can run an Ubuntu container with:$ docker run -it ubuntu bashShare images, automate workflows, and more with a free Docker ID:https://hub.docker.com/For more examples and ideas, visit:https://docs.docker.com/get-started/

【不用看】 用docker安装并启动jenkins

1 创建docker镜像
1.1 去跟目录,创建一个 mydocker文件夹,再创建一个Dockerfile文件
cd /
mkdir mydockervim Dockerfile

复制下面的内容到Dockerfile文件

FROM jenkins/jenkins:2.387.2
USER root
RUN apt-get update && apt-get install -y lsb-release
RUN curl -fsSLo /usr/share/keyrings/docker-archive-keyring.asc \https://download.docker.com/linux/debian/gpg
RUN echo "deb [arch=$(dpkg --print-architecture) \signed-by=/usr/share/keyrings/docker-archive-keyring.asc] \https://download.docker.com/linux/debian \$(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list
RUN apt-get update && apt-get install -y docker-ce-cli
USER jenkins
RUN jenkins-plugin-cli --plugins "blueocean docker-workflow"

先按esc键
再输入:wq保存文件

1.2 从这个Dockerfile创建一个新的docker镜像,并给这个镜像指定一个有意义的名字,例如: “myjenkins-blueocean: 2.387.2-1”:

注意这里是有个点的.点是在当前目录构建

docker build -t myjenkins-blueocean:2.387.2-1 .

这里大概执行了10分钟,也不知道是不是网络不好
解释:每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写

  • FROM 指定使用哪个镜像源
  • RUN 指令告诉docker 在镜像内执行命令,安装了什么
  • -t 指定要创建的目标镜像名
1.3 查看docker镜像docker images

可以看到刚才创建的hello-world和myjenkins-blueocean
有5个字段

  • REPOSITORY 仓库名字
  • TAG 标签、版本号
  • IMAGE ID 镜像id(同一主机唯一的)
  • CREATED 创建时间,多长时间前
  • SIZE 镜像大小

在这里插入图片描述
还可以通过镜像id更改镜像名字或者标签

docker tag feb5d9fea6a5 my-hello-world:dev

在这里插入图片描述

2 启动 docker容器
2.1 常用参数及解释
docker run \--name jenkins-docker \--rm \--detach \--privileged \--network jenkins \--network-alias docker \--env DOCKER_TLS_CERTDIR=/certs \--volume jenkins-docker-certs:/certs/client \--volume jenkins-data:/var/jenkins_home \--publish 2376:2376 \docker:dind \--storage-driver overlay2
  • name(可选)指定用于运行镜像的Docker容器名称。 默认情况下,Docker会为容器生成一个唯一的名称。
  • rm(可选)关闭Docker容器(Docker镜像的实例)时会自动移除。
  • detach (可选)在后台运行Docker容器。 以后可以通过命令docker stop jenkins-docker来停止这个实例。
  • privileged 在Docker中运行Docker目前需要特权访问才能正常工作。 对于较新的Linux内核版本,这一要求可能会放宽。
  • network 这与前面步骤中创建的网络相对应。
  • network-alias 使Docker容器中的Docker作为主机名在jenkins网络中可用。
  • env 启用在Docker服务器中使用TLS。 由于使用了特权容器,所以建议这样做,尽管它需要使用下面描述的共享卷。 该环境变量控制管理Docker TLS证书的根目录。
  • volume 将容器内的/certs/client目录映射到一个名为jenkins-docker-certs的Docker卷。
  • volume 将容器内的/var/jenkins_home目录映射到名为jenkins-data的Docker卷。 这将允许由该Docker容器的Docker守护进程控制的其他Docker容器从Jenkins挂载数据。
  • publish (可选)公开主机的Docker守护进程端口。 这对于在主机上执行docker命令来控制这个内部docker守护进程非常有用。
  • docker:dind映像本身。 该镜像可以在运行前下载,使用命令:docker image pull docker:dind。
  • Docker卷的存储驱动程序。 有关支持的选项,请参阅"Docker存储驱动程序"。
2.2 启动docker

使用Docker network Create命令在Docker中创建网桥网络:

docker network create jenkins

f645900daaf868f162bf60cc7855aacdc6c8c4b0313872dbc6820fbe0589a64b

docker run --name jenkins-blueocean --restart=on-failure --detach \--network jenkins --env DOCKER_HOST=tcp://docker:2376 \--env DOCKER_CERT_PATH=/certs/client --env DOCKER_TLS_VERIFY=1 \--publish 8080:8080 --publish 50000:50000 \--volume jenkins-data:/var/jenkins_home \--volume jenkins-docker-certs:/certs/client:ro \myjenkins-blueocean:2.387.2-1
2.2 docker查看密钥
# 进入docker内部 访问Jenkins主目录的内容
docker container exec -it jenkins-blueocean bash

将密钥复制到浏览器,点击下一步
在这里插入图片描述

docker exec :在运行的容器中执行命令
docker exec [OPTIONS] 容器名字 COMMAND [ARG…]

OPTIONS说明
-d :分离模式: 在后台运行

-i :即使没有附加也保持STDIN 打开

-t :分配一个伪终端

七 配置环境变量(和本地环境变量类似)

2 建立主机maven目录与jenkins的映射关系jenkins-blueocean是刚才启动jenkinsm名字
docker cp /usr/local/maven jenkins-blueocean:/opt/

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/276673.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows蓝牙驱动开发之模拟HID设备(一)(把Windows电脑模拟成蓝牙鼠标和蓝牙键盘等设备)

by fanxiushu 2024-03-14 转载或引用请注明原作者 把Windows电脑模拟成蓝牙鼠标和蓝牙键盘&#xff0c;简单的说&#xff0c;就是把笨重的PC电脑当成鼠标键盘来使用。 这应该是一个挺小众的应用&#xff0c;但有时感觉也应该算比较好玩吧&#xff0c; 毕竟实现一种一般人都感觉…

Selenium 自动化 —— 使用WebDriverManager自动下载驱动

上一篇文章 入门和 Hello World 实例 中&#xff0c;我们提供了一个最简单的 Selenium 上手的例子。 但是某一天&#xff0c;突然发现相同的代码居然运行报错了。这是怎么回事呢&#xff1f; 日志排查 日志中其实提示的很明显了&#xff1a;Chrome浏览器和Chrome WebDriver的…

国产Copilot--通义灵码安装教程

文章目录 在 Visual Studio Code 中安装通义灵码步骤1步骤2步骤3步骤4 参考 在 Visual Studio Code 中安装通义灵码 通义灵码&#xff0c;是一款基于通义大模型的智能编码辅助工具&#xff0c;提供行级/函数级实时续写、自然语言生成代码、单元测试生成、代码注释生成、代码解…

Unity开发一个FPS游戏之二

在之前的文章中,我介绍了如何开发一个FPS游戏,添加一个第一人称的主角,并设置武器。现在我将继续完善这个游戏,打算添加敌人,实现其智能寻找玩家并进行对抗。完成的效果如下: fps_enemy_demo 下载资源 首先是设计敌人,我们可以在网上找到一些好的免费素材,例如在Unity…

NCV7356D1R2G接口集成芯片中文资料PDF数据手册参数引脚图规格书价格图片

产品概述&#xff1a; NCV7356 是一款用于单线数据链路的物理层器件&#xff0c;能够使用多种具碰撞分解的载波感测多重存取 (CSMA/CR) 协议运行&#xff0c;如博世控制器区域网络 (CAN) 2.0 版。此串行数据链路网络适用于不需要高速数据的应用&#xff0c;低速数据可在物理介…

nginx gzip性能优化 —— 筑梦之路

对比使用和不使用gzip static处理 1. 不使用 gzip static 时的 gzip 处理 如果你不使用 gzip_static 而只是 "gzip on"&#xff0c;它每次都会被压缩并发送。 虽然它实际上可能缓存在内存中&#xff0c;但传统观点是 "每次都会执行压缩处理&#xff0c;因此 CP…

Hello,Spider!入门第一个爬虫程序

在各大编程语言中&#xff0c;初学者要学会编写的第一个简单程序一般就是“Hello, World!”&#xff0c;即通过程序来在屏幕上输出一行“Hello, World!”这样的文字&#xff0c;在Python中&#xff0c;只需一行代码就可以做到。我们把这第一个爬虫就称之为“HelloSpider”&…

Kotlin:runBlocking导致App应用出现ANR问题实例

runBlocking简介 runBlocking 是常规函数&#xff1b; runBlocking 方法会阻塞当前线程来等待&#xff1b; runBlocking 的主线程会一直 阻塞 直到 runBlocking 内部的协程执行完毕。 runBlocking导致App应用出现ANR问题实例的效果 点击页面上的 刷新按钮 调用 refreshByrunBlo…

【云原生-kubernetes系列】--kubernetes日志收集

1、ELK架构 1.1、部署ES集群 https://mirrors.tuna.tsinghua.edu.cn/elasticstack/apt/7.x/pool/main/e/elasticsearch/ 1、下载软件包 rootes-server1:~# wget https://mirrors.tuna.tsinghua.edu.cn/elasticstack/apt/7.x/pool/main/e/elasticsearch/elasticsearch-7.12.0-…

媒体播放器及媒体服务器软件Plex

什么是 Plex &#xff1f; Plex 是一套媒体播放器及媒体服务器软件&#xff0c;让用户整理在设备上的有声书、音乐、播客、图片和视频文件&#xff0c;并通过流式传输至移动设备、智能电视和电子媒体播放器上。Plex 可用于 Windows、Android、Linux、OS X和 FreeBSD。 在接触 N…

基于SpringBoot和Echarts的全国地震可视化分析实战

目录 前言 一、后台数据服务设计 1、数据库查询 2、模型层对象设计 3、业务层和控制层设计 二、Echarts前端配置 1、地图的展示 2、次数排名统计 三、最终结果展示 1、地图展示 2、图表展示 总结 前言 在之前的博客中基于SpringBoot和PotsGIS的各省地震震发可视化分…

Redis系列学习文章分享---第三篇(Redis快速入门之Java客户端--短信登录+session+验证码+拦截器+登录刷新)

目录 Redis的短信登录实战解析1. 短信登录-基于session实现短信登录的流程2. 短信登录-实现发送短信验证码功能3. 短信登录-实现短信验证码登录和注册功能4. 短信登录-实现登录校验拦截器5. 短信登录-隐藏用户敏感信息6. 短信登录-session共享的问题分析7. 短信登录-Redis代替s…

代码+视频,R语言使用BOOT重抽样获取cox回归方程C-index(C指数)可信区间

bootstrap自采样目前广泛应用与统计学中&#xff0c;其原理很简单就是通过自身原始数据抽取一定量的样本&#xff08;也就是取子集&#xff09;&#xff0c;通过对抽取的样本进行统计学分析&#xff0c;然后继续重新抽取样本进行分析&#xff0c;不断的重复这一过程N&#xff0…

使用MQTT.fx和自定义Client(Ubuntu上实现)测试MQTT服务器(EMQX )

目录 概述 1 配置EMQX做MQTT服务器 1.1 登录EMQX 1.2 配置EMQX 1.2.1 配置客户端认证 1.2.2 创建用户 2 测试MQTT服务器 2.1 配置MQTT.fx工具 2.2 连接MQTT服务器 3 使用MQTT.fx发布和订阅信息 3.1 在MQTT.fx上发布信息 3. 2 在MQTT.fx上订阅信息 4 Ubuntu上实现MQ…

(done 剩个什么 3/4 unigram frequency 的玩意儿没懂) word2vec 算法,计算 嵌入矩阵(CBOW, Skip-gram)随机梯度下降法 SGD 负采样方案

参考视频1&#xff1a;https://www.bilibili.com/video/BV1vS4y1N7mo/?vd_source7a1a0bc74158c6993c7355c5490fc600 &#xff08;讲的太浅了&#xff09; 参考视频2&#xff1a;https://www.bilibili.com/video/BV1s64y1P7Qm?p4&vd_source7a1a0bc74158c6993c7355c5490fc…

微信小程序-webview分享

项目背景 最近有个讨论区项目需要补充分享功能&#xff0c;希望可以支持在微信小程序进行分享&#xff0c;讨论区是基于react的h5项目&#xff0c;在小程序中是使用we-view进行承载的 可行性 目标是在打开web-view的页面进行分享&#xff0c;那就需要涉及h5和小程序的通讯问…

苹果Find My App用处多多,产品认准伦茨科技ST17H6x芯片

苹果发布AirTag发布以来&#xff0c;大家都更加注重物品的防丢&#xff0c;苹果的 Find My 就可以查找 iPhone、Mac、AirPods、Apple Watch&#xff0c;如今的Find My已经不单单可以查找苹果的设备&#xff0c;随着第三方设备的加入&#xff0c;将丰富Find My Network的版图。产…

【Leetcode每日一题】 递归 - 反转链表(难度⭐)(35)

1. 题目解析 题目链接&#xff1a;206. 反转链表 这个问题的理解其实相当简单&#xff0c;只需看一下示例&#xff0c;基本就能明白其含义了。 2.算法原理 一、递归函数的核心任务 递归函数的主要职责是接受一个链表的头指针&#xff0c;并返回该链表逆序后的新头结点。递归…

复习C语言基础中的基础:C语言发展、C89 C99有何区别、C语言特点

参考《C程序设计&#xff08;第五版&#xff09;》&#xff08;谭浩强&#xff09;一书&#xff1a; 1. 发展、C89 C99 2. 特点 记得时不时回顾一下背景特点&#xff0c;加深对C语言的理解。

【学习记录】调试千寻服务+DTU+导远RTK过程的记录

最近调试车载定位的时候&#xff0c;遇到了一些问题&#xff0c;千寻服务已经正确配置到RTK里面了&#xff0c;但是导远的定位设备一直显示RTK浮动解&#xff0c;通过千寻服务后台查看状态&#xff0c;长时间显示不合法的GGA值。 首先&#xff0c;通过四处查资料&#xff0c;千…