- 博客(50)
- 资源 (1)
- 收藏
- 关注
原创 ZeroTier 使用 教程
上一章说道怎么利用vm设置虚拟机网络,实现了可以局域网连接vm中虚拟机的效果。但那个只是在局域网中,如果我想在a局域网中连接b局域网中的ip,应该怎么做呢?网上搜了到有好几种方法访问不同局域网内主机:公网ip端口映射设置vpn使用花生壳使用Zerotier端口映射使用端口映射的方式,端口映射有两种情况,第一种是使用上网拨号的方式,电脑直接连接的光猫,这种类型的不需要进行端口映射。另外一种是电脑通过连接路由器,路由器连接光猫的形式上网,这种情况下,路由器会给我们分配一个192.168.xxx
2020-11-12 23:56:21
42262
1
原创 Windows下VM配置虚拟机桥接模式
前言事情是这样的,自从换了电脑后,原来的笔记本就一直吃灰,本着物尽其用,能省则省的态度,得想个法子利用,碰巧最近想要学习分布式的项目,如果买多个服务器,也是一笔不小的开支,所以想着想着在老笔记本上通过vm安装多个虚拟机,模仿多个服务器。经过在电脑上下载安装vm,下载安装os,为了防止由于笔记本切换局域网而导致服务器ip发生改变,设置虚拟机ip为静态ip,一切设置妥当,准备大干一场的时候,发现一个尴尬的问题,虚拟机没有连外网。命令行输入 ping www.baidu.com 后,等了好久,出现下面的错误
2020-11-09 00:29:52
2487
1
原创 docker学习06 - cd持续交付
配置docker cd1.1 什么是cdcd 持续交付 ,持续部署持续交付 : 将代码交付给专业的测试团队进行测试持续部署 :将测试通过的代码,部署到生产环境1.2 安装jenkins1.2.1 jenkins 的作用在整个自动化集成中,jenkins的作用是拉取gitlab中的代码,打包好发送到目标服务器上我们提交代码 -> gitlab -> jenkins 拉取、编译、打包 -> 发送到目标服务器1.2.2 使用docker-compose 安装1.2
2020-09-07 17:30:14
519
原创 docker学习05 - 配置docker持续交付
docker DI1.1 安装gitlab1.1.1 docker-compose.yml文件version: '3.1'services: gitlab: image: 'twang2218/gitlab-ce-zh:11.1.4' container_name: "gitlab" restart: always privileged: true hostname: 'gitlab' environment: TZ: 'Asia/Shanghai' GITLA
2020-09-07 17:21:38
485
原创 docker学习04 - 使用docker-compose 管理 docker
docker-compose 管理docker 容器1.1 docker-compose 的用处Docker-compose 的作用配置镜像运行的大量参数 比如 -d -p等,可以通过docker-compose配置这些参数,相对与记住这些参数更方便docker-compose可以帮助我们更好的管理docker容器,只需要使用docker-compose.yml去维护1.2 下载安装docker-compose登录github,搜索docker-compose,筛选条件中选择 mos
2020-09-07 17:03:40
334
原创 docker学习03 - 使用Dockerfile自定义镜像
使用Dockerfile自定义镜像1.1 创建dockerfile文件# 创建自定义镜像就需要创建一个dockerfiler,如下为dockerfile的语言from : 指定当前自定义镜像依赖的环境copy : 将相对路径下的内容复制到自定义镜像中workdir: 声明镜像默认的工作目录run: 执行的命令,可以编写多个cmd:需要执行的命令 (在workdir下执行,cmd可以写多个,以最后一个为准)# 例子from daocloud.io/library/tomcat:8.5.1
2020-09-07 16:57:20
258
原创 安装JMeter(mac)
1. 安装JMeter(mac)1.1 下载安装包进入官网 http://jmeter.apache.org/download_jmeter.cgi 选择版本 ,jmeter依赖于当前设备的java环境,所以要与java的版本想匹配,否则可能出现一些意外的情况,另外,因为我们使用的是mac ,所以安装包下载 .tgz 结尾的就可以了[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-atZheR3R-1599123078035)(https://raw.github
2020-09-03 17:01:00
474
原创 docker学习02 - docker的应用
三 . docker的应用docker 安装tomcat# 如果是未下载的镜像,可以直接使用地址docker run -d -p 8000:8080 --name mytomcat2 daocloud.io/library/tomcat:8.5.15-jre8# 如果是已下载的镜像,可以使用镜像名或镜像名:tagdocker run -d -p 8000:8080 --name mytomcat3 镜像的标识 docker 安装mysql# docker 安装mysql,并指定端口和
2020-08-31 22:15:09
167
原创 docker学习01 - 基本操作
2.1 安装docker下载docker依赖环境# 想要安装docker,需要先将依赖的环境全部下载下拉,就像maven依赖jdk一样yum -y install yum-utils device-mapper-persistent-data lvm2修改镜像源由于docker默认连接的是国外的地址,如果从国外的地址下载相关东西,会比较慢,所以需要修改docker镜像的地址,可以设置为阿里云为镜像源,比较快yum-config-manager --add-repo http://m
2020-08-31 22:13:18
789
原创 git 生成 ssh 公钥和秘钥
1. 在命令行中,切换到··/git/bin/ 目录下2.22.0_1 cd bin➜ bin lltotal 8920-rwxr-xr-x 1 hanbeikai staff 2.5M 7 18 2019 git-rwxr-xr-x 1 hanbeikai staff 159K 7 18 2019 git-cvsserverlrwxr-xr-x 1 hanbeikai staff 3B 6 8 2019 git-receive-pack ->
2020-08-30 15:35:29
162
原创 linux 查看指定文件夹以及其子文件加目录结构
安装tree命令yum -y install tree使用tree命令tree 指定文件夹[root@centOS gitlab]# tree gitlab_runner/gitlab_runner/├── config│ └── gitlab_runner├── docker-compose.yml└── environment ├── apache-maven-3.6.3-bin.tar.gz ├── Dockerfile └── jdk-8u221-l
2020-08-30 10:47:01
402
原创 使用docker-compose 安装gitlab报错 sudo gitlab-ctl reconfigure
使用 docker-compose 管理 gitlab执行 docker-compose up -d后,启动不成功使用 docker-compose logs -f后 看到报下面这些错Preparing services...Starting services...Configuring GitLab package.../opt/gitlab/embedded/bin/runsvdir-start: line 24: ulimit: pending signals: cannot modify
2020-08-29 18:32:56
5094
2
原创 linux 安装 yum 命令源
在安装好linux后,由于不小心,把/etc/yum.repos.d/ 下的所有文件都删除了,然后yum 命令就不能用了。于是就想把yum卸载了重新安装卸载 yum 命令[root@linux-node3 ~]# rpm -qa yum yum-3.4.3-150.el7.centos.noarch [root@linux-node3 ~]# rpm -qa | grep yum | xargs rpm -e --nodeps #这一步一定要执行,而且要将所有的组件卸载掉,如果卸载不干净,
2020-08-22 15:13:14
4988
原创 从阿里云中下载centos镜像
1 输入阿里云网址https://mirrors.aliyun.com/centos/2选择版本,这里我选择的是7.8.2003版本3 点进去之后,出现许多路径,莫慌,选择isos目录4 点进去5 再点进去 ,这里面是可下载的版本了其中,以.iso为结尾的版本是可以直接进行安装的,以.torrent为结尾的是迅雷种子,需要使用迅雷下载的,由于是阿里云镜像,可以直接下载iso版本的镜像。后面的名称,我下面为大家一一介绍下:DVD:普通安装版,需安装到计算机硬盘
2020-08-22 12:06:36
7142
4
原创 mac VMware 安装 centos7教程
首先,下载好镜像可以从阿里云下载centos的镜像,地址是 https://mirrors.aliyun.com/centos/ ,可以参考文章 【http://note.youdao.com/s/QsUx4vy1】点击上面的+号,创建新的虚拟机选择安装方式,我们选择创建自定虚拟机选择操作系统选择固件类型选择新建虚拟磁盘可以选择自定配置,设置虚拟机名字这个时候还不能启动,因为我们还没有设置镜像的位置,右键虚拟机名字,选择设置选择dvd模式.
2020-08-22 12:04:59
2997
2
原创 HeadFast设计模式之外观模式
什么是外观模式 外观模式就是创建一个简化的接口,实现复杂的功能。实现的原理是在简单的接口内调用了复杂的接口。比如说,晚上回到家,正常流程要先打开门,打开灯,打开空调。 但是我们比较懒,想要一键就把门、灯、空调打开了,这个时候就需要一个东西,当我们调用它的时候,它可以依次调用开门,开灯,开空调的功能。这个“东西”,可以理解为外观模式外观模式的特点
2020-08-20 22:22:33
187
原创 HeadFast设计模式之最少知识原则
什么是最小知识原则最小知识原则就是在设计代码的时候,注意减少对象之间的交互,只和满足条件的对象进行交互。最小知识原则的特点1 最小知识原则与德墨忒尔法则的关系?答 :其实这两个名词指的是同一个原则,但是我们更倾向于使用最小知识原则称呼,原因有两个,(1)这个名字更直接。(2)法则给人的感觉是强制,事实上没有任何原则是法律。2 最小知识原则有哪些缺点?答:虽然这个原则减少了对象之间的依赖,但是会导致使用更多的包装类,可能导致时间复杂度和空间复杂度的增加,降低运行中的性能。最小知识原则的条件
2020-08-20 22:15:31
193
原创 HeadFast设计模式-单例模式
什么是单例模式:众所周知,java中的对象是new出来的,如果没有对象,就new 出来一个,每一个new出来的对象都是这个java类的实例,如果不加以限制,每一个java类都可以new出无数个对象这些new出来的对象并不是平白无故就产生的,在创建的过程中,需要占用内存,占用资源等等。对于普通对象而言,多一个少一个并没有区别。但是对于一些占用有限资源的对象,如线程池,缓存等,如果new出来的相关的对象多了,很快就把资源分配完,如果再新的请求new对应对象,由于已经没有资源,会导致系统异常。为了有效的利
2020-08-17 23:43:10
250
原创 iTerm2 通过阿里云pem 文件连接服务器
1. 下载安装iTerm22. 点击profiles,选择open profiles3. 选择 编辑 profiles4. 在profiles选择中,点击+,创建profiles,输入Name,在command中选择 command: 输入expect ~/.ssh/centos02其中 centos02 是自定义文件的名称5. 在访达中选择...
2019-09-01 00:29:05
2330
1
原创 Transmit 通过阿里云 pem 文件远程连接服务器
1. 保存阿里云.pem 到指定目录2. 点击坐下角的 + ,创建 sftp 文件3. 创建 sftp文件4. 输入地址,用户名,然后点击 密码项右侧的 钥匙5. 选择之前保存的 .pem 文件,如果没有,点击编辑,会跳转到下面这一页,然后点击密钥,点击左下的 + ,在之前保存的路径下找到 .pem 文件,导入后,在上页的界面中选择 .pem 文件,然...
2019-09-01 00:17:37
2933
原创 如何打开Intellij IDEA的代码提示功能/联想/自动联想
点击File -> setting -> editor -> general -> code completion -> Match case勾选Match case : 根据后面的选项进行联想勾掉Match case : 根据大小写进行联想First letter only : 首字母小写触犯联想All letters : 所有小写触发联想...
2019-07-21 10:42:24
17155
原创 线程池submit和execute方法原理
线程池的作用 :1. 避免大量的线程强占资源2. 避免大量的线程创建和销毁带来的开销 线程池的原理 :创建线程池的时候,可以使用executors的静态方法,也可以使用new ThreadPoolExecutor的方式手动创建线程池,通过在线程池中指定参数达到创建不同类型的线程池的效果其中,executors底层其实也是调用的new ThreadPoolExecutor()的方式创...
2019-05-19 15:48:22
8611
原创 ArrayList的add()和get()方法
add()方法用add()方法,首先判断当前arraylist的数组长度是否需要扩容,在扩容的方法中 : 初始化的长度是10,以后每次增加是采用size+(size>>1)的方式,然后判断扩容后的长度与数组需要的最小长度对比,如果小于,则把当前最小长度最为新的数组的长度,如果新的长度大于数组的最大长度,则使用integer的最大值作为长度然后在数组中添加要添加的元素,返回tr...
2019-05-19 15:46:46
11491
2
原创 Linkedlist的add()和get()方法
add()方法调用add()方法添加元素,会调用linkedlast(),把新添加的元素放在原链表最后一位首先获取原链表最后一个元素,根据当前输入的元素构建一个node,把原最后一位元素最为新构建的元素中pre对应的变量新构建的node覆盖之前最后一个node变量判断为添加前的最后一位是否为空,如果为空,新添加的一个node也是first变量对应的元素如果添加前的最后一位不为空,则未添...
2019-05-19 15:43:40
5800
原创 Hashtable的get()和put()
jdk1.8 中hashtable的get()首先计算key的下标,获取hashtable中的数组找到对应下标数组,获取对应的链表遍历俩表,判断是否有满足条件的entry,如果有,获取value对应的值返回否则,返回为空. @SuppressWarnings("unchecked") public synchronized V get(Object key) { ...
2019-05-19 15:39:31
6085
原创 ConcurrentHashMap的Get()和Put()方法
jdk 1.8get()方法首先获取到concurrentHashmap中segments数组的下标,找到对应的segment,然后找到对应的hashentrys数组,通过hash值计算获取下标,遍历hashentrys中指定下标的链表从中判断是否存在hashentry满足输入的key的条件,如果有,则返回对应的value,如果没有,返回为空.public V get(Object k...
2019-05-19 15:36:06
5168
6
原创 HashMap中Put()和Get()方法原理
JDK1.7:get()方法首先判断输入的key是否为空,如果为空,从hashmap数组下标为0的位置获取值返回如果不为空,根据key的值,从hashmap数组中获取对应的entry对象,判断这个对象是否为空,为空返回null,不为空返回对应的value值, 获取value的方法中key为空和不为空时的方法里都先判断数组中的元素是否为0 ,如果不为0,才继续查找// hashmap的...
2019-05-19 15:33:13
15036
1
原创 《JAVA多线程编程核心技术》-- 第一章 -- java多线程技能
1.1 进程和多线程的概念以及线程的优点进程: 进程是操作系统进行资源分配和调度的基本单位(可以将windows中任务管理器中的每个exe程序理解为一个进程)线程: 线程可以理解为进行中独立运行的主任务例如: 电脑管家这个程序可以看做一个进程,电脑管家里的病毒查杀,清理垃圾等可以做为线程单线程与多线程的区别:相对于单线程,多线程可以同时处理多个任务,减少总的任务完成时间,这是多线...
2019-04-14 13:28:16
245
原创 笔试题: 使用两个线程交替打印奇偶数
项目路径:创建一个打印数字的对象,对象内有一个用于计数的成员变量,一个用于打印偶数的方法,一个用于打印奇数的方法.通过使用阻塞的方式来决定当前线程是否可以打印.PrintNum.javapackage com.beikai.springboottestdemo.writtentest.Thread;/** * @ClassName PrintNum * @Description T...
2019-04-09 21:43:52
1310
原创 Java-IO的一些方法
项目路径:Test01.javapackage com.beikai.springboottestdemo.IO;import java.io.*;/** * 地址工具类 */class AddressUtils2 { public static String address = "E:\\StorageTest\\abc"; public static Str...
2019-04-09 21:34:36
211
原创 Java-通过线程实现生产者消费者设计模式(平衡)
项目目录定义一个消费者,通过构造器的方式注入仓库对象,用于线程调用仓库对象的消费方法,用于消费仓库中的产品.Customer.javapackage com.beikai.springboottestdemo.Thread.ProductorAndCustomer;/** * @ClassName Customer * @Description TODO * @Author Ad...
2019-04-09 20:46:22
242
原创 Java-定时器Timer创建线程
通过定时器的方式创建线程,设置线程多久后开始,每过多久再次执行一次(循环)AboutTimerThread.javapackage com.beikai.springboottestdemo.Thread.timer;import java.util.Date;import java.util.Timer;import java.util.TimerTask;/** * @Cla...
2019-04-09 20:30:43
1009
原创 JAVA-线程的一些方法
项目路径:package com.beikai.springboottestdemo.Thread;import com.beikai.springboottestdemo.Thread.test.BankAccount;import com.beikai.springboottestdemo.Thread.test.BankAccount1;import com.beikai.spr...
2019-04-09 20:09:54
204
原创 JAVA-反射的一些方法
项目路径:Test01.java/** * @ClassName Test01 * @Description TODO * @Author Admin * @Date 2019/4/5 9:04 * @Version 1.0 * <p> * 反射: * 反射就是利用字节码文件,获取对象的属性,字段,方法,构造方法的类的内部内容,根据字节码文件创建对象,调用对象方法...
2019-04-05 22:57:31
985
原创 String 中 == 和 equal()笔试题
String test1 = new String(“张三”); 这种方式会产生两个对象:一个是 “张三” 在 String pool中产生的一个值为 “张三” 的对象,另一个是在堆中产生一个值为 “张三” 的对象,这个对象是String Pool中的 “张三” 的拷贝,上述中 test1 最后指向的是...
2019-04-01 23:20:20
489
原创 MySql数据库优化及SQL优化
MySql数据库优化及SQL优化MYSQL简介MySQL是一个关系型数据库管理系统,由瑞典MySql AB公司开发,这个公司被SUN公司收购后,SUN又被Oracle收购了,所以,目前MySql属于Oracle公司,是的,你没看错,就是那个有Oracle数据库的Oracle公司.MySql所使用的Sql语句是用于访问数据库的最标准语言,MySql采用了双授权的方式,分为社区版和商业版,由于...
2019-03-29 23:41:15
1244
1
原创 SpringAOP底层原理探究
spring 中aop 使用哪种方式的代理?使用idea 打开spring项目,双加shift,搜索AopProxy,可以找到这个类:查看这个类有几个实现类:可以看到有三个: CglibAopProxy.java JdkDynamicAopProxy.java ObjenesisCglibAopProxy.java 但是这三个类其实代表的是两种,分别是 jdk的代理类和...
2019-03-27 20:59:44
4130
原创 数据库唯一id生成策略
分布式,高并发下id生成要求全局唯一趋势递增效率高(生成.使用.索引)控制并发一 . Uuid(uuid/guid[通用唯一识别码])Uuid是按照开放软件基金会(osf)制定的标准计算用到了以太网开地址(MAC),纳米级时间,芯片id码和许多可能的数字由一下几部分的组成当前日期和时间时钟序列全局唯一的ieee机器识别号(如果有网卡,从网卡获取,没有网卡以其他方式获取) ...
2019-03-24 00:03:55
8551
原创 算法(笔试题) : 城市天际线
题目:用一个二维数组,grid来表示城市天际线,二维数组中的每个数代表相应位置上建筑的高度,从横向和纵向观察到最高点,构成城市天际线,集城市天际线有每一列的最大值两个 一维数组构成,问:在保持城市天际线不变的情况下,所有建筑加起来的总高度最多还能增加多少,每个建筑增加的高度可以不一样,建筑的高度也可以时0示例 1:例子:输入: grid = [[3,0,8,4],[2,4,5,7],[...
2019-03-18 23:40:18
1254
1
原创 算法(笔试题) : 最近人的最远距离
题目: 在一排座位( seats)中,1 代表有人坐在座位上,0 代表座位上是空的。至少有一个空座位,且至少有一人坐在座位上。 亚历克斯希望坐在一个能够使他与离他最近的人之间的距离达到最大化的座位上。返回他到离他最近的人的最大距离。示例 1:输入:[1,0,0,0,1,0,1]输出:2解释: 如果亚历克斯坐在第二个空位(seats[2])上,他到离他最近的人的距离为 2 。 如果亚...
2019-03-18 23:30:16
1084
spring aop 需要的jar包
2019-03-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人