首页 文章 精选 留言 我的

精选列表

搜索[自部署],共10000篇文章
优秀的个人博客,低调大师

抖音自研文生图评估体系 EvalMuse 入选 AAAI 2026

抖音多媒体质量实验室宣布,其自主研发的图像生成评估体系 EvalMuse 已成功入选 AAAI 2026。这一成果标志着中国团队在国际顶级人工智能学术会议上对文本生成图像(T2I)评估方法的突破性贡献。 EvalMuse 旨在解决当前 T2I 模型评估中存在的主观性与一致性不足问题。该体系通过引入多维度指标与自动化评估框架,提升了对生成图像的质量判定能力。 整体的工作架构图如下所示: 实验室方面指出,EvalMuse 能够更准确地反映模型在语义一致性、图像清晰度及创意表达上的表现,还为未来大规模模型的标准化评估提供了参考路径。 论文:https://arxiv.org/abs/2412.18150 开源地址:https://shh-han.github.io/EvalMuse-project/

优秀的个人博客,低调大师

华为自研仓颉编程语言将于 7 月 30 日开源

在华为开发者大会HDC 2025期间,华为宣布仓颉编程语言将于7月30日开源。 2024 年 6 月,华为终端 BG 软件部总裁龚体宣布,下一代编程语言仓颉今日起正式开启预览。官网介绍显示,仓颉编程语言是一款面向全场景智能的新一代编程语言,主打智能化、全场景、高性能、强安全。融入鸿蒙生态,为开发者提供良好的编程体验。 其具体特性表现为: 高效编程:面向应用开发,希望语言能够易学易用,降低开发者入门门槛和开发过程中的心智负担,支持各种常见的开发范式和编程模式,让开发者简洁高效地表达各种业务逻辑。仓颉是一门多范式编程语言,支持函数式、命令式和面向对象等多种范式,包括值类型、类和接口、泛型、代数数据类型、模式匹配、以及高阶函数等特性。此外,仓颉还支持类型推断,能够减轻开发者类型标注的负担;通过一系列简明高效的语法,能够减少冗余书写、提升开发效率;语言内置的各种语法糖和宏(macro)的能力,支持开发者基于仓颉快速开发领域专用语言(DSL),构建领域抽象。 安全可靠:作为现代编程语言,仓颉追求编码即安全,通过静态类型系统和自动内存管理,确保程序的类型安全和 null safety 等内存安全;同时,仓颉还提供各种运行时检查,包括数组下标越界检查、类型转换检查、数值计算溢出检查、以及字符串编码合法性检查等,能够及时发现程序运行中的错误;此外,还通过代码扫描工具、混淆工具以及消毒器,进一步提供跨语言互操作安全和代码资产保护等支持。 轻松并发:并发和异步编程能够有效提高处理器利用率,并在交互式应用中确保程序的响应速度,是应用开发中必不可少的能力。仓颉语言实现了轻量化用户态线程和并发对象库,让高效并发变得轻松。仓颉语言采用用户态线程模型,每个仓颉线程都是极其轻量级的执行实体,拥有独立的执行上下文但共享内存。对开发者来说,用户态线程的使用和传统的系统线程的使用方式保持一致,没有带来额外负担;而从运行态视角看,线程的管理由运行时完成,不依赖操作系统的线程管理,因此线程的创建、调度和销毁等操作更加高效,且资源占用比系统线程更少。为了避免数据竞争,仓颉语言提供了并发对象库,并发对象的方法是线程安全的,因此在多线程中调用这些方法和串行编程没有区别,应用逻辑的开发者无需额外关心并发管理。对于一些核心库,仓颉还提供了无锁或者细粒度锁的算法实现,能够进一步减少线程的阻塞,提升并发度。 卓越性能:仓颉编译器及运行时从全栈对编译进行优化,包括编译器前端基于 CHIR(Cangjie HighLevel IR)高层编译优化(比如语义感知的循环优化、语义感知的后端协同优化等),基于后端的编译优化(比如:SLP 向量化、Intrinsic 优化、InlineCache、过程间指针优化、Barrier 优化等),基于运行时的优化(比如轻量锁、分布式标记、并发 Tracing 优化等),一系列的优化让仓颉充分发挥处理器能力,为应用提供卓越的性能支持。另外仓颉语言对运行时进行原生的轻量化设计,通过对运行时模块化分层设计,定义仓颉公共对象模型和运行时公共基础组件,基于公共对象模型,实现运行时的内存管理、回栈、异常处理、跨语言调用等基础能力,大幅减少多个能力间的冗余对象设计,精简运行时体积。同时通过包的按需加载技术,减少仓颉应用启动的冗余包内存开销,因此对于资源敏感设备,占用资源更少,支持更友好。 除此之外,仓颉还支持面向应用开发的一系列工具链,包括语言服务(高亮、联想)、调试(跨语言调试、线程级可视化调试)、静态检查、性能分析、包管理、文档生成、Mock 工具、测试框架、覆盖率工具、Fuzz 工具以及智能辅助编程工具,进一步提升软件开发体验以及效率。 相关阅读: 华为仓颉编程语言正式亮相 仓颉编程语言官网正式上线,首个公测版本开放下载

优秀的个人博客,低调大师

一种自平衡解决数据倾斜的分表方法

作者:京东零售 梁强 1、背景 这篇主要描述了B端令牌系统应用数据分表解决业务数据量增大,且存在的数据倾斜问题,主要面向的场景是一对多数据倾斜问题 1)B令牌的业务背景 先简述一下B令牌的业务背景,B令牌系统是用于营销场景中,将许多用户绑定在一个令牌上,再将令牌绑定在促销上,从而实现差异和精准营销,一般情况下一个令牌的生命周期等同于这个促销。 2)B端令牌的结构现状 令牌和令牌用户关系是一个一对多的关系,早期的令牌系统使用jed分库,2个分片,中间进行了一次扩容达到了8个分片,存储的数据行数达到了1.2亿  3)数据和业务现状 1.2亿数据,分布在8个分库中,每个分库平均1500万,但由于分库字段使用的是令牌ID(token_uuid),有得令牌用户少,只有几千到一万,有的令牌用户多,有100万到150万,令牌总数量并不多,只有2万左右,所以导致数据存在倾斜,有的分库有3000多万数据,有的分库可能只有几百万,这已经开始导致数据库读写性能下降。而又因为令牌用户关系表数据结构很简单,虽然数据行数很多,但占用的空间却不大。8个分库总占用量还不足20G。同时令牌的生命周期基本和促销相同,一个令牌服务于一个或几个促销后,就会慢慢过期被弃之不用,后续会继续创建新的令牌。所以这些过期令牌是可以进行归档的。 同时由于B端业务的发展,业务诉求也更多,和业务沟通中了解到,未来会上线自动选人系统,由系统自动创建令牌,并选择适合促销的人群,未来每个月数据增量在3000万左右,如果运行一年就会增加3.6亿,届时单表数据量平均会达到6000万,当前的设计架构已经完全不能满足业务需求。 同时目前也存在根据令牌ID分页查询令牌下用户的功能,但仅限于给管理端运营使用,使用也不频繁。 2、解决方案的思考 1) 怎么解决这个问题 面对日益下降的数据库读写性能,以及业务增长的需求,当下面临以下几个问题: 1. 如何解决单表数据行数过多的问题 2. 当前分库方案存在比较严重的数据倾斜 3. 如果应对未来数据的增长 2) 技术方案调研和对比 a.数据库分表 一般情况应对第一个问题,通常都是分库分表,而当下我们已经是8个分库,而且8个分库才占用了不足20G空间,单库资源浪费严重,所以完全不会考虑继续增加分库的方式,所以分表才是解决办法。 数据分表通常有两种方式:垂直分表和水平分表。  垂直分表指的是将数据的列进行拆分,然后应用主键或其他业务字段进行关联,从而降低单表数据占用空间,或减少冗余存储,B令牌的场景数据结构简单,数据占用空间小,所以不会使用该分表方式。  水平分表指的是将数据的行以一种路由算法拆分到多张表中,读取时候也基于这种路由算法来读取数据,这种分表策略一般用来应对数据结构不复杂,但数据行特别多的场景。这也是我们即将使用的方式。使用这种方式需要考虑的就是如何设计路由算法,这里也是使用这种方式来分表。 b.路由算法 数据分表路由算法的使用在业内也有多种,一种是利用一致性hash,选择合适的分表字段,对字段值hash后值是固定的,使用该值通过取模或者按位运算的方式得到一个固定的序号,从而确定数据存储在哪张表中。 比较常见的应用如分库大多就是使用一致性hash的方式,通过即时计算分库字段的值判断数据属于哪个分库从而决定将数据存入哪个分库或者从哪个分库读取数据。而如果查询时没有指定分库字段则需要同时向所有分库发出查询请求,最后在汇总结果。 另外像java代码的HashMap数据结构其实也是一种一致性hash算法的分表策略,通过对key进行hash后决定将数据存入数组的哪个序号,HashMap里面用的不是取模的方式获取序号,而是使用按位运算的方式,使用这种方式也决定了HashMap的扩容都是按照2的x次方的大小进行扩容,以后有机会可以介绍这个原理。  上面就是HashMap中的一个简化的数据Hash存储过程,当然我省略了一些细节,比如HashMap中每一个节点都是一个链表(冲突过多还会变成红黑树)。应用在我们的场景中就可以将每个序号当成是一张数据表即可。 以上这种路由算法的优点的路由策略简单,实时计算也不用增加额外存储空间,但也存在一个问题就是如果要扩容则需要将历史数据重新hash一遍进行迁移,比如数据库分库如果增加分库则需要将所有数据重新计算分库,HashMap扩容也会执行rehash重新计算key在数组的序号。如果数据量太大,这种计算过程耗时将会很长。同时,如果数据表太少,或者选择分片的字段离散程度低都会导致数据倾斜。  还有一种分表算法优化了这种rehash过程,这便是一致性hash环,这种方式是在实体节点之间抽象出很多虚拟节点,然后再利用一致性hash算法将数据打在这些虚拟节点上,而每个实体节点其实是负责的该实体节点逆时针方向上和另一个实体节点相邻的虚拟节点的数据。这种方式的好处是假如需要扩容增加节点,增加的节点放在环上任意位置,也只会影响到该节点顺时针方向上相邻节点的数据,只需要将该节点中的部分数据迁移到这个新节点上即可,大大降低rehash的过程。同时由于虚拟节点多,也可以增加让数据更均匀的分布在这个环上,只要将实体节点放置在合适的位置,就能最大程度保证的解决数据倾斜问题。  比如图上就是一个一致性Hash环的hash过程,在整个环上有从0到2^32-1个节点,其中实线的就是真实节点,其他都是虚拟节点,张三通过hash后落到环上的虚拟节点,然后从虚拟节点的位置顺时针寻找真实节点,最终数据就存储在真实节点上,所以疯驴子和李四就存储在节点2上,王五在节点3上,郑六在节点4上。  扩容了一个节点5号后,则需要将节点1和节点5之间的数据迁移到节点5上,其他节点数据则不用变更。但如图上看到的,只加这一个节点,也容易导致每个节点负责的数据不均匀,比如节点2和节点5,相比于其他节点负责的数据就少了很多,所以扩容时最好是成倍扩容,这样数据可以继续保持均匀。 3) 思考我的方案 再回到B令牌的业务场景上来,需要能达成以下诉求 1. 首先必须使用水平分表来解决单表数据量过大的问题 2. 需要能支持根据令牌分页查询用户 3. 由于当前业务数据增量在3000万,但不排除未来业务继续增长的可能,分表数量需要能支持未来扩展 4. 数据行数过高,未来在扩展时必须保证无需数据迁移或者数据迁移成本低 5. 需要解决数据倾斜问题,确保不因为单表数据量过大而导致整体性能降低  基于以上诉求,首先看问题b,如果要支持根据令牌分页查询用户,就需要保证令牌下的所有用户都在同一张表上,才能简单的支持分页查询,否则用一些汇总归并算法则复杂程度过高了,而且表太多也会降低查询性能。虽然也可以通过将数据异构es提供查询功能,但仅仅是为了少量管理端的查询诉求再进行数据异构,成本有些高收益并不明显,也有些浪费资源。所以分表字段就只能确定使用令牌ID。 而上面也提到令牌ID数量并不多,而且令牌下的用户也从1万到100万不等,单纯使用一致性hash的方式用令牌ID作为分表策略则会导致数据倾斜严重,而且未来扩容时数据迁移成本也很高。 但使用一致性hash环又会导致未来在扩容时最好是按2的倍数扩容,不然就会存在有的节点负责的虚拟节点多,有的节点负责虚拟节点少,导致数据不均匀。然而在和数据库同事进行沟通,一个数据库下的数据表数量不宜太多,否则会对数据库带来较大压力,而一致性hash环这种方式可能扩两三次容就会导致分表数达到一个很高的数值。 基于以上问题,在确定使用令牌id作为分表的前提下,就需要着重思考如何支持动态扩容和解决数据倾斜的问题。 3、方案落地 1) 方案概述 a.如何支持动态扩容 分表的字段已经确定使用令牌ID,而前面也提到我们的数据结构是令牌和用户是一对多的关系数据,那么在创建令牌时hash出的分表序号存储下来,后续基于存储的分表序号进行路由,就可以保证未来扩容时也不会影响存量数据的路由,无需进行数据迁移。  b.如何解决数据倾斜 由于选用了令牌ID作为分表字段,而各令牌数据量大小不一,数据倾斜就会是一个大问题。所以这里就想办法引入了一个分表水位的概念。  在用户请求保存或删除关系用户数的时候,基于分表序号对当前分表数量进行一个增减的计数,当某个分表中的数据量处于高水位时,就将该分表从分表算法中剔除,从而让该分表不会继续产生新的数据。  比如当设置阈值1000万为高水位,由于以上5张表都没有达到高水位,则创建令牌时根据令牌ID进行Hash后取模得到3,按顺序获取表,则当前令牌的分表号为b2b_token_user_3。后续关系数据都从该表中获取。  运行一段时间后,表b2b_token_user_1数据量已经增长到了1200万,超过了1000万的水位,这时候在创建令牌则将该表移除,在此进行Hash后取模得到1,则当前分到的表就是b2b_token_user_2。而如果b2b_token_user_1的水位如果一直不能降下来,则该表后续都不会再参与分表,表中的数据量也不会再增加。 当然有一种可能就是所有表都进入了高水位,为了兜底,这时水位功能就失效,所有表都加入到分表中来。 c.定期数据归档,降低分表水位 如果表中的数据量只会不断增加,而不会减少的话,那么早晚所有的表都会达到高水位,这就不能达到动态的效果。上面背景中有提到,令牌创建后是为某一批促销服务,促销终止后,令牌也会失去作用,同时令牌上也有有效期,超过有效期的令牌也会失去作用。所以定期对数据进行归档就可以让那些处于高水位的表把水位慢慢降下来,重新加入到分表中。 而且当前令牌已经存在了一张b2b_token_user的表,里面的数据已经有1.2亿,可以将该表作为图上的0号表,这样在第一次上线时只要将历史令牌都的分表序号都记为0即可,存量数据就不需要再进行迁移,而该表数据量水位高,也不会参与分表。再搭配定期的数据归档,该表的水位也会慢慢将下来。 d.监控机制 虽然可以通过定期进行数据归档,可以让表的水位降下来,但随着业务发展,可能会存在大多数表都进入了高水位,并且都是有效数据的情况。这时候系统就会像HashMap判断容量达到75%就自动扩容一样,我们不能够自动创建表,但当75%的表都进入高水位可以告警出来,开发人员监听到告警人工介入,观察是需要调高水位,还是进行表的扩容。 3) 不足 • 水位阈值和扩容监控 目前水位的阈值还是依靠人工手动设置,应该设置多大还是比较感性的,只能设置一个,在告警以后适当调整。不过其实可以在系统中自动监控接口读写性能的波动,发现大多数表达到高水位时,接口读写性能都没有明显变化,可以系统自动调高阈值,从而形成智能阈值。 而接口性能读写出现明显变化时发现大多数表都达到了阈值,则可以告警提示应当考虑扩容。 4、总结 解决问题从来没有银弹,我们需要利用手里的技术手段和工具,进行组合、适配,使之适合我们当下的业务和场景,没有好或不好,只有适不适合。

优秀的个人博客,低调大师

MyCms 自媒体系统 v4.3.1,接入 ChatGPT 写文章

MyCms 是一款基于 Laravel 开发的开源免费的开源多语言商城 CMS 企业建站系统。 MyCms 基于 Apache2.0 开源协议发布,免费且可商业使用,欢迎持续关注我们。 v4.3.1 更新内容 接入 ChatGPT 提高写作效率,使用前请在 .env 文件增加配置 CG_KEY=chatGPT密钥 ChatGPT 示例页面地址:/system/chatgpt/demo 文章创作页面 站点地址 官方网站 : https://www.mycms.net.cn/ 使用手册:https://www.mycms.net.cn/shouce 二次开发:https://www.mycms.net.cn/dev API 文档:https://www.mycms.net.cn/api-doc 模板下载:https://www.mycms.net.cn/muban 演示后台 : https://demo.mycms.net.cn/system/login 演示后台:admin /admin 优秀案例 在线计算网: https://www.zaixianjisuan.com/ 程序员导航: https://nav.mycms.net.cn/ 古诗词网: https://www.gushici.top/ 火马活码:https://www.huomahuoma.com/

优秀的个人博客,低调大师

MyCms 自媒体系统 v4.2 ,全新后台模板发布

MyCms 是一款基于 Laravel 开发的开源免费的开源多语言商城 CMS 企业建站系统。 MyCms 基于 Apache2.0 开源协议发布,免费且可商业使用,欢迎持续关注我们。 v4.2 更新重点 全新后台模板发布 站点地址 官方网站 : https://www.mycms.net.cn/ 使用手册:https://www.mycms.net.cn/shouce 二次开发:https://www.mycms.net.cn/dev API 文档:https://www.mycms.net.cn/api-doc 模板下载:https://www.mycms.net.cn/muban 源码下载 : https://gitee.com/qq386654667/mycms 演示后台 : https://demo.mycms.net.cn/system/login 演示后台:admin /admin 优秀案例 在线计算网: https://www.zaixianjisuan.com/ 程序员导航: https://nav.mycms.net.cn/ 古诗词网: https://www.gushici.top/ 火马活码:https://www.huomahuoma.com/

优秀的个人博客,低调大师

Lemmy v0.15.2 发布,高性能自托管仿 Reddit 社区

Lemmy v0.15.2 现已发布。Lemmy 是一个 Rust 实现的类似于Reddit、Lobste.rs、Raddle 与 Hacker News 等网站的项目,用户订阅感兴趣的论坛、发布链接和讨论,可以进行点赞/点踩,并对它们发表评论。基于 Fediverse 标准,所有服务器可以联合,这意味着在一台服务器上注册的用户可以订阅任何其它服务器上的论坛,并且可以与在其它地方注册的用户进行讨论。 一些错误修复如下: 查看社区/用户配置文件时不要发出 webfinger 请求(修复#1896)(#2049) 登录时不区分大小写的用户名(#2010) 将社区放在 webfinger 响应的最后(修复#2037)(#2047) 不要检查 MarkCommentAsRead 中的禁令(修复#2045)(#2054) 空帖子正文(#2050) 添加 tombstone 测试,更好的测试错误(#2046) 对于数组也接受单个对象(#2048) 清理可选的帖子。修复#2039(#2043) 修复对被屏蔽者的点赞评论。修复#2033(#2042) 为 lotide federation 添加测试,使 lotide 组可获取(#2035) 删除对活动流的不必要依赖(#2034) 修复私有实例检查。修复#2064(#2065) 更新说明:https://github.com/LemmyNet/lemmy/releases/tag/0.15.2

资源下载

更多资源
Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册