- 博客(75)
- 资源 (4)
- 收藏
- 关注
原创 系统设计实践(03)- Instagram社交服务
前言系统设计实践篇的文章将会根据《系统设计面试的万金油》为前置模板,讲解数十个常见系统的设计思路。前置阅读:《系统设计面试的万金油》系统设计实践(01) - 短链服务系统设计实践(02) - 文本存储服务设计目标让我们设计一个像Instagram这样的照片分享的社交网站,用户可以上传照片分享给其他用户。一. 什么是Instagram?Instagram是一种社交网络服务,用...
2021-09-27 15:33:00
904
原创 系统设计实践(02)- 文本存储服务
前言系统设计实践篇的文章将会根据《系统设计面试的万金油》为前置模板,讲解数十个常见系统的设计思路。前置阅读:《系统设计面试的万金油》系统设计实践(01) - 短链服务系统设计实践(02) - 文本存储服务系统设计实践(03) - Instagram社交服务设计目标让我们设计一个类似于Pastebin的网站,用户可以在其中存储纯文本。该服务的用户将输入一段文本,并获得一个随机生...
2021-09-14 10:44:00
365
原创 系统设计实践(01) - 短链服务
前言系统设计实践篇的文章将会根据《系统设计面试的万金油》为前置模板,讲解数十个常见系统的设计思路。设计目标设计一个像TinyURL这样的URL缩短服务。该服务将提供一个较短的URL,重定向到原本长的URL。一. 为什么我们需要URL短链URL缩短用于为长URL创建更短的别名。我们称这些缩短的别名为短链接。当用户点击这些短链接时,它们会被重定向到原始URL。短链接在展示、打印、发送或发...
2021-09-13 11:26:00
410
原创 系统设计面试的万金油
万金油: 比喻什么都能做,但什么都不擅长系统设计是面试当中的一个常考点,是面试官考察面试者知识广度与深度最直接的方式。许多开发者在系统设计面试中痛苦主要是因为下面三个原因系统设计面试属于开放性问题,没有一个标准的答案缺乏开发大规模系统的经验对系统设计问题没有准备就像代码面试一样,那些没有有意识地为系统设计面试做准备的求职者,大多表现不佳,尤其是在谷歌、Facebook、亚马逊、微软等顶级公司的面试中。在这些公司中,表现不佳的求职者得到录用的机会非常有限。另一方面,良好的表现总是会带来更好.
2021-09-10 13:48:28
230
原创 监控杂谈
春秋战国时期,有位神医被尊为“医祖”,他就是“扁鹊”。一次,魏文王问扁鹊说:“你们家兄弟三人,都精于医术,到底哪一位最好呢?”扁鹊答:“长兄最好,中兄次之,我最差。”文王又问:“那么为什么你最出名呢?”扁鹊答:“长兄治病,是治病于病情发作之前,由于一般人不知道他事先能铲除病因,所以他的名气无法传出去;中兄治病,是治病于病情初起时,一般人以为他只能治轻微的小病,所以他的名气只及本乡里;而我是治病...
2021-07-05 11:40:00
118
原创 Project Reactor 响应式编程
目录一. 什么是响应式编程?二. Project Reactor介绍三. Reactor核心概念Flux1. just()2. fromArray(),fromIterable()和 fromStream()3. empty()4. error(Throwable error)5. never():创建一个不包含任何消息通知的序列。6. range(int start, int count)7....
2021-06-25 12:17:00
591
原创 Java协程实践指南(一)
一. 协程产生的背景说起协程,大多数人的第一印象可能就是GoLang,这也是Go语言非常吸引人的地方之一,它内建的并发支持。Go语言并发体系的理论是C.A.R Hoare在1978年提出的CSP(Communicating Sequential Process,通讯顺序进程)。CSP有着精确的数学模型,并实际应用在了Hoare参与设计的T9000通用计算机上。从NewSqueak、Alef、L...
2021-06-16 10:38:00
179
原创 QCon笔记~《天下武功,唯快不破——面向云原生应用的Java冷启动加速技术》
上周去听了QCon全球开发大会,其中有几场印象比较深刻的分享,除去几个比较概念化的话题,在Java技术演进这个Topic里的几个分享都是比较有干货的(但感觉工作中用不到)首先是关于林子熠老师分享的冷启动加速技术,听完后这几天也在思考分享中所说敢叫日月换新天的创建型技术与现有静态编译语言的对比。演讲:天下武功,唯快不破:面向云原生应用的冷启动加速技术分享人: 林子熠(层风) 博士 阿里巴巴...
2021-06-07 11:54:00
223
原创 【RocketMQ源码分析】深入消息存储(2)
前文回顾CommitLog篇 ——【RocketMQ源码分析】深入消息存储(1)MappedFile篇 ——【RocketMQ源码分析】深入消息存储(3)前文说完了一条消息如何被持久化到本地磁盘CommitLog,本篇就要谈谈如何从CommitLog来构建我们消息消费的核心队列结构ConsumeQueue了。之前已经说过,CommitLog文件是消息的大杂烩,所有消息具体都被放到了这个...
2021-04-09 11:31:00
115
原创 【RocketMQ源码分析】深入消息存储(3)
前文回顾CommitLog篇 ——【RocketMQ源码分析】深入消息存储(1)ConsumeQueue篇 ——【RocketMQ源码分析】深入消息存储(2)前面两篇已经说过了消息如何存储到CommitLog,以及ConsumeQueue的构建流程,到了第三篇,我们有一个不得不跨过的坎儿,MappedFile —— 内存文件映射。MappedFile的存在是RocketMQ选择将消息直接...
2021-04-08 10:27:00
154
原创 【RocketMQ源码分析】深入消息存储(1)
最近在学习RocketMQ相关的东西,在学习之余沉淀几篇笔记。RocketMQ有很多值得关注的设计点,消息发送、消息消费、路由中心NameServer、消息过滤、消息存储、主从同步、事务消息等等。本篇不需要你有使用RocketMQ的前置条件,完全从消息存储的直接实现上来分析RocketMQ的Store包。0.队列文件存储思考在开始之前,先来做一个简单思考。MQ既然要接收大量的消息,这...
2021-03-08 09:09:00
252
2
原创 茅坑杀手与Alias Method离散采样
说起Alias,你可能第一个联想到的是Linux中的Alias命令,就像中世纪那些躲在茅坑下面(是真的,起码日本有粪坑忍者,没有马桶的年代就是社会的噩梦)进行刺杀的杀手一样,让人防不胜防,对于那些被这个命令坑过的人来说,电脑必须时刻出现在视野内,因为你不知道你身边的杀手朋友什么时候会模仿中世纪茅坑杀手在你的终端执行这样一条命令。alias cd=rm -rf(如果不懂这个梗,给一个...
2021-01-03 11:29:00
440
原创 一次MySQL死锁的排查记录
前几天线上收到一条告警邮件,生产环境MySQL操作发生了死锁,邮件告警的提炼出来的SQL大致如下。update pe_order_product_info_test set end_time = '2021-04-30 23:59:59' where order_no = '111111111' and product_id = 123...
2021-01-02 15:53:00
141
原创 如何让爬虫帮助你成为一个瘦子
我不歧视女性,也不歧视胖子,但你,是个女胖子。平常作息太不规律,想着去健身房跑跑步,减减肥,毕竟每天坐着不活动容易养膘。每天锻炼确实很考验毅力,坚持几天之后我就在想锻炼的意义了,先来说说不锻炼的意义。好看的锁骨千篇一律,有趣的肚子弹来弹去。肥胖只是人体的属性之一,对于所谓的机器学习来说,你肥胖的属性只是机器在计算预测你行为数据时的众多向量维度之一而已。你身上至少有二十斤...
2020-10-25 17:54:00
214
原创 Github个人首页美化指北
当你尝试去创建一个与你Github用户名相同的仓库时,会发现这是Github为你预留的特殊仓库,用来作为你的Github Profile,这个仓库就相当于一个可以显示在你Github个人页的README文件。本文会帮助你美化你的Github Profile,让它展示更多有用的信息。例如添加一个首页被访问次数的计数器,一个Github被Star与Commit的概览信息,以及各种技能...
2020-10-13 17:21:00
1233
1
原创 DevOps元素周期表—2号元素Kibana
Kibana 是一款开源的数据分析和可视化平台,它是 Elastic Stack 成员之一,设计用于和 Elasticsearch 协作。您可以使用 Kibana 对 Elasticsearch 索引中的数据进行搜索、查看、交互操作。您可以很方便的利用图表、表格及地图对数据进行多元化的分析和呈现。目录引子ELK快速安装Elasticsearch快速入门SpringBoo...
2020-10-09 11:50:00
441
原创 DevOps元素周期表——1号元素 Gitlab
DevOps元素周期表——1号元素 GitlabGitLab 是由 GitLab Inc.开发,一款基于 Git 的完全集成的软件开发平台(fully integrated software development platform)。另外,GitLab 且具有wiki以及在线编辑、issue跟踪功能、CI/CD 等功能。一. 简介官网: https://about.gitl...
2020-10-08 15:46:00
1846
原创 Docker容器到底是什么?
Docker是一个开源的应用容器引擎,是近些年最火的技术之一,Docker公司从Docker项目开源之后发家致富把公司商标改为了Docker,收购了fit项目,整合为了docker-compose,前景一片大好,但是据说Docker在社区中话语权过于强硬,得罪了不少公司,google与rethub等牵头发起了kubernetes项目,虽说让Docker在市场上损失很大,但为相信Docke...
2020-02-17 09:35:00
417
2
原创 ConcurrentHashMap如何保证线程安全
HashMap的put,get,size等方法都不是线程安全的,而HashTable虽然保证了线程安全,但却是用了效率极低的方法,在put,get,size等方法上加上了synchronized,这就导致所有的并发进程都要竞争同一把锁,一个线程在进行同步操作时,其他线程都需要等待。为了保证集合的线程安全性,Jdk提供了同步包装器,比如说Collections.synchronizedM...
2020-02-14 16:53:00
770
原创 负载均衡算法概述
我们查询注册中心获得了某个服务的可用节点列表,我们需要从可用节点列表中选择一个发起调用,这就是负载均衡的所用了。需要考虑两个因素,⼀个是要考虑调⽤的均匀性,也就是要让每个节点都接收到调⽤,发挥所有节点的作⽤,另⼀个是要考虑调⽤的性能,也就是哪个节点响应最快,优先调⽤哪个节点。常见的负载均衡算法随机算法(伪随机)随机算法,顾名思义就是从可⽤的服务节点中,随机挑选⼀个节点来访问。在...
2020-02-04 13:02:00
167
原创 Zeus,一个可以快速使用的微服务组件
去年(上周)一直准备着做一个分布式微服务的组件,可以让使用者用最简单的方式引入,只需要使用简单的注解就能够使用。用一点一点的空闲时间终于堆出来一个暂时可用的zeus-1.0版本。Zeus,意为宙斯,奥林匹斯十二主神之首,Zeus目前既定的主要功能是服务发现,负载均衡,服务调用,API监控,配置中心,服务治理,服务容错。目前完成的功能有服务注册,服务发现,API监控以及RPC调用。...
2020-01-02 10:42:00
451
原创 Mysql如何在删库后可以不用跑路
我一直在想,地球上这么多程序员,应该有很多人在团队做项目的时候,出过很大的错误,比如说不小心删了库,活动福利字段多写了个零导致全服务器玩家领到数倍奖励,听了沙雕群友的话执行rm -rf命令。记得有一本专门调侃的书,叫《Mysql从入门到删库跑路》,各种能人异士。所以掌握如何在数据库被删之后进行恢复,是很重要的。MySQL删除数据有很多种方式,你可以删除一条数据,可以删除一张表,也可...
2019-12-16 17:23:00
432
1
原创 我想做一个聊天机器人
我想做一个聊天机器人聊天机器人可以分为两种,一种是任务型,类似于小爱同学,我可以命令她去执行某些功能,还有一类是非任务型,我可以和她进行聊天,说一些当下热门的新闻,或者让它给我讲一些牢厂251的笑话。最近我一直在想一个问题,我的手机中其实有很多的聊天记录,这些记录更加贴近我的对话习惯。我能不能根据这些数据,构建一个基于信息检索的聊天机器人呢?ta的回答像我认识的人,而不是像机器。偶...
2019-12-13 16:51:00
261
原创 Zookeeper搭建集群及协同
Zookeeper搭建集群及协同协同的实现首先启动一个zkCli客户端(zkCLi-1),创建一个workers节点。create /workers使用ls监控当前节点。ls -w /workers[]当前/workers中没有子节点。新开一个zkCli客户端(zkCli-2),在/workers中创建一个新节点。create -e /workers/w1 "...
2019-12-10 23:12:00
121
原创 无限可能,Elasticsearch(一)
这个世界已然被数据淹没。多年来,我们系统间流转和产生的大量数据已让我们不知所措。 现有的技术都集中在如何解决数据仓库存储以及如何结构化这些数据。 这些看上去都挺美好,直到你实际需要基于这些数据实时做决策分析的时候才发现根本不是那么一回事。Elasticsearch是一款十分强大的开源搜索引擎,可以帮助你在海量数据中搜索到目标,使用机器学习自动发现异常数据,对数据报表等强大功能。在大数...
2019-12-10 13:48:00
90
原创 如何打造一款m3u8视频爬虫
0.前言m3u8是一种很常见的网页视频播放器的视频源,比如说中国大学MOOC中课程就是使用了该种视频格式。随便打开一门课程,就可以发现在网络请求中存在一个m3u8的文件,在preview中预览,它并不像我们想象中是乱码的视频流。里面是一个列表,有一堆ts结尾的文件名,每个下面还跟了一个EXTINF的字段,好像是时间,在我们播放视频时,网络请求中会不断出现请求ts的内容。随便打...
2019-11-25 13:29:00
834
原创 垃圾如何进行自救
垃圾如何进行自救背景故事在Java中,Object是所有类的祖先。Object类中有一个留给子类实现的方法finalize(),它的作用就是在一个对象被当做垃圾进行回收时留给它的最后自救机会。垃圾的发现JVM的内存管理机制将原本需要程序员自己手动释放的内存可以自动去清理释放,这种方式虽然方便不少,但因为是自动去识别,肯定不如手动释放精准,所以各式各样的垃圾判断方式出现了。引...
2019-11-23 17:50:00
193
原创 必知必会的JavaJDK工具
JDK中有很多用于监控诊断的系统工具,对于Java程序员来说,无疑是用来了解自己程序运行时性能好坏的强大工具。在JDK的bin目录下就可以找到这些工具。JPS在Linux有一个命令叫做ps,可以查看系统当前所有的进程,而JDK提供的jps也是类似,查看正在运行的Java进程。可以看到该命令的参数。在默认情况下,jps的输出信息包括Java进程的进程ID以及主类名。我们还可...
2019-11-18 18:47:00
183
原创 如何在局域网内开一家电影院
在局域网内通过搭建服务集群,让你的设备轻轻松松访问电脑中的视频,无需流量,不受网速干扰。本篇主要讲述如何自行搭建该服务。项目地址:https://github.com/CasterWx/videoCloud最近在补生活大爆炸,从网盘上下载了全季的视频,每天晚上都会在电脑上看几集再去睡觉。因为视频资源太过庞大,所以我想在手机上看,就需要每次把视频传到手机,看完之后删掉再传新的,...
2019-10-31 09:28:00
1249
原创 我十七岁
假如,我十五岁,或十六岁我怕我不会,不会如此喜欢一人。假如,我十八岁,或十九岁我怕我后悔,后悔当初没有去追。假如,我是无忧的溪流,为什么,我无法停留?为什么,我看到一人悲秋?假如,我曾化南风轻吹,吹过谁的玫瑰恋恋而过,却不再轻随。假如,我如大海般浩瀚无穷,岂能强装虚伪?更不会迷惘进退。那天,我遥望皎皎明月,它高远明如镜台,却不及,一...
2019-10-16 19:01:00
151
原创 谈谈网络游戏中的延迟解决方案
我们平常玩的很多网络游戏,比如英雄联盟/王者荣耀/PUBG等,你感觉到卡顿往往不是因为你的网速问题,而是因为网络延时导致的,比如说LOL美服的游戏服务器在美国,而你在中国的华中地区玩着美服LOL,那么你的延迟可能会在300ms左右,因为网络请求从美国到中国华中地区需要经过很多的路由,这里面会消耗掉很多时间,如果发生了丢包,那么重发需要的延迟更是会加倍增长,而延迟往往在150ms以上时往往...
2019-10-06 14:39:00
1560
原创 简述一致性哈希算法
今天早上逛B站的时候首页给我推荐了一个视频,关于面试中一致性哈希算法的回答,好奇心驱使我点了进去。时长:1小时半...很纳闷为什么这个浅显易懂的概念需要讲这么久,越来越多培训机构的营销号在发一些明明10分钟解决的问题却要将几个小时的视频,打上一些骗小白的标题,浪费几个小时看完直接会自闭。引入问题我们先来看一个分布式缓存的应用前景。我们有三台缓存服务器S0,S1,S2。现在有3...
2019-10-05 13:14:00
231
原创 Python网络爬虫实战(五)批量下载B站收藏夹视频
我们除了爬取文本信息,有的时候还需要爬媒体信息,比如视频图片音乐等。就拿B站来说,我的收藏夹内的视频可能随时会失效,所以把它们下载到本地是非常保险的一件事。对于这种大量列表型的数据,可以猜测B站收藏夹的请求中,详细的收藏详细可能会是异步加载的,因为这部分数据可能比较庞大。我们来分析一下网络请求。可以看到对收藏夹的请求是指定URL加收藏夹的id号,我们爬取的前提是这个收藏夹是公共收...
2019-09-28 10:38:00
790
1
原创 Python网络爬虫实战(四)模拟登录
对于一个网站的首页来说,它可能需要你进行登录,比如知乎,同一个URL下,你登录与未登录当然在右上角个人信息那里是不一样的。(登录过)(未登录)那么你在用爬虫爬取的时候获得的页面究竟是哪个呢?肯定是第二个,不可能说你不用登录就可以访问到一个用户自己的主页信息,那么是什么让同一个URL在爬虫访问时出现不同内容的情况呢?在第一篇中我们提到了一个概念,cookie,因为HTTP是无...
2019-09-20 10:28:00
127
原创 Python网络爬虫实战(二)数据解析
上一篇说完了如何爬取一个网页,以及爬取中可能遇到的几个问题。那么接下来我们就需要对已经爬取下来的网页进行解析,从中提取出我们想要的数据。根据爬取下来的数据,我们需要写不同的解析方式,最常见的一般都是HTML数据,也就是网页的源码,还有一些可能是Json数据,Json数据是一种轻量级的数据交换格式,相对来说容易解析,它的格式如下。{ "name": "中国", "pro...
2019-09-17 11:38:00
244
原创 Python网络爬虫实战(一)快速入门
本系列从零开始阐述如何编写Python网络爬虫,以及网络爬虫中容易遇到的问题,比如具有反爬,加密的网站,还有爬虫拿不到数据,以及登录验证等问题,会伴随大量网站的爬虫实战来进行。我们编写网络爬虫最主要的目的是爬取想要的数据还有通过爬虫去自动完成我们想在网站中做的一些事情。从今天开始我会从基础开始讲解如何通过网络爬虫去完成你想要做的事。先来看一段简单的代码。import reques...
2019-09-16 11:12:00
4174
原创 【肥宅捕获指南】快来给我写小纸条吧!
### 前言 前段时间把之前买的咕咕机从老姐那里要了回来(雾),准备对这个单机版打印机做一个扩展,根据官方给出的接口来把它扩展成一个可以让诸多网友给我发送小纸条的联机打印机。 用了一早上把接口实现之后发给了群友,然后今天我收到了这些内容...### 宪法###发送了三遍的支付宝账号###神秘链接...
2019-09-01 12:28:00
153
原创 就当我在扯淡,宇宙的bug
Geohot说到“我打算建立一个组织让人们从人工智能模拟中‘越狱’,释放真正的人性。”不知从何时开始,世界上的知名科学家,黑客等都开始怀疑我们所处世界的真实性。我们的世界上是真实存在的吗?是否存在一个上帝(程序员)在编码维护我们所在的世界不出现bug...先来看一个简单的例子,拿我们的世界与现有计算机对比。光速的存在上限,而计算机根据存储介质也存在读...
2019-08-17 13:22:00
156
原创 防止Web攻击,做好HTTP安全标头
前言下图是几年前一位女性在访谈会上提问Linus(Linux操作系统之父) 为什么英伟达显卡在Linux系统中兼容性这么差? Linus说他们曾经去和英伟达谈过关于显卡在Linux上兼容的问题,但是英伟达却只对Android的显卡兼容很主动。最后Linus竖起中指说了一句,"so,nivdia f**k you!"。 销售“Security...
2019-08-16 10:50:00
227
原创 HashMap这些问题你知道吗?
HashMap是Java面试中的常考点之一,而且其<Key,Value>结构也是开发中常常用到的结构之一。或许你使用过HashMap,但是你知道下面这些问题吗?HashMap的底层结构是什么?如果你能说出是数组+链表,那么你知道1.8版本之后引入的红黑树吗?说道红黑树,你知道它的结构吗?你知道红黑树,那么你知道它是结合平衡二叉树和2-3树优点的产物吗?亦或者...
2019-08-15 09:16:00
142
asmtools.jar
2020-10-10
Java Log4j所需Jar包
2018-03-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人