自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(158)
  • 资源 (3)
  • 收藏
  • 关注

原创 接下来继续进行博客编写

结束了高压工作,让我有时间来继续写这些东西,立个flag,年前每月至少两篇

2019-10-12 16:15:26 195

原创 GO语言实现爬虫(实现文字和图片爬取)

代码:package mainimport ( "./goquery" "errors" "fmt" "io" "io/ioutil" "log" "net/http" "net/url" "os" "path/filepath" "strings")func

2018-03-24 16:37:41 5749

原创 go语言学习笔记3.19-3.23

并发编程并发包含以下几种主流的实现模型多进程,多进程是在操作系统层面进行并发的基本模式多线程,多线程在大部分操作系统上都属于系统层面的并发模式基于回调的非阻塞/异步IO,使用多线程模式会很快耗尽服务器的内存和CPU资源协程,协程本质上是一种用户态线程,不需要操作系统来进行抢占式调度,且在真正的实现中寄存于线程中Channel 声明var channamechan elementtype 例 var...

2018-03-23 18:18:43 461

原创 GO语言实现一个简单的网页爬虫

具体思路是利用go语言提供的远程包github.com/PuerkitoBio/goquery,但是有时候链接会出错,导致程序编译不通过,我们可以直接将这个包下载到本地,然后将import导入地址修改为本地的goquery地址即可首先建立文件,保存从网页上扒下来的内容接下来使用goquery.NewDocument("//wangzhi//"),来获取网页的那种接下来使用goquery.NewDo...

2018-03-23 15:15:44 3387 4

原创 GO语言实现多人聊天室

运用go里面的net包中的相关方法来实现一个基于tcp的简单多人聊天室,用一个服务器来管理,主要反馈客户端是否连接成功并显示客户端输入的内容,并且发送给每一个在服务器上连接的客服端服务器代码// serverpackage mainimport ( "fmt" "net")var ConnMap map[string]*net.TCPConnfunc checkErr(e...

2018-03-21 15:54:36 2997 1

原创 GO语言学习之网络编程

网络编程无论我们期望使用什么类型的协议建立什么形式的链接,都只需调用net.Dail即可Tcp Conn,err:=net.Dail(“tcp”,”192.168.1.1:10086”)UdpConn,err:=net.Dail(“udp”,”127.0.0.1:8080”)ICMPConn,err:=net.Dial(“”ip4 :1”,1001.10.4.1;456””) net.Resolv...

2018-03-21 13:55:25 1027

原创 GO语言学习之并发

并发编程并发包含以下几种主流的实现模型多进程,多进程是在操作系统层面进行并发的基本模式多线程,多线程在大部分操作系统上都属于系统层面的并发模式基于回调的非阻塞/异步IO,使用多线程模式会很快耗尽服务器的内存和CPU资源协程,协程本质上是一种用户态线程,不需要操作系统来进行抢占式调度,且在真正的实现中寄存于线程中Channel 声明var channamechan elementtype 例 var...

2018-03-21 13:51:38 232

原创 【GO语言】棋牌游戏服务器

暂未完成调试,只能跑通简单测试目录结构cgss-{src-{-cg{-center.go                                          -centerclient.go                                                -player.go                           -ipc{-server....

2018-03-16 17:54:12 7215 3

原创 go语言学习笔记3.16

数据类型数组切片创建数组切片基于数组:数组切片可以基于一个存在的数组创建。数组切片可以只使用数组的一部分元素或着整个数组来创建,甚至可以创建一个比数组还要大的数组切片。packagemain import"fmt" funcmain(){    //定义数组    varmyArray[10]int=[10]int{1,2,3,4,5,6,7,8,9,10}    //基于数组创建切片    va...

2018-03-16 13:34:16 194

原创 go语言学习笔记

3.12-3.15go语言学习集合类型值/指针和引用类型s == s[:i]+s[i:] z := 37//z为int类型pi := &z//pi为*int类型ppi :=&pi//ppi为**int类型  **ppi++z=38 *pi=38 **ppi=38 1.go语言的(点)操作符能够自动地将指针解引用,因为它所指向的是结构体2.go语言中有些类型是引用类型:映射。切片。通...

2018-03-15 18:02:35 481

原创 对lf_feature_storage性能测试分析(c测试用例版)

lf_feature_storage性能测试 feature数量插入耗时(秒)查询平均耗时(秒)内存占用(KB)500000.0480610.014511359801000000.1207060.02718569084

2017-08-24 16:40:59 385

原创 对lf_feature_storage性能测试分析(c++测试用例版)

lf_feature_storage性能测试 feature数量插入耗时查询平均耗时内存占用(KB)500000.092796s0.018823952s360601000000.194186s0.033216311s6927

2017-08-24 14:44:38 295

原创 thread中join和detach的区别

C++中的thread对象通常来说表达了执行的线程(thread of execution),这是一个操作系统或者平台的概念。当thread::join()函数被调用后,调用它的线程会被block,直到线程的执行被完成。基本上,这是一种可以用来知道一个线程已结束的机制。当thread::join()返回时,操作系统的执行的线程已经完成,C++线程对象可以被销毁。当thread::detac

2017-08-24 11:11:28 509

原创 对某门禁系统部分代码做线程控制

线程控制部分代码 c++11中的方法 m_Worker = std::make_shared<Linkface::SimpleWorker>([&](){ int len = m_Buffer.DataLen(); if(len <= 0) return; BYTE * buffer = new BYTE[len]; m_Buffer

2017-08-23 15:09:03 779

原创 人脸识别部分内存调用优化

优化内容 :void realloc_if_need(){ size_t reserve_items=std::max(static_cast<int>(max_items/10),512); size_t allocate_items=0; bool need_realloc=false; if(getAllocatedSize()=

2017-08-23 15:03:21 761

原创 对支持Linux系统的软件加密狗调研

对支持Linux系统的软件加密狗调研威步软件加密产品http://www.wibu.com.cn/cn/产品.html比特锁http://www.bitanswer.cn/products/software-protection/深思数盾http://www.sense.com.cn/developer.htm

2017-08-23 14:56:58 2914

原创 对软狗价格及软狗开发思路的调研

对软狗价格及软狗开发思路的调研各大商城价格调研:以下均为最合适价位1.天  猫:65元(需二次开发)品牌safenet 商品链接 赛孚耐软件加密狗 SafeNet宏狗UGRA 加密锁 大容量自定义算法:90元商品链接2.淘  宝: 【赛孚耐软件加密狗】主流:超级狗superdog用户锁(须购买开发狗) :99元商品链接  vikey加密狗/软件加密狗加密锁

2017-08-23 14:53:52 1014

转载 软件加密狗破解思路和方法

本文介绍的是软件加密狗破解的一般思路和方法,大家可能奇怪,昨天刚刚介绍完“软件加密锁产品评测”,怎么今天就介绍加密狗破解知识?其实做为软件开发者,研究好软件加密的确很重要,不过也很有必要多了解一些关于加密狗解密和破解的知识,加密和破解就像矛和盾一样,对于解密知识了解的越多,那么编写的加密代码就越好,要知道加密永远都比解密要容易的多,只有知己知彼,方能百战百胜。  硬件加密锁,俗程“加密狗”

2017-08-22 17:04:38 6014 1

原创 【shell】正则表达式语法

正则表达式的三种类别 下面举几个例子 查找文件中的IP地址egrep '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' file查找文件中的邮箱地址egrep '[a-zA-Z0-9]+\@[a-zA-Z0-9]+\.[a-zA-Z0-9]' filesed命令 sed命令的基本格式为: sed option ‘script’ file1 file2 …

2017-04-24 14:55:03 535

原创 【shell脚本】对键盘输入数字运算

传入数字参数到脚本file,并计算出最大,最小,平均值。需要判断 传入的数字是否足够,否则输出警告信息。平均值保留两位小数。#!/bin/bashmax=$1min=$1sum=0if [ $# -le 0 ];then echo "input error"fia=($@)for i in ${a[@]}do if [ $max -lt $i ];then

2017-03-27 13:58:02 3335

原创 【shell脚本】如何用shell编写一个进度条

代码#!/bin/bashi=0str=""arr=("|" "/" "-" "\\")while [ $i -le 100 ]do let index=i%4 printf "[\e[31;42;1m%-100s\e[0m][%d%%][%c]\r" "$str" "$i" "${arr[${index}]}" sleep 0.1 let i++

2017-03-26 19:55:48 937

原创 【shell脚本】shell的符号

shell执行脚本1.方法一: chmod +x myshell.sh 2.方法二:/bin/bash myshell.sh 以第一种为例 本地变量本地变量的复制及查看 变量引用如果⼀个变量叫做VARNAME,用VARNAME可以表示它的值,在不引起歧义的情况下也可以用{VARNAME}可以表示它的值,在不引起歧义的情况下也可以 用VARNAME表示它的值。通过以下例子较这两种表示法的不

2017-03-25 20:55:59 650

原创 【计算机网络】I/O多路转接之epoll

什么是epoll epoll是什么?按照man手册的说法:是为处理大批量句柄而作了改进的poll。当然,这不是2.6内核才有的,它是在2.5.44内核中被引进的(epoll(4) is a new API introduced in Linux kernel2.5.44),它几乎具备了之前所说的一切优点,被公认为Linux2.6下性能最好的多路I/O就绪通知方法。 epoll的相关系统调用

2017-03-25 19:57:18 575

原创 【计算机网络】I/O多路转接之poll

不同与select使用三个位图来表示三个fdset的方式,poll使用一个 pollfd的指针实现。 pollfd结构包含了要监视的event和发生的event,不再使用select“参数-值”传递的方式。同时,pollfd并没有最大数量限制(但是数量过大后性能也是会下降)。 和select函数一样poll返回后,需要轮询pollfd来获取就绪的描述符。 从上面看,select和poll都需

2017-03-18 16:55:27 573

原创 【算法】几种排序代码

#include<iostream>#include<cstdlib>using namespace std;int ThreeMid(int * arr,int left,int right){ int mid=left+((right-left)>>1); while (left<right) { if(arr[left]<arr[righ

2017-03-17 17:53:52 372

原创 【计算机网络】I/O多路转接之select

系统提供select函数来实现多路复用输入/输出模型。select系统调用是用来让我们的程序监视多个文件句柄的状态变化的。程序会停在select这里等待,直到被监视的文件句柄有一个或多个发生了状态改变。关于文件句柄,其实就是一个整数,我们最熟悉的句柄是0、1、2三个,0是标准输入,1是标准输出,2是标准错误输出。0、1、2是整数表示的,对应FILE *结构的表示就是stdin、stdout、stde

2017-03-16 12:04:25 842

原创 【计算机网络】dup/dup2

对输入文件描述符进行重定向 dup#include<stdio.h>#include<unistd.h>#include<string.h>#include<stdlib.h>#include<fcntl.h>int main(){ int fd=open("./log",O_CREAT|O_RDWR,0644); if(fd<0) { perr

2017-03-15 20:06:36 850

原创 【面试题】剑指offer21

定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min,pop,push的时间复杂度都为O(1)#include<stack>#include<cassert>#include<iostream>using namespace std;template<typename T>class MyStack{public: MyStack()

2017-03-10 12:07:12 274

原创 【计算机网络】网络编程中为什么client不建议绑定

无连接的socket的客户端和服务端以及面向连接的socket的服务端通过调用bind函数来配置本地消息。使用bind函数时,通过将my_addr.sin_port置为0,函数会自动为你选择一个未占用的端口来使用。 有连接的socket客户端通过调用Connect函数在socket数据结构中保存本地和远端信息,无需调用bind(),因为这种情况下只需知道目的机器的IP地址,而客户通过哪个端口与服务

2017-03-10 10:34:49 486

原创 【计算机网络】端口号的分类

端口号的范围是从1~65535 端口的概念: 在网络技术中,端口(Port)有好几种意思。集线器、交换机、路由器的端口指的是连接其他网络设备的接口,如RJ-45端口、Serial端口等。我们 这里所指的端口不是指物理意义上的端口,而是特指TCP/IP协议中的端口,是逻辑意义上的端口。 端口的分类: (1)公认端口(WellKnownPorts) 从0~1023,它们绑定于一些服务。通常这些

2017-03-10 10:07:48 698

原创 【面试题】剑指offer20

题目: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 例如: 1,2,3,4, 5,6,7,8, 9,10,11,12, 13,14,15,16 输出 1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10 代码#include<iostream>#include<cstdlib>using namespace std;void Pr

2017-03-09 20:51:32 216

原创 【面试题】剑指offer 19

题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像 代码#include<iostream>#include<cstdlib>using namespace std;struct BinTreeNode{ int _value; BinTreeNode* _pLeft; BinTreeNode* _pRight; BinTreeNode(int x)

2017-03-09 19:12:52 245

原创 【面试题】剑指offer18

题目: 输入两颗二叉树A和B,判断B是不是A的子结构。#include<iostream>using namespace std;struct BinTreeNode { int _value; BinTreeNode* _pLeft; BinTreeNode* _pRight; BinTreeNode(int x) :_value(x)

2017-03-08 21:02:19 268

原创 【面试题】剑指offer 17

题目: 输入两个递增的链表,合并两个链表,并返回合并后的头结点#include<iostream>using namespace std;struct ListNode{ int _value; ListNode* pNext;};class MyList{public: MyList() :pHead(NULL) {} ~M

2017-03-07 17:32:16 308

原创 【面试题】剑指offer 16

题目: 定义一个链表的头结点,反向输出链表#include<iostream>using namespace std;struct ListNode{ int _value; ListNode* _pNext;};class List{public: List() :head(NULL) {} ~List() {

2017-03-07 16:43:31 312

原创 【面试题】剑指offer 15

题目: 输入一个链表,输出该链表的倒数第k个节点。#include<iostream>#include<cstdlib>using namespace std;struct ListNode{ ListNode* pNext; int _value;};class List{public: List() :pHead(NULL)

2017-03-06 20:03:22 284

原创 【计算机网络】TCP三次握手四次挥手

TCP三次握手建立连接第一次握手A 的TCP 向B 发出连接请求报文段,其首部中的同步位SYN = 1,并选择序号seq = x,表明传送数据时的第一个数据字节的序号是x。第二次握手B 的 TCP 收到连接请求报文段后,如同意,则发回确认。.B 在确认报文段中应使 SYN = 1,使 ACK = 1,其确认号ack = x + 1,自己选择的序号 seq =

2017-03-06 18:08:50 1044 3

原创 【计算机网络】TCP报文首部中URG和PSH

URG: 紧急URG,当URG=1时,表明紧急指针字段有效。它告诉系统此报文中有紧急数据,应尽快传送(相当于高优先级的数据),而不要按原来的排队顺序来传送。例如,已经发送了很长的一个程序要在远地的主机上运行。但后来发现了一些问题,需要取消程序的运行。因此用户从键盘发出中断命令(Ctrl+C)。如果不使用紧急数据,那么这两个字符会被存储在接受TCP的缓存末尾。只有在所有的数据被处理完毕后这两个字符才

2017-03-06 17:13:47 774

原创 【计算机网络】TCP报文首部中URG和PSH

URG: 紧急URG,当URG=1时,表明紧急指针字段有效。它告诉系统此报文中有紧急数据,应尽快传送(相当于高优先级的数据),而不要按原来的排队顺序来传送。例如,已经发送了很长的一个程序要在远地的主机上运行。但后来发现了一些问题,需要取消程序的运行。因此用户从键盘发出中断命令(Ctrl+C)。如果不使用紧急数据,那么这两个字符会被存储在接受TCP的缓存末尾。只有在所有的数据被处理完毕后这两个字符才

2017-03-06 17:09:58 377

原创 【计算机网络】TCP报文首部中URG和PSH

URG: 紧急URG,当URG=1时,表明紧急指针字段有效。它告诉系统此报文中有紧急数据,应尽快传送(相当于高优先级的数据),而不要按原来的排队顺序来传送。例如,已经发送了很长的一个程序要在远地的主机上运行。但后来发现了一些问题,需要取消程序的运行。因此用户从键盘发出中断命令(Ctrl+C)。如果不使用紧急数据,那么这两个字符会被存储在接受TCP的缓存末尾。只有在所有的数据被处理完毕后这两个字符才

2017-03-06 17:08:33 474

vim Winmanager插件

vim Winmanager插件

2016-12-30

vim tree插件

vim tree插件

2016-12-30

taglist插件

vim taglist插件

2016-12-30

空空如也

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

TA关注的人

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