![](https://img-blog.csdnimg.cn/20190830233926593.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法高级
文章平均质量分 70
十步杀一人_千里不留行
当你还不能写出自己满意的程序时,你就不要去睡觉。
展开
-
数据按半小时统计显示
List<Chart> charts = new ArrayList<>(); SimpleDateFormat format = newSimpleDateFormat("yyyy-MM-dd HH:mm:ss"); charts.add(new Chart(format.parse("2020-01-01 01:10:00"), 2d)); charts.add(new Chart(format.parse("2020-01-01.原创 2021-05-25 10:57:33 · 291 阅读 · 0 评论 -
计数排序
public static void main(String[] args) { // TODO Auto-generated method stub int[] arr= {72,6,57,88,60,42,83,73,48,85}; countSort(arr); System.out.println(Arrays.toString(arr));}pub...原创 2019-11-08 18:46:43 · 386 阅读 · 0 评论 -
算法高级(37)-微信、微博中的好友关系该如何设计?
一、引言大家都用过各种各样的社交软件,像国人用的最多的就是QQ、微信、微博等,国外用的多的就是推特、脸书等,这些社交软件都是建立在人与人相互之间关系的基础上。做过类似项目的同学,应该知道此类项目中好友之间的关系设计比较复杂,如果用传统的关系型数据库来设计,比如MySQL,那好友之间的关系需要用一张中间表来表示,如下表所示:user_id follow_id 1 5 ...原创 2019-09-24 11:28:38 · 2513 阅读 · 0 评论 -
算法高级(36)-如何利用并行提高算法的执行效率?
前面我们学习了那么多的算法,大家也知道,算法的目的是为了解决实际问题的。但我们也看到,对于同一个问题,我们可以用不同的算法来解决。而因为时间和空间复杂度的问题,不同的算法执行的效率差距还是比较大的。我们学习算法,当然是希望能找到一种最高效的算法。那么,我们思考一个问题,如果一个问题已经用一个很精妙的算法解决了,但还想进一步、大幅度提高效率,这有可能吗?我们可以考虑更优秀的算法来实现,但如果...原创 2019-09-23 21:54:51 · 1583 阅读 · 0 评论 -
算法高级(35)-最优路径选择-导航软件是怎么选择最佳路线的?
前面我们学习了图算法中的最短路径算法,可以参考我的这篇博文常用的图算法:最短路径(Shortest Path),解决最短路的问题有以下算法,Dijkstra算法,Bellman-Ford算法,Floyd算法和SPFA算法等。简单回顾如下:Dijkstra最短路径算法是基于递推的思想设计的未达顶点的最短路径一定是由已达顶点的最短路径求出。 Floyd最短路径算法只是Dijkstra最短路径算法...原创 2019-09-22 22:26:03 · 15300 阅读 · 1 评论 -
算法高级(34)-搜索引擎速度快的秘诀-倒排索引介绍
对于数据库查询来说,大家都知道,模糊查询比较耗时,即使建立索引,查起来也不快,而像百度、谷歌这样的搜索引擎,基本上也是模糊查询,而且响应速度特别快,这是为什么呢?其实里面有个很重要的因素,就是使用了倒排索引,这极大地提高了查询效率。而一切的设计都是为了提高搜索的速度。一、倒排索引和正排索引倒排索引(Inverted Index)也叫反向索引,有反向索引必有正向索引。通俗地来讲,正向索引是通...原创 2019-09-21 20:41:48 · 1607 阅读 · 0 评论 -
算法高级(33)-拓扑排序-maven依赖关系的确定
一、拓扑排序(Topological Sorting)1.定义拓扑排序是一种图论算法,该算法在《数据结构与算法》一书中有涉猎。引用维基百科的定义:在图论中,由一个有向无环图的顶点组成的序列,当且仅当满足下列条件时,称为该图的一个拓扑排序(英语:Topological sorting)。每个顶点出现且只出现一次; 若A在序列中排在B的前面,则在图中不存在从B到A的路径。2.AOV网...原创 2019-09-21 09:44:23 · 936 阅读 · 0 评论 -
算法高级(32)-搜索引擎中的自动补全功能该如何实现?
前一章讲了搜索中的拼写纠错功能,里面一个很重要的概念就是莱文斯坦距离。这章会讲解搜索中提升用户体验的另一项功能-自动补全。本章直接介绍ES中的实现方式以及真正的搜索引擎对自动补全功能的优化。大家对上面的这个应该都不陌生,搜索引擎会根据你输入的关键字进行一些提示,这样用户只需要输入部分内容就可以进行选择了。尤其在移动端会比较方便。淘宝、京东的搜索也有类似的功能,只不过行业不同,提示出来的内容...原创 2019-09-21 09:38:26 · 5747 阅读 · 0 评论 -
算法高级(31)-搜索引擎中的拼写纠错功能该如何实现?
一、Word中的拼写检查功能拼写检查程序是指将输入的每个字词与存储器里的字典比较,检查其正确性并在屏幕上显示差异的计算机程序。如果在字典中没有这个单词,用户就会被警告可能拼写错误,同时经常提供几个纠正错误建议。拼写检查程序不能识别不常用的人或专用术语,但是它容许你生成自己的个人字典,把自己常用的词语加进去。二、拼写纠错功能的实现在使用搜索引擎时,当我们输入错误的关键词时,当然这里的错误...原创 2019-09-18 23:24:25 · 3522 阅读 · 0 评论 -
算法高级(30)-外卖凑单算法-为什么每次点外卖你怎么都凑不够那碗卤肉饭呢?
一、前言本文部分内容引用自beebee星球的为了外卖凑满减,我报了个会计培训班 ,特此申明。beebee是我最爱的公号之一。beebee讲,人这一生只有两件事是无法避免的,一件事是死亡,另一件是外卖凑满减。死亡意味着你存在的终结,凑满减则是你生活的开始。一个人是否成年不是看身份证上的数字,而是看他是不是每天都埋着头凑满减。凑满减,跟双11使用各种优惠券一样,都是一门玄学。商...原创 2019-09-18 22:57:20 · 3590 阅读 · 0 评论 -
算法高级(28)-递归、分治、动态规划、贪心、回溯、分支限界几大相似算法比较
在学习算法的过程中,递归、分治、动态规划、贪心、回溯、分支限界这些算法有些类似,都是为了解决大问题,都是把大问题拆分成小问题来解决,但她们之间还是有一些不同之处的,我来给同学们整理一下。一、算法思想1.递归算法(recursion algorithm)大师 L. Peter Deutsch 说过:To Iterate is Human, to Recurse, Divine.中文译为:...原创 2019-09-17 22:22:54 · 3181 阅读 · 1 评论 -
算法高级(29)-电影《源代码》中蕴含的回溯算法介绍
一、从两部电影说开来1.电影《蝴蝶效应》剧情简介伊万(艾什顿·库奇 Ashton Kutcher 饰)曾经有一个糟糕的童年,因为他行为闯下了大祸,令他童年充满不堪回忆的往事。而事实上,他确实只是依稀记得一点可怕的情景,这些情景一直纠缠着他的正常生活。伊万接受心理学家建议,把琐碎生活记在记事本里,却偶然发现通过记事本回到过去。这时他才清楚记起,童年时候的自己做了那么多的错事。他幻想着用...原创 2019-09-17 22:26:30 · 2247 阅读 · 0 评论 -
算法高级(38)-短网址(short URL)系统如何实现?
一、什么是短网址?我们的URL地址常常会因为需要携带各式各样的参数,或者随着业务增长,变得越来越长。对于用户而言,过长的链接体验必然是不好的。这时候短网址就应用而生了,也称为短链接。短网址,就是把普通网址,就是将长的URL网址,通过程序计算等方式,转换成比较短的网址。比如:http://t.cn/RlB2PdD这种,在短信、微博、推特这种限制字数的应用里,好处不言而喻。短、字符少、美观、...原创 2019-09-24 17:42:45 · 2216 阅读 · 0 评论 -
算法高级(39)-坐电梯时情不自禁想起的电梯调度算法实现原理
一、引言现代社会中,不管你是在北上广、北海道、新加坡,或者是三四五六七八线的小城市,凡是有点规模的地方,高楼大厦都是比比皆是的。而在上下楼的时候,不可避免的会跟电梯打交道。而一般情况你也很少能心平气和地等电梯,尤其是在赶时间的时候。每天早上,那些还差5分钟就要迟到的程序员朋友们,在等电梯时,一般都会做两件事:在心里不停骂电梯慢。 在心里暗算着电梯调度该如何优化。前者可能是写字楼里上...原创 2019-09-24 23:39:47 · 5832 阅读 · 1 评论 -
算法高级(47)-AI现在都可以写代码了-辅助编程
一、AutoMLAutoML 是谷歌的一个能够制造子 AI 的 AI 系统。2017 年 5 月,谷歌大脑研究人员宣布创建了 AutoML,该 AI 系统能够创造自己的 AI 系统。最近,他们决定让 AutoML 攻克迄今为止对它来说最大的挑战,令人惊讶的是,AutoML 创造了一个非常厉害的「后代」,它的表现甚至超过了所有人类设计的 AI 系统。Google AutoML 系统自主编...原创 2019-09-29 23:50:42 · 1947 阅读 · 0 评论 -
算法高级(46)-波士顿动力机器人ATLAS
一、引言如果说阿尔法狗是对人类智力的碾压,那么,波士顿动力研发的机器人,正在挑战的是仿生学。波士顿动力公司(Boston Dynamics)一致在专注于机器人的研发,每一次波士顿动力放出视频都会引起网友的围观惊叹,包括机器狗开门,户外慢跑跨越障碍,爬楼梯、避让行人、判断路径等都不在话下。旗下ATLAS的表现无疑震惊了不少人,功能型人型机器人能够在各种情况下保持身体的稳定性,这对于人型...原创 2019-09-29 23:22:30 · 6891 阅读 · 0 评论 -
算法高级(45)-阿尔法狗到底有多厉害?
1997年5月11日,一台名为“深蓝”的超级电脑将棋盘上的一个兵走到C4位置时,人类有史以来最伟大的国际象棋名家卡斯帕罗夫不得不沮丧地承认自己输了。世纪末的一场人机大战终于以计算机的微弱优势取胜。当然,国际象棋这样的棋类比赛,计算机是可以依靠棋谱来穷尽所有可能后续步数的,所以他能击败人类我们可以认为还是穷举法。但是,人类依然有一个尊严般的领域,那就是落子变化超过宇宙原子总数的围棋。因为其超大的...原创 2019-09-29 22:48:27 · 10268 阅读 · 0 评论 -
史上最后一位数学全才——庞加莱
来源:高数网谈起庞加莱,大部分数学家都会马上想起一个著名的评价:庞加莱是最后一个数学全才,即指其为最后一个在数学所有分支领域都造诣深厚的数学家。同样著名的还有庞加莱本人的一句名言:数学家是天生的,而不是造就的。在庞加莱之前,最近一个被称为数学全才的数学家是高斯(Gauss)。除了是一名数学家之外,庞加莱还是一位影响深远的物理学家,受惠于他的后人中包括当时正致力于完善狭义...原创 2019-09-29 09:28:58 · 14082 阅读 · 5 评论 -
算法高级(44)-人脸识别:张学友的演唱会咋成了逃犯克星了呢?
最近,网络上流传着一个说法——“风调雨顺萧敬腾,国泰民安张学友”,横批是:萧张至极”。据统计,在张学友演唱会上,已经是第7次有罪犯被抓到,包括被抓现行的和全国在逃人员。也因此,歌神被警方亲切地称为“罪犯克星”。可以说,“逃犯克星”张学友背后,人工智能加持的人脸识别立了不少功劳。如今,AI的人脸识别技术近年来发展很快,在公共安全领域,通过技术手段在嫌疑人出现在监控范围后,可在第一时间精确识别...原创 2019-09-28 13:12:51 · 1277 阅读 · 0 评论 -
算法高级(48)-数据挖掘十大算法简介
朴素贝叶斯 决策树 逻辑(Logistic)回归 线性回归 KNN算法(最邻近算法) SVM 聚类算法 Apriori算法(频繁项挖掘算法) EM(最大期望算法) 分类回归算法我的微信公众号:架构真经(id:gentoo666),分享Java干货,高并发编程,热门技术教程,微服务及分布式技术,架构设计,区块链技术,人工智能,大数据,Java面试题,以及前沿热门资讯等。每日更新哦...原创 2019-09-28 13:08:37 · 883 阅读 · 0 评论 -
算法高级(43)-过滤垃圾邮件、短信?-朴素贝叶斯算法
一、算法介绍朴素贝叶斯算法,简称NB算法,是贝叶斯决策理论的一部分,是基于贝叶斯定理与特征条件独立假设的分类方法。两个重要概念:先验概率是指根据以往经验和分析得到的概率,它往往作为“由因求果”问题中的“因”出现。是我们在未知条件下对事件发生可能性猜测的数学表示; 后验概率是指在得到“结果”的信息后重新修正的概率,是“执果寻因”问题中的“因” 。事情已经发生,要求这件事情发生的原因是由...原创 2019-09-28 13:05:19 · 1873 阅读 · 1 评论 -
算法高级(42)-大数定律-澳门皇家菠菜,为什么你逢赌必输?
一、明知道去澳门赌钱十赌九输,为什么还有人会去赌?赌博坏处在哪里,我想赌博的人都有点明白,劳财伤身,蚀财呕气!古人云,君子不博!意思是说,正人君子是绝不会去赌博的。从媒体报道,我们都知道赌博百害无一利,为什么还要去赌呢? 首先,因为他们有过赢钱的经历!并且忘不掉自己曾经那些辉煌的经历!因为他们的亲身经历告诉他们,在澳门,是能够赢到大钱的!最关键的是,你在澳门赢到大钱后能否就此罢手,再...原创 2019-09-26 22:20:42 · 12734 阅读 · 0 评论 -
算法高级(41)-推荐算法实现
一、推荐系统【维基百科】推荐系统是一种信息过滤系统,用于预测用户对物品的“评分”或“偏好”。推荐系统近年来非常流行,应用于各行各业。推荐的对象包括:电影、音乐、新闻、书籍、学术论文、搜索查询、分众分类、以及其他产品。也有一些推荐系统专门为寻找专家、合作者、笑话、餐厅、美食、金融服务、生命保险、网络交友,以及Twitter页面设计。很多时候简单粗暴的方式往往也是行之有效的:“如果你不知道...原创 2019-09-25 17:26:10 · 2380 阅读 · 0 评论 -
算法高级(40)-基于分治算法完美解决的人类基因组计划
一、人类基因组计划人类基因组计划(英语:Human Genome Project, HGP)是一项规模宏大,跨国跨学科的科学探索工程。其宗旨在于测定组成人类染色体(指单倍体)中所包含的30亿个碱基对组成的核苷酸序列,从而绘制人类基因组图谱,并且辨识其载有的基因及其序列,达到破译人类遗传信息的最终目的。“人类基因组计划”在研究人类过程中建立起来的策略、思想与技术,构成了生命科学领域新的学...原创 2019-09-25 14:51:06 · 1032 阅读 · 0 评论 -
算法高级(27)-分治算法在大数据领域中的运用
程序员的算法课(13)-分治法一、分治算法回顾分治算法一般都比较适合用递归来实现,分治算法的递归实现中,每一层递归都会涉及这样三个操作:分解:将原问题分解成一系列子问题 解决:递归地求解各个子问题,若问题足够小,则直接求解 合并:将子问题的结果合并成原问题分治算法能解决的问题,一般需要满足下面的这几个条件:原问题与分解的小问题具有相同的模式 原问题分解成的子问题可以独立求解...原创 2019-09-16 23:21:39 · 1614 阅读 · 0 评论 -
算法高级(26)-在Java8中为什么要使用红黑树来实现的HashMap?
一、前言在jdk1.8版本后,Java对HashMap做了改进,在链表长度大于8的时候,将后面的数据存在红黑树中,以加快检索速度。二、红黑树回顾红黑树的英文是“Red-Black Tree",简称R-B Tree。它是一种不严格的平衡二叉查找树,我前面说了,它的定义是不严格符合平衡二叉查找树的定义的。那红黑树空间是怎么定义的呢?顾名思义,红黑树中的节点,一类被标记为黑色,一类被标记...原创 2019-09-16 23:04:18 · 5145 阅读 · 1 评论 -
算法高级(25)-分布式TopN算法玄机
面试题:请问,某视频点播网站,希望实时展现热门视频,比如近8小时点击量最大的前100个视频。如果由你来开发这个功能,你怎么做?一、思路分析看到这样的一个问题,估计同学们会说,很简单呀,用Redis的SortedSet搞定啊,Score计数,Key是视频ID,不就OK了吗?回答到这一步,只能说你回答的不错,下一位。too young too simple呀兄弟。要听清楚题目,有8小时...原创 2019-09-16 22:46:17 · 1414 阅读 · 1 评论 -
算法高级(11)-缓存淘汰算法研究
缓存是一个计算机思维,对于重复的计算,缓存其结果,下次再算这个任务的时候,不去真正的计算,而是直接返回结果,能加快处理速度。当然有些会随时间改变的东西,缓存会失效,得重新计算。一、缓存淘汰算法定义缓存算法是指令的一个明细表,用于决定缓存系统中哪些数据应该被删去。常见类型包括LFU、LRU、ARC、FIFO、MRU。二、最不经常使用算法(LFU-Least Frequently Us...原创 2019-09-05 22:22:36 · 1266 阅读 · 4 评论 -
算法高级(10)-如何实现浏览器的前进、后退功能
一、引言我们浏览网页,会发现“前进”和“后退”是 Web 浏览器的常用功能,实现该功能的一种方式是使用两个栈(backward 栈和forward 栈)来存储用户访问的网址,用户的不同操作对应的具体实现方法如下:后退(BACK):如果backward 栈为空,则该命令被忽略。否则,将当前页面压入forward栈,并从backward 栈中弹出一个页面作为当前页面。 前进(FORWARD)...原创 2019-09-03 23:38:04 · 2994 阅读 · 1 评论 -
算法高级(9)-线程池的实现方式
电脑的CPU资源是有限的,任务的处理速度与线程数量之间并不是正相关。当线程数量过多,CPU要频繁的在不同线程切换,反而会引起处理性能的下降。线程池中最大的线程数,是考虑多种因素来事先设定的,比如硬件的条件,业务的类型等等。当我们向一个固定大小的的线程池中请求一个线程时,当线程池中没有空闲资源了,这个时候线程池如何处理这个请求?是拒绝请求还是排队请求?各种策略又是如何实现的呢?实际上,这些问...原创 2019-09-03 22:53:25 · 1098 阅读 · 0 评论 -
算法高级(8)-Hystrix实现熔断、限流与服务保护中的算法详解
上一章讲了常见的限流算法,本章我们来看看,Spring Cloud中的Hystrix组件在对请求进行熔断、限流与服务保护操作时的算法实践。一、雪崩分布式系统环境下,服务间依赖非常常见,一个业务调用通常依赖多个基础服务。对于同步调用,当某服务不可用时,服务请求线程被阻塞,当有大批量请求调用该不可用服务时,最终可能导致整个系统服务资源耗尽,无法继续对外提供服务。并且这种不可用会沿请求调用链向上...原创 2019-09-02 23:27:41 · 9227 阅读 · 1 评论 -
算法高级(7)-限流(Rate limit)算法详解
一、前言保障服务稳定的三大利器:熔断降级、服务限流和故障模拟。今天和大家谈谈限流算法的几种实现方式,本文所说的限流并非是Nginx层面的限流,而是业务代码中的逻辑限流。那么为什么需要限流呢?按照服务的调用方,可以分为以下几种类型服务1、与用户打交道的服务比如web服务、对外API,这种类型的服务有以下几种可能导致机器被拖垮:用户增长过快(这是好事) 因为某个热点事件(微博...原创 2019-09-02 00:31:41 · 7527 阅读 · 3 评论 -
算法高级(6)-共识(Raft)算法
一、引言鉴于Paxos算法的难于理解。Raft算法的两位研究者也提到,他们花了很长的时间来理解Paxos,也觉得很难理解,于是研究出了Raft算法。Raft是一个共识算法(consensus algorithm),所谓共识,就是多个节点对某个事情达成一致的看法,即使是在部分节点故障、网络延时、网络分割的情况下。这些年最为火热的加密货币(比特币、区块链)就需要共识算法,而在分布式系统中,共识算法...原创 2019-10-09 21:23:17 · 1481 阅读 · 1 评论 -
算法高级(5)-分布式系统选举算法及脑裂
一、选举算法定义分布式中有这么一个疑难问题,客户端向一个分布式集群的服务端发出一系列更新数据的消息,由于分布式集群中的各个服务端节点是互为同步数据的,所以运行完客户端这系列消息指令后各服务端节点的数据应该是一致的,但由于网络或其他原因,各个服务端节点接收到消息的序列可能不一致,最后导致各节点的数据不一致。要确保数据一致,需要选举算法的支撑,这就引申出了今天我们要讨论的题目,关于选举算法的原理解...原创 2019-09-02 00:06:41 · 4784 阅读 · 0 评论 -
算法高级(4)-遗传算法(Genetic Algorithm)简介
01 什么是遗传算法?1.1 遗传算法的科学定义遗传算法(Genetic Algorithm, GA)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。其主要特点是直接对结构对象进行操作,不存在求导和函数连续性的限定;具有内在的隐并行性和更好的全局寻优能力;采用概率化的寻优方法,不需要确定的规则就能自动获取和指导优化的搜索...转载 2019-08-30 23:38:37 · 2140 阅读 · 0 评论 -
算法高级(3)-那个神奇的微软小冰,她为啥那么聪明?
最近给自己的公号接入了“微软小冰”自动回复这个人工智障,也有很多粉丝会在后台跟她留言互动,有时候,你会觉得她回复的真的挺像个人类的。但是当你带着她就是个机器人的主见跟她聊的时候,明显感觉她还差得远。今天就来聊聊这个还不能称之为人的小冰吧。【小冰,微软人工智能框架少女,东方卫视主播,央美毕业生】一、微软小冰在中国的前世今生“微软小冰”是微软(亚洲)互联网工程院基于2014年提出建...原创 2019-08-30 22:42:20 · 6192 阅读 · 0 评论 -
算法高级(2)-多年以前的电脑算命是怎么回事?
“电脑算命”看起来挺玄乎,只要你报出自己出生的年、月、日和性别,一按按键,屏幕上就会出现所谓性格、命运的句子,据说这就是你的“命”。一、官方定义【百度百科】电脑算命,即在电脑上用软件算命。网站用专业的命理知识编写特定的批语做成程序,并把这些批语和不同的出生时间进行匹配,匹配完毕后,形成一个系统,把这个制作好的程序系统挂在网站上,就可以供到访的网友使用了。网友在使用这些主流电脑程序算命的时候...原创 2019-08-30 21:13:39 · 2039 阅读 · 1 评论 -
算法高级(12)-分布式系统常见负载均衡算法
负载均衡这个话题比较大,一篇估计说不完,今天先来第一篇。一、负载均衡介绍【百度百科】负载均衡,英文名称为Load Balance,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,例如FTP服务器、Web服务器、企业核心应用服务器和其它主要任务服务器等,从而协同完成工作任务。负载均衡构建在原有网络结构之上,它提供了一种透明且廉价有效的方法扩展服务器和网络设备的带宽...原创 2019-09-07 21:44:18 · 1211 阅读 · 0 评论 -
算法高级(13)-常见负载均衡算法Java代码实现
我们在分布式系统常见负载均衡算法中对负载均衡及负载均衡算法进行了介绍,接下来我们用代码对常见的几种算法进行实现。本文讲述的是”将外部发送来的请求均匀分配到对称结构中的某一台服务器上”的各种算法,并以Java代码演示每种算法的具体实现,OK,下面进入正题,在进入正题前,先写一个类来模拟Ip列表:import java.util.HashMap; /** * @author ashan...原创 2019-09-07 22:17:29 · 1702 阅读 · 0 评论 -
算法高级(14)-Nginx的负载均衡策略
一、nginx初体验Nginx是一个http服务器。是一个使用c语言开发的高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。nginx能够支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。nginx可以用来做什么1、反向代理:反向代理(ReverseProxy)方...原创 2019-09-07 22:18:41 · 873 阅读 · 0 评论