从0到1打造正则表达式执行引擎(二)
在上篇博客从0到1打造正则表达式执行引擎(一)中我们已经构建了一个可用的正则表达式引擎,相关源码见https://github.com/xindoo/regex,但上文中只是用到了NFA,NFA的引擎建图时间复杂度是O(n),但匹配一个长度...
在上篇博客从0到1打造正则表达式执行引擎(一)中我们已经构建了一个可用的正则表达式引擎,相关源码见https://github.com/xindoo/regex,但上文中只是用到了NFA,NFA的引擎建图时间复杂度是O(n),但匹配一个长度...
近期在面试找工作的小伙伴们很多啊,我周围就有好几个认识的朋友在找工作,于是我突发奇想在CSDN开了一个面试题精选的专栏,主要会关注一些算法题、设计题,次要会补充一些java面试相关的题(比较本博主是java出身)。其实在此之前已经写过一些相...
今天是五一假期第一天,这里先给大家拜个晚 咳咳!!祝大家五一快乐,我这里给大家奉上一篇硬核教程。首先声明,这篇文章不是教你如何写正则表达式,而是教你写一个能执行正则表达式的执行引擎。 网上教你写正则表达式的文章、教程很多,但教你写引擎的并不...
前两天逛github看到一道很简单的面试题——如何不用库函数快速求出$\sqrt2$的值,精确到小数点后10位! 第一反应这不很简单嘛,大学数据结构课讲二分查找的时候老师还用这个做过示例。但转念一想,能作为大厂的面试题,背后绝对没有那么简单...
公众号注册n年了,但一直都没怎么发过文章,真是五年运营四年敷衍,去年年底在做自我年终总结的时候放下豪言说要开始重新运营公众号了,但一拖就拖到了3月底。这几个月想了好久的公众号定位,大概有些方向了(下文细说),所以决定摒弃我这间歇性踌躇满志持...
@[TOC] 前言 之前已经说过了ReentrantLock ReentrantReadWriteLock,可以参考之前的博客。在ReentrantReadWriteLock源码解析文末,我提到了ReentrantReadWriteLock...
前言 作为一个技术人,经常会遇到自己不懂或不知道的东西,这个时候就必须使用搜索引擎搜索相关的资料,当然大部分人都逃不过google,google上的内容繁多,如何快速检索和筛选自己想要的信息却成了问题。其实google提供了高级搜索的方式,...
最近一直在学习编译原理,然后就了解到了antlr4这个强大的工具,antlr的全称是(Another Tool for Language Recognition),是一款很强大的词法和语法分析工具,虽然是用java写成的,但它也能生成c++...
Java中的volatile关键词被用来将变量标记为“存储在内存中”。准确地的讲每次volatile变量的读取和写入都是直接操作内存,而不是cpu cache。 实际上自从java 5之后,volatile关键词保证除了volatile变量...
今天为大家翻译一篇来自Netflix技术博客的Linux Performance Analysis in 60,000 Milliseconds,作者是著名linux内核工程师&性能优化专家Brendan D. Gregg和Netf...
上回说到ReentrantLock,今天来谈谈读写锁(ReentrantLock)和其具体实现ReentrantReadWriteLock。看这篇文章前,强烈建议你回到先读懂ReentrantLock,因为ReentrantReadWrit...
时光荏苒,岁月如梭,不知不觉一年又过去了。19年的互联网格外的不景气,到处充斥着暴雷、裁员,然而这些都和我无关,但这些都让深刻认识到了困难时期抱着大厂大腿的好处(还好我18年没跳槽去小厂,哈哈)。 回到年终总结,这已经是我连续第七年写年终总...
wrk是一款开源的高性能http压测工具(也支持https),非常小巧,可以执行文件只有3M(其中主要是luajit和openssl占用绝大多数空间),别看核心代码3-5年没更新了,但依旧非常好用。虽然很早之前我就知道有这么个工具了,当时学...
谈到多线程,就不避开锁(Lock),jdk中已经为我们提供了好几种锁的实现,已经足以满足我们大部分的需求了,今天我们就来看下最常用的ReentrantLock的实现。 ~谢谢打赏~ 赏
布隆过滤器(BloomFilter)是一种大家在学校没怎么学过,但在计算机很多领域非常常用的数据结构,它可以用来高效判断某个key是否属于一个集合,有极高的插入和查询效率(O(1)),也非常省存储空间。当然它也不是完美无缺,它也有自己的缺点...
前两天,google在其github上放出一个新的仓库https://github.com/google/eng-practices ,主要分享google在有些项目和工程上积攒下来的实践经验,目前只有代码评审相关。我和小伙伴们正在将其翻译...
我和几个小伙伴一起翻译了Google前一段时间放出来的Google's Engineering Practices documentation,翻译后的github仓库https://github.com/xindoo/eng-practi...
正则表达式能匹配3的任意倍数?(注意是任意倍数) ,我曾经也很震惊,但确实可以。我5年多前练习正则表达式,在Regex Golf这个正则表达式测试网站上发现了这个题,当时完全没有任何头绪,于是我在知乎提问正则表达式如何匹配 3 的倍数 ,但...
来源于stackoverflow上的一个问题为什么处理有序数组比处理无需数组快,原文中已经有了一些探讨,这里我们首先来复现下结果,然后再解释下为什么! 我们有如下两段代码,代码看起来都是差不多的,实际上逻辑也是一样的,都是统计数组中小于TH...
自己写一个java线程池
温馨提示:本文中Alfred是Mac平台的工具,不适用于其他平台。 Alfred是Mac平台上被很多人吹爆的一款效率提升软件,我刚毕业工作的时候就看到公司内网有人推荐,但没有尝试。 后来我跳槽后自己买了Macbook pro,在努力把笔记本...
最近升级了博客主题,比wordpress原生的好看好用多了。 ~谢谢打赏~ 赏
学过计算机底层原理、了解过很多架构设计或者是做过优化的同学,应该很熟悉局部性原理。即便是非计算机行业的人,在做各种调优、提效时也不得不考虑到局部性,只不过他们不常用局部性一词。如果抽象程度再高一些,甚至可以说地球、生命、万事万物都是局部性的...
“持续学习”是几乎所有大神都会给菜鸟们的建议之一,这个概念也不是最近被提出来的,早在两千多年前古希腊哲学家梭伦就提出“活到老学到老”,这可算最早的“持续学习”。近些年来持续学习在IT领域里又不不断被提及,程序猿们成为持续学习最大的一群实践者...
现在假设你负责一个广告公司的结算系统,你需要统计下月度点击收入,生成一个月度报告。假设有2000w个点击,每个点击平均1元,我们用小学数学计算就知道总收入是2000w。但是我们用计算机累加就会出问题了。如果我们用float存储数据,floa...
最近我们有个服务的时延(Latency)略微上涨,gc时间上涨了一倍,dump出java堆(Heap)之后用Mat分析发现,有份cache数据占据了20%+的堆内存,拥有上千万个小对象。然而这部分数据只是部分逻辑会用到,所以它占据这么大...
作为作为一个已经入了门的java程序猿,肯定对Java中的String、StringBuffer和StringBuilder都略有耳闻了,尤其是String 肯定是经常用的。但肯定你有一点很好奇,为什么java中有三个关于字符串的类?一...
相信即便是Java初学者都应该用过Java中的HashMap和TreeMap,但貌似大多数人都没怎么用过LinkedHashMap,对其知之甚少。因为基本上大多数情况下TreeMap和HashMap都能满足需求,只有在需要map中K-V保持...
学过数据结构的人应该对Queue 队列很熟悉了,队列是一种先进先出(FIFO)的数据结构,所以它出队列的优先级就是进入队列的次序。但我们有时候需要其它的优先级,很多高级语言都会提供带优先级的队列,在Java中就是PriorityQueu...
如果写过多线程的代码,你肯定考虑过线程安全问题,更进一步你可能还考虑在在线程安全的前提下性能的问题。大多数情况下大家用来解决线程安全问题都会使用同步,比如用synchron或者concurrent包提供的各种锁,当然这些都能解决问题。但有多...
我一直都不太喜欢给别人点赞,某一年(貌似是17年)微信出了一次朋友圈年报,那一整年我就点出去了几个赞,要知道当时我微信好友应该有300+。我觉得这是我不喜欢参与社交活动在网络世界的一种体现吧。不给别人点赞也没啥坏处,但你不评不赞,难免会...
作为一个java开发者肯定都知道且使用HashMap,但估计大部分人都不太知道WeakHashMap。从类定义上来看,它和普通的HashMap一样,继承了AbstractMap类和实现了Map接口,也就是说它有着与HashMap差不多的...
前一段时间当我面试有些来应聘高级java开发工程师岗位的候选人时,在我问的众多问题中,有个问题是“你能告诉我弱引用是啥吗”,我不期望得到像论文中的细节一样的答案。我很可能从有个20多年的老工程师口中得到“嗯……是不是和gc有关”这样的答...
赶在春节放假前写完我2018年的年终总结,虽然又晚了,但还是不能缺的。每次拖延都有很多的理由,这次主要是19年上班第一天喜提996,从此属于自己的时间又少了,哎,说到底其实还是自己拖延症犯了。 先概括下过去的一年,如果说17年是本命...
关于spring bean三种注入方式的优缺点对比,翻译自Spring DI Patterns: The Good, The Bad, and The Ugly,水平有限,如有错误请指正。 Spring开发者会很熟悉spring强大...
fbprophet是facebook开源的时序数据预测包,提供了简洁的python和R api,可以对时序数据做一些预测,也提供了有些简单的趋势分析。更多细节可以看下官方文档。官方doc中给了一个数据集作为prophet的入门,这里我也...
之前做过两年的运维,用过很多命令,深切体会到某些linux命令熟练掌握后对效率提升有多大。举个简单的例子,在做了研发后经常会有跑一些数据,对于结果数据的处理,我们的产品同学一般都习惯于用excel做统计,把数据复制到excel里,然后数...
在前一篇博客运维往事 一次负载均衡坏点检测事故中我提到了在生产环境中在第四层和第七层做healthCheck,这个第四层和第七层到底是什么意思呢?除了第四层第七层之外,其他的几层到底是什么?这几层到底做了啥? ~谢谢打赏~ 赏
之前做运维,有一些印象很深的事故,今天来讲其中一个,为了大家能理解,先说一些背景。现在因为流量巨大,单台机器肯定不足以为所有用户提供服务,所以大公司几乎任何一个服务的背后都是一套集群,然而任意一台机器不是100%可靠,如果你想让你服务尽...
15年毕业,就莫名其妙做了运维,也成为了阿里最后一批业务运维(pe)。刚开始做运维的时候由于基础知识太差,很多事情做了就做了,但也不理解为什么那么做了,知道后来跳出运维的圈子,自己做了开发,思路、见识、视野渐渐开阔之后也就慢慢明白了之前...
之前在学校学习过程中,很少写多进程的代码,虽然操作系统中学过死锁相关的内容,但考试过后也基本就忘记了,后来自己也遇到过有些多进程死锁的情况,再加上看了有些资料,对死锁才算是有了有些深入的理解。 ~谢谢打赏~ 赏
之前虽然很频繁使用java的hashmap,但一直都是纯用,至于里面怎么实现的,一直都是糊里糊涂的。今年4月份跳槽找工作,大概看了一下HashMap的源码,在面试过程中也被多位面试官问到HashMap的相关问题,有些问题也没回答出来。本...
最近工作中遇到了一个需求,需要以一定的概率过滤掉一部分的流量,想想只能用Random了,因为是在多线程环境下,我还特意确认了下Random在多线程是否能正常运行,Random的实现也比较简单,初始化的时候用当前的事件来初始化一个随机数种...
前两天在刷leetcode的时候,遇到了一题Implement Rand10() Using Rand7(),rand7()可以给你等概率返回1-7的任意一个数,让你用rand7()实现一个rand10(),rand()可以等概率返回1...
之前总是把SRE和DevOps混为一谈,总觉得这两个是同一种东西在不同公司的叫法,知道前两天google又放出了《The Site Reliability Workbook》 ,书中对比了SRE和DevOps的异同。今日重新看wikep...
876. Middle of the Linked List 简单题,我的做法是先数下个数,然后知道中间节点是第几个了。 ~谢谢打赏~ 赏
868. Binary Gap 简单题,就是求一个数字二进制形式中两个1的最大间隔位置,比如22的二进制0b10110,最大距离就是2,0b100001,最大距离是5。 ~谢谢打赏~ 赏
Java生产者消费者是最基础的线程同步问题,java岗面试中还是很容易遇到的,之前没写过多线程的代码,面试中被问到很尬啊,面完回来恶补下。在网上查到大概有5种生产者消费者的写法,分别如下。 用synchronized对存储加锁,然后用o...
前两天去面试,被问到了一个线程同步的问题,两个线程依次输出1……100,一个线程只输出奇数,一个只输出偶数。之前工作中没写过线程同步的代码,只知道使用object的wait()和notify()方法可以实现线程同步,之前也看过线程池实现...
我司内部有个基于jstorm的实时流编程框架,文档里有提到实时Topn,但是还没有实现。。。。这是一个挺常见挺重要的功能,但仔细想想实现起来确实有难度。实时流的TopN其实离大家很近,比如下图百度和微博的实时热搜榜,还有各种资讯类的实时...
OpenTSDB(Open time series data base),开发时间序列数据库。DB这个词很有误导性,其实并不是一个db,单独一个OpenTSDB无法存储任何数据,它只是一层数据读写的服务,更准确的说它只是建立在Hbase...
最近迷上了一个电视节目,说出来也不怕笑话,这个节目就是CCTV科教频道的《我爱发明》。过年回家的时候有天晚上发现播这个,后来每天晚上就看这个了。从家里回来后,业余时候也就是陪女朋友聊天、刷《老友记》、看《哈利波特》原著,再剩下实在无聊就...
学习机会不会被工作场所限制。我们应该时刻问自己如何提高自我?如何做的更好?接下来我应该学些什么来为我的未来做好准备呢?这些问题可能和工程无关。也许你对音乐、艺术、运动、写作或工艺品没任何兴趣。但我们学到的一些技能可能是跨职能的,有助于我...
题目链接295. Find Median from Data Stream 在一个有序数组中找中位数,但需要支持再数组中添加新的元素。本来是有序里的,可以很轻易就查到中位数,但如果添加新数字后,不一定有序。如果先对数组排序,那代价就比较...
工作中很容易被各种必须完成的事压得喘不过气来。我指导过的那些人,通常都是刚开始工作的人经常感觉到他们的工作任务清单在持续增长,而且进度远远的落在了后面,他们总是花很长时间追赶进度而不是花足够的时间开发能让他们更高效的新技能。 ~谢谢打赏...
17年的年终总结为什么起名叫『欢送本命年』呢!没错,17年是我本命年(毕竟我今年已经0x18岁了),发生了很多事让我相信有本命年水逆这回事,因为感觉17年是我人生中过的最不顺的一年,尤其是在工作上,感觉很坎坷,所以希望在新的一年里一切糟...
这个系列内容全部来自于Edmond Lau 所著《The Effective Engineer》一书,截止本文写稿时间(17年末)还未在中国出版,因为我没有足够的时间精力翻译全书,所以就挑选几部分做成高效工程师 系列文章,希望对大家在职...
因为自己新建了一个应用,为了开发的速度,直接选用了springboot,但后来发现大部分读库的代码和同事已有的代码重复, 索性直接拿过来用。但问题是我已有的代码是通过纯注解的方式使用mybatis,同事代码是spring+xml来使用m...
时间胶囊是是一种用来把某些东西存放到未来再打开的容器,因其具备跨越时间的属性,所以被称为时间胶囊。历史上最著名的时间胶囊是在1939年世博会被埋下的西屋时间胶囊 是准备在6939年打开的,除了一些当时的代表性物品,还有爱因斯坦、物理学家...
待续…… ~谢谢打赏~ 赏
题目链接 236. Lowest Common Ancestor of a Binary Tree 根据LCA的定义,二叉树中最小公共祖先就是两个节点p和q最近的共同祖先节点,LCA的定义没什么好解释的,主要是这道题的解法。 ~谢谢打赏...
题目链接 Leetcode 4. Median of Two Sorted Arrays 题目描述很简单,就是找到两个有序数组合并后的中位数,要求时间复杂度O(log (m+n))。 ~谢谢打赏~ 赏
最开始学习机器学习的时候,首先遇到的就是回归算法,回归算法里最最重要的就是最小二乘法,为什么损失函数要用平方和,而且还得是最小?仔细想想最小二乘法视乎很合理,但是合理在哪,怎么用数学方法来证明它合理。 ~谢谢打赏~ 赏
题目链接:19. Remove Nth Node From End of List 删除单链表中的倒数第n个节点,链表中删除节点很简单,但这道题你得先知道要删除哪个节点。在我的解法中,我先采用计数的方式来确定删除第几个节点。另外我在头节...
题目链接 Leetcode 24. Swap Nodes in Pairs 给你一个链表,交换相邻两个节点,例如给你 1->2->3->4,输出2->1->4->3。 ~谢谢打赏~ 赏
原题链接:6.ZigZag Conversion 题目名称『曲折变换』,但给的样例只有三行,看不出到底怎么样曲折变化,所以这里我再补充一个样例,大家肯定一下就懂了。 ~谢谢打赏~ 赏
本文翻译自http://galaxy.agh.edu.pl/~vlsi/AI/backp_t_en/backprop.html,大概介绍下反向传播的基本原理。 ~谢谢打赏~ 赏
背景是这样的,我们有个系统每天都会调起多个定时任务,首先quartz每分钟会调起一次检查时间的任务,如果发现时间到达设定的任务执行时间,java代码会向数据库里写入一条记录,然后有另外一个系统就会根据这条记录执行相应的任务,有天有同事反...
题目链接 Given a string s, find the longest palindromic subsequence's length in s. You may assume that the maximum length of...
近期因为工作方向上的变化,需要学习一些新东西,通用技术还好说,网上又大把的资料可以看,但面对只有几个人知道的业务问题,我也只能依靠其他人教我了,但从我过去两年的工作经历来看,我感觉整个团队的的新人培养存在 很大的问题。接下来我就结合我过...
Leetcode 582. Kill Process 好久没刷题,今天来一道比较简单的题目,如果此题作为一道面试题,可以延伸出树的遍历,栈和队列,hashmap,treemap等,还是比较能考验基础的面试题。 ~谢谢打赏~ 赏
一种有想做个爬虫的想法,正好上个月有足够的时间和精力就学了下scrapy,一个python开源爬虫框架。好多事开始以为很难,但真正下定决心去做的时候,才发现非常简单,scrapy我从0基础到写出第一个可用的爬虫只用了两天时间,从官网实例...
Boss肯定要承担起leader的责任,但一个好boss并不意味着他是一个好leader。两年的工作经历,也让我看到了一些例子,比如有些团队业务并不差,但下面的人一个接一个的跑路,有些团队人员频繁流入流出,十几个人的团队两年来十几个人走...
声明:本文主要是自Google全球云服务总裁David K. Rensin 《kubernetes》一书中的内容,介绍可能不够详尽,文章也缺乏组织性,先发出来,这个月我会继续完善本文,也欢迎各位指教。 kuberbetes在希腊语中是「...
大学的时候就顾着搞acm了,没写过工程,尤其是多系统协作的工程。工作中遇到一种场景,我自己代码需要多次调用别的系统api,http的接口rt在几十毫秒左右,我必须在几百毫秒内完成上百次的查询,串行的单线程代码不可能完,所以不可避免需要使...
给你一个数组nums,如何找nums中出现次数超过总数的1/3的数,要求时间复杂度O(N)和空间复杂度O(1)。我觉得这不算是一道算法题,更像是一道智力题。接下来我先说下这道题怎么做,再谈谈我对此类题的看法。 ~谢谢打赏~ 赏
首先声明一点,我没怎么面试过别人,只是参加过几场面试,经历的面试官只有小20个吧,所以根本没有资格去评判一个面试官是不是合格的面试官。但经过我最近的一些经历,以及朋友做面试官的体会,再加上自己对面试的思考,形成了一个自己对面试官好坏评判...
Leetcode 114. Flatten Binary Tree to Linked List 题目意思很简单,就是把一棵二叉数转换为链表,虽然题目中没说以什么样的形式转换,但看下样例就很容易看出来,是以先序遍历的次序转换成链表。这里...
朴素贝叶斯是基于贝叶斯理论的一种监督学习算法,『朴素』意思是假设所有特征两两相互独立,给出类别y和一组依赖特征[x1..xn],根据贝叶斯理论,他们有如下的关系。 ~谢谢打赏~ 赏
Water and Jug Problem You are given two jugs with capacities x and y litres. There is an infinite amount of water supply...
这两年,因为各种机缘巧合,找到的三个比较不错的博客,分别是刘未鹏,阮一峰,斯科特.杨的博客,这三个博客都在持续更新,但刘未鹏的博客更新速度很慢,但都是十足的干货。其中最阮一峰的博客更新最快,涉及的内容也最杂,包括某个具体的技术、个人感悟...
好久没刷题了,今天来俩道简单题。 Leetcode 62. Unique Paths Leetcode 63. Unique Paths II ~谢谢打赏~ 赏
工作两年,做运维两年,运维的岗位的地位急转直下,曾多次想离开,但一直都没好的的下家,直到最近终于离开了,工位没变,从运维都办开发,再彻底到纯开发。说实话,我离全职研发的水平还差一些,毕竟还是缺少一些完整的研发项目,但我在对架构理解对全局...
第四年写年终总结了,哎,像我这种能坚持的人已经不多了,看下自己在15年年终总结里立下的目标,除去后来觉得没有太大意义的个别目标,个人以为年初目标完成度在90%以上。 我觉得年终总结无非就是三个大块工作、生活、学习。像我这种有进取心的...
题目链接:Unique Substrings in Wraparound String 这里加段英文,不是为了凑字数,而是为了让别人搜索题目的时候能搜到我的博客。。 Consider the string s to be the infin...
树莓派作为一个完整的主机,除了能在上面跑系统外,也提供了40个引脚提供电路开发的功能。本来我在工作中常接触linux,但没啥机会接触硬件,正好手头上有一台raspberry 3b,本来是用来学linux相关的包的,闲的没事,网上买了几个...
在青岛第一次办的ACM/ICPC现场赛结束了,正是因为在青岛,我校ACM第二次进了现场赛,不过还是没有什么太好的结果,总感觉差那么一点,但一直说不清差在哪?但可以肯定的是绝对不是差在努力程度上。 ~谢谢打赏~ 赏
题目链接:368. Largest Divisible Subset Given a set of distinct positive integers, find the largest subset such that every pa...
前两天在一个学长面试的时候遇到这样一个题,这里稍微详细说下本文的标题。给你n个任意整数,求排序后相邻两个数之间的最大差值,这里n可能有10^5,整数为任意32位整型。要求求解算法的时间复杂度为O(n)。 ~谢谢打赏~ 赏
《SRE》这本书英文版已面世半年后,中文版终于面世。从4月、5月的时候,我就一直在尝试看英文版,由于自己英文水平有限,阅读进度和深度实在有限,看到中文版,对很多章节的内容才算是有了较深入的理解,一句话评价此书,这是一本运维转型的指导性书。 ...
大半夜接到线上一服务器磁盘占用率超过90%的短信,需要立即处理。一般这种情况都是线上异常,当天日志打太多,无法自动删掉的。上来第一反应就是查我们规范java应用日志目录,居然没有文件,再查,居然连java进程都没有,原来不是java应用...
题目链接:53.Maximum Subarray Find the contiguous subarray within an array (containing at least one number) which has the lar...
题目链接:Super Pow Your task is to calculate ab mod 1337 where a is a positive integer and b is an extremely large positive ...
题目链接:Combination Sum IV Given an integer array with all positive numbers and no duplicates, find the number of possible ...
写完正文,在纠结文章标题起个啥呢? 『正式入职一周年』『瞎扯淡』都太俗了,『写在工作一周年』感觉不是我风格。想了半天『mark一周年』,这标题不错,中英混杂,不失逼格,又能突入今天我正式工作一周年这个重点,尤其是『mark』一词,感觉...
题目链接:Search a 2D Matrix II Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has th...
题目链接:Search a 2D Matrix Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the f...
Given a binary search tree, write a function kthSmallest to find the kth smallest element in it. 求一个二叉搜索树的第k小值。 题目链接:htt...
这3年左右的时间,我大概看了近50本科幻小说,软硬科幻都有。我认为阅读科幻小说不不仅仅是一种娱乐,任何一本科幻小说应该说是作者对未来或者人性的一种思考。有些科幻小说很大程度上可以预言未来发展的方向,比如在19世纪甚至18世纪小说中出现...
Write a program to find the nth super ugly number. Super ugly numbers are positive numbers whose all prime factors are i...