0%

Jenkins 是一款开源的持续集成(DI)工具,广泛用于项目开发,能提供自动构建,测试,部署等功能。作为领先的开源自动化服务器,Jenkins 提供了数百个插件来支持构建、部署和自动化任何项目。

这里主要介绍如何使用docker安装Jenkins,以及如何通过Jenkins pipeline实现自动化部署。

1. 安装Jenkins

直接下载最新的docker镜像安装即可,

1
docker run -p 8080:8080 -p 50000:50000 -d -v /var/run/docker.sock:/var/run/docker.sock -v jenkins_home:/var/jenkins_home my-jenkins-jdk11

这里需要注意几点:

  • 需要将宿主机的/var/run/docker.sock映射到容器中,这样在容器内只要向/var/run/docker.sock发送http请求就能和Docker Daemon通信了,如果容器内有docker文件,那么在容器内执行docker ps、docker port这些命令,和在宿主机上执行的效果是一样的,因为容器内和宿主机上的docker文件虽然不同,但是他们的请求发往的是同一个Docker Daemon;可以参考https://blog.csdn.net/boling_cavalry/article/details/92846483

  • 将容器内目录挂载到宿主机的目录,这样我们可以在宿主机上对文件的修改同步到容器内。

阅读全文 »

记录下最近在R2s上安装配置OpenWRT的一些过程

1. 刷写固件

固件推荐:https://github.com/klever1988/nanopi-openwrt

关于ssr无法科学上网的问题,参考https://github.com/klever1988/nanopi-openwrt/issues/1146,将监视端口Lan取消勾选。

刷写过程:准备好sd卡和读卡器,插到电脑上,用balenaEtcher选择镜像文件(注意不用解压),然后直接写入即可。之后将sd卡插到R2s上即可

阅读全文 »

前阵子组装了一个主机,然后在主机上搭建了一个Linux的服务器,这里主要记录其流程和碰到的问题。

1. 安装Ubuntu Server 20.04

制作U盘启动盘并安装

注意Ubuntu Server版本并没有图形界面,因此后续的安装都需要键盘配合完成。

阅读全文 »

年中的时候因为换工作的缘故,陆续参加了华为、蚂蚁、字节跳动、PDD、百度、Paypal的社招面试,除了字节跳动流程较长,我主动结束面试以外,其他的都顺利拿到了Offer。

最近时间稍微宽裕点了,写个面经,希望对大家找工作有所帮助。

面试体验

下面以时间先后顺序,分享下我在不同公司面试的体验。

阅读全文 »

distributed_system

1. 集群与分布式

根据业务划分的情况,主要有三种模式,分别是单机结构、集群结构、分布式结构,下面这张图给出了集群和分布式的区别。

最普通的就是单机结构,一个系统业务量很小的时候所有的代码都放在一个项目中就好了,然后这个项目部署在一台服务器上就好了。整个项目所有的服务都由这台服务器提供。这就是单机结构。

阅读全文 »

Spring.png

8. Spring MVC 流程

8.1 Spring MVC 介绍

Spring MVC 是目前主流的MVC框架之一。两个核心点:

  • 处理器映射:选择使用哪个控制器来处理请求
  • 视图解析器:选择结果应该如何渲染

运行原理可以用下图表示:

160870009-5aae79b0723bb_articlex.png

阅读全文 »

Spring.png

7. IOC初始化流程

IoC容器的初始化就是含有BeanDefinition信息的Resource的定位、载入、解析、注册四个过程,最终我们配置的bean,以beanDefinition的数据结构存在于IoC容器即内存中。这里并不涉及bean的依赖注入,只是bean定义的载入。但有例外,在使用Ioc容器时有一个预实例化的配置,即bean定义中的设置了lazyinit属性,那么这个bean在Ioc容器初始化时就预先加载,不需要等到Ioc整个初始化后,第一次getBean时才会触发。其中refresh()启动对Ioc容器的初始化。

阅读全文 »

Spring.png

6 声明式事务

6.1 Spring中事务的使用

在进行数据操作事,通常会将多条SQL语句作为整体进行操作,这一条或者多条SQL语句就称为数据库事务。数据库事务可以确保该事务范围内的所有操作都可以全部成功或者全部失败。如果事务失败,那么效果就和没有执行这些SQL一样,不会对数据库数据有任何改动。

事务是恢复和并发控制的基本单位。

事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。

  • 原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的操作要么都做,要么都不做。
  • 一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
  • 隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
  • 持久性(durability)。持久性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。
阅读全文 »