自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

腐烂的橘子

后端开发工程师

  • 博客(49)
  • 收藏
  • 关注

原创 什么是扎实的基本功?MySQL 基础知识看看你了解多少

如果你先创建了视图,但你可能会使用 update 更新视图里的数据,但是视图展示的还是老数据,会造成数据不一致。:如果 shipper_id 为空,返回 comments,如果 comments,如果 为空,返回 Not assigned。当前很多同学沉迷于“碎片化学习”,问题在于获取到的都是零碎的知识,没有体系化的知识框架,这对于练就扎实的基本功是极其不利的。这时要懂得中庸之道“慢即是快”的道理,系统学一遍,查漏补缺,不要觉得有些你知道就学不下去了,要耐得住性子,系统学习。

2024-06-23 00:45:11 158 1

原创 这些常用 MySQL 用法,99% 的人都不知道!

本文首发于公众平台:腐烂的橘子。

2024-06-18 09:21:53 245

原创 架构每日一学 16 :不要再做多层抽象了!

比如上面提到的上下架需求,主要的实体有商家、供应链、链接、类目、商品、元数据、原文件等,主要操作有类目选择属性、验证商品、风控、获取文件、内容加密等,这些实体和操作都可以中台化或者 Fass 化。如果没有了解细节就进行架构抽象,那么最终的效率只能停留在假设阶段,你必须要意识到的是抽象会提升系统的复杂度,削弱系统的迭代效率和稳定性,因此没有目标驱动和数据支撑的架构抽象是不可取的。然而在高速迭代的互联网业务中,业务往往探索的方向变化大,迭代快,进行多层架构往往是得不偿失的,相比之下更好的办法是进行阶段性重构。

2024-06-13 10:23:53 229

原创 AI 领域未来的 5 个预测

本文首发于公众平台:腐烂的橘子最近看完腾讯集团副总裁、腾讯研究院院长司晓进行的《相变:下个时代的前情提要》为主题的分享,以及其他 AI 趋势的文章后,我迫不及待想把自己对 AI 趋势的一些看法分享给大家。相关的文章我会写在文末,欢迎大家共同思考交流。下面进入正题,聊聊我对人工智能领域的 5 大预测。

2024-06-05 18:15:08 917

原创 架构每日一学 14:架构师如何进行可行性探索?

谈到风险,我们会下意识地认为风险是一个贬义词,是对一个项目不利的地方。事实上,风险经常可以作为架构师的筹码,给自己的架构活动换取更多的时间。比如你想过河,在你面前有一条小桥,但是年久失修,比较危险,远处有一个高架桥比较安全。如果你从小桥过去,相比高架桥会面临更大的风险,但是节约时间;相反,如果我们选择高架桥需要多花半天或一天的时间。如果业务要求项目在很短的时间内上线,而架构师评估下来具有一定的风险,那么这时架构师这时就可以通过对风险的评估,为自己争取更多的时间。风险有多大?回报是什么?

2024-06-04 23:06:53 941

原创 架构每日一学 15:想要提升协作效率,必须先统一语义

如果发现在不同的语境中使用相同的名词,却代表不同的含义,这个时候就需要准确地描述这些概念。

2024-06-04 23:04:25 598

原创 架构每日一学 13:架构师如何确认架构活动的目标?

小结一下,目标的确认需要从不同的角色出发去审视,这三个角色分别是决策者、执行者和赞助者,从而使目标更正确,合理和可达。假如你在负责由内审部门主导的实际合规的项目,但是内审部门没有任何的资源调度权利,这时如果认为内审是赞助者,那你的判断就是错误的,必须要找到真正的赞助者,比如业务部门的负责人,只有他才能判断审计的优先级足够高,且愿意投入研发资源来完成这件事。这就是目标正确性的含义,副总裁的目标从长远来看是正确的,但不是目标正确,因为企业当下应该追求的目标是市场份额,而不是利润。其次是目标的合理性。

2024-05-29 14:27:46 549

原创 架构每日一学 12:架构师创造价值必备的四项能力

那么不同研发中心之间的沟通,其实是比较隔离的,如果一个架构活动会涉及多个研发中心的协同,那么沟通将成为一个难题,如果我们不能改变沟通结构,那么架构设计就会有局限性。不同职能,比如业务、产品、开发,一般都在高强度开发代码,所以普遍会存在认知的差异,这时架构师就需要将这些认知的差异抹平,形成一个宏观的、完整的规划。一、沉淀文档不是简单的记录开发的过程,这个过程是被动的,真正的沉淀知识是要通过主动思考,形成文档的结构和内容,这是一个主动思考的过程。在跟踪风险的过程中,积极主动思考,并对架构方案及时调整和优化。

2024-05-27 21:56:59 326

原创 架构每日一学 11:快手高级副总裁给年轻人的几点建议

文章首发于公众平台:腐烂的橘子于冰毕业于清华大学,从 05 年开始接触音视频领域,到现在已经在垂直行业深耕将近 20 年。先后经历了两次创业,曾在 Hulu、FreeWheel 等公司专攻音视频领域,现任快手高级副总裁。作为一名资深架构师,于冰对技术人的成长提出了自己的一些认知,在此分享给大家。

2024-05-25 10:41:55 340

原创 架构每日一学 9:架构师要学会构建或寻找一个友善的环境

因为架构师的决策权并不是本身拥有的,而是业务产品和技术,将自己的决定权交由架构师手中,由架构师进行决策,所以架构师决策时,不能偏袒某一方或者因为一己私欲而违背原则。对于架构师要能通过这几个方面判断企业当前的文化环境是什么样的,架构师的生命周期非常短暂,如果这个文化环境与你的初衷完全背离,那么要果断离开。二,沟通方式,企业内部不同职能之间,上下级之间是怎么沟通的?架构师通常不直接管理团队,而是管理架构活动,那么如果想在架构活动中保障技术方案的正确性,并能做到有序推进架构方案,就需要处于一个相对友善的环境中。

2024-05-20 22:01:41 322

原创 互联网行业,那些看上去“必成大器”的人都具备什么特质?

二是同样在亚马逊时期,亚马逊公司内部有一个全员公开的内部文档,里面记录了公司所有发生的 P0 级事故的复盘文档,这些文档详细记录了事故发生的原因、过程以及后续的改进,郭当时将所有的这些文档都看了一遍。这里还有一个要强调的点,一般来讲,开发处于需求的最末端,从业务发生、到产品设计、到开发上线,开发工程师与业务的距离最远,导致很多情况下,开发者将忙碌等同于成长。除此之外,GitHub 上有很多明星项目,这些明星项目的代码就体现了行业里的一些解决方案,这些解决方案是真正可以落地实施的,具有极大的参考意义。

2024-05-20 22:00:22 298

原创 美团副总裁:读透这本书,基本能在互联网公司当中层

当我们说出类似这样的话时,我们的身体和意识是处在一个“刺激-回应”的状态中的,也就是说外界给我们什么样的刺激,我们就给予什么样的回应,这是消极被动的。积极主动包含很多方面,这里我只说最难的部分。当然,现实生活中不是所有的事情都能双赢,极端情况可能会是双输,如果是双输,那么宁可止损不要合作,但只要有协同合作的场景发生,我们就一定要站在双赢的角度去谈判和思考,这就是原则。假如一个人去医院看眼睛,说自己眼睛模糊,看不清楚了,但是医生看都没看,就给他配了一副药,说你回去吃吧,你这就是上火的原因,这时你会怎么想?

2024-05-17 22:28:53 461

原创 行业洗牌时刻到来!从互联网发展看 AI

本文首发于公众平台:腐烂的橘子在讲 AI 之前,我想先和大家共同梳理一下互联网的发展历史。中国互联网发展截止到现在,刚好 30 年。1994 年 4 月 20 日,中国通过一条 64K 的国际专线接入国际互联网,中国互联网时代从此开始,这一年被称为“中国互联网元年”[1]。此后中国互联网的发展大致经历了以下几个阶段。

2024-05-16 09:14:40 529

原创 架构每日一学 6:作为架构师,你必须学会寻找商业模式

因为那时候的框架还不够成熟,但是到现在如果你还在维护自己的微服务框架,而随着 Spring 框架的开源,即使你每天很努力的工作,创造的价值也可能是一个负数,这时候你写的框架反而成了一种累赘,因为公司里的同学不仅要使用并维护你的框架,公司还要为这些同学付出昂贵的工资,这是很大的成本。比如你是营销团队的一名开发,通过对接公司内部新的圈客模型,相同数量的用户质量更好,从而下单数更多,经过 A/B Test 订单数上涨 10%,那么这 10%,就是你创造的直接增量价值。这就是你通过理解商业模式创造的价值。

2024-05-14 22:59:44 412

原创 架构每日一学 5:拼多多如何通过洞察人性脱颖而出?

这里同样可以用上篇文章谈到的马斯洛需求理论来解释,首先人性的贪婪是源于物种,为了生存争夺领地水源而产生的动机,所以本质上占便宜的这个需求属于生理需求,所以当它到来时会首先占据你的大脑,直到你满足了这个需求之后,才会进一步满足你更高层次的需求。“移动互联网后,人们交互方式和生活方式发生了本质改变,当网上的商业生态仍然照搬 PC 模式没有更新,我们认为这是有机会的,即在新的环境下,消费者需要有一种新的消费场景。没错,聚划算确实满足了用户占便宜的性质,但是淘宝无所不能,更多满足的是用户的猎奇心智;

2024-05-13 09:23:11 291

原创 架构每日一学 4:成为首席架构师,你必须学会顺应人性

也就是说,动机是有优先级的,当前的你,睡觉的动机比吃饭的动机优先级更高。这就说明,当一个人的需求所诱发的动机是发自内心的,那这些动机就有强大的内驱力,科维在《高效能人士的七个习惯》一书中也将“积极主动”放到了第一个习惯,如果一个企业中的员工都是积极主动的,且动机是发自内心的,那这个企业将有无限的能量。这些不同层次的需求背后都对应各自的动机,你可以有很多需求,但是某个时刻只能有唯一的动机占据你的大脑,一旦某个动机抢占成功,这时你的听觉嗅觉,触觉思维,所有的活动都在为你这个唯一的动机而服务。

2024-05-11 13:25:17 462

原创 架构每日一学 3:架构师六个生存法则之一:如何找到唯一且正确的架构目标?(二)

后来的事情我们也知道了,京东和腾讯就什么较劲了两年,后来刘强东去美国待了 8 个月,腾讯趁机开足马力,结果还是没比过京东,于是刘强东回国后,京东就和腾讯达成合作,腾讯推出电商业务,改为持有京东股份并为京东提供流量支持。总之,确定架构的目标是一个过程,这个过程我们要发挥作为架构师的义务,坚持原则做事,保证架构目标是符合公司战略的。有了这几个要素,我们可以在评估一个架构方案时,根据每个要素的权重,拆分出一些量化的指标,有助于我们深入理解这个结构方案是否无限逼近我们的目标。目标往往没有对错,只有合适不合适。

2024-05-05 21:00:56 652

原创 架构每日一学 2:架构师六个生存法则之一:架构必须有且仅有一个目标(一)

在架构活动中,我们必须有且仅有一个符合公司战略目标的目标,这样能保证系统的结构化,不至于“烂尾”,系统的复杂度也会合理,也能避免开发者的“心力”的流失。系统中增加了新的复杂度,导致整个系统无序。项目初期,有人认为某个系统不应该“过度设计”,应该保持“极简”,随着业务不断发展,业务复杂度也极速变高,只能在原有简单的系统上不断堆叠,老的代码也不敢修改,最终整个系统臃肿不堪。除此之外,没有目标的架构活动会导致整个系统复杂度增加,这是一个“增熵”的过程,维护的成本,开发的成本都会增加,进而浪费企业的研发资源。

2024-05-04 12:00:13 655

原创 架构每日一学 1:成为一名架构师,你必须具有“战略意图”

最近学习了《郭东白的架构课》,受益良多。作为一名普通程序员,有时候不禁想问公司里的架构师大牛是怎么成长的,为什么他可以是一名架构师,而我们只能在公司里写代码做需求?郭在文章中提出了很多超出以往认知的观点,让我重新审视了架构师这个职业。除此之外,他还系统地提出了一些方法论和实际的案例,理论和实践结合,所以我们有理由相信:架构师的成长是需要方法的,而不是靠工作经验堆叠起来的。

2024-05-03 11:42:22 799

原创 后端每日一题 2:DNS 解析过程

回到正题,请求根服务器会返回顶级域名权威服务器的 ip,对于 www.baidu.com,.com 保存在顶级域名服务器,根服务器返回 .com 所在的顶级域名服务器的 ip 地址。负载均衡:DNS 服务器可能会非常繁忙,所以一个域名可能对应若干个 ip 地址,这时会返回一个 ip 地址的集合,由于客户总是向集合里的第一个 ip 地址建立连接并传输数据,因此 DNS 服务器通过控制返回 ip 的顺序来达到负载均衡的目的。[2]Dos 是使用一个服务器攻击,DDoS 是利用多个服务器组成一个僵尸网络来攻击。

2024-04-27 22:43:53 735 1

原创 哲学家就餐:死锁及解决方案 Java

如果 4 个哲学家同时拿起左边编号较小的餐叉,第 5 个哲学家左边是优先级 4,右边是优先级 0,因为 0 已经被占用了,所以他无法拿起餐叉,因此不会发生死锁。假如当前有 0~4 五个哲学家,0,2 正在吃饭,这时 1 由于两个餐叉都被占用而无法吃饭,对于 3,如果这时拿起剩余的一只餐叉,就有可能发生死锁。每个哲学家不能公平地获取到餐叉,如果哲学家 1 拿餐叉的速度很慢,哲学家 2 思考速度很快,每次都会很快把餐叉拿起来,那么哲学家 1 永远不能拿起右手边的餐叉。如果是脏的,则擦干净并交出餐叉。

2024-04-26 20:40:14 889 2

原创 后端每日一题 1:说一下三次握手

这个时间是不固定的,因为这个超时时间是基于 RTO 来计算的,RTO 的计算方式在 RFC6298 文档(或其他版本文档)中有定义,可以自行研究一下。第三次握手是客户端发送 ACK 报文给服务端,目的是让服务端知道,客户端已经确认了服务端的初始序列号。这个报文段有两个序列号,一个是服务器自己生成的初始序列号,另一个是回复序列号,回复序列号用来回复第 1 步客户端发送来的序列号,值是 x + 1。的初始值是 3 秒,所以超时时间是 3 秒,在发送 SYN 包的 3 秒后,会重新发送一次 SYN 包。

2024-04-26 20:06:58 946 1

原创 Beetl 源码解析:GroupTemplate 类

其中缓存管理比较简单,基本就是封装了 ConcurrentHashMap 的方法,只对外暴露 4 个方法,这也是我们构建本地缓存管理的常用方式:基于 ConcurrentHashMap 构建暴露特定方法的自定义缓存管理器。Beetl 是一款 Java 模板引擎,在公司的项目中大量运用,它的作用是写通用代码时,有一些差异化的逻辑需要处理,这时可以把这些差异化的逻辑写在模板里,程序直接调用,实现了代码的低耦合。,接下来的几篇文章,将对其源码进行解析,如有不合理的地方,欢迎各位大佬批评指正。

2024-04-23 16:08:53 901 1

原创 InnoDB 有哪些锁?

空间索引锁是为了支持 SPATIAL 索引产生的,SPATIAL 是一个空间索引,而 Next-Key 锁无法判断在空间上的间隙,所以空间索引锁可以解决这个问题。本着查找根源的思路,我在 MySQL 的官方文档[1]上找到了最原始对于 InnoDB 的讲解,以下是对该文档的笔记和理解,仅供参考学习之用。如果一个事务请求加的锁与现有的锁兼容,那么该事务将获得该锁,否则事务将等待,直到现有锁被释放。记录锁锁定的是索引记录,如果表定义为没有索引,InnoDB 创建一个隐藏的聚集索引[2]来锁定记录。

2024-04-22 13:39:24 773

原创 蚂蚁一面:GC垃圾回收时,内存分配和回收策略有哪些?

HotSpot 虚拟机并不要求年龄必须达到 15 才进入老年代,还会根据一个动态机制来判断,即:如果在 Survivor 空间中相同年龄的所有对象总和大于 Survivor 空间的一半,年龄大于或等于该年龄的对象就可以直接进入老年代,无需等到 -XX:MaxTenuringThreshold=1 中配置的年龄。在每次 Minor GC 之前,虚拟机都会检查老年代最大可用连续空间是否大于新生代的所有对象总空间,如果成立,我们认为这次 Minor GC 是安全的。当年龄到达 15 岁时,就会晋升到老年代。

2024-04-22 00:06:28 1106 1

原创 腾讯面试:20 亿个 QQ 号,如何去重?

网上文章讲述的大多是此方法,即将哈希区域被设置为 N 个单独的位置,从 0~N-1,这 N 个位置初始值都是 0,首先,需要将集合中的每个元素使用哈希算法映射在不同的地址上,将这些位置值为 1。HashSet 或其他的数据结构都使用了传统的哈希方法,得到的结果是准确的,而布隆过滤器得到的结果不一定准确,因为它使用了一种近似的哈希算法。方法 1 是从传统的无误差方法中自然推导出来的,思路是集合中并不直接保存元素本身,而是将元素编码为 code 后保存,code 比元素本身小,从而能使集合容纳更多的元素。

2024-04-20 16:34:50 422

原创 布隆过滤器原理-原论文解析

布隆过滤器是由 BURTON H. BLOOM 在 1970 年提出的一种哈希方法,用于判断一个元素是否存在于某个集合中。HashSet 或其他的数据结构都使用了传统的哈希方法,得到的结果是准确的,而布隆过滤器得到的结果不一定准确,因为它使用了一种近似的哈希算法。那为什么还要使用它呢?因为数据量变大时,假如达到了 1 亿,传统的哈希方法效率将变低,布隆过滤器的性能却仍然很好。以下是论文的部分介绍,有兴趣的可以看下原论文。

2024-04-20 08:28:46 770 3

原创 (validate) on project rocketmq-broker: Failed during checkstyle execution: There are 2 errors report

mvn clean test-compile -Dcheckstyle.skip=true

2024-04-13 15:54:52 92

原创 OpenJDK源码下载

https://hg.openjdk.org/

2024-03-07 10:18:09 359

原创 一些实用的文档分享

https://info.support.huawei.com/info-finder/encyclopedia/zh/ACL.htmlhttps://developer.twitter.com/en/docs/twitter-idshttps://blog.twitter.com/engineering/en_us/a/2010/announcing-snowflakehttps://segmentfault.com/a/1190000011282426

2024-02-22 15:46:58 382 2

原创 财务-业财一体化梳理

https://zhuanlan.zhihu.com/p/448129604

2024-02-18 11:14:46 348 1

原创 Java 基础讲解链接

类加载的 5 个过程:https://mikechen.cc/34011.html

2024-01-12 18:14:54 328 1

原创 MIT6.s081 编译QEMU中的错误

错误解决。

2023-07-27 09:56:20 298 1

原创 如何在一台机器上创建两个不同的 redis 实例

以上,你已经成功在一台 Linux 机器上运行了两个 Redis 实例。每个实例使用自己的配置文件、端口和数据目录。

2023-06-29 09:55:33 392 1

原创 聊聊三种常用的分布式锁

以上实现方式都不是完美的,在实际生产中要合理评估,选择适合自己的方案。性能redis > zookeeper >= 数据库可靠性zookeeper > redis > 数据库实现复杂度zookeeper > redis > 数据库[1]什么是分布式锁?实现分布式锁的三种方式[2]面试官又问我分布式锁。。。

2023-06-26 20:47:49 153 1

原创 互联网大厂工作感受(2023 整理)

毕业后,在4家互联网大厂工作感受(关心美团阿里字节拼多多的进。说说字节三年工作体验没有好话字节粉慎入。2023年,我还留在互联网大厂。在字节跳动工作是怎样的?

2023-06-25 16:25:39 79

原创 字节跳动-后端面经整理(2023 整理)

字节跳动|后端开发实习生|一面,二面,HR面 (OC)字节跳动|抖音电商平台治理|后端日常实习生|三面面经。字节跳动|抖音电商平台治理|后端日常实习生|二面面经。字节跳动|抖音电商平台治理|后端日常实习生|一面面经。字节跳动基础架构后端开发面经(春招实习-已转正)字节跳动 20230217 后端日常实习 二面。2023-03-15 字节跳动-后端-二面过。2023-03-15 字节跳动-后端-二面过。字节跳动-后端开发实习生(今日头条)面经。字节跳动后端开发实习面经(Golang)

2023-06-25 16:08:53 1615

原创 上海-互联网公司排名

文章目录第一梯队:一线互联网公司第二梯队:小巨头第三梯队:独角兽 or 垂直领域 or 互联网电商类资讯类旅游类人工智能&商业智能工具类游戏类房产汽车类金融类在线教育物流运输参考文章第一梯队:一线互联网公司阿里巴巴腾讯字节跳动蚂蚁集团美团点评拼多多第二梯队:小巨头哔哩哔哩滴滴出行携程饿了么阅文集团哈啰出行快手百度京东网易第三梯队:独角兽 or 垂直领域 or 互联网电商类得物App唯品会叮咚买菜返利网小红书洋码头达达&京东到家

2023-06-25 13:12:05 1212

原创 字节跳动面试题-计算机网络篇(二)TCP和UDP区别是什么?TCP依据什么来保证可靠性?TCP是面向什么进行传输?

总之,TCP提供可靠的、面向连接的、有序的数据传输,适用于对数据完整性和顺序性有较高要求的场景;UDP则是无连接的、不可靠的、快速的数据传输协议,适用于实时性要求高、对数据传输可靠性要求相对较低的场景。假如你要传输文本、图像、音频等不同格式的文件,只要使用了 TCP,以为着这些数据包都将拆分为一个一个较小的数据包,即字节流。因为 TCP 提供的是一种无差别的数据传输服务,它仅负责按照顺序传输字节流,而不对传输的数据做任何解释或处理。即使你发的是语音、文字、图片,对于 TCP 来讲,都是字节流。

2023-06-21 09:36:58 95

原创 字节跳动面试题-Java语言篇(一)ThreadLocal的作用?如何实现?会不会出现内存泄漏?如何避免内存泄漏?

ThreadLocal 是 Java 中的一个类,用于在多线程环境下维护线程局部变量。它提供了一种线程安全的方式来存储和访问线程私有的数据,确保每个线程都可以独立地访问自己的变量副本,而不会与其他线程的数据冲突。ThreadLocal 的主要作用是为每个线程创建一个独立的变量副本,使得每个线程在使用变量时都可以独立地操作,而不需要进行同步操作。这在某些场景下非常有用,例如在多线程任务中,每个线程需要保持自己的状态信息。

2023-06-20 09:37:16 98

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除