12 robertkun

尚未进行身份认证

deep thinking

等级
TA的排名 3k+

go 协程返回值处理

go 协程返回值处理package mainimport "fmt"import "sync"var ch = make(chan int)func do(lock *sync.Mutex, ct *int) { lock.Lock() *ct++ lock.Unlock() ch <- 1}func main() { fmt....

2019-12-23 18:03:17

求两数之和

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]func tw...

2019-01-16 17:24:42

c++实现快速排序算法

#include <unistd.h>#include <stdio.h>using namespace std;void quickSort(int arr[], int left, int right) { if (left > right) { return; } int i = left; int j = right; int bas...

2019-01-16 15:09:32

golang源码剖析-内存管理-2

接上篇:[ https://blog.csdn.net/robertkun/article/details/80140594 ] 在真正进入内存分配过程之前,还需要了解一下整个内存分配器是如何创建的以及初始化成什么样子。完成内存分配器创建初始化的函数是runtime·mallocinit,看一下简化的源码:voidruntime·mallocinit(void){ // 创建mh...

2018-05-02 23:07:42

golang源码剖析-内存管理-1

转自[http://skoo.me/go/2013/10/13/go-memory-manage-system-alloc ] 这个拿来主义虽然不太好, 但总比不拿强.. 吃水不忘挖井人,感谢原文作者分享.内存布局结构图 我把整个核心代码的逻辑给抽象绘制出了这个内存布局图,它基本展示了Go语言内存分配器的整体结构以及部分细节(这结构图应该同样适用于tcmalloc)。从此结构图来看,...

2018-04-29 00:50:20

golang源码剖析-网络库的基础实现-3

转自: http://skoo.me/go/2014/04/21/go-net-core 接上一篇: https://blog.csdn.net/robertkun/article/details/80101591runtime中的epoll事件驱动抽象层其实在进入net库后,又被封装了一次,这一次封装从代码上看主要是为了方便在纯Go语言环境进行操作,net库中的这次封装实现在poll/fd...

2018-04-27 23:04:45

golang源码剖析-网络库的基础实现-2

转自: http://skoo.me/go/2014/04/21/go-net-core 接上一篇: https://blog.csdn.net/robertkun/article/details/80087304想要弄明白网络库的底层实现,貌似只要弄清楚echo服务器中的Listen、Accept、Read、Write四个函数的底层实现关系就可以了。本文将采用自底向上的方式来介绍,也就是从...

2018-04-26 23:17:27

golang源码剖析-网络库的基础实现-1

转自: http://skoo.me/go/2014/04/21/go-net-core 偶遇大神写的文章, 分析的很透彻, 转过来学习了.Go语言的出现,让我见到了一门语言把网络编程这件事情给做“正确”了,当然,除了Go语言以外,还有很多语言也把这件事情做”正确”了。我一直坚持着这样的理念——要做”正确”的事情,而不是”高性能”的事情;很多时候,我们在做系统设计、技术选型的时候,都被“高...

2018-04-25 22:57:32

golang源码剖析-Goroutine与调度器-2

转自: 原文地址 此文文风优雅, 通俗易懂, 让人理解起来比较容易, 很是不错. goroutine与调度器我们都知道Go语言是原生支持语言级并发的,这个并发的最小逻辑单元就是goroutine。goroutine就是Go语言提供的一种用户态线程,当然这种用户态线程是跑在内核级线程之上的。当我们创建了很多的goroutine,并且它们都是跑在同一个内核线程之上的时候,就需要一...

2018-04-22 17:00:30

golang源码剖析-Goroutine源码分析-1

转自:[https://studygolang.com/articles/7734] 本文针对的go版本是截止2016年6月29日最新的Go1.7。一、Golang简介1.1概述Golang语言是Google公司开发的新一代编程语言,简称Go语言,Go 是有表达力、简洁、清晰和有效率的。它的并行机制使其很容易编写多核和网络应用,而新奇的类型系统允许构建有弹性的模块...

2018-04-22 07:23:56

c++创建一个linux deamon进程

正规的方法, 创建一个deamon进程,需要很多步骤 1. fork() 2. 子进程setsid() 3. 主进程wait() 4. chdir() 5. umask()非正规方法创建一个deamon进程的步骤: 1. 创建一个子进程fork(), 创建子进程的目的是为了后面的设置进程组ID. 2. 子进程执行setsid(), 执行setsid()有两个目的, 一是创建一...

2018-02-09 17:11:37

golang使用aes库实现加解密

golang实现加密解密的库很多,这里使用的是aes库+base64库来实现.使用时,需要指定一个私钥,来进行加解密,这里指定是:varaeskey=[]byte(“321423u9y8d2fwfl”)上代码:packagemainimport("fmt""crypto/cipher""crypto/aes""bytes

2018-01-31 15:39:42

关于c++析构函数要不要加virtual的问题

1.析构函数加virtual#include using namespace std;class CA {public: CA() { cout "CA()" << endl; } virtual ~CA() { cout "~CA()" << endl; }};class CB : public CA {public: CB() { cout "CB

2018-01-31 11:31:54

C++的构造和析构顺序

子类的构造和析构过程, 上代码:#include using namespace std;class CA {public: CA() { cout "CA()" << endl; } ~CA() { cout "~CA()" << endl; }};class CB : public CA {public: CB() { cout "CB()" <<

2018-01-30 10:07:03

golang的defer,recover,panic用法

示例如下:package mainimport ( "fmt")func defer_call() { defer func() { fmt.Println("before") }() defer func() { if p := recover(); p != nil { fmt.Prin

2018-01-29 21:15:43

关于c++中继承和虚函数的一些思考

做为一个这么多年的老程序员,有时候是应该反思一下自已,好多基础的东西都丢掉了. 今天有时间再复习一下,温故而知新嘛. 致每个在路上的人,努力不放弃. 上代码:#include class CA {public: virtual void vfunc1() { printf("CA:vfunc1()\n"); }

2018-01-27 11:10:18

golang文件读取-按行读取

golang文件读取-按行读取a.txt文件内容:ABCDEFGHIHELLOGOLANGpackagemainimport("fmt""os""io""bufio""strings")funcmain(){fileName:="C:\\Robert\\日志分析\\tools_go

2018-01-25 16:49:15

golang文件读取-按指定BUFF大小读取

golang文件读取-按指定BUFF大小读取a.txt文件内容: ABCDEFGHI HELLO GOLANGpackage mainimport ( "fmt" "os" "io")func main() { fileName := "C:\\Robert\\日志分析\\tools_go\\vdn_sqlInterface\\

2018-01-25 16:43:09

golang使用net库实现一个简单的服务端和客户端通信

golang使用net库实现一个简单的服务端和客户端通信服务端代码: 服务端启动监听,默认127.0.0.1, 设置端口9090package mainimport ( "fmt" "runtime" "net" "os")func recvFile(conn net.Conn) { fmt.Println("new connecti

2018-01-25 15:50:14

golang解决数据库中null值的问题

转自:http://blog.csdn.net/qq_15437667/article/details/78780945要点从数据库读取可能为null值得值时,可以选择使用sql.NULL***来读取;或者使用IFNULL、COALESCE等命令让数据库查询值返回不为”“或者NULL若需要往数据库中插入null值,则依然可以使用sql.NULL***存储所需的值,然后进行插

2018-01-25 09:11:33

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。