自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

tongtong

学习学习在学习

  • 博客(107)
  • 收藏
  • 关注

原创 【python学习】:python开始和启动

1.python的启动和关闭安装Cpython后,建议安装2.x版本。在命令行输入python进入python解释器,关于解释器的概念我以后总结。 输入exit(),退出时隔2年= =,中间计划中断,工作之后用的是Lua/C++,python相关内容都无法学习进行补全。最近几天学了一下python,然后补一张详细的思维导图。...

2018-08-30 09:55:53 284

原创 回顾一下模板

--------------------------------------------比特科技整理--------------------------------------------本节目标泛型编程模板函数&类模板非类型模板参数&模板的模板参数模板的特化模板的分离编译概念模板是泛型编程的基础。所谓泛型编程就是编写与类型无关的逻辑代码,是一种复用的方式。

2016-11-07 15:42:49 276

原创 线程池实现。

线程池实现代码:#pragma once#include<list>#include<cstdio>#include<exception>#include<pthread.h>#include"locker.h"template<class T>class threadpool{ public: threadpo...

2016-09-26 18:08:29 641

原创 Linux:进程池实现

进程池在服务器应用中有很多很多=。=下面是半同步半异步进程池的实现代码:#ifndef _PROCESSPOOL_H#define _PROCESSPOOL_H#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>#include<arpa/inet.h>#in...

2016-09-26 18:08:26 1942

转载 Linux 上实现双向进程间通信管道

转载于:https://www.ibm.com/developerworks/cn/linux/l-pipebid/ 问题和常见方法Linux 提供了 popen 和 pclose 函数 (1),用于创建和关闭管道与另外一个进程进行通信。其接口如下:FILE *popen(const char *command, const char *mode);int pclose(FILE *stream

2016-09-26 18:08:23 679

转载 动态规划:从新手到专家

作者:Hawstein出处:http://hawstein.com/posts/dp-novice-to-advanced.html前言本文翻译自TopCoder上的一篇文章: Dynamic Programming: From novice to advanced ,并非严格逐字逐句翻译,其中加入了自己的一些理解。水平有限,还望指摘。前言_我们遇到的问题中,有很大一部分可以用动态规划(简称DP)

2016-09-26 18:08:20 612

原创 SYN攻击

在理解SYN攻击之前我们首先来复习一下TCP的相关知识:TCP协议的连接状态图:650) this.width=650;" src="http://s1.51cto.com/wyfs02/M02/86/D0/wKioL1fL41qyf-XMAALGr9CsYMc887.png" title="2P2%DPUTA760P2HG[G01`WK.png " alt="wKioL1fL41qyf-XMAA

2016-09-26 18:08:18 833 1

原创 HTTP协议简介

一、TCP/IP 协议介绍在介绍 HTTP 协议之前,先简单说一下TCP/IP协议的相关内容。TCP/IP协议是分层的,从底层至应用层分别为:物理层、链路层、网络层、传输层和应用层,如下图所示:650) this.width=650;" src="http://s4.51cto.com/wyfs02/M00/86/7C/wKioL1fAPozDvfEAAAJZXwP0sb0462.png" tit

2016-09-26 18:08:15 600

原创 URI,URL,URN

首先,URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源。而URL是uniform resource locator,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源。而URN,uniform resource name,统一资源命名,是通过名字来标识资源,比如mailto:java-ne

2016-09-26 18:08:12 627

原创 智能指针

RAII(Resource Acquisition Is Initialization)资源分配即初始化,定义一个类来封装资源的分配和释放,在构造函数完成资源的分配和初始化,在析构函数完成资源的清理,可以保证资源的正确初始化和释放。------------------------------------------------------------------------------------

2016-09-26 18:08:09 625

原创 大/小堆:源代码

#pragma once#include #include //// 小堆 == 大堆// 仿函数//templatestruct Greater{ bool operator() (const T& l, const T& r) { return l > r; }};templatestruct Less{ bool operator() (const

2016-09-26 18:08:06 553

原创 位图:源代码

#include using namespace std;#include class BitMap{public: BitMap() :_size(0) {} BitMap(size_t len) :_size(0) { size_t size = len/32+1; _array.resize(size, 0); } void Set(size_t 

2016-09-26 18:08:03 701

原创 布隆过滤器:实现代码

#pragma once#include #include "BitMap.h"struct HashFunc1{ size_t BKDRHash(const char *str)   {   register size_t hash = 0;   while (size_t ch = (size_t)*str++)   {          hash = hash

2016-09-26 18:08:00 1472

原创 数据结构:图的代码

直接上代码:代码里面有注释#pragma once#include #include #include "Heap.hpp"#include "UnionFindSet.hpp"//// 临接矩阵表示无向图&有向图//templateclass GraphMatrix{public: GraphMatrix(const V* vertexs, int size, bo

2016-09-26 18:07:57 875

原创 树:二叉树的公共祖父节点

1.如果这棵二叉树是二叉查找树,那么记录根节点到x和y节点的路径问题变得很简单,借助于二叉查找树的性质,借助BST的查找过程,很简单便可以做到。void find1(TreeNode* root,TreeNode* p,vector &v)  {       if(root == p)       {           v.push_back(root);            ret

2016-09-26 18:07:55 1099

原创 树:二叉树的前序/中序/后序/层次递归

在二叉树的应用中,很多使用二叉树的操作都是通过遍历来进行节点的修改。所以对于遍历而言是学习二叉树的要点,今天就来总结一下。假设二叉树的结构为:templatestruct BinaryTreeNode{ BinaryTreeNode(const T& x) :_data(x) ,_left(NULL) ,_right(NULL) {} T _data; BinaryTre

2016-09-26 18:07:52 555

原创 判断一棵树

判断一棵树是平衡树//树结构typedef struct TreeNode{    Node* _left;    Node* _right;    int _bf;}Node;int _Height(Node *root){    if(root == NULL)        return 0;    int left = _Height(root->_left); 

2016-09-26 18:07:46 455

原创 nginx-http模块的数据结构

在编写HTTP第三方模块时,需要了解nginx中HTTP模块的数据结构定义HTTP模块方式很简单ngx_module_t ngx_http_mytest_module;就是这么简单,下面先分析一下nginx模块中的所有成员:typedef struct ngx_module_s ngx_module_t;struct ngx_module_s{    //分别赋值ctx_index.inde

2016-09-26 18:07:43 235

原创 设计模式之单例模式:singleton

1.设计模式是什么?设计模式其实就是前人总结,代表了最佳实践,对于软件开发过程中对象的封装模式,也是各种复杂问题,极好解耦性的解决方案。-------------------------------------------------------------------------------------------下面我们来说一下单例模式的基本概念和代码:单例类保证了全局只有唯一一个实例对象单例

2016-09-26 18:07:36 178

原创 HTTP:HTTP状态码

这一篇博文就讲一下HTTP协议中的状态码:什么是状态码?状态码指的是HTTP响应中返回的一个回应消息。通过数字表示相关的消息种类。2.状态码具体内容:1xx: 信息消息:描述:100 Continue服务器仅接收到部分请求,但是一旦服务器并没有拒绝该请求,客户端应该继续发送其余的请求。101 Switching Protocols服务器转换协议:服务器将遵从客户的请求转换到另外一种协议。2xx:

2016-09-26 18:07:33 388

原创 cookie和session

大家在我们清理浏览器浏览痕迹的时候有看到清理cookie的选项,   其实这个cookie机制是为了存储用户数据,存储地点是客户端,        Cookie 是一种保持 Web 应用程序连续性(即执行“状态管理”)的方法。浏览器和 Web 服务器除了在短暂的实际信息交换阶段以外总是断开的,而用户向 Web 服务器发送的每个请求都是单独处理的,与其他所有请求无关。然而在大多数情况下,都有必要让

2016-09-26 18:07:30 167

原创 nginx-如何将自己的HTTP模块编译进nginx

上一篇博客讲解了nginx相关的数据结构。这一篇主要交接如何将自己的模块编译进nginx;一种常用的简单方法:1)首先把源代码文件全部放大一个目录下,然后在改目录中编写一个config用于通知Nginx如何编译本模块,这个文件名必须为config。在configure脚本执行时加入参数--add-module=PATH(上面源码,config的保存目录)执行正常安装流程是完成Nginx的编译工作。

2016-09-26 18:07:26 1421

原创 nginx-nginx数据结构

本篇文章主要记录说明使用nginx时,开辟一个简单http模块的时序图,还有nginx中封装的数据结构及其处理函数。 1.如何开发一个充满异步调用,无阻塞的http模块? 首先,我们需要把程序嵌如到nginx中(最终变异处的二进制程序nginx要包含我们的代码)。 然后,这个http模块要能介入到处理流程中。 在正式请求处理时,还要可以获取nginx框架定义的数据结构,解析后的用户请求信息 业务执

2016-09-26 18:07:23 263

原创 git的基本使用

提到了git,那么我们首先来了解一下什么是git什么是git?许多人都知道SVN是一个版本管理工具,Git也是一个版本管理工具,是目前世界上最先进的分布式版本管理工具,没有之一!对于版本工具而言,其实就是相当于我们在软件开发中对立的一个操作记录,项目中不同的开发进度分别代表不同的点,有效的记录分配各个项目模块进行管理,并且当出现错误时可以及时的进行回退,有点像数据库的事务。。。2.集合式vs分布式

2016-09-26 18:07:20 230

原创 Linux:sed工具

1.什么是sed工具     sed意为流编辑器(Stream Editor),在Shell脚本和Makefile中作为过滤器使用非常普遍,也就是 把前一个程序的输出引入sed的输入,经过一系列编辑命令转换为另一种格式输出。sed和vi都源于 早期UNIX的ed工具,所以很多sed命令和vi的末行命令是相同的。sed命令行的基本格式为:sed option 'script' file1 file2

2016-09-26 18:07:18 414

原创 Linux:正则表达式及:grep工具

什么是正则表达式:正则表达式就是处理字符串的方法,他是以行为单位来进行字符串的处理行为,正则表达式通过一些特殊符号的辅助,可以让用户轻易达到查找,删除,替换某种特定字符串的处理程序,其实就像相当与添加位置限定符,数量限定符,字符想定符来进行范围缩减匹配。2.grep工具:   首先grep就是一个查找工具,然后通过正则表达式完成字符串的搜索。   存在3种限定符:首先是字符限定符:650) thi

2016-09-26 18:07:15 243

原创 shell脚本:简单的分数记录系统

直接上代码:#mcore.sh#!bin/bashfunction colour(){ case $1 in black_white)  echo -e "\033[40;37m" ;; black_green) echo -e "\033[40;32m" ;; black_cyan) echo -e "\033[40;36m" ;;

2016-09-26 18:07:12 538

原创 shell脚本:练习题

题目1:1-100求和非递归版本:#!/bin/bashsum=0while [ $val -le 100 ]do let sum+=val let val++doneecho $sumsum=0for i in {1..100}do if [ $i == 1 ]; then bar=${bar}${i} else bar=${bar}+${i} fi l

2016-09-26 18:07:09 364

原创 shell脚本:字符串的截取

在shell脚本中我们所有变量的存储形式都是字符串。所以对于字符串的截取来说就变得十分重要了。 而在shell脚本中,如果想要对一个字符串进行指定的截取,有多种方法可以来完成:如下举例均用:STR="hello world my dear sister"${STR#*char} 表示从左开始删除第一个char左边的所有字符,截取右边的字符串#!/bin/bashSTR="hello world

2016-09-26 18:07:06 243

原创 shell脚本相关知识

一. 关于shellshell,一种壳层与命令行界面,是Unix操作系统下传统的用户和计算机的交互界面。第一个用户直接输入命令来执行各种各样的任务。普通意义上的shell就是可以接受用户输入命令的程序。它之所以被称作shell是因为它隐藏了操作系统低层的细节。同样的Unix下的图形用户界面GNOME和KDE,有时也被叫做“虚拟shell”或“图形shell”。我们Linux操作下的终端,就是关于s

2016-09-26 18:07:03 243

原创 数据库:事务(存储引擎)

事务其实对于事务而言,我们就是为了数据库恢复技术而产生的概念。    事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。    对于事务

2016-09-26 18:07:01 183

原创 数据库:触发器

触发器的概念:    是用户定义在关系表上的一类有事件驱动的特殊过程。一旦定义,任何对表的增删改操作均有服务器自动激活相应的触发器,在DBMS核心层进行集中的完整性控制。类似于约束,但比约束更灵活。触发器的分类:DML触发器:DML(Data Manipulation Language)触发器是当数据库服务器中发生数据操作语言事件时执行的存储过程。DML触发器又分为两类:After触发器和Inst

2016-09-26 18:06:58 728

转载 数据库:索引

转载至:http://www.cnblogs.com/morvenhuang/archive/2009/03/30/1425534.html一、引言对数据库索引的关注从未淡出我的们的讨论,那么数据库索引是什么样的?聚集索引与非聚集索引有什么不同?希望本文对各位同仁有一定的帮助。有不少存疑的地方,诚心希望各位不吝赐教指正,共同进步。[最近首页之争沸沸扬扬,也不知道这个放在这合适么,苦劳?功劳?……]

2016-09-26 18:06:55 178

原创 HTTP:keep_alive

1.首先我们来了解一下http协议特点:简单,快速,灵活这些特点都容易懂,还有2个重要的特点:无连接:其实就是指的每次对于HTTP C/S 或者B/S连接我们只维护连接一次,也就是请求应答模式,http协议是基于TCP协议之上的。无状态:其实就是指的我们HTTP协议没有记忆存储的功能,也就是服务器完全不知道客户端是处于什么状态,通俗来说就是通过服务器打开的网页与你之前打开的网页没有任何联系,acc

2016-09-26 18:06:52 203

原创 多路复用IO实现方式:select,poll,epoll的区别

三种多路复用IO实现方式:select,poll,epoll的区别直接看表:650) this.width=650;" src="http://s2.51cto.com/wyfs02/M01/82/36/wKiom1dOg9bDYNEDAAGMO8Q7A8U991.png" title="IO.png" alt="wKiom1dOg9bDYNEDAAGMO8Q7A8U991.png" />以下内容

2016-09-26 18:06:49 350

原创 socket编程:多路复用I/O服务端客户端之epoll

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

2016-09-26 18:06:46 232

原创 socket编程:多路复用I/O服务端客户端之poll

一. 关于poll    对于IO复用模型,其优点无疑是免去了对一个个IO事件就绪的等待,转而代之的是同时对多个IO数据的检测,当检测等待的事件中至少有一个就绪的时候,就会返回告诉用户进程“已经有数据准备好了,快看看是哪个赶紧处理”,而对于IO复用的实现,除了可以用select函数,另外一个函数仍然支持这种复用IO模型,就是poll函数;二. poll函数的用法    虽然同样是对多个IO事件进行

2016-09-26 18:06:43 374

原创 socket编程:I/O模型

在TCP服务器编程那篇博客中,我们提到了更加优化连接方式,其实就是关于I/O的传输模型:     我们常见的几种I/O模型:阻塞式I/O模型:当进程进行数据传输连接的时候,只能够阻塞的等待数据的到来,而无法去干其他的事情,将服务进程的所有精力全部去应付当前连接;图解:650) this.width=650;" src="http://s5.51cto.com/wyfs02/M00/80/F4/wK

2016-09-26 18:06:40 199

原创 socket编程:多路复用I/O服务端客户端之select

其实在之前的TCP之中,我们编程实现了多进程,多线程机制下的TCP服务器,但是对于这种的TCP服务器而言,存在太大的资源局限性。所以我们可以是用I/0模型中的多路复用I/O模型来进行编程。他的具体思想就是:当前进程可以处理多个相应时间,记录多个描述符,然后控制轮询时间态,当有响应产生的时候我们就去保存当前响应文件描述符,对他进行连接处理/数据传输就OK了。在一个进程进行多个响应时间的答复情况下,可

2016-09-26 18:06:37 2853

原创 socket编程:简单UDP服务器/客户端编程

对于之前的TCP协议而言,他是可靠的字节流传输,而在socket编程中,在不需要保证数据传输正确安全的情况下。或者由用户自己完成传输确认情况/服务端客户端自己实现数据传输。套接字编程也提供了UDP协议的方法。基于UDP(不是面向连接)的socket编程,分为客户端和服务器端。客户端的流程如下:(1)创建套接字(socket)(2)和服务器端进行通信(sendto)(3)关闭套接字因为在socket

2016-09-26 18:06:34 522

空空如也

空空如也

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

TA关注的人

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