网络爬虫之网页排重:语义指纹

网络爬虫让我们高效地从网页获取到信息,但网页的重复率很高,网页需要按内容做文档排重,而判断文档的内容重复有很多种方法,语义指纹是其中比较高效的方法。本文选自《网络爬虫全解析——技术、原理与实践》。...
阅读(822) 评论(0)

游戏设计规则探秘之提高动词的健壮性

我们希望我们创造的动词得到尽可能的发展,使它们成为丰富、立体的角色。这不仅意味着让动词在游戏中更多地和其他规则互动,也意味着针对每一次互动,玩家都希望有一个适当的回应。动词是规则,让玩家学会游戏的其余规则。如果玩家用某种方式触发了动词却没有得到任何反馈,玩家就什么也没有学到,无论是动词本身还是游戏的规则。我们需要健壮的、可以和玩家沟通的动词,哪怕只是说“不,你不能这样做。”这样的看似负面的消息和告...
阅读(1148) 评论(0)

游戏设计要素探秘之术语的呼唤

小时候,我觉得游戏创作是一件神秘的事情。我无法想象一个人要如何创作游戏,也不懂如何开始。通过创建游戏设计的真正术语,我们不仅可以让现有游戏创作者的条理更加清晰,也能给新手一个设计要则表,帮助他们开始思考和规划游戏设计。我们实际上提供了一个供新老游戏创作者沟通设计思想的工具,让所有游戏创作者能够相互沟通、共同提高。 虽然游戏创作者能够从真实的设计案例中获益良多,但不只是他们,游戏评论家和记者也可从...
阅读(1441) 评论(0)

为什么要读这本书

不知道你有没有注意到,电子游戏的世界正经历着一些变化,它们正改变着我们制作游戏的方式,玩游戏的方式,以及游戏对于我们的意义。这本书的两位作者都是新一代游戏创作者中的一员,他们面临的情形是玩家已经将电子游戏视为复杂的当代文化的组成部分。对安娜(Anna)和娜奥米(Naomi)来讲,电子游戏并不仅仅是提供娱乐和幻想的家用电器,它有着更深刻的含义:它冲破了人类社会这部巨大机器原有的秩序,让人们在其中重新...
阅读(1304) 评论(0)

Netty未来展望

作为《Netty权威指南(第2版)》的结尾章节,和读者朋友们一起展望下Netty的未来。 1  应用范围 随着大数据、互联网和云计算的发展,传统的垂直架构逐渐将被分布式、弹性伸缩的新架构替代。 系统只要分布式部署,就存在多个节点之间通信的问题,由于是内部通信,同时强调高可扩展性和高性能,因此往往会选择高性能的通信方式,利用Netty +二进制编解码承载这些内部私有协议,已经逐渐成为业界主流...
阅读(840) 评论(0)

Netty高可靠性设计:优化建议

尽管Netty的可靠性已经做得非常出色,但是在生产实践中还是发现了一些待优化点,本小节将进行简单说明。希望后续的版本中可以解决,当然用户也可以根据自己的实际需要决定自行优化。 1  发送队列容量上限控制 Netty的NIO消息发送队列ChannelOutboundBuffer并没有容量上限控制,它会随着消息的积压自动扩展,直到达到0x7fffffff。 如果网络对方处理速度比较慢,...
阅读(1382) 评论(0)

Netty的并发编程实践5:不要依赖线程优先级

当有多个线程同时运行的时候,由线程调度器来决定哪些线程运行、哪些等待以及线程切换的时间点,由于各个操作系统的线程调度器实现大相径庭,因此,依赖JDK自带的线程优先级来设置线程优先级策略的方法是错误和非平台可移植的。所以,在任何情况下,程序都不能依赖JDK自带的线程优先级来保证执行顺序、比例和策略。 Netty中默认的线程工厂实现类,开放了包含设置线程优先级字段的构造函数。这是个错误的决定,对于使...
阅读(1105) 评论(0)

Netty的并发编程实践4:线程安全类的应用

在JDK1.5的发行版本中,Java平台新增了java.util.concurrent,这个包中提供了一系列的线程安全集合、容器和线程池,利用这些新的线程安全类可以极大地降低Java多线程编程的难度,提升开发效率。 新的并发编程包中的工具可以分为如下4类。 ◎   线程池Executor Framework以及定时任务相关的类库,包括Timer等。 ◎   并发集合,包括List、Queue...
阅读(1343) 评论(3)

Netty的并发编程实践3:CAS指令和原子类

互斥同步最主要的问题就是进行线程阻塞和唤醒所带来的性能的额外损耗,因此这种同步被称为阻塞同步,它属于一种悲观的并发策略,我们称之为悲观锁。随着硬件和操作系统指令集的发展和优化,产生了非阻塞同步,被称为乐观锁。简单地说,就是先进行操作,操作完成之后再判断操作是否成功,是否有并发问题,如果有则进行失败补偿,如果没有就算操作成功,这样就从根本上避免了同步锁的弊端。 目前,在Java中应用最广泛的非阻塞...
阅读(1085) 评论(0)

Netty的并发编程实践2:volatile的正确使用

长久以来大家对于volatile如何正确使用有很多的争议,既便是一些经验丰富的Java设计师,对于volatile和多线程编程的认识仍然存在误区。其实,volatile的使用非常简单,只要理解了Java的内存模型和多线程编程的基础知识,正确使用volatile是不存在任何问题的。下面我们结合Netty的源码,对volatile的正确使用进行说明。 打开NioEventLoop的代码,我们来看控制...
阅读(1098) 评论(1)

Netty的并发编程实践1:正确使用锁

很多刚接触多线程编程的开发者,虽然意识到了并发访问可变变量需要加锁,但是对于锁的范围、加锁的时机和锁的协同缺乏认识,往往会导致出现一些问题。下面笔者就结合Netty的代码来讲解下这方面的知识。 打开ForkJoinTask,我们学习一些多线程同步和协作方面的技巧。首先是当条件不满足时阻塞某个任务,直到条件满足后再继续执行,代码如图21-4所示。 重点看框线中的代码,首先通过循环检测的方式对状态...
阅读(1044) 评论(0)

为什么选择Netty作为基础通信框架?

在开始之前,我先讲一个亲身经历的故事:曾经有两个项目组同时用到了NIO编程技术,一个项目组选择自己开发NIO服务端,直接使用JDK原生的API,结果两个多月过去了,他们的NIO服务端始终无法稳定,问题频出。由于NIO通信是它们的核心组件之一,因此项目的进度受到了严重的影响。另一个项目组直接使用Netty作为NIO服务端,业务的定制开发工作量非常小,测试表明,功能和性能都完全达标,项目组几乎没有在N...
阅读(5508) 评论(0)

精通Perl(第2版)

精通Perl(第2版)(通往Perl大师之路必读经典书籍,体现了一种编程思维,能够帮你解决很多实际的问题) 【美】brian d foy(布瑞恩·D·福瓦)著   王兴宇 刘宸宇 译 ISBN 978-7-121-25419-2 2015年3月出版 定价:89.00元 424页 16开 编辑推荐 - 探索高级的正则表达式功能 - 如何避免程序的常见安全问题 - 对 ...
阅读(952) 评论(0)

ZeroMQ:云时代极速消息通信库

ZeroMQ:云时代极速消息通信库(大规模|可扩展|低成本|高效率解决之道,大规模分布式|多线程应用程序|消息传递架构构建利器) 【美】Pieter Hintjens(皮特.亨特金斯)著   卢涛 李颖 译 ISBN 978-7-121-25311-9 2015年3月出版 定价:108.00元 536页 16开 编辑推荐 请潜心研究ØMQ(又名ZeroMQ)这个智能套接字库,...
阅读(1782) 评论(0)

深入理解Oracle RAC 12c

深入理解Oracle RAC 12c(顶尖专家权威指南唯一最新版数据库著作 Oracle第一社区技术大牛翻译 Amazon五星推荐) 【美】Syed Jaffar Hussain(赛义德 贾法尔 侯赛因),Tariq Farooq(塔里克 法鲁克),Riyaj Shamsudeen(瑞亚吉沙姆斯丁),Kai Yu(于凯) 著   赵燚 梁涛 程飞 李真旭 译 ISBN 978-7-121...
阅读(4145) 评论(0)
36条 共3页1 2 3 下一页 尾页
    个人资料
    • 访问:3700918次
    • 积分:51213
    • 等级:
    • 排名:第58名
    • 原创:1431篇
    • 转载:83篇
    • 译文:1篇
    • 评论:3255条
    博客专栏
    最新评论