编者按:笔者遇到一个非常典型JVM架构相关问题,在x86正常运行的应用,在aarch64环境上低概率偶现JVM崩溃。这是一个典型的JVM内部bug引发的问题。通过分析最终定位到CMS代码存在bug,导致JVM在弱内存模型的平台上Crash。在分析过程中,涉及到CMS垃圾回收原理、...
编者按:目前许多公司同时使用x86和AArch642种主流的服务器。这两种环境的算力相当,内存相同的情况下:相同版本的JVM和Java应用,相同的JVM参数,应用性能在不同的平台中表现相差30%,x86远好于AArch64平台。本文分析了一个应用在AArch64平台上性能下降的例...
本文主要介绍AUTOSAR架构下的WdgDriverWdgIfWdgM模块,分析模块之间的依赖关系以及运行原理以帮助快速理解。本文以MPC5746R为主控芯片,以FS6500为SBC,DaVinciConfigurator为AUTOSAR工具链。01模块架构与依赖1、模块介绍AU...
在大多数软件工程师对编写、使用和维护代码的抱怨中,一个常见的问题是缺乏高质量的文档。缺乏文档有什么副作用呢?当遇到一个bug时,这个缩写是什么意思?这份文件是最新的吗?在整个职业生涯中,每个软件工程师都抱怨过文档的质量、数量或者完全缺乏文档。01为什么需要写文档?高质量文档对工程...
在上一篇文章中,我们主要聊了一下:在Windows系统中,安装WSL子系统。文章在此:WSL:在Windows系统中开发Linux程序的又一神器但是WSL只是长得像Linux而已,虽然在这个子系统中,我们可以执行Linux程序,但是到了底层,WSL调用的还是win32API。也就...
大约在2013年,有一首歌在YouTube广为流传,这首歌里有大量的鸡鸣狗叫的“鬼畜”声音,一点都不严肃:
1.背景群里有个小伙伴学习设计加密方法,如同某商用软件输入注册码后就能使用扩展功能。设计时他很自然的想着所写的加密措施是否足够健壮安全,是否有什么方法可以绕过加密检查,也就是破解。权限管理仅在启动后检查一次注册码是否有效——一个if判断,他也认定,若反汇编软件只要欺骗过这条判断加...
夏天意味着什么?是暑假?是阳光?是西瓜和啤酒?还是……不同的人对夏天有不同的解读。而对于大多数爱美之人来说,夏天是永远也填不满的衣橱,是永远期待的新款,是纠结“明天穿什么”的小烦恼。又是一年夏来到,人们怎么会错过换季打折的优惠?其实,很多服装类企业也是这么想的。于是,在今年夏天,...
前边我们已经介绍了Redis五种数据类型的命令与配置文件的基本配置,今天让我们从理论和配置两个层面来揭开Redis持久化的神秘面纱。所谓持久化可以简单理解为将内存中的数据保存到硬盘上存储的过程。持久化之后的数据在系统重启或者宕机之后依然可以进行访问,保证了数据的安全性。Redis...
1主从读写分离大部分互联网业务都是读多写少,因此优先考虑DB如何支撑更高查询数,首先就需要区分读、写流量,这才方便针对读流量单独扩展,即主从读写分离。若前端流量突增导致从库负载过高,DBA会优先做个从库扩容上去,这样对DB的读流量就会落到多个从库,每个从库的负载就降了下来,然后开...
作者简介 微末,携程软件技术专家,关注系统架构,致力于高可用高性能的支撑业务系统开发。一、背景随着携程海外酒店业务的发展,遍布全球的海外供应商与携程总部IDC之间的数据传输量快速增长。技术上,这种日益增长的数据量对跨境网络专线的带宽、延迟等提出了更高的要求;业务上,由于当前有限的...
面试官:你们系统是怎么实现分布式锁的?我:我们使用了redis的分布式锁。具体做法是后端接收到请求后加入一个分布式锁,如果加锁成功,就执行业务,如果加锁失败就等待锁或者拒绝请求。业务执行完成后释放锁。面试官:能说一下具体使用的命令吗?我:我们使用的是SETNX命令,具体如下:SE...
随着业务的发展,每个产品都需要对应数量的开发者作为支撑,但在长期的协作中,我们发现开发团队都会遇到一些普遍难点:构建速度慢、开发测试周期长、协作困难等。 在快速的业务迭代中,各团队的开发人员往往只会将所在团队的问题进行简单的优化,因此会存在各大团队重复造轮子、耦合严重的现象。针对...
导读:目前关系型数据库从上世纪70年代诞生以来得到了广泛应用,各种数字化的信息系统都能见到关系型数据库的身影。在真实的场景里面,业务系统对关系型数据库这种基础软件的要求非常简单,那就是高可靠和高性能,同时希望尽可能借助复杂的SQL语义来简化业务层功能的实现。传统数据库产品例如Or...
作者:Go语言由浅入深链接:https://www.jianshu.com/p/18944235727a你是否想知道企业大规模系统是如何设计的?在软件开发开始之前,我们必须选择一个合适的架构,能提供所需的功能和质量特性。因此,在将架构应用到我们的设计之前,我们应该了解各种不同架构...