i.Arwen

读万卷书 行万里路

0%

golang 的 select 就是监听 IO 操作,当 IO 操作发生时,触发相应的动作。

在执行select语句的时候,运行时系统会自上而下地判断每个case中的发送或接收操作是否可以被立即执行(立即执行:意思是当前Goroutine不会因此操作而被阻塞)

select的用法与switch非常类似,由select开始一个新的选择块,每个选择条件由case语句来描述。与switch语句可以选择任何可使用相等比较的条件相比,select有比较多的限制,其中最大的一条限制就是每个case语句里必须是一个IO操作,确切的说,应该是一个面向channel的IO操作。

阅读全文 »

最近一直想写,都不知道怎么下笔,闲下来的时间总是在懒惰中挥霍,或是沉浸在幸福快乐中流散。五年真的是白驹过隙,但发生的事情比上一个五年多太多。

上一个五年,做的影响一辈子的事情,确是高考与专业选报,现在看来,也不后悔,对路,也符合我的性格,但是也封闭了我的性格,不知从何时开始,内心开始对这个很小的世界产生了依赖,不愿意改变,很怕变化之后会怎样,畏首畏尾的。毕业找工作时也碰到了坎,四月份才找到,对于我这抓住了毕业季尾巴的人来说,实在太幸运了。

大学四年,自律意识太差了,现在回想起来,大学是被荒废了的,逃课挂科家常便饭,只醉心于自己喜欢的事情,想到了那年收到学校警示通知(挂科太多),与家人过年都是在阴云笼罩的气氛中度过,让父母操碎了心,现在这些事情想想,真是太不应该,学生的工作,就是学习好自己的课程,这是本份,任何借口都是狡辩。如果没有比尔盖茨的本事,就老老实实的读书,不读书这社会上你就是傻子。我就是个傻子,现在除了掌握皮毛不入精髓的点点计算机知识,我就剩下一具肉身。真是往事不堪回首。这是工作前的五年,就这样写吧,反正也不能反悔了,自己买单吧!

现在开始最近这五年。前方无高能,流水帐记叙。

阅读全文 »

项目正式使用SpringBoot,之前也只是自己边玩边学习,封装了一些单元测试的底层类以及一些常用的技巧

引入依赖

1
2
3
4
5
6
7
8
9
10
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>

Service层测试的基类

阅读全文 »

之前对于Java的版本概念不是很强烈,从Java5中学习到的那些语法足以满足日常开发中的需要,最近迷恋上了IDEA,对于其提示出来的语法建议深感自身知识的落伍。

在这篇文章中,将汇集再发现到新语法或者特性时将会补充。

语法

lambda

lambda也称为闭包匿名方法,方法的参数为方法。
它可以自动推导出参数类型,也就是说编译器根据参数类型可以推导出用哪个类,用哪个方法去执行表达式里要执行的方法
lambda最先出现在其他语言中,从Java8才进入此语法,此语法确实带来了更好的阅读以及代码量的减少。
以下已一些常用类加以说明[BEFORE:之前的语法 AFTER:使用lambda的语法]。

阅读全文 »

docker运行镜像靠run,run命令会自动从指定的镜像运行,如果镜像不存在,会先自动pull到本地,docker的文件系统称为layer,有发生变化的layer会新生成一个layer,有一个image id。
目前我使用docker,一般是用镜像启动成一个容器,然后以后就直接stop/start这个容器
常用的组合
端口:-p 3306:3306
起名:–name mysql
磁盘映射:-v /data/mysql:/var/lib/mysql
例如

1
docker run --name mysql -p 3306:3306 -v /data/mysql:/var/lib/mysql mysql:5.6-jessie
阅读全文 »

学习docker一段时间了,有部分常用的服务也转到了docker上,虽然是起了virtualbox运行了个ubuntu,然后再搭建docker环境。
暂时工作还是依赖了windows环境,所以兼学习兼工作的折腾了一段时间。
目前使用过的服务有register mysql docker-ui git-lab
官方hub下载镜像在我的网络里十分慢,所以我一般使用Dockerfile构建镜像。作为补充,也可以从阿里的hub搜索
阿里hub
目前官网能搜到的镜像一般都提供github的Dockerfile连接

阅读全文 »

ssh

1.检查是否启动

1
sudo ps -e |grep ssh

2.修改配置允许root登陆:

1
vim /etc/ssh/sshd_confg

找到:修改PermitRootLogin 为 PermitRootLogin yes

1
2
service ssh stop
service ssh start

固定IP

1
vim /etc/network/interfaces

添加如下信息

1
2
3
4
5
6
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.8.150
netmask 255.255.255.0
gateway 192.168.8.1

DNS

1
vim /etc/resolv.conf  && vim /etc/resolvconf/resolv.conf.d/base

写入相同的内容:

1
2
nameserver 192.168.8.1
nameserver 8.8.8.8

设置主机名

1
echo nginx.master >/etc/hostname

设置时区

1
2
tzselect
ntpdate time.windows.com

AMQP当中有四个概念非常重要
virtual host:虚拟主机
exchange:交换机
queue:队列
binding:绑定

持久化

当你将消息发布到交换机的时候,可以指定一个标志“Delivery Mode”(投递模式)。根据你使用的AMQP的库不同,指定这个标志的方法可能不太一样。简单的说,就是将Delivery Mode设置成2,也就是持久的(persistent)即可。一般的AMQP库都是将Delivery Mode设置成1,也就是非持久的。所以要持久化消息的步骤如下:
1、将交换机设成 durable。
2、将队列设成 durable。
3、将消息的 Delivery Mode 设置成2 。

1
2
3
4
5
6
7
8
9
echo 'deb http://www.rabbitmq.com/debian/ testing main' | \
sudo tee /etc/apt/sources.list.d/rabbitmq.list
wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | \
sudo apt-key add -
apt-get install rabbitmq-server
rabbitmq-plugins enable rabbitmq_management
cd /etc/rabbitmq/
vim rabbitmq.config <-<--[{rabbit, [{loopback_users, []}]}].
service rabbitmq-server restart