1 gochenguowei

尚未进行身份认证

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

等级
TA的排名 6w+

Mysql 的慢查询日志开启

慢查询日志其实就是将mysql 的 sql 执行过程中执行时间超过阈值的sql 语句记录下来,方便后续优化。而阈值的大小由 long_query_time 来设置,默认是10秒。 在默认的情况下,mysql 的慢查询日志事关闭的,需要人工手动开启。mysql> show variables like 'long_query_time'\G;*******...

2019-10-21 21:28:26

乐观锁和悲观锁

前言乐观锁和悲观锁问题,是出现频率比较高的面试题。本文将由浅入深,逐步介绍它们的基本概念、实现方式(含实例)、适用场景,以及可能遇到的面试官追问,希望能够帮助你打动面试官。目录一、基本概念二、实现方式(含实例) 1、CAS(Compare And Swap) 2、版本号机制三、优缺点和适用场景四、面试官追问:乐观锁加锁吗?五、面试官追问:CA...

2019-09-25 08:51:05

Go 高性能编程技巧

1.在高并发队列任务分发的场景中RingBuffer比Channel的性能更好2.defer功能不是静态编译时提供的,而是运行时提供的,所以使用defer会产生一些额外的性能开销(了解就好,该用还是得用)3.encoding/json序列化是通过反射机制实现的,性能很差,可以使用ffjson生成encode/decode代码来提升性能。如果可能,使用MsgPack替代JSON,因为Msg...

2019-09-17 22:03:44

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

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

2019-09-16 22:35:25

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

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

2019-09-08 11:40:37

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的导致的问题

在线上部署的一个程序,在某天突然在一天内出现多次 “dial tcp: lookup xxxx.com on 223.x.x.x:53: read udp 180.x.x.x:7792->223.x.x.x:53: i/o timeout” 的问题,导致线上告警触发了多次。后面查找问题,发现 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的官方文档,发现在redis 4.0以上,redis支持了可扩展了module,让用户可以自己根据需求自己扩展redis相关的功能了。所以趁周末,查看了官方的module文档,写了个简单的demo。1. 下载并安装好 redis 4.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 配置文件如下:upstream client1 { server 127.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用户登录数据库,运行以下命令:create user zhangsan identified by '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

查看更多

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