自定义博客皮肤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.

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

原创 golang context学习记录1

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

2019-05-19 18:15:31 420

原创 golang RPC通信读写超时设置

golang RPC通信中,有时候就怕读写hang住。那是否可以设置读写超时呢?1.方案一: 设置连接的读写超时1.1 client可参考golang网络通信超时设置–读写超时部分1.2 server通常情况下,RPC server端的代码如下: server := rpc.NewServer() ... .... for { conn, err := l.Ac...

2019-05-12 21:53:35 2602

原创 golang网络通信超时设置

网络通信中,为了防止长时间无响应的情况,经常会用到网络连接超时、读写超时的设置。本文结合例子简介golang的连接超时和读写超时设置。1.超时设置1.1 连接超时func DialTimeout(network, address string, timeout time.Duration) (Conn, error) 第三个参数timeout可以用来设置连接超时设置。如果超过time...

2019-05-12 16:47:20 17456

原创 Python MySQLdb 执行sql语句时的参数传递

使用MySQLdb连接数据库执行sql语句时,有以下几种传递参数的方法。1.不传递参数conn = MySQLdb.connect(user="root",passwd="123456",host="192.168.101.23",db="cmdb")orange_id = 98sql = "select * from orange where id=%s" % orange_idc...

2019-05-11 22:57:47 8243 1

原创 python 逻辑运算符and or

Python中逻辑运算符与C、C++、Golang等语言不太一样。简单记录下。1. 都是真或第一个真,第二个假>>> a = 1>>> b = 2>>> c = (a and b)>>> print(c)2>>>>>>>>> d = (a or b)&...

2019-05-11 18:44:05 485

原创 python MySQLdb 一个连接connection多个cursor

使用MySQLdb时,如果创建一个连接connection,多个线程同时使用,会不会有问题?在下文中,我们将模拟这种场景,看是否会出现问题。1.示例1.1 正常的情况创建一个连接,两个线程同时使用这个连接,生成游标cursor,进行查询,并输出结果。程序启动后,让线程1睡眠1s,保证让线程2线执行。import MySQLdbimport threadingimport time...

2019-05-11 18:21:31 4291 2

原创 golang gRPC初探

gRPC使用protocol buffers作为Interface Definition Language (IDL)。gRPC的底层信息交互格式也使用的是protocol buffers。默认情况下,gRPC使用protocol buffers进行序列结构化数据。protocol buffers是Google 序列化数据的成熟开源方案。gRPC支持的很多种语言,例如C++, Java, ...

2019-05-04 23:03:44 534

原创 tcpdump+wireshark抓包分析

上一篇文章中,我们介绍了tcpdump如何抓包。tcpdump是命令行下便捷的抓包和分析工具,但使用方式不够友好,wireshark是带图形化界面的抓包和分析工具,操作简便,但需要主机有显示器。所以,在很多场景下,例如,生产环境服务器,可以使用tcpdump抓包保存到文件,然后再由wireshark进行分析,这样可以很好的发挥两者的优势。本文介绍如何使用tcpdump抓包到文件,再由wir...

2019-04-27 10:53:50 889

原创 celery+RabbitMQ 实战记录2—工程化使用

中,已经介绍了celery和RabbitMQ的安装以及基本用法。本文将从工程的角度介绍如何使用celery。1.配置和启动RabbitMQ请参考celery+RabbitMQ实战记录。2. 安装和使用celery2.1 创建虚拟环境,并安装celery$ mkdir celery_demo$ cd celery_demo$ virtualenv -p python3 venv3...

2019-04-23 09:59:29 864

原创 celery+Rabbit MQ实战记录

基于以前的片文章,celery+Rabbit MQ的安装和使用本文更加详细的介绍如何安装和使用celey, Rabbit MQ。尤其是在使用celery时遇到的一些问题。1.安装 Rabbit MQ在 OS X上,直接执行如下命令:$ brew install rabbitmq其他操作系统下的安装可以参考安装 RabbitMQ启动RabbitMQ$ sudo rabbitmq-s...

2019-04-20 22:19:38 2281

原创 TCP 选项RST

1.RST介绍RST表示reset复位,用于异常情况下关闭连接。发送RST包关闭连接时,不必等缓冲区的包都发出去,直接就丢弃缓冲区中的包。而接收端收到RST包后,也不必发送ACK包来确认。2. 什么时候发送RST包建立连接的SYN到达某端口,但是该端口上没有正在 监听的服务。TCP收到了一个根本不存在的连接上的分节。请求超时。使用setsockopt的SO_R...

2019-04-13 21:56:17 574

原创 HTTP 客户端接收数据超时

本文使用两种方式测试HTTP 客户端读数据超时的情况,一种是直接使用golang自带的http库,另一种是使用martini web框架。1. 测试1–直接使用http库1.1.启动serverserver端的请求响应函数,会睡眠10s,再返回结果。这样,可以模拟server端处理慢的情况。package mainimport ( "log" "net...

2019-04-13 21:34:32 1423

原创 TCP连接异常:broken pipe 和EOF

本文介绍3种TCP连接异常的情况。1.server没有启动,client尝试连接./clientdial failed: dial tcp 127.0.0.1:8080: connect: connection refused通过tcpdump抓包,可以看到当server没有启动的时候,client向server8080端口发送数据后,client端会收到RST。2.client 读数...

2019-04-13 21:09:34 23150

原创 tcpdump抓包

tcpdump是抓包常用的工具,可以直接从数据链路层抓取网络数据进行分析。tcpdmp提供了很多命令行参数,提供定制的数据捕获功能。下面首先会介绍其命令行参数,接着以一个使用场景为例说明使用方法。1.tcpdump使用说明1.1 命令行参数i interface 网络接口,例如lo0, en0, eth0等c count 指定抓包的个数,如果没有提供,则一直监听并抓取X 以十六进制和...

2019-04-13 19:30:54 1198

原创 orchestrator HTTP接口forget-cluster误下线集群问题

orchestrator 提供了"forget-cluster"HTTP接口用于下线集群。该接口可以根据提供的参数,推测可能的集群名cluster name,然后使用cluster name下线集群。其中cluster name在orchestrator的格式是集群主库的hostname和port的组合:hostname:port。例如,一个集群主库的hostname为waimai-mysql-0...

2019-03-30 21:52:13 468 1

原创 MySQL高可用工具--orchestrator

orchestrator是一款MySQL高可用工具,其支持:集群拓扑探测集群拓扑重塑故障恢复提供3种使用方式:命令行HTTP APIweb页面orchestator github地址

2019-03-30 21:11:40 922

原创 Golang入门指南the way to go

最近读完了《Go入门指南》,这本书理论和实践结合,是学习golang的很好的学习资料。书中的例子,是很好的参考。适合初学者入门以及有一定基础的人进阶,读来定有收获。这本书的电子资源地址如下:电子书: The way to gogithub:The way to go...

2019-03-30 20:52:42 1865

原创 python中比较两个list是否相等

要比较两个list是否相等,最常想到的是挨个比较两个list中的元素。今天介绍一种更简单的方式: 直接比较。例如,>>> l1=["a", "b"]>>> l2=["a", "b"]>>> l1==l2True>>>>>> l1=["a", "b"]>>> l2=["a",...

2019-03-24 16:53:26 60101 1

原创 mysql error 1067 invalid default timestamp

问题在创建数据表时,使用以下语句定义一个字段: `update_time` timestamp DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,会造成创建失败,报错为:mysql error 1067 invalid default timestamp原因对于timestamp类型的字段,MySQL有其定义要求...

2019-03-03 20:11:18 1028

原创 python3中的编码

python2字符串编码存在的问题:使用 ASCII 码作为默认编码方式,对中文处理不友好把字符串分为 unicode 和 str 两种类型,误导开发者将unicode作为唯一内码python3中默认编码方式修改为utf-8。在存储和显示上,python3使用文本字符和二进制数据进行区分,更加明确和清晰。文本字符使用str类型表示,str 能表示 Unicode 字符集中所有字符,...

2019-03-03 19:51:07 653

原创 golang 写日志到syslog

应用程序可以通过 UNIX domain sockets, UDP or TCP,向syslog守护进程发送日志。syslog守护进程可以在远端。这样,就可以不用单独收集应用程序的日志了。golang提供了syslog 包,只需要调用Dial(),就可以连接syslog服务器,然后发送消息。在写失败的情况下,syslog client会尝试重连syslog服务器,并重写。Dial定义如下...

2019-02-16 21:14:32 8224 3

原创 如何将极客时间课程制作成kindle电子书

订阅了几个极客时间的专栏,一直没有时间去看。最近,想着如果把内容制作成电子书,利用上下班时间学习一下,岂不是很方便?在网上搜到一个很好用的开源软件,几分钟就可以把极客时间的专栏做成电子书,简直太棒了,由衷地感谢软件的作者。制作电子书的开源软件地址是 https://github.com/jachinlin/geektime_dl。...

2019-02-16 17:05:41 4354 1

原创 golang垃圾回收和SetFinalizer

golang自带内存回收机制–GC。GC通过独立的进程执行,它会搜索不再使用的变量,并释放。需要注意的是,进行GC会占用机器资源。GC是自动进行的。如果要手动进行GC,可以调用runtime.GC()函数,进行显式GC。SetFinalizer一个对象object被GC时,如果需要执行一些特殊操作,比如,发信号,或者写日志等,可以通过调用函数func SetFinalizer(obj in...

2019-02-07 17:36:11 2690

原创 读《我编程,我快乐--程序员职业规划之道》

作为一名程序员,不得不去关注职业规划。《我编程,我快乐》这本书对于程序员的职业发展有很大的启迪作用。书中印象深刻的几点记录如下:想想自己所在的公司靠什么盈利热爱所从事的工作,或者离开自己所做的工作的价值不要局限在一家公司,要放眼整个行业要扩大自己的影响力享受过程,不是结果保持学习动力,关注最新技术倾听客户的声音,不要只是闷头写代码大公司可以获得稳定且固定的工作,小公司可以承担...

2019-02-07 10:44:07 209

原创 golang cache--go-cache

go-cache是一款类似于memached 的key/value 缓存软件。它比较适用于单机执行的应用程序。go-cache实质上就是拥有过期时间并且线程安全的map,可以被多个goroutine安全访问。下面举例说明其用法。Demopackage mainimport ( "log" "time" "github.com/patri.

2019-02-05 18:10:30 11077

原创 golang web framework--Martini

Martini是一个功能强大的软件包,用于在Golang中快速编写模块化Web应用程序/服务。下载$ go get github.com/go-martini/martiniDemoserver.go//server.gopackage mainimport "github.com/go-martini/martini"func main() { m := martini...

2019-01-19 22:20:13 581

原创 golang http proxy反向代理

本文介绍golang中如何进行反向代理。下面例子中,proxy server接收client 的 http request,转发给true server,并把 true server的返回结果再发送给client。1.proxy serverproxyServer.go代码如下所示。// proxyServer.gopackage mainimport ( "log" "n...

2019-01-19 19:50:53 6038

原创 2018年度总结

用一百分总结这一年,可以给自己打90分。生活各种奔波,各种曲折,终成大事。工作上半年,忙个不停,项目开发如火如荼,经常加班,有好多次打车11点之后到家。开发能力突飞猛进,实战经验得到积累。9月,换了个窝。新环境,新东西,不断适应,不断学习,过程虽然痛苦,过来了也就熟悉了。挪窝的过程中,找窝真的很不容易。公司大小,市场前景等等都是考虑的因素,犹豫了好久。那个时候,一边处理着工作上的事...

2019-01-12 20:36:14 294

原创 SQL特殊comment语法

SQL 注释的特殊用法:/*!版本号 语句*/表示大于等于某个版本是,才执行相应的语句。在版本为5.7.23的MySQL上做测试如下:测试1mysql> select 1 /*!50723 ,1 */;+---+---+| 1 | 1 |+---+---+| 1 | 1 |+---+---+1 row in set (0.00 sec)以上语句表示在大于等于5....

2018-12-30 19:45:51 8803

原创 mysql 主从复制change master to

CHANGE MASTER TO命令用于slave配置连接master的信息,例如master host、master port等。关于CHANGE MASTER TO命令,总结几点使用心得。在CHANGE MASTER TO之前,slave 的复制线程(I/O线程,SQL线程)必须停止,可以使用 STOP SLAVE 来停止。如果一些参数不指定,则其参数值使用以前设置的值。如...

2018-12-30 19:29:17 7088

原创 mysql 主从复制参数slave_net_timeout

slave_net_timeoutslave_net_timeout表示slave在slave_net_timeout时间之内没有收到master的任何数据(包括binlog,heartbeat),slave认为连接断开,会进行重连。超时后,立刻重连,后续重连的时间间隔由 CHANGE MASTER TO 命令的MASTER_CONNECT_RETRY ...

2018-12-30 18:29:13 2430

原创 show master status, show slave status中的Executed_Gtid_Set

slave如果server是slave节点,在server上执行show master staus与show slave status显示的Executed_Gtid_Set是一样的。slave也是server,配置了binlog后,执行show master status是没问题。master如果server是master节点,是否可以执行show slave status?答案是,在...

2018-12-28 09:56:21 1789

原创 mysql重复start slave、stop slave测试

如题,测试重复start slave, stop slave是否会有报错。版本5.7.21重复start slave测试第一次start>start slave;Query OK, 0 rows affected (0.00 sec)重复start>start slave;Query OK, 0 rows affected, 1 warning (0.00 sec)...

2018-12-28 09:42:23 614

原创 golang database sql DSN (Data Source Name)中的timeout, readTimeout

golang 语言,在打开mysql DB时,有时会用到timeout,readTimeout两个参数。timeout建立连接超时时间例如, “30s”, “0.5m” or “1m30s”.readTimeoutI/O读超时时间例如, “30s”, “0.5m” or “1m30s”.底层实现原理readTimeout的初始化所在文件:go-sql-driver/mysql/d...

2018-12-23 17:14:44 3763

原创 mysql show master status为空值

问题执行show master status,输出结果为空:mysql> show master status;Empty set (0.00 sec)原因mysql没有开启日志。查看log_bin选项:mysql> show variables like '%log_bin%';+---------------------------------+-------+...

2018-12-23 11:03:36 22477 2

转载 Linux 建立 TCP 连接的超时时间分析(解惑)

Linux 系统默认的建立 TCP 连接的超时时间为 127 秒,对于许多客户端来说,这个时间都太长了, 特别是当这个客户端实际上是一个服务的时候,更希望能够尽早失败,以便能够选择其它的可用服务重新尝试。socket 是 Linux 下实现的传输控制层协议,包括 TCP 和 UDP,一个 socket 端点由 IP 和端口对来唯一标识; 如果开启了地址复用,那么可以进一步由协议,IP 和端口来唯...

2018-12-20 21:56:48 11954 1

原创 golang 原子操作函数

golang中的原子操作在sync/atomic package中。下文以比较和交换操作函数为例,介绍其使用。CompareAndSwapInt32比较和交换操作是原子性的。// CompareAndSwapInt32 executes the compare-and-swap operation for an int32 value.func CompareAndSwapInt32(a...

2018-12-15 22:57:22 1599

原创 mysql主从复制--重置操作reset master, reset slave

本文介绍reset master, reset slave的作用。reset master在master上执行mysql > reset master作用包括:删除binlog索引文件中列出的所有binlog文件清空binlog索引文件创建一个新的binlog文件reset slave在slave上执行mysql > reset slave作

2018-12-15 18:07:56 6021

原创 mysql 主从复制--启动操作start slave, stop slave

在MySQL配置主从关系时,会用到start slave, stop slave命令,本文简单介绍两个命令的使用方法和作用。start slavemysql> start slave不带任何参数,表示同时启动I/O 线程和SQL线程。I/O线程从主库读取bin log,并存储到relay log中继日志文件中。SQL线程读取中继日志,解析后,在从库重放。stop slave类...

2018-12-08 23:12:48 13431

原创 shell 变量的默认值

默认值表达式1${a-defaultvalue}a如果没有定义,则表达式返回默认值,否则返回a的值;demo1a=""ret1=${a-"/usr/local"}echo "ret1:" $ret1output:ret1:demo2ret1=${a-"/usr/local"}echo "ret1:" $ret1output:ret1:/usr/local...

2018-12-02 22:34:50 23751

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关注的人

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