自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

心笑峰的csdn blog

技术是用来解决实际问题的。没有困难到不能解决的问题,只要专心、用心任何问题都有解。

  • 博客(166)
  • 资源 (5)
  • 收藏
  • 关注

移动互联网SP计费

     目前android应用不如人意的一点就是收费,大批开发者靠着内置广告点击、应用推广下载收入微薄。苹果开发者由于有苹果这么个平台,收入颇丰。这里介绍下android中的SP计费方式,为各位androider多一种赚钱的选择。     SP计费就是通过在手机应用中内置发送短信到SP提供商,直接从用户手机话费中扣费的计费方式。基本的流程如下:   基本流程的说明:   ...

2012-07-30 19:20:37 700

原创 移动互联网中一种终端标识法

      移动应用软件开发中比较重要的一点就是客户端的标识。所谓的“标识”就是指给每个发布出去的客户端一定的预置属性,方便我们在软件更新、数据统计、商业合作、版本控制等等场合对这些客户端进行区别分类。天然的属性中比较重要的包括“平台类型”、“软件类型”、“版本号”,一般的应用通过这几个属性即可对客户端达到一定程度的控制。但是要达到更精细更准确的控制就需要开发者预置属性进去。     ...

2012-07-17 10:23:40 592

手机上的消息推送

      最近在找android手机上的消息推送的解决方案。目前看来有以下几种常用的方式:1.定期查询:按照指定的时间间隔连接服务器查询获取最新的消息。实现起来简单,非实时,查询时间过短则流量耗费多,耗电量大。下面是一个爱立信的测试结果: 2.短信方式:需要及时发送消息给客户端时也可以通过这种方式,但大家都懂的,这个很花钱。 3.长轮询:基本上与目前很多网站使用的方式一样...

2012-05-17 19:01:41 539

原创 Instagram 的ID生成策略[翻译]

项目中遇到一个ID生成策略的需求:需要在系统中为每个用户分配一个ID用作以后的用户标示。这个需求应该是非常普遍的,对于使用人数较少的系统而言不会是一个问题,不过对于向用户众多的互联网系统来讲这不是一个简单的问题。下面是翻译的最近最火爆的Instagram应用开发者的一篇文章,看看他们一个十几个人的公司是怎么解决这个问题的: 先给出原文链接:http://instagram-e...

2012-05-11 11:46:28 686

原创 移动互联网中的用户注册、升级

        移动互联网不是互联网,无论从网络环境还是从终端状况看都不能简单套用后者的那一套。        用户注册时要讲求个“快”字。不要让用户输入一大堆东西:什么密码、邮件、用户名......在目前手机上输入不太方便的情况下,这是找“SHI”------要么被弃之不用、要么被卸载。        有很多应用将手机号码作为注册时的ID,包括后台数据库设计也是如此。个人建议抛弃这种做法...

2012-03-31 17:05:33 435

Erlang 中进程的两种调用方式

          一个常见的情况: supervisor 下启动了N个子进程,如何访问这些子进程?          一般可以通过两种方式:          1.通过PID             所有的子进程在创建完成后都会有相应的PID,将这些个PID存到本地的表中,需要时通过PID去访问进程。          2.通过进程名             在注册一个进程的...

2012-03-29 18:16:42 874

原创 Erlang supervisor 中的simple_one_for_one

        Erlang 中的supervisor子进程的启动策略定义除了one_for_one、one_for_all、rest_for_one还有一种比较常用的simple_one_for_one。        这种策略与one_for_one比较相似,但在supervisor:init中定义的子进程只能有一个,以后启动的子进程都是以这个为模板产生,且在supervisor 启动时不...

2012-03-28 12:46:35 663

原创 系统中字典表该怎么用

        假设某天某公司做了一个拥有很多子系统的项目,其中有一些公共的字典表可能被多个子系统用到。例如一个产品类型表tb_product,基本的字段有 fid(ID),fname (名称),fprice (价格)。        在A子系统中需要一个标识来控制信息是否展示,所以负责这个子系统的A程序员就修改了表,添加了个字段IsShow。某天B子系统也需要一个标识来实现它的控制,所以负责...

2012-03-16 19:09:36 1248

原创 Erlang 尾递归

         尾递归就是在一系列语句的最后又跳转到被调用函数的开头。这里的“最后”两个字很关键,不正确的递归调用会吃光你的内存。litaocheng 在他的blog中就提到过一个很好的例子:here     观察下面的代码: do_t1() -> try recive _-> ...

2012-03-14 18:08:12 536

原创 Erlang 聊天室程序(九) 主题房间2 ---房间信息管理

 接着上一篇,这次处理“维护当前可用的主题房间信息”问题。 每次使用startChild启动子进程的时候将当前的房间信息保存到ets表中。更重要的是每次主题房异常退出或重启都要更新对应的信息。         修改room_manager.erl中的内容:新建一个函数来初始化房间信息表:initTab()-> ets:new(roominfo,[public...

2012-03-14 14:20:15 342

原创 MySQL IP字符串转数字存储过程

DELIMITER $$USE `db_im`$$DROP PROCEDURE IF EXISTS `P_bi_parasIP`$$CREATE DEFINER=`root`@`localhost` PROCEDURE `P_bi_parasIP`(    IN Pi_ipstr VARCHAR(50),    OUT Po_int1 INT,    OUT Po_int2 IN

2012-03-05 22:18:31 3334

MySQL IP字符串转数字存储过程

DELIMITER $$USE `db_im`$$DROP PROCEDURE IF EXISTS `P_bi_parasIP`$$CREATE DEFINER=`root`@`localhost` PROCEDURE `P_bi_parasIP`( IN Pi_ipstr VARCHAR(50), OUT Po_int1 INT, OUT Po_int2 INT, O...

2012-03-05 22:18:00 284

原创 Erlang 聊天室程序(八) 主题房间---supervisor 的使用

之前实现的功能相当于一个大厅,这里我们为这个聊天室程序添加“主题房间的功能”。客户端登陆后处于大厅中,然后获取目前所有的主题房间,再发送消息进入到某个房间内。同一房间的成员可见,发送的消息也只限本房间可见。        为了管理这些房间,Erlang Opt中的监控树是最合适的。        新建一个模块room_manager.erl 其行为遵守gen_supervisor,子进程为

2012-03-02 18:03:20 3970 2

Erlang 聊天室程序(八) 主题房间---supervisor 的使用

之前实现的功能相当于一个大厅,这里我们为这个聊天室程序添加“主题房间的功能”。客户端登陆后处于大厅中,然后获取目前所有的主题房间,再发送消息进入到某个房间内。同一房间的成员可见,发送的消息也只限本房间可见。 为了管理这些房间,Erlang Opt中的监控树是最合适的。 新建一个模块room_manager.erl 其行为遵守gen_supervisor,子进程为chat_room...

2012-03-02 18:03:00 408

原创 Erlang 聊天室程序(七) 获取在线用户

先定义消息格式如下:              请求: #message{type="get",subject="clientinfo",content="all"}              响应:#message{type="result",subject="clientinfo",content=[#clientinfo,#clientinfo,.....]}

2012-03-02 14:12:21 3677

Erlang 聊天室程序(七) 获取在线用户

先定义消息格式如下: 请求: #message{type="get",subject="clientinfo",content="all"} 响应:#message{type="result",subject="clientinfo",content=[#clientinfo,#clientinfo,.....]} 修改客户端发送请求消息部分: clientThread.send...

2012-03-02 14:12:00 325

原创 JAVA JSON String to Object 转换中的集合

如果要转换到的Bean类中含有类似ArrayList、Map、List这样的集合时,要对集合进行处理,否则会报“net.sf.ezmorph.bean.MorphDynaBean cannot be cast to XXX”这样的异常。            处理方法如下:            1.定义一个Map              Map mymap = new H

2012-03-02 12:28:02 8597 3

JAVA JSON String to Object 转换中的集合

如果要转换到的Bean类中含有类似ArrayList、Map、List这样的集合时,要对集合进行处理,否则会报“net.sf.ezmorph.bean.MorphDynaBean cannot be cast to XXX”这样的异常。 处理方法如下: 1.定义一个Map Map <String,Class> mymap = new HashMap<Stri...

2012-03-02 12:28:00 444

原创 Erlang 聊天室程序(六) 设置客户端信息2

上篇开了个头编写了基本的框架,这次连同客户端服务器端代码一起完善下。           首先修改客户端代码:           之前在数据交换部分,客户端中定义了一个Message bean类,里面包含了发送一条消息所需要的基本信息,包括id、type、subject、from、to、content等。但这里的content是一个String 类型,如果要表示更复杂的消息就不太适用

2012-03-01 14:25:10 3591

Erlang 聊天室程序(六) 设置客户端信息2

上篇开了个头编写了基本的框架,这次连同客户端服务器端代码一起完善下。 首先修改客户端代码: 之前在数据交换部分,客户端中定义了一个Message bean类,里面包含了发送一条消息所需要的基本信息,包括id、type、subject、from、to、content等。但这里的content是一个String 类型,如果要表示更复杂的消息就不太适用了。 由于所有的消息id、...

2012-03-01 14:25:00 363

原创 Erlang 聊天室程序(五) 设置客户端信息

接下来实现设置客户端信息功能,使客户端可以设置自己的名称、性别、年龄、所做省份等信息。我们暂时不管客户端如何实现,先对服务器端代码进行调整。            这里需要做以下几件事:            1.修改client_session中handle_info({tcp,Socket,Data},State) 函数对接收到的消息包的处理,使其能支持“客户端信息设置消息”。

2012-02-28 17:30:09 3602 5

Erlang 聊天室程序(五) 设置客户端信息

接下来实现设置客户端信息功能,使客户端可以设置自己的名称、性别、年龄、所做省份等信息。我们暂时不管客户端如何实现,先对服务器端代码进行调整。 这里需要做以下几件事: 1.修改client_session中handle_info({tcp,Socket,Data},State) 函数对接收到的消息包的处理,使其能支持“客户端信息设置消息”。 考虑到后面还会有更多种类的消息,在这里添加一...

2012-02-28 17:30:00 119

原创 Erlang 聊天室程序(四) 数据交换格式---json的encode

上一篇实现了json数据到message记录的转换,这篇则是将message还原为json以便发送给客户端。                首先完善上篇中creationDate部分的解析:para({"creationDate",Val},Data)-> {obj,List}=Val, Time=#time{}, NewData1=Data#message{time=Time},

2012-02-27 21:03:56 3425

Erlang 聊天室程序(四) 数据交换格式---json的encode

上一篇实现了json数据到message记录的转换,这篇则是将message还原为json以便发送给客户端。 首先完善上篇中creationDate部分的解析:para({"creationDate",Val},Data)-> {obj,List}=Val, Time=#time{}, NewData1=Data#message{time=Time}, NewDat...

2012-02-27 21:03:00 116

原创 Erlang 聊天室程序(三) 数据交换格式---json的decode

霸哥的blog中提到过Erlang服务器在通信中与客户端的数据交换方式:yufeng             为了简单起见这个聊天室程序采用json,要使用到rfc4627这个库             先定义一个Message类:public class Message { String id; //消息ID String type; //消息类型 String fro

2012-02-27 18:29:25 4206

Erlang 聊天室程序(三) 数据交换格式---json的decode

霸哥的blog中提到过Erlang服务器在通信中与客户端的数据交换方式:yufeng 为了简单起见这个聊天室程序采用json,要使用到rfc4627这个库 先定义一个Message类: public class Message { String id; //消息ID String type; //消息类型 String from; //发送方 St...

2012-02-27 18:29:00 148

原创 Erlang 聊天室程序(二) 客户端的退出

接着上一篇Erlang 聊天室程序(一) 。客户端退出会导致服务器端异常退出。               异常信息如下:client sockt closed ** exception exit: {bad_return_value,true}              显然已经在client_session的 handle_info({tcp_closed,Socket},Sta

2012-02-25 13:01:09 4688

Erlang 聊天室程序(二) 客户端的退出

接着上一篇Erlang 聊天室程序(一) 。客户端退出会导致服务器端异常退出。 异常信息如下:client sockt closed ** exception exit: {bad_return_value,true} 显然已经在client_session的 handle_info({tcp_closed,Socket},State) 中捕捉到了Socket断链信息。h...

2012-02-25 13:01:00 201

原创 Erlang 聊天室程序( 一)

为了熟悉Erlang的套接字编程开始编写一个“聊天室”程序。基本流程如下:             1.服务器启动监听指定端口             2.启动一个gen_server 作为聊天室进程,里面使用ets 保持当前所有客户端连接信息,并负责将某个客户端的消息广播到所有在线客户端             3.服务器接受客户端连接,并绑定到一个gen_server进程

2012-02-24 16:01:55 9353 10

Erlang 聊天室程序( 一)

为了熟悉Erlang的套接字编程开始编写一个“聊天室”程序。基本流程如下: 1.服务器启动监听指定端口 2.启动一个gen_server 作为聊天室进程,里面使用ets 保持当前所有客户端连接信息,并负责将某个客户端的消息广播到所有在线客户端 3.服务器接受客户端连接,并绑定到一个gen_server进程 4.客户端维护进程接受客户端发送的消息,调用聊天室进程函数进行广播 5...

2012-02-24 16:01:00 266

原创 Erlang gen_server:start_link/3 和gen_server:start_link/4

两个方法都可以用来启动一个gen_server服务器进程,具体的参数如下:              gen_server:start_link(Module,Args,Option);              gen_server:start_link(ServerName,Module,Args,Option);               第二个方法只比第一个多了个Serv

2012-02-24 11:32:04 4971

Erlang gen_server:start_link/3 和gen_server:start_link/4

两个方法都可以用来启动一个gen_server服务器进程,具体的参数如下: gen_server:start_link(Module,Args,Option); gen_server:start_link(ServerName,Module,Args,Option);  第二个方法只比第一个多了个ServerName,在gen_server的源码中区别如下:start_lin...

2012-02-24 11:32:00 290

原创 Erlang mnesia(一) 生成sequence 查错过程

整了段代码,想用mnesia数据库来实现类似于Oracle中sequence 的功能。原代码如下:%% Author: Administrator%% Created: 2012-2-16%% Description: TODO: Add description to id_generator-module(id_generator).-behavior(gen_server).

2012-02-17 17:57:56 2951

Erlang mnesia(一) 生成sequence 查错过程

整了段代码,想用mnesia数据库来实现类似于Oracle中sequence 的功能。原代码如下:%% Author: Administrator%% Created: 2012-2-16%% Description: TODO: Add description to id_generator-module(id_generator).-behavior(gen_serv...

2012-02-17 17:57:00 98

原创 Erlang 从URL中截取尾部文件名

分析项目edownloader时看到的代码:                    从 “http://www.aaaa.com.cn/download/bbb/ccc.exe”  中截取ccc.exeuri.hrl-record(uri, {scheme, %% "http", "ftp" user_info="", %% [] | "sr

2012-02-16 16:02:18 3064

Erlang 从URL中截取尾部文件名

分析项目edownloader时看到的代码: 从 “http://www.aaaa.com.cn/download/bbb/ccc.exe” 中截取ccc.exeuri.hrl-record(uri, {scheme, %% "http", "ftp" user_info="", %% [] | "srp" ho...

2012-02-16 16:02:00 105

原创 Erlide 的安装使用

erlang 开发平台很少,做JAVA开发的人做erlang开发,肯定会怀念eclipse中的快捷键操作,配置调试,语法高亮等。Erlide则是这么一款基于eclipse 的erlang开发插件,目前的版本是0.13.9            安装步骤如下:                     1.安装erlang开发环境(版本至少为R13B-5)

2012-02-16 12:10:11 4683

Erlide 的安装使用

erlang 开发平台很少,做JAVA开发的人做erlang开发,肯定会怀念eclipse中的快捷键操作,配置调试,语法高亮等。Erlide则是这么一款基于eclipse 的erlang开发插件,目前的版本是0.13.9 安装步骤如下: 1.安装erlang开发环境(版本至少为R13B-5) 2.安装eclipse 3.eclipse-->help--->instal...

2012-02-16 12:10:00 119

原创 fqueue(二)

上一篇blog分析了fqueue 的数据存储层的实现。这篇主要分析通信部分。fqueue使用jmemcached做为通信层,jmemcached与客户端的交互使用netty框架。          主要的类如下:         startNewQueue:启动类,每new一个instance 都会启动一个监听了相应端口的服务。         MemCacheDaemon:负责通信的

2012-02-09 21:02:56 3726

fqueue(二)

上一篇blog分析了fqueue 的数据存储层的实现。这篇主要分析通信部分。fqueue使用jmemcached做为通信层,jmemcached与客户端的交互使用netty框架。 主要的类如下: startNewQueue:启动类,每new一个instance 都会启动一个监听了相应端口的服务。 MemCacheDaemon:负责通信的管理,包括调用netty建立监听,接受连接等,这...

2012-02-09 21:02:00 204

一个我自己学习Erlang的聊天室服务器及客户端代码

里面包含Server端Erlang代码和Client端JAVA代码。编写过程在我博客里。

2012-06-14

MQTT JAVA jar包 wmqtt.jar

IBM提供的MQTT协议客户端JAVA包

2012-06-09

mnesia用户手册

erlang mnsia数据库中文版用户手册

2012-02-17

mysql-connector-java-5.1.6.jar

mysql-connector-java-5.1.6.jar连接mysql6.0以上版本时使用

2011-10-18

openfire流程分析时序图

主要分析了注册、添加好友的过程mdl格式,用Rational Rose或PowerDesigner打开

2011-07-20

空空如也

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

TA关注的人

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