首页 文章 精选 留言 我的

精选列表

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

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

Gleam 是一种类型安全且可扩展的编程语言,可用于 Erlang 虚拟机和 JavaScript 运行时。 最新发布的 0.28 包含以下变化: 改进语言服务器 (Language server) Gleam 0.21 引入了语言服务器,不过这个初始版本的功能有限。此后开发团队投入了许多资源来重构编译器的内部结构,以便进一步改进语言服务器。此版本便是这些改进的成果。 支持 Monorepo Gleam 通常使用 Erlang 虚拟机运行,但它也可以编译为 JavaScript 并在其他地方运行,例如 Web 浏览器。Gleam 社区用户会使用它来构建前端和后端都基于 Gleam 编写的 Web 应用程序,这两个部分都位于同一个代码仓库中。目录结构如下: louis ~/src/gleam/developer-survey $ tree -L 2 . ├── Dockerfile ├── README.md ├── fly.toml ├── backend │ ├── gleam.toml │ ├── manifest.toml │ ├── src │ └── test └── frontend ├── gleam.toml ├── manifest.toml ├── src └── test 在之前的版本中,语言服务器的每个编辑器实例只支持一个 Gleam 项目,编辑器在根目录下打开。如果打开另一个 Gleam 项目,语言服务器将无法对其进行分析,从而对程序员提供的帮助很少。 现在 Gleam 可以在单个编辑器会话中处理任意数量的 Gleam 项目,并且可以按照开发者自己喜欢的任何方式嵌套。语言服务器将为每个打开的项目启动一个新引擎,并将请求路由到每个文件的正确引擎。 鼠标悬停时显示更多信息 当将鼠标悬停在编辑器中的 Gleam 代码上时,语言服务器现在会显示文档。旧版本在悬停时只显示值,现在支持模式匹配模式,显示它们的类型和文档。 详细更新内容查看发布公告。

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

与 Mybatis-plus 对比,Mybatis-Flex v1.0.7 发布

Mybatis-Flex 是一个优雅的 Mybatis 增强框架,它非常轻量、同时拥有极高的性能与灵活性。我们可以轻松的使用 Mybaits-Flex 链接任何数据库,其内置的 QueryWrapper 帮助我们极大的减少了 SQL 编写的工作的同时,减少出错的可能性。 总而言之,Mybatis-Flex 能够极大地提高我们的开发效率和开发体验,让我们有更多的时间专注于自己的事情。 MyBatis-Flex 1.0.7 更新内容如下: 新增:BaseMapper 添加可以直接根据 Condition 查询的方法,更加方便 新增:Db 添加可以直接根据 Condition 查询的方法,更加方便 新增:代码生成器添加 @Table(onSet) 的配置 新增:添加 HttpMessageReporter,用于可以往服务器发送审计日志 优化:APT 生成的 java 属性默认使用下划线的方式 优化:优化 APT 生成 mapper 的默认存放路径 优化:重命名 QueryEntityProcesser 为 QueryEntityProcessor 文档:添加字段权限的相关文档 文档:添加字典回写的相关文档 文档:添加字段加密的相关文档 文档:添加 Mybatis-Flex 与同类框架对比的文档 Mybaits-Plus 是一个老牌的、享有盛誉的 Mybatis 增强框架,flex 和 plus 有什么区别呢?以下是 Mybatis-Flex、Mybatis-Plus、Fluent-Mybatis 的一些细节对比。容来源其官网、git 或者 网络文章,若有错误欢迎指正。 功能对比​ MyBatis-Plus:老牌的 MyBatis 增强框架 Fluent-Mybatis:阿里开发的 Mybatis 增强框架(是阿里开发的吗?) 功能或特点 MyBatis-Flex MyBatis-Plus Fluent-Mybatis 对 entity 的基本增删改查 ✅ ✅ ✅ 分页查询 ✅ ✅ ✅ 分页查询之总量缓存 ✅ ❌ ❌ 分页查询无SQL解析设计(更轻量) ✅ ❌ ✅ 多表查询: from 多张表 ✅ ❌ ❌ 多表查询: left join、inner join 等等 ✅ ❌ ✅ 单主键配置 ✅ ✅ ✅ 多种 id 生成策略 ✅ ✅ ✅ 支持多主键、复合主键 ✅ ❌ ❌ 字段的 typeHandler 配置 ✅ ✅ ✅ 除了 Mybatis,无其他第三方依赖(更轻量) ✅ ❌ ❌ 逻辑删除 ✅ ✅ ✅ 乐观锁 ✅ ✅ ✅ SQL 审计 ✅ ❌ ❌ 数据填充 ✅ ✅(收费) ✅ 数据脱敏 ✅ ✅(收费) ❌ 字段权限 ✅ ✅(收费) ❌ 字段加密 ✅ ✅(收费) ❌ 字典回显 ✅ ✅(收费) ❌ Db + Row ✅ ❌ ❌ Entity 监听 ✅ ❌ ❌ 多数据源支持 ✅ ✅ ❌ 以上内容来自第三方相关产品的官方文档或第三方平台,若有错误,欢迎指正。 基础查询​ MyBatis-Flex: java QueryCondition condition = EMPLOYEE.LAST_NAME.like("B") .and(EMPLOYEE.GENDER.eq(1)) .and(EMPLOYEE.AGE.gt(24)); List<Employee> employees = employeeMapper.selectListByCondition(condition); MyBatis-Plus: java QueryWrapper<Employee> queryWrapper = new QueryWrapper<>(); queryWrapper .like("last_name","B") .eq("gender",1) .gt("age",24); List<Employee> employees = employeeMapper.selectList(queryWrapper); Fluent-MyBatis: java EmployeeQuery query = new EmployeeQuery() .where.lastName().like("B") .and.gender().eq(1) .and.age().gt(24) .end(); List<Employee> employees = employeeMapper.listEntity(query); 总结:MyBatis-Flex 和 Fluent-MyBatis 的字段有 IDE 自动提示,不担心写错,同时在后续版本升级和重构时,更好的利用 IDE 的重构功能, 字段错误在项目编译期间就能发现及时纠正。 查询集合函数​ MyBatis-Flex: java QueryWrapper query = new QueryWrapper() .select( ACCOUNT.ID, ACCOUNT.USER_NAME, max(ACCOUNT.BIRTHDAY), avg(ACCOUNT.SEX).as("sex_avg") ); List<Employee> employees = employeeMapper.selectListByQuery(query); MyBatis-Plus: java QueryWrapper<Employee> queryWrapper = new QueryWrapper<>(); queryWrapper .select( "id" ,"user_name" ,"max(birthday)" ,"avg(birthday) as sex_avg" ); List<Employee> employees = employeeMapper.selectList(queryWrapper); 缺点:字段硬编码,容易错处。无法使用 ide 的字段进行重构,无法使用 IDE 自动提示,发生错误不能及时发现。 Fluent-MyBatis: java EmployeeQuery query = new EmployeeQuery() .select .id() .userName() .max.birthday() .avg.sex("sex_avg") .end() List<Employee> employees = employeeMapper.listEntity(query); 缺点:编写内容不符合 sql 直觉。 and(...) 和 or(...)​ 假设我们要构建如下的 SQL 进行查询(需要在 SQL 中添加括号)。 sql SELECT * FROM tb_account WHERE id >= 100 AND (sex = 1 OR sex = 2) OR (age IN (18,19,20) AND user_name LIKE "%michael%" ) MyBatis-Flex: java QueryWrapper query = QueryWrapper.create() .where(ACCOUNT.ID.ge(100)) .and(ACCOUNT.SEX.eq(1).or(ACCOUNT.SEX.eq(2))) .or(ACCOUNT.AGE.in(18,19,20).and(ACCOUNT.USER_NAME.like("michael"))); MyBatis-Plus: java QueryWrapper<Employee> query = new QueryWrapper<>(); queryWrapper.ge("id",100) .and(i->i.eq("sex",1).or(x->x.eq("sex",2))) .or(i->i.in("age",{18,19,20}).like("user_name","michael")); Fluent-Mybatis: java AccountQuery query = new AccountQuery() .where.id().ge(100) .and( new AccountQuery().where.sex().eq(1).or( new AccountQuery().where.sex().eq(2).end() ).end()) .or( new AccountQuery().where.age.in(18,19,20) .and.userName().like("michael").end() ) .end(); 缺点:许多.end()方法调用,容易忘记出错(或者是我写错了?欢迎指正)。 多表查询 1​ MyBatis-Flex: java QueryWrapper query = QueryWrapper.create() .select().from(ACCOUNT) .leftJoin(ARTICLE).on(ACCOUNT.ID.eq(ARTICLE.ACCOUNT_ID)) .where(ACCOUNT.AGE.ge(10)); List<Account> accounts = mapper.selectListByQuery(query); MyBatis-Plus: java // 不支持~~~~ Fluent-MyBatis: java StudentQuery leftQuery = new StudentQuery("a1").selectAll() .where.age().eq(34) .end(); HomeAddressQuery rightQuery = new HomeAddressQuery("a2") .where.address().like("address") .end(); IQuery query = leftQuery .join(rightQuery) .on(l -> l.where.homeAddressId(), r -> r.where.id()).endJoin() .build(); List<StudentEntity> entities = this.mapper.listEntity(query); 缺点:编写内容不符合 sql 直觉。同时在编写end()和endJoin()容易忘记。 多表查询 2​ 假设查询的 SQL 如下: sql SELECT a.id, a.user_name, b.id AS articleId, b.title FROM tb_account AS a, tb_article AS b WHERE a.id = b.account_id MyBatis-Flex: java QueryWrapper query = new QueryWrapper() .select( ACCOUNT.ID , ACCOUNT.USER_NAME , ARTICLE.ID.as("articleId") , ARTICLE.TITLE) .from(ACCOUNT.as("a"), ARTICLE.as("b")) .where(ACCOUNT.ID.eq(ARTICLE.ACCOUNT_ID)); MyBatis-Plus: java // 不支持~~~~ Fluent-MyBatis: java // 不支持~~~~ PS:也有可能是我自己不知道如何支持,而 Fluent-MyBatis 原因,有知道的同学可以给下示例代码。 进一步了解 MyBatis-Flex 框架,请参考一下链接: 1、快速开始:https://mybatis-flex.com/zh/getting-started.html 2、强大的 QueryWrapper:https://mybatis-flex.com/zh/querywrapper.html 3、逻辑删除:https://mybatis-flex.com/zh/logic_delete.html 4、乐观锁:https://mybatis-flex.com/zh/version.html 5、数据填充:https://mybatis-flex.com/zh/fill.html 6、数据脱敏:https://mybatis-flex.com/zh/mask.html 7、SQL 审计:https://mybatis-flex.com/zh/audit.html 8、多数据源:https://mybatis-flex.com/zh/multi-datasource.html 9、更多企业级的功能正在路上:https://mybatis-flex.com

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

云原生安全开源项目 CNSI(Narrows)v0.3 发布

云原生安全开源项目 CNSI(项目代号:Narrows)发布了 0.3 版本,新增了 “Exporter”( 导出器) 的组件,帮助用户更简单的拓展潜在的数据消费者。同时该版本将 kube-bench 的错误配置项扫描器 (misconfiguration scanner) 的部署形式由 CronJob 变为 DaemonSet 的形式,并且可以自动监听配置文件的变化,在文件改变时自动触发扫描。 除此之外,在这个 release 中,允许用户可以不通过克隆代码,直接使用 Helm 命令安装部署 Narrows。 (详细信息请见:https://github.com/vmware-tanzu/cloud-native-security-inspector/tree/0.3.0/src/tools/installation/charts/cnsi/README.md) 其他更新包括 e2e-framework 的测试框架被首次引入到项目中,用以进行基本流程的测试。之前版本中通过 Custom Resources (自定义资源) 方式在 Kubernetes 中保存扫描报告的功能,在此版本中被移除。所有的报告都会通过 “Exporter” 组件默认导入到 OpenSearch 中存储。 新引入的 Exporter 组件 在 0.3.0 的版本中,我们新增了一个叫做”Exporter” 的组件,主要作用是用来解耦扫描器 (Scanner) 和扫描报告的消费者 (Consumer)。在之后,扫描器只聚焦于安全检测和生成对应的扫描报告。而”Exporter” 主要负责将扫描器生成的报告发送给数据消费者。 这种调整使得用户可以以较少的代码修改,从而为 Narrows 灵活的自定义新的数据消费者。Exporter 做为一个可以独立运行和部署的模块,其代码在路径 src/pkg/exporter 路径下。对应的 Dockerfile 是 src/Dockerfile.exporter。它可以被 src/tools/installation/yaml/data-exporter.yaml 文件部署 (也可以通过 Helm 的方式部署安装,详见 README),以 Deployment 的形式运行在 Kubernetes 集群中,可以使用 http://cnsi-exporter-service.[namespace].svc.cluster.local:6780/forward 这个 endpoint 来进行访问。 导出器 (Exporter) 会作为一个 web 服务运行,并监听在这个端口 (endpoint) 上,当它收到扫描器发来的 post 请求时,会解析请求中的负载 (payload),并按照扫描器 (Scanner) 和导出器 (Exporter) 之间约定的格式 (protocol) 进行解析。 在这个格式 (protocol) 中,包含了扫描器的名称,数据消费者的有关配置(URL,credentials 等)和要导出的报告的具体内容。 在目前的导出器 (Exporter) 中,封装了 OpenSearch 和 VAC Governor 的 http client。可以根据格式 (protocol) 中设置的值进行处理。 关于 VMware Application Catalog Governor VAC 是 VMware Application Catalog 缩写,它构建于 Bitnami 的生态之上。它提供一系列的预打包和验证的开源容器镜像,可以根据客户选择而定制。VAC 提供的镜像目录可以提高开发人员的敏捷性,帮助他们发现、迭代和快速上线。VAC Governor 是一个为 VAC 提供软件检测能力的组件。目前 Project Narrows 已经可以与 VAC Governor 进行集成,从而在用户许可的情况下,将一部分工作负载信息收集至 VAC Governor。 (详细信息请见:https://github.com/vmware-tanzu/cloud-native-security-inspector/tree/0.3.0/docs/GOVERNOR.md) Narrows 已经由 VMware 公司开源,采用商业化友好的阿帕奇 2.0 软件许可,方便用户作扩展和创新。欢迎广大用户参与到我们的开源项目中,并期待您的使用和反馈。如果您对 Narrows 开源项目感兴趣,希望与我们更密切地合作,或者希望进行测试和试用、提出建议或 bug,请发邮件至 narrows @ vmware.com。 内容来源|公众号:VMware 中国研发中心 本文作者:Simon Zhao (赵仁明),VMware 云原生实验室架构师。10 年 + 云平台、数据平台、人工智能基础设施平台研发经验。目前主要关注云原生与人工智能领域的开源及创新项目。

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

PicList V1.5.0 发布,图床管理和图片上传工具

PicList 是一个云存储管理和图片上传工具,可以进行包括云端目录查看、文件搜索、批量上传下载和删除文件,复制多种格式文件链接和文件预览等操作。 开源地址和软件官网 Github: https://github.com/Kuingsmile/PicList Gitee: https://gitee.com/kuingsmile/PicList 软件官网:https://piclist.cn 下载地址 Windows: https://release.piclist.cn/1.5.0/PicList-Setup-1.5.0-ia32.exehttps://release.piclist.cn/1.5.0/PicList-Setup-1.5.0-x64.exehttps://release.piclist.cn/1.5.0/PicList-Setup-1.5.0.exe Linux: https://release.piclist.cn/1.5.0/PicList-1.5.0.AppImagehttps://release.piclist.cn/1.5.0/piclist_1.5.0_amd64.snap Mac: https://release.piclist.cn/1.5.0/PicList-1.5.0-arm64.dmghttps://release.piclist.cn/1.5.0/PicList-1.5.0-x64.dmg 本次更新内容 新特性 现在可以一键从PicGo迁移设置文件和相册了,请在设置界面使用(APP store版本因沙盒机制限制不提供) 现在用户可以自定义悬浮窗的图标了 在上传页面点击图床名现在会跳转到设置界面,方便修改 在图床设置页面,点击顶部名字可以直接跳转到对应的登录页面了 相册图片的填充方式修改为contain,避免图片过度拉伸 图床设置时输入框取消了密码模式,方便查看和修改 主菜单新增使用手册链接 调整了部分对话框的布局,使其更加整洁 补充完整了多语种文件 bug修复 修复了自定义链接格式设置窗口中提示文字换行不正确的问题 修复了图床管理设置,窗口放大后部分选项排版重叠的问题 修复了图床设置时部分输入框无法粘贴文本的问题 修复了Mac App Store版本无法安装插件的问题 特色功能 保留了PicGo的所有功能,兼容已有的PicGo插件系统,包括和typora、obsidian等的搭配 相册中可同步删除云端图片 内置水印添加、图片压缩、图片缩放、图片旋转和图片格式转换等功能,支持自定义配置,且可以通过CLI命令行调用 支持管理所有图床,可以在线进行云端目录查看、文件搜索、批量上传、批量下载、删除文件等 支持预览多种格式的文件,包括图片、视频、纯文本文件和markdown文件等 支持正则表达式的批量云端文件重命名 管理界面使用内置数据库缓存目录,加速目录加载速度 对于私有存储桶等支持复制预签名链接进行分享 优化了PicGo的界面,解锁了窗口大小限制,同时美化了部分界面布局 软件截图

资源下载

更多资源
Mario

Mario

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

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

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

WebStorm

WebStorm

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

用户登录
用户注册