
Algorithm
文章平均质量分 64
玄冬Wong
别把自己当回事儿,我还是一只菜鸟……
展开
-
【转】不用临时变量也可以交换变量的值
当要交换两个数的值时,通常的做法是定义一个临时变量,然后再进行交换。那么能不能不用临时变量而交换两个数的值呢?可以的!C语言提供的异或运算就可以实现这样的操作。 异或运算符^也称XOR运算符,它的规则是若参加运算的两个二进位同号,则结果为0(假);异号为1(真)。即0 ^ 0 = 0, 0 ^ 1 = 1, 1 ^ 0 = 1, 1 ^ 1 = 0。 例:#转载 2016-01-30 15:54:40 · 595 阅读 · 0 评论 -
巧夺天工的kfifo:Linux Kernel中的无锁环形缓冲讲解
原文:优快云博主-海枫http://blog.youkuaiyun.com/linyt/article/details/5764312 Linux kernel里面从来就不缺少简洁,优雅和高效的代码,只是我们缺少发现和品味的眼光。在Linux kernel里面,简洁并不表示代码使用神出鬼没的超然技巧,相反,它使用的不过是大家非常熟悉的基础数据结构,但是kernel开发者能从基础的数据结构中,...原创 2016-04-08 22:59:30 · 1076 阅读 · 1 评论 -
Some notes on lock-free and wait-free algorithms
原文:http://www.rossbencina.com/code/lockfree Over the past two decades the research community has developed a body of knowledge concerning “Lock-Free” and “Wait-Free” algorithms and data struct...原创 2016-04-08 18:11:57 · 249 阅读 · 0 评论 -
单个生产者单个消费者无锁队列c++实现
keyword: lockfree、lock-free、queue、buffer、无锁相关文章:无锁环形缓冲(Wait-free ring buffer) http://aigo.iteye.com/blog/1913518 方案:用atomic实现boost提供了一种标准的所谓Wait-free ring buffer,官方文档上叫buffer,但是其实现其实还是qu...原创 2016-04-01 23:56:45 · 1371 阅读 · 0 评论 -
RTS游戏的寻路算法:群体移动时如何绕开友军阻挡
参考:https://www.zhihu.com/question/29885931 wq yang这个函数:https://github.com/spring/spring/blob/a2a84b654354e5da1f828b5fd7db280d90d0596d/rts/Sim/MoveTypes/ClassicGroundMoveType.cpp#L754主...原创 2016-03-17 20:36:18 · 4813 阅读 · 0 评论 -
一种高效的寻路算法 - B*寻路算法
原文:http://qinysong.iteye.com/blog/678941 在此把这个算法称作B* 寻路算法(Branch Star 分支寻路算法,且与A*对应),本算法适用于游戏中怪物的自动寻路,其效率远远超过A*算法,经过测试,效率是普通A*算法的几十上百倍。 通过引入该算法,一定程度上解决了游戏服务器端无法进行常规寻路的效率问题,除非服务器端有独立的AI处理线程,否则在服务...原创 2016-03-03 13:12:46 · 361 阅读 · 0 评论 -
RTS游戏中的战争迷雾原理
原文:http://blog.youkuaiyun.com/xoyojank/article/details/12259161 说到战争迷雾(Fog of War, FOW), 其实还是非常普遍的一项技术, 在RPG, RTS等游戏中得到了广泛的应用 但是关于这方面的资料非常少, 经常会有人问怎么做, 所以就有了写这篇文章的想法从应用上来说, 有两种:探索范围: 通常在...原创 2016-03-03 11:43:52 · 1552 阅读 · 0 评论 -
Sleep函数原理:What's the algorithm behind sleep()?
原文:What's the algorithm behind sleep()?http://stackoverflow.com/questions/175882/whats-the-algorithm-behind-sleep原创 2016-04-22 19:11:22 · 180 阅读 · 0 评论 -
为啥要用位运算代替取模呢
为什么很多开源软件中的源码中,使用位运算代替取模操作,比如:a%b取模的形式都被替换成了a&(b-1) ,前提条件是:b为2的幂(乘方)。 原因:位运算实现取模只需5个CPU周期,而取模运算符实现至少需要26个CPU周期(注意,是最少!!!) 原文:http://crazyjvm.iteye.com/blog/1725508 言归正传,大家都知道...原创 2016-04-19 16:22:47 · 685 阅读 · 0 评论 -
java中的无锁队列:ConcurrentLinkedQueue
java 1.5提供了一种无锁队列(wait-free/lock-free)ConcurrentLinkedQueue,可支持多个生产者多个消费者线程的环境:http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/ConcurrentLinkedQueue.html 下面这个是网上别人自己实现的一种无锁算法...原创 2016-04-19 09:54:33 · 790 阅读 · 0 评论 -
[C++]boost提供的几种lock-free方案以及std::atomic实现无锁队列
boost方案boost提供了三种无锁方案boost::lockfree::queue:支持多个生产者和多个消费者线程的无锁队列。boost::lockfree::stack:支持多个生产者和多个消费者线程的无锁栈。boost::lockfree::spsc_queue:仅支持单个生产者和单个消费者线程的无锁队列。相比boost::lockfree::queue,其...原创 2016-04-18 10:48:09 · 3566 阅读 · 0 评论 -
移位实现的乘除法
移位实现的乘除法比直接乘除的效率高很多。用移位实现乘除法运算 a=a*4; b=b/4; 可以改为: a=a<<2; b=b>>2; 说明: 除2 = 右移1位 乘2 = 左移1位 除4 = 右移2位 乘4 = 左移2位 除8 = 右移3位 乘8 = 左移3位 ... ... ...原创 2014-08-26 21:53:03 · 2139 阅读 · 0 评论 -
圆和矩形碰撞检测
圆和矩形碰撞检测:http://stackoverflow.com/questions/401847/circle-rectangle-collision-detection-intersectionHere is how I would do it:bool intersects(CircleType circle, RectType rect){ circleDi...原创 2014-01-18 21:44:53 · 214 阅读 · 0 评论 -
使用无锁环形缓冲(Wait-free ring buffer)提升IO效率
相关文章:无锁队列http://aigo.iteye.com/blog/2288131 摘自:http://www.oschina.net/code/snippet_54334_12505代码源于 http://www.ibm.com/developerworks/cn/linux/l-cn-lockfree/ 的实现. 注意: 构造时参数 buf_size 必须是2的N次...原创 2013-07-25 15:42:18 · 1252 阅读 · 0 评论 -
Bit Twiddling Hacks(位操作相关的算法)
原文:Bit Twiddling Hackshttp://graphics.stanford.edu/~seander/bithacks.html Bit Twiddling HacksBy Sean Eron Andersonseander@cs.stanford.eduIndividually, the code snippets here are in the p...原创 2016-04-09 19:49:03 · 483 阅读 · 0 评论