自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

千里之行,始于足下

工作技术点滴记录和积累

  • 博客(97)
  • 资源 (1)
  • 收藏
  • 关注

原创 Java 8 Function函数式接口

Java 8 Function函数式接口介绍函数式接口其实就是一个抽象接口类,在Java 8之前已有的函数式接口有以下。java.lang.Runnablejava.util.concurrent.Callablejava.util.Comparator等等...使用方法其实上述所说的接口类只需要使用FunctionalInterface注解修饰,就成为了J...

2018-05-09 00:49:20 2387

原创 读懂ThreadLocal

ThreadLocal该类可以实现线程本地变量,即每个线程访问的变量是属于不同的副本的。先来段测试代码,然后根据源码解读其实现原理。package com.walterlife.javacore;import java.util.concurrent.Executor;import java.util.concurrent.ExecutorService;import java.u...

2018-05-07 22:36:35 255 1

原创 cocos2dx3.3 使用cocos studio2.0 导出的.csb文件

直接上步骤:(以COCOS2DX-JS 框架自带的飞机为例子)1. 打开cocos studio2.0 新建节点文件2. 导入资源,并按照需要设计新建的节点文件红色框内为导入的资源,蓝色框内为csd文件的布局(注意,背景图坐标设置为(0,0),锚点设置为(0,0),其他元素锚点设置为(0.5,0.5),按钮设置成Button类型,并设置normal和selected时的

2014-12-28 15:49:03 5890

转载 these critical programs are missing or too old

these critical programs are missing or too old正则表达式ubuntu工具These critical programs are missing or too old 这个问题是我在使用UBUNTU 9.10 时遇到的问题。 在使用crosstool0.43生成工具链的时候,系统提示,太旧,,实质上是没有满足,

2014-08-11 18:55:22 4798

转载 vi 批量注释

多行注释:1. 进入命令行模式,按ctrl + v进入 visual block模式(可视快模式),然后按j, 或者k选中多行,把需要注释的行标记起来2. 按大写字母i,再插入注释符,例如//3. 按esc键就会全部注释了(我的是按两下)取消多行注释:1. 进入命令行模式,按ctrl + v进入 visual bl

2014-03-17 12:03:29 1106

转载 解决Access denied for user 'walter'@'localhost' (using password: YES)

ERROR 1045 (28000): Access denied for user 'mysql'@'localhost' (using password: NO)此问题网上大部分都是围绕下面的第二步(修改密码)展开的,很是坑爹的是我怎么都登陆不进去(各种模式登陆均失败),何谈修改密码呢?本人分心mysql日志文件总结此问题的整体步骤如下:第一步:修改pid路径查看日志文

2014-03-11 23:55:21 1332

原创 c++中static_cast与dynamic_cast用法小结

static_cast:   1. 可用与基本数据类型之类型之间的转化, 但不可用与不同基本数据类型指针之间的转换  2. 可用于基于继承的指针对象或引用之间的转换,但是不是用动态类型识别机制dynamic_cast:  用于基于继承的指针对象或引用之间的转换,基于动态类型识别机制,若两个指针对象类型不一致,则返回空指针。基于引用转换时,类型不一致则抛出bad_cast异常

2013-10-03 00:05:08 1188

原创 c++内存布局

一个由C/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 程序运行时由编译器自动分配,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。程序结束时由编译器自动释放。2、堆区(heap) — 在内存开辟另一块存储区域。一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。

2013-09-29 14:05:15 955

原创 TCPDUMP详解(续)

TCPdump抓包命令 tcpdump是一个用于截取网络分组,并输出分组内容的工具。tcpdump凭借强大的功能和灵活的截取策略,使其成为类UNIX系统下用于网络分析和问题排查的首选工具。 tcpdump提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具。tcpdump存在于基本的Linux系统中,由于它需要将网络界面设置为混杂模式,普通用户不能正常执

2013-09-20 10:27:05 2009

转载 linux常用命令

1、 chown  chgrp chmod2、 --time=atime(访问时间)  ctime(权限或属性修改时间) mtime(内容被修改时间) --full-time3、新建文件默认权限为666,目录为777  umask 为需要减去的权限4、文件隐藏属性 lsattr chattr +-i a   a为只能增加数据  i为不可更改,删除,改名5、文件特

2013-09-13 00:07:42 1062

转载 Linux2.6内核中epoll用法详解

epoll是linux2.6内核中才有的机制,其他版本内核中是没有的,是Linux2.6内核引入的多路复用IO的一种方式,用于提高网络IO性能的方法。在linux网络编程中,很长一段时间都是采用select来实现多事件触发处理的。Select存在如下几个方面的问题:一是每次调用时要重复地从用户态读入参数,二是每次调用时要重复地扫描文件描述符,三是每次在调用开始时,要把当前进程放入各个文件描述符的等

2013-09-10 22:11:06 1565

转载 DNS原理及其解析过程

DNS原理及其解析过程精彩剖析     网络通讯大部分是基于TCP/IP的,而TCP/IP是基于IP地址的,所以计算机在网络上进行通讯时只能识别如“202.96.134.133”之类的IP地址,而不能认识域名。我们无法记住10个以上IP地址的网站,所以我们访问网站时,更多的是在浏览器地址栏中输入域名,就能看到所需要的页面,这是因为有一个叫“DNS服务器”的计算机自动把我们的域名

2013-09-10 12:51:16 1079

原创 两个整数集合A和B,求其交集

两个整数集合A和B,求其交集。 1. 读取整数集合A中的整数,将读到的整数插入到map中,并将对应的值设为1。 2. 读取整数集合B中的整数,如果该整数在map中并且值为1,则将此数加入到交集当中,并将在map中的对应值改为2 通过更改map中的值,避免了将同样的值输出两次。下面为源码:#include #include using namespace std;

2013-08-28 22:15:00 9489

原创 UNIX网络编程--设置I/O超时

1. 调用alarm,它在指定超时期满时产生SIGALRM信号。这个方法涉及信号处理,而信号处理在不同的实现上存在差异,而且可能干扰进程中现有的alarm调用2. 在select中阻塞等待I/O(select有内置的时间限制),以此代替直接阻塞在read或write调用上3. 使用较新的SO_RCVTIMEO和SO_SNDTIMEO套节口选项。

2013-08-28 15:29:31 1165

原创 UNIX网络编程--实现并发UDP服务器

大多数UDP服务器程序是迭代运行的,即服务器等待一个客户请求,读入这个请求,处理这个请求,送回其应答,接着等待下一个客户请求。然而当客户请求的处理需消耗用过长时间时,我们就得设计一个并发的UDP服务器。以下为实现的方法: 1. 该方法比较简单,读入一个客户请求并发送一个应答后,与这个客户就不再相关了。这种情形下,读入客户请求的服务器可以fork一个子进程并让子进程去处理该请求。该“请求”(

2013-08-27 21:06:11 1358

原创 UNIX网络编程--套接字可读或可写的条件

socket可读的条件 1. socket的接收缓冲区中的数据字节大于等于该socket的接收缓冲区低水位标记的当前大小。对这样的socket的读操作将不阻塞并返回一个大于0的值(也就是返回准备好读入的数据)。我们可以用SO_RCVLOWATsocket选项来设置该socket的低水位标记。对于TCP和UDPsocket而言,其缺省值为1 2. 该连接的读这一半关闭(也就是接收了FIN的T

2013-08-27 20:43:12 2074

原创 UNIX网络编程--TIME_WAIT

先看以下TIME_WAIT状态是怎么产生的,最好的解释就是看TCP状态转换图咯对与每个状态的解释如下1、建立连接协议(三次握手)(1)客户端发送一个TCP segment(Seq 由主机产生,假设为x, SYN=1)到服务器。这是三次握手过程中的segment 1。(2) 服务器端回应客户端的,这是三次握手中的第2次握手,此时发送2个segment,第一个seg

2013-08-26 19:48:56 1372

原创 linux命令--sysctl

sysctl sysctl被用来在执行时配置内核参数。这些参数都存储在/proc/sys/(以键-值对形式存储)中。你可以用sysctl来读和写数据命令参数  variable   要读的键值的名字 eg:sysctl net  -> 打印出有关网络的配置参数其  -n  variable 只打印值,不打印键的名字 -e variable  打印时忽略错误的键-N  var

2013-08-25 22:16:07 2519

原创 UNIX 网络编程之线程

概述:   实现并发服务器一般都是父进程accept一个连接,然后fork一个子进程,该子进程处理与该连接对端的客户之间的通信。但是fork是昂贵,耗资源和时间。而线程是轻量级线程,它的创建比进程的创建块10-100倍。在同一进程内除了共享全局变量外还共享: 大多数数据;进程指令; 打开的文件; 信号处理函数信号处置; 当前工作目录;用户ID和组ID不过每个线程有各自的资源:‘ 线

2013-08-25 19:58:46 1070

原创 C++中delete, new以及new [], delete[]操作符内幕

人们有时好像喜欢故意使C++语言的术语难以理解。比如说new操作符(new operator)和operator new的区别。   当你写这样的代码:string *ps = new string("Memory Management");  你使用的new是new操作符。这个操作符就象sizeof一样是语言内置的,你不能改变它的含义,它的功能

2013-08-25 14:39:13 655

转载 释放对象数组:delete与delete[]

>练习   14.11   中提到: Account   *parray=new   Account[100]; delete   parray; delete   []   parray; 方括号的存在会使编译器获取数组大小(size)然后析构函数再被依次应用在每个元素上,一共size次。否则,只有一个元素被析构。 无论哪种情况,分配的全部空间被返还给自由存储区。 我

2013-08-25 14:37:59 2023

转载 C++中cin函数深入分析

很多初学者都认为cin函数是一个很简单的函数,其实不然!cin函数有很多需要了解的知识(比如:cin的返回值是什么,cin提供了哪些成员函数且分别是什么作用,如cin.clear(), cin.ignore(), cin.fail(), cin.good()等等),如果没有很好的掌握,在使用的时候很可能会出问题却不知其原因!而且很多人也确确实实遇到过不少问题,以下是几个简单的例子:程序1:

2013-08-25 11:43:52 1586

原创 网络编程--套接字选项

基本套接字选项1. SO_BROADCAST 开启或禁止进程发送广播消息的能力。2. SO_DEBUG 开启该选项后,内核将为TCP在该套接字发送和接收的所有分组保留详细跟踪信息。这些信息保存在内核的某个环型 缓冲区中3. SO_KEEPALIVE 如果两小时内在该套接字的任一方向上都没有数据交换,TCP就自动给对端发送一个保持存活探测分节,它导致以

2013-08-25 09:05:25 1444

转载 标准I/O的缓冲机制的实例讲解

标准I/O库对每个I/O流自动进行缓冲,从而避免了应用程序为了减少read和write系统调用而设置合适的缓冲区长度。标准I/O提供了三种类型的缓冲我们下来看一个《unix环境高级编程》上的一个输出标准输入,标准输出,标准出错和普通文件的缓冲信息的例子  4 void pr_stdio(char *,FILE *);  5   6 int main(void){ 

2013-08-23 22:54:13 1000

原创 linux进程间通信--信号量

概述  信号量是一种用于提供不同进程间或一个给定进程的不同线程间同步手段的原语。下图表示的是由两个进程使用的一个二值信号量一个进程可以在信号量执行三种操作: 1. 创建(create)一个信号量,这要求调用者指定初始值,对于二值信号量来说,它通常是1,  2. 等待(wait)一个信号量,该操作会测试这个信号量的值,如果其值小于或等于0,那就等待or阻塞,一旦其值变为大于1

2013-08-23 18:06:53 1215

转载 C++中const的实现机制深入分析

问题 C语言以及C++语言中的const究竟表示什么?其具体的实现机制又是如何实现的呢? 本文将对这两个问题进行一些分析,简单解释const的含义以及实现机制。 问题分析 简单的说const在C语言中表示只读的变量,而在C++语言中表示常量。关于const在C与C++语言中的使用以及更多的区别,以后有时间另开一贴说明。那么const究竟是如何实现的呢? 对于声明为const

2013-08-23 10:24:35 912

原创 使用互斥锁解决生产者与消费者问题

互斥锁:上锁与解锁互斥锁指代相互排斥,是最基本的同步形式,它可用于保护临界取,以保证任何时刻只有一个线程在执行其中的代码。它实际上保护的是临界区中被操纵的数据,也就是保护由多个线程或多个进程分享的共享数据使用方法lock_the_mutex(...)临界区unlock_the_mutex(,,,)在Posix中,互斥锁声明为具有pthread_mutex_t数据类型

2013-08-23 09:44:53 2025

转载 Ubuntu下星际译王/字典的安装实例解

Ubuntu下安装星际译王/字典abc@abc:~$ sudo apt-get install stardict正在读取软件包列表... 完成正在分析软件包的依赖关系树 读取状态信息... 完成 正在初始化软件包状态... 完成创建标签数据库... 完成 下列新软件包将被自动安装:stardict-common 下列“新”软件包将被安装。stardict s

2013-08-23 08:27:22 912

转载 虚函数详解

C++ 虚函数表解析前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议

2013-08-23 01:42:18 2037

转载 C++的类型转换符

使用标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast。 1 static_cast用法:static_cast ( expression )    该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法:①用于类层次结构中基类和子类之

2013-08-22 23:41:01 676

转载 编译linux内核

内核编译实验环境:Ubuntu 10.04 内核版本 2.6.32-36-generic过程概述:下载源码:下载链接:http://www.kernel.org/pub/linux/kernel/v2.6/配置内核:make menuconfig编译内核:make bzImage编译内核模块:make modules安装内核模

2013-08-22 23:01:28 912

转载 epoll使用详解

epoll - I/O event notification facility在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且

2013-08-22 22:20:29 1054 1

原创 用O(nlog(n)实现最长递增子序列问题

问题描述 输入一串数字,或数组,如-5, 1, -3, -1, -2, 1, 4, 8, 9, 7,则该数组的最长递增子序列之一(注意,最长递增子序列有时候不止一个)为-5,-3,  -1, 1, 4, 8, 9解决方案:  有两种思路:1. 用动态规划来解决(O(n^2)));2,用类似二分排序的方法来解决(O(nlog(n)))思路一:可以参考之前的博文最长递增子序列的求解

2013-08-22 16:04:08 1168

原创 select.poll,epoll的区别与应用

先讲讲同步I/O的五大模型阻塞式I/O, 非阻塞式I/O, I/O复用,信号驱动I/O(SIGIO),异步I/O模型而select/poll/epoll属于I/O复用模型 select函数 该函数允许进程指示内核等待多个事件中的任何一个发生,并只在有一个或多个事件发生或经历一段指定的时间后才能唤醒它#include #include int select(int

2013-08-22 11:46:43 1147

转载 Linux环境安装ACE 6.1.0

下载下载地址:http://download.dre.vanderbilt.edu/下载ACE-6.1.0.tar.bz2,这个软件包只包含ACE,不包含TAO等附加的东西,另外bz2压缩格式的源码包比较小,只有7.55M。解压mkdir ace-installtar jxf  ACE-6.1.0.tar.bz2 -C ace-install配置

2013-08-21 23:35:14 961

原创 linux中close与shutdown的区别

1. close  把描述符的引用计数减一,仅在该计数变为0时才关闭套接字。而shutdown可以并以不管引用计数就激发TCP的正常连接终止序列2. close终止读和写两个方向的数据传送,而shutdown可以指定哪个方向被关闭,读端还是写端还是两个都关闭int shutdown(int sockfd, int howto);howto参数的值SHUT_RD  只关闭读这一半

2013-08-21 22:52:12 1208

转载 每个开发人员必须知道8个linux命令

我们以一些文本举例。假设我们有2个文件,里面有订单关于第三方的放置地点和发送回应。cat order.out.log8:22:19 111, 1, Patterns of Enterprise Architecture, Kindle edition, 39.998:23:45 112, 1, Joy of Clojure, Hardcover, 29.998:24:19 11

2013-08-20 14:58:05 681

原创 linux命令--netstat

netstat命令 netstat,用来打印网络上的连接,路由表,接口信息,伪连接和多播成员信息用法摘要netstat -t | -u | -w  | -l | -a | -n  |  -o  |  -p   | - N |  -h 等 详解 netstat打印出linux'下网络子系统的信息。信息类型由给定的第一个参数控制 1. (none)  在无参数的情况下,ne

2013-08-20 01:28:35 954

原创 卡塔兰数的应用

卡塔兰数卡塔兰数的一般項公式為 前幾項為 (OEIS中的数列A000108): 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190, 6564120420, 2446

2013-08-19 23:20:08 2017

原创 linux虚存管理机制

Linux的内存管理采用页式管理,使用多级页表,动态地址转换机构与主存、辅存共同实现虚拟内存:每个用户进程拥有4GB的虚拟地址空间,进程在运行过程中可以动态浮动和扩展,为用户提供了透明的、灵活有效的内存使用方式,下面简述Linux虚存管理以基本特点和主要实现技术:一、 Linux虚存管理的基本特点 1. 更大的地址空间。 虚拟内存可以是系统实际拥有的物理内存的若干倍。因而它使得操作

2013-08-19 21:10:00 2703

分离焦虑规定sgs

学生擦粉vgvvbfkhvjnsnfnf福建省飞,表明身份,发挥积分,是否,撒公积金!

2011-09-30

空空如也

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

TA关注的人

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