永红的互联网手记

我相信好代码和好产品改变世界!

0%

技术爱好者周刊,每周一发布,欢迎提issue贡献内容。

后端

  • C++服务编译耗时优化原理及实践
    大型C++工程项目,都会面临编译耗时较长的问题。不管是开发调试迭代、准入测试,亦或是持续集成阶段,编译行为无处不在,降低编译时间对提高研发效率来说具有非常重要意义。
  • 爱奇艺微服务标准技术架构实践
    为数以亿计的用户提供优质的视频服务的爱奇艺技术产品团队,为了适应业务的快速迭代和创新,并支撑海量的用户请求,很多团队都对各自的业务系统自发地进行了微服务架构的改造。
  • 步入超高清视频时代视频编码技术的机遇与挑战——AV1时代要来了
    近些年随着视频行业的迅猛发展,尤其像短视频、点播、直播、VR等领域的爆发,人们对于高清、超高清视频体验的追求越来越强烈,流媒体平台如何在提升观众观看体验,同时降低播放成本,利用技术降低带宽消耗的同时又能最大化的还原视频的画质和质量,成为了重要的课题。
  • 一文彻底理解 I/O 多路复用
    这里的关键点在于,我们事先并不知道一个文件描述对应的I/O设备是否是可读的、是否是可写的,在外设的不可读或不可写的状态下进行I/O只会导致进程阻塞被暂停运行。
  • 10 张图告诉你,Kafka 是怎么做到支持百万级 TPS 的?
    谈到大数据传输都会想到 Kafka,Kafka 号称大数据的杀手锏,在业界有很多成熟的应用场景并且被主流公司认可。这款为大数据而生的消息中间件,以其百万级TPS的吞吐量名声大噪,迅速成为大数据领域的宠儿,在数据采集、传输、存储的过程中发挥着举足轻重的作用。在业界已经有很多成熟的消息中间件如:RabbitMQ, RocketMQ, ActiveMQ, ZeroMQ,为什么 Kafka 在众多的敌手中依然能有一席之地,当然靠的是其强悍的吞吐量。下面带领大家来揭秘。
阅读全文 »

视频来源:https://www.bilibili.com/video/BV1vf4y1B7tt

大背景

25 岁的 Java

Java 的现状

2020 年是 Java 诞生的第 25 个年头,Oracle 表示,目前 Java 仍然流行是流行的编程语言,广泛使用在企业中。目前全世界有超过 69% 的专职开发人员使用 Java,全世界有 510 亿台活动 Java 虚拟机(JVM)在部署中,目前 Java 主要被用于分析、数据管理、大数据、DevOps、移动、持续开发工具和聊天机器人等服务。

历史版本的主要新特性

在过去的这些年中,Java 在过去增强功能的推动下为用户提供了超过二十年的创新。例如:

  • JDK 5:enum、泛型、自动装箱与拆箱、可变参数、增强循环等
  • JDK 6:支持脚本语言、JDBC 4.0 API
  • JDK 7:支持 try-with-resources、switch 语句块增加 String 支持、NIO 2.0 包
  • JDK 8:lambda 表达式、Stream API、新的日期时间的 API、方法引用、构造器引用
  • JDK 9:模块化系统、jshell
  • JDK 10:局部变量的类型推断
  • JDK 11:ZGC 的引入、Epsilon GC
  • JDK 12:switch 表达式、Shenandoah GC、增强 G1
  • JDK 13:switch 表达式引入 yield、文本块
  • JDK 14:instanceof 模式识别、Records、弃用 Parallel Scavenge + Serial GC 组合、删除 CMS GC
阅读全文 »

技术爱好者周刊,每周一发布,欢迎提issue贡献内容。

后端

  • ClickHouse集群搭建(一)
  • ClickHouse集群搭建(二)
    ClickHouse 是俄罗斯的Yandex于2016年开源的列式存储数据库(DBMS),主要用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报告。
  • ReentrantLock 的这几个问题,你都知道吗?
    之前分析 AQS 的时候,了解到 AQS 依赖于内部的两个 FIFO 队列来完成同步状态的管理,当线程获取锁失败的时候,会将当前线程以及等待状态等信息构造成 Node 对象并将其加入同步队列中,同时会阻塞当前线程。当释放锁的时候,会将首节点的 next 节点唤醒 (head 节点是虚拟节点),使其再次尝试获取锁。
  • 复杂环境下落地Service Mesh的挑战与实践
    在私有云集群环境下建设 Service Mesh ,往往需要对现有技术架构做较大范围的改造,同时会面临诸如兼容困难、规模化支撑技术挑战大、推广困境多等一系列复杂性问题。本文会系统性地讲解在美团在落地 Service Mesh 过程中,我们面临的一些挑战及实践经验,希望能对大家有所启发或者帮助。
  • CDN工作原理及其在淘宝图片业务中的应用
    淘宝的图片访问,有98%的流量都走了CDN缓存,只有2%会回源到源站,节省了大量的服务器资源。但是,如果在用户访问高峰期,图片内容大批量发生变化,大量用户的访问就会穿透cdn,对源站造成巨大的压力。今年双11,淘宝鹿班的主图价格表达升级项目,就面临了这种挑战,让我们看看是如何解决的吧。
    阅读全文 »

I have to make a difficult choice. Decide quickly. 我必须做一个艰难的选择。那就是迅速做出决定。


If I were you, I wouldn’t worry about it. 如果我是你,我不会为此而担忧。

They worked hard at whatever they did, but they had a sense of achievement. 无论做什么,他们都很努力,有一种成就感。

A company should find ways to innovate not just in products but also in functions, business models and processes. 一个公司要寻求的不仅仅是产品创新,还应寻求运营、商业模式和流程方面的创新。

阅读全文 »

能折磨你的,从来不是别人的绝情,而是你的心存幻想和期待。 ​​​​


生活如果没有目标,就会变得懒散。一旦决定“今天这样做”,生活一下子就会张弛有度。 ​​​​中村恒子

如果一个人必须完成一件自己不喜欢的事,最好的办法就是尽快做好,然后结束。迟子建

无论风暴将我带到什么样的岸边,我都将以主人的身份上岸。贺拉斯

阅读全文 »

技术爱好者周刊,每周一发布,欢迎提issue贡献内容。

后端

  • Mysql 索引精讲
    本文主要讲述常见索引类型(实现层面)、索引种类(应用层面)、聚簇索引与非聚簇索引、覆盖索引、最佳索引使用策略。
  • 京东到家MySQL容器化,为何首选Docker而非K8S?
    本文根据詹乡泉老师在〖deeplus直播第250期〗线上分享演讲内容整理而成。(文末有获取本期PPT&回放的方式,不要错过),分享视频:https://youtu.be/skZlLhqDUdc
  • 高德最佳实践:Serverless规模化落地有哪些价值?
    曾经看上去很美、一直被观望的 Serverless,现已逐渐进入落地的阶段。今年的”十一出行节”,高德在核心业务规模化落地 Serverless,由 Serverless 支撑的业务在流量高峰期的表现十分优秀。传统应用也能带来同样的体验,那么 Serverless 的差异化价值又是什么呢?本文分享高德 Serverless 规模化落地背后的实践总结。
  • Elasticsearch 技术分析(九):全文搜索引擎Elasticsearch,这篇文章给讲透了!
    本篇主要是基于之前的博文的一个总结,希望通过这篇文章能让读者大致了解Elasticsearch是做什么的以及它的使用和基本原理。
阅读全文 »

技术爱好者周刊,每周一发布,欢迎提issue贡献内容。

后端

  • 干货 | 携程 Cilium+BGP 云原生网络实践
    Cilium 是近两年最火的云原生网络方案之一。Cilium 的核心基于 eBPF,有两大亮点:基于 eBPF 的灵活、高性能网络,以及基于 eBPF 的 L3-L7 安全策略实现。携程 2019 年开始在生产环境使用 Cilium,本文将介绍 Cilium 在携程的落地情况,以及我们基于 Cilium 的、覆盖虚拟机、物理机和容器的云原生安全的一些探索。
  • 数据人的“大考”:AnalyticDB如何强力支撑双11?
    每年的双11都是云原生数据仓库AnalyticDB MySQL版(原分析型数据库MySQL版)的一块试金石。今年AnalyticDB除了在阿里数字经济体内进入更多核心交易链路,全力支撑双11以外,AnalyticDB全面拥抱云原生,构建极致弹性,大幅降低成本,释放技术红利,重磅发布了诸多全新企业级特性,让用户及时拥有极高性价比的云原生数据仓库。本文深度解析云原生数据仓库AnalyticDB面临的挑战和最新关键技术,分享双11护航背后的技术实践与经验。

前端

  • 双十一SSR优化实践:秒开率提升新高度
    会场是每年双十一的主角之一,会场的用户体验自然也是每年最关注的点。在日趋复杂的业务需求下,如何保障我们的用户体验不劣化甚至能更优化是永恒的命题。
    今年(2020)我们在不改变现有架构,不改变业务的前提下,在会场上使用了 SSR 技术,将秒开率提高到了新的高度(82.6%);也观察到在用户体验得到优化的同时,业务指标如 UV 点击率等也有小幅的增长(视不同业务场景有不同的提升,最大可达 5%),带来了不错的业务价值。
    本文将从服务端、前端两个角度介绍我们在 SSR 上的方案与经验
    1、前端在解决工程化、业务效果评估上的具体实践与方法论
    2、服务端在解决前端模块代码于服务端执行、隔离和性能优化上的具体实践与方法论
  • 爱奇艺知识移动端组件化探索和实践
    组件化对于任何一个业务场景复杂的APP以及经过多次迭代之后的产品来说都是必经之路,组件化是指解耦复杂系统时将多个功能模块拆分、重组的过程。组件化要做的不仅仅是表面上看到的模块拆分解耦,其背后还有很多工作来支撑组件化的进行,例如结合业务特性的模块拆分策略、模块间的交互方式和构建系统等等。本文主要讲述爱奇艺知识APP如何结合自身的业务特点,探索和实践了一套高效的移动端组件化方案。
阅读全文 »

技术爱好者周刊,每周一发布,欢迎提issue贡献内容。

后端

  • Java中9种常见的CMS GC问题分析与解决
    目前,互联网上 Java 的 GC 资料要么是主要讲解理论,要么就是针对单一场景的 GC 问题进行了剖析,对整个体系总结的资料少之又少。前车之鉴,后事之师,美团的几位工程师搜集了内部各种 GC 问题的分析文章,并结合个人的理解做了一些总结,希望能起到“抛砖引玉”的作用。
  • Java-Collectors常用的20个方法
  • TDengine + EMQ X + Grafana 轻松搭建高效低成本的边缘侧工业互联网平台
    本文将介绍基于TDengine、EMQ X搭建一个集工业数据采集、汇聚、清洗、存储分析以及可视化展示等能力于一体的轻量级边缘计算工业互联网平台。在此方案基础上,读者可以根据自身需求调整方案设计,从而搭建满足实际业务需求的工业互联网平台,加速实现工业智能化转型。
  • 微服务授权应该怎么做?
    前后端鉴权是一个很大的话题,不同组织的鉴权方式各不相同,甚至对同一协议的业务实现也可能相去甚远。本文尝试从认证与授权两个维度来描述标题中的鉴权,大部分篇幅还是偏认证。
  • 分布式系统!如何实现用户追踪和认证?
    讲使用 spring security 等具体技术的资料已经很多了,这篇文章不打算写框架和代码的具体实现。我们会讨论认证和授权的区别,然后会介绍一些被业界广泛采用的技术,最后会聊聊怎么为 API 构建选择合适的认证方式。
  • 一例 Go 编译器代码优化 bug 定位和修复解析
    本文中介绍了 Go 编译器的整体编译流程脉络和一个编译优化错误导致数据越界访问的 bug,并分析了对这个 bug 的排查和修复过程,希望能够借此让大家对 Go 编译器有更多的了解,在遇到类似问题时有排查思路。
  • 服务注册中心 | 记一次Consul故障分析与优化
    在微服务体系中,服务注册中心是最基础的组件,它的稳定性会直接影响整个服务体系的稳定性。本文主要介绍了爱奇艺微服务平台基于Consul的服务注册中心建设方式,与内部容器平台、API网关的集成情况,并重点记录了Consul遇到的一次故障,分析解决的过程,以及针对这次故障从架构上的优化调整措施。Consul 是近几年比较流行的服务发现工具,用于实现分布式系统的服务发现与配置。与其它分布式服务注册与发现的方案相比Consul 的方案更“一站式”,使用起来也较 为简单。他的主要应用场景为:服务发现、服务隔离、服务配置。
阅读全文 »

技术爱好者周刊,每周一发布,欢迎提issue贡献内容。

后端

  • 程序员都应该知道的URI,一文帮你全面了解
    URI 是每个程序员都应该了解的概念,同时相关联的还有 URL, URN 等概念簇。了解这些概念,可以帮助我们更好地窥探万维网(WWW)的设计,同时也能帮我们在工作中有效解决跟 URI 相关概念的问题,更加理解 encode,decode 工作原理,更好地助力网络编程!
  • 5G时代|淘宝直播高画质低延时技术探索
    5G将对视频分辨率和清晰度提出越来越高的要求。淘宝作为一个数亿级用户的短视频与直播平台,业务多样,两端用户分布广,设备和网络情况复杂,给多媒体内容存储和分发带来巨大挑战。在内容生产过程中把控好质量和成本,在内容分发和消费过程中确保用户体验,是当前面临的主要问题。为了解决这个问题,我们有两个优化目标,一是在画质不变的前提下降码率,二是在码率不变的前提下提升画面质量。
  • 干货 | 携程Elasticsearch数据同步实践
    Elasticsearch是最近几年非常热门的分布式搜索和数据分析引擎,携程内部不仅使用ES实现了大规模的日志平台,也广泛使用ES实现了各个业务场景的搜索、推荐等功能。本文聚焦在业务搜索的场景分享了我们在做数据同步方面的思考和实践,希望能对大家有所启发。
阅读全文 »

技术爱好者周刊,每周一发布,欢迎提issue贡献内容。

后端

  • 你不知道的JMM底层原理
    在多线程并发的世界里synchronized、volatile、JMM是我们绕不过去的技术坎,而重排序、可见性、内存屏障又有时候搞得你一脸懵逼。有道是知其然知其所以然,了解了底层的原理性问题,不论是日常写BUG还是面试都是必备神器了。

前端

  • Native地图与Web融合技术的应用与实践
    本文将WebView与Native地图组件叠加到一起,实现了用户手势事件智能分发的机制,解决了WebView与Native地图在同一页面内布局困难的问题。
  • 波塞冬:伴鱼运营活动前端配置化实践
    波塞冬,是伴鱼活动运营解决方案的总称,包含活动规则体系、h5 可视化开发平台等,名称来源于古希腊神话,波塞冬是海洋和所有水系的管理者,寓意为 palfish 发展提供超能力。
  • 干货 | 深入浅出Apple响应式框架Combine
    Combine.framework 是Apple在2019 WWDC 上基于Swift推出的函数响应框架(Functional Reactive Programming),支持Apple全平台的操作系统(iOS13+,macOS 10.15+等)。函数式响应框架无论在哪个平台早已流行泛滥,开源的Rx更是实现了各种语言的响应式编程框架。Apple在这个时候推出响应式框架,无疑是对自己护城河的进一步巩固。事实上SwiftUI的数据驱动就是依赖Combine。本文将深入浅出地介绍Combine的基本概念和原理,然后通过具体demo详细阐述其在实际编码中的应用。
    阅读全文 »