自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

翔云

Just try, don't shy.

  • 博客(719)
  • 资源 (15)
  • 收藏
  • 关注

原创 MySQL高可用方案

MySQL高可用方案MySQL高可用方案MySQL高可用方案

2019-11-30 23:24:58 2866

原创 golang 故障模拟工具failpoint的使用

测试是功能上线之前的重要环节。测试过程中,要尽量覆盖各种场景。故障情况或异常情况下的场景测试,也是必不可少的。如何模拟故障呢?在FreeBSD 中, failpoints经常用来模拟故障。在golang,也有failpoint的实现,就是目前pingcap 公司的开源项目failpoint.下面介绍golang中的failpoint的实现。1.安装failpoint工具cd $GO...

2019-11-15 20:09:27 1762

原创 golang中mysql建立连接超时时间timeout 测试

本文测试连接mysql的超时时间。这里的“连接”是建立连接的意思。连接mysql的超时时间是通过参数timeout设置的。1.建立连接超时测试下面例子中,设置连接超时时间为5s。MySQL server IP是192.168.0.101,端口3306。每3s执行一次SQL。// simple.gopackage mainimport ( "database/s...

2019-10-27 21:46:51 5821

原创 Golang 空指针nil的方法和数据成员

golang中,有一个特殊的指针值nil.如何使用nil没有方法和成员变量呢?下面来看下具体例子。程序中,定义结构体类型Plane, 将Plane类型的指针作为函数的参数,然后传入nil作为实参。在函数中,使用nil访问Plane的方法。package mainimport ( "fmt")type Plane struct { Num int...

2019-10-17 22:49:40 3183

原创 MySQL使用空事务解决slave从库errant问题

MySQL集群一般部署为主从架构,主库专门用于写入数据,从库用于读数据。异常情况下,在从库上写入数据,就会出现主从数据不一致问题,称为errant。如果从库上的这些数据主库上已经有了,或者主库不需要这些数据,我们就可以使用空事务解决errant问题。接下来,本文介绍如何使用空事务解决errant问题。首先查看主库的GTID集合:>show master status\G*****...

2019-10-17 22:17:46 528

原创 MySQL 如何使用show processlist进行过滤

在使用show processlist的时候,直接使用会显示很多的内容,无法很快找到需要的信息。如何过滤操作呢?其实,show processlist展示的内容是从information_schema.processlist数据表查询得到。数据表information_schema.processlist各字段如下:mysql> desc information_schema.pro...

2019-10-14 20:21:43 11719

原创 MySQL 的连接时长控制--interactive_timeout和wait_timeout

在用MySQL客户端对数据库进行操作时,如果一段时间没有操作,再次操作时,常常会报如下错误:ERROR 2013 (HY000): Lost connection to MySQL server during queryERROR 2006 (HY000): MySQL server has gone awayNo connection. Trying to reconnect...这...

2019-10-13 17:37:38 13983 3

原创 查看MySQL 连接信息--连接空闲时间及正在执行的SQL

MySQL 客户端与MySQL server建立连接后,就可以执行SQL语句了。如何查看一个连接上是否正在执行SQL语句,或者连接是否处于空闲呢?下面我们做下测试。1.查看连接的空闲时间首先看下测试程序。代码中,每3s执行一条sql语句。//conn_idle_time.gopackage mainimport ( "database/sql" "...

2019-10-13 13:02:47 2447

原创 mysql timestamp为0值时,python读取后的对象为None

MySQL数据表中,如果timestamp类型的字段,值为0, python从数据库读取数据后,得到对象是什么类型,是否为None呢?下面来测试下。创建数据表首先创建数据表,其中字段pr_rule_update_time为timestamp类型,值为0.CREATE TABLE `orange_service` ( `id` int(11) NOT NULL AUTO_INCREMEN...

2019-10-13 11:14:18 899

原创 MySQL基础普及《MySQL管理之道:性能调优、高可用与监控》

最近工作的内容涉及MySQL运维内容,陆陆续续读了几本相关的书,其中一本是《MySQL管理之道:性能调优、高可用与监控》。内容涵盖性能调优(包括sql优化等)、备份、高可用,以及读写分离等,对于普及MySQL基础非常有用。记录一下,以便于后面查阅。附目录:1章 MariaDB架构与历史11.1 MariaDB的介绍 11.2 MariaDB和MySQL的兼容性 21.3 MariaDB...

2019-10-04 11:22:09 269

原创 读《大秦帝国》第三部

现在是2019年国庆假期,这两天终于把《大秦帝国》第三部读完了。从2017年7月份就已经开始读了,断断续续,中间停了很长时间,看其他书去了。今天总结一下书中的内容。第三部,各国之间继续攻伐。秦国这边开疆拓土,先后与楚国,与魏国,与赵国,都发生了攻城略地的战争。白起立下了赫赫战功。外交上,采用范睢的远交近攻方略,使山东各国不能联合。这期间,燕国和齐国发生了大规模战争,僵持五年有余,最后乐毅大...

2019-10-04 10:51:45 326

原创 golang mysql 如何设置最大连接数和最大空闲连接数

本文介绍golang 中连接MySQL时,如何设置最大连接数。文中例子连接MySQL用的package是github.com/go-sql-driver/mysql.设置最大连接数的接口是func (db *DB) SetMaxOpenConns(n int) 设置连接MySQL可以打开的最大连接数。如果n <= 0,表示打开的连接数没有限制。默认为0,也就是不限制连接数。另...

2019-10-02 23:27:41 6837 1

原创 如何查看MySQL connection id连接id

每个MySQL连接,都有一个连接ID,可以通过 connection_id()查看。连接id也可以通过以下方式查看:show processlist中id列information_schema.processlist的id列performance_schema.threads的processlist_id 列下面通过具体命令查看连接id。查看连接id:mysql> sele...

2019-10-01 22:26:34 5699

原创 golang 性能剖析pprof

作为一个golang coder,使用golang编写代码是基本的要求。能够写出代码,并能够熟悉程序执行过程中各方面的性能指标,则是更上一层楼。如果在程序出现性能问题的时候,可以快速定位和解决问题,那么写起代码来,会更加自信。本文介绍的pprof,是golang 自带性能剖析工具,可以帮助定位程序中可能存在的问题。1.引入pprof例子代码如下:package mainimport...

2019-09-21 16:25:17 2532

原创 排查python内存泄露中几个工具的使用

本文主要介绍3个工具:pdb,objgraph,以及pympler。1.pdbpdb是专门用于python代码调试,模仿gdb。使用pdb可以查看堆栈,打印变量等。这里介绍的是命令行下的pdb。命令行下使用pdb,代码侵入小,调试方便。本例中,python安装在当前目录下.venv使用pdb加载python程序.venv/bin/python -m pdb orange.py&...

2019-09-15 18:57:34 17706

原创 关于排查python内存泄露的简单总结

这次的内存泄露问题是发生在多线程场景下的。各种工具都试过了,gc,objgraph, pdb,pympler等,仍然没有找到问题所在。pdb感觉用起来很方便,可以调试代码,对原来的代码无侵入性。排查问题的过程中,多线程场景下,相关的工具,显得无力的。使用objgraph时,代码执行很长时间后,show_growth()显示没有新创建的对象。这个可能是因为objgraph只针对当前线程的上下...

2019-09-15 18:00:45 1252 1

原创 python内存泄露memory leak排查记录

问题描述A服务,是一个检测MGR集群主节点是否发生变化的服务,使用python语言实现的。针对每个集群,主线程会创建一个子线程,并由子线程去检测。子线程会频繁的创建和销毁。上线以后,由于经常会有功能发布,从而重启服务,开始一段时间没有发现问题。半个月前的周二服务发布后,大约一周时间,没有再发布。到周末的时候,突然告警系统负载高,经过排查,发现内存几乎耗尽,并查到是A服务占用巨大内存,没有释...

2019-09-08 18:37:43 3248 2

原创 域名到IP 报错socket.gaierror: [Errno 8] nodename nor servname provided, or not known

Python中如何通过域名,查看对应的IP?请看如下代码:import sockethostname="www.baidu.com"ip = socket.gethostbyname(hostname)print "ip:", ip看下执行结果:ip: 112.80.248.75如果配置的hostname有问题,或者说域名配置错误,就会出现如下报错:Traceback (...

2019-09-08 16:30:26 2568

原创 Orchestrator MySQL主库故障切换的几种类型

Orchestrator 对MySQL主库的故障切换分为自动切换和手动切换。手动切换又分为recover、force-master-failover、force-master-takeover以及graceful-master-takeover.1.自动切换自动切换是主库出现故障后,自动提升新主库,进行故的障切换。自动切换受到以下条件限制和约束:主库是downtime的集群不进行故障切...

2019-08-25 23:23:20 2187

原创 如何查找占用空间大的文件或目录

当发现系统磁盘空间满的时候,最想知道的就是哪些大文件把空间用完了。本文提供两种查找大文件的方法。1. 按照占用空间大小排序将目录下各个文件按照占用空间排序,这样可以很方便的得到占用空间最大的文件或目录。命令:du -sm /XXX/* | sort -nr以MB为单位计算占用空间,并按照占用空间进行排序。例如,du -sm /docker/opt/logs/logs/* | ...

2019-08-24 17:57:41 2673

原创 MySQL查看数据表的创建时间和最后修改时间

如何MySQL中一个数据表的创建时间和最后修改时间呢?可以通过查询information_schema.TABLES 表得到信息。例如mysql> SELECT * FROM `information_schema`.`TABLES` WHERE `information_schema`.`TABLES`.`TABLE_SCHEMA` = 'cmdb' AND `informatio...

2019-08-24 16:16:54 5557

原创 golang channel关闭后,是否可以读取剩余的数据

golang channel关闭后,其中剩余的数据,是可以继续读取的。请看下面的测试例子。创建一个带有缓冲的channel,向channel中发送数据,然后关闭channel,最后,从channel中读取数据,输出结果。package mainimport ( "fmt")func main(){ ch := make(chan int, 3)...

2019-08-03 21:13:29 17417 7

原创 python MySQLdb 如何设置读超时read_timeout

在python中,经常用到 MySQLdb操作MySQL数据库。在实现上,MySQLdb并不是纯python的,而是封装了MySQL C API库_mysql。对于MySQLdb是否支持read_timeout,其使用手册中对这个参数只字未提。所以,read_timeout是否真的可用,是存在疑惑的。stack overflow上面也有人问到同样的问题。接下来,我们从MySQLdb的源码库M...

2019-07-28 16:15:03 7134 2

原创 golang 开源项目: 配置解析模块--config

在golang中,配置文件经常使用json格式。json格式的语法,有些繁琐,尤其是出现嵌套的时候,每一块都需要大括号包裹,看起来很臃肿。本着简单易用的原则,个人开发了一个配置解析库kitty,已在github开源。下面介绍配置解析库kitty的语法和使用方法。基本语法基本字符定义如下:# 注释= key=value, 赋值[] 区域,可以表示一个结构体[[]] 区域...

2019-07-21 16:12:22 1168

原创 奔跑吧

最近一段时间,感觉身体和精神状态不是很好。经过了一周的工作时间,疲劳是免不了的。到了周末,虽然睡觉可以缓解一定的劳累,但却发现越睡越累。这个时候,我意识到,我进入了一个不好的循环。不能让自己一直处于这种状态,要去改变。我试着去跑步,来一个五公里,挑战一下已经疲倦的身体,让汗水湿透全身,冲刷一下毛孔,感受着肌肉的轻微疼痛。一个字爽。跑完步,冲一个澡,整个人都精神了,做事情的效率也提升了...

2019-07-21 15:17:46 173

原创 读《异类》有感

前几天,读了《异类》这本书,借此记录几点感触。简单事物的背后隐藏着复杂,而复杂是由一个个条件累积成的,当一个个条件满足时,也就顺理成章,显而易见。伟大的人,看来生而伟大,而实际,与家庭环境,与教育培养,都有着密不可分的联系。强者迎接挑战,弱者害怕挑战。积少成多,汇小溪成江海,集跬步至千里。学习,贵在持之以恒。...

2019-07-13 10:51:17 422

原创 golang 通过reflect反射修改值

不是所有的反射值都可以修改。对于一个反射值是否可以修改,可以通过CanSet()进行检查。要修改值,必须满足:可以寻址, 可寻址的含义:slice的元素可寻址的数组的元素(指向数组的指针)可寻址的结构体的字段(指向结构体的指针)指针指向的具体元素不是结构体没有导出的字段1.指针指向的具体元素需要两步:取地址:v := reflect.ValueOf(&...

2019-07-09 21:02:02 9173

原创 golang 使用reflect反射结构体

"反射结构体"是指在程序执行时,遍历结构体中的字段以及方法。1.反射结构体下面使用一个简单的例子说明如何反射结构体。定义一个结构体,包括3个字段,以及一个方法。通过reflect包,首先查看这个结构体对应的动态类型reflect.Type和动态值reflect.Value,并查看这个结构体对应的基本类型。接着查看结构体的字段数量,并遍历每个字段。打印每个字段的类型、值、以及tag标签。...

2019-07-06 18:35:06 3288

原创 golang reflect 简单使用举例

golang中的多态,主要由接口interface体现。接口interface在实现上,包括两部分:动态类型和动态值。golang提供的reflect包可以用来查看这两部分。动态类型func TypeOf(i interface{}) Type返回i的动态类型。动态值func ValueOf(i interface{}) Value返回i存放的动态值。下面举例说明。pack...

2019-07-03 21:00:34 346

原创 golang defer那些坑

defer以下几个特性,使用时需要关注下。即时的参数传递调用os.Exit()时defer不会被执行defer与return的先后顺序1.即时的参数传递定义defer时传入的参数,是作为拷贝传递的。也就是说,如果原来的变量值发生变化,不会影响传给defer的参数。例子如下:package mainimport ( "fmt")func main(){...

2019-06-23 20:49:06 1255

原创 golang defer 延后执行什么

对于golang的defer,我们已经知道,defer定义的语句可以延后到函数返回时执行。经常用在文件的关闭,锁的释放等场景中。而且defer定义的语句即使遇到panic也会执行。这样,可以执行必要的清理工作,甚至使用recover()捕获异常。以前使用defer经常这样用:defer close()或者defer func(){ //do something...}()...

2019-06-18 19:06:22 362

原创 查看进程CPU、内存使用情况

本文介绍通过ps和top查看进程的cpu、内存等使用情况。1.ps命令1.1 概览ps命令相关参数定义:-e 或者-A,选择所有的进程;-L 显示线程;-o 自定义输出格式;输出格式:C cpu使用百分比,为”使用的CPU时间/进程启动到现在的时间”STIME 启动时间,小于24小时,格式为”HH:MM”,否则为“mmm dd”为 month dayTIME 累计使用...

2019-06-08 16:14:43 5435

原创 linux如何查看目录或文件夹的总大小--du命令

记录一下如何查看一个目录或文件夹的总大小。使用du命令的选项-s,可以统计整个目录或文件夹的大小。例如du -sk ./156k

2019-06-08 15:55:01 9278 1

原创 git 常用的分支技巧

分支branch作为git一个强大功能,在平时开发如果能够善加使用,定能成倍提升开发效率。1.分支开发模式主分支master上一般是稳定版本,需要保证随时都能发布。所以,可以建立一个开发分支用于开发新功能。git branch dev查看有哪些分支git branch -a* dev master bugfix-1 remotes/origin/HEAD -> o...

2019-06-07 18:55:14 390

原创 golang tcp keepalive实践

前文中已经介绍了TCP keep alive的做了详尽说明,本文结合golang,介绍如何使用TCP keep alive。目前golang net包不提供TCP keep alive 开始探测时间、 探测总次数直接设置。使用第三方包,方便设置开始探测时间、探测时间间隔、探测总次数。1.下载第三方包git clone git@github.com:felixge/tcpkeepalive....

2019-05-26 22:39:46 4805

原创 TCP keepalive的详解(解惑)

TCP是面向连接的,一般情况,两端的应用程序可以通过发送和接收数据得知对端的存活。当两端的应用程序都没有数据发送和接收时,如何判断连接是否正常呢?这就是SO_KEEPALIVE的作用。1. SO_KEEPALIVE 的作用1.1 SO_KEEPALIVE的定义SO_KEEPALIVE用于开启或者关闭保活探测,默认情况下是关闭的。当SO_KEEPALIVE开启时,可以保持连接检测对方主机...

2019-05-26 17:49:39 31474

原创 勾践为什么卧薪尝胆

最近遭遇了各种挫折,开始思考未来的路如何走下去。想起了卧薪尝胆的故事,勾践为什么卧薪尝胆?听过很多豪言壮语,但随着时间一天天过去,意志一天天消磨,渐渐忘了当初的梦想。生活就像泥潭一样,一不留神,就会越陷越深,直到自己失去行动力。勾践用卧薪尝胆的方式,不断的提醒着自己,不要忘记自己所受的屈辱,不要忘记自己的誓言。反观现在的自己,温饱线上挣扎,却天天过的稀里糊涂,真是不应该。谨以此提醒自己...

2019-05-26 11:45:03 256

原创 专栏学习小结

去年在jksj上面,订阅了几个专栏,一直没有时间去学习。今年2、3月份,把专栏内容做成Kindle电子书,利用业余时间将其看完了。读过专栏以后,总结一下感觉:扩大了技术视野这些专栏,是一个技术导引,每个技术的具体学习,需要阅读相关书籍,需要结合实践去学习坚持学习。技术更新太快,要不断学习新东西。...

2019-05-26 10:40:19 151

原创 golang context学习记录2

go

2019-05-19 18:29:56 327

原创 golang context学习记录1

1.前言一个请求,可能涉及多个API调用,多个goroutine,如何在多个API 之间,以及多个goroutine之间协作和传递信息,就是一个问题。比如一个网络请求Request,需要开启一些goroutine去访问后端资源(比如,数据库,RPC服务等),这些goroutine又可能会开启其他的goroutine,如何跟踪和控制这些goroutine呢?golang定义了 context包...

2019-05-19 18:15:31 420

mysql-replicant-python.zip

书中使用的示例代码下载

2021-08-29

git post-update

服务器代码库工作区不更新问题解决,具体问题描述请参看 http://blog.csdn.net/lanyang123456/article/details/76378229

2017-07-30

Spreadsheet-ParseXLSX-0.16.tar.gz

该包用于解决无法找到Spreadsheet-ParseXLSX的问题,具体安装方法可参考http://blog.csdn.net/lanyang123456/article/details/41519501

2014-11-26

U盘安装XP_Win7系统指南

本文档主要讲述了如何使用U盘进行系统的安装。并针对安装系统过程遇到的问题进行了解答。希望给有需要的人一点帮助。

2014-07-12

Linux下的C++标准库

Linux下的std C++ 标准库 下载后,解压,将文件拷贝到/lib或者/usr/lib目录下,可以解决提示libstdc++。so找不到的问题

2013-06-04

sqlite嵌入式编程实例

本资源给出了linux+ARM 环境下SQLite数据库嵌入式编程实例。 详细内容请参考 Linux下SQLite数据库移植与编程 . http://blog.csdn.net/lanyang123456/article/details/7680670

2012-06-20

Linux下sqlite3编程实例

本文件给出了sqlite编程实例源码及其执行结果。其中,源码实例中包括了最常用的一些API,非常适合对于初学者学习使用。 有关SQLite安装与编程请参考下面的帖子 Linux下SQLite数据库安装操作与编程 . http://blog.csdn.net/lanyang123456/article/details/7680532

2012-06-20

Linux RS485 通信代码

本资源给出了Linux下进行RS485通信的实例代码

2012-03-20

rt5370驱动

腾达 无线USB网卡 型号:W311M 芯片类型:rt5370 该驱动是linux下针对rt5370 rt2800等芯片的驱动,可以通过交叉编译移植到嵌入式开发板。

2012-03-20

Linux系统下dhcp源码

提供Linux系统下DHCP源码下载 dhcp-3.1.1.tar.gz

2012-03-16

ndiswrapper 最新版本下载 ndiswrapper-1.57.tar.gz

ndiswrapper是Linux用于安装无线网卡驱动的一款软件。 ndiswrapper调用Windows下的驱动为Linux系统所用。

2012-03-07

Linux下使用USB转串口获取GPS数据

本文档,就linux系统下如何使用GPS设备(USB插口)读取GPS数据做了比较详细的阐述。主要介绍了如何使用USB转串口驱动,以及如何打开ttyyUSB0,如何读取数据等等。

2012-03-01

深入理解linux内核 第三版 Daniel P. Bovet &Marco Cesati 勘误

深入理解Linux内核 第三版是经典的linux内核分析的圣经,里面分析透彻,解析明了。 书中有些错误影响阅读,经过多方收集,特列出。

2011-03-07

考研数学公式大全 最全面的

最全面的公式集合,一个很好的参考工具,涵盖高数 概率论 线性代数

2009-05-23

空空如也

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

TA关注的人

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