堕落不振功业废,勤耕不辍日月新

 分类:Python

golang中文字符编码转换

golang默认使用的字符是UTF8,不过很多网页使用的是gbk编码,这时候就需要通过编码进行转换。具体代码如下: package main import "golang.org/x/text/encoding/simplifiedchinese" type Charset s...

golang sync包互斥锁和读写锁的使用

golang sync包里提供了 Locker接口、互斥锁 Mutex、读写锁 RWMutex用于处理并发过程中可能出现同时两个或多个协程(或线程)读或写同一个变量的情况。 一、为什么需要锁 在并发的情况下,多个线程或协程同时去修改一个变量。使用锁能保证在某一时间点内,只有...

golang channel与sync.WaitGroup同步

golang中有2种方式同步程序,一种使用channel,另一种使用sync.WaitGroup。最近在使用golang写一个比较简单的功能 —- host1主机需要先在本机起一个TCP监听,起来后给host2主机发送指令,让其主动给host1主机监听的端口进行连接...

使用lshell构建受限的shell环境

2013年我写过一篇博文《linux下自建ssh堡垒机》,其核以是通过chroot和google Authenticator实现的。最近在研究一些web ssh平台时,无意中注意到一个python写的类似于chroot限定shell产品lshell 。本篇就记录下该工...

golang runtime进程调度函数

尽管 Go 编译器产生的是本地可执行代码,这些代码仍旧运行在 Go 的 runtime(这部分的代码可以在 runtime 包中找到)当中。这个 runtime 类似 Java 和 .NET 语言所用到的虚拟机,它负责管理包括内存分配、垃圾回收、栈处理、goroutine、ch...

golang TCP client自动重连

在 golang简易版TCP client server 篇中简单列了下golang下的c/s模式代码,不过遇到 server 端异常时, client端也就自动退出了,这里再给出一段自动重连的代码,实现无论server端如何,client始装循环下去。所以本篇的重点是clie...

golang简易版TCP client server

每个编程语言都会有socket类的编程,最常用的就是tcp c/s 和udp c/s,这里就使用golang实现一个简单的tcp server client程序,server会等待 client发送数据给他,server接收到数据后,再处理后回传给client 。具体效果如下图...

golang下慎用log.Fatal和log.Panic

在使用golang写代码时,在遇到err值判断的时候,我们经常会用到 log.Fatal 和 log.panic 将错误信息进行日志输出的情况,不过遇到的错误一般会有两种: 一种是确实影响到了程序后面的执行,前后关联性比较强; 另一种是程序关联性并不强,当前的执行不成功或...