首页 文章 精选 留言 我的

精选列表

搜索[微服务框架],共10000篇文章
优秀的个人博客,低调大师

爱奇艺基于 Android App Bundle 动态化框架 Qigsaw 1.3.3 版本发布啦

Qigsaw 是基于Android App Bundles开发的一套组件动态化方案,你可以享受Android App Bundles的开发工具极速开发体验。此外,如果你的应用有国际化需求,那么利用Qigsaw,你就可以完成国内国外无缝切换。 Qigsaw 项目地址: [https://github.com/iqiyi/Qigsaw](https://github.com/iqiyi/Qigsaw) 感谢老铁们,来个star!!! 本次1.3.3版本更新详情如下: 迁移至AndroidX。 调整SplitInstallReporter插件安装结果通知逻辑,无论是否首次安装均会回调,SplitBriefInfo新增installFlag来获取是否首次安装。 适配Android Gradle Plugin 3.6.0+。 修复vivo&oppo手机会偶现libart.so崩溃,增加oat文件格式校验,防止oat文件是损坏的。 其他bug fix,详见commits。 更多问题,欢迎大家交流。

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

爱奇艺 Qigsaw 1.3.2 版本发布,基于 Android App Bundle 的动态化框架

本次 Qigsaw 1.3.2 修复并优化了一些已知问题。欢迎大家体验交流,目前已有不少一线厂商接入使用。 本版本更新如下: 修复某些情况下,旧插件信息文件未删除问题。 Multiple-ClassLoader模式下,优化类查找速度,并实现插件ClassLoader之间findResources相关逻辑。 若当前App版本中某一插件已安装,Qigsaw将不再通知安装结果。 打包过程中,若插件版本号未变更,不再重复上传操作。 其他已知问题修复。 Qigsaw GitHub 首页有交流方式,期待大家加入!

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

爱奇艺基于 Android App Bundle 动态化框架 Qigsaw 1.2.3 版本发布啦

经过各个接入方配合,迄今最稳定版本1.2.3正式发布了,解决若干打包编译问题。 目前已有不少一线知名厂商接入,欢迎咨询。本次版本更新记录如下: Qigsaw-Gradle-Plugin 适配增量编译问题。 Qigsaw-Gradle-Plugin 提供 qigsawInstall${variantName} 命令,通过该命令可以安装 qigsaw 生成的APK。 Qigsaw-Gradle-Plugin 插件升级流程体验优化。 提供 Qigsaw#registerSplitActivityLifecycleCallbacks 方法,可监听插件 Activity 生命周期回调。接入方通过该接口可以统计插件DAU。 Qigsaw-Gradle-Plugin 若干 bug 修复。

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

爱奇艺基于 Android App Bundle 动态化框架 Qigsaw 1.2.0 版本发布啦

更新日志如下: 修复多ClassLoader模式,插件Application可能未初始化的问题。 插件多ABI支持,依据用户当前设备CPU架构及APK自身ABIs来加载对应插件ABI的Native Library。 依据项目工程NDK配置以及APK文件lib目录的ABI类型,来自动选择内置插件存放APK lib还是assets目录。内置插件存放APK lib目录可减少插件一次拷贝工作,节省用户磁盘空间。 Qigsaw Gradle Plugin 修复3.2~3.5兼容性bug。 调整Report相关接口,包括SplitLoadReporter、SplitInstallReporter等,提供更多插件信息供开发者投递。 SplitInstallReporter 和 SplitLoadReporter 失败通知,包含已加载或安装成功的插件数据。 应 Qigsaw 接入者需求,增加是否校验插件签名配置。详情参考 SplitConfiguration 中 verifySignature 配置。

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

一个高准确率的Flutter埋点框架如何设计

作者:闲鱼技术-兰昊 背景 用户行为埋点是用来记录用户在操作时的一系列行为,也是业务做判断的核心数据依据,如果缺失或者不准确将会给业务带来不可恢复的损失。闲鱼将业务代码从Native迁移到Flutter上过程中,发现原先Native体系上的埋点方案无法应用在Flutter体系之上。而如果我们只把业务功能迁移过来就上线,对业务是极其不负责任的。因此,经过不断探索,我们沉淀了一套Flutter上的高准确率的用户行为埋点方案。 用户行为埋点定义 先来讲讲在我们这里是如何定义用户行为埋点的。在如下用户时间轴上,用户进入A页面后,看到了按钮X,然后点击了这个按钮,随即打开了新的页面B。 这个时间轴上有如下5个埋点事件发生: 进入A页面。A页面首帧渲染完毕,并获得了焦点。 曝光坑位X。按钮X处于手机屏幕内,且停留一段时间,让用户可见可触摸。 点击坑位X。用户

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

GO从入门到进阶教程系列 - 研发高性能ORM框架操作mysql篇

上一篇教程我们了解到了基础的GO语法,今天我们来学习如何使用GO操作mysq,下面就直接进入步骤操作环节 技术版权归属 广州市金狮网络科技有限公司 (https://kingc.cn/) ,如需商用请联系公司 1. 先获取mysql驱动,类似Java加载驱动jar, 通过window cmd命令或者Linux控制台执行 go get github.com/go-sql-driver/mysql 2. 我们先写个数据库连接对象方便扩展 // 数据库配置 type DBConfig struct { Host string // 地址IP Port int // 数据库端口 Database string // 数据库名称 Username string // 账号 Password string // 密码 } 3. 通过数据库配置进行mysql实例化 func NewMysql() (*sql.DB, error) { // 初始化mysql连接参数 conf := DBConfig{ Host: "127.0.0.1", Port: 3306, Database: "test", Username: "root", Password: "123456", } // 定义占位符字符串,使用配置值替换%s和%d link := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8", conf.Username, conf.Password, conf.Host, conf.Port, conf.Database) // 打开mysql获得实例对象 db, err := sql.Open("mysql", link) // 打开mysql失败,返回nil对象,以及返回err对象 if err != nil { panic(util.AddStr("mysql初始化失败: ", err.Error())) return nil, errors.New("mysql初始化失败: " + err.Error()) } // 打开mysql成功返回db对象,err=nil return db, nil } 4. 获得mysql操作实例后,进行增删查改操作(由于时间关系,暂时只写了新增示例,包含事务和非事务) func CRUD(db *sql.DB) error { // 编写需要执行的sql createSql := "insert test_user(username, password, age, sex) values(?,?,?,?)" // 预编译sql stmt, err := db.Prepare(createSql) if err != nil { panic("预编译失败: " + err.Error()) } // 提交编译sql对应参数 ret, err := stmt.Exec("zhangsan", "123456", 18, 1) if err != nil { panic("提交数据失败: " + err.Error()) } // 保存成功后获取自增ID fmt.Println(ret.LastInsertId()) return nil } func CRUD1(db *sql.DB) error { // 编写需要执行的sql createSql := "insert test_user(username, password, age, sex) values(?,?,?,?)" // 预编译sql,事务模式 tx, err := db.Begin() if err != nil { panic("开启事务失败: " + err.Error()) } stmt, err := tx.Prepare(createSql) if err != nil { tx.Rollback() // 回滚事务 panic("预编译失败: " + err.Error()) } // 提交编译sql对应参数 ret, err := stmt.Exec("zhangsan", "123456", 18, 1) if err != nil { tx.Rollback() // 回滚事务 panic("提交数据失败: " + err.Error()) } // 保存成功后获取自增ID fmt.Println(ret.LastInsertId()) tx.Commit() // 提交事务 return nil } 5. 最后执行测试用例test func TestMysql1(t *testing.T) { db, err := NewMysql() if err != nil { panic(err) } CRUD(db) } func TestMysql2(t *testing.T) { db, err := NewMysql() if err != nil { panic(err) } CRUD1(db) } 上面的几个示例基本涵盖GO操作mysql的用法,下一篇文章我会讲解如何封装可扩展性强的mysql底层,敬请期待!

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

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文件系统,支持十年生命周期更新。

WebStorm

WebStorm

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

用户登录
用户注册