- 浏览: 71394 次
- 性别:
- 来自: 厦门
最新评论
-
世界杯2009:
世界杯2009 写道结论错的。反例在此 @Test p ...
有关List和ConcurrentHashMap遍历时修改的问题 -
世界杯2009:
结论错的。反例在此 @Test public void ...
有关List和ConcurrentHashMap遍历时修改的问题
文章列表
AtomicInteger,可以用做线程安全的ID自增对象,具体的资料网上搜索一下很多,这边就不列举了,下面是一个例子
public static ConcurrentHashMap<String, AtomicInteger> ID = new ConcurrentHashMap<String, AtomicInteger>();
ID.put("Character", new AtomicInteger(1000001));
ID.put("Monster", new AtomicInteger(1000010 ...
java中如何删除list项
- 博客分类:
- java
如题,在java中如何删除list项
有两种方法:
一、采用Iterator方式删除
List<Integer> List = new ArrayList<Integer>();
Iterator<Integer> iter = List.iterator();
while (iter.hasNext()) {
iter.remove();
}
二、创建一个删除的list,然后使用removeAll方法删除
List<Integer> allList = new ArrayList<Integer>() ...
有关List类型传参的问题
- 博客分类:
- java
当你需要把一个List对象传到其他方法进行操作时,需要传一个已经实例化好的对象过去,然后在调用的方法里面通过list.add方法来修改这个List对象。
如果你传了一个List对象过去,然后在调用的方法里面进行实例化的话,那么是取不到该对象的
例如以下代码:
List<Integer> list = new ArrayList<Integer>();
setList(list);
for (Integer i : list){
System.out.println(i);
}
public static void setList( ...
有关自定义对象序列号设置
- 博客分类:
- memcached
在memcached中,如果要缓存自定义对象,那么自定义对象必须得序列化,如一下代码所示
import java.io.Serializable;
public class MemUser implements Serializable {
private static final long serialVersionUID = 1703369482383959962L;
private int id;
private String name;
public int getId() {
return id;
}
public void setId(in ...
如上图所示,一台物理服务器放三个游戏服务和一个数据库,并且有专门的memcached服务器
1、当memcached服务器重启时,需要从基础数据库中读取基础数据,而用户信息是等玩家登陆之后才写入
2、当游戏服务器重启时,首先需要从memcached服务器读取基础数据,如果memcached服务器不能访问,则从基础数据库中读取基础数据;接着要清空memcached服务器中对应的游戏服务器的用户信息,目的是为了让memcached服务器的数据和游戏服务器的数据同步
延伸:以上的游戏服务器和MEM服务器都可以做成环式的,所有环式就是负载均衡,当其中一台游戏服务器挂掉之后,客户端可以连接 ...
网页游戏架构心得(一)
- 博客分类:
- 游戏架构
首先非常感谢Saint,跟他交谈收益颇多
有关服务器的数据架构,可以分为服务器本地内存+Memcached+DB这三块
1、和客户端交互数据的就是服务端的本地内存了,这个速度是最快的,所以交互也是最频繁的(本地内存数据只保存自身服务器的数据)
2、Memcached作为本地内存的备份数据,同时还提供了分布式服务器的数据共享(Memcached保存着所有服务器的数据)
3、DB作为Memcached的备份数据,当从Memcached取不到数据时可以从DB中获取
用户登录的时候先尝试从Memcached中获取 如果获取到就从Memcached中放入本地内存,如果获取不到就从DB ...
ConcurrentHashMap压力测试结果
- 博客分类:
- java
1、往ConcurrentHashMap中连续写100W条数据花了2000毫秒,从这100W条数据中查询花了1毫秒
2、往ConcurrentHashMap中连续写500W条数据花了18420毫秒,从这500W条数据中查询花了1毫秒
3、往ConcurrentHashMap中连续写1000W条数据服务器超时
以上结果表示ConcurrentHashMap在于写的瓶颈,读没有压力
System.out.println("before:"+System.currentTimeMillis());
for (int i = 1;i<50000 ...
有关mysql连接数的心得
- 博客分类:
- mysql
mysql中设置my.ini配置文件中的max_connections可以修改最大连接数,默认为
max_connections=100
这个连接数指的是数据库的并发连接数,当数据库的并发超过这个数量时,就会抛出异常:too many connections
这时候可以修改这个数量提高数据库的并发量
但是,这个值也不是可以无限制的增大,我经过测试,在windows2003 32位操作系统下,当并发的连接数超过五六百的时候,就会抛出异常:Can't create a new thread (errno 12); if you are not out of available memo ...
初学socket心得(一)
- 博客分类:
- socket
1、socket连接分为tcp和udp两种模式,其中tcp会自动分发并且发送的流是顺序发送的,udp完整发送(主要用的是tcp模式,这边就不讨论upd模式的了)
2、tcp模式下连续发送数据时,会把一个大数据自动分为几个数据块多次发送,也有可能把多个小数据合并在一块后一次发送,所以传输的数据格式需要封装,加上一个数据长度或者结束标志以便区分,以下是在as3客户端接收socket数据时的片段代码
var flag:String = "[/e]";//结束标志
var aryData:Array = new Array();//这次接收到的数 ...