自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

kkx的博客

做一个有偏见的偏执狂

  • 博客(50)
  • 收藏
  • 关注

原创 Golang全局变量加锁的问题

如果全局变量只读取 那自然是不需要加锁的如果全局变量多进程读,多进程写,那自然是需要加读写锁的但是如果全局变量只有一个进程写,其他进程读呢? 如果采用COW的方式,写进程只是通过单次赋值的方式来更新变量,是否就可以不加锁了呢?就第三种情况而言:当然我们通过 go build -race 或者 go run -race 就会出现WARNING: DATA RACE。 但是出现 data race 就证明一定有问题么?其实核心点在于这个赋值是否是原子的。也就是说是否存在 p1 = p2 的写入时.

2020-08-22 07:09:39 4848 2

原创 ssh登录辅助管理

问题在ssh 登录时我们经常会遇到每次登录都需要输入密码, 很麻烦需要登录多个 user@host ,难以记忆工具介绍基于上述问题, 我基于sshpass 开发了一个shell脚本,repo 地址:https://github.com/hongweikkx/sshp将密码记录在文本中, 使用sshpass 就不需要每次输入密码用短名字来替换user@host, 方便使用、便于记忆。 使用时只需要 sshp shortname...

2020-06-26 17:16:05 265

原创 golang 写入和读取pb文件

golang 读取pb文件记录一次golang 读取pb的demo定义proto文件tree 如下:.├── main.go├── output│ └── output.pb└── proto ├── test.pb.go └── test.protocat test.pb.gosyntax = "proto3";package example;me...

2019-10-18 20:46:12 3018

原创 go get 不能从golang.org 上fetch的问题解决

问题:我用go get golang.org/x/net/ipv6时报错package golang.org/x/net/ipv6: unrecognized import path "golang.org/x/net/ipv6" (https fetch: Get https://golang.org/x/net/ipv6?go-get=1: dial tcp 119.28.87.227:...

2019-02-25 23:27:20 1898

原创 shell 参数的分组读取

分组读取今天写shell脚本的时候,遇到一个问题,需要将传入的参数分组读入比如 sh test.sh 1 2 3 4 5 6 7 8 9我希望1 2 3 是一组 4 5 6 是一组先上实现代码:cat test.shfor i in "$@"do echo $idoneexit 0调用1 sh test.sh “1 2 3” “4 5 6” “7 8 9”输出...

2019-01-15 19:39:55 1201

原创 protobuff vs json

本文讨论 protobuff 和 json 作为消息传递格式的优缺点。消息处理的过程包括:接收到二进制 -> 切包 -> 解码 -> 消息分发 -> 处理消息 所以我们决定从 1. 包的大小 2. 编解码速度 来讨论两者1. 包的大小protobuff 的编码方式在看protobuff 之前,我们需要知道pb并没有自己切tcp包的代码,常用的做法还是程序自己去做...

2019-01-03 19:27:23 1429

原创 golang 线程模型

1. 基本概念M: 内核线程 P: go 代码片段所必须的上下文环境 G: go 代码片段 调度器: 管理和调度 M, P, G2. 存储容器全局M 列表: 存储所有M的一个单向链表 全局P 列表: 存储所有P的一个数组 全局G 列表: 存储所有G的一个切片 调度器的空闲M列表: 存放空闲M的单向链表 调度器的空闲P列表: 存放空闲P的单向链表 调度器的可运行...

2018-08-30 19:50:37 859

原创 golang 用函数名动态调用函数(包括变参函数)

golang 用函数名动态调用函数(包括变参函数)func main(){ ret1 := Apply(Hello, []interface{}{2,3}) for _, v:= range ret1{ fmt.Println(v) } ret2 := Apply(Format, []interface{}{"hello",44}) f...

2018-08-24 20:07:54 11194

原创 IOData

看项目代码的时候发现写入file的Info不是一个扁平化的list, 所以感觉很奇怪。 就看了一下file的文档 file:write_file(FileName, Bytes) -> ok|{error, Reason} Bytes = iodata() iodata() 文档中是这么定义的: iodata(): iolist()|binary binary():>

2018-08-24 19:59:49 1483

原创 动态规划、分治、贪心、递归

一言以蔽之: dp 和分治 之间的区别就在于是否有重叠子问题 ,如果有那就应该dp 否则就应该分治。 当然如果可以每一步都产生最优解那么就不必dp了, 贪心算法就可以了. 而递归只是一种实现算法的方法.例子 下面分别用 dp, dc(分治法), 贪心来做 leetcode 514. 自由之路 https://leetcode-cn.com/problems/freedom-trai...

2018-08-23 17:53:08 502

原创 hibernate and why gen_server2 ?

hibernate - 休眠1. 描述:使进程进入一个最小内存分配的等待状态。 如果这个进程并没有期望近期接收任何消息, 那么这个状态是有用的。2. 行为:会丢掉进程调用栈,然后 进行gc。 这样所有的活数据就会在一个连续的堆中。 这个堆大小几近相当于所有活数据的大小(即便这个大小小于最小进程堆大小) . 如果所有活数据大小小于最小进程堆大小的话,在醒来后就会发生一次g...

2018-07-27 11:40:43 289

翻译 Heap-Architectures-for-Concurrent-Languages-using-Message-Passing

设计并发语言的一个难点就在于运行时系统中存储结构的实现, 这里将讨论 依赖自动内存回收和通过异步消息传递实现并发的语言的运行时系统实现有三种可选择的内存堆结构。 1:每个进程分配和管理自己的内存区域, 所有在进程间的消息都必须拷贝。 2:有一个所有进程都共享的堆 3:一个混合的架构, 每个进程有自己的私有堆,同时有一个共享的堆用于类似于消息的数据发送.接下...

2018-07-21 02:40:24 237

原创 开源代码list

开源代码listhttps://github.com/sindresorhus/awesome比如: 对于erlang https://github.com/drobakowski/awesome-erlang#readme 对于go https://github.com/avelino/awesome-go#readme

2018-07-17 15:33:02 337

原创 my gitpage blog

折腾了几天自己的gitpage blog。 网址是 kakashi.me blog 是通过 gitpage + hexo + yilia 建的。

2018-07-16 22:50:40 340

原创 golang &^ 运算符

&^ 运算符0110 &^ 1011 = 0100 1011 &^ 1101 = 0010&^ 二元运算符的操作结果是“bit clear” 若: a &^ b 的意思就是 将b中为1的位 对应于a的位清0, a中其他位不变...

2018-07-16 22:39:26 10909 4

原创 abstract_code 和erl文件的互相转换

erl <=> abstract_codeerl => abstract_codeerlc +debug_info test.erl{ok, {_, [{abstract_code, {_, Abs}}]}} = beam_lib:chunks(test, [abstract_code]).abstract_code => erlS = e...

2018-07-10 23:54:45 503

原创 解决git 本地修改导致不能pull

问题:我在本地修改过 README.md git pull 时发现报错: Your local changes to the following files would be overwritten by merge: README.md. Please commit your changes or stash them before you merge 可是我现在不想提交本地的修改...

2018-05-25 23:48:17 20920 2

原创 google c++编码风格(中文)

google c++编码风格-zh http://zh-google-styleguide.readthedocs.io/en/latest/google-cpp-styleguide/contents/

2018-03-26 18:02:21 1354 1

原创 erlang-面向函数的程序 面条 vs 馄饨

erlang-面向函数的程序 面条 vs 馄饨1. 如何解决面条式的代码?(面条:代码结构或者逻辑混乱如意大利面般)1. 变量命名2. 函数中一致性的抽象层次 (错误表象:一个函数有多于两层的嵌套或者缩进)3. 短小函数 (错误表象: 一眼望不到边的函数)4. 重复函数 (错误表象:有ctrl-c ctrl-v 的代码片段)2.如何解决函数过于短小导...

2018-03-07 16:21:10 278

原创 读取.csv文件为.erl文件

1. 功能描述erlang游戏服务器经常会用到的一个功能模块就是将策划配置的.csv文件改写成 .erl 文件。所以我把这个功能单独写成了一个服务。 2. 服务git地址为https://github.com/hongweikkx/csv2erl.git3. 功能效果:.csv 文件 cat hero.csvhero_id,hero_name英雄id,英雄名字...

2018-03-04 17:57:03 417

原创 mac 安装mysql

mac 安装mysql1. 安装homebrew2. 用brew 安装mysql执行brew install mysql,会出现类似的提示: We've installed your MySQL database without a root password. To secure it run: mysql_secure_installationMySQ...

2018-03-04 17:31:02 499

原创 redis - erlang 学习

redis - erlang 学习1. download rediswindows-exe:https://github.com/MSOpenTech/redis/releasesgit source: https://github.com/antirez/redis2. 启动 and 配置 and 简单熟悉网上有教程,可以很快的启动和简单配置 http://www.runoob.com

2017-12-29 16:48:37 604

原创 erlang function efficiency

erlang function efficiency1. match parttendomap(_Map, [], Ys) -> Ys;map(_Map, [_|_] = Xs, []) -> %% 1.1 do_not map(_Map, Xs, []) -> Xs;map(Map, [X | Xs], [Y|Ys]) -> [Map(X,Y) | map(Map, Xs,

2017-12-22 19:58:35 254

原创 erlang 的垃圾回收机制简介

erlang 的垃圾回收机制简介一. 所有垃圾回收方案引用计数: 与程序实时 更平缓标记清除: 内存耗尽时,清除不可达的内存空间,断崖式的增加(可能会导致实时性问题)节点复制: 分成两个半区, 内存消耗较大标记-整理分代 : 基于统计学、二. erlang 垃圾回收方案进程内的数据是通过分代来gc的 数据分为 minor gc(只对年轻一代) 和major gc(所有).

2017-12-22 19:53:01 618

原创 erlang 进程独占的可能性

erlang 进程独占的可能性erlang 的进程调度靠的是reduction,reduction的调用一般是在某一个原子或者基础指令调用完后才会调用, 如果减少至0,则进程切换。 所以进程并不是在任意指令下切换。那也就是说如果有某个命令没有调用到reduction, 这样也就不会进程切换, 就会出现进程独占的极端情况。所以应该避免耗时特别长,但是reduction又特别少的操作。 这些操作一般不会

2017-12-22 19:45:23 247

原创 Erlang数据类型的内部实现

Erlang数据类型的内部实现: Erlang数据类型的表示和实现(5)——binary http://www.cnblogs.com/zhengsyao/p/erlang_eterm_implementation_5_binary.html Erlang数据类型的表示和实现(4)——boxed 对象 http://www.cnblogs.com/zhengsyao/p/erlang_ete

2017-12-22 19:39:47 527

原创 erlang 读取utf-8 BOM 问题

erlang 读取utf-8 BOM 问题1. 问题自己在做一个erlang读取.csv(utf-8) 转化为.erl 文件的练手项目, 一直会遇到用 file:read_file/1读取出来的和实际在utf-8中的内容不一致

2017-11-07 17:26:43 387

原创 erlang 中间码

erlang 中间码1. core中间码的形成对于文件test.erl, 可以在编译的时候,加to_core 参数 c(test, [to_core]).2. 其他中间码的形成参考: erlang虚拟机代码执行原理

2017-11-06 17:23:24 337

原创 开源软件的许可证

在github 创建一个新仓库的时候,会遇到选取license 的问题,经常忽略掉。。 今天百度了一下,整理如下: 1. 开源许可证教程 2. 如何选择开源许可证? 这个特别好,因为里面有一张图,可以很快的了解,选取license,而不用在无聊的许可证术语中折腾。

2017-10-30 17:47:28 455 1

原创 c++学习计划

C++ 学习计划init:2017.10.28 14:00 从知乎上查到的学习计划, 为了让自己能够坚持下去,发篇blog记录一下。每周会在本blog更新一下自己的进度。 1. 学习《c++primer》,并对每个习题都自己写代码实现一遍,包括稍微复杂一点的例子。代码托管在github 2. 认真读完《effective c++》,《effective stl》。学习《数据结构与算法分析》,并

2017-10-28 13:49:45 1811

原创 erlang 数据结构总结

erlang 数据结构总结1. key-value 类型proplist 比较特殊, 一般应用于config 的读取, orderdict 适用于少量数据,一般小于75个元素, 如果大于75, 你需要切换到其他的数据结构中, 如dict, gb_trees, array 并不像其他语言的数组一样拥有常数数量级的读取,没有什么优势,所以很少使用. maps -未来可能会替换records- ,

2017-10-27 11:02:59 554

原创 erlang 数据结构 --maps

1. 今天是maps1.1. key-value 数据结构 1.2. 更好的模式匹配 2.操作:2.0 格式1> F = #{a => 1, b => 2}. #{a => 1,b => 2}2.1. 更新key-value=> 如果原本有key, 则更新, 如果没有key,就插入key-value; := 更新已有的key的value,如果原来没有key,就报错3> F1 = F#{a =>

2017-10-26 17:36:12 1971

原创 erlang 数据结构 -- queue

今天是队列1. 定义:双端队列, FIFO2. 实现:我们都写过用两个栈来实现一个队列, 而erlang queue的实现,就是用这种方法来做的。因为erlang lists 元素如果在前面插入是o(1), 而在后面加入时o(N) , 所以我们很少从后面加入元素或者从后面取元素, 很显然这就是栈的特性。3. 函数接口original API 包含了队列基本操作函数 而Extended API有更少

2017-10-24 16:36:41 985

原创 erlang 数据结构-- 有向图

今天是有向图1. 涉及到图的有两个module, digraph.erl 和 digraph_utils.erldigraph.erl: 对边, 节点,路径等的操作 digraph_utils: 关于 遍历, 环和树的测试, 和找邻居 具体的函数,等用到的时候慢慢更新吧。2. 应用时踩的坑之前在写好友系统(单向好友)的时候,决定采用一种新的想法。因为单向好友,关注等,就像是有向图, 又有向图本身

2017-10-23 12:23:00 690

原创 erlang数据结构-- sets

erlang sets ordsets gb_sets sofs

2017-10-20 11:19:19 1532

原创 erlang 数据机构 -- array

erlang array

2017-10-19 13:07:40 723

原创 erlang 数据结构 -- gb_trees

erlang gb_trees 使用场景

2017-10-18 11:21:01 960

原创 erlang 数据结构--(ord)dict

1. 今天是dict 和 orddict都是key-value 数据机构dict 判断key是否等于用的是 =:=,也就是说1,1.0 是不同的key,而orddict判断等于用的是 == orddict 在learnyousomeerlang 上说的是适用于75个元素以下的数据量, 在之上可以用dict,或者gb_tree两个模块提供了相同的功能函数, 所以一起介绍。2. 函数值得注意

2017-10-17 15:10:08 1238

原创 include include_lib 的区别

include 和 include_lib 的区别: include_lib类似于include,但不应该指出绝对文件。相反,第一个路径应该被假设为应用程序的名称。 例如:-include_lib(“kernel/include/file.hrl”). 代码服务器使用代码:lib_dir(kernel)来查找Kernel的当前(最新)版本的目录,然后搜索文件file.hrl的子目录。stack

2017-10-16 19:48:05 2997

原创 erlang 数据结构---proplists

erlang proplists

2017-10-16 16:11:48 2430

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除