❶ nxt双规打同一个程序程式怎么优化
冗余的变量拷贝
相对C而言,写C++代码经常一不小心就会引入一些临时变量,比如函数实参、函数返回值。在临时变量之外,也会有其他一些情况会带来一些冗余的变量拷贝。
之前针对冗余的变量拷贝问题写过一些帖子,详情请点击这里。
多重过滤
很多服务都会过滤的部分结果的需求,比如游戏交谈中过滤需要过滤掉敏感词。假设现在有两个过滤词典,一个词典A内容较少,另一个词典B内容较多,现在有1000个词需要验证合法性。
词落在词典A中的概率是1%,落在词典B中的概率是10%,而判断词是否落在词典A或B中的操作耗时差不多,记作N。
那么要判断词是否合法,有两种方式:
1. 先判断词是否在A中,如果在返回非法;如果不在再判断是否在B中,如果在返回非法,否则返回合法。
2. 和方式一类似,不过是先判断是否在B中。
现在我们来计算两种方式的耗时:
1. 1000*N+1000*(1-1%)*N
2. 1000*N+1000*(1-10%)*N
很明显,方式二的过滤操作排序优化方式一。
说得有些啰嗦,其实简单点说就是一句话:多重过滤中把强过滤前移;过滤强度差不多时,过滤消耗较小的前移。
如果有些过滤条件较强,但是过滤消耗也较大怎么办?该前移还是后移?个人到没遇到过这种情况,如果确实需要考虑,也可以用之前计算方式一、二整体耗时的方法也计算一遍。
字符数组的初始化
一些情况是:写代码时,很多人为了省事或者说安全起见,每次申请一段内存之后都先全部初始化为0。
另一些情况是:用了一些API,不了解底层实现,把申请的内存全部初始化为0了,比如char buf[1024]=""的方式,有篇帖子写得比较细,请看这里。
上面提到两种内存初始化为0的情况,其实有些时候并不是必须的。比如把char型数组作为string使用的时候只需要初始化第一个元素为0即可,或者把char型数组作为一个buffer使用的大部分时候根本不需要初始化。
频繁的内存申请、释放操作
曾经遇到过一个性能问题是:一个服务在启动了4-5小时之后,性能突然下降。
查看系统状态发现,这时候CPU的sys态比较高,同时又发现系统的minflt值迅速增加,于是怀疑是内存的申请、释放造成的性能下降。
最后定位到是服务的处理线程中,在处理请求时有大量申请和释放内存的操作。定位到原因之后就好办了,直接把临时申请的内存改为线程变量,性能一下子回升了。
能够迅速的怀疑到是临时的内存申请造成的性能下降,还亏之前看过这篇帖子。
至于为什么是4-5小时之后,性能突然下降,则怀疑是内存碎片的问题。
提前计算
这里需要提到的有两类问题:
1. 局部的冗余计算:循环体内的计算提到循环体之前
2. 全局的冗余计算
问题1很简单,大部分人应该都接触到过。有人会问编译器不是对此有对应的优化措施么?对,公共子表达式优化是可以解决一些这个问题。不过实测发现如果循环体内是调用的某个函数,即使这个函数是没有side effect的,编译器也无法针对这种情况进行优化。(我是用gcc 3.4.5测试的,不排除更高版本的gcc或者其他编译器可以针对这种情况进行优化)
对于问题2,我遇到的情况是:服务代码中定义了一个const变量,假设叫做MAX_X,处理请求是,会计算一个pow(MAX_X)用作过滤阈值,而性能分析发现,这个pow操作占了整体系统CPU占用的10%左右。对于这个问题,我的优化方式很简单,直接计算定义一个MAX_X_POW变量用作过滤即可。代码修改2行,性能提升10%。
❷ 百度知道BUG
你好楼主!
这个问题大家都有,网络审核问题。
回答或提问提示通过不一定通过审核了
一般有网址、图片或有敏感字和qq号等联系方式就审核严格!
如果不违规在[我的提问]里没有你的提问或回答,那就有可能是被删除了。
知道原则,以后提问尽量避免违规。
http://www..com/search/_help.html#如何避免问答被删
你可以到“网络知道投诉吧”里去投诉叫管理员给你恢复!
(写清楚提问或者回答的时间、主要内容等)
网站:http://post..com/f?kw=%B0%D9%B6%C8%D6%AA%B5%C0%CD%B6%CB%DF
❸ 微软小冰什么原理
作者:梁川
链接:http://www.hu.com/question/23952075/answer/26243159
来源:知乎
着作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
刚好做过一个类似的产品,虽然没有那么高大上,但一些核心技术原理应该也参考意义,说一下做的思路。
类似小冰这样的产品说简单也简单,说复杂也复杂。单纯从外面看你会觉得小冰与去年人人网上流行的小黄鸡类似,但在技术实现上有本质的差异。
此类应用的大致流程都是:用户输入一段话(不一定只是单词)->后端语义引擎对用户输入的语句进行语义解析->推断用户最可能的意图->调用对应的知识库、应用、计算引擎->返回结果给用户。
1、最初级的实现方法:关键词匹配
建一个关键词词库,对用户输入的语句进行关键词匹配,然后调用对应的知识库。
此种方式入门门槛很低,基本上是个程序员都能实现,例如现在微信公众平台的智能回复、诸多网站的敏感词过滤就是此类。
但此种方式存在诸多问题,例如:
a、由于是关键词匹配,如果用户输入的语句中出现多个关键词,此时由于涉及关键词权重(与知识库的关键词对比)等等问题,此时关键词匹配的方法就不擅长了
b、不存在对用户输入语句语义的理解,导致会出现答非所问的现象。当然在产品上对回答不上的问题就采用卖萌的方式来规避掉。
c、基本上无自学习能力,规则只能完全由人工维护,且规则基本是固定死的。
d、性能、扩展性较差。还是上面的一句话中包含多个关键词的例子,采用普通程序语言来做关键词匹配,性能奇差。即便采用一些文本处理的算法来做(例如Double-array trie tree),也很难满足大规模场景需求。
2、稍微高级点的实现方法:基于搜索引擎、文本挖掘、自然语言处理(NLP)等技术来实现
相对于1的关键词匹配,此种实现方法要解决的核心的问题可以大致理解为:根据一段短文本(例如用户问的一句话)的语义,推测出用户最可能的意图,然后从海量知识库内容中找出相似度最高的结果。
具体技术实现就不细说了。举一个很粗糙的例子来简单说一下此种实现方法处理的思路(不严谨,只是为了说明思路)。
假如用户问:北京后天的温度是多少度?
如果采用纯搜索引擎的思路(基于文本挖掘、NLP的思路不尽相同,但可参考此思路),此时实际流程上分成几步处理:
1、对输入语句分词,得到北京、后天、温度3个关键词。分词时候利用了预先建好的行业词库,“北京”符合预先建好的城市库、“后天”符合日期库、“温度”符合气象库
2、将上述分词结果与规则库按照一定算法做匹配,得出匹配度最高的规则。假定在规则库中有一条天气的规则:城市库+日期库+气象库,从而大致可以推测用户可能想问某个地方某天的天气。
3、对语义做具体解析,知道城市是北京,日期是后天,要获取的知识是天气预报
4、调用第三方的天气接口,例如中国天气网-专业天气预报、气象服务门户 的数据
5、将结果返回给用户
以上例子其实很粗糙,实际上还有诸多问题没提到:语义上下文、语义规则的优先级等等。
例如用户上一句问:北京后天的温度是多少度?下一句问:后天的空气质量呢?这里实际上还涉及语义上下文、用户历史喜好数据等等诸多问题。
此种处理方法存在的最大问题:规则库还主要依赖于人工的建立,虽然有一定的学习能力,但自我学习能力还是较弱。可以借助一些训练算法来完善规则,但效果并不是很好。而这也是目前流行的深度挖掘技术所擅长的。
3、当下时髦且高级的玩法:基于深度挖掘、大数据技术来实现
这是cornata、google now等后端的支撑技术,至于小冰,感觉应该是以2为主+部分领域知识的深度挖掘。
❹ 句易网敏感词过滤教程是怎么样的
这个文案过滤平台筛选敏感词都是实时更新,只要搜索,你就可以准确地审核,整个效率也很高,文本的用户优化,融合你整个的语义去检测,更好的检测出敏感词,让大家的文案都可以更加的安全,软件内的数据样板都是根据大数据来的,整体都是非常的高效率的。
营销推广文案模板也很齐全,不需要充钱也没有门槛限制,多少次都免费,非常方便,新手也可以理解。
有了这个,用户在发布复制时,可以非常方便,直接拷贝在过滤栏,所有敏感词、禁用词都会按字识别,操作不难,可以点击界面直接使用,方便易用。使用过它的抖音用户不再需要担心因为抖音敏感词而被禁。识别优化的文案资源可以。
❺ pytho敏感词过滤的准确性
DFA的算法准确度高,应用最多。
replace就是最简单的字符串替换,当一串字符串中有可能会出现的敏感词时,我们直接使用相应的replace方法用*替换出敏感词即可。正则表达式算是一个不错的匹配方法了,日常的查询中,几乎都会用到正则表达式。
DFA的算法,即DeterministicFiniteAutomaton算法,翻译成中文就是确定有穷自动机算法。它的基本思想是基于状态转移来检索敏感词,只需要扫描一次待检测文本,就能对所有敏感词进行检测。AC自动机需要有前置知识:Trie树,简单介绍:又称前缀树,字典树,是用于快速处理字符串的问题,能做到快速查找到一些字符串上的信息。
❻ 大家说,2012年12月21日 世界末日会发生吗
给你看下我看过的一篇博文~但还是不好判断吧,仅供参考(*^__^*)
明年就是传说中的2012了,据说在2012年12月21日那天,地球会毁灭,毁灭时的场景众说纷纭。
所以我们暂且不论场景,先谈谈这个末日预言是从何而起的吧,据我了解,一共有两种说法:
1. 这是一种流传得最广的说法,相传在2002年,有个细心的西域男青年发现当年的第一场雪比以往时候来得更晚一些。然后这场雪通过蝴蝶效应被放大了1000W倍,导致2012年的地球再次进入了冰川时代,人类惨遭灭绝。
2.这是一种比较小众的说法,流传在一小撮脑残之间。据说有一个叫玛雅的文明孕育了一个叫玛雅的民族,这个叫玛雅的民族用一个叫玛雅的历法预言了2012年的世界末日。
我来给大家分别分析一下这两种说法的可靠性:
关于第一个说法:据我深入而广泛的调查发现,这个所谓的“细心的西域男青年”名叫刀郎,原名罗林,是个深受中老年朋友喜爱的西域歌手,他16岁时初中辍学,便走进了音乐行业。
从此红得一发不可收拾,前几年的时候,每当夜晚有北方的汉子喝醉了开始引吭高歌,多半是吼着的是刀郎的西域情歌。所以这个所谓的西域男青年并不具备任何与天文或者占卜有关的能力。而至于蝴蝶效应,多半用在消极的方面,比如某人做了一个关于天气预报或者地震的模拟系统,结果两月后发现实际情况跟自己的预测结果不一样,他回头思考原因,会发现当时忘了考虑一个因素或者某时突然多了一个微小的干扰因素,而这个微小的干扰原因经过蝴蝶效应的放大,使最终结果远远偏离了预期。还很少听说有谁通过一点点端倪就可以利用蝴蝶效应对未来进行某些预测的。所以第一个说法显然是不成立的。
关于第二个说法:这个预言提到了玛雅文明,这个文明貌似很神秘,无所不能,上知天文下知地理,还貌似有许多与他们有关的惊人巧合。所以今天我来科普科普,让大家对玛雅文明有更多的了解。了解后你会发现,玛雅文明跟我们华夏文明的距离根本不在一个数量级上。
玛雅的天文
这可能是大家听说得最多的地方,据说在天文这一点上,玛雅人比古埃及和古支那人都要发达很多。其中的原因在于,玛雅文明生长的地方叫做尤卡坦半岛,在墨西哥那里,该岛地处“北纬15-20度之间,太阳的高度变化不大,季节更替不明显,尤其是温度差别几乎不存在。如果只看温度的话,尤卡坦半岛常年适合种植庄稼,但每年8-10月是飓风季节,往往一场大飓风就毁掉了所有农作物。这个特点决定了玛雅农民必须掌握年历的计算方法,依靠天象来决定何时播种。” 也就是说,他们天文如果没学好的话,就没粮食吃,所以逼不得已地大力发展了天文。一个整天“仰望星空”的民族,难免会观测点什么金星火星水星的,所以出土的那些玛雅文明有关金星之类的行星的历法,也不足为奇了。
玛雅人的历法是一个月20天的,他们有两套历法,分别规定了农业活动与宗教活动。前者一年有18个月,20*18=360天,其中有5天玛雅人认为不吉利所以不进行计算;后者一年有13个月,合计13*20=260天,据说是因为玛雅人认为一个孕妇的孕期是260天。这两个历法每52年重复一次,由于玛雅人一般活不过52年,所以这两个历法就可以记录一个人的一生了。
而一旦要记录稍长的时间,就会用到一个叫做“长纪年历(Long Count Calendar)”的东西了。“这套历法同样每个月是20天,每年是360天(不算额外那5天)。此后每20年叫做一个Katun,也就是7200天。每400年叫做一个Baktun,也就是144000天。再往后就不乘以20了,而是乘以13,144000X13=1872000天,这个数除以365.25,就得出了5125.25这个数字。换句话说,玛雅人认为世界每隔5125.25年就要重新洗牌一次。
当初发明这套算法的玛雅人随便往前推了一个数字,宣布这就是玛雅文明的起始日(此处Also表示有点不理解)。按照历史学家的换算,这个日子就是公元前3114年的8月11日。这个日子加上5125.25年,就得出了2012年12月21日,这就是2012的由来。”
玛雅的文字
研究玛雅文字的时候学者们用到了“符号的计数”的方法,也就是统计符号的数量和出现频率。“看过福尔摩斯的人肯定记得那个跳舞小人的故事,福老师找到的第一个突破口是认出了英文字母E,因为它出现的次数最多。然后是单词Never,因为英文里只有3个5字母单词的字母E分别位于第二和第四位置。但是玛雅文字的破解可就没这么简单了,因为我们对它的造字规律一无所知,没有任何纯文字的线索。”
如果一种文字有20至30个字符,那么它就是一种拼音文字,类似英文那样的;如果一种文字有80至100个字符,那么就是一种拼音文字,例如汉语拼音就有50个字符左右(ing,eng这些也包含的话);如果一种文字有数百个字符,像我们汉字这样的,就是表意文字了,一个字代表一个意思。
玛雅的字符有800多个,相对于表意文字来说太少,相对于拼音文字来说太多。于是学者们一致认为玛雅文字是一种混合体系,结合了文字符号和语音符号。也就是说,一个字既可能是音也可能是意。韩国和日本就是这么干的。而且最奇怪的是,玛雅的“音”文字很多重复,也就是一个音对应着多个字符,大多数情况下一个音可以找到好几个甚至十几个替换它的字符。这就有点现在的非主流的意思,比如“cao(操)”这个音,玛雅人可以写成cao,caO,cσΟ,cаΟ,cαΟ,сАΟ,cāo,cáo,caō。我可不是在说笑。
有些人会觉得奇怪,为什么玛雅人在发展过程中没有人来简化这些字?或是玛雅政府也进行了敏感词过滤,人们要逃避审查吗?
字的复杂是因为文字在玛雅文明中是贵族才能学习的事物,一般老百姓看待文字甚至还有些神圣的意味。通过文字来区别贵族与老百姓,使得两者在智商和知识上产生巨大差异来稳定统治。同时贵族们利用习得的天文历法进行脑力工作,指导平民们的耕作,换取优越生活。长久以来,他们就这样相偎相依,安安稳稳地过着日子。
站在艺术的角度来看,玛雅文字是很有意思的;而站在实用性的角度来说,玛雅文字是低等的。
玛雅的战争
玛雅人所在的尤卡坦半岛只有广西这么大,却大大小小建立着100多个国家。因为玛雅人驯养潜力的野生动物(个中原因请参考《枪炮病菌与钢铁》,里面有非常绝妙的解释),也缺乏有驯化潜力的野生植物。玛雅人养着狗和火鸡,种着玉米、豆子和青南瓜。这些动物不能帮着打仗和驮运东西,这些植物也不方便携带。所以经常走几步打一打,歇一歇再打一打,打来打去永远都统一不了。
玛雅人之间的战争也是所谓的“礼仪战争”,只有象征性的打仗作用。出征时,只有贵族可以去打,农民必须留在地里耕田。贵族间表示胜利的方式就是俘虏对方的将领。之所以打这种仗,是因为大家都太穷了,如果像当年的支那人那样动不动几万人打仗的话,他们早灭族了。
美洲有三大文明只说,地处墨西哥高原的阿兹泰克文明和地处南美印第安山脉的印加文明,以及夹在他们中间的玛雅文明。除了玛雅文明,这两个文明在西班牙人侵略前都是国王独裁制,所以西班牙人以来就抓他们国王,搞定他们两个国家了。而对于玛雅文明这样的游击队文明,西班牙人只能慢慢地赶尽杀绝。
玛雅的宗教
“玛雅宗教是多神的,崇拜大量自然神,从太阳月亮到风雷云雨都被视为天神,活人祭祀现象非常普遍,这是一个极度靠天吃饭的原始民族必然出现的结果。”同其他古代的宗教一样,玛雅宗教也喜欢祭祀。当玛雅文字还未被翻译的时候,玛雅文字研究界的权威Thompson认为玛雅人的文字记载都是些关于天文和历法的内容,认为玛雅人文明程度较高,热爱和平。而当破译工作向前进行后,才发现很多石碑上都记载了大量的祭祀活动。比如这幅石碑,画的是一个贵妇先刺穿自己的舌头,然后再用一根绳子穿过自己的舌头,
接着用沾满自己鲜血的纸在陶碗中燃烧,
接着在袅袅而起的烟雾构成了一条蛇的幻想,蛇口中浮现出了一位先祖的面容。
–
再比如这幅很出名的图(以前我经常在所谓XXX未解之谜看到),画的好像是一个玛雅人在开飞机。
而其实原图是竖着的,画的是“Pakal死后重生的情形,他身下是地狱,身上长出来的是“生命树”,玛雅人认为地球上的所有生命都是“生命树”从地下带上来的。”
\\\\\\\\\\\\\\\\\\
关于玛雅人的经济农业之类的就没有什么好介绍了,这与笔者要讨论的主题无关。
通过上面的介绍,大家应该都对刀郎和玛雅文明有了个大概的了解了吧?
聪明的人用脑子一想就知道,一个初中没毕业的唱歌小伙和一个尚未开化的愚昧民族,如何决定得了世界末日呢?
❼ 微软小冰的工作原理。
微疯客小编为你回答,
类似小冰这样的产品说简单也简单,说复杂也复杂。单纯从外面看你会觉得小冰与去年人人网上流行的小黄鸡类似,但在技术实现上有本质的差异。
此类应用的大致流程都是:用户输入一段话(不一定只是单词)->后端语义引擎对用户输入的语句进行语义解析->推断用户最可能的意图->调用对应的知识库、应用、计算引擎->返回结果给用户。
1、最初级的实现方法:关键词匹配
建一个关键词词库,对用户输入的语句进行关键词匹配,然后调用对应的知识库。
此种方式入门门槛很低,基本上是个程序员都能实现,例如现在微信公众平台的智能回复、诸多网站的敏感词过滤就是此类。
但此种方式存在诸多问题,例如:
a、由于是关键词匹配,如果用户输入的语句中出现多个关键词,此时由于涉及关键词权重(与知识库的关键词对比)等等问题,此时关键词匹配的方法就不擅长了
b、不存在对用户输入语句语义的理解,导致会出现答非所问的现象。当然在产品上对回答不上的问题就采用卖萌的方式来规避掉。
c、基本上无自学习能力,规则只能完全由人工维护,且规则基本是固定死的。
d、性能、扩展性较差。还是上面的一句话中包含多个关键词的例子,采用普通程序语言来做关键词匹配,性能奇差。即便采用一些文本处理的算法来做(例如Double-array trie tree),也很难满足大规模场景需求。
2、稍微高级点的实现方法:基于搜索引擎、文本挖掘、自然语言处理(NLP)等技术来实现
相对于1的关键词匹配,此种实现方法要解决的核心的问题可以大致理解为:根据一段短文本(例如用户问的一句话)的语义,推测出用户最可能的意图,然后从海量知识库内容中找出相似度最高的结果。
具体技术实现就不细说了。举一个很粗糙的例子来简单说一下此种实现方法处理的思路(不严谨,只是为了说明思路)。
假如用户问:北京后天的温度是多少度?
如果采用纯搜索引擎的思路(基于文本挖掘、NLP的思路不尽相同,但可参考此思路),此时实际流程上分成几步处理:
1、对输入语句分词,得到北京、后天、温度3个关键词。分词时候利用了预先建好的行业词库,“北京”符合预先建好的城市库、“后天”符合日期库、“温度”符合气象库
2、将上述分词结果与规则库按照一定算法做匹配,得出匹配度最高的规则。假定在规则库中有一条天气的规则:城市库+日期库+气象库,从而大致可以推测用户可能想问某个地方某天的天气。
3、对语义做具体解析,知道城市是北京,日期是后天,要获取的知识是天气预报
4、调用第三方的天气接口,例如中国天气网-专业天气预报、气象服务门户 的数据
5、将结果返回给用户
以上例子其实很粗糙,实际上还有诸多问题没提到:语义上下文、语义规则的优先级等等。
例如用户上一句问:北京后天的温度是多少度?下一句问:后天的空气质量呢?这里实际上还涉及语义上下文、用户历史喜好数据等等诸多问题。
此种处理方法存在的最大问题:规则库还主要依赖于人工的建立,虽然有一定的学习能力,但自我学习能力还是较弱。可以借助一些训练算法来完善规则,但效果并不是很好。而这也是目前流行的深度挖掘技术所擅长的。
3、当下时髦且高级的玩法:基于深度挖掘、大数据技术来实现
这是cornata、google now等后端的支撑技术,至于小冰,感觉应该是以2为主+部分领域知识的深度挖掘。
并非原创,转自 hu。