- 博客(213)
- 资源 (6)
- 收藏
- 关注

原创 AI浪潮下,软件程序员未来的危机与机会
近年来,AI 技术以迅猛之势融入各个领域,深刻地改变着人们的生活与工作方式。在医疗领域,AI 技术展现出了巨大的潜力与价值。以智能医疗诊断为例,AI 能够快速分析医学影像,如 X 光、CT、MRI 等,帮助医生更准确、高效地检测疾病。通过深度学习算法,AI 可以识别影像中的异常特征,对疾病进行早期诊断和风险评估。一些先进的 AI 医疗诊断系统能够在短时间内处理大量的医学影像数据,为医生提供辅助诊断建议,大大提高了诊断效率和准确性,降低了误诊和漏诊的风险。
2025-02-18 10:59:04
919

原创 分布式数据库常用复制详解
数据复制(Data Replication)是指在分布式系统中,将数据从一个节点复制到多个节点的过程。通过数据复制,系统可以在多个节点上保存相同的数据副本,从而提高数据的可用性和容错性。当某个节点发生故障时,其他节点仍然可以提供数据服务,确保系统的持续运行。数据复制是分布式数据库中的核心技术之一,它通过将数据复制到多个节点,提高了系统的可用性、容错性和性能。不同的复制模式和一致性模型适用于不同的应用场景,选择合适的数据复制架构对于构建高效、可靠的分布式系统至关重要。
2025-02-08 10:40:00
765
原创 得物多模态大模型在重复商品识别上的应用和架构演进
为了能够在运行时根据类目动态确定具体的提示词,我们定义了一套按类目进行规则描述的方案,并在定义中配置不同类目的提示词和具体的规则,如下所示:首先规则描述按一级类目、二级类目、三级类目分成了3个规则组,因为有的类目的规则比较简单,只需要按一级类目设计对比规则即可,例如箱包和服装;但是有的类目规则非常复杂,需要细化到具体的二级类目或三级类目,这时我们就需要在二级或三级类目规则组中描述具体的规则,例如3C数码。
2024-11-04 16:36:24
1443
2
原创 实时捕捉与追溯:得物基于 eBPF 打造云上网络连接异常摄像头
网络相关的跟踪点主要位于在目录下的netsocktcp等子目录,其中tcp目录下跟踪主要和 TCP 网络协议相关,sock 目录下为网络资源对象socket相关的跟踪点。如果本地安装了性能分析工具perf,则可以使用。
2024-08-10 15:42:50
1723
原创 得物星云系统技术架构浅析
DASS 层服务对外提供各种通用能力,APASS 层服务作为 DASS 层服务的底部支撑服务,不对外提供接口服务,属于星云内部能力,这样划分是为了让每个服务的能力边界和服务分层更加明确,也能缩小应用接口访问权限的管理,只有 DASS 层服务才需要接口权限申请。圈选 check 服务应对不同场景时使用了不同的数据层,有 hbase、redis、es 等,不同数据层都有自己的特点,不同场景的读写流量以及底层数据量是不一样的,选择合适的数据层很重要。
2024-05-21 20:25:21
2215
原创 Apache SeaTunnel在VIP 中的使用
SeaTunnel这款产品的中文翻译个人觉得非常契合产品定位,大多数翻译软件都会翻译成(海底隧道),SeaTunnel作为源 - 目的地的数据传输工具,其性能超越了市面上绝大多数的同步工具,后面会详细介绍性能。
2024-03-13 16:38:51
1416
原创 LinkedIn 开源分布式存储系统Ambry
分区是固定大小的资源,集群间的数据重平衡都是在分区级别进行的。为了put操作,Ambry可以配置为同步复制(确保 blob 在返回之前出现在多个数据节点上),或异步复制-同步复制可防止数据丢失,但会在写入路径上引入更高的延迟。数据节点和前端服务器都能够访问 clustermap,并且会始终使用它们当前的视图来做出决策,这些决策涉及到选择可用的机器、过滤副本以及识别对象的位置等。在put操作中,分区是随机选择的(出于数据平衡的目的),在get/delete 操作中,分区是从blob id 中提取的。
2023-12-26 13:50:04
1386
原创 如何准确分析需求
简单来说,就是从黑盒子视角回答“整个软件系统为客户解决了什么问题、创造了什么机会”,“对于系统而言,最关键的干系人有哪些”,“各个重要干系人对系统的关注点是什么?传统的需求分析是站在技术视角展开的,关注的是“方案级需求”;业务流程分析,最重要的是厘清如图7-5所示的业务流程八要素,包括五个基本要素(分工、活动、协作、产物关系、分支),三个管理要素(审核、规则、异常)。在信息系统需求分析中,数据主线的重点在于范围与关系,也就是哪些数据要纳入系统,它们之间的关系是什么,而领域建模正是解决这两个问题的关键。
2023-11-13 20:21:17
282
原创 MPP 架构在 OLAP 数据库的运用
在此声明,吞吐量是在一个固定的时间区间内(时间足够长以产生一个代表性的结果),执行的相同种类的查询任务的数量。比如说,4个节点的集群和400个节点的集群将支持同一级别的并发度,而且他们性能下降的点基本上是同样。如果一个节点总是执行的慢于集群中其他的节点,整个集群的性能就会受限于这个故障节点的执行速度(所谓木桶的短板效应),无论集群有多少节点,都不会有所提高。事实上,在一个确定的量级,你的MPP系统将总会有一个节点的磁盘队列出现问题,这将导致该节点的性能降低,从而像上面所说的那样限制整个集群的性能。
2023-10-10 09:59:18
831
原创 面试常问:B+树深层理解
B+Tree 经过几十年的发展已经成为 OLTP 数据库的首选索引结构,深入分析开始前先介绍一些书籍给大家,B+Tree 的演进非常的复杂,有很多的大牛论文都做出了很关键的指导性作用,就算当前还是在不断探索优化的可能,其目的主要是为了降低锁粒度降低读写冲突。这里的锁可能不完全是大家以为的 Java 临界区线程锁,后面会详细阐述何为 Lock有很多博文都有描述Mysql。
2023-09-01 18:00:34
541
原创 SpringBoot 常用注解
如果扫描到有@Component、@Controller、@Service等注解的类,将其注册为Bean,也可以自动收集所有的Spring组件,包括@Configuration类。@Import:用来导入其他配置类,作用就是和xml配置的import标签作用一样,允许通过它引入@Configuration注解的类(java config),Spring4.2以后也可以导入普通的Java并将其声明为一个bean。@Inject:是JSR330中的规范,等价于默认的@Autowired。
2023-08-22 15:32:09
282
原创 MPP 还是主流架构吗
在此声明,吞吐量是在一个固定的时间区间内(时间足够长以产生一个代表性的结果),执行的相同种类的查询任务的数量。比如说,4个节点的集群和400个节点的集群将支持同一级别的并发度,而且他们性能下降的点基本上是同样。如果一个节点总是执行的慢于集群中其他的节点,整个集群的性能就会受限于这个故障节点的执行速度(所谓木桶的短板效应),无论集群有多少节点,都不会有所提高。事实上,在一个确定的量级,你的MPP系统将总会有一个节点的磁盘队列出现问题,这将导致该节点的性能降低,从而像上面所说的那样限制整个集群的性能。
2023-08-22 15:27:28
1442
原创 Raft 思想在架构中实践
TiDB 是 NewSql 一款很火的数据库,解决了 Mysql 对于海量数据的处理缺陷以及横向扩展能力(分布式),在此基础上还同时拥有 ACID 的事务特性,如果之前使用过Mysql 那么学习使用 TiDB 基本没有什么学习成本我们重点来说说 TiDB中的 TiKV,TiDB 也是采用了存算分离架构,TiKV 就是存储层。
2023-07-24 10:31:12
531
原创 数据安全架构设计
在提到安全架构之前,我们先看看安全的定义:安全是产品的质量属性,安全的目标是保障产品里信息资产的保密性(Confidentiality)、完整性(Integrity)和可用性(Availability),简记为CIA。■ 保密性:保障信息资产不被未授权的用户访问或泄露。■ 完整性:保障信息资产不会未经授权而被篡改。■ 可用性:保障已授权用户合法访问信息资产的权利。以IT系统为例,假设某企实施薪酬保密制度,员工张三在工资系统中查询自己工资的时候,利用系统缺陷,知道了其他员工的工资,这就属于保密性被破坏。
2023-06-09 10:49:39
1869
原创 IDEA中超详细DEBUG教程
Debug用来追踪代码的运行流程,通常在程序运行过程中出现异常,启用Debug模式可以分析定位异常发生的位置,以及在运行过程中参数的变化。通常我们也可以启用Debug模式来跟踪代码的运行流程去学习三方框架的源码。
2023-03-28 17:13:00
3659
原创 常用设计模式的正确应用
根据入参来判断执行哪段私有方法逻辑,这种场景其实在我们实战中很常见,也并不是说所有的类似场景都要改成策略模式,因为策略模式的缺点就是子类太多,个人建议这种分支逻辑在 >= 3 &&
2023-03-16 10:47:35
340
原创 Elasticsearch 需要了解的都在这
Master节点并不知道主分片节点位于哪里,它只能向所有节点上的所有Shard去询问你的website下标是不是0,那么这个询问的请求量就等于 节点数 * Shard数,如果你的规模非常庞大,那么这个将会很耗时,这个时候可能会获取到多份下标为0的请求响应,5.X版本之后主分片的选举是根据一个List,在这个集合中的分片都是元信息最新的分片数据。其实他是分了2个步骤做这件事,先选出ID最大的主节点,然后再从元信息最新的节点将元信息数据复制到选举出来的主节点。
2023-01-29 23:02:59
1562
1
原创 Java编码的坑你知多少?
在Java中,RandomAccess和Cloneable、Serializable一样,都是标志性接口,不需要任何实现,只是用来表明其实现类具有某种特质的,实现了Cloneable表明可以被拷贝,实现了Serializable接口表明被序列化了,实现了RandomAccess则表明这个类可以随机存取,对我们的ArrayList来说也就标志着其数据元素之间没有关联,即两个位置相邻的元素之间没有相互依赖和索引关系,可以随机访问和存储。是内部类,并且是静态(static修饰)的即为静态内部类。
2022-12-09 19:13:48
656
原创 Cloud Native 演进可行性研究
Paul Fremantle提出Cloud Native的原因是他一直想用一个词表达一种架构,这种架构能描述应用程序和中间件在云环境中的良好运行状态。Cloud Native是以云和微服务架构为基础构建系统的从研发流程的角度来讲,自动化的研发环境是Cloud Native的基础。因为使用云作为基础设施,已经具备基础的自动化能力,可以达到自服务的要求,流程中应该尽量减少沟通人员的规模,尽量减少测试及运维对开发的协助。
2022-11-01 14:45:20
412
原创 kafka每秒千万级优化思路
如果秒级产生150MB的数据,如果Consumer消费的速度不够快,那么8G的PageCache可能不到半小时就没了,那么就会带来新的问题了,consumer消费的数据由于在PC上面找不到,就会不停的去硬盘查找数据,那么内存度和交换度的性能是数量级的差别,新的Topic数据大概率会存储在日志数量最少的borker磁盘上,如果这部分topic数据量比较大,那么就会导致存储不均衡,这个borker磁盘会率先报警,部分borker磁盘到达存储阈值后会对kafka带了很大的性能影响。可以通过如下命令查看迁移状态。
2022-10-12 19:19:15
1608
原创 常用SQL优化总结
然而,如果在编译时建立访问计划,变量的值还是未知的,因而无法作为索引选择的输入项。14)并不是所有索引对查询都有效,SQL是根据表中数据来进行查询优化的,当索引列有大量数据重复时,SQL查询可能不会去利用索引,如一表中有字段sex,male、female几乎各一半,那么即使在sex上建了索引也对查询效率起不了作用。11)在使用索引字段作为条件时,如果该索引是复合索引,那么必须使用到该索引中的第一个字段作为条件时才能保证系统使用该索引,否则该索引将不会被使用,并且应尽可能的让字段顺序与索引顺序相一致。
2022-10-08 22:20:04
155
原创 性能和成本的综合架构:单元化架构
第一次听见单元化架构的小伙伴可能一时有点懵,听说过微服务架构、网格架构等但是单元化架构是什么鬼?其实在我们手机里面很多常用APP都是单元化架构,类似高德导航、金融银行类APP都是将单元化架构进行了很多年,我们都知道导航类APP对于请求RT和请求稳定性都是十分严格的,如果RT延迟很高,等你已经路过某个路口了,导航突然告诉你需要拐弯....这个时候的你是不是心里一万个草泥马涌出来了,那么这个导航APP你到家肯定立刻就卸载了。...
2022-07-24 18:57:08
2846
1
原创 Hbase 深度使用分析
循环put...那是不可能的..可以使用put(List puts) 需要注意的是当一部分数据插入成功后,此时某个RegionServer出现异常,之前的数据是不会回滚的,对于插入失败的数据hbase默认会进行重试直到到达最大重试次数还是失败即会结束重试(失败数据在写缓冲区),不过如果列族错误了,那么不会进行重试,直接抛出异常get(List gets) 返回一个Result数组,如果一部分数据失败,一部分数据查询成功,最终hbase还是会返回异常,如果你希望不要抛出异常而是返回成功部分......
2022-06-21 00:08:29
1177
原创 数据处理分布式计算设计概要
背景描述:一批1亿左右的数据,需要计算所有数据属于哪些类型,然后归类发送到MQ中,这个是一个真实的业务场景,并且会有一定的并发读,可能同一时间10-20个类似的处理任务发生分布式计算简单来说,是把一个大计算任务拆分成多个小计算任务分布到若干台机器上去计算,然后再进行结果汇总。 公司场景一批几亿数据需要进行计算匹配发送,单节点处理经过几轮优化可能需要5小时才能发送完,针对这样的场景开始了分布式计算的设计之路不过数据一旦进行计算拆分,问题会变得非常复杂,像一致性、数据完整、通信、容灾、任务调度等
2022-05-28 23:21:35
652
原创 Sentinel 深度分析
流控配置:资源名的填写分feign/dubbo不同方式:feign 填写请求地址 dubbo 填写sentinel注解的value值@SentinelResource(value = "circle.checkPopulation", blockHandler = "checkPopulation", blockHandlerClass = {BlockExceptionHandler.class})有种更加简单的方式,直接通过簇点链路菜单看各个资源地址,直接进行流控配置针对来
2022-05-17 14:09:10
581
原创 ClickHouse 深度解析第二篇
ClickHouse 诞生之处是为了服务Yandex自家的WEB流量分析产品Metrica,在超过20万亿数据的场景下,ClickHouse能做到90%查询在一秒内返回的效果,但是对于一款OLAP的数据库来说也有不适用的场景:不支持事务 不擅长根据主键按行进行查询 不擅长按行删除数据为了获得极致的查询性能,OLAP数据库会相应放弃很多其他功能的弱化ClickHouse是一款列式存储+数据压缩的数据库,数据压缩的本质就是对一定步长内的重复数据进行转换,案例:压缩前:abcdefg...
2022-04-17 11:33:26
1528
原创 用Java设计实现多实例多库查询
服务的边界职责:大数据层取数统一实现入口(数据源的路由,ADB/CK/HBASE... 大数据操作层数据源的路由) 支持多实例、多库、多表的异构数据查询通过 查询 语义分析+元信息解析,拆解 查询输入 中的异构数据源处理,所有异构数据处理采用异步 Callback 方式解决的问题:多个数据来源写入到不同实例、不同库中,并且一个圈选可以支持圈多个实例(不同库)中的标签、事件数据 单表数据量过大,目前只能通过压缩保留时间解决,需要可以进行按时间段拆表分表查询数据单实例配置上限问题,实例升级..
2022-03-08 21:04:14
4418
原创 SQL 解析原理和使用场景
Github 地址:https://github.com/j-easy/easy-ruleshttps://github.com/j-easy/easy-rules
2022-01-09 16:27:23
4589
原创 ClickHouse 结构以及使用场景
大多数公司的日志系统检索使用的都是 ELK+Kafka+ES 的架构,在日志数据量不是特别庞大的时候其实这种架构还是挺好的,简单并且也很高效,但是当你的公司日志数据量非常庞大每分钟生产1亿条数据的场景下,这种架构的问题就很明显了,主要会出现下面几个问题:延迟很高,kafka收集push 的延迟变高 ES 插入性能迅速下降,大量插入请求只能排队不然 ES 会被打挂,限流排队也就意味着延迟变得更加高我们这边文章只讨论数据存储层进行提效,那么就是 CK 来替代 ES 了CK 高性能的4个特点上图.
2021-12-02 13:53:21
3124
原创 HBase LSM树存储引擎
1.前提讲LSM树之前,需要提下三种基本的存储引擎,这样才能清楚LSM树的由来:哈希存储引擎。 B树存储引擎。LSM树(Log-Structured Merge Tree)存储引擎。2. 哈希存储引擎哈希存储引擎哈希表的持久化实现,支持增、删、改以及随机读取操作,但不支持顺序扫描,对应的存储系统为key-value存储系统。对于key-value的插入以及查询,哈希表的复杂度都是O(1),明显比树的操作O(n)快,如果不需要有序的遍历数据,哈希表就非常适合。代表性的数据库有:Red...
2021-11-07 23:20:06
315
原创 Java 函数式编程的妙用
Jdk8之后新增的一个重要的包 :java.util.function该包下所有的接口都是函数式接口, 按分类主要分为四大接口类型:Function、Consumer、Predicate、Supplier 接口 参数 返回值 说明 Supplier 无 T 供给型:无参,返回一个执行泛型对象 Consumer ...
2021-09-30 13:51:00
416
原创 NGINX超全配置详解
配置文件核心指令mainuser: USERNAME [GROUP] 指定Nginx属主属组,属组可以不指定pid: pid存放路径worker_rlimit_nofile: 子进程可以打开的最大文件句柄数worker_rlimit_core: 子进程异常终止后的core文件worker_rlimit_core 10M;working_directory /path/to/dir;worker_processes: worker子进程数量 autoworker_cpu_affini...
2021-09-04 19:03:01
1249
原创 Elasticsearch断路器相关知识及使用
背景在使用elasticsearch时,如果使用了高基数的聚合查询,有可能导致内存溢出OOM,导致elasticsearch的节点问题,进一步引发该节点上的分片漂移,从而影响线上的查询问题。原因Elasticsearch在执行高基数查询时,会默认为每组数据生成一个桶,并且存放在内存中,当基数很大也就是分组数据的重复性不高时,就会生成很多的桶,从而占用大量的内存。内存使用介绍ES的JVM heap按使用场景分为可GC部分和常驻部分。 可GC部分内存会随着GC操作而被回收;...
2021-08-14 22:24:18
2156
1
原创 傻瓜式SpringBoot-WebFlux入门
再说响应式编程前先来了解下WebSocker在Spring中的支持 注解名 描述 使用场景 WebSocket @ServerEndpoint WebSocket使用,定义端点路径 定义在某个类上,使用ws进行请求就会找到这个端点进入这个类 @OnOpen ws连接建立成功后进入的回调方法 ...
2021-08-05 14:08:32
1926
原创 Redis 间歇性抖动<集群下mget的性能问题>
redis问题在最近公司内部使用redis的时候,在部分场景中发现redis经常会间歇性的抖动,具体表现为在短时间内redis rt上涨明显,RedisCommandTimeoutException异常陡增,如下图:监控面板是按照分钟级别进行统计,所以rt上涨看起来不是很明显。这种情况肯定不太正常,并且在近期出现的频率有上升趋势。定位原因遇到这种问题,首先会想到是不是redis本身抖动造成的,看表象其实很像,无规律,间歇性,影响时间很短,所以第一时间找了DBA确认当时是不是r
2021-07-11 14:29:23
2268
3
原创 SpringBoot事务不起作用问题的解决方案
背景在做业务开发时,遇到了一个事务不起作用的问题。大概流程是这样的,方法内部的方法调用了一个带事务的方法,失败后事务没有回滚。查阅资料后,问题得到解决,记录下来分享给大家。场景在一个UserService里面,一个内部方法callSaveUser调用该service里面的saveUser方法 @Override @Transactional(rollbackFor = RuntimeException.class) public void saveUser(User use.
2021-07-04 09:52:59
991
原创 Sonar-扫描插件自定义扩展
数据平台-研发一组-得物版Sonar开发规约已经制作完成阿里很早之前出过一个流传在坊间的《Java开发手册.pdf》,这个里面定义了很多开发规范,其中最基本必须要遵守的规范阿里出了一套Sonar插件来帮助扫描说的开发插件其实本质就是利用源设计者留下的入口拿到源事件然后进行实现,最终你的实现会在你不知道的时间,不知道的地点被调度执行,这就是设计模式的魅力,保证了开闭原则下进行了功能扩展那么Sonar的设计者为我们留下了哪些入口呢?这个时候我们经常会百度、谷歌,一...
2021-06-13 08:30:07
4314
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人