首页 文章 精选 留言 我的

精选列表

搜索[最权威安装],共10000篇文章
优秀的个人博客,低调大师

MySQL “长寿”严重 Bug #11472:外键级联操作触发器不执行

如果有人在 2005 年向你描述一个 MySQL Bug,说它将困扰一个顶级开源数据库近 20 年,你可能会觉得夸张。但 Bug #11472 确实如此。 这个 Bug 的核心问题很具体:当父表上的外键级联操作(如 ON DELETE SET NULL 或 ON UPDATE CASCADE)导致子表行被间接更新或删除时,子表上的触发器不会执行。 Bug 提交者 Omer Barnir 在 2005 年就提供了清晰的复现步骤:建立两张 InnoDB 表 t1 和 t2,t2 上有一个 AFTER UPDATE 触发器,当 DELETE FROM t1 时,t2 的 f_id 被级联设为 NULL——但 t2 上的触发器计数器始终为 0,说明触发器从未被激活。而直接 UPDATE t2 时,触发器是正常工作的。 问题很快被 MySQL 创始人 Heikki Tuuri 确认为已知问题。2005 年 6 月,开发者 Dmitry Lenev 表示将在 5.1 版本修复。然而事与愿违,由于涉及架构层面的复杂性——需要在 MySQL 的 InnoDB 外键实现与触发器执行机制之间建立新的协调路径——这一问题被一拖再拖。2013 年,Ståle Deraas 公开表示"这是一个需要重大开发工作的问题,不是一个简单的 Bug 修复"。 这一拖就是将近 20 年。在此期间,无数开发者在评论区留下了带有苦涩幽默的痕迹: [2005年6月30日 19:04] 我们将在5.1版本中修复此问题。 [2007年2月21日 12:56] MySQL 自身的 FOREIGN KEY 实现最终会解决这个问题,但这仍然需要一些时间。 [2007年6月4日 20:00] 截至 5.1.11 版本,此问题仍然存在。 [2009年7月2日 15:42] 此错误不会在 5.1 版本中修复。 [2011年3月13日 14:37] 5年过去了,这个漏洞仍然没有被修复。 [2013年5月8日 12:29] 快8年了……有什么进展吗? [2013年5月8日 13:25] Oracle 的那些家伙可能收不到这些消息,因为他们的触发器没触发 ;) [2013年5月8日 13:52] 请注意,修复此问题需要大量的开发工作,并非简单的错误修复。 [2015年6月21日 8:38] 周年快乐!已经10年了…… [2015年6月24日 21:42] 这个缺陷秋季就要上中学了。 [2018年6月21日 18:02] 11472,13岁生日快乐!他们长得真快啊 :') [2019年11月11日 9:12] 很想知道提交错误报告的那位老兄现在怎么样了。他还活着吗?他还在用MySQL吗? [2019年11月12日 14:29] 谢谢关心。我一切都好,而且正在使用MySQL。 [2020年6月11日 21:36] 这个bug比我年纪还大。 [2020年7月15日 12:28] 各位,我女朋友说等这个bug解决了她就嫁给我。请问这方面有什么进展吗?PS:我们从2017年就开始等了,她现在都考虑嫁给Gary了。PS 2:Gary你真是个混蛋! [2021年1月18日 0:49] 只是想看看我们最喜欢的bug是否挺过了新冠疫情。很高兴看到它一切安好。 2025 年 3 月 17 日,MySQL 开发者 Prabakaran Thirumalai 在评论区别处宣布:Bugs #11472 已作为 Worklog WL#17024"Activate triggers on referencing tables during foreign key CASCADE"的一部分被修复。 这条迟来的公告在评论区引发了热烈回应——有人感叹"真的假的?那以后我们每年庆祝 Bug 生日的活动怎么办?"Omer Barnir 本人也在评论区幽默回复:"蛋糕仍然欢迎。" 对于 MySQL 社区而言,这是一个标志性时刻。这个 Bug 记录了 MySQL 从 5.0 到 8.0 的完整生命周期,也见证了无数开发者因这个未修复问题而转向 PostgreSQL 等竞品的整个过程。WL#17024 的完成,意味着 MySQL 在 ACID 合规性上补上了重要的一环。 参考来源:https://bugs.mysql.com/bug.php?id=11472

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

🔥🔥🔥MakuCloud v4.1,简洁的微服务解决方案

项目说明 maku-cloud 是采用 SpringCloud Alibaba 2023、SpringCloud 2023、SpringBoot 3.2、SpringSecurity 6.2、Nacos、Mybatis-Plus、Redis、Vue3、Element-Plus 等框架,开发的一套 SpringCloud 低代码开发平台,旨在为开发者提供一个简洁、高效、可扩展的低代码开发平台。 使用门槛极低,支持国密加密、达梦数据库等,符合信创需求的低代码开发平台。 采用组件模式,扩展不同的业务功能,可以很方便的实现各种业务需求,且不会导致系统臃肿,若想使用某个组件,按需引入即可,反之亦然。 支持 Online 在线表单开发,可快速开发业务,无需部署及重启服务等优点。 支持多种数据库,包括 MySQL、PostgreSQL、达梦等,可灵活切换。 支持多种登录方式,包括账号密码、短信验证码、企业微信、钉钉、飞书、微信等,可灵活选择。 支持多租户模式,可实现不同业务系统之间的隔离,能同时支持字段隔离、数据源隔离方式,满足对多租户的全部需求。 官网地址:https://maku.net 开发文档:https://maku.net/docs/maku-cloud 演示环境:https://demo.maku.net/maku-cloud 企业版:https://maku.net/price 更新日志 新增前端用户、机构、岗位、角色选择组件 新增图片上传组件,支持单图片和多图片上传 新增图标选择组件,选择图标更方便 新增会员管理模块 新增用户头像修改 新增lock4j依赖,支持分布式锁 使用 LocalDateTime 替换 Date 类型 请求不存在时,返回404错误 优化导出时,因文件名相同无法触发浏览器下载的问题 优化字典值重复引发的Trans组件失效问题 升级 SpringCloud Alibaba 到 2023.0.1.0 升级 SpringCloud 到 2023.0.1 升级 SpringBoot 到 3.2.5 升级 MakuGenerator 到 3.1.0 升级 Knife4j 到 4.5.0 升级 Element-Plus 到 2.7.2 升级 Vite 到 5.1.6 开源汇总 低代码开发平台(单体版):https://gitee.com/makunet/maku-boot 低代码开发平台(微服务):https://gitee.com/makunet/maku-cloud 超好用的代码生成器:https://gitee.com/makunet/maku-generator Vue3.x 后台管理 UI:https://gitee.com/makunet/maku-admin Vue3.x 表单设计器:https://gitee.com/makunet/maku-form-design 架构图 效果图

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

上半年中意的 GitHub 更新「GitHub 热点速览 v.22.21」

2022 年的热点速览加入 GitHub 产品动态之后,这次的图片显示是最得我意的,因为可以提升图片查看人的看片体验。而 GitHub 社区方面,GitHub 官方发布了部分开源项目的新版本。与此同时,没有收录在本周 News 快读,但是大家应该都有耳闻的 Gitee “被迫”审核事件也是本周的特点事件,甚至有网友发出了 Gitee 办事窗口网图来暗示以后 Gitee 的审核之旅。 除了 News 之外,本周收录的热榜项目大部分都为新项目,比如 Google I/O 上用 Flutter 实现的弹珠游戏,除了技术新颖之外,它的 UI 也非常有趣;同样有意思的还有 LiveTerm,只要变更一个 json 文件便可拥有终端风格的网站。 以下内容摘录自微博@HelloGitHub 的 GitHub Trending 及 Hacker News 热帖(简称 HN 热帖),选项标准:新发布 | 实用 | 有趣,根据项目 release 时间分类,发布时间不超过 14 day 的项目会标注 New,无该标志则说明项目 release 超过半月。由于本文篇幅有限,还有部分项目未能在本文展示,望周知 🌝 本文目录 News 快读 产品·GitHub 可为暗黑模式指定图片 社区·5 月重要的开源项目发版 本周特推 1.1 Google I/O 宠儿 pinball 游戏:pinball 1.2 Android 最佳实践:nowinandroid GitHub Trending 周榜 2.1 Flutter 合集:samples 2.2 反向工程 REST API:mitmproxy2swagger 2.3 iOS 纯本文编辑器:Runestone 2.4 快建终端风格网站:LiveTerm 2.5 邮件 App:FairEmail 往期回顾 News 快读 1. 产品·GitHub 可为暗黑模式指定图片 GitHub 暗黑模式自前年上线之后,这次它优化了图片显示。如果你一张图是暗色调,在明亮模式色彩对比度强、观看流畅,但在暗黑模式下便会存在和背景色对比度弱,不方便查看。这次 GitHub 发布 Beta 版本的 “Specify theme context for images in Markdown”,可用 Markdown 语法(严格意义上它是一种标记语法)指定某张图片在 Dark 模式下的显示效果。参考效果图 对应 Markdown 嵌入语法如下: <picture> <source media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/25423296/163456776-7f95b81a-f1ed-45f7-b7ab-8fa810d529fa.png"> <img alt="Shows an illustrated sun in light color mode and a moon with stars in dark color mode." src="https://oscimg.oschina.net/oscnet/163456779-a8556205-d0a5-45e2-ac17-42d089e3c3f8.png"> </picture> 2. 社区·5 月重要的开源项目发版 Flyte 发布 v1.0 正式版,Flyte 是一个用于复杂、关键任务数据和大规模 ML 流程的工作流自动化平台。 Remotion 发布 v3.0,Remotion 是一个用 React 来制作视频的工具库。 Sentry CLI 发布 v2.0,Sentry CLI 一个使用 Sentry 的命令行实用程序。 Gitmoji CLI 发布 v3.0,Gitmoji 表情库,可以在 GitHub 中使用提交消息,发表评论和 GitHub 讨论。 Claustrowordia 发布 v1.0 正式版,Gitmoji 是一个拼字 + 填字游戏,今年第 50 届“Ludum Dare”(Ludum Dare 是一个经常性以推进个人游戏开发为目的的开发竞赛。参与者需要在 48 小时内针对所设定的主题创作游戏的冠军便是它。 由于篇幅原因,这里就罗列了 5 款开源项目的发版情况,更多项目可参考官方博客:https://github.blog/2022-05-20-release-radar-apr-2022/ 1. 本周特推 1.1 Google I/O 宠儿 pinball 游戏:pinball 本周 star 增长数:200+ New 本届 Google I/O 伙伴的弹珠游戏 pinball 用 Google 亲儿子——Flutter 和 Firebase 实现。你可访问 https://pinball.flutter.dev/ 在线体验该款游戏。下图为有意思的加载条和游戏启动界面,是不是很有游戏厅,回到小时候的感觉呢。 GitHub 地址→https://github.com/flutter/pinball 1.2 Android 最佳实践:nowinandroid 本周 star 增长数:1,650+ New nowinandroid 一个完全由 Kotlin 和 Jetpack Compose 构建的功能完整的 Android 应用程序。它遵循 Android 设计和开发的最佳实践,旨在为开发者提供有用的参考。 GitHub 地址→https://github.com/android/nowinandroid 2. GitHub Trending 周榜 2.1 Flutter 合集:samples 本周 star 增长数:250+ Google I/O 刚过去,有没有想法入 Flutter 呢?Samples 收录了大量 Flutter 编写的示例,你可以学习下来 pick Flutter 的最佳实践。 GitHub 地址→https://github.com/flutter/samples 2.2 反向工程 REST API:mitmproxy2swagger 本周 star 增长数:3,200+ New 一个自动转换 mitmproxy 捕获到 OpenAPI 3.0 规范的工具,你可以通过运行应用程序并捕获流量来自动反向工程 REST API。 GitHub 地址→https://github.com/alufers/mitmproxy2swagger 2.3 iOS 纯本文编辑器:Runestone 本周 star 增长数 650+ New Runestone 适用于 iOS 的高性能纯文本编辑器,具有语法高亮显示、行号、不可见字符等特性。它采用 GitHub 的 Tree-sitter 来解析代码为语法树,比如:Runestone 语法高亮显示便是由此实现。 GitHub 地址→https://github.com/simonbs/Runestone 2.4 快建终端风格网站:LiveTerm 本周 star 增长数:1,500+ New LiveTerm 让你快速搭建一个终端风格的网站,具有高度可定制、易用等特性,它由 Next.js 提供支持。而你拥有这么一个有意思的网站,只需要处理一个 config.json 文件。 GitHub 地址→https://github.com/Cveinnt/LiveTerm 2.5 邮件 App:FairEmail 本周 star 增长数:250+ FairEmail 是一款功能齐全、面向隐私的 Android 邮件程序,兼容大多数的邮箱供应商,包括 Gmail 和 Outlook 等厂家。 GitHub 地址→https://github.com/M66B/FairEmail 3. 往期回顾 往期回顾: GitHub 毕业年鉴「GitHub 热点速览 v.22.20」 一个程序的自我修养「GitHub 热点速览 v.22.19」 以上为 2022 年第 21 个工作周的 GitHub Trending 🎉如果你 Pick 其他好玩、实用的 GitHub 项目,记得来 HelloGitHub issue 区和我们分享下哟 🌝

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

开源之夏:502 个项目上线,火热的暑期开源活动发车了!

重磅消息!2022 开源之夏参与项目已全部准备完毕,共有来自 124 个社区的 502个项目上线。 在这里,无论你是想要探索哪个技术领域,都能找到最适合自己的项目,有来自华为、阿里、腾讯、百度等大厂开源项目,也有Apache基金会、CNCF基金会等顶级开源项目,还有众多活跃在一线的知名开源项目,涵盖了操作系统、编译器、AI、云原生、大数据、分布式、IoT、深度学习框架等等超过20 个技术领域; 利用暑期时间,深入参与开源社区,为心仪的项目贡献力量,在实践中成长,价值感拉满! 还等什么,快跟随开源之夏的脚步,来探索那些精心为你准备的项目吧。 活动官网:https://summer-ospp.ac.cn/ 遨游头部开源项目社区,领万元奖金 开源之夏项目列表:https://summer-ospp.ac.cn/#/org/projectlist 项目列表页面按照类别、难度、语言划分,选择目标方向可快速锁定相应项目列表。 每个项目详情页说明了项目的产出要求、技术要求、成果仓库,并发布了项目表述以及需要用到的编程语言。同学们可在详情页面仔细阅读相关说明,挑选心仪项目。 挑战进阶项目的同学,则有成功结项之后,可获得人民币 12000 元(税前)奖励。 挑战基础难度项目的同学,同样在顺利结项之后,可获得奖金人民币 8000 元(税前)。 与 502位高手做伴,畅游开源一夏 开源之夏所汇聚的项目来自全球的顶级开源项目社区,每个项目将匹配1位社区资深开发者导师。也就是说,本届开源之夏共有502位导师与同学们共同完成任务。如此丰厚的“师资力量”,一对一指导,保证每位同学在开源之路上顺利前行 互选之后,同学们可以紧跟大神,与高手做伴,趁着暑假让自己的开发技能再上一阶。 通道已开启,速速报名 学生报名通道现已开启! 进入官网,点击“学生登录”注册账号即可填报资料报名。 项目申请将于5月21日正式开启。在此之前,同学们可以选择感兴趣的项目,通过邮件等方式与社区导师进行沟通,更好地理解项目,为撰写高质量的项目申请方案作准备。 学生指南: https://summer-ospp.ac.cn/help/student/ 关于开源之夏 开源之夏是开源软件供应链点亮计划下的暑期活动,由中国科学院软件研究所与openEuler社区联合主办,旨在鼓励在校学生积极参与开源软件的开发维护,促进优秀开源软件社区的蓬勃发展,助力开源软件供应链建设。 2022年,第三届开源之夏联合124家开源社区,针对开源项目的开发与维护提供mini任务,学生可自主选择感兴趣的项目进行申请,并在中选后获得社区资深开发者亲自指导的机会。项目成功结项并贡献给社区后,参与者将获得开源之夏活动奖金和结项证书。 联系我们 官方邮箱: org@summer-ospp.ac.cn 通用邮件列表: summer-ospp@googlegroups.com 添加小助手微信进入学生微信群(添加请备注学生身份): 「组委会将在 Slack 频道里发布与微信群一致的通知,不习惯使用微信群的参与者可以订阅 Slack 频道。」 Slack 频道: https://slack.summer-ospp.ac.cn

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

这一次,我把RN核心的Bridge撸干净了

本文以 0.59.10 版本的 React Native 为分析对象 一、架构设计 React Native 架构上由 JS 、 Native 以及连接两者的 Bridge 三部分组成 JS 部分:由 JSX 实现的视图 以及 调用 Native 能力实现的业务逻辑组成 Native 部分:管理 UI 更新即交互 Bridge 部分:桥接 JS 和 Native的通讯交互 注意:0.59.10版本虽已引入了JSI,但通讯依旧通过Bridge进行桥接 1、当前架构 1.1、线程模型 JS thread:负责处理逻辑层。Metro(打包工具)将 React 打包成单一JS文件,传递给JSC执行 JSC (JavascriptCore) 是 JS 代码的运行环境,真正执行 JS 代码的是 RCTJSCExecutor 对象,执行完成后返回一个数组 Native thread(Main Thread/UI Thread):负责原生渲染和提供原生能力 NativeModules在启动阶段全部加载,生成一张映射表,可在两端调用方法时精准地找到对应的方法 Shadow Thread:负责布局计算和构造 UI 界面。创建 Shadow Tree 来模拟 React 结构树,类似于虚拟dom RN使用的Flexbox布局原生不支持,通过Yoga转换为原生平台支持的布局方式 1.2、模拟通讯 当 JS thread 收到 React 源码时,需对其序列化,生成一条消息发送给Bridge // 序列化前 <View style={{ "width":200 }}/> // 序列化后 UIManager.createView([343,"RCTView",31,{"width":200}]) Bridge收到消息后转发给Shadow Thread 当 Shadow Thread 收到信息后,需对其反序列化,创建Shadow Tree,流传给 Yoga 生成布局信息后发送给 Bridge Bridge收到消息后转发给Native thread Native thread 收到信息后,同样先反序列化,根据布局信息进行绘制 1.3、Bridge的特点及不足 1.3.1、异步 消息队列是异步的,其好处是不阻塞,但由于三个线程的数据无法共享,需各自保存、各自维护。任何交互都需Bridge进行异步处理,因无法保证处理时间,可能会出现空白的问题,比如瀑布流滚动 1.3.2、序列化 序列化设计可保证所有 UI 都可相互转换,甚至可以让JS 代码运行在任意的 JS 引擎上。但每次都需经历序列化和反序列化,开销极大 1.3.3、批处理 对Native调用进行排队,批量处理 2、新架构 从当前的架构中,不难看出两端封闭的交互方式已触及性能的瓶颈了,优化的手段集中于 Bridge,进而官方推出了新架构,这儿,没有了 Bridge的烦恼 🚀🚀🚀 2.1、JavascriptInterface(JSI) JSI 是 一个可运行于多种 JS 引擎的中间适配层,可实现 JS 直接调用 c++ 层的对象和方法。有了 JSI,RN 应用不仅可以运行于 JSC,还可以执行于 Chrome 的V8 或 hermes 引擎,提高了解析执行的速度 划重点:有了JSI后,JS可以直接调用其他线程,实现同步通信机制,另外数据可以直接引用,不需要拷贝 2.2、Fabric Fabric 是新架构的渲染系统,能够在 UI 线程上同步调用JS代码,对应新架构图 Renderer 和 Shadow Thread 划重点:有了Fabric后,可支持优先级渲染,比如 React Concurrent的中断渲染功能 和 允许开发者在 React 中更合理的组织请求数据代码的 Suspense 模式 2.3、TurboModules TurboModules 主要和原生应用能力相关,对应新架构图上的Native Modules,其带来的性能提升是Native模块懒加载 划重点:有了TurboModules后,可以实现按需加载Native模块,减少启动时间,提高性能 二、启动&渲染 1、启动阶段 1.1、创建 App 根视图及JS执行对象 1.1.1、创建RCTRootView会同时创建RCTBridge,适用未拆包应用 RCTRootView 是 RN 的根容器,承载着所有子视图的功能,其子视图RCTRootContentView直接承载视图的对象 // initWithBundleURL:`jsbundle`的路径 moduleName:启动应用的名称 initialProperties:初始化参数 launchOptions:App启动参数 [[RCTRootView alloc] initWithBundleURL:[NSURL fileURLWithPath:panelPath] moduleName:@"Demo" initialProperties:initialProps launchOptions:launchOptions]; RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions]; 1.1.2、创建RCTBridge再创建RCTRootView,适用分包/特殊处理的应用 若是分包的应用 或 需提取 RCTBridge 参数/方法 的话,可以先创建 RCTBridge 再创建 RCTRootView。其中参数 moduleProvider 可配置 Bridge 具体访问哪些 NativeModules 在需控制权限的应用作用比较大 RCTBridge *bridge = [[RCTBridge alloc] initWithBundleURL:[[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"] moduleProvider:nil launchOptions:launchOptions]; RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge moduleName:@"Demo" 1.2、batchedBridge初始化RN环境 RCTBridge 初始化时会保存 initWithBundleURL,并创建一个 RCTCxxBridge 的实例 batchedBridge 去初始化 RN 环境 batchedBridge启动后发送加载通知 batchedBridge初始化生成模块配置表 batchedBridge创建并初始化JS线程 batchedBridge注册NativeModules batchedBridge开始加载JS代码 1.3、执行JS代码 加载得到的代码是jsbundle,主要由三部分组成 1.3.1、环境变量及方法定义 第一行定义了运行时环境变量,用于表明所运行的node环境处于生产环境以及记录脚本启动的时间 第二到十行全局定义了RN环境启动的基本方法 1.3.2、RN框架及业务代码定义 第十一行开始进入 RN 框架、第三方库以及个人代码定义部分,这部分调用了全局 __d 方法对代码中的方法和变量进行定义,其接受三个参数 r:该模块的定义,即代码逻辑 n:模块的moduleId,打包系统默认按照数字的递增的形式来定义该id i:依赖数组 1.3.3、引用与启动入口 倒数两行调用了全局 __r 方法将 RN 应用运行起来,其接受moduleId一个参数 若该模块没有被初始化,则尝试加载并初始化 若未找到该模块,则抛出错误 'Requiring unkonwn module xxx' 执行完 batchedBridge发送加载完成通知,RCTRootView接收到通知,创建RCTRootContentView 立即调用 AppRegistry.runApplication,通过 JSC 以消息的形式将业务启动参数发送给 batchedBridge 的消息队列 MessageQueue 2、渲染阶段 2.1、渲染视图信息 JS 线程将视图信息传递给 Shadow 线程 创建 Shadow Tree 映射 React组件树,流传给 Yoga Yoga将 flexbox 布局生成原生布局信息 Shadow 线程将通过一系列计算的完整视图信息传递给 Native线程 Native线程将匹配到的组件按层级渲染到RCTRootContentView上 完成渲染 2.2、渲染事件信息 Native线程将相关信息打包成事件消息传递到 Shadow 线程 根据 Shadow Tree 建立的映射关系生成相应元素的指定事件 将事件传递到 JS 线程,执行对应的 JS 回调函数 三、通讯逻辑 1、通讯共识 1.1、通讯基础 RCTBridgeModule RCTBridgeModule 协议允许注册模块以及模块方法,在模块注册时会在原生端和JS端同时生成一份配置文件 remoteModuleConfig,它是一张映射表,可在两端调用方法时精准地找到对应的引用 1.1.1、JS端可通过 __fbBatchedBridgeConfig 查看 remoteModuleConfig { "remoteModuleConfig":{ [ "RCTPushNotificationManager", // 模块名称 { "initialNotification": null, // 属性对象 }, [ "fn1", // 方法列表 "fn2", ... ], [2, 7], // 异步方法索引 [1, 4], // 同步方法索引 ] } } 1.2、异步通讯 MessageQueue MessageQueue 主要承担异步事件交互通知的任务,所有的通讯和交互事件都会推进池中,再通过规则对池子进行读取和刷新。默认情况下 MessageQueue 每 5ms 会进行一次 flush 操作,flush 时发现新的消息会按照消息的参数进行逻辑的执行 由于 MessageQueue 是被动接收数据,主动定时刷新的形式,因此在调用原生方法时,原生端并不会立即执行 2、事件通知 事件通知即发送通知和注册监听,可通过以下 API 进行注册和发送通知 NativeAppEventEmitter DeviceEventEmitter NativeEventEmitter 3、原生端暴露原生事件 JS端可调用原生端的关键是两端都实现了 RCTBridgeModule 协议,原生端在需要暴露给JS端的方法前面加宏RCT_EXPORT_METHOD修饰 4、JS端调用原生事件 JS 端实现需调用Native 方法 查找 JS thread 中的方法配置表 remoteModuleConfig,将要执行的任务写入 MessageQueue 异步队列 Bridge 执行队列任务 Native thread 根据参数匹配配置,进而找到对应的原生模块及方法,执行原生实现的逻辑,将执行结果打包成消息传递给 Bridge JS 端根据返回的 id 找到执行的方法,执行并返回结果

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

地毯式诈骗流行,2021年加密货币相关犯罪创新高

兼职招募 | 51CTO社区编辑加盟指南 WOT全球技术创新大会2022,门票6折抢购中!购票立减2320元!--> 近日,分析公司Chainalysis发布消息称,2021年与加密货币有关的犯罪达到了历史最高水平,非法地址获得高达140亿美元。收到的绝大部分资金是通过诈骗、盗窃和暗网市场获得的,而另一个不断增长的被盗资金来源则是赎金。 非法资金从2020年的78亿美元增长到2021年的140亿美元,而且同期的加密货币总交易量增长了567%。有了这些统计数据,Chainalysis表示,非法活动在加密货币交易量中的份额从未降低过。 据该分析公司称,流行的诈骗技术类型之一是地毯式诈骗(rug pulls)。它说这种类型的骗局是相当新的,涉及开发商建立一个看似合法的加密货币项目,拿着投资者的钱,然后干脆带着钱消失了。Thodex是去年的一个大型平台,其首席执行官在阻止资金提取后带着客户的钱消失了。 与银行业务不同的是,在银行业务中,客户享有大量的保护,免受诈骗,而持有加密货币的风险更大。首先,在大多数情况下,你必须持有私钥,如果你失去了它,你就会失去对加密货币的访问。其次,如果你真的被黑客攻击或诈骗,在大多数情况下,没有人可以取回你的资金。 鸿蒙官方战略合作共建――HarmonyOS技术社区 【责任编辑:赵宁宁 TEL:(010)68476606】

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

简单、最好用、最好玩的 Blazor UI 库 BootstrapBlazor v5.0.23 发布

Bootstrap Blazor 组件库 一套基于 Bootstrap 和 Blazor 的企业级组件库 本期更新 增加功能 !1242 feat(#I3EIU2):InputNumber步长默认值微调#I3EIU2 shortintlong默认步长Step等于1 singledoubledecimal默认步长Step等于0.01 !1238 feat(#I3D6UP): 更新VadliateFormEditFormValidateBase表单组件嵌套使用时ShowLabel逻辑#I3D6UP 各种嵌套逻辑比较复杂详细情况请查看https://www.blazor.zone/labels !1228 feat(#I3E183):VadliateForm组件支持异步操作按钮#I3E183 验证表单内组件保存数据时提交到webapi中,为防止提交按钮多次点击 设置Button组件参数IsAsync即可 !1227 feat(#I3DX9J):Markdown组件增加IsViewer属性#I3DX9J 可用于将md文本显示为Html代码 !1226 feat(#I3DZKZ):ToolbarButtonIsAsync仅控制自身#I3DZKZ Table组件工具栏内按钮提供IsAsync功能,提供异步操作支持 此功能用于异步调用webapi等延时操作,防止用户多次点击 点击后禁用自身不影响其他按钮,操作完成后恢复 !1224 feat(#I3DYJF): 更细表单组件内非必填项Label样式与必填项对齐#I3DYJF !1220 feat(#I3DWIV):ToolbarButton工具栏按钮增加IsAsync属性用于异步操作禁用自身#I3DWIV !1219 feat(#I3DWIO):ToastOptin弹窗配置项增加Close方法用于代码关闭Toast弹窗#I3DWIO !1218 feat(#I3DVN9):EditDialog弹窗绑定模型时自动过滤Editable条件进行渲染#I3DVN9 !1214 feat(#I3DVAK):Button组件增加IsAsync参数#I3DVAK 当按钮为异步请求按钮时,点击按钮后自身状态会改变为禁用状态,同时显示 LoadingIcon 小图标,异步请求结束后恢复正常 !1213 feat(#I3DUHU):Table组件再特定条件下按钮可能会出现多份#I3DUHU 使用代码控制Table工具栏按钮时导致按钮出现多份 !1209 feat(#I3DTRL):CheckboxList组件增加IsDisabled禁用支持#I3DTRL !1206 feat(#I3DN0R): 更新Upload组件,适配ValidateForm表单#I3DN0R 增加Upload组件内置ValidateForm内后显示标签 增加Upload组件绑定模型字段有[Required]表示后自动增加*记号功能 增加Uplaod组件对禁用IsDisabled支持 !1203 feat(#I3DF9O): Table 组件增加ShowResetSearch参数#I3DF9O 用于控制清空搜索按钮 !1200 feat(#I3D7YR): 表单内标签自动添加*必填标记符号#I3D7YR 绑定模型字段增加[Required]标签后自动增加*记号 !1199 feat(#I3D71B): 公开 ServiceProviderHelper 静态扩展类#I3D71B 提供静态类获取注入服务能力 获取服务与[Inject]标签相同 !1197 feat(#I3CXJY): Select 组件内置对枚举类型的处理#I3CXJY 绑定类型为枚举时,不需要再额外指定Items集合属性,内部自行构建 绑定类型可为空时,自动构建请选择 ...默认项,回落机制是优先查找placeholder如未提供则使用Select组件的资源文件 问题修复 !1243 fix(#I3EJHX): 修复Table组件在移动端显示行号时点击行行号一直增加问题#I3EJHX !1241 fix(#I3EHKZ): 修复CheckboxList组件无内容是高度不合理问题 设置为 35px#I3EHKZ !1237 fix(I3EG1S): 修复AvatarUpload组件利用代码更改Url后,界面不刷新问题#I3EG1S !1236 fix(I3EB63): 修复表单组件利用代码设置DisplayText=null后无法显示资源文件设置的文本问题#I3EB63 !1234 fix(I3EB4V): 修复ValidateForm组件代码更新Model后不触发OnValidaSumbit回调事件问题#I3EB4V !1225 fix(I3DYX5): 修复Table组件过滤功能选择All条件时不触发重新查询问题#I3DYX5 !1223 fix(#I3DXDI): 修复Collapse组件点击Body空白地方导致全部展开问题#I3DXDI !1216 fix(#I3DVN3): 修复SearchDialog绑定模型时未过滤Searchable条件问题#I3DVN3 !1208 fix(#I3DP5D): 修复Table组件编辑模式为EditForm时自动生成Editable参数不生效问题#I3DP5D [AutoGenerateColumn(Editable=false)]标签不生效,EditForm模式下编辑框内仍然显示该绑定字段 !1198 fix(#I3DC8H): 自定义验证器缺失 ValidateContext 对象#I3DC8H 表单组件使用自定义验证器时,缺少 ValidateContext 对象导致部分功能无法完成 示例更新 !1244 docs(#I3EJIM): 更新Table组件行内自定义按钮点击后,选中本行示例#I3EJIM !1235 docs(#I3EB62): 更新Table组件表单维护示例代码#I3EB62 !1231 docs(#I3E7HZ): 更新Table组件列示例代码#I3E7HZ !1229 docs(#I3E6RM): 更新Table组件列示例代码#I3E6RM !1221 docs(#I3DWJQ): 更新Table组件工具栏异步操作示例#I3DWJQ !1210 docs(#I3DTRQ): 增加Table组件自定义数据注入服务示例文档#I3DTRQ !1202 docs(#I3DECD): 更新Table组件数据导出示例文档#I3DECD !1201 docs(#I3DDGK): 更新Table组件 Filter 示例文档#I3DDGK 性能优化 !1240 refactor(#I3EHK7):EditorForm组件级联参数更改为自身保证表单组件ShowLabel逻辑正确#I3EHK7 文档地址 https://www.blazor.zone/ 项目地址 Gitee:https://gitee.com/LongbowEnterprise/BootstrapBlazor Github:https://github.com/dotnetcore/BootstrapBlazor BootstrapBlazor遵循Apache-2.0开源协议,欢迎大家提交PR或Issue。喜欢可以给个Star。

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

来阿里有段时间了,谈谈这几个月真实的感受

作者:黄小斜 阅读本文大概需要 4 分钟。 有段时间没写过原创了,想了各种理由,发现其实理由就一个,没时间。 我来阿里,已经几个月了。这段时间,最大的感受就是累。我是在今年的四月份加入阿里的。 当初我没有参加阿里巴巴的实习,而是选择了直接进行校园招聘,这也是因为当时我对实习的部门不感兴趣,于是在校招的时候我就选择了自己感兴趣的部门,也就是现在我所在的蚂蚁金服。 之前就听说过阿里的工作强度,可能会比较大,但是,当我在真正来到这家公司的时候,才发现996,并不是虚言,这倒不是说制度上规定的 996 ,而是因为,你手上的工作,是很难做完的,所以导致你不得不用加班的方式来完成,996 最终的目的只有一个,就是你要把手上的工作做完,对其他人有一个交代。 刚来一个月的时候只其实我是非常不适应的,毕竟从学校到公司,整个变化是颠覆性的,虽然之前有过实习经历,但是是比较划水的,和正式工作差别还是比较大的,第一个月大抵的状态就是,每天九点多上班,晚上九点及以后下班,这是生活规律上的不适应。 除此之外,在工作上也会有一些不适应,虽然前期给我的活儿都比较的零散,只要求这里修修补补,那里加点东西。这倒是其次。 主要的原因还是因为我对业务线的研发流程不太了解,以及对大家在做的事情不太了解,这会导致我在工作上遇到很多困难。因为我会听不懂大家在说什么。所以第一个月,更多的是思考。 如何去提高自己的效率,如何去融入这个公司,如何去熟悉部门的业务和技术战,自己感觉是一个比较外向的人,所以一旦有问题就会咨询,我的同事,我的师兄。 阿里的师兄是一种文化。就像武侠小说里的同门师兄弟一样,师兄会带领着你去做那些工作,并且让你去熟悉整个部门的一些事情。我的师兄是一个寡言少语的人,但是技术能力非常强,也很有责任心。他总是对总是对工作要求特别高,不放过任何一个问题,不漏掉任何一行问题代码。 在第一个月的时间里。我学习了很多阿里巴巴的一些中间件技术。其实这些技术。在学校复习的时候,多少也听说过一些,看过一些文章。只不过外面用的都是开源的东西,而在阿里内部,更多的是自研的产品,比如说,消息中间件,分布式事务,数据库中间件,等等等等。这些东西,在平时的学习和研发中,是经常会用到的,如果你在学校或者是在其他小公司,可能根本没有机会接触到这些东西。 作为一个Java工程师,在这家公司的职责可不止是写代码,你需要熟悉整个研发流程,从系统设计,代码开发,测试联调,发布上线,问题排查都是你的职责,其实这很锻炼人,这也是为什么加班会这么多的原因,写代码只占你日常工作的一小部分时间,你需要花更多时间在解决各类问题上。 阿里对校招生有一个培训,不同部门可能不太一样,蚂蚁的培训长达一个月,这个月应该也是我觉得成长最快,过得最快乐的一个月,其实无非就是上课,拓展和各类活动,这段时间认识了很多人,其中也有很多大牛,大家一起上课,一起做项目,同甘共苦度过一个月,这样的经历也是非常值得纪念的。 培训结束后,我也开始承担更多的工作,当自己逐渐习惯这种节奏之后,才感觉自己逐渐在融入这家公司,每次搞懂一个业务问题或者技术问题都会觉得自己在成长,当肩头上承担更多责任的时候,同时也承担了更多压力,如果不能调整好自己的心态,我想在这家公司是很难待久的。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

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部分的功能。

用户登录
用户注册