1 gochenguowei

尚未进行身份认证

在工作之余,记录下自己学习的东西,并收藏一些好的文章。

等级
TA的排名 6w+

go 字符串string 和 字符数组[]byte 的高效转换

在我们的程序里面基本都写成如下的转换vara=[]byte("helloworld")varb=string(a)这样的强制类型转换其实是调用底层的copy函数进行转化,也就是说需要在内存中进行拷贝。这如果并发量达到千万级别,这样的转换是很耗性能的。那么我们是否可以使用unsafe.Point()这样的指针直接转换呢?首先我们的知道string和[]byt...

2019-09-16 22:48:27

类似微博的消息推送的两种实现方式

我们在微博上订阅并关注某些人的微博,这些关注的人发布一条微博的时候,我们打开微博浏览会看到一条条消息按照时间的逆序在我们的首页展示出来,我们可以不停地往下阅览这些消息。那么从消息发布到阅览,这背后的技术是怎么实现的呢?下面我们来一看究竟。方案一:在消息发布的时候插入同一个全局的消息主表中。当用户查看时间时,首先查找所有关注的对象,列出这些人的所有消息,最后以时间为序来排序合并。大概的关系型数据...

2019-09-08 12:33:45

redis的LRU算法实现

http://www.cnblogs.com/WJ5888/p/4371647.htmlRedis:https://github.com/zwjlpeng/Redis_Deep_ReadRedis中采用两种算法进行内存回收,引用计数算法以及LRU算法,在操作系统内存管理一节中,我们都学习过LRU算法(最近最久未使用算法),那么什么是LRU算法呢LRU算法作为内存管理的一种有效算法,其含...

2019-03-31 01:00:32

使用GDB调试GO

转自:https://blog.csdn.net/gua___gua/article/details/50481534GDB是FSF(自由软件基金会)发布的一个强大的类UNIX系统下的程序调试工具。使用GDB可以做如下事情:启动程序,可以按照开发者的自定义要求运行程序。 可让被调试的程序在开发者设定的调置的断点处停住。(断点可以是条件表达式) 当程序被停住时,可以检查此时程序中所发生的...

2019-03-10 15:13:01

go net.http 每次都查询dns的导致的问题

在线上部署的一个程序,在某天突然在一天内出现多次“dialtcp:lookupxxxx.comon223.x.x.x:53:readudp180.x.x.x:7792->223.x.x.x:53:i/otimeout”的问题,导致线上告警触发了多次。后面查找问题,发现go每次发起http请求都会发起一个dns请求来进行域名解析,而我们服务器的dns...

2019-03-03 16:38:07

编程珠玑变位词算法

转自:https://blog.csdn.net/workformywork/article/details/16963613问题描述给定一个英语字典,找出其中的所有变位词集合。例如,“pots”,“stop”和“tops”互为变位词,因为每一个单词都可以通过改变其他单词中的字母顺序来得到。解决思路首先想到的方法应该是使用一个两层循环,遍历字典,然后再比较每个单词是否是变位词,在比较单...

2019-03-03 12:21:27

redis 4.0以上的module (一)

前两天查看redis的官方文档,发现在redis4.0以上,redis支持了可扩展了module,让用户可以自己根据需求自己扩展redis相关的功能了。所以趁周末,查看了官方的module文档,写了个简单的demo。1.下载并安装好redis4.0以上的版本(具体的安装步骤百度)2.新建一个目录并包含redismodule.h文件,里面包含了redis相关的操作的函数...

2018-12-23 21:55:44

openresty+lua 实现简单的灰度发布

openresty是在nginx之上集成了lua模块的第三方服务器,我们很容易基于lua对openresy进行简单的二次开发。下面就是一个简单的openresty+lua的灰度发布的测试demo,简单地来说就是通过client的ip来访问不同的服务器。nginx.conf配置文件如下:upstreamclient1{ server127.0.0.1:8080; }...

2018-12-16 22:12:29

nc 用法

转自:https://www.cnblogs.com/nmap/p/6148306.html什么是ncnc是netcat的简写,有着网络界的瑞士军刀美誉。因为它短小精悍、功能实用,被设计为一个简单、可靠的网络工具nc的作用(1)实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口(2)端口的扫描,nc可以作为client发起TCP或UDP连...

2018-12-05 23:52:37

Linux 技巧:让进程在后台可靠运行的几种方法

转自:https://www.ibm.com/developerworks/cn/linux/l-cn-nohup/我们经常会碰到这样的问题,用telnet/ssh登录了远程的Linux服务器,运行了一些耗时较长的任务,结果却由于网络的不稳定导致任务中途失败。如何让命令提交后不受本地关闭终端窗口/网络断开连接的干扰呢?下面举了一些例子,您可以针对不同的场景选择不同的方式来处理这个问...

2018-12-04 21:06:40

nginx https 配置

转自:https://www.cnblogs.com/jingxiaoniu/p/6745254.html一、HTTPS简介1.https简介HTTPS其实是有两部分组成:HTTP+SSL/TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据2.https协议原理首先,客户端与服务器建立...

2018-12-02 23:02:44

sublime中换行符替换成“,”

command+option+ffindwhat中输入:command+shift+enter在ReplaceWith中输入","点击replaceall

2018-10-21 21:38:02

当 go 遇到“墙”时

转自:https://my.oschina.net/xxbAndy/blog/846722作为一名从py转向go语言的新手,在使用第三方包的时候我们需要比较熟悉该包或者模块的构建与安装,好比在使用pip或者easy_install之类的工具安装模块时经常会遇到底层库或者工具包的依赖再或者网络超时而导致模块安装失败。然而在使用go的过程中,虽然不必像py那样为一个复杂模块去解决各种的依赖关系,但...

2018-10-20 15:28:17

MySQL 导入和导出数据

转自:https://blog.csdn.net/myron_sqh/article/details/13016945一、导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径):1、导出数据和表结构:mysqldump-u用户名-p密码数据库名>数据库名.sql#/usr/local/mysql/bin/  mysqldump-uroot-p...

2018-10-19 09:41:20

MySQL用户管理:添加用户、授权、删除用户

转自:https://www.cnblogs.com/chanshuyi/p/mysql_user_mng.html添加用户以root用户登录数据库,运行以下命令:createuserzhangsanidentifiedby'zhangsan';上面的命令创建了用户zhangsan,密码是zhangsan。在mysql.user表里可以查看到新增用户的信息:授权...

2018-10-18 19:36:37

如何高效产生m个n范围内的不重复随机数

转自:https://blog.csdn.net/code_crash/article/details/4875601 如何产生不重复的随机数?最容易想到的方法,是逐个产生这些随机数,每产生一个,都跟前面的随机数比较,如果重复,就重新产生。这是个很笨的方法,且比较次数呈线性增长,越往后次数越多。其实这些比较是多余的,完全可以不进行比较,只要反过来,按顺序产生这些数,但随机产生它们的位置。例如下...

2018-09-09 09:07:44

程序员面试智力题

转自:https://blog.csdn.net/iteye_5501/article/details/81657038第一组  1.烧一根不均匀的绳,从头烧到尾总共需要1个小时。现在有若干条材质相同的绳子,问如何用烧绳的方法来计时一个小时十五分钟呢?  2.你有一桶果冻,其中有黄色、绿色、红色三种,闭上眼睛抓取同种颜色的两个。抓取多少个就可以确定你肯定有两个同一颜色的果冻?  3.如果...

2018-09-07 17:49:00

有100w个关键字,长度小于等于50字节(B)。用高效的算法找出 top10 的热词,并对内存的占用不超过1MB

昨天去面试C++后台开发,给了一份笔试题,里面有道附加题:“有100w个关键字,长度小于等于50字节(B)。用高效的算法找出top10的热词,并对内存的占用不超过1MB”。刚开始看到这道题,我的第一反应觉得应该就是大化小的分而治之。然后给出的答案跟网上也差不多(回来之后百度的)。觉得还不错,所有记录下解决过程。(1)先把100w个关键字hash映射到小文件,根据题意,100w...

2018-08-25 17:37:19

Google开源协议Protobuf的简介及其序列化原理

转自:https://blog.csdn.net/chengzi_comm/article/details/53199278protobuf介绍及其序列化原理什么是probobuf、作用是什么:   ProtocolBuffers是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平...

2018-08-24 10:45:18

int *p = NULL 和*p = NULL 有什么区别?

很多初学者都无法分清这两者之间的区别。我们先看下面的代码:int*p=NULL;这时候我们可以通过编译器查看p的值为0×00000000。这句代码的意思是:定义一个指针变量p,其指向的内存里面保存的是int类型的数据;在定义变量p的同时把p的值设置为0×00000000,而不是把*p的值设置为0×00000000。这个过程叫做初始化,是在编译的时候进行的。明白了什么是初...

2018-08-22 18:36:27

查看更多

勋章 我的勋章
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。