Docker
Docker虚拟容器Docker简介对于开发者而言,配置环境往往都是一件麻烦事,尤其是各个项目环境不一致,又难以统一开发环境的情况最为棘手。此时,往往可以将各个项目的环境打包成 Docker 进行使用,以此部署到同一台服务器上。实现系统平滑移植,容器虚拟化技术。
Docker容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统虚拟机则是在硬件层面上实现虚拟化。与传统的虚拟机相比,Docker优势体现为启动快、占用小。
比较了 Docker 和传统虚拟化方式的不同之处:
传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程。
容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。
每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。
Docker 中主要有三大概念:镜像(Image),容器(Container),仓库(Repository)。
镜像:类似于虚拟机中的镜像,是一个包含有文件系统的面向Docker引擎的只读模板。任何 ...
常用命令和快捷键
常用命令和快捷键Linux常用命令编辑vi或vim一般模式:yy复制一行、p粘贴、dd删除一行、u撤销上一步操作、gg快速到达文档首行、G快速达到文档最末行
命令模式::/关键字:搜索、:set nu:显示行号、:set nonu:取消显示行号
用户和用户组操作用户useradd 用户名:添加用户
passwd 用户名:设置密码
userdel -r 用户名:删除用户同时删除用户目录
su 用户名:切换用户
id 用户名:查看用户信息
操作用户组groupadd 组名:添加组
groupdel 组名:删除组
gpasswd -a 用户名 组名:将用户加入到组
gpasswd -d 用户名 组名:将用户从组中移除
useradd -g 组名 用户名:添加用户并指定所属组(主组)
帮助linux帮助命令man 命令:查看内置命令手册(按回车翻一行、按空格翻一页、按q退出)
help 命令:查看命令内置帮助信息
查看文件和目录查看文件和目录pwd:查看当前所在目录
ls 目录:查看目录下的文件列表
ll 目录:以列表形式查看目录下的文件列表
查看文件内容cat -n 文件名:查看文件内容(- ...
Java八股文总结
Java八股文总结Java基础Java语言有哪些特点
简单性:Java语言的语法简洁,易于学习和使用。
跨平台性:Java语言的程序可以在不同的操作系统和硬件平台上运行,只需编写一次,到处运行。
面向对象:Java语言支持封装、继承、多态等面向对象的特性,可以提高代码的复用性和可维护性。
安全性:Java语言提供了多种安全机制,如字节码验证、沙箱模型、访问控制等,可以防止恶意代码的侵入和破坏。
多线程性:Java语言支持多线程编程,可以充分利用多核处理器的优势,提高程序的并发性能和响应速度。
分布性:Java语言支持网络编程,可以开发分布式系统和Web应用程序。
可移植性:Java语言的数据类型和运算符都有明确的定义,不受具体平台的影响,保证了程序的一致性和可移植性。
解释型:Java语言的程序需要经过编译器编译成字节码,然后由虚拟机解释执行,这样可以实现跨平台的特点,也方便了程序的调试和修改。
高性能:Java语言的虚拟机采用了高效的垃圾回收机制和即时编译技术,可以提高程序的运行效率和内存管理。
动态性:Java语言支持动态加载和链接,可以在运行时加载和卸载类文件,实现动态扩展和更新 ...
JUC入门
JUC入门JUC简介在 Java 中,线程部分是一个重点,本篇文章说的 JUC 也是关于线程的。JUC 就是 java.util .concurrent 工具包的简称。这是一个处理线程的工具包,JDK 1.5 开始出现的。
多线程回顾进程和线程进程(Process) 指在系统中正在运行的一个应用程序;程序一旦运行就是进程;进程— —资源分配的最小单位。
线程(thread) 系统分配处理器时间资源的基本单元,或者说进程之内独立执行的一个 单元执行流。线程——程序执行的最小单位。
线程的状态线程状态枚举类
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364public enum State { /** * Thread state for a thread which has not yet started. */ NEW, // ...
NodeJs
NodeJsBuffer模块Buffer 是一个类似于数组的 对象 ,用于表示固定长度的字节序列
Buffer 本质是一段内存空间,专门用来处理 二进制数据 。
特点:
Buffer 大小固定且无法调整
Buffer 性能较好,可以直接对计算机内存进行操作
每个元素的大小为 1 字节(byte)
使用创建 BufferNode.js 中创建 Buffer 的方式主要如下几种:
Buffer.alloc
12// 创建了一个长度为 10 字节的 Buffer,相当于申请了 10 字节的内存空间,每个字节的值为 0let buf_1 = Buffer.alloc(10) //=>结果为<Buffer 00 00 00 00 00 00 00 00 00 00>
Buffer.allocUnsafe
12// 创建了一个长度为 10 字节的 Buffer,buffer 中可能存在旧数据,可能会影响执行结果,所以叫 unsafe ,但是效率比 alloc 高let buf_2 = Buffer.allocUnsafe(10)
Buffer.from
1234// 通 ...
前端工程化
前端工程化了解前端工程化
本博客参考:前端工程化入门教程
刚接触前端的时候,做一个页面,都是用到的前端三件套(HTML + CSS + JS),需要几个页面,就需要创建几个HTML。而目前的前端开发工作,早已进入了前端工程化开发的时代,已经充满了各种现代化框架、预处理器、代码编译等等等,最终的产物也不再单纯是多个 HTML 页面,经常能看到 SPA / SSR / SSG 等词汇的身影。
传统开发的弊端在传统的前端开发模式下,前端工程师大部分只需要单纯地写写页面,都是在 HTML 文件里直接编写代码,所需要的 JavaScript 代码是通过 script 标签以内联或者文件引用的形式放到 HTML 代码里的,当然 CSS 代码也是一样的处理方式。
可能存在同名的变量声明,引起变量冲突
引入多个资源文件时,比如有多个 JS 文件,在其中一个 JS 文件里面使用了在别处声明的变量,无法快速找到是在哪里声明的,大型项目难以维护
大部分代码缺乏分割,比如一个工具函数库,很多时候需要整包引入到 HTML 里,文件很大,然而实际上只需要用到其中一两个方法
由第 4 点大文件延伸出的问题, s ...
Shell脚本自动部署项目
前后端Shell自动化部署Git安装安装Git1234# 列出git安装包yum list git# 在线安装gityum install git
生成SSH公钥1234# 生成公钥,生成过程中直接回车默认ssh-keygen -t rsa -C "1274604930@qq.com"# 找到SSH公钥cd ~/.ssh
id_rsa.pub 是公钥
id_rsa 是私钥
添加公钥在Gitee中添加公钥,用户可以通过主页右上角 「个人设置」->「安全设置」->「SSH公钥」->「添加公钥」 ,添加生成的 public key 添加到当前账户中。
克隆代码,选择SSH方式。
git@ 开头的URL,使用ssh方式免登录
JDK安装下载下载安装包:https://repo.huaweicloud.com/java/jdk/
删除自带JDK
输入:java -version
发现有输入:rpm -qa | grep java 检测jdk的安装包,(注意:rpm命令符没有时记得下载一个输入:apt-get install +命令名称)
接着 ...
AOP数据唯一性校验
AOP数据唯一性校验数据唯一性校验介绍在新增或修改操作的时候,我们经常需要校验数据是否已经存在,每次都是同样的逻辑,无非就是表名和查询条件的字段名不相同,代码显得很冗余。
AOP校验数据在新增或修改是否已经存在:
注解参数:表名,字段列表,新增还是修改,响应信息
新增:select count(*) from 表名 where 遍历字段列表 = 参数列表
修改:select count(*) from 表面 where 遍历字段列表 = 参数列表 and id != 修改数据id
通过切面拼接表名和查询条件,执行查询,如果返回结果大于0,则直接响应信息。
注解检查数据唯一性注解:
1234567891011@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public @interface CheckUnique { String table() default ""; CheckType type() default CheckType.ADD; Stri ...
文档转换导出
文档操作Word模板替换引入依赖使用Easypoi,文档地址:https://www.yuque.com/guomingde/easypoi
模板是处理复杂Excel或Word的简单方法,EasyPoi支持各种指令,最主要的就是各种fe的用法,整体风格和el表达式类似。采用的写法是{{}}代表表达式,然后根据表达式里面的数据取值
123456789101112131415161718192021222324252627282930313233343536373839404142<!-- 以下依赖用于word模板导出 | word to pdf | pdf to word <!-- word导出 方式:easypoi--><dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-base</artifactId> <version>4.4.0</version ...
Activiti使用总结
Activiti使用总结请假申请流程新增请假通过流程定义key决定启动什么流程,并将当前表单id设置BusinessKey,用于后续表单数据查询或回显,设置流程变量,决定由谁执行下一步任务(用于查询我的待办)
12345678910111213141516171819202122232425/** * 新增请假 * * @param leaveapply 请假 * @return 结果 */ @Override public int insertLeaveapply(Leaveapply leaveapply) { int rows = leaveapplyMapper.insertLeaveapply(leaveapply); // 发起请假流程 identityService.setAuthenticatedUserId(leaveapply.getUserId()); HashMap<String, Object> variables = ne ...