自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 redis学习总结

1.Redis 服务器的所有数据库保存在redisServer.db数组中,而数据库的数量则是redisServer.dbnum属性保存。客户端通过修改目标数据库指针,让它指向redisServer.db数组中的不同元素来切换不同的数据库。数据库主要由dict和expires两个字典构成,其中dict字典负责保存键值对,而expires字典则负责保存键值的过期时间,因为数据库的键总是一个字符串

2017-08-27 17:02:06 381

原创 Redis 学习手册(—)

Redis 学习手册(—)背景 Redis是一个远程内存数据库,它不仅性能强劲,而且还具有复制特性以及为解决问题而生的独一无二的数据模型。Redis提供了五种不同类型的数据结构,各式各样的问题都可以很自然地映射到这些数据结构上:Redis的数据结构致力于帮助用户解决问题,而不会像其他数据库那样,要求用户扭曲问题来适应数据库。除此之外,通过复制、持久化(persistence)和客户端分片(cli

2017-08-12 19:19:39 344

原创 信号管理器

信号管理器信号 这个实现比较简单。其实经过之前的训练和学习,我们可以总结,一般实现方法就是,分析接口,校验接口中需要的成员变量,定义结构体。结构体实现其成员方法。具体实现代码如下package middlewareimport ( "fmt" "sync")type StopSign interface { Sign() bool Signed() boo

2017-08-02 19:57:02 414

原创 ID生成器

接口设计 顾名思义id生成器的只需要一个接口,这个接口就是获取ID // ID生成器的接口类型。type IdGenerator interface { GetUint32() uint32 // 获得一个uint32类型的ID。}具体实现 这里可以先简要的介绍32位的id生成器如何生成。首先需要一个标记当前分配的ID,ID最大值,还有锁-保证并发ID不重复。 结

2017-08-02 19:40:07 1692

原创 通道管理器

技术亮点提要热替换:主要是项目中经常会引用其他结构的变量,但是对方的变量又是时刻在变,随时申请,这就会引起操作不一致。热替换就是解决这种情况的一种方法。其中这样有益于面向接口设计的带来的一个好处,就是getXXX()方法。全局变量 首先针对全局变量和特定类型,我们需要进行自定义和初始化部分变量// 被用来表示通道管理器的状态的类型。type ChannelManagerStatus ui

2017-08-01 20:39:40 452

原创 实体池实现

实体池实现 引题 这里主要讲解不仅仅是实体池的实现,还有借鉴的编码规则,注视的格式,培养自己在以后的编码过程中养成好的习惯。接口 池的设计,主要的就是取出和放回操作。每一个模块都需要有一定的自我 监控能力,可以反应自身的使用情况,因此真对实体池,我们提出实体总量和使用情况。接口具体如下: // 实体池的接口类型。 type Pool interf

2017-08-01 19:42:18 328

原创 网络爬虫框架设计与实现

引题 最近在看go语言的编程实现,里面有这个项目,感觉不错,在这里简 要总结和学习心得,给大家一个引路,如果想要具体了解可以看《GO 语言并发实践》 项目介绍 网络爬虫就是模拟客户端用户操作,自动化爬取相关的网络信息。即根据约定好的规则,在特定的入口进行递归式查询。下载特定的信息,整理给规则制定者。网络爬虫框架是高度抽象各种网络爬虫,提供一致性的接口给调用者。功能需求和分析

2017-07-31 21:11:23 2790

转载 Git 的origin和master分析

http://lishicongli.blog.163.com/blog/static/1468259020132125247302/ 首先要明确一点,对Git的操作是围绕3个大的步骤来展开的(其实几乎所有的SCM都是这样)1.     从git取数据(git clone)2.     改动代码3.     将改动传回git(git push)这3个步骤又涉及到两个re

2017-07-28 12:45:31 258

转载 redis过期清除机制及应用方法

redis过期清除机制及应用方法redis过期清除和淘汰机制过期时间设置 expire key seconds 该命令设置指定key超时的秒数,超过该时间后,可以将被删除 在超时之前,如果该key被修改,与之关联的超时将被移除 persist key 持久化该key,超时时间移除 set key newvalue 设置新值,会清除过期时间

2017-07-27 23:14:03 2773

转载 Golang测试技术

本篇文章内容来源于 Golang 核心开发组成员 Andrew Gerrand 在Google I/O 2014的一次主题分享“ Testing Techniques ”,即介绍使用Golang开发 时会使用到的测试技术(主要针对 单元测试 ),包括基本技术、高级技术(并发测试、 mock /fake、竞争条件测试、并发测试、内/外部测 试、vet工具等)等,感觉总结的很全面,这里整理

2016-12-08 15:22:31 509

原创 GO Test 单元测试&压力测试

背景本文主要介绍golang的一个工具go test Go语言中自带有一个轻量级的测试框架testing和自带的go test命令来实现单元测试和性能测试,testing框架和其他语言中的测试框架类似,你可以基于这个框架写针对相应函数的测试用例,也可以基于该框架写相应的压力测试用例go test 单元测试介绍规则文件名必须是_test.go结尾的,这样在执行go test的时候才会执行到相应的代

2016-12-08 10:03:21 4518

原创 EchoServer设计到实现(六)

问题项目在经过思考后,重构了。主要重构原因有主要以下几点1.包的设计粒度多大,导致依赖导致2.代码gorouting操作不当,浪费cpu使用3.网络模型使用不当,同步模型可以满足设计需求4.select关键字使用不错,导致gorouting停止等待重构后修改协议设计,添加缓冲区,将网络和协议耦合降低。设计协议类,尽量以结构体为单位去做操作方法。//思考:是否支持异步解析,现在支持同步解析

2016-12-03 14:11:22 616

原创 EchoServer设计到实现(五)

这里增加一点难度,顺便可以检测一下这个项目的扩展性。新的需求:支持字符串的回文,反转,随机化简单设计:添加一个操作包,主要完成上述需求,每个函数实现一个功能。主函数链接操作包和服务包,完成上述功能。代码实现:package protocolimport ( "bytes" "encoding/binary")const ( //ConstLength 字符串长度

2016-11-29 20:10:21 446

原创 EchoServer设计到实现(四)

前言这篇文章主要解决以下问题:1.文件中存在硬编码问题 2.不支持长链接断开和心跳包正文文件硬编码,是所有编程者头疼的问题,硬编码使程序难扩展,易导致bug。在C++中经常用宏来解决这些东西,但是golang不支持。不过我们可以通过配置器来解决,思路:把信息写入文本中,文本按一定格式进行编写,哈哈,这就通过读取文件化解这一危机。我找使用Toml包进行文件解析,github地址:https://

2016-11-29 20:09:44 406

原创 EchoServer设计到实现(三)

今天抽出时间来学习有关go语言的几种日志开源包(在网上没有找到太多资源分析几种日志包,由于本人初学golang语言,这里不深入探讨) 日志包简介**zap日志包: 1.去掉中间层,快速日志信息输出 2.格式化的输出,快速检索日志信息 3.支持多种日志格式输出****seelog日志包: 1.XML的动态配置,可以不用重新编译程序而动态的加载配置信息 2.支持热更新,能够动态改变配置而不需

2016-11-25 18:26:53 1296

原创 EchoServer设计到实现(二)

上篇抛出了几个问题,这次主要解决一下:支持读写异步,解决存在接收乱码情况。这里也顺便练习一下chan和select的使用。问题1:支持读写异步这个解决方式跟简单,只要把读写分离,分别用两个goroutine启动运行,这里需要注意一个坑—一定要先启动两个goroutine,不再for循环里面启动,这样会带来goroutine数量暴增,以后为你解偶代码就难了 //客户端代码读写分离 go

2016-11-23 18:53:34 639

原创 EchoServer设计到实现(一)

背景作为一个go语言的初学者,老大给我布置一个EchoServer项目让我练手,写了一周多,基本雏形写完了。因为发现Golang这一块资料挺少的,接下来我会在博客里,总结一下项目最初设计到现在每个阶段怎么做的,怎么制定的。还有遇到的坑都记录下来。EchoServer初涉项目主要是网络通信,所以我先写了一个基于C/S的简单的交互,目的熟悉网络基本通信模型,代码如下server: 1 package m

2016-11-22 21:29:33 2367

原创 go语言学习基础简介

第一章go的基本配置学习要点(1)go语言的发展和简介(2)go语言的安装(3)go的项目管理(4)go的命令(5)开发工具(组内用vim,有配好的vim)反思:(1)项目管理中三个目录分别是什么,有什么作用?(2)命令bulid,install,run,区别是什么?应用场景是什么?(3)go语言特点有什么?第二章go语言的基础学习要点(1)变量声明,类型(2)流程结构,函数反思

2016-11-14 19:07:40 964

空空如也

空空如也

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

TA关注的人

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