`
snake1987
  • 浏览: 71796 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
1.《AI游戏引擎程序设计》看了大概40%吧,粗读,自认为把精华都看了 2.《Programming_In_Lua》看了70%左右,也是受上一本书的启发,顺带看了,内容不多,lua是种很好的脚本语言,适合用于游戏 3.《mysql架构×××》,名字具体忘了,耐着心看了20%吧,不知道为啥,看国人写的很难看下去,可能觉得不够精华吧,没看到什么有用的东西 4.《MongoDB权威指南》,看了40%左右,知道是什么东西,也知道怎么用,内部实现也是nosql那一套,没什么大的区别,倒是用js传到服务器端进行查询这点挺好的,分布式那块没具体看,具体了解了原子操作相关和mapreduce的内容,跟猜想的区别 ...
现在我们的开发中越来越多用锁的情况,锁其实比cas恐怖很多,像性能问题,死锁问题,延时问题,都是极难排查的问题 之前在学习中掌握了一些技巧,在这里分享一下 1.open call 并发编程里面有一个术语“open call” 意思就是当我们在调用一个lock的方式时,我们需要将手中的锁释放掉(如果我们正持有锁),或者尽量避免去调用会lock的方法 看起来很简单,其实这还是很麻烦的事情 这要求我们做到这几点: a.在所有带锁的方法中都显性地表明:我会加锁的,比如方法名,或者注释 b.把锁封装起来(注意,这个过程不一定是面向对象的) c.把锁都放到同一层面上同一方法中,也就是说我们如 ...
我们知道,java的虚拟器其实是有两个版本的, client版比较适合桌面程序,它会做一些例如像快速初始化,懒加载这一类的事情来适应桌面程序的特点 server版则比较适合服务器程序,它做的则是一些针对服务器特点的事情,比如预加载,尤其在一些并发的处理上,它更是会做很多的优化, 比如线程共享变量的处理,它经过编译(运行)发现并没有要求某一变量对其他线程可见,它则不会将该变量同步到主存(可能永远不会) 之前在学习java并发时写过一个线程池 http://snake1987.iteye.com/blog/993112 稍微试了一下-server跟-client的区别 下面是运行结果 ...
社交游戏其实不是太需求游戏脚本 让我对游戏脚本产生兴趣的,主要是在三国资料片中,考虑添加上ai时产生的念头 由于对ai并没有系统的了解,所以粗读了《AI游戏引擎程序设计》一书,里面涉及到了不小的篇幅,专门是讲游 ...
博客好久没打理了,今天有时间,把在公司wiki上写的一些东西移植一下吧 我们的游戏至今已经上线第四个同步玩法了 有点想法,也有些疑惑,在这里发一下,欢迎各位tx各抒己见 准确点说,这里所谓的“同步服务器”其实 ...
需求: 1.硬件环境:所有服务器都是web容器,有统一的缓存memcached,由于一些原因,不允许用中央控制服务器 2.实现一个虚拟房间系统,即包括房间内的数据可见并共享(数据竞争性),房间有超时检测,房间外部还有一个统一调 ...
最近换了一个公司,确切来说应该是进入了一个新的行业,很多东西的学习都是从0开始的,学的东西很多很杂,先分点记下,以便以后复习回忆或者近一步学习 1.key-value数据库 像redis,memcached都是这样的数据库,网上有一篇小 ...
之前的线程池已实现了基本的功能:运行每一个线程,而且测试了一下,大约速度是ThreadPoolExecutor的1.5倍(当然,这是有充分的理由的,后文会提到) 之后的版本将准备是实现“优雅退出”和优化(非阻塞)空闲线程队列了,这个步骤想了很久,发现了很多的问题(包括准备的实现方法也在这里列一下): 1.初步构思了几个方法 void shutDown():该方法将让池不再接受任务,但会将现有的任务全部运行结束后停止 List<Runnable> shutDownNow():该方法会interrupt线程,然后收集未调用的任务,并进一步回收已调用的任务(“已调用”不包括运行中的,因 ...
首先得描述下什么是JCSP:CSP是Communicating Sequential Processes的缩写 在ibm的developerworks 中国上学习java的并发编程时无意发现的,因为在之前的多线程编程实践中,调试一个多线程的bug都花了大量的时间,所以一直想找点工具或者技 ...
一直都知道有两个jvm,一个是server,一个是client,server适合做server,client合适做client,认识也就停留在这里了 最近在练习玩并发的程序,一时手痒,试了一下-server,居然出来的数据如此惊人,相差近100倍 先大概说一下代码的功能,对了,还要说一点,该测试只占用cpu 1.1千万个任务,任务是将不断地加一个随机数,加10000遍,随机数产生的方法是使用了看Concurrency in practice介绍的随机数产生方法(据说能防止jvm优化) 2.写了一个线程池,线程池大家都知道,就不解释了 (具体代码见java并发学习之二:线程池(三)) 3.用线 ...
没找到什么好工具,也没得到好建议,好技巧,只能自己摸索了 一步步优化把 先是优化测试代码 加的内容不多,但挺关键的 测试要模拟的是一个平稳的任务下发过程(如同现实生活中的),所以一下子将所有任务丢到队列中是很不对的,而且数量一大,堆就满了 经过多次测试,决定通过让主线程每发送n个,就休息一段时间来降低主线程的下发频率 以达到平稳的目的 这样设置之后,再适当调一下,就可以让cpu利用率达到一个相对稳定的值了,从而可以更好地通过工具进行观察 public class TestThreadPoolTest1 { public static void main(String[] ...
在写线程池的时候,遇到了很多的问题,特别是happen-before应该怎么去理解,怎么去利用,还有reorder,哪些操作有可能会被reorder?在这一点上,发现其实《concurrency in practice》也没描述得太清晰。 在网上搜了一遍,发现JSR133的faq相对而言,还算稍微解释了一下,发现JSR133其实也就40多页,所以也就顺带看了一遍,因为大部分的内容都比较简单(越往后看发现越复杂~),但是里面的定义比较难理解,所以只记录了定义和一些个人认为比较重要的地方,或者比较难理解的地方 这里是阅读笔记,以备以后查阅 前言部分 1.下面的网站提供了附加的信息,帮助进一步 ...
  Jsr133地址:http://www.cs.umd.edu/~pugh/java/memoryModel/jsr133.pdf 原文的地址:http://www.cs.umd.edu/~pugh/java/memoryModel/jsr-133-faq.html JSR 133 (Java Memory Model) FAQJeremy Manson and Brian Goetz, February 2004 1.到底什么是存储模型? 在多处理器系统,处理 ...
到过北京上地的都会知道,上地城铁往西走有一个很大的上地环岛,旁边是中关村发展大厦,第一次到北京的时候还给了小弟一番挺大的感触 经常从环岛这里经过,总会思考一个问题:北京地价这么贵,为什么在这里要建一个这么大的环岛呢?环岛到底有什么作用呢?解决交通拥塞?为行人方便?还是别的原因? 在百度百科可以搜到:是为了减少交通(和谐)事故的发生。 还有别的好处吗? 先看看普通的十字路口,要么横向通车,要么纵向通车,可以这样去理解,在两个道路交叉这块正方形是两个线程抢占的共享变量 A在运行时,需要锁住变量,然后走,B等待,B运行时也一样 在并发里面有一种方法:非阻塞算法 没了解过并发的同学可能不清楚 ...
在看书的时候看到了一个观察死锁的工具TDA(Thread Dump Analysis) 看了半天,才知道这玩意儿需要由jvm产生一个Thread Dump 这个Thread Dump跟之前看到的Heap Dump也不是一回事 windows下是ctrl+break触发,unix下是ctrl+\或者kill -QUIT pid触发 默认是输出到System.out,当然,你可以重定向的 还有一个简单方便快捷的方法:Java VisualVM,并且Java VisualVM中还提供了TDA的插件下载 太深入的现在还没这水平,在之前的代码调试中用了一下 之前的代码中有这样一个错误 void w ...
Global site tag (gtag.js) - Google Analytics