摘要: 有些场景使用多维哈希来存储数据,时间复杂度恒定,简单粗暴好用。这里记录一下。 如下是三维哈希的简单示意图,建议层数不要太多,否则时间久了,自己写的代码都不认识。 下图是三维哈希在内存的存储形式,hashmap嵌套了3层。图里一层数组存放entry和链表next指针,每个节点里面都存放一个数组,数组存 阅读全文
posted @ 2018-08-29 16:37 morning_sun 阅读(4131) 评论(0) 推荐(1) 编辑
摘要: 收到一个任务,所有http的handler要对入参检查,防止SQL注入。刚开始笨笨的,打算为所有的结构体写一个方法,后来统计了下,要写几十上百,随着业务增加,以后还会重复这个无脑力的机械劳作。想想就low。 直接做一个不定参数的自动检测函数不就ok了么? 磨刀不误砍柴工,用了一个下午的时间,调教出一 阅读全文
posted @ 2018-07-09 16:59 morning_sun 阅读(1357) 评论(0) 推荐(0) 编辑
摘要: C#实现的阻塞队列,功能类似GO里的channel。 public class CBlockQueue<T> { private readonly Queue<T> queue = new Queue<T>(); private readonly int maxSize; bool closing; 阅读全文
posted @ 2019-12-27 17:13 morning_sun 阅读(3377) 评论(0) 推荐(0) 编辑
摘要: 依山傍水房数间,行也安然,坐也安然;一头耕牛半倾田,收也凭天,荒也凭天;雨过天晴驾小船,鱼在一边,酒在一边;路逢骚客问诗篇,好也几言,歹也几言;布衣得暖胜丝绵,新也可穿,旧也可穿;粗茶淡饭饱三餐,早也香甜,晚也香甜;夜归挚友话灯前,今也谈谈,古也谈谈;一觉睡到日三竿,不是神仙,胜似神仙。 阅读全文
posted @ 2019-10-11 10:47 morning_sun 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 作者:qingxili 来源:CSDN 原文:https://blog.csdn.net/qingxili/article/details/79870601 版权声明:本文为博主原创文章,转载请附上博文链接! 阅读全文
posted @ 2019-02-22 17:29 morning_sun 阅读(733) 评论(0) 推荐(0) 编辑
摘要: 最近在研究K8s,翻到酷壳https://coolshell.cn/ 看着看着发现里面有一篇关于招聘程序员面试的文章,看完很受益。转载收藏一下。 想起刚工作的时候,一个前辈分享的面试经验有核心三点:1,知识的广度深度;2,学习能力;3,解决问题的能力 原文地址:https://coolshell.c 阅读全文
posted @ 2019-01-23 15:49 morning_sun 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 启动进程,遇到报错: 分析配置文件内容没有错误。 怀疑可能是文件格式问题,在IDE里面查看,果然是windows格式。IDE里面可以修改,此外在Notepad++里面也可以。截图如下 用Notepad++(v7.5.9)打开配置文件,编辑选项—>文档格式转换—>转为UNIX格式 阅读全文
posted @ 2018-12-12 18:21 morning_sun 阅读(965) 评论(0) 推荐(0) 编辑
摘要: github上的golang双向rpc,基于原生“net/rpc”库实现,可以注册回调。仅支持一个server和一个client交互。 地址:https://github.com/rocket049/rpc2d 公共包: server端代码: 客户端代码: 阅读全文
posted @ 2018-12-11 11:53 morning_sun 阅读(1665) 评论(0) 推荐(0) 编辑
摘要: 线上服务器,同一个web接口有时需要兼容不同版本的结构体。这种情况思路是使用interface{}接收任意类型数据,结合reflect包处理。 如下,http接口调用者会传入不同的json结构数据(单体结构或切片结构): 兼容不同XXX结构体的方法是使用interface{},接收任意类型数据。 代 阅读全文
posted @ 2018-11-03 15:28 morning_sun 阅读(2745) 评论(0) 推荐(0) 编辑
摘要: 递归方法,逻辑简洁清晰。这个算法还是很重要的,需要重点记忆理解,面试经常考手写。据说是与傅里叶变换等并称“20世纪十大算法”。https://blog.csdn.net/v_JULY_v/article/details/6127953 快速排序算法的平均时间复杂度是 O(nlogn),最坏情况时间复 阅读全文
posted @ 2018-08-13 11:00 morning_sun 阅读(831) 评论(0) 推荐(0) 编辑
摘要: golang的slice支持func。使用func slice要注意func要完整描述入参出参。 如果需要执行一系列类型相同(入参出参格式相同)的函数,可以动态添加到一个slice里面。range slice顺序执行,也可并发执行,构造匿名goroutine,代码如下。 执行结果截图: 如果想对入参 阅读全文
posted @ 2018-07-19 10:38 morning_sun 阅读(660) 评论(0) 推荐(0) 编辑
摘要: 编码时冒出一个问题:在一个协程内部,再创建一个或多个协程,是否会产生依赖关系? 做了一个小实验,这里随笔记录一下经过,备注后续深入研究。 test代码: 运行结果: 可以得出结论:不同于linux里的进程依赖,golang里,协程都是互相独立的,没有依赖(父子)关系。main函数本身也运行在一个go 阅读全文
posted @ 2018-07-12 11:47 morning_sun 阅读(5977) 评论(0) 推荐(2) 编辑
摘要: 原本想在一个for里面创建10个协程,这些协程顺序拿到for的递增变量,把这10个递增变量都打印出来。但事与愿违,于是做实验,查书,思考,写出以下记录。 golang里,在for循环里面起协程,如下代码。会输出for循环的最后一个数,或者参杂有不确定的其他数字。 原因有二:1,golang是值拷贝传 阅读全文
posted @ 2018-07-07 15:03 morning_sun 阅读(5470) 评论(1) 推荐(0) 编辑
摘要: 做一个微服务,需要对http头域里的remoteip做访问限制:所有局域网都要鉴权,其中一些特殊ip,如网关地址,直接拒绝,防止公网访问。正则表达式很好的解决了这个,直接贴代码,读者拿来直接改改就能用了。 核心正则: golang的代码也很简单了,如下: 阅读全文
posted @ 2018-07-07 14:27 morning_sun 阅读(950) 评论(0) 推荐(0) 编辑