- 博客(924)
- 资源 (128)
- 收藏
- 关注
转载 linux网络编程常用函数详解与实例(socket-->bind-->listen-->accept)
常用的网络命令:netstat命令netstat是用来显示网络的连接,路由表和接口统计等网络的信息.netstat有许多的选项我们常用的选项是 -an 用来显示详细的网络状态.至于其它的选项我们可以使用帮助telnettelnet是一个用来远程控制的程序,但是我们完全可以用这个程序来调试我们的服务端程序的. 比如我们的服务器程序在监听8888端口,我们可以用telnet localhost 888
2010-10-26 15:22:00 10750
转载 VC++中四种进程或线程同步互斥的控制方法
现在流行的进程线程同步互斥的控制机制,其实是由最原始最基本的4种方法实现的。由这4种方法组合优化就有了.Net和Java下灵活多变的,编程简便的线程进程控制手段。 这4种方法具体定义如下 在《操作系统教程》ISBN 7-5053-6193-7 一书中可以找到更加详细的解释 1临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。 2互斥量:为协调共同对一个共享资源的单独访问而设计的。 3信号量:为控制一个具有有限数量用户资源而设计。 4事
2010-10-26 13:30:00 6665
转载 关于进程和线程以及句柄
说法一:进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源. 一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行 说法二:进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本
2010-10-26 10:34:00 14679
原创 Linux网络编程一步一步学-异步通讯聊天程序select
<br />Linux网络编程一步一步学-异步通讯聊天程序select<br />Client<br />#include <stdio.h><br />#include <stdlib.h><br />#include <errno.h><br />#include <string.h><br />#include <sys/types.h><br />#include <netinet/in.h><br />#include <sys/socket.h><br />#include <sys/wait.
2010-10-25 20:26:00 4586
原创 一个简单的Linux下Client/Server应答例子
<br />题目:Hello world<br />要求:案例程序基于TCP协议,由客户程序启动后向服务器程序发送“hello world”,服务器程序显示客户机IP地址、端口、以及发送的信息。服务器将收到的字符串发送给客户端,客户端显示验证。<br />使用方法:在linux下编译<br />$gcc -o client client.c<br />$gcc -o server server.c<br />先运行server程序$./server<br />再运行client程序$./client xxx
2010-10-17 19:34:00 12114 4
转载 Linux 信号signal处理函数
alarm(设置信号传送闹钟)相关函数 signal,sleep表头文件 #include定义函数 unsigned int alarm(unsigned int seconds);函数说明 alarm()用来设置信号SIGALRM在经过参数seconds指定的秒数后传送给目前的进程。如果参数seconds 为0,则之前设置的闹钟会被取消,并将剩下的时间返回。返回值返回之前闹钟的剩余秒数,如果之前未设闹钟则返回0。范例 #include#includevoid handler() {printf("hell
2010-10-16 16:17:00 5873
转载 Linux 信号signal处理机制
信号是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概念、Linux对信号机制的大致实现方法、如何使用信号,以及有关信号的几个系统调用。 信号机制是进程之间相互传递消息的一种方法,信号全称为软中断信号,也有人称作软中断。从它的命名可以看出,它的实质和使用很象中断。所以,信号可以说是进程控制的一部分。 一、信号的基本概念 本节先介绍信号的一些基本概念,然后给出一些基本的信号类型和信号对应的事件。基本概念对于理解和使用信号,对于理解信号机制都特别重要。下面就来看看什么是信号。 1、基本概念 软中断
2010-10-16 14:53:00 5947
原创 GDB调试core文件样例(如何定位Segment fault)
core dump又叫核心转储, 当程序运行过程中发生异常, 程序异常退出时, 由操作系统把程序当前的内存状况存储在一个core文件中, 叫core dump. (linux中如果内存越界会收到SIGSEGV信号,然后就会core dump)在程序运行的过程中,有的时候我们会遇到Segment fault(段错误)这样的错误。这种看起来比较困难,因为没有任何的栈、trace信息输出。该种类型的错误往往与指针操作相关。往往可以通过这样的方式进行定位。一 造成segment fault,产生core dump的
2010-10-16 12:39:00 73729 2
原创 Linux find 命令
<br />find 命令在linux中是很常用到的一个查找命令,它的功能非常地强大。可以结合正则匹配来搜索系统中的指定的内容,以下我就记录一下这个find常用到的一些用法<br /> <br />首先我们来看看find的总体用法<br /> find path option [-print -exec -ok]<br /> 其中path是指定在哪个路径中查找内容。如/var下查找内容,option是find中的一些属性值,常用的有-name,-type,-mtime,-ctime,-atime,-
2010-10-13 11:12:00 11869 1
原创 将stdout、stderr导入到指定文件
<br />在编写程序中,经常用到stdout、stderr作为输出,通常stdout用于输出程序运行正常时的信息,stderr用于输出程序出错时的信息。我们可以通过一些命令将stdout、stderr在屏幕上的输出导入到指定的文件。<br /> 1、准备工作<br /> 带有stdout、stderr输出的test.cpp<br /><br /> /* <br /> ** test.cpp <br /> */<br /> #include <iostream><br /> #include
2010-10-13 11:11:00 6217
转载 GDB调试程序6--查看源程序
查看源程序一、显示源代码 GDB 可以打印出所调试程序的源代码,当然,在程序编译时一定要加上-g的参数,把源程序信息编译到执行文件中。不然就看不到源程序了。当程序停下来以后, GDB会报告程序停在了那个文件的第几行上。你可以用list命令来打印程序的源代码。还是来看一看查看源代码的GDB命令吧。 list 显示程序第linenum行的周围的源程序。 list 显示函数名为function的函数的源程序。 list 显示当前行后面的源程序。
2010-10-12 13:52:00 17534
原创 Linux下gdb用法简单介绍
<br />GDB是GNU开源组织发布的一个强大的UNIX下调试程序工具。或许各位比较喜欢那种图形界面方式的,像VC,BCB等IDE的调试,但如果你是在UNIX平台下作软件,你会发现GDB这个调试工具有比VC,BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。<br /> <br />一般来说,GDB主要帮助你完成下面四个方面的功能:<br />1、启动你的程序,可以按照你自定义的要求随心所欲的运行程序。<br />2、可以让调试程序在你所指定的位置的断点处停止。<br />3、当程
2010-10-09 15:18:00 24590 2
原创 vim常用命令总结
vim 选择文本,删除,复制,粘贴 文本的选择,对于编辑器来说,是很基本的东西,也经常被用到,总结如下:v 从光标当前位置开始,光标所经过的地方会被选中,再按一下v结束。 V 从光标当前行开始,光标经过的行都会被选中,再按一下V结束。 Ctrl + v 从光标当前位置开始,选中光标起点和终点所构成的矩形区域,再按一下Ctrl + v结束。 ggVG 选中全部的文本, 其中gg为跳
2010-10-09 13:42:00 84554 7
转载 pthread多线程编程的学习小结
pthread多线程编程整理=================================================================================pthread_mutex_lock 函数名pthread_mutex_lock, pthread_mutex_trylock, pthread_mutex_unlock - lock and unlock a mutex SYNOPSIS概要#include int pthread_mutex_lock(pthrea
2010-10-04 12:33:00 40638 1
原创 linux多线程pthread
<br />1.Linux线程的发展<br /> 早在LINUX2.2内核中。并不存在真正意义上的线程,当时Linux中常用的线程pthread实际上是通过进程来模拟的,也就是同过fork来创建“轻”进程,并且这种轻进程的线程也有个数的限制:最多只能有4096和此类线程同时运行。<br /> 2.4内核消除了个数上的限制,并且允许在系统运行中动态的调整进程数的上限,当时采用的是Linux Thread 线程库,它对应的线程模型是“一对一”,而线程的管理是在内核为的函数库中实现,这种线程得到了广泛的应
2010-10-04 11:58:00 15641
转载 C++重载operator的示例
以下示例中定义了一个class test, 重载了<, +, +=, =, ==, <<, >>等符号:<br /><br />#include<iostream><br />#include<vector><br />using namespace std;<br /><br />class test{<br />public:<br /> int v;<br /> /*构造函数*/<br /> test():v(0){}<br /> test(const int &a):v(
2010-10-04 10:00:00 28418
原创 Linux下tar bz gz等压缩包的压缩和解压
Linux下用户经常需要备份计算机系统中的数据,为了节省存储空间,常常将备份文件进行压缩,本文是对压缩和解压命令的大致总结.tar.gz 解压:tar zxvf FileName.tar.gz 压缩:tar zcvf FileName.tar.gz dirName solaris下解压 *.tar.gz可能有些不同,按照以下两步实现解压:1、gzip -d *.tar.gz2、tar xvf
2010-10-01 23:12:00 28061 1
原创 string、string.h和ctring学习小结
<br />string 和 string.h (和cstring等价)头文件的区别<br /> <br />为什么下面这段代码 <br />#include <string.h> <br /><br />void main() <br />{ <br /> string aaa= "abcsd d"; <br /> printf("looking for abc from abcdecd %s/n", <br /> (strcmp(aaa,"abc")) ? "Found" :
2010-10-01 23:08:00 4762
原创 pthread_create、readlink、getpid等函数的学习与总结
UNIX环境创建线程函数,具体格式: #includeint pthread_create(pthread_t *restrict tidp,const pthread_attr_t *restrict attr,void*(*start_rtn)(void*),void *restrict arg); 返回值:若成功则返回0,否则返回出错编号 返回成功时,由tidp指向的内存单元被设置为新创建线程的线程ID。attr参数用于制定各种不同的线程属性。新创建的线程从start_rtn函数的地址开始
2010-10-01 16:46:00 5361
原创 VIM编辑命令的技巧
Vim替换与批量修改 1 简单替换表达式:%s/four/4/g“%” 范围前缀表示在所有行中执行替换。最后的 “g” 标记表示替换行中的所有匹配点。如果仅仅对当前行进行操作,那么只要去掉%即可如果你有一个象 “thirtyfour” 这样的单词,上面的命令会出错。这种情况下,这个单词会被替换成”thirty4″。要解决这个问题,用 “来指定匹配单词开头: :%s/显然,这样在处理
2010-10-01 14:20:00 12411
转载 struct tm 和 time_t 时间和日期的使用方法(转)
<br />关键字:UTC(世界标准时间),Calendar Time(日历时间),epoch(时间点),clock tick(时钟计时单元)<br /><br /><br />1.概念<br />在C/C++中,对字符串的操作有很多值得注意的问题,同样,C/C++对时间的操作也有许多值得大家注意的地方。下面主要介绍在C/C++中时间和日期的使用方法.<br /><br />通过学习许多C/C++库,你可以有很多操作、使用时间的方法。但在这之前你需要了解一些“时间”和“日期”的概念,主要有以下几个:<br
2010-09-29 13:55:00 6556
转载 C++中的long long和__int64类型(转载)
<br />C语言中long long的用法<br />http://www.awuit.com/c-language-the-usage-of-long-long/<br />阿吴 | C/C++ | 十一月, 03 2009 | 5 Comments<br />在分析BT代码的过程中,遇到了这样的定义:long long line_position;很是纳闷,在C语言中我还没有见过这样的写法,网上搜了,资料也很少,最后在C语言标准与实现这本书中找到了关于long long的说法。在C语言的C99标准扩展
2010-09-29 10:42:00 21306 2
原创 函数指针和指针函数的学习小结
函数指针是指向函数的指针,指针函数是指一个函数的返回值是一个指针,但下面的几道题还是感觉很迷惑。各位能否讲的详细点呢?(1) float(**def)[10] def是什么?(2) double*(*gh)[10] gh是什么?(3) double(*f[10])() f是什么?(4) int*((*b)[10]) b是什么?这样老感觉有点乱,有什么窍门可以记得并理解的清楚一点么
2010-09-28 16:29:00 4593
原创 谈谈snprintf
众所周知,sprintf不能检查目标字符串的长度,可能造成众多安全问题,所以都会推荐使用snprintf.<br /><br />snprintf(_snprintf)的声明是这样的<br /><br />int _snprintf(<br /> char *buffer,<br /> size_t count,<br /> const char *format [,<br /> argument] ... <br />);<br /><br /><br />If len < coun
2010-09-27 16:15:00 5859
原创 SHELL学习笔记----IF条件判断,判断条件
前言: 无论什么编程语言都离不开条件判断。SHELL也不例外。 if list then do something here elif list then do another thing here else do something else here fi EX1:#!/bi
2010-09-25 11:08:00 127312 3
转载 阻塞和非阻塞通信
阻塞通信意味着通信方法在尝试访问套接字或者读写数据时阻塞了对套接字的访问。在 JDK 1.4 之前,绕过 阻塞限制的方法是无限制地使用线程,但这样常常会造成大量的线程开销,对系统的性能和可伸缩性产生影响。java.nio 包改变了这种状况,允许服务器有效地使用 I/O 流,在合理的时间内处理所服务的客户请求。没有非阻塞通信,这个过程就像我所喜欢说的“为所欲为”那样。基本上,这个过程就是发送和读取任何能够发送/读取的东西。如果没有可以读取的东西,它就中止读操作,做其他的事情直到能够读取为止。当发送数据时,该过
2010-09-19 17:35:00 10249
原创 JavaScript打包与解包工具
JavaScript Packer: http://packer.skiyo.cn/JavaScript UnPacker: http://packer.skiyo.cn/unpacker.html
2010-09-17 15:05:00 7556
转载 Get the content of an Iframe in Javascript – crossbrowser solution for both IE and Firefox
Get the content of an Iframe in Javascript – crossbrowser solution for both IE and Firefox
2010-09-10 16:48:00 4093
原创 网页中插入FLASH代码的参数解释与使用技巧
<br />一:代码解释<br />代码:<br /><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"<br />WIDTH="550" HEIGHT="400" ><br /><PARAM VALUE="myFlashMovie.swf"><br
2010-09-08 19:59:00 8906
转载 Private Members in JavaScript
<br />JavaScript is the world's most misunderstood programming language. Some believe that it lacks the property of information hiding because objects cannot have private instance variables and methods. But this is a misunderstanding. JavaScript objects ca
2010-09-08 10:32:00 3595
原创 Eclipse:Failed to create the Java Virtual Machine
由于项目里面用eclipse,今天从eclipse官网下载了一个Eclipse IDE For Java EE Developers,版本:eclipse-jee-helios-win32 自己电脑上装的jdk版本是:1.6.0_20解压后启动,发现弹出提示框 "Failed to create the Java Virtual Machine"解决方法:找到eclipse目录下的eclipse.ini,可以看到如下内容:-startupplugins/org.eclipse.equinox.launche
2010-09-05 15:22:00 4798 1
原创 jQuery.each() learn and conclusion
jQuery.each( collection, callback(indexInArray, valueOfElement) )Returns: ObjectDescription: A generic iterator function, which can be used to seamlessly iterate over both objects and arrays. Arrays and array-like objects with a length property (such as a
2010-09-03 13:47:00 4047
原创 JavaScript eval() 函数
定义和用法eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。语法eval(string) 参数描述string必需。要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句。返回值通过计算 string 得到的值(如果有的话)。说明该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回。因此请不要为 eval() 函数传递 String 对象来作为参数。如果试图覆盖 eval 属性或把 eval() 方法赋予另
2010-09-03 10:21:00 3856
原创 JavaScript prototype属性与修改对象
JavaScript prototype属性 定义和用法prototype 属性使您有能力向对象添加属性和方法。语法object.prototype.name=value实例在本例中,我们将展示如何使用 prototype 属性来向对象添加属性:输出:20000=======================================================
2010-09-02 15:26:00 5073
转载 ECMAScript 继承机制实现
继承机制的实现要用 ECMAScript 实现继承机制,您可以从要继承的基类入手。所有开发者定义的类都可作为基类。出于安全原因,本地类和宿主类不能作为基类,这样可以防止公用访问编译过的浏览器级的代码,因为这些代码可以被用于恶意攻击。选定基类后,就可以创建它的子类了。是否使用基类完全由你决定。有时,你可能想创建一个不能直接使用的基类,它只是用于给子类提供通用的函数。在这种情况下,基类被看作抽象类。尽管 ECMAScript 并没有像其他语言那样严格地定义抽象类,但有时它的确会创建一些不允许使用的类。通常,我们
2010-09-02 14:28:00 3818
转载 Javascript中闭包(closure)的理解与浅析
一、什么是闭包?“官方”的解释是:所谓“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。相信很少有人能直接看懂这句话,因为他描述的太学术。我想用如何在Javascript中创建一个闭包来告诉你什么是闭包,因为跳过闭包的创建过程直接理解闭包的定义是非常困难的。看下面这段代码: function a(){ var i=0; function b(){ alert(++i); } return b;}var c = a();c();这段代码有两个特
2010-09-02 12:24:00 3977
原创 浅析JavaScript和PHP中三个等号(===)和两个等号(==)的区别
首先,先做个简单的介绍,让您有个直观的认识== equality 等同 === identity 恒等== 两边值类型不同的时候,要先进行类型转换,再比较。 === 不做类型转换,类型不同的一定不等。举例说明:"1" == true类型不同,"=="将先做类型转换,把true转换为1,即为 "1" == 1;此时,类型仍不同,继续进行类型转换,把"1"转换为1,即为 1 == 1;此时,"==" 左右两边的类型都为数值型,比较成功!如果比较:"1" === true 左侧为字符型,右侧
2010-09-01 11:37:00 11711 2
转载 JavaScript对象模型-执行模型
<br />数据类型<br />基本数据类型<br />基本数据类型是JS语言最底层的实现。<br />简单数值类型: 有Undefined, Null, Boolean, Number和String。注意,描述中的英文单词在这里仅指数据类型的名称,并不特指JS的全局对象N an, Boolean, Number, String等,它们在概念上的区别是比较大的。<br />对象: 一个无序属性的集合,这些属性的值为简单数值类型、对象或者函数。同上,这里的对象并不特指全局对象Object。<br />函数:
2010-08-31 19:27:00 4363
转载 Creating custom objects in JavaScript
Tutorial introductionAll JavaScript coders eventually reach a stage where they would like to create and use their own objects, apart from the pre-built ones, such as document or Math. Custom objects allow you to build up your own personal JavaScript"toolbo
2010-08-31 17:42:00 3559
转载 JavaScript中的类型
一、关于类型什么叫做类型?简单地说,类型就是把内存中的一个二进制序列赋予某种意义。比如,二进制序列0100 0000 0111 0000 0001 0101 0100 1011 1100 0110 1010 0111 1110 1111 1001 1110如果看作是64位无符号整数类型就是4643234631018606494 而按照IEEE 754规定的浮点数二进制表示规则(见附1)双精度浮点类型则是257.331。变量类型大部分计算机语言使用变量来存储和表示数据,一些语言会给变量规定一个类型,在整个程序
2010-08-31 16:01:00 3481
SecureCRT 7.0.2 For Mac 10.12.3 完美破解版
2017-04-04
FatJar打包工具
2014-02-28
Android MotionEvent 坐标获取
2013-04-07
亚马逊(Amazon)称霸电商的秘诀
2013-04-05
Android中visibility属性
2013-04-03
Android与js交互实例
2013-04-01
Google Play 应用内支付(In-app Billing V2 + V3)
2012-12-18
VMware 8安装Mac OS X 10.8 Lion系统及工具包
2012-10-30
VMware 8安装Mac OS X 10.7 Lion
2012-10-18
Android反编译工具包(升级)官方绿色版
2012-10-10
JSP 页面访问用户验证
2012-09-29
Android反编译工具
2012-08-21
Android 创建与解析XML Pull方式
2012-04-30
Android 创建与解析XML Dom方式
2012-04-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人