Y&Y

Love Crystal.Ye

1. 控制语句

1.1. 唯一循环结构: for

1.1.1. for 循环

Go 只有一种循环结构:for 循环。
基本的 for 循环由三部分组成,它们用分号隔开:

  1. 初始化语句:在第一次迭代前执行(可选)
  2. 条件表达式:在每次迭代前求值(可选)
  3. 后置语句:在每次迭代的结尾执行
阅读全文 »

获取 Go 的官方教程,注意,需要梯子。

1
2
3
4
5
6
7
8
export http_proxy=http://127.0.0.1:[http-proxy-port];
export https_proxy=http://127.0.0.1:[http-proxy-port];

## 获取 tour
go get golang.org/x/tour;

## 使用 tour
tour;
阅读全文 »

之前公司在公司第一次用 Netty 做游戏服务器,在网上找的 Demo,就把游戏服务器做起来了,但是一直也没有管去优化,最近在开始总结和回归的时候,会思考一些问题?

  1. Netty 为什么要用 ByteBuf 呢?NIO 不是已经有了 ByteBuffer 了吗?
  2. 除了 Unpooled.buffer() 还有没有别的方法返回 ByteBuf 呢?
  3. 好多对象的数据长度是固定的,在写数据中,能不能申请固定长度的 ByteBuf 呢?
  4. 使用了这么多 ByteBuf,系统会不会有大量的时间在拷贝 byte[] 数组呢?
  5. ByteBuf 如何才能高效的使用呢?
阅读全文 »

一台 server 的 authorized_keys 配置了很多很多 public key, 一个客户端去连接的时候,服务端怎么知道这个客户端的私钥对应哪个 public key 呢?

阅读全文 »

分析数字证书的签名和验证以及 RSA 非对称加密解密的时候,又想到了 SSH 中登陆流程,服务器是如何在 authorized_keys 找到当前登陆客户端与之匹配的公钥呢??

阅读全文 »

1. Spring Boot filtering 不生效

今天在写自己的图床的时候,因为用了docker,每次在更新的时候,本地使用 dockerfile-maven-plugin 插件,打包镜像,然后 push 到 Docker hub 自己的私有仓库。然后自己的 VPS,再拉取最新的 Docker img 启动。

所以,每次在更新了 pom.xml 中的 version 后, 需要手动去更新 docker-compose.yml 文件中镜像的版本号。 为了自动做,就把 docker-compose.yml 放到了 src/main/resources 下,然后使用 mave-resources-plugin 插件 copy 到指定目录。这样在编译,打包镜像的时候,会自动更新 docker-compose.yml 文件。

阅读全文 »

1. Redis 数据结构

  1. 主要的数据类型:
    • String(K-V): 单值,键值对,类似 Memcached, 比如配置,常量值,开关等等。
    • Hash: 一般是存储对象接口,key 是对象的标示,filed 是属性,value 是属性值。
    • Set: 集合,存放不重复的数据,求交集,统计不重复的量。
    • List: 链表,常用在消息队列,TimeLine.
    • SortedSet: 排名,需要根据 一个值来排序的场景,排行榜等。
阅读全文 »
0%