Dockerfile - 基于 SpringBoot 项目自定义镜像(项目上线全过程)
目录
一、Dockerfile 自定义项目镜像
1.1、创建 SpringBoot 项目并编写
1.2、打包项目(jar)
1.3、编写 Dockerfile 文件,构建镜像
1.4、运行镜像并测试
一、Dockerfile 自定义项目镜像
1.1、创建 SpringBoot 项目并编写
a)简介:就是一个对 用户表 简单的增删改查的 SpringBoot 项目.
b)接口:采用 restful 风格
这里简单回顾以下 restful 风格接口规范
- 原则: GET(查询)、POST(添加)、PUT(全字段更新)、PATCH(部分字段更新)、DELETE(删除)
- 使用复数名词: user -> users、 car -> cars
- 请求和响应指定: request: @RequestBody; response: @ResponseBody
- 资源唯一标识需要通过路径传参,例如 id
@RestController
@RequestMapping("/user")
public class UserController {@Autowiredprivate UserService userService;@PutMapping("id")public String updateUser(@PathVariable("id") Integer id, @RequestBody User user) {user.setId(id);userService.update(user);return "ok";}@GetMapping("/{id}")public User getUser(@PathVariable("id") Integer id) {return userService.queryById(id);}@PostMappingpublic String addUser(@RequestBody User user) {userService.insert(user);return "ok";}@DeleteMapping("/{id}")public String delUser(@PathVariable("id") Integer id) {userService.deleteById(id);return "ok";}@GetMappingpublic List<User> getUserList() {return userService.queryAll();}}
c)配置文件:我们重点关注 服务器端口号 和 mysql 连接 ip 地址
server:port: 8081spring:datasource:url: jdbc:mysql://mysql:3306/demo?characterEncoding=utf8&useSSL=falseusername: rootpassword: 1111driver-class-name: com.mysql.cj.jdbc.Driver# 时间处理jackson:date-format: yyyy-MM-ddtime-zone: GMT+8# mybatis xml save path
mybatis:mapper-locations: classpath:mapper/*Mapper.xmlconfiguration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
Ps:由于将来会将 springboot 项目和 mysql 配置到同一个自定义的 docker 网络下,因此 mysql 的 url 配置中的 ip 就使用容器名称即可.
1.2、打包项目(jar)
a)打包完毕后,根据以下目录找到包地址
或者在 target 的目录下也能看到
b)在云服务器上创建一个工作目录,用来存放 jar包 和 Dockerfile文件,将 jar 包从主机移到远端服务器.
[root@VM-8-17-centos apps]# ls
ssm-docker-0.0.1-SNAPSHOT.jar
[root@VM-8-17-centos apps]# pwd
/root/cyk/apps
[root@VM-8-17-centos apps]#
1.3、编写 Dockerfile 文件,构建镜像
a)选取 openjdk1.8 镜像作为根基(open 表示开源的意思)
在 dockerhub 官网搜索 openjdk,找到对应的版本
找到 8-jdk
可以看到有下载命令,将 openjdk:8-jdk 写到 FROM 后面,表示以此镜像为基础进行开发.
b)编写 Dockerfile 文件
FROM openjdk:8-jdk
ENV BASE_PATH=/cyk/apps
WORKDIR $BASE_PATH
# 将宿主机上的 ssm-docker-0.0.1-SNAPSHOT.jar 移动到 /cyk/apps 目录下并改名为 apps.jar
ADD ssm-docker-0.0.1-SNAPSHOT.jar $BASE_PATH/apps.jar
EXPOSE 8081
ENTRYPOINT ["java", "-jar"]
CMD ["apps.jar"]
c)将 Dockerfile 文件移动到云服务器的工作目录( /cyk/apps )
[root@VM-8-17-centos apps]# rz -E
rz waiting to receive.
[root@VM-8-17-centos apps]# ls
Dockerfile ssm-docker-0.0.1-SNAPSHOT.jar
[root@VM-8-17-centos apps]# pwd
/root/cyk/apps
[root@VM-8-17-centos apps]#
d)构建镜像
[root@VM-8-17-centos apps]# docker build -t app:1.0 .
[+] Building 46.7s (8/8) FINISHED docker:default=> [internal] load build definition from Dockerfile 0.0s=> => transferring dockerfile: 326B 0.0s=> [internal] load .dockerignore 0.0s=> => transferring context: 2B 0.0s=> [internal] load metadata for docker.io/library/openjdk:8-jdk 16.2s=> [1/3] FROM docker.io/library/openjdk:8-jdk@sha256:8a9d5c43f540e8d0c003c723a2c8bd20ae350a2efed6fb5719cae33b026f8e7c 30.0s=> => resolve docker.io/library/openjdk:8-jdk@sha256:8a9d5c43f540e8d0c003c723a2c8bd20ae350a2efed6fb5719cae33b026f8e7c 0.0s=> => sha256:e24ac15e052e04a3462ef4984b5d83214f7f65c06f54acd3745a1926e226be16 7.81kB / 7.81kB 0.0s=> => sha256:9b829c73b52b92b97d5c07a54fb0f3e921995a296c714b53a32ae67d19231fcd 5.15MB / 5.15MB 0.9s=> => sha256:cb5b7ae361722f070eca53f35823ed21baa85d61d5d95cd5a95ab53d740cdd56 10.87MB / 10.87MB 0.7s=> => sha256:8a9d5c43f540e8d0c003c723a2c8bd20ae350a2efed6fb5719cae33b026f8e7c 1.29kB / 1.29kB 0.0s=> => sha256:9413213335131c4e06b21a8e379bd9b6a20afcd6b762540463d5f7c72942dcdd 1.79kB / 1.79kB 0.0s=> => sha256:0e29546d541cdbd309281d21a73a9d1db78665c1b95b74f32b009e0b77a6e1e3 54.92MB / 54.92MB 18.6s=> => sha256:6494e4811622b31c027ccac322ca463937fd805f569a93e6f15c01aade718793 54.57MB / 54.57MB 21.5s=> => sha256:668f6fcc5fa5532a1dd793456f64daf954192e0521fd65d42af584d5e2d93f55 5.42MB / 5.42MB 1.3s=> => sha256:c0879393b07ef5fa816c292b00e3eb4945890bc2a69ab0d1754240cbe9cedf21 212B / 212B 1.6s=> => sha256:bef50c41a74d450f2d708be5971c3ba635ed1a714af7f4fa1497886adb2fa734 106.00MB / 106.00MB 12.4s=> => extracting sha256:0e29546d541cdbd309281d21a73a9d1db78665c1b95b74f32b009e0b77a6e1e3 3.1s=> => extracting sha256:9b829c73b52b92b97d5c07a54fb0f3e921995a296c714b53a32ae67d19231fcd 0.3s=> => extracting sha256:cb5b7ae361722f070eca53f35823ed21baa85d61d5d95cd5a95ab53d740cdd56 0.3s=> => extracting sha256:6494e4811622b31c027ccac322ca463937fd805f569a93e6f15c01aade718793 3.2s=> => extracting sha256:668f6fcc5fa5532a1dd793456f64daf954192e0521fd65d42af584d5e2d93f55 0.2s=> => extracting sha256:c0879393b07ef5fa816c292b00e3eb4945890bc2a69ab0d1754240cbe9cedf21 0.0s=> => extracting sha256:bef50c41a74d450f2d708be5971c3ba635ed1a714af7f4fa1497886adb2fa734 3.3s=> [internal] load build context 0.1s=> => transferring context: 9.88kB 0.0s=> [2/3] WORKDIR /cyk/apps 0.2s=> [3/3] ADD ssm-docker-0.0.1-SNAPSHOT.jar /cyk/apps/apps.jar 0.1s=> exporting to image 0.1s=> => exporting layers 0.1s=> => writing image sha256:89839bc7dd0c546892b523403eb18d8b3a5d84993c4be71a9dd4ca2875bd1e9d 0.0s=> => naming to docker.io/library/app:1.0 0.0s
[root@VM-8-17-centos apps]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
app 1.0 89839bc7dd0c 28 seconds ago 526MB
1.4、运行镜像并测试
a)先自定义一个网桥,方便后续运行容器时直接加入到统一网络下.
[root@VM-8-17-centos apps]# docker network create mynet
dd8d11bdbd1ff64905a877c350752521f8dc772480b0a9db378769d283a143ac
[root@VM-8-17-centos apps]#
[root@VM-8-17-centos apps]#
[root@VM-8-17-centos apps]# docker network ls
NETWORK ID NAME DRIVER SCOPE
f84ca6fc4b48 bridge bridge local
a1b8a8a8e372 host host local
dd8d11bdbd1f mynet bridge local
38b4ab15453c none null local
d)启动容器
启动 mysql:
docker run -d --name mysql -p 3306:3306 -v mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=1111 --network mynet mysql:5.7
Ps:这里不要忘了准备 MySQL 的数据
启动 springboot 项目:
docker run -d --name app -p 8081:8081 --network mynet app:1.0
检查启动日志:
[root@VM-8-17-centos apps]# docker logs -f app. ____ _ __ _ _/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \\\/ ___)| |_)| | | | | || (_| | ) ) ) )' |____| .__|_| |_|_| |_\__, | / / / /=========|_|==============|___/=/_/_/_/:: Spring Boot :: (v2.7.6)2023-12-28 10:40:00.259 INFO 1 --- [ main] com.cyk.SsmDockerApplication : Starting SsmDockerApplication using Java 1.8.0_312 on 4ecafb679d7f with PID 1 (/apps/apps.jar started by root in /apps)
2023-12-28 10:40:00.273 INFO 1 --- [ main] com.cyk.SsmDockerApplication : No active profile set, falling back to 1 default profile: "default"
2023-12-28 10:40:02.271 INFO 1 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8081 (http)
2023-12-28 10:40:02.290 INFO 1 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2023-12-28 10:40:02.290 INFO 1 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.69]
2023-12-28 10:40:02.391 INFO 1 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2023-12-28 10:40:02.391 INFO 1 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1959 ms
Logging initialized using 'class org.apache.ibatis.logging.stdout.StdOutImpl' adapter.
Parsed mapper file: 'class path resource [mapper/UserMapper.xml]'
2023-12-28 10:40:03.399 INFO 1 --- [ main] o.s.b.a.w.s.WelcomePageHandlerMapping : Adding welcome page: class path resource [static/index.html]
2023-12-28 10:40:03.675 INFO 1 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8081 (http) with context path ''
2023-12-28 10:40:03.690 INFO 1 --- [ main] com.cyk.SsmDockerApplication : Started SsmDockerApplication in 4.412 seconds (JVM running for 5.138)
e)注意事项:运行容器时,一旦出现以下情况
no main manifest attribute, in apps.jar
一定要看一下 pom.xml 文件中是否存在 <skip>true<skip> 的配置,因为打包时他会跳过主类.
f)postman 测试接口
这里我为了防止黑客攻击,建立隧道和远端服务器连接,开放映射本地 9091 端口.
访问后,云服务器上检查日志,也可以观察到打印相应日志(测试成功)
[root@VM-8-17-centos ~]# docker logs app. ____ _ __ _ _/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \\\/ ___)| |_)| | | | | || (_| | ) ) ) )' |____| .__|_| |_|_| |_\__, | / / / /=========|_|==============|___/=/_/_/_/:: Spring Boot :: (v2.7.6)2023-12-28 10:40:00.259 INFO 1 --- [ main] com.cyk.SsmDockerApplication : Starting SsmDockerApplication using Java 1.8.0_312 on 4ecafb679d7f with PID 1 (/apps/apps.jar started by root in /apps)
2023-12-28 10:40:00.273 INFO 1 --- [ main] com.cyk.SsmDockerApplication : No active profile set, falling back to 1 default profile: "default"
2023-12-28 10:40:02.271 INFO 1 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8081 (http)
2023-12-28 10:40:02.290 INFO 1 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2023-12-28 10:40:02.290 INFO 1 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.69]
2023-12-28 10:40:02.391 INFO 1 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2023-12-28 10:40:02.391 INFO 1 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1959 ms
Logging initialized using 'class org.apache.ibatis.logging.stdout.StdOutImpl' adapter.
Parsed mapper file: 'class path resource [mapper/UserMapper.xml]'
2023-12-28 10:40:03.399 INFO 1 --- [ main] o.s.b.a.w.s.WelcomePageHandlerMapping : Adding welcome page: class path resource [static/index.html]
2023-12-28 10:40:03.675 INFO 1 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8081 (http) with context path ''
2023-12-28 10:40:03.690 INFO 1 --- [ main] com.cyk.SsmDockerApplication : Started SsmDockerApplication in 4.412 seconds (JVM running for 5.138)
2023-12-28 10:43:17.431 INFO 1 --- [nio-8081-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
2023-12-28 10:43:17.431 INFO 1 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2023-12-28 10:43:17.432 INFO 1 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 1 ms
Creating a new SqlSession
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@45f8529a] was not registered for synchronization because synchronization is not active
2023-12-28 10:43:17.524 INFO 1 --- [nio-8081-exec-1] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
2023-12-28 10:43:17.819 INFO 1 --- [nio-8081-exec-1] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
JDBC Connection [HikariProxyConnection@1585874780 wrapping com.mysql.cj.jdbc.ConnectionImpl@1380045] will not be managed by Spring
==> Preparing: select * from user;
==> Parameters:
<== Columns: id, name, age
<== Row: 1, cyk, 20
<== Row: 2, lyj, 19
<== Row: 4, pdder, 100
<== Total: 3
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@45f8529a]
相关文章:
Dockerfile - 基于 SpringBoot 项目自定义镜像(项目上线全过程)
目录 一、Dockerfile 自定义项目镜像 1.1、创建 SpringBoot 项目并编写 1.2、打包项目(jar) 1.3、编写 Dockerfile 文件,构建镜像 1.4、运行镜像并测试 一、Dockerfile 自定义项目镜像 1.1、创建 SpringBoot 项目并编写 a)简…...
论文查重降重写成大白话可以吗
大家好,今天来聊聊论文查重降重写成大白话可以吗,希望能给大家提供一点参考。 以下是针对论文重复率高的情况,提供一些修改建议和技巧,可以借助此类工具: 论文查重降重:用大白话解析 一、引言 写论文是每个…...
【WPF.NET开发】WPF中的命令
本文内容 什么是命令WPF 中的简单命令示例WPF 命令中的四个主要概念命令库创建自定义命令 命令是 Windows Presentation Foundation (WPF) 中的一种输入机制,与设备输入相比,它提供的输入处理更侧重于语义级别。 示例命令如许多应用程序均具有的“复制…...
怎么将epub转换成txt文件?
怎么将epub转换成txt文件?在当前时代,各种各样的电子书是很多人都喜欢接触并阅读的,但很少有人知道电子书格式的不同,其中就包括epub和txt格式,这两种格式虽然都可以展示文本但能达到的效果完全不一样,在某…...
Java单词排序
【问题描述】 编写一个程序,从一个文件中读入单词(即:以空格分隔的字符串),并对单词进行排序,删除重复出现的单词,然后将结果输出到另一个文件中。 【输入形式】从一个文件sort.in中读入单词。 …...
Moonsong Labs与Web3演变
作者:Derek Yoo 创建Moonsong Labs的理由 我们创建了Moonsong Labs,其使命是创建推动Web3采用的软件基础设施协议。我们的动力来自这样一个观念,即Web3使人类相互交往更加透明、高效和公正。这无疑是一个值得努力实现的目标,但更…...
流媒体学习之路(WebRTC)——GCC分析(4)
流媒体学习之路(WebRTC)——GCC分析(4) —— 我正在的github给大家开发一个用于做实验的项目 —— github.com/qw225967/Bifrost目标:可以让大家熟悉各类Qos能力、带宽估计能力,提供每个环节关键参数调节接口并实现一个json全配置…...
k8s持久化存储(NFS-StorageClass)
一、StatefulSet由以下几个部分组成: 用于定义网络标志(DNS domain)的Headless Service用于创建PersistentVolumes的volumeClaimTemplates定义具体应用的StatefulSet 二、StatefulSet 特点 StatefulSet 适用于有以下某个或多个需求的应用&a…...
java servlet软件缺陷库管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目
一、源码特点 java servlet软件缺陷库管理系统是一套完善的java web信息管理系统 系统采用serlvetdaobean(mvc模式),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOM…...
19|BabyAGI:根据气候变化自动制定鲜花存储策略
19|BabyAGI:根据气候变化自动制定鲜花存储策略 随着 ChatGPT 的崭露头角,我们迎来了一种新型的代理——Autonomous Agents(自治代理或自主代理)。这些代理的设计初衷就是能够独立地执行任务,并持续地追求长…...
面试经典150题(62-64)
leetcode 150道题 计划花两个月时候刷完,今天(第三十天)完成了3道(62-64)150: 62.(226. 翻转二叉树)题目描述: 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其…...
流量困境下,2024年餐饮商家的直播带货生意到底怎么做?
据官方数据显示,截至2023年2月,抖音生活服务餐饮商家直播间数量达到43万,2023年7月,抖音生活服务餐饮行业自播商家数较1月增长134%。可以说,直播带货已经成为餐饮商家的常态化的线上营销模式,也成为各大餐饮…...
C++ 具名要求-基本概念-指定该类型对象可以默认构造
指定该类型对象可以默认构造 要求 以下情况下,类型 T 满足可默认构造 (DefaultConstructible) : 给定 任意标识符 u, 下列表达式必须合法且拥有其指定的效果 表达式后条件T u对象 u 被默认初始化。T u{}对象 u 被值初始化或聚合初始化。…...
T527 Android13遥控适配
T527 Android13遥控的适配和官方提供的文档有些不一样,按照官方的文档不能够正常适配到自己的遥控器。 首先确保驱动是否有打开CONFIG_AW_IR_RX和CONFIG_RC_DECODERSy 以及CONFIG_IR_NEC_DECODERm,这个可以在longan/out/t527对应的目录下的.config查看是…...
第三部分使用脚手架:vue学习(61-65)
文章目录 61 创建vue脚手架![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/f71d4324be0542209e690ab9e886d199.png)62 分析脚手架结构63 render函数64 修改默认配置65 ref 属性 61 创建vue脚手架 写完vue文件,没有脚手架做翻译,浏览器不认识…...
【Linux学习笔记】解析Linux系统内核:架构、功能、工作原理和发展趋势
操作系统是一个用来和硬件打交道并为用户程序提供一个有限服务集的低级支撑软件。一个计算机系统是一个硬件和软件的共生体,它们互相依赖,不可分割。计算机的硬件,含有外围设备、处理器、内存、硬盘和其他的电子设备组成计算机的发动机。但是…...
springboot连接oracle报错ORA-12505解决方案
springboot连接oracle报错ORA-12505解决方案 springboot项目,在测试环境连接正常,生产环境连接数据库报错ORA-12505。 测试环境连接数据库语句为jdbc:oracle:thin:xxxx.xxxx.xxxx.xxxx:1521:orcl 生产环境修改对应ip后报错ORA-12505, TNS:listener does…...
服务器为什么大多用 Linux?
服务器为什么大多用 Linux? 在开始前我有一些资料,是我根据自己从业十年经验,熬夜搞了几个通宵,精心整理了一份「Linux的资料从专业入门到高级教程工具包」,点个关注,全部无偿共享给大家!&#…...
C++上位软件通过Snap7开源库访问西门子S7-200/合信M226ES数据块的方法
前言 上一篇文章中介绍了Snap7访问西门子S7-1200/S7-1500 DB块的方法,对于S7-200PLC是没有数据块访问的。S7-200PLC中Snap7只能通过访问MB块,VB块的方法进行和PLC之间的Snap7通信和数据交换。手头没有S7-200PLC故通过合信CTMC M226ES运动控制器进行测试&…...
通信及信号处理领域期刊影响因子、分区及期刊推荐-2024版
期刊名IF(202401)中科院分区(20231227)备注IEEE Journal on Selected Areas in Communications16.4计算机科学1区Top通信顶刊IEEE Transactions on Signal Processing5.4工程技术2区Top信号处理顶刊IEEE Transactions on Information Theory2.5计算机科学3区信息论顶刊IEEE Tra…...
cfa一级考生复习经验分享系列(十五)
备考背景: 本科211石油理科背景;无金融方面专业知识及工作经验;在职期间备考;有效备考时间2个月;12月一级考试10A。 复习进度及教材选择 首先说明,关于教材的经验分享针对非金融背景考生。 第一阶段&#x…...
如潮好评!优秀选手视角下的第二届粤港澳大湾区(黄埔)国际算法算例大赛
为发挥国家实验室作用、推动地区大数据与人工智能算法的生态体系建设,琶洲实验室(黄埔)受广州市黄埔区政府委托,于 2022 年创办粤港澳大湾区(黄埔)国际算法算例大赛,推动原始创新、赋能社会经济…...
软件测试之冒烟测试
一、什么是冒烟测试 这一术语源自硬件行业。对一个硬件或硬件组件进行更改或修复后,直接给设备加电。如果没有冒烟,则该组件就通过了测试。在软件中,“冒烟测试”这一术语描述的是在将代码更改嵌入到产品的源树中之前对这些更改进行验证的过…...
NE555学习笔记-2024
实物图片 NE555引脚图 内部时序图 示列1,红外接收电路 红外接收电路的工作原理:在上述电路中,TSOP1738构成了该电路的主要组成部分,旨在检测来自任何来源的红外信号。这用于检测38 KHz范围的信号,因此命名为“TSOP173…...
记一次docker中安装redis的过程
1. Docker搜索redis镜像 docker search redis2. Docker搜索redis镜像 docker pull redis3.Docker挂载配置文件 挂载 redis 的配置文件挂载 redis 的持久化文件(为了数据的持久化)。 conf文件位置: /home/redis/myredis/redis.conf data文件…...
Matlab进阶绘图第37期—多色悬浮柱状图
多色悬浮柱状图是一种特殊的柱状图。 与常规柱状图相比,多色悬浮柱状图可以通过悬浮的矩形展示最小值到最大值的范围(或其他范围表达),并通过颜色进行美化/区分/附加信息。 本文使用自己制作的Floatingbar小工具进行多色悬浮柱状…...
【嵌入式】About USB Powering
https://www.embedded.com/usb-type-c-and-power-delivery-101-power-delivery-protocol/https://www.embedded.com/usb-type-c-and-power-delivery-101-power-delivery-protocol/ Type-C接口有多强?PD协议又是什么?-电子发烧友网由于Type-C接口自身的强…...
MySQL——事物
目录 一.发现问题 二.什么时事物 三.事务提交方式 四.事物的常规操作方式 五. 事务隔离级别 1.如何理解隔离性 2.隔离级别 3.查看与设置隔离性 4.读未提交【Read Uncommitted】 5.读提交【Read Committed】 6.可重复读【Repeatable Read】 7.串行化【serializabl…...
Windows搭建RTSP视频流服务(EasyDarWin服务器版)
文章目录 引言1、安装FFmpeg2、安装EasyDarWin3、实现本地\虚拟摄像头推流服务4、使用VLC或PotPlayer可视化播放器播放视频5、RTSP / RTMP系列文章 引言 RTSP和RTMP视频流的区别 RTSP (Real-Time Streaming Protocol)实时流媒体协议。 RTSP定义流格式&am…...
私域营销,让你的生意从线下到线上都火爆!
一、提高流量 获取流量的五个关键要素:目标受众、传播渠道、内容策略、短期利益和长期价值 在当今竞争激烈的市场环境中,获取流量是每个企业和个人都必须面对的挑战。为了有效地吸引潜在客户,我们需要关注五个关键要素:目标受众…...
深圳律师网站建设/网络推广优化是干啥的
转载于:https://www.cnblogs.com/bokeyuan11/p/9183990.html...
网站维护费计入什么科目/搜索量排名
2019独角兽企业重金招聘Python工程师标准>>> 1. 系统日志 tail -f /var/log/messages Apr 18 11:21:56 web5 kernel: possible SYN flooding on port 80. Sending cookies. 2.检查连接数 netstat -n | awk /^tcp/ {S[$NF]} END {for(a in S) print a, S[a]} TIME_W…...
有域名怎么建网站/站长统计app软件大全
为什么80%的码农都做不了架构师?>>> 使用top命令,查看cpu占用过高的java PID (如PID9876)使用ps aux|grep PID (ps aux|grep 9876)查看是那个java程序占用cpu 。ps -mp PID -o THREAD,tid,ti…...
合肥做公司网站一般多少钱/抖音seo排名
2019独角兽企业重金招聘Python工程师标准>>> 随着公司近几年所开拓的业务领域不断增强,同时也需要相应的业务软件平台作为后台支持,因此,信息中心所设计开发的软件规模近几年增长速度也很快。随之而来的数据库的容量和复杂程度也成…...
辽宁城市建设网站/百度排名优化
Autotools包含一系列工具:automake、autoconf、autoscan、aclocal等工具组成,使用这组工具可以生成一个完整项目的Makefile。还是看流程图一目了然: 1、准备源文件 以最简单的helloworld为例: bookUbuntu:~/work/Autotools$ l…...
wordpress大学主题3.5/佛山网络推广公司
1、使用网关设计流程路径 2、基于数据的专用网关 某些事情只能在某些情况下才能完成,所以很少有过程总是走同一条路。 图2.1:xor网关。 在我们的简单示例(图2.1)中,我们希望深入烹饪的细节。在饥饿的驱使下,我们思考今天要做什么。我们只知道…...