- 博客(49)
- 收藏
- 关注
原创 rabbit
#include #include #include using namespace std; struct Rabbit { int age; int maxAge; }; void Age(vector &res) { for (vector::iterator it = res.begi
2017-08-20 17:36:03
364
原创 Git从本地添加项目到远程仓库
1.创建初始化本地仓库:创建本地仓库进入显示本地仓库路径初始化2.创建远程仓库:登陆GitHub后,在右上角找到“Create a new repo”按钮,创建一个新的仓库,添加仓库名。3.将远程仓库与本地仓库关联:其中MrString是注册的用户名,ThreadPool是远程仓库名。4.将项目添加到本地仓库之后添加到暂存区:
2017-04-26 14:24:44
397
原创 cin和scanf
前几天做头条的笔试题,几千万条数据去重问题。在输入阶段,cin相比于scanf而言,耗时更长。在方便性上,cin具有一定的优势。但是在循环中最好用scanf来节省时间。
2017-04-22 12:05:46
592
原创 Redis源码解析【SDS】
SDS是redis最基本的数据类型,/src/sds.h和/src/sds.c源码如下,过几天传到git上/* SDSLib, A C dynamic strings library * * Copyright (c) 2006-2010, Salvatore Sanfilippo * All rights reserved. * * Redistribution and
2017-04-12 21:31:10
379
原创 Linux高级IO
dup和dup2函数:用于标准输入输出的重定向实例:基本的CGI服务器/* 主要部分:从建立连接之后开始 @connfd 服务器开启监听之后接受连接的描述符 服务器输出到标准输出的内容直接被客户端获得。*/if( connfd < 0 ) //错误描述{ printf( "errno is : %d\n", errno); }else{ clo
2017-04-11 10:11:31
311
转载 指针一定是4个字节吗?!
答案是否。原因如下,转载自通过汇编代码理解成员函数指针并不是指针前言:在优快云论坛经常会看到一些关于类成员函数指针的问题,起初我并不在意,以为成员函数指针和普通的函数指针是一样的,没有什么太多需要讨论的。当我找来相关书籍查阅了一番以后,突然意识到我以前对成员函数指针的理解太过于幼稚和肤浅了,它即不像我以前认为的那样简单,它也不像我以前认为的那样"默默无闻"。强烈的求知欲促使我对成员函数进行进
2017-04-07 21:04:32
3633
原创 Linux高性能服务器编程(一)
1.TCP/IP协议族:数据链路层:实现了网卡接口的网络驱动程序,以处理数据在物理媒介上的传输。不同物理网络具有不同的电气特性,网络驱动程序隐藏了这些细节,为上层协议提供一个统一的接口。ARP,RARP网络层:实现数据包的选路和转发。通信的两台主机一般不是直接相连的,网络层选择这些中间节点,以确定两台主机之间的通信路径,隐藏了网络拓扑结构,使得在传输层和网络应用程序看来,通信双方是直接相连
2017-04-07 11:24:59
1999
原创 【TeamTalk】login_server之自定义网络库netlib
TeamTalk/server/src/base/netlib.hTeamTalk/server/src/base/netlib.cppnetlib_init()初始化网络连接intLinux系统无操作,返回NETLIB_OK;netlib_destroy()清除网络连接int
2017-04-06 14:19:50
719
原创 【TeamTalk】login_server分析
TeamTalk/server/src/base/util.cppTeamTalk/server/src/base/util.h主要是读取配置文件信息。CConfigFileReader构造函数传入文件名,执行_loadFile(filename)_loadFile():按行读取file中数据,过滤掉#注释后的部分和\0,再通过_ParseLine和_TrimSpace解析“=
2017-04-05 22:47:52
606
原创 论文的新想法
移动群智感知的任务分配目前是从多目标考虑,时间和能源消耗。或结合成同一个目标,根据什么规则也可以从时间效率和稳定性两方面考虑。因为移动群智感知的环境下:每个用户的连接时间都是不确定的,所以是否可以完整的完成一整个流程(接受任务→完成任务→传回结果)是一个概率性的问题,既然是有概率的,那么就有不稳定性存在。(可以利用现有的移动模型或是自己提出一个)如果考虑最短完成时间,那么就假设所有
2017-04-05 22:25:36
608
原创 Redis学习总结
最近看了《Redis设计与实现》,从开始的基础数据类型到对象、事件、持久化、复制、sentinel。有一个大概的了解,利用回忆写一点作为复习增强记忆。一.基础数据类型1.SDS(simple dynamic string)简单动态字符串,结构体内包括:已使用长度len,空闲长度free和一个字符数组buf[]。具有以下的优点:可以在常量O(1)时间内获取字符长度,len的值。str
2017-04-05 22:07:43
273
转载 【TeamTalk】源码分析之服务端描述
TTServer(TeamTalk服务器端)主要包含了以下几种服务器:LoginServer (C++): 登录服务器,分配一个负载小的MsgServer给客户端使用MsgServer (C++): 消息服务器,提供客户端大部分信令处理功能,包括私人聊天、群组聊天等RouteServer (C++): 路由服务器,为登录在不同MsgServer的用户提供消息转发功能FileServer (
2017-04-05 14:50:25
404
原创 线程同步 进程通信
线程间的同步方式有四种临界区临界区对应着一个CcriticalSection对象,当线程需要访问保护数据时,调用EnterCriticalSection函数;当对保护数据的操作完成之后,调用LeaveCriticalSection函数释放对临界区对象的拥有权,以使另一个线程可以夺取临界区对象并访问受保护的数据。PS:关键段对象会记录拥有该对象的线程句柄即其具有“线程所有权”概念,即
2017-03-29 16:06:41
269
转载 Morris Traversal方法遍历二叉树(非递归,不用栈,O(1)空间)
本文主要解决一个问题,如何实现二叉树的前中后序遍历,有两个要求:1. O(1)空间复杂度,即只能使用常数空间;2. 二叉树的形状不能被破坏(中间过程允许改变其形状)。通常,实现二叉树的前序(preorder)、中序(inorder)、后序(postorder)遍历有两个常用的方法:一是递归(recursive),二是使用栈实现的迭代版本(stack+iterative)。这两种方法都是
2017-03-24 17:10:23
192
转载 c++中static和const的应用
链接:https://www.nowcoder.com/ta/review-c/review?page=17来源:牛客网static关键字至少有下列n个作用: (1)函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值; (2)在模块内的static全局变量可以被模块内所用函数访问,但不能被模块外
2017-02-27 16:09:18
359
转载 linux几种创建进程的方法
在Linux中主要提供了fork、vfork、clone三个进程创建方法。 在linux源码中这三个调用的执行过程是执行fork(),vfork(),clone()时,通过一个系统调用表映射到sys_fork(),sys_vfork(),sys_clone(),再在这三个函数中去调用do_fork()去做具体的创建进程工作。 fork fork创建一个进程时,子进程只是完全
2017-02-20 17:44:44
423
转载 什么是网关及网关作用
网关(Gateway)又称网间连接器、协议转换器。网关在传输层上以实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关的结构也和路由器类似,不同的是互连层。网关既可以用于广域网互连,也可以用于局域网互连。 网关是一种充当转换重任的计算机系统或设备。在使用不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间,网关是一个翻译器。与网桥只是简单地传达信息不同,网关对
2017-02-20 17:42:50
894
1
转载 Linux多线程编程
1、进程与线程:进程——资源分配的最小单位,线程——程序执行的最小单位。进程有自己独立的地址空间,一个进程崩溃后,在保护模式下不会对其他进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程没有独立的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某
2017-02-17 16:35:30
209
原创 linux中stat()函数与st_mode用法
头文件:#include #include 定义函数:int stat(const char * file_name, struct stat *buf);函数说明:stat()用来将参数file_name 所指的文件状态, 复制到参数buf 所指的结构中。下面是struct stat 内各参数的说明:struct stat{ dev_t st_de
2017-01-10 23:01:01
5912
原创 【webbench】socket中close()和shutdown()区别
最近看webbench和Tinyhttpd源码的一点学习:在fork()或create()一个新的进程时,关闭socket连接总是用close()而不是shutdown(),百度了一下区别:首先介绍一下close()和shutdown():函数:int shutdown(int s, int how);函数说明:shutdown()用来终止参数s 所指定的socket 连线. 参数
2017-01-10 17:37:24
374
原创 【webbench】源码剖析
socket.c/* $Id: socket.c 1.1 1995/01/01 07:11:14 cthuang Exp $ * * This module has been modified by Radim Kolar for OS/2 emx *//*****************************************************************
2017-01-09 18:44:27
428
原创 常用socket函数
常用socket函数详解主要介绍:socket、connect、bind、listen、accept、send、sendto、recv、recvfrom、close、shutdown其在linux和windows环境下的头文件主要是:#include和#include1. socketint socket(int family, int type, int protoco
2017-01-09 10:47:06
496
转载 Linux网络编程--struct hostent结构体
使用这个东西,首先要包含2个头文件:#include #include struct hostent *gethostbyname(const char *name);这个函数的传入值是域名或者主机名,例如" www.google.com.tw","wpc "等等。传出值,是一个hostent的结构(如下)。如果函数调用失败,将返回NULL。[cpp]
2017-01-09 10:18:03
465
转载 【Shell】常用招式大全之入门篇
本教程分为入门篇,命令篇和实战篇,结合平时工作中使用Shell的经验编写。以实例为主,侧重于应用,总结了一些实用的技巧。以下为本教程的《入门篇》,适于初学者快速入门以及老手查缺补漏。第一招 HelloWorld第一式echo第二招 判断第一式if判断原理第二式test 和文件测试字符串比较整数比较第三式第三招循环第一式for第二式whileu
2017-01-06 20:56:45
354
原创 vim跳转
跳转到函数、变量定义处:[+ctrl+i 跳转到函数、变量和#define[+ctrl+d 跳转到#define处ctrl+i 向前跳到前几次光标位置ctrl+o 向后跳到后几次光标位置
2017-01-06 19:20:45
261
原创 sqoop从mysql导入数据到hive中
首先安装sqoop(zookeeper等已经成功启动),配置好;1.下载安装包及解压tar -zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tarmv sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar sqoop 2.配置环境变量和配置文件cd %SQOOP_HOME%cp conf/sqoop
2016-12-28 13:20:25
439
转载 vim配置
http://blog.youkuaiyun.com/namecyf/article/details/7787479晚上照着做了一下,初步如下:
2016-12-26 21:00:10
179
转载 python添加模块搜索路径
看了廖大的python教程,自己记录一下:如果我们要添加自己的搜索目录,有两种方法:一是直接修改sys.path,添加要搜索的目录:>>> import sys>>> sys.path.append('/Users/michael/my_py_scripts')这种方法是在运行时修改,运行结束后失效。第二种方法是设置环境变量PYTHONPATH,该环境变量的内容会被自动添
2016-12-13 13:25:14
1195
转载 Hadoop常用命令汇总
启动Hadoop进入HADOOP_HOME目录。执行sh bin/start-all.sh关闭Hadoop进入HADOOP_HOME目录。 执行sh bin/stop-all.sh1、查看指定目录下内容Hadoop dfs –ls [文件目录]eg: hadoop dfs –ls /user/wangkai.pt2、打
2016-12-12 14:41:29
312
原创 pig初探
安装了三个节点的hadoop之后又安装了pig,安装教程随便百度一下就可以,加一下环境变量就可以直接pig了,这里注意需要在配置中中加上HADOOP_HOME。原因是:pig在mapreduce模式中,Pig将查询转换为MapReduce作业提交给Hadoop,Pig会用到HADOOP_HOME环境变量。如果该变量没有设置,Pig也可以利用自带的Hadoop库,但是这样就无法保证其自带肯定库和
2016-12-12 14:09:43
421
原创 PyScript启动出错:python could not be properly initialize
python和pythonScript必须搭配相同的64位或32位。检查发现python是64位,而安装的pythonScript是32位,于是重新安装了64位的pythonScript。如有其它问题,可以参考一下这个PyScripter启动出错:Python could not be properl在启动pythonScript后F9启动发现如下问题:UnicodeEncodeErr
2016-12-12 09:33:03
1404
原创 python高级特性(1)切片,迭代
切片:L = list(range(100))L[n1:n2:n3] #n1:开始元素下标,n2:结束元素下标,n3:切片间隔及方向L[-2:]切片是从倒数第二个元素开始到结束;L[-2:-1]只切出倒数第二个元素;不知道理解的对不对,应该是相当于一个左闭右开区间,和C++容器的begin,end一样,end是指向容器最后一个元素的下一个位置,L[-2:]相当于从倒数第二个元素
2016-12-09 18:45:33
310
原创 python函数
可以把函数名赋给一个变量:>>>a = abs>>>a(-1) #相当于abs(-1)自定义函数保存为文件可以from 文件名 import 自定义函数空函数:(意义:现在没想好怎么写,可以用pass先让代码运行起来)def nop() pass通过raise Error来抛出异常,后面继续学习函数返回多个值,return x,y其实是返回一个tuple,按位置
2016-12-09 18:43:52
228
原创 python条件判断与循环
if elif elsewhile a>0for num:numbersbreakcontinue需要注意格式,循环判断语句后要有冒号(:)循环体或判断语句下的执行片段要缩进。
2016-12-09 13:41:14
309
原创 python数据类型
整型%d 浮点型%f 字符串%s 布尔值 空值变量和常量:常量大写,只是一种表示方法,但是其值还是可以改变,要自己注意。list []:len,append,insert,pop,通过下标访问修改,其中的值可以是不同类型。a=['a',1,3.1415]tuple ():len,通过下标访问,其中的值不能改变。例外:tup = (1,[2,3,4]) tup[1][2] = 5
2016-12-09 13:31:39
201
原创 hadoop中datanode无法启动
在配置过程中,从原来的一个主节点,一个从节点的hadoop集群,增加了一个从节点。但是在启动过程中总是有一个节点的datanode可以启动而另一个节点的无法启动,而且每次在主节点start-all.sh时,从节点的jps都可以看到datanode之后,datanode又瞬间被关闭。网上找了一点资料之后总结如下:首先需要关闭所有节点的防火墙:sudo ufw disable然后,删除
2016-12-08 12:46:30
1105
原创 Hive初探
CREATE DATABASE mydb;CREATE DATABASE IF NOT EXIST mydb;SHOW DATABASES;SHOW DATABASES LIKE 'm.*';CREATE DATABASE mydb LOCATION 'my/directory';CREATE DATABASE mydb COMMENT 'hello';DESCRIBE DATA
2016-11-20 14:33:02
339
原创 const
char greeting[] = "hello";char* p = greeting;const char* p = greeting;char* const p = greeting;const char* const p = greeting;const出现在*左边,表示被指物是常量;const出现在*右边,表示指针自身是常量。左右 右左 在*左边,=右边是const
2016-11-05 15:50:36
205
原创 nginx模块
Wiki(http://wiki.nginx.org/Moudles)http://wiki.nginx.org/3rdPartyMoudles
2016-10-26 15:57:37
245
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人