午间休息,看了google面试官对一个Facebook工程师的面试,处理一个字符串是否包含特定子串的问题。 视频见 https://www.youtube.com/watch?v=PIeiiceWe_w 过程 面试者来自facebook,小年轻。面试官是精神抖擞的大嘴哥。面试者实时在google doc上表达对题目的理解,伪代码,编码。给出解决方案,给出一个是最简单的方案,另一个是aho算法,做出了对比。所以表达清楚一个方案,要多给1个方案,没有对比,哪有更深的印象? 面试者用手写图例的方式,表达了aho算法,连初次认识这个算法的我都能略知一二,所以表达的方式很重要,要借助工具。 之后再完全手写代码,不借助ide,老外都这么牛的吗? 最后再对整个过程做时间复杂度和空间复杂度的分析。 整个过程面试者的精神状态由理解,慢慢到他自己说的comfortable。所以往往随着问题的深入,你的体验不是更害怕,而是更释然、轻松。 后续 Follow到这个工程师的github账号 https://github.com/SecondThread 与 twiter,以及个人网站。 外国人的个人站点很酷,是自己做的一些网页游戏,和国人不同,国人写文章托管要考虑平台seo,自建站考虑自己做seo,出发点不同。Not just for fun. 浏览他的twitter,发现平时有在做codeforces竞赛。这个平台比国内的leetcode,会更纯粹一些。 几个体会 编程要成为兴趣,兴趣才能成为动力,才会做更有意思的事情,你根本不用担心35岁。 顶级公司的面试更注重实操,考察算法与硬编码等基本功,过程中也体现了知识储备和逻辑思维。 个人站点对国内而言,大多是博客。但国外很有趣,是拿来做交流,不限于博客,for fun。
consensus协议,有paxos、raft、pacificA,应用最普遍的有paxos。由于paxos难以理解、实现困难,例如日志空洞(leader宕机时,当前leader在上一任leader的任期内可能错过了一些日志的同步, 而这些日志在其他机器上形成多了多数派. 由于logID连续递增, 被错过的日志就成了连续logID连续递增序列中的”空洞”, 需要通过重确认来补全这些”空洞”位置的日志。)的处理等非常复杂,诞生了raft,逐渐替代paxos普遍应用到分布式系统中,例如mongodb、kafka等。 raft 一致性协议,一般是基于replicated state machine,基于这个理论:所有节点处理相同顺序相同内容的指令,结果就会一致。一般是以log的方式实现,将client请求append到log中,并同步给各节点,对raft而言做了简化,只有leader才执行读写,日志只会从leader流向follower,follower只参与选主,平时只做replicate。 consensus解决的实际上是3个问题:选主、log复制、safety(never returning an incorrect result) under all non-Byzantine conditions, including network delays, partitions, and packet loss, duplication, and reordering.)。 client请求只要大多数执行成功即返回成功。只要the majority of servers are operational and can communicate with each other and with clients,这个分布式系统就是稳定的。 Raft只有两类rpc,选举与append log,并约定一定的规则。见如下两图:注意约定的规则,在图中也有说明。 以下是选主rpc 以下是append log rpc 以下是各节点选主状态转换图 初始时,大家都是follower。leader通过定期heartbeat告诉follower自己是主。如果heartbeat间隔大于elect timeout,follower认为没有leader,就会发起选主。 任期term随时间递增,发起elect,会生成新的term,发给rpc给其他所有server,变成candidate. 万一同时有多个candidate多个term怎么办?重试 + […]
近期java之父一直在让大家逐步放弃java 8,转到其他LTS版本上,例如java11或java17,是有道理的。关于java各版本的维护停止时间,详见文末。 通过对线上服务的ab测试,发现java11的zgc在接口响应时间上,优于g1。tp99及平均响应时间都达到30%的提升。 zgc是银弹,适配所有服务吗? 当然不是,zgc适用于低延迟场景,对吞吐量优先的场景,ZGC可能并不适合。zgc属于当代垃圾收集,每次处理的对象更多,更耗cpu。通过在代码中加入读屏障,需要耗费额外的计算资源。所以对hadoop、kafka等数据服务,不推荐使用zgc。 更多关于zgc的实现细节,请参考: https://tech.meituan.com/2020/08/06/new-zgc-practice-in-meituan.html https://wiki.openjdk.java.net/display/zgc/Main java各版本停止维护时间: https://endoflife.date/java
1. 三教:儒教、道教、佛教。 2. 九流:儒家、道家、墨家、法家、名家、杂家、农家、纵横家、阴阳家。 3. 三皇:伏羲、神农、黄帝。另有燧人、伏羲、神农;伏羲、女娲、神农等说法。 4. 五帝:少昊、颛顼、帝喾、尧、舜。另有黄帝、颛顼、帝喾、尧、舜;太昊、炎帝、黄帝、少昊、颛顼等说法。 5. 五行:金、木、水、火、土。 6. 五金:金、银、铜、铁、锡。 7. 八卦:乾(天)、坤(地)、震(雷)、巽(风)、坎(水)、离(火)、艮(山)、兑(泽)。 8. 汉字六书:象形、指事、形声、会意、转注、假借。 9. 书法九势:落笔、转笔、藏锋、藏头、护尾、疾势、掠笔、涩势、横鳞竖勒。 10. 竹林七贤:嵇康、刘伶、阮籍、山涛、阮咸、向秀、王戎。 11. 岁寒三友:松、竹、梅。 12. 花中四君子:梅、兰、竹、菊。 13. 文人四友:琴、棋、书、画。 14. 文房四宝:笔、墨、纸、砚。 15. 中国古代四大民间传说:《牛郎织女》《孟姜女哭长城》《梁山伯与祝英台》和《白蛇传》。 16. 中国四大文化遗产:《明清档案》《殷墟甲骨》《居延汉简》《敦煌经卷》。 17. 中国四大古典戏曲:孔尚任《桃花扇》、王实甫《西厢记》、汤显祖《牡丹亭》、洪升《长生殿》。 18. 七大艺术:文学、音乐、舞蹈、戏剧、绘画、建筑、雕塑。另一种说法为绘画、音乐、雕塑、戏剧、文学、建筑、电影。 19. 中国四大名瓷窑:河北磁州窑、浙江的龙泉窑、江西的景德镇窑、福建的德化窑。 20. 京剧四大名旦:梅兰芳、程砚秋、尚小云、荀慧生。 21. 九属:九代直系亲属,即玄孙、曾孙、孙、子、身、父、祖父、曾祖父、高祖父。 22. 五谷:稻、黍、稷、麦、豆。 23. 中国八大菜系:鲁菜、川菜、粤菜、苏菜、浙菜、闽菜、湘菜、徽菜。 24. 中国四大名绣:苏绣、湘绣、粤绣、蜀绣。 25. 中国四大名扇:檀香扇(江苏)、火画扇(广东)、竹丝扇(四川)、绫绢扇(浙江)。 26. 中国四大名花:河南洛阳的牡丹、浙江杭州的菊花、云南昆明的山茶、福建漳州的水仙。 27. 中国十大名茶:西湖龙井(杭州)、碧螺春(江苏)、信阳毛尖(信阳)、君山银针(岳阳)、六安瓜片(安徽)、黄山毛峰(安徽)、祁门红茶(安徽)、都匀毛尖(贵州)、铁观音(福建安溪)、武夷岩茶(福建崇安)。
Nginx rewrite not work when it comes to vue. 前两日有一个需求,将所有uri前缀是/con的请求做转发。于是在nginx配了rewrite permanent,例如以下: reload之后,发现不生效,还是之前的跳转情况,自动跳转入登陆页。 尝试修改了多次,依然不见效。 F12查看,网络请求状态码没有变成301。改成return 403后,依然如此。 关键点来了,打开nginx accesslog查看,跳转时并没有请求nginx。 这时才想起来vue自身的routing。vue做为单页面前端,在第一次进入页面时,加载了核心组件,包括routing,之后的页面路由由vue自己控制。 验证如下,在服务器上直接curl请求/con,发现能够正常返回301或403。 所以,对于vue的项目,需要做url转发时,需要编码在vue工程内实现,示例如下: