自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

长风v持成的博客

偶尔想写点

  • 博客(49)
  • 资源 (6)
  • 问答 (1)
  • 收藏
  • 关注

原创 自制golang并发处理小框架

并发通过channel、互斥锁、定时器三者结合,完成了一个并发处理的函数接口。通过传入协程池数、超时时间来限制协程的并发处理(协程池的数量应该小于数据循环处理的次数)。参数中指定待处理的数据以及循环的次数,以及注册回调函数来处理自己的数据。如果传入的参数是数组,那么在回调函数中通过协程调用的索引号即可判断需要处理的是第几个元素。type HanleParam struct { Dat...

2019-12-24 15:03:49 269

原创 侦探调查罪案---采用程序计算

侦探调查了罪案的四位证人。从证人的话侦探得出的结论是:如果男管家说的是真话,那么厨师说的也是真话;厨师和园丁说的不可能都是真话;园丁和杂役不可能都在说谎;如果杂役说真话,那么厨师在说谎。侦探能判定这四位证人分别是在说谎还是在说真话吗?package mainimport ( "fmt")func main() { getBool := func(v int) bool { if...

2019-01-25 19:17:31 5442

原创 Goroutine 严重故障处理

程序中启用多个Goroutine,如果其中一个Goroutine因为一些隐式的运行时错误将调用panic,如果没有合适的处理,将导致所有的Goroutine终止。严重故障 panicGo语言提供了一个内置的panic方法,用来创建一个运行时错误并结束当前程序。它将立刻中断当前函数的执行,并展开当前Goroutine的调用栈,依次执行之前注册的defer函数。当栈展开操作达到该Gorouti...

2019-01-21 16:11:44 4790

原创 Go Append实现

切片(s)len(s) 获取长度cap(s) 获取容量Append(s, d)实现时比较:len(s)+len(d) > cap(s)package mainimport ( "fmt")func main() { mySlice := make([]byte, 0, 0) data := []byte{1, 2, 3, 4, 5} mySlice = App...

2019-01-21 14:35:53 1516

原创 Go 自定义排序

sortGo语言包中包含了排序包 sort,其中针对一般的strings、int类型已经有了排序方法sort.Ints(a []int)sort.Strings(a []string)自定义排序1、分别实现三个函数func (p MySlice) Len() intfunc (p MySlice) Less(i, j int) boolfunc (p MySlice) Swap(...

2019-01-18 10:43:55 1811

原创 golang环境搭建之VsCode

下载vscode官网地址:https://code.visualstudio.com/Download添加扩展通过快捷键ctrl+shift+x打开扩展商店,在搜索框中输入go,选中点击安装:添加插件在vscode的下方选中终端:依次下载go get github.com/nsf/gocodego get github.com/uudashr/gopkgs/cmd/gopkgs...

2018-11-14 19:58:21 241 3

原创 sublime手动安装GoSublime

下载GoSublime官网地址:https://github.com/DisposaBoy/GoSublime.git打开sublime插件位置在sublime中,选中Preferences->**Browse Packages… **并点击,如图:添加GoSublime插件将下载的GoSublime文件夹移动到该目录下,如图:生效关闭sublime,重新打开,此时在Pre...

2018-11-14 17:00:04 8348

原创 sublime安装卸载插件

安装插件步骤1、在sublime中,按住快捷键shift+ctrl+p(或者选中Preferences下的Package Control菜单),在弹出框中输入install package,如下图:步骤2、选中Package Control: Install Package选项,回车并等待,会出现新的窗口,在其中输入要安装的插件名称,选中并回车,如下图: 步骤3、稍等片刻即可安装完成...

2018-11-14 15:09:08 1283

原创 golang环境搭建之sublime

下载Sublime Text 3官网地址: https://www.sublimetext.com/3设置Sublime打开Prefernces->Settings,设置如下: "auto_complete": true, "auto_match_enabled": tr

2018-11-14 15:03:24 361

原创 golang环境搭建

安装git官网地址: https://git-scm.com/downloadsWindows安装golang1、官网地址: https://golang.org/dl/ (墙内 http://golangtc.com/download)2、选择安装包并安装到指定目录 (此处选择 go1.11.2.windows-amd64.msi, 安装到 C:\Go)3、设置环境变量我的电脑-&g...

2018-11-13 17:13:07 235

原创 no non-test Go files

一个莫名奇妙的错误go版本: go version go1.9.1 linux/amd64 linux下编译go程序,目录结构如下:编译报错:go build mycode/gostudy/logic: no non-test Go files in /root/code/src/mycode/gostudy/logic 本以为会不会是文件格式的问题,找了很久之才发现如...

2018-10-10 21:00:43 7192

原创 elasticsearch学习之字段统计

elasticsearch中保存了多个文档,而每个文档中包含多个字段,如果需要对某个字段的文档进行统计归类,可以使用聚合查询的方法 1、对某个字段进行聚合统计​curl -X GET "elasticsearch.in.netwa.cn:9200/my_index/_search" -H 'Content-Type: application/json' -d'{ "aggs"...

2018-08-15 15:26:48 8925 2

原创 Split拆分字符串

 使用strings包的Split拆分字符串package mainimport ( "fmt" "strings")func main() { tag_list := make([]string, 0) tags := strings.Split("12#34#56#78", "#") for _, v := range tags { tag_list = app...

2018-07-25 21:02:24 521

原创 golang 将kafka的offset置为最新

需要解决:当需要用同一个group_id去消费kafka的partition时,如果程序down掉,可能存在已经消费的数据尚未提交的可能,此时会造成重复消费的问题,且在重启这段时间会产生新的数据,重启这段时间的kafka消息不想再消费。采用方案:1、创建consumer时将offset设置为最新import ( "github.com/Shopify/sarama" cluster "gith...

2018-07-13 11:26:32 9298

原创 ElasticSearch使用学习

Elasticsearch是一个基于Lucene的搜索服务,它通过倒排索引的方法提供了全文搜索的能力。 1、插入数据Elasticsearch中存放数据的为文档,有索引及类型名,如下插入两文档:​curl -X PUT "elasticsearch.in.netwa.cn:9200/my_index/my_type/1" -H 'Content-Type: applicatio...

2018-07-09 15:53:32 140

原创 golang http请求及json流解析

golang http请求及json流解析package mainimport ( "encoding/json" "fmt" //"io/ioutil" "log" "net/http" "net/url" "os" "strings" "time")const IssueURL = "ht

2018-06-29 09:37:21 7803

原创 限流算法之令牌桶

一、令牌桶算法和漏桶算法1、漏桶算法,有一个固定大小的桶,桶中的流量按照固定的速率流出,此时若有流量流入桶中,如果流入的速率比流出的速率大,则可能导致超过桶大小的流量溢出。2、令牌算法,有一个固定大小的桶,按照一定的速率往桶中放入令牌,如果令牌超过桶大小则会溢出,此时若有流量需要发送,则先到令牌桶取发送的数目(如果数目不足则等待一段时间再取),令牌桶的数目相应的减少。区别:漏桶算法只允许按照一定的...

2018-06-06 10:06:19 958

原创 求单向链表倒数第K个元素

typedef struct NodeList { int value; struct NodeList *next;}NodeList;有如上节点类型的单向链表,求链表的倒数第K个节点。(1)递归NodeList* find_node(NodeList *node, int K){ //记录倒数第几个节点 static int index = 0; NodeList *tmp = ...

2018-05-11 15:06:29 205

原创 二分排序法

二分排序:遍历数组元素,将小于当前值的元素移到左边,将大于当前值的元素移到右边;然后分别递归左边、右边继续排序。假设一个数组为{3,2,5,0,4}使用如下代码进行排序:#include <stdio.h>#include <stdlib.h>#include <string.h>#define ARRAY_SIZE 10void print(int...

2018-04-12 14:08:53 557

原创 位图排序

什么是位图(BitMap):所谓的BitMap就是用一个bit位来表示某些元素是否存在。位图适用于快速查找、判重、排序(数据不能有重复)。假设一个例子,我们要对0-7内的5个元素(5、4、7、0、3)排序(假设元素没有重复)。1、要表示0-7的8个元素,需要8个bit(1Byte);2、开辟一个1Byte的空间,依次遍历这5个元素;首先第一个元素是5,那么就把5对应的位置置为1(bit_map[5...

2018-04-12 11:18:28 123

原创 八皇后问题

八皇后问题:如何能够在8×8的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?任两个皇后都不能处于同一条横行、纵行或斜线上。(八皇后问题可以推广为更一般的n皇后摆放问题:这时棋盘的大小变为n×n,而皇后个数也变成n。当且仅当n = 1或n ≥ 4时问题有解。)解题思路:(棋盘大小为8行8列,根据规则每行每列最多只能摆放一个)1、循环遍历一行当中的每一个元素,符合条件的保存到数...

2018-04-11 16:11:39 185

原创 hdfs集群安装

选择三台主机,一台启动namenode作为master,另外两台启动datanode作为node1、node2 安装java环境:http://blog.csdn.net/u011677067/article/details/79524466下载hadoop(下载地址:http://mirrors.hust.edu.cn/apache/hadoop/common/) 1、修改主...

2018-03-20 14:50:58 347

原创 动态链接库 error while loading shared libraries

makefile编译时编译正常使用-L将/home/hduser/hadoop/lib/native目录作为第一个寻找库文件的目录,并用-lhdfs寻找libhdfs.so动态库文件但是运行时提示无法打开共享库:检查原因:之前的第三方库一直是编译安装在/lib或/usr/lib中,而这个目录是已经添加在共享库目录中了的,因此链接时不存在问题。而此次,未将动态库放入/lib或/usr/lib中,程序...

2018-03-20 11:37:42 1500

原创 C++函数调用 段错误

调用一个函数时发生段错误:Segmentation fault加入打印日志之后,发现运行时根本没有进入该函数就已经crash,将该函数全部注释掉在运行时又一切正常。经过调试发现原因:该函数中存在一个大数组#define BUFFER_SIZE (1024 * 1024)char buffer[BUFFER_SIZE];将BUFFER_SIZE改为(4 * 1024)之后程序运行正常。分析结果:函数...

2018-03-15 15:40:50 3644

原创 linux安装java环境

ubuntu安装jdk的两种方式:1、通过ppa(源)方式安装2、通过官网下载安装包安装 一、使用ppa(源)方式安装1、添加ppa源jdk8sudo add-apt-repository ppa:webupd8team/javasudo apt-get updatejdk9sudo add-apt-repository -y ppa:webupd8tea...

2018-03-12 11:59:34 511

原创 mysql远端登录

当在其它主机想要登录本机的mysql时,有两个地方需要修改才能通过。一、配置文件1、操作系统环境ubuntu 16.04.42、修改配置文件1)当前系统下mysql配置文件为/etc/mysql/mysql.conf.d/mysqld.cnf2)由于其中的bind-address默认为127.0.0.1,如果不修改则只能本地连接mysql3)将其屏蔽或修改为可用的IP即可:#bind-addres...

2018-03-02 10:00:26 330

原创 valgrind 入门

安装Centos: yum install valgrindubuntu: apt-get install valgrind2、编辑错误代码1 #include 2 #include 3 4 int main()5 {6 int *p = (int *)malloc(10 * sizeof(int));7 p[10] = 0;8 return 0;9 }编译

2018-01-19 16:12:30 218

原创 makefile 多层嵌套实例

想把项目中的内容分门别类,将不同的内容归类到不同的目录中。编译时需要使用makefile的多层嵌套的方式。makefile没有系统的学过,基本处在拿来用的级别,网上找了些资料最终化了几个小时才配好。 首先源码树如下:最深的有三层,最顶层、base目录层以及base目录下的子目录层(至于core目录只有两层) 最顶层makefile:  base目录下的m...

2017-12-02 18:20:20 3884

原创 nginx 配置初探

搭建nginx服务器,启动后正常浏览网页,但是当修改nginx根路径之后出现错误:open() "/root/html/index.html" failed (13: Permission denied)配置如下server { listen 80; server_name localhost; locatio

2017-11-30 18:49:59 230

原创 服务开机自启动

一、开机启动linux系统中将开机需要启动的程序或脚本加入到/etc/rc.local文件中,如下:注意:1、检查/etc/rc.local文件权限,如果权限不够需要进行设置 (chmod 777 /etc/rc.local)2、如果权限足够的情况下,主机重启后没有启动设置的服务,那么可能主机没有执行/etc/rc.local文件。因此可执行一下命令: echo

2017-11-01 18:27:00 338

原创 ++i和i++都是线程不安全

++i和i++的自加过程:1、i++1)将i值取出放到寄存器2)将寄存器中的值返回3)寄存器中的值加14)使用寄存器值修改i的值 2、++i1)将i值取出放到寄存器2)寄存器中的值加13)将寄存器中的值返回并修改i的值 测试代码如下: #include <stdio.h>#include <pthread.h>#...

2017-10-18 17:26:50 609

原创 人啊,你总是太现实

人啊,你总是太现实。现实让你去适应他的潜规则,而你则失去了自己。你需要仰望的是你心中的灵,你的神便是你自己。你的身份是卑微的,但是你的精神一定要是高贵的。虽然读起来有失偏颇,但是总能在其中找到共鸣。http://www.zdaox.com/p/439.html

2017-10-10 09:45:05 381

原创 堆栈分配对象的成员存储位置

栈上创建的临时对象及其成员可以确定存储在栈上但是如果在堆上面手动分配一个对象,那么这个对象的成员究竟存储在内存中的什么位置?分别创建一个栈上分配的临时结构体对象和一个堆上手动分配的结构体对象,打印存储位置。#include #include typedef struct _MemInfo { int value; int *ptr; char sa

2017-08-01 17:42:20 898

原创 linux与Windows共享文件samba

1、下载安装sambayum -y install samba (centos)或 apt-get install samba (ubuntu)  2、创建linux用户(已经存在则不需要)adduser -d /home/sam -m sam (创建用户并产生主目录) userdel sam (删除用户)usermod -s /bin/bash -g root

2017-07-19 16:51:22 217

原创 线程与内核绑定

多内核主机上,创建了多个线程,可以把线程绑定到指定的内核上。这样可以充分发挥多个内核的性能优势,减少上下文切换。线程与内核绑定方法:1、头文件 #include #include 2、绑定1)获取cpu内核数目int cpu_num = get_nprocs(); 2)创建多个线程pthread_t thread_id;pthread

2017-07-03 15:34:00 2431

原创 libevent多线程

使用libevent编写多线程服务端一、设计框架:1)主线程监听连接各种事件,创建多个工作线程处理具体业务2)收到连接时创建对象管理,并绑定到一个线程3)主线程监听到一个读事件,将该连接添加到所绑定的线程的处理队列4)工作线程一次取出队列元素,从bufferevent读取数据,并处理 二、、设置bufferevent为多线程安全(也就是每次读写bufferevent都是...

2017-07-03 14:47:08 932

原创 linux防御攻击

一、服务器可能遭受的攻击1、SYN/ACK Flood攻击(半连接攻击)主要是通过向受害主机发送大量伪造源IP和源端口的SYN或ACK包,导致主机的未连接队列被长时间占用并且资源耗尽,而正常的SYN请求被丢弃。由于源都是伪造的故追踪起来比较困难。缺点是实施起来有一定难度,需要高带宽的僵尸主机支持。2、tcp全连接攻击通过许多僵尸主机不断地与受害服务器建立大量TCP连接,客户端仅仅“连...

2017-06-20 18:26:25 2614

原创 SIGPIPE导致的程序退出

当服务器或客户端非正常退出的时候,另一方继续send时直接造成程序退出。gdb调试结果send已经的关闭的套接字时,收到SIGPIPE信号,系统对该信号的默认处理方式是程序直接退出。若不想直接退出可以对SIGPIPE信号设置自己的处理方式或忽略。如程序中添加:SIG_DFL 系统忽略捕获的信号SIG_IGN 系统对捕获的信号采用默认操作

2017-06-20 15:57:33 359

原创 有点意义

======================================================================为什么没事儿干还能拿薪水你还不快乐?不快乐是因为可以像只猪一样懒,却无法像只猪一样懒得心安理得我心不安宁,所以我不快乐=============================================================

2017-01-08 17:59:52 221

原创 线程学习笔记(windows核心编程)

1、使用MsgWaitForMultipleObjects或WaitForMultipleObjects时注意:其第一个参数最大值64即等待的线程最多不超过64个错误:等待超过64个线程,返回WAIT_FAILED,参数无效 2、每个线程都有独有的寄存器,线程并发时:变量variable = 0线程A读取变量值variable到寄存器eax,eax进行加1,将eax中值...

2017-01-06 14:25:11 457

生成树协议数据包

包含了stp、rstp以及mstp协议的多个数据包

2015-12-15

stp&rstp&mstp数据包

包含了stp、rstp以及mstp协议的多个数据包

2015-12-15

MFC教程学习

MFC方面的知识,分析了MFC的结构和设计,对学习MFC有很大帮助

2014-04-14

Thinking c++

Thinking c++

2013-08-30

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

TA关注的人

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