首页 文章 精选 留言 我的

精选列表

搜索[压缩包预览],共7355篇文章
优秀的个人博客,低调大师

Go+ v1.3 新特性预览:Go+ Mini Spec、领域文本及 TPL

Go+ 编程语言作者许式伟公布了 Go+ v1.3 的最新动态,称该版本的功能已经进入冻结状态。除了还在进行中的 Wasm 支持,不会再增加任何功能。 下面是 Go+ v1.3 的核心更新: Go+ Mini Spec 发布 领域文本,尤其是 Go+ 的 TPL 文法的内置支持 支持 import C/C++ 和 Python 包,并支持生成 Wasm 文件 许式伟表示,Go+ v1.3 是Go+ 发展上很重要的里程碑,此版本实现了与 Python 生态的完美兼容。至此,Go+ 的三合一已经只差最后一小步,支持 import Python 库解决了最难的一步,但后续还有非常多的工作要做。 详情查看:https://mp.weixin.qq.com/s/WrITIgkb5TZfNlKTgT2izA

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

SpEL Validator 预览版发布

前言 大家好,我是阿杆,不是阿轩。 参数校验这个东西,很多情况下都是比较简单的,用 @NotNull、@Size 等注解就可以解决绝大多数场景,但也有一些场景是这些基本注解解决不了的,只能用一些其他的方式处理,这样就导致参数校验变成了多层,其实是不利于代码维护的。 于是乎,我写了一套几乎可以满足任何场景的参数校验组件,名为SpEL Validator ,安利给大家。 GitHub:https://github.com/stick-i/spel-validator 官方文档:https://spel-validator.sticki.cn/ 💡 它解决了什么问题? 枚举值字段校验: @SpelAssert(assertTrue = " T(cn.sticki.enums.UserStatusEnum).getByCode(#this.userStatus) != null ", message = "用户状态不合法") private Integer userStatus; 多字段联合校验: @NotNull private Integer contentType; @SpelNotNull(condition = "#this.contentType == 1", message = "语音内容不能为空") private Object audioContent; @SpelNotNull(condition = "#this.contentType == 2", message = "视频内容不能为空") private Object videoContent; 复杂逻辑校验,调用静态方法: // 中文算两个字符,英文算一个字符,要求总长度不超过 10 // 调用外部静态方法进行校验 @SpelAssert(assertTrue = "T(cn.sticki.util.StringUtil).getLength(#this.userName) <= 10", message = "用户名长度不能超过10") private String userName; 调用 Spring Bean(需要使用 @EnableSpelValidatorBeanRegistrar 开启Spring Bean支持): // 这里只是简单举例,实际开发中不建议这样判断用户是否存在 @SpelAssert(assertTrue = "@userService.getById(#this.userId) != null", message = "用户不存在") private Long userId; 更多使用场景,欢迎探索和补充! 📝 特点 强大的参数校验功能,几乎支持所有场景下的参数校验。 扩展自 javax.validation 包,只新增不修改,无缝集成到项目中。 基于 SpEL(Spring Expression Language) 表达式,支持复杂的校验逻辑。 支持调用 Spring Bean,可在表达式中使用注入过的 Spring Bean。 校验时基于整个对象,支持对象内字段间的校验逻辑。 支持自定义校验注解,可根据业务需求自定义校验逻辑。 无需额外的异常处理,校验失败时会上报到 javax.validation 的异常体系中。 简单易用,使用方式几乎与 javax.validation 一致,学习成本低,上手快。 🎈 环境 目前仅测试了 JDK8 环境,理论上来说 JDK8+ 应该都是支持的。 📦 快速开始 添加依赖 Latest Version: 0.2.0-beta <dependency> <groupId>cn.sticki</groupId> <artifactId>spel-validator</artifactId> <version>Latest Version</version> </dependency> <dependency> <groupId>org.hibernate.validator</groupId> <artifactId>hibernate-validator</artifactId> <version>${hibernate-validator.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>${spring-boot-starter-web.version}</version> </dependency> 在接口参数上使用 @Valid 或 @Validated 注解 @RestController @RequestMapping("/example") public class ExampleController { /** * 简单校验示例 */ @PostMapping("/simple") public Resp<Void> simple(@RequestBody @Valid SimpleExampleParamVo simpleExampleParamVo) { return Resp.ok(null); } } 在实体类上使用 @SpelValid 注解,同时在需要校验的字段上使用 @SpelNotNull 等约束注解 @Data @SpelValid public class SimpleExampleParamVo { @NotNull private Boolean switchAudio; /** * 当 switchAudio 为 true 时,校验 audioContent,audioContent 不能为null */ @SpelNotNull(condition = "#this.switchAudio == true", message = "语音内容不能为空") private Object audioContent; } 添加全局异常处理器,处理校验异常 @RestControllerAdvice public class ControllerExceptionAdvice { @ExceptionHandler({BindException.class, MethodArgumentNotValidException.class}) public Resp<Void> handleBindException(BindException ex) { String msg = ex.getFieldErrors().stream() .map(error -> error.getField() + " " + error.getDefaultMessage()) .reduce((s1, s2) -> s1 + "," + s2) .orElse(""); return new Resp<>(400, msg); } } 发起请求,即可看到校验结果 示例一:@SpelNotNull 校验不通过 请求体: { "switchAudio": true, "audioContent": null } 响应体 { "code": 400, "message": "audioContent 语音内容不能为空", "data": null } 示例二:校验通过 请求体 { "switchAudio": false, "audioContent": null } 响应体 { "code": 200, "message": "成功", "data": null } 示例三:@NotNull 校验不通过 请求体 { "switchAudio": null, "audioContent": null } 响应体 { "code": 400, "message": "switchAudio 不能为null", "data": null } 📖 使用指南 注意:本组件的目的不是代替 javax.validation 的校验注解,而是作为一个扩展,方便某些场景下的参数校验。能够使用 javax.validation 的场景就不要使用 spel-validator ,因为 spel-validator 会有一定的性能损耗。 开启约束校验 需要满足以下两个条件,才会对带注解的元素进行校验: 在接口参数上使用 @Valid 或 @Validated 注解 在实体类上使用 @SpelValid 注解 如果只满足第一个条件,那么只会对带 @NotNull、@NotEmpty、@NotBlank 等注解的元素进行校验。 如果只满足第二个条件,那么不会对任何元素进行校验。 这是因为 @SpelValid 注解是基于 javax.validation.Constraint 实现的,只有在 @Valid 或 @Validated 注解的支持下才会生效。 而 spel-validator 提供的约束注解是基于 @SpelValid 进行扫描校验的,只有在 @SpelValid 注解生效的情况下才会执行约束校验。 使用约束注解 目前支持的约束注解有: 注解 说明 对标 javax.validation @SpelAssert 逻辑断言校验 无 @SpelNotNull 非 null 校验 @NotNull @SpelNotEmpty 集合、字符串、数组大小非空校验 @NotEmpty @SpelNotBlank 字符串非空串校验 @NotBlank @SpelNull 必须为 null 校验 @Null @SpelSize 集合、字符串、数组长度校验 @Size 每个约束注解都包含三个默认的属性: message:校验失败时的提示信息。 group:分组条件,支持 SpEL 表达式,当分组条件满足时,才会对带注解的元素进行校验。 condition:约束开启条件,支持 SpEL 表达式,当 表达式为空 或 计算结果为true 时,才会对带注解的元素进行校验。 调用 Spring Bean 默认情况下,解析器无法识别 SpEL 表达式中的 Spring Bean。 如果需要在 SpEL 表达式中调用 Spring Bean,需要在启动类上添加 @EnableSpelValidatorBeanRegistrar 注解, 开启 Spring Bean 支持。 @EnableSpelValidatorBeanRegistrar @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } 自定义约束注解 在注解上使用 @SpelConstraint ,并指定验证器。 然后给注解添加上三个固定的字段 message 、group、condition。 实现验证器 具体实现方式可以参考官方文档。 如果你使用过 javax.validation 的自定义约束注解,那么你会发现 SpEL Validator 的自定义约束注解几乎与 javax.validation 一致。 📦 示例项目 我也写了一个简单的示例项目,有一些基本的使用方法: https://github.com/stick-i/spel-validator-example 最后 贴一下GitHub地址:https://github.com/stick-i/spel-validator (顺手点个star呀~) 欢迎大家进行体验,有任何疑问欢迎一起讨论。

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

🔥🔥🔥超级 ORM 框架 mybatis-mp 预览版 1.6.8-rc 发布

官网 :https://mybatis-mp.cn 更新: 1: 增加sql buidler构建干预口,让你可以更好的扩展sql 为什么推荐 mybatis-mp ?: mybatis-mp 是一款超级强大的 ORM 框架 1:可多表 join(不再只能单表了) 2:良好 resultMap 结果映射能力(不怕映射错误了) 3:良好的扩展能力:orm+sql 模板 (让 ORM 框架不再死板,扩展性极强) 4:就算 xml 也不用再增加什么插件了,自带 xml 分页 5:强大的各种数据库适配,可在一套代码中 实现多个数据库适配;真正的 ORM hibernate 都做不到 6:极简的 api 设计,让开发者 不再迷糊 7:还很多很多独特优良的设计,只有前往体验,才能感受了;不相信可以试试!!! 1.单表 +@Fetch 注解 + fetchFilter 方法 @Data @ResultEntity(SysUser.class) public class SysUserVo { private Integer id; private String userName; private String password; private Integer roleId; private LocalDateTime create_time; @Fetch(source = SysUser.class, property = "roleId", target = SysRole.class, targetProperty = "id") private List<SysRoleVo> sysRoles; } List<SysUserVO> list = QueryChain.of(sysUserMapper) .from(SysUser.class) .fetchFilter(SysUserVO::getRoles,where->where.eq(SysRole::getStatus,1)) .returnType(SysUserVO.class) .list(); fetchFilter 方法是对 @Fetch 注解的增强,没有特殊要求一般,可忽略 2. 单表查询 SysUser sysUser = QueryChain.of(sysUserMapper) .eq(SysUser::getId, 1) .eq(SysUser::getUserName,'admin') .get(); 3.VO 映射 @Data @ResultEntity(SysUser.class) public class SysUserVo { private Integer id; private String userName; //字段名字不一样时 @ResultEntityField(property = "password") private String pwd; } SysUserVO sysUserVO = QueryChain.of(sysUserMapper) .eq(SysUser::getId, 1) .eq(SysUser::getUserName,'admin') .returnType(SysUserVO.class) .list(); 4. join 查询 @Data @ResultEntity(SysUser.class) public class SysUserVo { private Integer id; private String userName; //字段名字不一样时 @ResultEntityField(property = "password") private String pwd; //映射一个对象 1对1 @NestedResultEntity(target = SysRole.class) prviate SysRole sysRole; //映射多个对象 1对多 @NestedResultEntity(target = SysRole.class) prviate List<SysRole> sysRoles; } List<SysUserRoleVO> list = QueryChain.of(sysUserMapper) .from(SysUser.class) .join(SysUser.class, SysRole.class) .returnType(SysUserRoleVO.class) .list(); 还有很多很多超级方便有趣的写法,欢迎大家来使用https://mybatis-mp.cn 例如: 1 . 多表 join A 内嵌 B B 内嵌 C 都可以 2 . 不使用 join 使用 @Fetch 注解 + fetchFilter 方法实现 将 A JOIN B 变成 query A + query B 3 . 使用 @Paging 注解 实现你的 xml 自动分页 4 . 使用 SQL 模板,让你 ORM 更简单更容易扩展,再也不怕被框架限制了

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

支持商品预览、GIF &视频等实用功能

点击作者:成都光大网络关注我们 前言:历经又一个月的精心打磨与改进,我们再次高兴地宣布BeikeShop v1.3.7版本正式上线! 虽说本次版本号的变动非常小,但这次升级的内容非常!非常!非常丰富! 接下来将向大家介绍v1.3.7版本中新增/优化/修复了哪些内容 BeikeShop是什么?—— 一款开源好用的跨境电商系统! ✦✦ 一、BeikeShop新增功能 1. 新增 产品列表页 QuickView(Preview) 功能 用户可以在前台商品列表页,点击“QuickView”按钮 无需开启新的页面,即可快速查看产品详细信息,提供更快捷的浏览体验! 2.新增 后台图片库支持视频以及GIF动图上传 BeikeShop 卖家们翘首以盼的商品视频展示、GIF动图展示功能终于上线了!卖家有更多展示自己产品的方式 v1.3.7版本中,后台图片库中上传和管理视频文件以及Git动态图。 3.新增 游客查看订单页面 修改了对应邮件模板 现在,游客在购买支付后,页面新增了“View more”按钮,点击即可查看订单详细信息(如下图) 同时,在游客付款后收到的邮件中,也对新增了相应的“View more”按钮,游客顾客也能获得详细订单信息 4.新增 韩语语言包: 感谢GitHub用户“China-CowX”提出韩语语言包的PR,我们在这次升级将其加入到系统核心 5. 新增 “支付信息”记录功能 在管理员后台“订单列表”中,点击查看订单详情,可以看到“支付信息”这一栏。用户付款后相关数据、信息在这里显示(如下图) 例如:线下支付中,客户上传了付款凭证。卖家可以在后台,快速的查看支付凭证并确认收款 6.新增 页面hook 产品详情、购物车、结账页、个人中心等页面hook 根据开发者开发插件时的反馈,以及新增功能时发现的问题,再次增加了hook点位。进一步提升了开发的自由度! ✦✦ 二、BeikeShop优化功能 1. 优化 插件字段描述支持多语言 在“插件详情页”中,对字段的解释说明文字描述,支持多语言显示。使更多国家/地区的用户能更方便的安装插件 2. 优化 个人中心页面所有按钮 对个人中心页面中的按钮进行了优化,风格更加简约大气! 3. 优化 后台产品多规格编辑 解决了删除规格导致配置的规格sku数据的错乱,提升了管理多规格产品的效率和便捷性 4. 优化 Cart、Checkout、Total模块兼容多商家 为兼容BeikeShop B2B2C版本,我们对这些模块进行了优化。想要了解BeikeShop B2B2C版的用户欢迎咨询我们哦! 5. 优化 统一订单状态显示 status_format 通过统一订单状态显示,使得插件开发和后续开发更加容易。开发体验极的大优化! 6. 优化 修改地址页面 Fullname 地址编辑中“Name”字段变为 "Fullname",国外买家更容易理解 7. 优化列表页产品SPU图片显示 根据卖家展示商品的需求,在商品列表页、详情页,都会以"SPU商品的第一张主图"作为主图展示 8. 结账页提交订单报错时,显示详细错误原因 在订单提交出现错误,会显示更详细的错误信息,帮助开发者更好地排查和解决问题 9. 优化单页和新闻博客页 10. 优化自动测试脚本 11. 优化结账页、网页头部 ✦✦ 三、BeikeShop修复功能 -修复 某些情况下首页模块 tab_product 报错 - 修复 文章分类页 面包屑、TDK、相关商品无法删除的问题 - 修复 属性筛选配置问题 - 修复 首页幻灯模块 - 修复 税费规则 - 修复 手机版无法点击导航的问题 - 修复 Flexshipping以及系统运费相关问题 - 修复 分类排序和筛选 以上就是本次BeikeShop v1.3.7版本的升级内容总结,我们将持续努力改进系统,为您提供更好的产品和服务 欢迎随时与我们分享您的宝贵建议和反馈,我们将不断迭代优化,为您创造更好的体验! 欢迎下载安装升级,体验更强大的BeikeShop! 想要了解更多信息?点击链接访问! 官方网站 https://beikeshop.com/ ↓前台链接↓ https://demo.beikeshop.com/ ↓后台链接↓ https://demo.beikeshop.com/admin 账号:demo@beikeshop.com 密码:demo 版权所有,转载需注明出处!

资源下载

更多资源
Mario

Mario

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

腾讯云软件源

腾讯云软件源

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

Sublime Text

Sublime Text

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

WebStorm

WebStorm

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

用户登录
用户注册