小阿轩yx-案例:jenkins部署Maven和NodeJS项目

news2024/10/6 3:32:59

小阿轩yx-案例:jenkins部署Maven和NodeJS项目

前言

  • 在 Java 项目开发中,项目的编译、测试、打包等是比较繁琐的,属于重复劳动的工作,浪费人力和时间成本。
  • 以往开发项目时,程序员往往需要花较多的精力在引用 jar 包搭建项目环境上,跨部门甚至跨人员之间的项目结构都有可能不一样。
  • Maven 的仓库管理、依赖管理、继承和聚合等特性为项目的构建提供了一整套完善的解决方案。
  • 将 Maven 集成到 jenkins 环境中,为开发人员的编译、打包、部署,测试等工作,提供了高效率的集成环境。

开发相关概念

什么是 Maven

  • 每一个开发工具(IDE)都有自己不同的项目结构,它们互相之间不通用。
  • 比如我在 eclipse 中创建的目录,无法在 idea 中进行使用,这就造成了很大的不方便。

Maven

  • 提供了一套标准化的项目结构,所有的 IDE 使用 Maven 构建的项目完全一样,所以 IDE 创建的 Maven 项目可以通用。
  • Apache 软件基金会组织维护的一款自动化构建工具,专注服务于 Java 平台的项目构建和依赖管理。
  • 这个单词的本意是:专家,内行。
  • 读音是 [ 'meɪvn ]。
  • Maven 项目对象模型(POM)是可以通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

Maven 的作用

项目构建

  • Maven 自动化 Java 项目的构建过程。
  • 它根据预定的生命周期并执行各个生命周期阶段的任务,实现编译、测试、打包等,并确保构建的一致性和可重复性。

依赖管理

  • Maven 根据 pom.xml 文件的依赖信息自动下载和管理库和框架。
  • 它规范了依赖解析和库搜索过程,避免了版本冲突和传递问题。

项目信息管理

  • Maven 利用 pom.xml 文件描述的项目信息生成报告和文档。
  • 提高了项目的可读性可维护性

插件及扩展

  • Maven 通过插件系统实现高度可扩展性
  • 插件增强项目功能,如代码生成、代码质量检查、测试报告等。

多模块项目支持

  • Maven 支持创建多模块项目,简化大型项目的组织和管理。
  • 多模块项目共享依赖、插件和属性配置,方便项目配置和维护。

持续集成

  • Maven 与各种持续集成工具(如 Jenkins、Travis CI等)相结合,实现项目的自动化构建、测试和部署等,有助于提高项目的质量和交付速度。

什么是构建

  • 就是以我们编写的 Java 代码、框架配置文件、其他资源文件、JSP 页面和图片等静态资源作为 “原材料”,去 “生产” 出一个可以运行的项目的过程。

构建过程的几个主要环节

  • 清理:删除以前的编译结果,为重新编译做好准备。
  • 编译:将 Java 源程序编译为字节码文件。
  • 测试:针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性
  • 报告:在每一次测试后以标准的格式记录和展示测试结果。
  • 打包:将一个包含诸多文件的工程封装为一个压缩文件用于安装或部署。Java 工程对应 jar 包,Web 工程对应 war 包。
  • 安装:在 Maven 环境下特指将打包的结果— jar 包或 war 包安装到本地仓库中。
  • 部署:将打包的结果部署到远程仓库或将 war 包部署到服务器上运行。

自动化构建

为什么要使用 Maven 这样的构建工具呢?

  • 看一个程序员在某一天的工作
  • 托马斯像往常一样早早的来到了公司,冲好一杯咖啡,打开了自己的邮箱 -- 很不幸,QA 小组发来了一封邮件,报告了他昨天提交的模块的测试结果 -- 有 BUG。
  • “好吧,反正也不是第一 次”,托马斯摇摇头进入 IDE,运行自己的程序,编译、打包、部署到服务器上,然后按照邮件中的操作路径进行测试。
  • “嗯没错,这个地方确实有问题”,托马斯说道。
  • 于是托马斯开始尝试修复这个 BUG,当他差不多有眉目的时候已经到了午饭时间。
  • 下午继续工作。BUG 很快被修正了,接着托马斯对模块重新进行了编译、打包、部署,测试之后确认没有问题了,回复了 QA 小组的邮件。
  • 一天就这样过去了,然而第二天、第三天,基本都是这样度过的。

梳理一下托马斯这一天中的工作内容

从中我们发现,托马斯的很大一部分时间花在了 “编译、打包、部署、测试” 这些程序化的工作上面,而真正需要有人接介入实现的分析问题和编码环节其实只占了很少一部分,如下图

能将这些程序化的工作交给机器自动完成么?

  • 当然是可以的,这就是自动化构建。

这样构建的流程就成了下图所示的过程

  • 此时 Maven 的意义就体现了出来,它可以自动的从构建过程的起点一致执行到终点

Maven 核心 -- pod 文件

  • Maven 能够实现自动化构建是和它的内部原理分不开的,而构建过程离不开一个关键对象,就是 pom 文件。

pom

  • 全称为 project object model,意思为项目对象模型
  • 通过 xml 表示 maven 项目,使用 pom.xml 来实现。
  • pom 文件是 Maven 项目的核心文件之一,包含了 Maven 项目的所有配置信息。

pom 文件

  • 是对项目描述:包括配置文件,开发者需要遵循的规则,组织和项目的 url,项目的依赖性,以及其他所有的项目相关因素。
  • 是 Maven 的重要组成部分,可以帮助开发者管理和构建项目。
  • 使用 Maven 进行项目构建时,需要根据项目的需要配置 pom 文件。
  • Maven 借助于这个文件,就可以自动化构建、测试、打包和发布 Java 项目。

Maven 项目自动化部署流程

电子商城项目简介

  • 作为后端开发人员,不仅需要开发项目,有时候还需要对项目进行部署,这时就少不了和 Linux 和 Docker 打交道。

mall 商城项目简介

  • mall 项目是一套电商系统,包括前台商城系统及后台管理系统,基于SpringBoot+MyBatis 实现采用 Docker 容器化部署。
  • 前台商城系统包含首页门户、商品推荐、商品搜索、商品展示、购物车、订单流程、会员中心、客户服务、帮助中心等模块。
  • 后台管理系统包含商品管理、订单管理、会员管理、促销管理、运营管理、内容管理、统计报表、财务管理、权限管理、设置等模块。

系统架构图

业务架构图

设备清单

主机名IP 地址软件包备注
Jenkins192.168.10.104Jenkins
gitlab192.168.10.105gitlab代码仓库
mall192.168.10.101dockermall 服务器

mall 商城运行环境部署

docker 环境的安装

  • 可以直接使用先有的 docker 环境

将所需的镜像通过 Xftp 上传至服务器(101)

进入镜像目录并导入镜像

[root@localhost ~]# cd images/
[root@localhost images]# bash imp_docker_img.sh

修改主机名

[root@localhost ~]# hostnamectl set-hostname mall
[root@localhost ~]# bash

开启 Docker 的远程管理 API

  • 因为 jenkins 直接在 docker 主机中生成镜像,所以 docker 主机需要开启远程 API,以便能够实现镜像的远程推送
[root@mall ~]# vim /usr/lib/systemd/system/docker.service
##修改以下内容
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375
  • -H tcp://0.0.0.0:2375

重载并重启 docker 进程

[root@mall ~]# systemctl daemon-reload
[root@mall ~]# systemctl restart docker

MySQL 安装

[root@mall ~]# docker pull mysql:5.7

使用命令启动 MySQL 服务

[root@mall ~]# docker run -p 3306:3306 --name mysql -v /mydata/mysql/log:/var/log/mysql -v /mydata/mysql/data:/var/lib/mysql -v /mydata/mysql/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7

参数说明

  • -p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口
  • -v /mydata/mysql/conf:/etc/mysql:将配置文件夹挂在到主机
  • -v /mydata/mysql/log:/var/log/mysql:将日志文件夹挂载到主机
  • -v/mydata/mysql/data:/var/lib/mysql/:将数据文件夹挂载到主机
  • -e MYSQL_ROOT_PASSWORD=root:初始化 root 用户的密码

上传数据库脚本 mall.sql 到当前工作目录

将 mall.sql 文件拷贝到 mysql 容器的 / 目录下

[root@mall ~]# docker cp mall.sql mysql:/

进入运行 MySQL 的 docker 容器

[root@mall ~]# docker exec -it mysql /bin/bash

登录到 msql

root@fe01d531da7a:/# mysql -uroot -proot --default-character-set=utf8

创建 mall 数据库

mysql> create database mall character set utf8;

进入 sql 脚本并导入到数据库

mysql> use mall;
Database changed
mysql> source /mall.sql;

设置授权

  • 创建一个 reader:123456 帐号并修改权限,使得任何 ip 都能访问
mysql> grant all privileges on *.* to 'reader'@'%' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)

退出容器

mysql> exit
Bye
root@fe01d531da7a:/# exit
exit

将所需的 elasticsearch 包上传至服务器(101)

修改虚拟内存区域大小,否则会因为过小而无法启动

[root@mall ~]# sysctl -w vm.max_map_count=262144
vm.max_map_count = 262144

启动 Elasticsearch 服务

[root@mall ~]# docker run -p 9200:9200 -p 9300:9300 --name elasticsearch -e "discorvery.type=single-node" -e "cluster.name=elasticsearch" -e "ES_JAVA_OPTS=-Xms512m -Xmx1024m" -v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins -v /mydata/elasticsearch/data:/usr/share/elasticsearch/data -d elasticsearch:7.17.3
  • 内存小的服务器可以通过 ES_JAVA_OPTS 来设置占用内存大小

修改 /mydata/elasticsearch/data 目录的权限

[root@mall ~]# chmod 777 /mydata/elasticsearch/data/
  • /usr/share/elasticsearch/data 目录没有访问权限,只需要修改 /mydata/elasticsearch/data 目录的权限,再重新启动即可。

下载中文分词器 IKAnalyzer(已有理想安装包,此步骤可跳过)

IKAnalyzer

  • 是一个开源的,基于 java 语言开发的轻量级的中文分词工具包

IK

  • 是目前最为流行的中文分词器,它是一个基于 Maven 构建的项目,具有 60万字/秒的高速处理能力;
  • 并且支持用户词典护展定义。

注意下载与 Elasticsearch 对应的版本

下载地址

https://github.com/medcl/elasticsearch-analysis-ik/releases

注意对应好版本要使用 7.17.3 的版本,本案例的 Elasticsearch 版本为 7.17.3,需要的 analysis-ik也是 7.17.3

下载所需的 unzip 压缩包

[root@mall ~]# yum -y install unzip

将其解压到 /mydata/elasticsearch/plugins/analysis-ik/ 目录中

[root@mall ~]# unzip elasticsearch-analysis-ik-7.17.3.zip -d /mydata/elasticsearch/plugins/analysis-ik

查看总用量

[root@mall ~]# ll /mydata/elasticsearch/plugins/analysis-ik/
总用量 1432
-rw-r--r--. 1 root root 263965 1月  18 2022 commons-codec-1.9.jar
-rw-r--r--. 1 root root  61829 1月  18 2022 commons-logging-1.2.jar
drwxr-xr-x. 2 root root   4096 1月  18 2022 config
-rw-r--r--. 1 root root  54931 4月  27 2022 elasticsearch-analysis-ik-7.17.3.jar
-rw-r--r--. 1 root root 736658 1月  18 2022 httpclient-4.5.2.jar
-rw-r--r--. 1 root root 326724 1月  18 2022 httpcore-4.4.4.jar
-rw-r--r--. 1 root root   1807 4月  27 2022 plugin-descriptor.properties
-rw-r--r--. 1 root root    125 4月  27 2022 plugin-security.policy

重启服务

[root@mall ~]# docker restart elasticsearch

Nginx 安装

  • nginx 为 mall 电商平台的管理前端提供的访问入口

下载 Nginx1.22 的 docker 镜像

[root@mall ~]# docker pull nginx:1.22

先运行一次容器(为了拷贝配置文件)

[root@mall ~]# docker run -p 80:80 --name nginx -v /mydata/nginx/html:/usr/share/nginx/html -v /mydata/nginx/logs:/var/log//nginx -d nginx:1.22

设置网站目录权限

[root@mall ~]# chmod -R 755 /mydata/nginx/html/

利用 Jenkins 部署 mall 商城后台程序

为 Jenkins 安装 maven 环境

(如果已经安装过,可以跳过此步)

解压

[root@jenkins ~]# tar zxvf apache-maven-3.8.6-bin.tar.gz

将 maven 移动到指定目录下

[root@jenkins ~]# mv apache-maven-3.8.6-bin.tar.gz /usr/local/maven/

设置 java 和 maven 的环境变量

[root@jenkins ~]# vim /etc/profile
##在文件末尾添加
export JAVA_HOME=/usr/local/java
export CLASSPATH=$JAVA_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH
export MAVEN_HOME=/usr/local/maven
export PATH=$PATH:/$MAVEN_HOME/bin
  • export MAVEN_HOME=/usr/local/maven
  • export PATH=$PATH:/$MAVEN_HOME/bin

让文件立即生效

[root@jenkins ~]# source /etc/profile

查看 maven 版本

[root@jenkins ~]# mvn -version
Apache Maven 3.8.6 (84538c9988a25aec085021c365c560670ad80f63)
Maven home: /usr/local/maven
Java version: 11.0.16.1, vendor: Oracle Corporation, runtime: /usr/local/java
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "6.9.7-1.el7.elrepo.x86_64", arch: "amd64", family: "unix"

修改 maven 更新源

[root@jenkins ~]# vim /usr/local/maven/conf/settings.xml
##修改 maven 的仓库
<mirrors>
    <mirror>
      <id>aliyunmaven</id>
      <mirrorOf>*</mirrorOf>
      <name>阿里云公共仓库</name>
      <url>https://maven.aliyun.com/repository/public</url>
    </mirror>
<mirrors>

阿里提供了 maven 更新源,可访问阿里官方网站查看详细信息

https://maven.aliyun.com

  •     <mirror>
  •       <id>aliyunmaven</id>
  •       <mirrorOf>*</mirrorOf>
  •       <name>阿里云公共仓库</name>
  •       <url>https://maven.aliyun.com/repository/public</url>
  •     </mirror>

为 Jenkins 配置 JDK 环境

  • 在 Jenkins 首页中,单击 “Manage Jenkins” → “system Configuration” → “Tools” → “JDK安装”,点击 “新增 JDK”,并取消勾选 “Install automatically”。
  • JDK 别名设置为 “jdk-11”,JAVA HOME 设置为本案例中 JDK 实际安装路径 “/usr/local/java”。

为 Jenkins 配置 Maven 环境

  • 找到 “Maven 安装” 选项,然后单击 “新增 Maven”,取消勾选 “Install automatically”,并设置 Name(名称)为 “maven”、MAVEN HOME 为 “/usr/local/maven”。

  • 以上各项配置完毕后,点击保存按钮,推荐重启下 Jenkins 服务

可以在这里做个快照,方便后续使用

gitlab 中创建项目

gitlab 中导入gitee 中的 mall 项目

在 gitlab 中导入 mall 项目

  • https://gitee.com/kgc-wjq/mall.git

参数如下图

修改代码

  • 直接在 gitlab 中修改项目文件 pom.xml 的代码。
  • 将远程 docker 主机的 ip 地址设置为本案例中的 docker 主机的 IP 地址:192.168.10.101。
  • 修改好后点击提交修改的按钮。

获取 gitlab 仓库 URL

链接

  • http://192.168.10.105/root/mall.git

在 jenkins 中添加 SSH Server

  • “Manage Jenkins” --> “System”,添加 “Publish over SSH”,点击 SSH Servers 的新增按钮,添加一个 SSH 的主机。
  • 参数如下图,并保存设置。

为 Jenkins 添加 SSH remote hosts

  • 本案例中,要通过 Jenkins 在 docker 主机上执行命令,需要将 docker 添加为 Jenkins 的 ssh 远程主机

为 docker 主机添加凭据

添加 SSH remote hosts

  • “Dashboard” --> “Manage Jenkins” --> “System” -- > “SSH remote hosts”

新建 Item

设置项目参数

源码管理设置

  • 源码管理中,选中 “Git”,并在仓库 URL 中填写 mall 项目代码仓库的 URL 地址,在指定分支中将分支填写为 “*/main”。
  • http://192.168.10.105/root/mall.git

设置 maven 构建参数

  • 选择 “Build” 模块,“Goals and options” 填写 “clean package”。

在 Build 下配置 Goals and options,即给 mvn 命令的参数这里可以设置的 maven 参数如下

mvn clean

  • 清理环境,清除 target 文件夹。

mvn compile

  • 编译,将 Java 源文件编译成 class 文件。

mvn test

  • 执行 test 目录下的测试用例。

mvn package

  • 打包,将 Java 工程打成 jar 包。

mvn clean package -Dmaven.test.skip=true

  • 跳过单元测试

添加 “Post steps” -- “Execute shell”

  • 在 “Post steps” 选项中,点击 “Add post-build step” 按钮,添加一个构建后的步 “Executeshell”,这里需要将后台程序的启动脚本目录 mall-sh 上传到 Jenkins 主机的 root 家目录下,然后在下图界面中设置同步脚本:scp -r /root/mall-sh 192.168.10.101:/root。

此命令是在 Jenkins主机上执行的。

添加 “Post steps” -- “Execute shell script on remote host using ssh”

  • 点击 “Add post-build step” 按钮,选择 “Execute shell script on remote host using ssh”,添加要在远程主机执行的脚本。
  • 此插件时利用 ssh 协议在远程主机上执行命令,因此,Jenkins 主机和远程的 docker 主机之间需要有免密连接的环境。

注意这个脚本是放在远程主机上的。

  • 上一步中,我们用 scp 的方法将脚本拷贝到了远程主机。
  • 这个步骤中,就需要在远程主机中执行这些脚本。

设置如下

  • chmod +x /root/mall-sh/*
  • /root/mall-sh/mall-admin.sh
  • /root/mall-sh/mall-search.sh
  • /root/mall-sh/mall-portal.sh

设置免密连接

[root@jenkins ~]# ssh-keygen
[root@jenkins ~]# ssh-copy-id 192.168.10.101
  • 如果 Jenkins 主机已有 ssh 密钥对,可以不必生成,直接执行 ssh-copy-id 即可。

保存并构建

  • 保存设置后点击 “Build Now”。
  • 第一次构建需要较长的时间。
  • 此步骤需要联网,注意网络状态。
  • 如果网络状态不好,会影响拉取 maven 更新源的 jar 包,最终导致构建失败。
  • 构建过程需要利用 java 镜像,需要在 docker 主机中提前拉取好 iava 的镜像。

访问后台程序验证结果

mall-admin 的后台系统 api 接口文档地址

  • http://192.168.10.101:8080/swagger-ui/

mall-search 的搜索系统 api 接口文档地址

  • http://192.1658.10.101:8080/swagger-ui/

mall-portal 的前台 api 接口文档地址

  • http://192.168.10.101:8085/swagger-ui/

使用 Jenkins 一键打包部署 NodeJS 前端应用

什么是 NodeJS

  • Javascript 诞生于 1995 年,几乎是和互联网同时出现;
  • Node.js 诞生于 2009 年,比 Javascript 晚了 15 年左右。

  • 在 Node.js 之前,Javascript 只能运行在浏览器中,作为网页脚本使用,为网页添加些特效,或者和服务器进行通信。
  • 有了 Node.js 以后,Javascript 就可以脱离浏览器像其它编程语言一样直接在计算机上使用,想干什么就干什么,再也不受浏览器的限制了。
  • Node.is 并不是一门新的编程语言,也不是一个 Javascript 的框架,它是一套 JavaScript 运行环境,用来支持 Javascript 代码的执行。
  • 用编程术语来讲,Node.js 是一个 Javascript 运行时(Runtime)。

为 jenkins 安装 NodeJS

(如果已装过,可以跳过此步)

  • 对 NodeJS 项目进行构建的时候,需要 g++的编译环境,不同的项目 Node]s 的版本也不一样,在进行部署的时候要根据项目的依赖版本进行选择。

下载安装所需的相关依赖包

[root@jenkins ~]# yum -y install gcc* automake autoconf libtool make

将所需的 node tar 包上传至服务器(104)

解压

[root@jenkins ~]# tar zxvf node-v14.18.0-linux-x64.tar.gz

移动到指定目录下

[root@jenkins ~]# mv node-v14.18.0-linux-x64 /usr/local/nodejs14

链接文件

[root@jenkins ~]# ln -s /usr/local/nodejs14/bin/* /usr/local/bin/

查看 node 和 npm 的版本

[root@jenkins ~]# node -v
v14.18.0
[root@jenkins ~]# npm -v
6.14.15

gitlab 添加项目

gitlab 中创建项目

在 gitlab 中导入mall-admin-web 项目

  • 项目的 gitee 仓库链接为:https://gitee.com/kgc-wjq/mall-admin-web.git

参数如下

修改代码

  • 修改 config 目录下 “prod.env.js” 文件将 BASE_API 接口地址修改 “http://192.168.10.101:8080”,并提交修改。

拷贝出项目的仓库 URL

  • http://192.168.10.105/root/mall-admin-web.git

构建 NodeJS 项目

构建一个自由风格的软件项目

设置源码管理

  • 选中 “Git”,并将 mall-admin-web 的项目仓库 URL 填写进去,修改分支为 “*/main”

添加一个执行 shell 的构建

  • 在 “Build Steps” 中,点击增加构建步骤按钮,增加一个 “Execute shell”
  • 添加一个执行 shell 的构建,用于将我们的前端代码进行编译打包

脚本代码如下

  • 如果 npm 镜像站无法使用,会导致构建失败,可以替换为其他的镜像服务器

国内 npm 镜像站

  • npm config set registry https://registry.npmmirror.com
  • npm config set registry http://mirrors.cloud.tencent.com/npm/
  • npm config set registry https://mirrors.huaweicloud.com/repository/npm/

增加构建后操作

  • 在 “构建后操作” 中,增加 “Send build artifacts over ssH”,利用该插件在远程 docker 主机上执行命令,此处需要在 docker 主机上为网站目录授权,否则,当把项目推送到 docker 主机后,其网站目录的权限不足,页面会提示 403 的错误。

授权命令为

  • chmod -R 755 /mydata/nginx/html/

如下图

保存设置后开始构建

登录前端验证项目部署结果

  • http://192.168.10.101

默认账号密码

  • admin
  • macro123

APP 端测试

  • APP 端在测试的时候可以使用 HBuilderx,这是一个手机端的模拟器,可以测试 APP 应用程序。

导入 APP 项目

  • 在 windows 中使用 HBuilderx导入 mall-app-web-1.0.0 项目,在 “文件” 菜单中导入本地项目,找到 “mall-app-web-1.0.0” 的项目文件夹,导入即可。

修改 mall-app-web 连接地址

  • 访问在线接口无需搭建后台环境,只需将 mall-app-web-1.0.0/utils/requestutil.js 文件中的config.baseUrl 改为线上地址即可,修改requestutil.js 文件内容

运行移动端网页

  • 在 HBuilder X 中使用 “运行” --> “运行到浏览器” --> “Chrome” 运行项目。
  • 如果是第一次执行,需要下载相关插件。

运行成功后会自动打开下面地址(将浏览器改为手机模式)

  • http://localhost:8060/

如果浏览器没有启动的话,可以直接访问如下地址访问

  • http://localhost:8060/

小阿轩yx-案例:jenkins部署Maven和NodeJS项目

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

8月AI绘画方向APP用户量及人均时长排行榜

全球用户量Top10&#xff08;APP&#xff09; 排名 产品名 分类 8月MAU 上月对比 1 Remini 人工智能修图 29.14M -0.88% 2 FaceApp AI 人脸编辑器 26.46M 0.14% 3 Hypic Photo Editor & AI Art 17.37M 5.74% 4 AI Mirror AI Art Photo Editor 16.81…

【第三版 系统集成项目管理工程师】第16章 监理基础知识

持续更新。。。。。。。。。。。。。。。 【第三版】第十六章 监理基础知识 16.1 监理的意义和作用1.监理的地位和作用(非重点)-P5692.监理的重要性与迫切性-P5703.监理技术参考模型-P570 16.2 监理相关概念1.信息系统工程监理-P5722.信息系统工程监理单位-P5723.业主单位-P57…

LeNet学习

Lenet是一个 7 层的神经网络&#xff0c;包含 3 个卷积层&#xff0c;2 个池化层&#xff0c;1 个全连接层。其中所有卷积层的所有卷积核都为 5x5&#xff0c;步长 strid1&#xff0c;池化方法都为全局 pooling&#xff0c;激活函数为 Sigmoid&#xff0c;网络结构如下&#xf…

25重庆长安深蓝控制器开发面试经验 深蓝最常见面试问题总结

【面试经历】 秋招气氛组选手的第一场面试,9.17网申,9.24电话约面,9.26线上面试。问得很细,全长约1个小时 1. 自我介绍、项目介绍 2.项目细节,遇到了哪些困难;有没有PCB设计经验DC-DC芯片选型,电源噪声的原因、怎么消除、 3.画BUCK和BOOST拓扑图,讲原理 4.了解MCU的主…

ffmpeg面向对象——拉流协议匹配机制探索

目录 1.URLProtocol类2.协议匹配的基础接口3. URLContext类4. 综合调用流程图5.rtsp拉流协议匹配流程图及对象图5.1 rtsp拉流协议调用流程图5.2 rtsp拉流协议对象图 6.本地文件调用流程图及对象图6.1 本地文件调用流程图6.2 本地文件对象图 7.内存数据调用流程图及对象图7.1 内…

李宏毅深度学习-梯度下降和Batch Normalization批量归一化

Gradient Descent梯度下降 ▽ -> 梯度gradient -> vector向量 -> 下图中的红色箭头&#xff08;loss等高线的法线方向&#xff09; Tip1: Tuning your learning rates Adaptive Learning Rates自适应lr 通常lr会越来越小 Adaptive Learning Rates中每个参数都给它不…

基于依赖注入技术的.net core WebApi框架创建实例

依赖注入&#xff08;Dependency Injection, DI&#xff09;是一种软件设计模式&#xff0c;用于实现控制反转&#xff08;Inversion of Control, IoC&#xff09;。在ASP.NET Core中&#xff0c;依赖注入是内置的核心功能之一。它允许你将应用程序的组件解耦和配置&#xff0c…

【JAVA开源】基于Vue和SpringBoot的服装生产管理系统

本文项目编号 T 066 &#xff0c;文末自助获取源码 \color{red}{T066&#xff0c;文末自助获取源码} T066&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

【LVGL进阶日记】① 开源LVGL在MCU上的移植

关注+星标公众号,不错过精彩内容 作者 | 量子君 微信公众号 | 极客工作室 【LVGL进阶日记】专栏目录 第一章 开源LVGL在MCU上的移植 文章目录 前言一、LVGL介绍1.1 LVGL的主要特性如下:1.2 LVGL对MCU的要求如下:二、移植LittlevGL到MCU2.1 LVGL源码下载和文件组织2.2 LVGL配…

【AI人工智能】文心智能体,你的情诗小助理,哄女朋友必备, 低代码工作流易上手,干货满满,不容错过哦

&#x1f4aa;&#x1f3fb; 1. Python基础专栏&#xff0c;基础知识一网打尽&#xff0c;9.9元买不了吃亏&#xff0c;买不了上当。 Python从入门到精通 &#x1f601; 2. 毕业设计专栏&#xff0c;毕业季咱们不慌忙&#xff0c;几百款毕业设计等你选。 ❤️ 3. Python爬虫专栏…

数字图像处理项目——基于Unet网络实现MRI图像的双肺区域分割(论文/代码)

完整的论文代码见文章末尾 以下为核心内容 摘要 在医学图像处理领域&#xff0c;肺部图像的分割是一个重要的研究方向&#xff0c;特别是针对肺部疾病的检测与诊断。传统的X射线和CT&#xff08;计算机断层扫描&#xff09;是常用的肺部成像技术&#xff0c;但MRI&#xff08…

I/O多路转接

目录 一、select 1.1、select概念 1.2、select 函数原型 1.3、理解 select 执行过程 1.4、select就绪条件 1.4.1、读就绪 1.4.2、写就绪 1.4.3、异常就绪&#xff08;了解&#xff09; 1.5、select 基本工作流程 1.6、select服务器 1.6.1、Sock.hpp 1.6.2、selectS…

python实战四:输入一个年份,判断是否是闰年

问题&#xff1a; 从键盘获取一个四位的整数年份&#xff0c;判断其是否是闰年。闰年的判断条件为︰能被4整除但不能被100整除&#xff0c;或者能被400整除。 需求方法&#xff1a; 使用 input() 函数从键盘获取输入。输入的年份是一个字符串。检查输入是否为四位数&#xf…

Elasticsearch学习笔记(四) Elasticsearch集群安全配置一

继续我们的实验。先谈一下我对Elasticsearch粗浅的一些认识&#xff0c;首先Elasticsearch是一个非常宏大的技术栈&#xff0c;发展到今天围绕着Elasticsearch已经产生了更多的组件、套件。因此在看官方文档或者别人的一些教程的时候经常会遇到ELK,elastic stack等。elastic st…

如何在电脑上浏览手机界面

联想浏览器中&#xff0c;点击右键-》检查&#xff0c;进入开发者工具&#xff1a; 点击如上&#xff0c;红色框框选中的手机浏览模式即可。

【微服务】服务注册与发现、分布式配置管理 - Nacos

概述 Nacos是阿里巴巴旗下的一个开源产品&#xff0c;目前市场使用率还是比较高的。在最初开源时&#xff0c;Nacos选择内部三个产品合并并统一开源&#xff0c;这三个产品分别是&#xff1a;非持久化注册中心&#xff08;Configserver&#xff09;、持久化注册中心&#xff0…

InnoDB 事务模型

文章目录 InnoDB 事务模型事务ACID特性事务隔离级别 事务操作事务并发问题事务数据读写类型Consistent Nonlocking Reads 快照读Locking Reads 加锁读 MVCC 并发控制实现原理InnoDB 隐藏列Read ViewUndo log实现过程 MVCC与隔离级别MVCC和辅助索引 幻读可重复读MVCC会出现幻读的…

腾讯自研Git客户端,助力每个人都可以轻松使用Git

工具介绍 UGit是一款腾讯自研的Git客户端&#xff0c;为了让每个人都可以轻松使用Git&#xff0c;从而提高开发效率和团队协作的流畅性。支持工蜂MR/CR&#xff0c;工蜂议题管理&#xff0c;另外对于Git的原生特性有着深度支持。 支持的系统 支持macOS 10.11、Apple Silicon和…

【数据结构】什么是哈希表(散列表)?

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 目录 &#x1f4cc;哈希表的概念 &#x1f4cc;哈希函数的构造方法 &#x1f38f;直接定址法 &#x1f38f;除留余数法 &#x1f38f;平方取中法 &#x1f38f;折叠法 &#x…

自动驾驶的技术实现及原理

自动驾驶技术是现代科技领域中一项引人注目的创新&#xff0c;它具有变革运输行业并提升道路安全的潜力。随着人工智能、传感器技术以及数据处理能力的不断提升&#xff0c;自动驾驶车辆已经从实验室研究逐渐走向现实应用。 自动驾驶的技术实现及原理 1. 自动驾驶技术的核心…