首页 文章 精选 留言 我的

精选列表

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

🔥🔥🔥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 找到执行的方法,执行并返回结果

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario

Mario

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

Nacos

Nacos

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

Sublime Text

Sublime Text

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