从进程到协程

进程

早期的计算机执行程序,是顺序执行的。按顺序一次做一件事情,只有当前的程序执行完了,才能执行下一个程序。

这样做有什么问题呢?

  1. 程序只能按顺序执行,如果当前的程序计算量比较大,运行时间比较长,后序的程序就长时间得不到运行。系统会表现的像死机一样。

  2. 属于同一个程序的计算和IO直接也是顺序执行的。在程序进行IO的时候,CPU只能等待。资源利用率很低。

为此,在系统中引入多道程序技术,使得程序直接可以并发执行。

阅读全文 »

Synchronized的锁机制

这段时间了解了一下Java中的Synchronized和J.U.C,从中整理出一些关于的概念。

关于Synchronized的用法,在之前的这篇博客中也学习到了,现在来看看Synchronized在JVM中的实现。

Java对象在JVM中的结构

在Hotspot虚拟机当中,对象在内存中的存储布局可以分为3块区域:对象头、实例数据、对齐填充。

java对象

阅读全文 »

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上网。此时的网络拓扑大致如下:

拓扑

阅读全文 »