自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 资源 (11)
  • 收藏
  • 关注

原创 自己实现RMI(六)压缩与解压

当时在优化网络通信的时候,考虑到把序列化后的字符串压缩一下,体积减小,这样可能网络传输会快点。但是这个压缩过程比较耗时,而压缩解压带来的额外开销,和网络上直接传输体积稍微大的字符串,相比下来没什么优势(实际测试过了)。不过既然实践过了,还是留下一点痕迹吧。 // 压缩public static byte[] compress(String str) throws IOException

2012-08-28 21:00:08 2255

原创 自己实现RMI(五)socket通信方案之TCP通信

其实,我一开始的RMI的数据传输采用的就是普通的TCP通信方案,只是TCP比UDP效率稍微低点(UDP的方案比TCP的方案也没快多少~O(∩_∩)O~)        TCP通信方案是可信的,只是实现的时候,收发时的数据最好是字符串,即接收端用readline函数接收字符串,这样的话效率高,如果用readbyte多次读取数据,效率低下。        其次,用TCP方案的话,不要用自带的s

2012-08-28 20:40:07 3224

原创 自己实现RMI(四)socket通信方案之UDP通信

虽然说UDP通信不可靠且没有连接状态,但是高效的传输效率还是非常诱人的。鉴于本人的项目环境是千兆以太网,考虑采用UDP通信来传输对象的序列化后的状态。原因有:以太网内传输UDP包基本上不会丢包,在程序设计时候可以不考虑该因素。此外,连接状态以及包乱序的问题,可以很方便的解决。下面具体讲述鄙人的简单方案。        基本原理是服务器端监听某端口,当有客户端发送请求,则新建线程为客户服务,线程

2012-08-28 17:54:23 4570

原创 自己实现RMI(三)对象序列化与反序列化

对象的序列化就是把对象的状态用字符串或者byte数组表示,以方便在网络上传输或者将数据写入文件。而反序列化即根据字符串或者byte数组欢迎对象的状态。一般常用的序列化方法是xml序列化,将对象的各个属性写入xml,然后用网络发送到远方,远方收到xml后创建一个空对象,最后根据xml的信息欢迎对象的状态。        当然用json来序列化要比xml要高效很多。但是,经过实验研究发现json还

2012-08-28 16:47:14 5233

原创 自己实现RMI(二)对象索引和方法回调

利用java中的map数据结构,可以很方便的实现对象的索引。此外,支持RMI的对象,必须支持序列化以及对象索引。序列化接口定义如下:public interface CommaSerialize { public abstract void toSerialize(CommaString writer);//序列化 public abstract void deSerialize(Com

2012-08-28 16:02:50 3328

原创 自己实现RMI(一)基本原理

RMI,即远程过程调用。在java中,利用RMI机制可以调用远程java虚拟机上面的对象,而且调用时跟调用本地对象一模一样。        虽然java类库里面有现成的RMI可以用,但是效率很低,基本上很难满足实际需要。至少,在一些要求快速调用远程对象的情况下,库里面的RMI基本上就是摆设。        参考RMI的基本原理,我自己实现了一套RMI方案。从原理上讲,实现过程是这样的:支持

2012-08-28 15:42:11 2998

原创 ONE源码阅读之输入模型和运动模型

输入模型:        ONE仿真系统中,定时产生仿真消息的实现在MessageEventGenerator。首先,它是一个事件队列EventQueue(接口)。MessageEventGenerator通过实现nextEvent来产生一个事件MessageCreateEvent,同时产生一个随机时间n,直到过了n个嘀嗒后才产生下一个事件,这样的话,仿真器只需要在合适的时候调用nextEve

2012-08-28 12:07:51 2227

原创 ONE源码阅读之源码结构

借用ONE写了一个专利,过程中,仔细分析了ONE源码,并在其基础上写了不少代码,在这里做一下总结。        源码中,重要的包由core,gui,input,movement,report,routing,ui。其中,core是整个系统的核心实现源码;gui是GUI界面的实现;input是输入模块的实现,对于仿真系统来说,定时消息也是输入;movement是运动模型的实现;report是日

2012-08-28 11:50:46 4450

原创 等概率随机取样的c语言实现

问题:输入包含两个整数m和n,(m定理:从r个剩余元素中选择s个元素,那么下一个元素选中的概率位s/r。证明:当前一个数概率位s/r,那么s/r = (r-s)/r * s/(r-1) + s/r * (s-1)/(r-1).前一个项为前一个数未选中的情况,后一项为选中的情况。c语言实现:int r=n;int s=m;for(i=0;i{if(rand()% r

2012-08-27 16:20:14 6172

原创 中兴捧月大赛之经验教训总结(下)

经验教训:1.windows下定时器属于多线程范畴。具体情况没研究过,从网络上的资料和自己调试的直觉来说,定时器有专用的定时器线程来执行定时器回调函数,所以使用定时器必须考虑到线程同步互斥问题。2.能避免多线程尽量避免多线程,当然,有一个辅助的线程也是允许的。一般情况下,如果一个好的设计能够避免使用线程,那么这个项目优势就大大的存在,至少稳定性就非常好,而且调试方便。3.不要因为项目简

2012-08-17 11:26:36 5616

原创 中兴捧月大赛之经验教训总结(上)

参加这个比赛的过程中,自己也摸索和学习了很多新的知识,特别是网络编程这块,以前学得太简单,这次到了前所未有的学习深度。这里一并总结一下。技术要点:1.C语言实现简单数据结构。        由于大赛要求必须在c环境下,而且不允许用第三方库,所以必须在编码实现方案之前,实现一些可能用到的数据结构,包括双链表,map。1.1 简单双链表的实现。        我这里参考了linux

2012-08-17 11:19:58 5424 1

原创 中兴捧月大赛之方案探讨

昨天参加完中兴捧月的决赛,感觉特别的糟糕。说实话,感觉中兴这次比赛搞得真的很奇葩!一是比赛搞得让我觉得公司对整个比赛的态度有点随意,有点不正式。二是比赛的赛题要求每天都在变,感觉不天天关注活动交流区,就容易违规一样~真奇葩!。三是比赛的通知。收到了进入决赛的邮件通知,看完后真的没懂要做些什么要准备些什么。直到到了中兴的研究所现场才发现,我擦,居然是视频答辩~邮件里面和电话里面怎么不说清楚呢?再者,

2012-08-17 10:47:54 4277

转载 负荷分担的可靠性系统仿真(中兴捧月任务四赛题)

任务描述:一、 标题负荷分担的可靠性系统仿真二、 题目在无线通信系统中,无论是运营商或者设备商对系统的可靠性、可用性都极其关注。请设计一套考虑负荷分担的可靠性仿真系统。如图1所示,总控节点(System Controller Node)负责用户接入,通过一定的分配规则分配相应的负荷节点(Payload Node)为其服务,总控节点本身不涉及用户具体的服务。负荷节

2012-08-16 11:49:09 4457

原创 发现!java的定时器可以并行执行

没有好好分析java定时器的实现过程,不过最近项目上发现,多个定时器同时操作一个list的时候,会出现dirty数据~但是如果改成vector就没事了。改天好好分析分析java定时器的实现原理。

2012-06-07 17:12:33 3066 1

转载 java Socket用法详解

在客户/服务器通信模式中, 客户端需要主动创建与服务器连接的 Socket(套接字), 服务器端收到了客户端的连接请求, 也会创建与客户连接的 Socket. Socket可看做是通信连接两端的收发器, 服务器与客户端都通过 Socket 来收发数据.这篇文章首先介绍Socket类的各个构造方法, 以及成员方法的用法, 接着介绍 Socket的一些选项的作用, 这些选项可控制客户建立与服务器的

2012-04-26 21:23:54 85666 7

转载 Java socket中isClose()和isConnected()

可以引起网络连接关闭的情况有以下4种:1.  直接调用Socket类的close方法。2.  只要Socket类的InputStream和OutputStream有一个关闭,网络连接自动关闭(必须通过调用InputStream和OutputStream的 close方法关闭流,才能使网络可爱接自动关闭)。3.  在程序退出时网络连接自动关闭。4.  将Socket对象设为null或

2012-04-26 16:20:35 24537 1

原创 C++内存布局

今天闲来无事,研究起C++的内存布局来。得到几个结论,记录一下。参考文献:http://haoel.blog.51cto.com/313033/124567(参考文献里面涉及的东西,这里都不再罗嗦。这里对文献做一点点补充。)        先看看几个类的实现。class Base{public : virtual void f() { cout<<"Base:f()"<<e

2012-01-09 18:02:56 2236 2

原创 爱上修改源码-----修改libgd源码有感

最近做的PDF阅读器被boss骂了一顿,说是“架构失败!”。不过也是,能够把更多的逻辑放到NDK里面就应该放嘛~        于是乎,开始忙着移植GD库。首选的是libgd,因为这个库很轻很适合在嵌入式设备上跑。但是今天忙了一天,才把一个png图片显示在android模拟器上,不是因为这个库很难懂,也不是因为libgd需要和libpng才能显示png图片,而是因为透明度的问题。

2011-11-28 22:05:37 2470

原创 关于android 3.0系统的内存限制的一些测试数据

最近给android系统的内存限制问题折腾的蛋疼,网上说android的一个activity只有16M内存,有的说java申请的空间和c中申请的空间总和是16M,我汗啊~ 我得显示20M的bitmap图片。。。。。         以下是个人测试数据,供参考:         1.系统:android 3.0         2.用如下方式获取到app的内存总量是48M。

2011-11-24 22:50:56 3004

原创 android下PDF格式的地图数据的显示------超大PDF页面显示策略(二)

下面简要介绍一下项目中的一些经验。技术总结:1.缓存系统缓存系统的原理很简单。这里就不具体介绍。public class Cache { CacheData[] cachePool=null; int size=10; public Cache(int dataSize) { size=dataSize; cachePool=new CacheData[size

2011-11-15 22:02:55 3555 1

原创 android下PDF格式的地图数据的显示------超大PDF页面显示策略(一)

这两周,忙着做一个“PDF阅读器”。不过这个PDF阅读器不是一般的阅读器,他要求打开的PDF是超大页面的矢量PDF。说得直接点,PDF存储的是地图数据,我做一个地图显示界面。注意:这个PDF只有一页!这个项目的难点在于,在嵌入式系统上实时绘制和渲染超大PDF页面。要显示的PDF是一个8M矢量数据的地图。显示,一次性将PDF渲染出来是不现实的,除非你愿意等20秒钟然后才看到地图。项目方案:(

2011-11-15 19:58:25 2188

原创 Android NDK中C和java之间数组的传送

最近在android上开发一个PDF阅读器,需要将NDK的数据传送到java中显示。值得注意的是,NDK中用c的内存分配函数分配的内存空间,不能直接return给java中使用。        反正坚持一个原则:C分配的内存只能C来使用,java分配的内存只可以java使用。至于C和java之间的内存交换,NDK提供了额外的函数。       下面举例说明:一个java中分配int[],然

2011-11-07 12:13:10 9413

原创 IO完成端口入门级详细注释代码

#include "StdAfx.h"#include "MyServer.h"#include #pragma comment(lib, "Ws2_32.lib")//windows socket库typedef struct __ARG{ HANDLE hCom

2011-09-25 19:48:32 1218 1

原创 XPDF源码调试过程中字体问题的解决办法

A. 'Adobe-GB1'缺失问题1.下载简体中文字库ftp://ftp.foolabs.com/pub/xpdf/xpdf-chinese-simplified.tar.gz2.解压成/usr/xpdf/xpdf-chinese-simplified

2011-07-30 11:41:18 3070 1

原创 纯C环境下实现标准函数的覆盖

最近在实现一个虚拟文件系统,简单的说就是为客户提供一套fopen,fread这样的一套函数,客户在编译的时候,如果定义了一个宏OS_EXIST,即由操作系统来提供文件系统,这样的话直接调用c标准的文件操作函数。如果没有定义OS_EXIST,则客户调用的fopen这套函数由另外一套

2011-07-23 17:00:18 1127

原创 自己动手写php web server

最近在做一个web缓存系统,作为一个web缓存系统,肯定得有一个web服务器的功能,即实现简单的http协议。于是,干脆自己动手写一个php的web server。(注明:本文的源码,可以在本人的资源分享里面下载)在此之前,先介绍一下简单http协议。协议包含两个重要内容。        Request格式:HTTP请求行 (请求)头 空行 可选的消息体典型例子:        GET /index.php HTTP/1.1 /r/nHost: 192.168.2.166 /r/nAccept: text/

2011-05-17 20:49:00 7134 2

原创 为rm命令增加回收站功能

<br />    rm是个强大的命令,特别是rm -rf有时候强大到让你欲哭无泪,当你想清除当前目录下的所有文件和目录时,很简单<br />$sudo rm -rf ./*<br />这没什么,但是,但是如果不小心打成这样<br />$sudo rm -rf /*<br />兄弟,请节哀!<br />还有其他各种各样的杯具,比如打开了很多窗口,有本地机器还有远程的几台服务器,本来想从这台机器执行rm -rf命令,却错误的输入到了其他机器的终端窗口,总之rm太危险了,特别是带有-rf参数时一定要慎之又慎,但

2011-05-12 14:43:00 2397 1

原创 如何选择STL容器?

  大家知道,c++的STL标准库很好用,里面的vector,list,deque,stack,slist,set,map,都很好用。但是,在实际编程过程中,如何根据自己的项目需求选择里面的一种容器呢?    最好的办法就是了解其中的原理,然后做选择。(补充,如果项目中不考虑效率,就不用考虑那么多了~毕竟STL从头到尾都考虑了效率问题。)vectorvector的基本原理如下:它采用线性空间存储数据。如果空间不够,则另外分配新的两倍大小的空间,然后把旧空间释放掉。可以看出:①vector不适合pu

2011-05-05 17:24:00 2074

原创 用windows批处理实现批量增量改名

<br />    给你100个txt,怎么把她们的名字改成0.txt,1.txt,2.txt.....99.txt呢?<br />    貌似是一个很简单的改名字过程,但是如果数量比较大的话,就不能手工改名了。<br />    下面是用window批处理批量改名的代码:<br />    @echo off&setlocal EnableDelayedExpansion  <br />    set a=1  <br />    for /f "delims=" %%i in ('dir /b *.tx

2011-03-31 10:24:00 4899

原创 用模板和基类巧妙实现类方法的回调(消息映射的基本原理)

<br />注:本文参考一位学长的博客。用模板和基类巧妙实现类方法的回调是在这位学长的指导下完成的。他的博文链接:<br />http://xuwenzhang.org/blog/category/c%e7%bc%96%e7%a8%8b%e6%8a%80%e6%9c%af/<br /> <br />    主要的任务:<br />    实现对象方法的回调。(静态函数或者全局函数的回调,这个很好实现,就不多说了)。这个技巧,常见于消息映射的实现。形象的说,A对象有一个方法show(),但是B在没有A对象指针

2011-03-22 17:48:00 1153

原创 自由输入法学习之二----自由输入法的安装

<br />     上篇文章讲了如何编译自由输入法。现在讲讲如何安装以及安装过程输入法都干了什么。<br />     安装方法:<br />    A .运行register.exe,注册输入法。实际上是在注册表里面填充<br />    HKEY_LOCAL_MACHINE/System/CurrentControlSet/Control/Keyboard Layouts<br />    HKEY_LOCAL_MACHINE/Software/freepy。<br />    对于Keyboard

2011-03-08 10:53:00 1044

原创 自由输入法学习之一------xp环境下用vc6.0编译自由输入法

    最近要做一个windows的输入法,以便为另外一个项目做准备。于是开始研究起windows的输入法------自由输入法。    但是在网上找到的很多源码,都是不带工程的,不管是vs2008的工程还是vc6.0的工程,一个都没找到。后来我自己弄了一个带vc6.0的工程的自由输入法,传到cdsn上共享起来。希望后来者能少走一些弯路吧。    下载的源码的目录结构说明:    1.binary。作者编译好的,可以直接安装的自由拼音输入法。    2.imm.编译时需要用到的头文件和静态库。    3.t

2011-03-08 10:38:00 1877

android NDK中c和java大数据交换

android NDK中c和java大数据交换。以一个很简单的例子,介绍如何在java中申请数组,然后将数组传递给c,最后将处理结果以数组的形式返回给java。希望给新手一点帮助。代码具体解释见本人博客

2011-11-07

xpdf-3.02(vs2008工程,含第三方库)

自己编译的xpdf的vs2008工程。有示例程序

2011-08-02

MPC-HC源码(含所有第三方库)part2

MPC-HC源码(含所有第三方库)part2

2011-08-01

MPC-HC源码(含所有第三方库)part1

可以直接用vs2008编译。内含所有第三方库。如果错误比较多,建议搭建windows下的gcc环境。

2011-08-01

简单的PHP web server(适合学习写web server)

在linux下面,自动动手用socket实现了一个简单的php web server。经过测试,可以使用。

2011-05-17

自由输入法2.2(含vc6.0工程xp环境下调试成功)

本人根据开源项目自由输入法改写,并添加vc6.0工程,以希望研究windows输入法的朋友少走些弯路。其中有不少自己的辛苦,所以下载需要5分,别嫌贵哦~(工程无须改动,直接编译即可)

2011-03-08

eMULE源码分析.pdf

emule源码分析。最近在研究emule的源码,发现这个pdf讲得很好。

2011-03-07

IAR430简明使用指南

IAR430简明使用指南。原创介绍IAR设置和使用

2009-08-20

notepad文本编辑器

notepad文本编辑器。很好用的一个文本编辑器,可以编辑网站代码,c/c++代码。

2009-08-20

CP210x_VCP_Win2K_XP_S2K3

EC2驱动 CP210x_VCP_Win2K_XP_S2K3

2009-08-20

空空如也

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

TA关注的人

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