基准测试 http_load 可以通过一个输入文件提供多个 URL,Hpttp_load 在这些 URL 中随机选择进行测试。 也可以定制 axtp_1oad,使其按照时间比率进行测试,而不仅仅是测试最大请求处理 下面通过一个简单的例子来
mysql中的字符集
什么是字符集,什么是排序规则 字符集是只从二进制编码到某类字符符号的映射,该字符集的排序规则简称校对, 如 ASCII码,一个字节就可以表示一个英文字母,参照ASCII码表 为什么需要字符集 因为人类无法直接理
最长无重复子串
第一种 设置一个滑动窗口,左下标记 l, 右下标记r r 向右移动,记录每个字符的最后一次出现的位置 m 如果当前字符在 m 中存在,并且重复字符出现的位置在l右侧,让l移动到重复字符的下一个位置,跳过重复的字符 r每次
MySQL外键约束
InnoDB 是MySQL中唯一支持外键约束的内置引擎 缺点 多一次查询 在每次修改数据时,都要在另外一张表执行一次查询操作,如果外键列的选择性很低,会导致存在一个很大但是选择性很低的索引。 比如在一个很大的users表
MySQL Integer类型与INT(11)
1.介绍 Integer类型,即整数类型,MySQL支持的整数类型有TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT。 1.1 空间和范围 每种整数类型所需的存储空间和范围如下: 2. INT(11) 2.1 数
异步任务中的错误传递
并发编程下,如何将goroutine中发生的错误传递给其他程序,从而进行优雅的处理呢, 一种解决方案是,将异步任务中产生的错误写入通道中,在另一个程序中读取该通道,从而实现通信,二次处理错误信息 例子 package main
通道流水线工作模式
一个通道的输出,作为下一个通道的输入,连绵不绝 下面实现了加法 乘法的流水线 // 流水线通道 package main import "fmt" func main() { done := make(chan interface{}) defer close(done) // 数据源 numStream := generate(done, 1, 2, 3, 4, 5) // 乘法 加法 乘法 pipeline := multi(done, add(done, multi(done, numStream, 2), 1), 2) for num := range pipeline { fmt.Println(num) } } // 接收一个中止信
防止goroutine泄露的一般机制
goroutine 泄露 当 goroutine 被永远阻塞,或者只有主 goroutine 终止时,子 goroutine 才会终止, 即子goroutine 没有自行终止的时机 goroutine 便无法释放其所占的内存空间 一般解决方案: 由父goroutine告知子goroutine终止时机 准则: 父
select用法示例
Go中的select和channel配合使用,通过select可以监听多个channel的I/O读写事件,当 IO操作发生时,触发相应的动作。 基本使用 // 常规示例 func example() { done := make(chan interface{}) // 一段时间后发送关闭信号 go func()
Linux搭建samba服务
安装 samba yum install samba 修改配置文件 修改配置文件 vim /etc/samba/smb.conf 添加要共享的目录 [opt] # 被共享目录的别名 path = /home/dccmmtop/opt # 要共享的目录 browseable = yes writable = yes # 可以写入 valid users = dccmmtop # 用户,该用户要有目录的权限 create mode=0777 directory mode=0777 force create mode=0777 force directory mode=0777 添加用户 将用户 dccmmtop 设置为可以
构建docker环境开发Rails
初始化项目 新建 myapp 目录,在下面添加 Dockerfile 文件,如下: Dockerfile FROM ruby:2.5 RUN apt-get update -qq && apt-get install -y nodejs default-mysql-client ADD . /myapp WORKDIR /myapp RUN bundle install EXPOSE 3000 CMD ["bash"] Gemfile 再新建 Gemfile 文件 source 'https://gems.ruby-china.com' # 安装 Rails gem 'rails', '~> 5.1.3' docker-compose.yml version: '3.3' # 使用已经存在的外部网络 networks: default: external: name: dev_network services: web: build: . command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s
Go池
为什么需要池 用来约束创建和复用昂贵的场景,比如数据库连接 Go是怎么实现的池 通过 sync.Pool 包实现,并发安全 怎么使用 Get 方法,首先检查池中是否有可用的实例返回给调用者,如果没有,调用New 方法创建新的实例,并返回 使
Go单元测试
概念 测试是编程工作中非常重要的一环,但很多人却忽视了这一点,又或者只是把测试看作是一种可有可无的补充手段。Go语言提供了一些基本的测试功能,这些功能初看上去可能会显得非常原始,但正如将要介绍的那样,这
Go写入json
这个封装程序使用的结构和之前分析JSON时使用的结构是相同的。 程序首先会创建一些结构,然后通过调用MarshalIndent函数将结构封装为由字节切片组成的JSON数据 最后,程序会将封装所得的JSON
Go解析json文件
可以使用Unmarshal函数来解封JSON,还可以使用Decoder手动地将JSON数据解码到结构里面,以此来处理流式的JSON数据, 流程如下 要解析的json文件 { "id": 1, "content": "Hello world!", "author":{ "id":2, "name": "Sau Sheong" }, "comments": [ { "id": 3, "content":