自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 Golang context源码阅读与分析

阅读原文获得最佳体验:https://jiajunhuang.com/articles/2020_04_22-golang_context.md.htmlGolang中使用context作为goroutine之间的控制器,例如:package mainimport ( "context" "log" "time")func UseContext(ctx context.C...

2020-04-29 21:22:27 233

原创 Golang ASM简明教程

这几天倒腾了一下Go的ASM,然后写了一个简单的汇编代码,记录一下以防忘记。首先要说明的是Go的ASM是一种中间码,或者说是 众多汇编语言的一种抽象体,但是呢,又不完全是抽象,总之,揉合了Go自定义的一部分,和真实汇编语言。这里主要记录的就是 Go自己定义的那部分。首先如果你想查看一段Go代码产生的汇编码,可以这样:$ cat main.gopackage mainfunc add...

2020-04-24 10:20:19 1736

原创 Go使用gdb调试

其实我一般调试都是直接打log的,不过gdb调试还是很有用处,尤其是当碰到一些底层错误的需要单步跟踪的时候,比如,想研究一下 Go的runtime是如何实现的的时候。首先在编译Go程序的时候,要让Go带上编译信息:$ go build -gcflags=all="-N -l" .$ gdb testGNU gdb (Debian 8.2.1-2+b3) 8.2.1Copyright...

2020-04-23 20:59:02 892

原创 Golang中的并发控制

之前我写过一篇博客介绍 Python中的并发控制。Python的并发控制可以说很优雅,Java的也是类似的,那么,Go语言咋办?如果我也想实现类似的需求,例如:同时不超过8个goroutine执行任务,那该咋办呢?我在写 gotasks 这个异步任务框架 就有这种需求,因此我把Go的并发控制抽象成如下代码,以后就可以直接使用了:package pooltype GoPool struc...

2020-04-20 20:26:24 257

原创 博客的全部文章

在此做一下备份:2019-10-30 - SQLAlchemy简明教程 2019-10-25 - 这些年,我们错过的n个亿 2019-10-19 - 给Linux用户的FreeBSD快速指南 2019-10-18 - 旧电脑也不能闲着:家用备份方案 2019-10-15 - 将SQLite的数据迁移到MySQL 2019-10-08 - Linux托管Windows虚拟机最佳实践 ...

2019-10-30 15:14:24 300

原创 SQLAlchemy简明教程

原文可见:https://jiajunhuang.com/articles/2019_10_30-sqlalchemy.md.htmlSQLAlchemy是Python中常用的一个ORM,SQLAlchemy分成三部分:ORM,就是我们用类来表示数据库schema的那部分 SQLAlchemy Core,就是一些基础的操作,例如 update, insert 等等,也可以直接使用这部分来...

2019-10-30 15:13:01 995

原创 数据结构在实际项目中的使用(二)- 位图

原文也可见:https://jiajunhuang.com/tutorial/data_structure/bitmap.mdbitmap,就是传说中的位图,同样,在常见的互联网业务代码中很少看它的身影,但是在操作系统、网络驱动等软件中无处不是位图的 使用,其实在Redis中有对bitmap的直接操作,不过很少会用到。位图的使用首先我们来看看什么是位图(bitmap):我们知道...

2019-10-30 10:35:46 309

原创 数据结构在实际项目中的使用(一):数组

可以看到,数字10的下标是0,而数字11的下标是1,因此我们知道,对于数据来说,无论数组里的元素是什么,他们的下标都是从0开始(对于 绝大部分语言来说,下标都是从0开始,例如我们会使用到的C,Go和Pyhon)。注意,我们说数组存储的是一连串的内容,指的是他们在内存空间上是连续的,而不是他们的值是连续的,可以有这么一个数组:1, 3, 5, -7, -1 这也是一个合法合规的数组。不...

2019-10-29 13:34:01 795

原创 《数据结构在实际项目中的应用》系列文章

我的系列文章《数据结构在实际项目中的应用》已经写了四篇了,分别是数组(array) 位图(bitmap) 字典(map或dict) 链表(linked list)在此记录一下。在我本科学习数据结构的时候,由于没有项目实战经验,心里充满了疑惑,学习这些数据结构到底有什么用处?在毕业后的这几年, 接触了各式各样的项目,终于理解了数据结构在编程中的重要性。这个系列教程就是为了解...

2019-10-23 09:43:43 3469 1

原创 ssh时自动运行tmux

原文也可以见:https://jiajunhuang.com/articles/2019_09_18-run_tmux_automatically.md.htmltmux,终端复用神器,之前我一直用byobu,它是tmux的封装,我看了一下源代码,其实就是一堆的bash脚本+python脚本。因为一些 byobu的bug,我选择使用原生tmux,但是有一个问题,就是以前执行tmux的时候,是在...

2019-10-12 09:44:21 561

原创 Linux托管Windows虚拟机最佳实践

原文也可以见:https://jiajunhuang.com/articles/2019_10_08-linux_windows.md.htmlLinux和Windows各有所长,macOS非我所爱。对我来说,习惯使用XMonad这类平铺式窗口管理器,而Windows并没有好的替代品,再加上 Windows相比来说更加吃内存,国产软件又比较流氓等多个原因,我的方案是使用Linux作为桌面系统,...

2019-10-12 09:42:19 293

原创 frp 源码阅读与分析(二):TCP内网穿透的实现

frp 源码阅读与分析(二):TCP内网穿透的实现推荐在原文阅读:https://jiajunhuang.com/articles/2019_06_19-frp_source_code_part2.md.html在 上一篇 文章中,我们介绍了frp中的一些概念和基础知识,这一篇中,我们在此前的基础之上,来看看frp是怎么实现TCP内网穿透的。我们知道,要使用frp,必须有个服务端,然后要有...

2019-06-20 17:26:36 3521

原创 frp 源码阅读与分析(一):流程和概念

也可以在原文阅读:https://jiajunhuang.com/articles/2019_06_11-frpc_source_code_part1.md.htmlfrp 是一个比较流行的用于内网穿透的反向代理服务器,与Nginx不同,一般我们使用Nginx做负载均衡,而frp我们一般用来做内网穿透。先来看看Nginx和frp流量走向的区别。这是Nginx的流量走向示意图:图片需要在原文打...

2019-06-12 10:29:19 4262

原创 自己动手写一个反向代理

也可以阅读原文:https://jiajunhuang.com/articles/2019_06_09-write_you_a_simple_reverse_proxy.md.html此前谈到网络编程的重要性,放假在家做了一个反向代理。目前来说,比较好用的反向代理是 frp。但是用归用,造轮子归造轮子。明白了底层原理,才心安。先来看看frp的架构图,基本上反向代理都是这样的架构。图片见:h...

2019-06-11 11:16:55 1426

原创 SEO学习笔记

也可以见原文:https://jiajunhuang.com/articles/2019_05_14-seo.md.htmlSEO的全称是Search Engine Optimization,就是搜索引擎结果优化。目的就是让你的网站在搜索引擎的返回结果中靠前。现在的搜索引擎排序算法都精得很,而且不会公开,所以我们只能依靠官网的教程和其他人的经验来做。但是一个好的搜索引擎的目的是,按照用户输入...

2019-06-03 18:17:40 653

原创 Golang(Go语言)中实现典型的fork调用

Golang(Go语言)中实现典型的fork调用原文见:https://jiajunhuang.com/articles/2018_03_08-golang_fork.md.html背景在日常的系统编程中,我们经常有这样的需求:fork 多个子进程去执行任务。例如典型的 master-slave 架构便是这样的,fork 调用之后,父进程开始作为管理进程管理子进程,而子进程则开始执行处理请求...

2019-06-03 18:14:14 5723

原创 Python中的新式类(new style class)和老式类(old style class)

也可以在我的博客阅读:https://jiajunhuang.com/articles/2019_05_29-python_old_new_style_class.md.htmlPython2.3之前,使用的是老式继承,直接看例子:>>> O = object>>> class X(O): pass>>> class Y(O): pas...

2019-05-31 16:23:44 714

原创 nomad简明教程

也可以在我博客阅读:https://jiajunhuang.com/articles/2019_05_31-nomad.md.htmlk8s其实太复杂,对于小团队来说,光是hold住k8s就要花好几个人力,而且k8s更新迭代太快了,有种上了贼船就下不来的感觉。nomad就简单多了,就是一个调度器,啥也不带,显得有点简陋,不过,对于中小型团队来说,完全足够。下面是 k8s 和 nomad 的简...

2019-05-31 16:01:27 9795 1

空空如也

空空如也

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

TA关注的人

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