2023-11-01 16:30:00 ~ 2023-11-02 16:30:00
tcp 四次挥手是超经典的网络知识,但是网络中的异常状况千奇百怪,说不定会“偷袭”到标准流程的盲区。最近笔者遇到了一个罕见的挥手乱序问题,经过对内核代码的分析和试验,最后终于找到了原因,角度可谓刁钻。
本文从技术视角,将排查过程记录下来,既是对整个过程的小小总结,将事情彻底完结掉,也是对 tcp 实现的一些细节的学习记录。
登录后可查看文章图片
在互联网系统中,权限一般分为功能权限和数据权限,功能权限比较常见,因为通用性和复用性,业内有很多的通用框架和设计。但对应数据权限来说,由于数据权限强依赖客户组织架构和具体业务的关系,往往实现起来会比较复杂,很少有一个设计架构能完全覆盖住,所以大部分的系统都一致性的遵循此策略:如非必要的尽量不使用数据权限,必须要的则单独控制。
目前常见数据权限方案基本为硬编码,具体分为如下两种:一是拆分功能页面,即根据不同数据权限用户,通过复制拷贝的方式,增加多个类似的菜单,再通过功能权限配置来给不同用户设置不同的菜单,从而实现数据权限的控制;二是在功能对应的后端接口里做判断,对不同数据权限的用户,过滤不同的数据列表透出给用户。硬编码的方式显而易见的优点是技术难度低,实现简单。
但以上硬编码的方式,无论选择用哪一种,都无法解决系统灵活性的问题,每当系统有老的需求要变更或者新的需求要新增,对应的开发人员就不得不去调整编码,修改菜单和页面,由此可见,硬编码对开发的成本和运维的成本都比较高。与此同时,行业内常见的通用数据权限控制,大都是给单一业务使用,和业务耦合度较高,可能在当前业务客户端是通用可扩展的,但是在另一个业务客户端就无法做到无缝接入了。
因此,如何提高数据权限设置的灵活性,降低耦合性,是本领域技术人员需要解决的问题。
登录后可查看文章图片
之前我们探讨过KMM,即Kotlin Multiplatform Mobile,是Kotlin发布的移动端跨平台框架。当时的结论是KMM提倡将共有的逻辑部分抽出,由KMM封装成Android(Kotlin/JVM)的aar和iOS(Kotlin/Native)的framework,再提供给View层进行调用,从而节约一部分的工作量。共享的是逻辑而不是UI。
其实在这个时候我们就知道Kotlin在移动端的跨平台绝对不是想止于逻辑层的共享,随着Compose的日渐成熟,JetBrains推出了Compose-Multiplatform,从UI层面上实现移动端,Web端,桌面端的跨平台。考虑到屏幕大小与交互方式的不同,Android和iOS之间的共享会极大的促进开发效率。比如现在已经非常成熟的Flutter。令人兴奋的是,Compose-Multiplatform目前已经发布了支持iOS系统的alpha版本,虽然还在开发实验阶段,但我们已经开始尝试用起来了。
登录后可查看文章图片
高德在构建Go生态演化过程中,已经实现了QPS从0到峰值千万的飞跃,本篇文章主要介绍在此过程中积累的一些技术决策及性能优化和重构经验。
登录后可查看文章图片
从2013年毕业加入鹅厂,不知不觉已然过去10年。期间团队一直有同学反馈,对个人的成长有些迷茫,缺少后台开发的全景图谱来建立体系化的知识结构。所以这里结合自己的研发经验,把实战中觉得重要的知识点,整理一个后台开发的成长 RoadMap,希望最后给开发同学的成长一些参考和帮助。
这次的架构演进,主要分享一下近期针对性能层面做的一些架构调整和优化。其中最大的调整就是Proxy-DB层的线程模式从BIO改造成了性能更好的NIO。下面会详细介绍一下具体的改造细节以及做了哪些优化。
登录后可查看文章图片
规则引擎是提升业务规则管理效率的有效利器,什么是规则引擎,什么场景适合用规则引擎,如何在生产实践中落地,这些如果有疑问,这篇文章将给你逐一解惑。用实际业务场景遇到的问题为样例,带你全面了解规则引擎实战的点点滴滴。
登录后可查看文章图片
本文通过Python脚本实现对OC类中的成员属性的调用进行分析作为实践示例,作为熟悉业务及技术现状时,重构影响评估依据。
本文受众是专业前端开发者和图形开发者,从介绍浏览器渲染引擎开始,逐渐引出和图形渲染引擎的比较,尝试从图形视角探索和理解浏览器的渲染原理。
登录后可查看文章图片
在京东到家购物车系统中,用户基于门店能够对商品进行加车操作。用户与门店商品使用Redis的Hash类型存储,如下代码块所示。不知细心的你有没有发现,如果单门店加车商品过多,或者门店过多时,此Key就会越来越大,从而影响线上业务。
登录后可查看文章图片
关注公众号
接收推送