永红的互联网手记

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

0%

绝大多数数据库,在执行 update 语句时,update t set a = b, b = a 便可实现 a、b 列值互换,赋值表达式右侧的值取的都是原始值。MySQL 则是例外,其单表更新是自左到右依次完成,即先完成 a = b,然后在完成 b = a (此时 a = b),所以执行结果变成 a、b 列都是 b,然后多表更新则又不尊从该更新法则。

这个问题源于业务中一次对券有效期进行延期的操作,需求是对优惠券有效期延期 35 天。

  • 一部分券在生效中,直接修改过期时间即可;
  • 一部分券已经过期,修改过期时间后,需要判断一下是否仍然是过期的还是生效中的,修改券的状态
阅读全文 »

在短短的两个月里,已经遇到了 2 次这个问题,第 1 次是 macOS@Catalina 版本,第 2 次是升级后的 macOS@Big Sur 版本,在这里记录一下解决办法。

macOS@Catalina 版本

重启系统进入恢复模式,关闭 SIP,重启后命令行执行下面这行代码,再创建文件夹就能成功了。

1
sudo mount -uw /

macOS@Big Sur 版本

重启系统进入恢复模式,关闭 SIP(不确定有没有这个步骤,如果有人尝试可以评论一下),接下来稍稍麻烦一点,修改 /etc/synthetic.conf 文件

阅读全文 »

在 Java Virtual Machine Specification 中,有对 JVM 指令集的详细描述,可以打开链接查看:

  • Java 11:https://docs.oracle.com/javase/specs/jvms/se11/html/jvms-6.html
  • Java 8:https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html

也有人整理了一个对照表,记录在下面

阅读全文 »

Mercurial是跨平台的分布式版本控制软件,主要由Python语言实现,但也包含用C语言实现的二进制比较工具。Mercurial一开始的主要运行平台是Linux,现在Mercurial已经移植到Windows、Mac OS X和大多数的类Unix系统中。Mercurial主要由命令行程序组成,现在也有了图形用户界面。对Mercurial的所有操作都由用不同的关键字作为参数调用程序“hg”来实现,Hg是参考水银的化学符号而取的名字。

Mercurial的主要设计目标包括高性能、可扩展性、分散性、完全分布式合作开发、能同时高效地处理纯文本和二进制文件,以及分支和合并功能,以此同时保持系统的简洁性[1]。Mercurial也包括一个集成的Web界面。

Mercurial的创建者和主要开发人员是Matt Mackal。其源代码采用GNU通用公共许可证第二版为授权,确保了Mercurial是一个自由软件。

阅读全文 »

技术爱好者周刊,每周一发布,欢迎提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是做什么的以及它的使用和基本原理。
阅读全文 »