自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

阳光岛主

欢迎访问我的新博客: https://blog.mimvp.com

  • 博客(31)
  • 资源 (128)
  • 收藏
  • 关注

原创 Python学习——struct模块的pack、unpack示例

Python是一门非常简洁的语言,对于数据类型的表示,不像其他语言预定义了许多类型(如:在C#中,光整型就定义了8种),它只定义了六种基本类型:字符串,整数,浮点数,元组,列表,字典。通过这六种数据类型,我们可以完成大部分工作。但当Python需要通过网络与其他的平台进行交互的时候,必须考虑到将这些数据类型与其他平台或语言之间的类型进行互相转换问题。打个比方:C++写的客户端发送一个int型(4字节)变量的数据到Python写的服务器,Python接收到表示这个整数的4个字节数据,怎么解析成Python认识

2010-10-29 13:36:00 114897 11

转载 线程池的原理和连接池的原理

一、 线程池的原理:      线程池,究竟是怎么一回事?其实线程池的原理很简单,类似于操作系统中的缓冲区的概念,它的流程如下:先启动若干数量的线程,并让这些线程都处于睡眠状态,当客户端有一个新请求时,就会唤醒线程池中的某一个睡眠线程,让它来处理客户端的这个请求,当处理完这个请求后,线程又处于睡眠状态。可能你也许会问:为什么要搞得这么麻烦,如果每当客户端有新的请求时,我就创建一个新的线程不就完了?

2010-10-29 11:17:00 10719

原创 select,poll,epoll区别

<br />select的本质是采用32个整数的32位,即32*32= 1024来标识,fd值为1-1024。当fd的值超过1024限制时,就必须修改FD_SETSIZE的大小。这个时候就可以标识32*max值范围的fd。<br />对于单进程多线程,每个线程处理多个fd的情况,select是不适合的。<br />1.所有的线程均是从1-32*max进行扫描,每个线程处理的均是一段fd值,这样做有点浪费<br />2.1024上限问题,一个处理多个用户的进程,fd值远远大于1024<br />所以这个时候应

2010-10-28 14:20:00 18319 5

转载 异步套接字基础:select函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET

<br />select函数:<br />  系统提供select函数来实现多路复用输入/输出模型。原型:<br />  #include <sys/time.h><br />  #include <unistd.h><br />  select函数:<br />  系统提供select函数来实现多路复用输入/输出模型。原型:<br />  #include <sys/time.h><br />  #include <unistd.h><br />  int select(int maxfd,fd_set

2010-10-28 13:42:00 25467

转载 Python自动单元测试框架

<br />简介: 软件的测试是一件非常乏味的事情,在测试别人编写的软件时尤其如此,程序员通常都只对编写代码感兴趣,而不喜欢文档编写和软件测试这类"没有创新"的工作。既然如此,为什么不让程序员在编写软件时自己加入一些用于测试的代码,使测试过程自动化呢?在软件工程中,这一技术称为自动单元测试,本文介绍在用Python开发软件时如何实现这一目标。<br /> <br />一、软件测试<br />大型软件系统的开发是一个很复杂的过程,其中因为人的因素而所产生的错误非常多,因此软件在开发过程必须要有相应的质量保证活

2010-10-27 17:48:00 5870

原创 Python自动单元测试实例

Python unittest模块的相关用法待测源码类:widget.py#!/usr/bin/env pythonclass Widget: def __init__(self, size = (40, 40)): self._size = size def getSize(self): return self._size def resize(self, width, height): if width

2010-10-27 17:45:00 10702

原创 Python类继承简单实现

代码:  #! /usr/bin/python# Filename: inherit.py# Author: yanggangclass SchoolMember: def __init__(self,name,age): self.name = name self.age = age print 'init SchoolMember

2010-10-27 17:04:00 20021 1

原创 python实现socket通讯(TCP)

Server:      1 import socket      2       3 address = ('127.0.0.1', 31500)      4 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # s = socket.socket()      5 s.bind(address)      6 s.listen(5)      7       8 ss, addr = s.accept()      9 print 'got c

2010-10-27 15:49:00 87750 2

原创 python实现socket通讯(UDP)

Server:      1 import socket      2       3 address = ('127.0.0.1', 31500)      4 s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)      5 s.bind(address)      6       7 while True:      8     data, addr = s.recvfrom(2048)      9     if not data:     10

2010-10-27 15:38:00 100464 2

转载 python网络编程学习初步

一、套接字套接字是为特定网络协议(例如TCP/IP,ICMP/IP,UDP/IP等)套件对上的网络应用程序提供者提供当前可移植标准的对象。它们允许程序接受并进行连接,如发送和接受数据。为了建立通信通道,网络通信的每个端点拥有一个套接字对象极为重要。套接字为BSD UNIX系统核心的一部分,而且他们也被许多其他类似UNIX的操作系统包括Linux所采纳。许多非BSD UNIX系统(如ms-dos,w

2010-10-27 14:38:00 6864 1

转载 doxgen comments example

<br />1. 模块定义(单独显示一页)<br />/*<br />* @defgroup 模块名 模块的说明文字<br />* @{<br />*/<br />… 定义的内容 …<br />/** @} */ // 模块结尾<br />2. 分组定义(在一页内分组显示)<br />/*<br />* @name 分组说明文字<br />* @{<br />*/<br />… 定义的内容 …<br />/** @} */<br />3. 变量、宏定义、类型定义简要说明<br />/** 简要说明文字 */

2010-10-27 11:13:00 3982

转载 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 14673

原创 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 4585

原创 一个简单的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 12113 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 5870

转载 Linux 信号signal处理机制

信号是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概念、Linux对信号机制的大致实现方法、如何使用信号,以及有关信号的几个系统调用。 信号机制是进程之间相互传递消息的一种方法,信号全称为软中断信号,也有人称作软中断。从它的命名可以看出,它的实质和使用很象中断。所以,信号可以说是进程控制的一部分。 一、信号的基本概念 本节先介绍信号的一些基本概念,然后给出一些基本的信号类型和信号对应的事件。基本概念对于理解和使用信号,对于理解信号机制都特别重要。下面就来看看什么是信号。 1、基本概念 软中断

2010-10-16 14:53:00 5942

原创 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 73715 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 11864 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 6215

转载 GDB调试程序6--查看源程序

查看源程序一、显示源代码    GDB 可以打印出所调试程序的源代码,当然,在程序编译时一定要加上-g的参数,把源程序信息编译到执行文件中。不然就看不到源程序了。当程序停下来以后, GDB会报告程序停在了那个文件的第几行上。你可以用list命令来打印程序的源代码。还是来看一看查看源代码的GDB命令吧。    list         显示程序第linenum行的周围的源程序。    list         显示函数名为function的函数的源程序。    list        显示当前行后面的源程序。

2010-10-12 13:52:00 17515

原创 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 24571 2

原创 vim常用命令总结

vim 选择文本,删除,复制,粘贴  文本的选择,对于编辑器来说,是很基本的东西,也经常被用到,总结如下:v    从光标当前位置开始,光标所经过的地方会被选中,再按一下v结束。 V    从光标当前行开始,光标经过的行都会被选中,再按一下V结束。 Ctrl + v   从光标当前位置开始,选中光标起点和终点所构成的矩形区域,再按一下Ctrl + v结束。 ggVG 选中全部的文本, 其中gg为跳

2010-10-09 13:42:00 84537 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 40634 1

原创 linux多线程pthread

<br />1.Linux线程的发展<br />   早在LINUX2.2内核中。并不存在真正意义上的线程,当时Linux中常用的线程pthread实际上是通过进程来模拟的,也就是同过fork来创建“轻”进程,并且这种轻进程的线程也有个数的限制:最多只能有4096和此类线程同时运行。<br />   2.4内核消除了个数上的限制,并且允许在系统运行中动态的调整进程数的上限,当时采用的是Linux Thread 线程库,它对应的线程模型是“一对一”,而线程的管理是在内核为的函数库中实现,这种线程得到了广泛的应

2010-10-04 11:58:00 15637

转载 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 28053 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 4761

原创 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 5359

原创 VIM编辑命令的技巧

Vim替换与批量修改 1 简单替换表达式:%s/four/4/g“%” 范围前缀表示在所有行中执行替换。最后的 “g” 标记表示替换行中的所有匹配点。如果仅仅对当前行进行操作,那么只要去掉%即可如果你有一个象 “thirtyfour” 这样的单词,上面的命令会出错。这种情况下,这个单词会被替换成”thirty4″。要解决这个问题,用 “来指定匹配单词开头:        :%s/显然,这样在处理

2010-10-01 14:20:00 12403

SecureCRT 7.0.2 For Mac 10.12.3 完美破解版

SecureCRT 7.0.2 For Mac 10.12.3 完美破解版【亲测可用,附上详细教程】 破解的版本号 MacBook Pro   MacOS Sierra 10.12.3 SecureCRT 7.0.2

2017-04-04

python 实例化

python 实例化 示例,验证python引用、实例化的过程

2014-06-06

FatJar打包工具

Fat Jar Eclipse Plug-In是一个可以将Eclipse Java Project的所有资源打包进一个可执行jar文件的小工具,可以方便的完成各种打包任务

2014-02-28

java 连接mongodb的操作

Java 连接MongoDB, java 连接mongodb的操作

2014-01-03

MongoDB MongoVue 客户端(破解版)

MongoDB MongoVue 客户端(破解版)

2013-12-26

JSP+AJAX+MYSQL实现二级级联菜单

JSP+AJAX+MYSQL实现二级级联菜单

2013-10-11

my97 Datepicker

my97 Datepicker 日期 插件

2013-08-09

app.yaml 上传文件

利用app.yaml,上传两个静态网站(html/css/js/images)的示例

2013-04-19

Android MotionEvent 坐标获取

Android MotionEvent中getX()与getRawX()都是获取屏幕坐标(横),但二者又有区别 getX() : 是获取相对当前控件(View)的坐标 getRawX() : 是获取相对显示屏幕左上角的坐标

2013-04-07

亚马逊(Amazon)称霸电商的秘诀

亚马逊(Amazon)称霸电商的秘诀,亚马逊(Amazon),作为《财富世界500强》(2012年全球排名206),以网络书店起家的公司,是如何做到霸占美国电子商务市场大约三分之一份额的呢?

2013-04-05

Android中visibility属性

Android开发中,大部分控件都有visibility这个属性,其属性有3个分别为“visible ”、“invisible”、“gone”。主要用来设置控制控件的显示和隐藏。

2013-04-03

Android与js交互实例

Android与js交互实例,Android 中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为true

2013-04-01

Android 3D游戏开发(含代码和游戏实例)

Android 3D游戏开发,(含代码和游戏实例)

2013-01-11

Android应用开发实例(含源码和完整应用实例)

Android应用开发实例(含源码和完整应用实例)

2013-01-11

PendingIntent 使用示例

PendingIntent 分别实现了Notification和sms短信发送的两个示例

2012-12-22

Google Play 应用内支付(In-app Billing V2 + V3)

Google Play 应用内支付(In-app Billing V2 + V3)官方示例打包下载

2012-12-18

libgdx 环境搭建

libgdx 环境搭建 android 开发

2012-12-13

Android 开机自启动应用

Android 开机自启动应用, BOOT_COMPLETED

2012-11-29

Android 监听应用的安装和卸载

如果想要监听获取应用的安装和卸载事件,只需要自定义一个BroadcastReceiver,来对系统广播进行监听和处理

2012-11-29

VMware 8安装Mac OS X 10.8 Lion系统及工具包

VMware 8安装Mac OS X 10.8 Lion系统及工具包,包含Mac OS X 10.8 Lion系统,unlock-all-v110工具包

2012-10-30

Handler与AsyncTask,Looper使用示例

Handler,AsyncTask,Looper自定义线程使用示例,自定义线程与UI线程交互,访问UI线程控件

2012-10-29

Handler与AsyncTask使用示例

Handler与AsyncTask使用示例,Handler AsyncTask 示例 looper

2012-10-29

Android AsyncTask异步处理下载网页

Android AsyncTask异步处理下载网页

2012-10-23

VMware 8安装Mac OS X 10.7 Lion

VMware 8安装Mac OS X 10.7 Lion系统及驱动下载包,安装详细教程,请见http://blog.csdn.net/sunboy_2050/article/details/8070872

2012-10-18

Android反编译工具包(升级)官方绿色版

Android反编译工具包,内含图形和命令两种反编译方式,命令支持windows和linux平台,亲测验证成功!详见博客:Android APK反编译详解(附图) http://blog.csdn.net/sunboy_2050/article/details/6727581

2012-10-10

FlashFXP FTP上传下载工具

FlashFXP FTP上传下载工具

2012-09-29

JSP 页面访问用户验证

jsp安全性问题,当别人知道某个jsp文件的网址后就可以跳过登陆页面直接访问该jsp文件了,这样无法禁止外部无权限用户的访问。本文讨论内容是通过权限验证的用户,才可以访问特定的页面。 JSP 页面验证,涉及到的知识有Session, 网页权限, 用户验证等。

2012-09-29

Javascript 读写文件

Javascript 读写文件,对文件和文件夹进行读、写和删除

2012-08-21

Android反编译工具

Android反编译工具,博客请见:Android APK反编译详解(附图) http://blog.csdn.net/sunboy_2050/article/details/6727581

2012-08-21

VC Tab Control 切换窗体

VC Tab Control 切换窗体 示例

2012-07-26

Java 同步方式 wait和notify/notifyall

Java 同步方式 wait和notify/notifyall

2012-06-24

图解 ruby_c++_CoffeeScript

图解 ruby c++ CoffeeScript

2012-06-17

Windows平台下的wget和curl工具包

Windows平台下的wget和curl工具包

2012-06-02

htc g14 解锁+Root+Rom安装包

htc g14 解锁+Root+Rom安装包

2012-05-06

Git 命令学习文档(集合整理)

Git 命令学习文档(集合整理)

2012-05-03

Git 管理工具和操作文档(msysgit for windows)

Git 管理工具和操作文档(msysgit for windows)

2012-05-01

Android 创建与解析XML Dom4j方式

Android 创建与解析XML Dom4j方式

2012-04-30

Android 创建与解析XML Pull方式

Android 创建与解析XML Pull方式 博客原文:http://blog.csdn.net/sunboy_2050/article/details/7521601

2012-04-30

Android 创建与解析XML Sax方式

Android 创建与解析XML Sax方式

2012-04-30

Android 创建与解析XML Dom方式

Android 创建与解析XML Dom方式 博客原文:http://blog.csdn.net/sunboy_2050/article/details/7516058

2012-04-29

空空如也

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

TA关注的人

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