- 浏览: 116021 次
- 性别:
- 来自: 广州
最新评论
-
ron.luo:
干货,必须得顶。
JAXB使用经验总结 -
csdn_zuoqiang:
能否看下DWR的配置情况?谢谢
结合webservice实现dwr推送 -
友友水:
。。。。不好意思,无心之失,删不掉前一条评论
JAXB使用经验总结 -
友友水:
[/flash][/flash][/flash][/flash ...
JAXB使用经验总结 -
lihong11:
大哥,加加注释好不?看不懂唉
小玩dwr实现服务器推送
文章列表
背景: 目前基于连接了mobile库 从库的 项目(spring+mybatis), 需要将从库配置调整为多个直连数据源, 即 配置多个从库的需要
下面以配置两个mobile从库数据源为例,进行配置示例:
数据源配置文件appContext-jdbc.xml
<!-- mobile 从库 -->
<bean id="mobileReadDataSource0" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close&qu ...
在某个文件中右键,git bash here
1.
git svn clone svnUrl 本地文件名
2.
cd 项目目录
3.
git remote add origin git项目地址
4.
git push -u origin master
git项目地址需要事先创建好,如果只需要迁移trunk,svnUrl需要到trunk目录
这边文章将偏实战, 至于motan,可以去了解如何实现、比普通的http请求的优越之处等
这里贴出应用motan的代码
Client端
ClassPathXmlApplicationContext ctx= new ClassPathXmlApplicationContext("classpath:motan_client.xml");
NaturalRankingService naturalRankingService = ctx.getBean(NaturalRankingService.class);
NaturalResponse ...
java快速读取大文件
- 博客分类:
- java基础
public static String readContent(String filename) throws IOException {
FileChannel fc = null;
try {
fc = new RandomAccessFile(filename, "r").getChannel();
MappedByteBuffer byteBuffer = fc.map(MapMode.READ_ONLY, 0, fc.size()).load();
byte[] result = new byte[(int) fc.s ...
微信JSSDK之添加微信卡券
- 博客分类:
- web
微信卡券的使用,是在之前的微信jsapi基础上,再加上一次卡券的单独验签,
这里对上篇微信JSSDK的使用稍作修改:
1. 微信的accessToken的获取有时间限制,之前是将token的读取放在一个单独的服务上, 单控
2.基于开个别的服务比较繁琐,现在使用redis缓存,来控制访问频率,至于并发,由锁来控制
代码如下:
package com.mazing.commons.wx;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.lang3.StringUtil ...
微信JSSDK 使用
- 博客分类:
- java基础
获取微信JSAPI_TICKET
package com.mazing.wx;
import com.fasterxml.jackson.core.type.TypeReference;
import com.mazing.CommonConstants;
import com.mazing.commons.utils.HttpClientUtils;
import com.mazing.commons.utils.JsonUtils;
import com.mazing.commons.utils.cfg.DesPropertiesEncoder;
import com. ...
Netty服务构建实践
- 博客分类:
- java基础
用main的形式在服务器上启动了一个netty服务,有端口有地址,可请求
package com.mazing.wx;
import java.io.IOException;
import java.io.InputStream;
import org.apache.logging.log4j.core.config.ConfigurationSource;
import org.apache.logging.log4j.core.config.Configurator;
import org.slf4j.Logger;
import org.slf4j.Logger ...
push数据结构设计
- 博客分类:
- 数据库
根据目前使用的极光推送,
设计一个合理的服务端,而且满足一切需求的数据结构很重要,其实也很简单
可能会有的需求: 推送消息给已注册用户、推送消息给所有用户、推送消息给匿名用户
这样的一个需求下,我们需要在app启动时,即保存用户设备did,不管有没有登录
上传机制: 用户设备did 上传的时机很重要
1. app启动时上传
2. 用户登录/切换登录时上传
数据结构如下:
CREATE TABLE `mz_android_profile` (
`pid` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id, 自增长',
...
/**
* 随机字符串集
*/
private static final String CHARACTORS = "efghxxxx";
/**
* 随机长度范围 6表示0~6
*/
private static final int RANDOM_LENGTH = 6;
/**
* 深度加密
*
* <br>
*
*
* @param plain 明文,待加密串
* @param salt 盐
...
场景:
如 抢红包、 抢优惠券,都是先到先得
抢红包是把发出来的红包先分成预设的份数,预先处理好了每个红包的金额大小,然后
将分配好的红包装进一个队列当中,等待哄抢(并发的可能)
抢优惠券也是预先生成了若干的优惠券,然后将所有生成的优惠券码放进一个队列当中,等待领取(并发的可能)
现用redis集合操作实现队列的控制
首先实现一个资源的可访问次数接口:
/**
* 是否可以继续访问某一资源(时间second内只能访问visitTotal次 资源)
*
* @param visitTotal 访问次数限制
* @param second 时间周期 ...
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ConcurrentQueue {
// 一个基于链接节点的无界线程安全队列。此队列按照 FIFO(先进先出)原则对元素进行排序。
// 队列的头部 是队列中时间最长的元素。队列的尾部 ...
因为用memcached集群缓存数据,所以增删服务器节点 对缓存key的影响需要考虑一种策略来实现 数据缓存key所映射的节点变动至最小值(这句话好长啊,就是缓存服务器的增减,对在已经缓存了的数据影响降到最小,比如“test”这个数据之前存在a1节点服务器上,那么增加删除了服务器节点,‘test’依然在 a1上(有可能不在,这个原因可以看以下代码),用10个数据来说明吧,感觉有点只可意会不可言传,10个数据,在节点变化时,尽量只有2个数据发生变动,ok)
下面代码示例:
package com.xll;
//服务器对象
public class Server {
pri ...
package com.g3net.templeteEngine;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;
import org.apache.velocity.Template;
import org.apache.velocity.app.Velocity;
import org.apache.velocity.runtime.resource.loader.StringResourceLoader;
import org.apach ...