YID_152
码龄9年
求更新 关注
提问 私信
  • 博客:22,645
    22,645
    总访问量
  • 15
    原创
  • 1
    粉丝
  • 4
    关注
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:北京市
加入CSDN时间: 2016-11-13

个人简介:乐于挑战自己,学习更多更广的知识

博客简介:

YID_152的博客

查看详细资料
个人成就
  • 获得3次点赞
  • 内容获得0次评论
  • 获得19次收藏
  • 博客总排名1,835,245名
创作历程
  • 9篇
    2017年
  • 9篇
    2016年
TA的专栏
  • 走在go的路上
    17篇

TA关注的专栏 0

TA关注的收藏夹 0

TA关注的社区 0

TA参与的活动 0

创作活动更多

新星杯·14天创作挑战营·第13期

这是一个以写作博客为目的的创作活动,旨在鼓励大学生博主们挖掘自己的创作潜能,展现自己的写作才华。如果你是一位热爱写作的、想要展现自己创作才华的小伙伴,那么,快来参加吧!我们一起发掘写作的魅力,书写出属于我们的故事。我们诚挚邀请你们参加为期14天的创作挑战赛!注: 1、参赛者可以进入活动群进行交流、互相鼓励与支持(开卷),虚竹哥会分享创作心得和涨粉心得,答疑及活动群请见:https://bbs.csdn.net/topics/619781944 【进活动群,得奖概率会更大,因为有辅导】 2、文章质量分查询:https://www.csdn.net/qc

76人参与 去参加
  • 最近
  • 文章
  • 专栏
  • 代码仓
  • 资源
  • 收藏
  • 关注/订阅/互动
更多
  • 最近

  • 文章

  • 专栏

  • 代码仓

  • 资源

  • 收藏

  • 关注/订阅/互动

  • 社区

  • 帖子

  • 问答

  • 课程

  • 视频

搜索 取消

EchoServer设计到实现(三)

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

redis学习总结

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

Redis 学习手册(—)

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

信号管理器

信号管理器信号 这个实现比较简单。其实经过之前的训练和学习,我们可以总结,一般实现方法就是,分析接口,校验接口中需要的成员变量,定义结构体。结构体实现其成员方法。具体实现代码如下package middlewareimport ( "fmt" "sync")type StopSign interface { Sign() bool Signed() boo
原创
博文更新于 2017.08.02 ·
497 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

ID生成器

接口设计 顾名思义id生成器的只需要一个接口,这个接口就是获取ID // ID生成器的接口类型。type IdGenerator interface { GetUint32() uint32 // 获得一个uint32类型的ID。}具体实现 这里可以先简要的介绍32位的id生成器如何生成。首先需要一个标记当前分配的ID,ID最大值,还有锁-保证并发ID不重复。 结
原创
博文更新于 2017.08.02 ·
1928 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏

通道管理器

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

实体池实现

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

网络爬虫框架设计与实现

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

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 ·
314 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

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

redis过期清除机制及应用方法redis过期清除和淘汰机制过期时间设置 expire key seconds 该命令设置指定key超时的秒数,超过该时间后,可以将被删除 在超时之前,如果该key被修改,与之关联的超时将被移除 persist key 持久化该key,超时时间移除 set key newvalue 设置新值,会清除过期时间
转载
博文更新于 2017.07.27 ·
2846 阅读 ·
0 点赞 ·
0 评论 ·
4 收藏

Golang测试技术

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

GO Test 单元测试&压力测试

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

EchoServer设计到实现(六)

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

EchoServer设计到实现(五)

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

EchoServer设计到实现(四)

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

EchoServer设计到实现(一)

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

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.25 ·
1042 阅读 ·
2 点赞 ·
0 评论 ·
13 收藏

EchoServer设计到实现(二)

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