JUC概述

JUC概述

java.util.concurrent的缩写,该包参考自EDU.oswego.cs.dl.util.concurrent,是JSR 166标准规范的一个实现;

JSR 166,是一个关于Java并发编程的规范提案,在JDK中,该规范由java.util.concurrent包实现。

即,JUC是Java提供的并发包,其中包含了一些并发编程用到的基础组件。

阅读全文 »

gitlab备份恢复方案

最近公司内部的gitlab私服打算上线了,其中,数据备份是很重要的一课。

研究制定了一下备份恢复的方案~记录一下

备份策略

备份

有 machine-A、machine-B、machine-C 三台实体机,统一为windows系统;

vm-A、vm-B、vm-C、vm-D、vm-E 为Linux系统虚拟机,其中:

vm-A 提供 gitlab 服务,vm-B 提供 redmine 服务;

vm-C 为远程备份服务器;

vm-D 是 vm-B 的备份镜像,vm-E 是vm-A的备份镜像。

vm-D 和 vm-E 平时处于关闭状态,只有在 vm-A 或 vm-B 不可用,或者做备份恢复测试时再进行启用。

注:虚拟机管理工具统一使用 VirtualBox

阅读全文 »

VirtualBox设置共享文件夹

最近在做 Gitlab 备份,Gitlab本身运行在虚拟机当中,备份策略是使用 Rsync 备份到远程主机一份;同时在宿主机备份一份。宿主机使用了windows,想到了一个较为简单的办法,即设置共享文件夹,将需要备份的内容定时复制到共享文件夹即可。在设置共享文件夹的过程中遇到一些问题,在此记录下来。

因为虚拟机所在的 IP 无法访问外网,只能访问公司内部网络。所以在进行下面的操作之前,需要配置一下 yum 的代理:

我在本机开启了 shadowsocks 服务,ip:192.168.1.70,port:1090

虚拟机内执行:

sudo vim /etc/yum.conf

增加下面内容:

1
proxy=socks5h://192.168.1.70:1090

保存,退出。yum代理设置成功。

虚拟机安装增强功能

联通华为HG8347R设置桥接模式

前面的笔记中有提到如何通过外网访问家里的服务。在某些场景下可能会用到,比如想要在单位ssh家里的电脑,或者访问家里的NAS等设备等等。之前用的电信的宽带,是通过自己的路由器拨号上网,并且外网IP也是直接分配好的,配一下DDNS和端口映射即可。前一段时间换了联通的宽带。

更换宽带的时候,联通提供了一个光猫,华为HG8347R。这个光猫取代了之前的路由器,拨号也由他进行。通过该光猫的无线功能就可以直接连接WIFI上网了。但是这个光猫的无线性能较差,于是在 Lan1 口接了一个自己的TP-link路由器,通过该路由器提供的wifi信号可以正常上网。此时出现了两个WIFI信号,一个是光猫提供的,一个是TP-link路由器提供的。家里的终端设备都使用TP-link提供的WIFI上网。此时的网络拓扑大致如下:

拓扑

阅读全文 »

可能会用到的Git技巧(2)

git worktree

我们知道如果工作目录修改到一半的话,是不能随便切换 branch 的。解决方法可以通过 git stash 先暂存起来,随后执行 git stash apply 恢复。

但是,如果我们想同时修改两个分支呢?或者同时测试两个分支。能想到的方法就是单独再 clone 一份代码到其他目录。但是这种方法不仅麻烦,而且形成了两个独立的 git 目录,双方的同步也比较费劲。

git 为我们提供了一个命令来解决这个问题,那就是 git worktree add -b <新分支名> <新路径> <从此分支创建>

比如,我们正在某个 feature 分支开发,现在希望从 master 分出一个分支来解决某个紧急的 BUG:

1
git worktree add -b hotfix ../hotfix master

阅读全文 »

可能会用到的Git技巧(1)

最近在看 gitlab 的源码,因为公司希望把 gitlab-ee 的 merge squash 功能集成到 gitlab-ce 上来,供公司内部使用….
这个任务交给了我,现在这个功能已经改的差不多了,中间也了解了一些可能会用到的 git 技巧,现在记录下来

git

git cherry-pick

git cherry-pick 可以应用某个分支的某些提交到另一个分支上去。

阅读全文 »