数组 初始化 指定长度 a := [2]int{1,2} // 指定长度和字面量 不指定长度 a := [...]int{1,2} //不指定长度,有后面的列表来确定其长度 指定总长度,通过索引初始化, 没有初始化的位置使用默认值 a := [3]int{1:1, 2:3} 不指定总长度,通过索引初始化, 最后一个索
iota 用法
用在常量声明中,初始值为0,一组常量同时声明时,其值逐行增加 类似枚举 const ( c0 = iota //c0 == 0 c1 = iota //c1 == 1 c2 = iota //c2 == 2 ) 简写模式 const ( c0 = iota // c0 == 0 c1 // c1 == 1 c2 // c2 == 2 ) 分开的const 分开的const语句, iota 的
交叉编译
1.Mac下编译Linux, Windows Linux CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build filename.go Windows CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build filename.go 如: CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o helloworld-windows helloworld.go 2.Linux下编译Mac, Windows Mac CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build filename.go Windows CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build filename.go 3.Windows下编译Mac, Linux Mac SET CGO_ENABLED=0 SET GOOS=darwin SET GOARCH=amd64 go build filename.go Linux SET CGO_ENABLED=0 SET GOOS=linux
多行变单行
ps -ef | grep nginx | awk -F ' ' '{print $2}'| xargs
扩展git功能的一种方式
有时需要根据自己的工作场合去扩展 git 命令,比如 推送到仓库后自动打开浏览器跳转到发起合并求页面 分支命名比较长其相似度比较大时,自动补全不那么有效率,给每个分支编号,输入指定编号即可切换对应的分支 我最推荐的
基本类型以及范围
基本类型以及范围 选择优化的数据类型 MySQL 支持的数据类型非常多,选择正确的数据类型对于获得高性能至关重要。不管 存储哪种类型的数据,下面几个简单的原则都有助于做出更好的选择。 更小的通常更好。 一般情况下,应该尽
去除重复行
先sort排序,再去重 :sort //直接排序 :g/^\(.*\)$\n\1$/d //去除重复行 :g/\%(^\1$\n\)\@<=\(.*\)$/d //功能同上,也是去除重复行 :g/\%(^\1\>.*$\n\)\@<=\(\k\+\).*$/d //功能同上,也是去除重复行 使用awk awk '!a[$0]++' file 解析: awk流程是逐行处理的,默认从文件的第一行一直处理到文件最后一行 还
whenever使用方式
根据项目的进展,我们需要实现后台进行定时读取信息的功能,而最关键的实现部分是周期性功能,根据调研,决定使用whenever来实现这一功能。
github:https://github.com/javan/whenever
开发前需要明确的问题
- whenever是怎样一种周期性机制?
- whenever能为我们提供什么功能?
- whenever为周期性任务提供了哪些控制方式?
问题解决
whenever周期性机制
vim中与系统的粘贴和复制
以前就遇到过的问题。有如下情景:
1.假设现在我要将文件a的部分内容复制到文件b中,一般情况,我会用
vs
或者sp
命令打开这两个文件然后用y
和p
进行复制粘贴。但是如果分别用vim打开这两个文件就不能完成上述动作。
2.假设我先在要把vim打开的源代码中的部分内容复制到博客中,一般我会用vim编辑好以后,退出用gedit打开,或者cat一下,再复制到系统剪切板,再粘贴。
今天,对于vim这个没办法跟“外界”交流的特性忍够了,决定解决一下。
1.首先,查看vim版本是否支持clipboard
vim --version | grep "clipboard"1
结果如下:
clipboard 前面有一个小小的减号,说明不支持。
2.如果不支持的话,需要安装图形化界面的vim,或者重新编译vim
sudo apt-get install vim-gnome1
ubuntu中添加服务以及开机自启
自定义脚本 编写自己的需要开启自启的脚本,如下: #!/usr/bin/env ruby `cd /home/mc/code/rails_app/master_crawler_trm && nohup rake real_time_extract_word > /dev/null 2&>1` 启动脚本 #!/usr/bin/env ruby start = " sudo -u mc /home/mc/bin/real_time_extract_words " stop = "ps -ef | grep real_time_extract_word | grep -v grep | cut -c 9-15 | xargs kill -9" action = ARGV[0] if action == 'start' system(start) puts "启动成功" elsif action == 'stop' system(stop) puts "
Rails连接多个数据库
假如已经连接的的数据库名是 word_development, 现在需要添加一个名为 trademark_development 和 trademark_test 的本地数据库 步骤如下: 添加配置信息 在 config/database.yml 添加如下信息 trademark_default: &trademark_default adapter: postgresql encoding: unicode pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> trademark_development: <<: *trademark_default database: trademark_development # 如果是远程的数据库添加如下信息 #username: username #password: 123456 #host: xxxx #port: xxx trademark_test: <<: *trademark_default database: trademark_test 关
触发器创建示例
摘抄自 《posrgreSQL 修炼之道 从小工到专家》 触发器(trigger)是一种由事件自动触发执行的特殊的存储过程,这些事件可以是对一个表进行 INSERT,UPDATE,DELETE 等操作 触发器经常用于加强数据库的完整性约束和业务规则上的
Rails5中的autoload和eager_load
翻译并整理: https://collectiveidea.com/blog/archives/2016/07/22/solutions-to-potential-upgrade-problems-in-rails-5 https://blog.bigbinary.com/2016/08/29/rails-5-disables-autoloading-after-booting-the-app-in-production.html autoload和eager_load autoload: 在常量使用之前不会加载,只有当使用一个当前不存在常量时,会在 autoload_paths 寻找,然后加载它,当在给定的目录中找不到这个常量时,就会触发错误。并且 autoload 是非线程安
ruby中hash的排序
翻译自 https://medium.com/@florenceliang/some-notes-about-using-hash-sort-by-in-ruby-f4b3a700fc33 ruby中的sort和sort_by 是两个非常有用的工具,我们可以按照自己的想法排序。比如我们可以按照名字字母表或者名字的长短进行排序。但是ruby文档中却没有过多的说明,因此本文主要说明一下
vim删除不包含特定字符串的行
:g/xxx/d,删除包含xxx的行 :v/xxx/d,删除不含xxx的行 :%s/xxx//gn,统计xxx个数,n表示只报告匹配的个数而不进行实际的替换。 详见「:help :v」或「help :g」