深入浅出搜索原理系列之(二)查询构建

上篇文章中我们了解了一个完整搜索系统的基本构建和运作流程,去掉细节不谈,最重要的两步就是:构建索引 和 执行查询。而本篇文章里我们比较系统的了解下查询的一些常用方法,及背后的大概原理。

从一个搜索系统用户的角度出来,打交道最多的就是查询。说到查询,大部分人觉得没什么,无非就是输入关键词并希望系统返回具有相关性的结果。一个查询系统其实提供了很多丰富的查询方式供我们使用,而我们大多数情况下只使用一些最基本的查询方法。这里以 Google 为例,查看它的帮助文档,发现查询本身也是一门技术活,了解更多的查询方法,可以帮助我们提高查询返回的准确率且平衡好召回率。

阅读全文

js设计模式系列之(三)命令模式

命令模式

望文生义,所谓的命令模式其实就是:
发出一定的指令,然后由对象接受并且执行

需要强调一点,就是对于命令的发出者来说,他并不知道该命令是给谁,执行效果是怎样,他只管发出命令就行。听到这里感觉和发布订阅者模式有异曲同工的效果。 但事实上,他们两者应用的场景还是有比较大的区分。不仅写法上有不同,而且执行的过程也有所不同。要知道在命令模式里面执行的效果是1对1,而在订阅者模式里面是1对>=1的.

你在逼逼什么?

哦,说明白一点。 就和上课一样。 老师进教室了,首先说:“上课!”. 接着,你们的monitor 会立马接上: “起立!”。 然后,你们就会异口同声的说:”老湿好~”。 没错,分析一下。 当老师说上课的时候,他并不会知道谁会说起立,比如今天班长谈恋爱去了,那副班长顶上。 而且,说完起立之后,副班长也不知道谁会说老湿好。 也就是命令的发出者,只管发出一个命令,然后你们只管执行就over了.

阅读全文

js设计模式系列之(二)订阅发布模式

订阅发布模式如果按数学翻译其实就是,一对多的映射关系。怎么解释呢? 就是一个开关,同时并联几个灯泡(在不同房间),触发的时候,几个灯泡都会得到指令,然后执行发光的行为。首先,这几个灯泡,并不知道我和哪些灯泡连在一起(其实,也不用知道),只需要你给一个按下开关的指令就over了。
懂么? 不懂~
行,大爷,我这还有一个栗子==>《收音机和电台的午夜故事》
午夜时分,电台正发送着无线电波(触发事件), 这时候小明,打开了收音机,拨到固定的频率(订阅事件), 突然,电台里响起了18岁少女般的声音(触发事件). 此时此刻,还有无数和小明一样,使用着收音机收听的人,但是他们之间相互都不认识。 只是他们都在听一个电台.

阅读全文

js设计模式系列之(一)请节约你的请求-代理模式

What’s the proxy pattern?

代理模式其实就是将违反单一性原则的类给抽离出来,尽量满足开放和封闭的原则。 相当于一个类的行为只是一种,但是你可以给这个类添加额外的行为。比如: 一个工厂制造伞,你可以给这个工厂设置一个代理,提供订单,运货,淘宝网店等多种行为。当然,里面还有最关键的一点就是,这个代理能把一些骗纸和忽悠都过滤掉,将最真实最直接的订单给工厂,让工厂能够放心的让工人加班,顺利的发年终奖.
!!!说人话:
就是将你的本体请求,放在代理的怀抱里,让他来帮你挡风挡雨。

阅读全文

猫队长读书系列之运营篇

在知识爆炸的互联网时代,精华内容是非常有价值的,猫队长花在阅读上的时间不少,所以想把最近半年的一些阅读做一些梳理,同时加上自己的一些理解,预计会有运营篇,产品篇,技术篇,创业篇,团队篇和神秘篇。之所以会从运营篇开始,是因为最近在这块花的学习时间较多。

为什么会有想法写这个系列? 纯粹的梳理会不会有拾人牙慧的感觉?最终决定写是因为被下面这段话打动.

既然觉得有用,那就开始吧.

阅读全文

分布式存储产品的测试实践及心得

背景介绍

这几年我一直从事分布式存储产品的测试开发工作,伴随着产品的第一次上线,第一次升级,一直到今天。期间参与发布了无数个版本,支持着海量的用户对我们存储产品的需求。
想写一篇文章,总结下自己的工作,记录工作中的一些心得。
如果有人能从中获得一些启发或者收获,那将是我莫大的荣幸。

主要讲几个方面:

  • 测试角色在整个分布式存储产品发展过程中的变化
  • 分布式存储产品的测试实践
  • 测试实践碰到的问题
  • 一点心得

阅读全文

猫友会大讲坛第1期 - 基于iOS逆向工程的微信机器人

猫友会大讲坛

猫友会大讲坛是“猫友会”开设的一个知识分享栏目,”知识分享,是能力的锻炼,双方都会有收获。只要真诚,只要是自己觉得好的东西,都可以来分享”,

所以欢迎大家踊跃报名,不限主题。

  • 本期内容:结合一个iOS微信机器人的实现,介绍iOS逆向工程相关的概念,工具等。
  • 策划:侠天
  • 编辑:刘子洋

“猫友会” 是什么?参看文章末的公众号.

阅读全文

大数据系列之(一) Streaming模式基础知识

译者摘要

现在大数据,云计算已经成为互联网的标配,但是现在主流的大数据处理依旧是使用batch模式,batch模式就是将数据按某种规则分成块,然后对整个块跑计算逻辑,缺点是延迟太高(至少是分钟),常用的工具就是Hadoop。在日益变化的需求面前,高延迟越来越不能忍受,因此Streaming模式应运而生,他最大的特点就是低延迟,最快能到毫秒级别,常用的Streaming工具主要是storm,spark等,但是这些工具都有各自的优缺点,功能上不能完全取代batch,这篇文章就是想深入分析什么样的Streaming系统能彻底替代batch,并最终打败batch。

阅读全文

游戏开发之状态机的实现与优化

引言

你是否还在面对乱作一团的代码束手无策?你是否仍然觉得复杂的逻辑无从下手?你是否觉得游戏AI高端得毫无头绪?本文将以一个复杂的弹窗逻辑和RPG游戏挂机AI的实现为案例,讲述状态机的概念及其写法。

本文分为以下部分:

  • 有限状态机(finite-state machine):对状态机一些概念的解释。
  • 案例对照:将一个复杂弹窗的普通写法和状态机编程两种实现进行对比。这里状态机的实现是多个if-else的最简单的状态机实现。
  • 有限状态机的优势:通过上面的对比总结状态机的优势。
  • 如何优雅地使用状态机:以游戏挂机自动刷怪的AI为例,提供状态模式的代码实现。
  • 状态机的使用场景:对状态机的使用做了一些扩充。
  • 总结:对本文内容的总结。
  • 参考资料:文中部分概念的来源以及扩展阅读的链接。

阅读全文

游戏服务器的安全性问题(一)

游戏服务器在设计和实现上的安全性问题主要可以分为以下几个大类:

  • 协议安全
  • 流程安全
  • 数据存储安全

需要注意的是,安全性和效率以及流程的复杂程度往往是对立的,越是安全的系统,流程越是复杂,效率也越低。我们在游戏的开发过程中需要做出折中的选择,达到安全性和效率的平衡。

协议安全
协议安全所指的是网络数据包的安全,通常意义上讲就是指网络数据包的加密和解密,由于网络数据包传输频繁,如果使用复杂的加解密技术将会带来巨大的CPU开销,另外由于客户端程序内存有数据包加密和解密的完整代码,因此无论多复杂的加解密算法都不能阻止破解数据包事件的发生。建议对于游戏中的一般网络包不需要进行复杂的加解密过程,只对数据包进行简单编码或者不加密也是可以接受的。

阅读全文

本站总访问量