首页 文章 精选 留言 我的

精选列表

搜索[V模型],共10000篇文章
优秀的个人博客,低调大师

Gleam v0.23 发布,Rust 编写的函数式编程语言

Gleam 是一种类型安全且可扩展的编程语言,可用于 Erlang 虚拟机和 JavaScript 运行时。 最近发布的0.23 版本增加了新特性,以及其他优化。 支持 Elixir Gleam 在 Erlang 虚拟机上与各种其他优秀编程语言一起运行,因此开发团队希望利用通过这些语言编写的所有包。 以前使用 Gleam 构建工具的项目可能依赖于用 Gleam 或 Erlang 编写的包。从这个版本开始,还支持用Elixir编写的项目,让 Gleam 程序员可以访问几乎所有在 Erlang 生态的包管理器Hex 上找到的软件包。 在 Gleam 中使用 Elixir 软件包的开发者体验与使用 Erlang 软件包相同。 # Add an Elixir package to the Gleam project $ gleam add tzdata // Import a function from the package external fn tzdata_version() -> String = "Elixir.Tzdata" "tzdata_version" // Use it in Gleam pub fn main() { io.println(tzdata_version()) } 针对软件包升级的优化 开发团队希望尽可能简单地使用其他人编写的代码,并且希望避免“依赖地狱”,因此构建工具的用户体验是 Gleam 的一个重要领域。 到目前为止,难题的一个缺失部分是升级项目所依赖的包版本——以前它在很大程度上是一个手动过程。 在此版本中,有一个新gleam update命令将使用PubGrub算法有效地解析最新的兼容版本的依赖项。 $ gleam update # Tada, you're on the latest versions! 优化文档 Gleam 为软件包生成文档并将 HTML 发布到HexDocs,这是 Erlang 生态的文档站点。 在此版本中,生成的文档包括一个搜索栏,因此可以比以往更轻松地更快地找到函数、类型和模块。该搜索由LunrJavaScript 库提供支持,因此支持模糊匹配以帮助解决拼写错误,或者不太记得所需要查询的名称。 详情查看发布公告。

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

Golang 实现的微服务框架 DMicro 发布 v1.1.0 版本

更新记录: 1. 替换 `dserver` 组件的命令行解析工具为 `Cobra`组件。 2. `dserver` 组件中的 `ctrl` 命令替换为 `ctl` 3. `dserver` 组件中的 `rpc server option`参数变成 `ServerName` 4. 取消`endpoint`与`eventbus`强关联。 5. 新增 `Metrics` 指标组件,支持统计运行指标。 6. 修复 `rpc client` 与 `rpc server` 中 `close` 报错的问题. 7. 移除 `EndpiontConfig`中的`CountTime`参数,默认开启请求耗时统计。 8. 完善 `Rpc Server`,`Rpc Client`,`Metrics`组件的使用文档。 框架简介: DMicro是一个高效、可扩展且简单易用的微服务框架。包含 DRPC,DServer 等多个组件。 其中 DRPC 组件是 rpc 框架,使用 `endpoint` 作为统一对象,为 `RPC Server`,`RPC Clinet` 提供统一的 API 封装。 DRPC 组件特性: 易于理解,科学合理的多层抽象。 `endpoint`,`session`,`handle`,`message`,`protoco`,`codec`,`transfer filter`,`plugin`. 支持常见的消息通讯协议 `json`,`prototbuf`,`http`,`jsronrpc`, 良好的抽象层让自定义消息协议变得简单快捷。 支持多种网络协议 `tcp`,`unix`,`kcp`,`quic`,`websocket` 等。。。 全生命周期的插件埋点 (多达 27 个埋点), 让插件系统能实现的功能丰富多彩。 内置 `auth`,`heartbeat`,`ignorecase`,`proxy`,`securebody` 等插件 依托丰富的插件埋点,抽象出易于使用的 `Event` 事件系统,让你的开发如虎添翼。 高性能的网络传输层,让性能不再是瓶颈。 客户端自动重拨。 配合 `DServer` 组件,实现优雅的平滑重启,让你的服务时刻在线。 配合 `Registry` 组件,实现服务注册。 `Registry` 组件抽象出合理的接口,方便接入多个服务注册中心,目前已实现 `etcd`,`mdns`。 配合 `Selector` 组件实现 `服务发现` 功能。 `DServer` 应用管理组件帮助大家封装好了应用的全生命周期管理。 DServer 组件特性: 采用 `server`,`service`,`sandbox` 三层结构。 让业务专注于 `sandbox` 层,支持单进程,多进程模式。做到开发 debug 单进程,运行单 / 多进程可选。 完善合理的启动命令封装,支持 `start`,`stop`,`reload`,`ctrl` 等命令。 不但支持 `drpc` 组件,还支持 `ghttp` 等实现平滑重启接口的其他组件 (如果不需要平滑重启,所有服务组件都支持) 好用的命令行管理功能,让你能实时的管理正在运行的应用。 完善的进程管理组件 `supervisor`, 支持对进程的全生命周期管理。

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

ulthon_admin v2.0.19 发布,PHP 后台快速开发框架

本次发行版中,优化了底层建设的代码,并实现了一个强大的特性(对我来说如此): 从数据库生成数据库迁移代码 用法 什么是数据库迁移工具 ulthon_admin标准的安装流程是使用数据库迁移工具进行安装,他不仅可以安装到mysql数据库,也支持sqlite,sqlserver等其它数据库。 具体用法参考文档: https://www.kancloud.cn/manual/thinkphp6_0/1118028 但一般而言,我们开发中不会从写迁移代码开始,而是直接使用顺手的数据库工具(Dbeaver、Navcat等)设计数据库,然后在开发中修修补补。 这并没有什么不妥,但是如果你做的是一个标准产品,需要经常执行安装和更新,需要给多个客户部署时,就会感到吃力。 遇到这种情况,你只能从一个数据库导出,再导入到另一个数据库,反反复复的操作。还有可能不知道哪个是最新的,哪个需要更新,哪个更新到哪个版本了。 另一方面,如果数据库丢失了,而你手里又没有及时备份,那么也是很头疼的事。 数据库迁移工具就是为了解决以上种种问题的,比如我们需要新建一张test_goods数据表,我们可以使用数据库迁移工具,写出这样的代码: <?php use think\migration\Migrator; use think\migration\db\Column; class TestGoods extends Migrator { public function change() { $table = $this->table('test_goods') ->setComment('商品列表') ->addColumn('cate_id', 'biginteger', ['limit' => '20', 'signed' => '0', 'null' => '0', 'default' => '0', 'comment' => '分类ID {relation} (table:mall_cate,relationBindSelect:title)',]) ->addColumn('title', 'char', ['limit' => '20', 'null' => '0', 'default' => '', 'comment' => '商品名称',]) ....... ->addColumn('detail', 'text', ['null' => '1', 'comment' => '详情',]) ->addIndex('uid', ['unique' => true]) ->addIndex('detail', ['type' => 'fulltext']) ->addIndex('cate_id') ->create(); } } 然后运行命令: php think migrate:run 此时这张表就出现在我们的数据库了,至于其他的表,并不会覆盖或丢失。 这样有很多好处: 数据库跟随版本库存储不会丢失 没有反复多余的导出数据库 可以安装到“任何数据库” 任何标准产品都可以任意运行该命令用于升级数据库 但是我们开发的时候,不会直接写数据迁移工具,而是从设计表开始。如果我们需要数据库迁移工具,就只能照着现在的数据表写迁移工具,这是以前的做法,也只能这样做。但是现在不一样了,通过一行命令可以一键生成数据库迁移的代码。就像生成curd那样。 现在按照我们的介绍看看怎么用吧。 使用 我们先用自己喜欢的方式设计出一张表。 -- admin_demo_ultho.ul_test_goods definition CREATE TABLE `ul_test_goods` ( `id` int(11) NOT NULL AUTO_INCREMENT, `cate_id` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '分类ID {relation} (table:mall_cate,relationBindSelect:title)', `title` char(20) NOT NULL DEFAULT '' COMMENT '商品名称', `logo` char(255) NOT NULL COMMENT '商品logo {image}', `images` text NOT NULL COMMENT '商品图片 {images}', `describe` text NOT NULL COMMENT '商品描述 {editor}', `total_stock` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '总库存', `sort` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '排序', `status` int(1) unsigned NOT NULL DEFAULT '0' COMMENT '状态 {radio} (0:正常,1:禁用)', `cert_file` varchar(100) NOT NULL COMMENT '合格证 {file}', `verfiy_file` text NOT NULL COMMENT '检测报告 {files}', `remark` char(255) NOT NULL DEFAULT '' COMMENT '备注说明', `create_time` int(11) unsigned NOT NULL DEFAULT '0', `update_time` int(11) unsigned NOT NULL DEFAULT '0', `delete_time` int(11) unsigned NOT NULL DEFAULT '0', `publish_time` int(10) unsigned NOT NULL COMMENT '发布日期 {date} (date)', `sale_time` bigint(20) unsigned NOT NULL COMMENT '售卖日期 {date} (datetime)', `intro` varchar(100) NOT NULL COMMENT '简介 {textarea}', `time_status` smallint(5) unsigned NOT NULL COMMENT '秒杀状态 {select} (0:未参加,1:已开始,3:已结束)', `is_recommend` tinyint(4) NOT NULL COMMENT '是否推荐 {switch} (0:不推荐,1:推荐)', `shop_type` varchar(100) NOT NULL COMMENT '商品类型 {checkbox} (taobao:淘宝,jd:京东)', `tag` varchar(100) NOT NULL COMMENT '商品标签 {table} (table:mall_tag,type:checkbox,valueField:id,fieldName:title)', `tag_backup` varchar(100) DEFAULT NULL COMMENT '商品标签(单选) {table} (table:mall_tag,type:radio,valueField:id,fieldName:title)', `from_area` varchar(100) NOT NULL COMMENT '产地 {city} (name-province:0,code:0)', `store_city` varchar(100) NOT NULL DEFAULT '山东省/临沂市' COMMENT '仓库 {city} (level:city)', `tag_input` varchar(100) NOT NULL COMMENT '商品标签 (输入) {tag}', `uid` varchar(100) NOT NULL COMMENT '唯一id', `price` decimal(10,2) DEFAULT NULL COMMENT '价格', `detail` longtext COMMENT '详情', PRIMARY KEY (`id`), UNIQUE KEY `ul_test_goods_uid_IDX` (`uid`) USING BTREE, KEY `cate_id` (`cate_id`) USING BTREE, FULLTEXT KEY `ul_test_goods_detail_IDX` (`detail`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='商品列表'; 面对这样一张数据表,如果我们要对照写出数据库迁移工具的代码,会很费事,而且很容易就写错了。 但现在时代变了,只需要一行命令 php think curd:migrate -t test_goods 此时会在数据库迁移工具的工作目录下生成一个文件: database\migrations\20220905222557_test_goods.php 这跟使用官方的生成方式一致 此时会直接生成开头那样的数据库迁移代码。 结尾 可能你没用过数据库迁移工具,那么目前可能无法引起你的兴趣,(建议使用),如果你正在使用,那么这个命令绝对能给你带来极大的便利。甚至可以让那些拥有几十个数据表的项目,也能轻松地使用数据库迁移工具来安装了。 ulthon_admin正在积极维护,拥有极高的定制性,支持依赖裁剪,精简代码,欢迎使用。

资源下载

更多资源
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部分的功能。

用户登录
用户注册