处理js的JSON.parse中Number太长导致精度丢失问题
大自然的真实和单纯,常是重要艺术极点的基础。——恩格斯 代码如下: 1"token".split(".").slice(0,2).map(i=>JSON.parse(atob(i))) 这里主要是 JSON.parse 导致的,我简单复现一下 1JSON.parse('{"id":9052710354240385291}') 得到的是 1{id: 9052710354240385000} 可以看到后面的 291 变为 000 了 解决方式这里使用正则匹配 /:\s*([-+]?\d+(\.\d+)?([eE][-+]?\d+)?)/g 例如: 123456JSON.parse('{"id":9052710354240385291}'.replace(/:\s*([-+]?\d+(\.\d+)?([eE][-+]?\d+)?)/g, (match, p1) => { ...
MilvusPlus
得意淡然,失意泰然。——弘一大师 MilvusPlus: 🔥🔥🔥使用MyBatisPlus的方式,优雅的操作向量数据库 Milvus MilvusPlus 是一个功能强大的 Java 库,旨在简化与 Milvus 向量数据库的交互,为开发者提供类似 MyBatis-Plus 注解和方法调用风格的直观 API。 目录 特性 快速开始 应用场景 [自定义注解特性 注解式配置:采用与 MyBatis-Plus 类似的注解方式配置实体模型。 直观的 API:直接的 API 设计简化数据库操作。 易于扩展:核心设计注重可扩展性。 类型安全:利用 Java 类型安全减少错误。 快速开始自定义扩展支持: 12345<dependency> <groupId>io.github.javpower</groupId> <artifactId>milvus-plus-core</artifactId> <version>2.4.0-SNAPSHOT</version></dep...
jackson范型注意
放弃不难,但坚持一定很酷。——《解忧杂货店》 今天使用 Jackson 有个疑问,就是带范型的对象,Jackson 序列化后,范型会怎样处理: 就比如说{"data":{"data":1}},以及下面这个类: 1234@Datapublic static class Foo<T> { private T data;} 这个外层的 data 会反序列化出来什么类型呢? 实际上反序列化出来 LinkedHashMap 1234var obj = mapper.readValue(""" {"data":{"data":1}} """, Foo.class);Assertions.assertEquals(LinkedHashMap.class, obj.getData().getClass()); 如果我们需要继续解析成具体的类型,则...
nginxproxymanager
开成花灾的玫瑰不是灿烂,而是荒凉。——严歌苓 https://nginxproxymanager.com/ 该项目作为预构建的 docker 映像提供,使您能够轻松转发到在家或其他地方运行的网站,包括免费的 SSL,而无需了解太多有关 Nginx 或 Letsencrypt 的信息。 快速设置 完整设置 截图 基于 Tabler 的美观且安全的管理界面 无需了解 Nginx 即可轻松创建转发域、重定向、流和 404 主机 使用 Let’s Encrypt 免费 SSL 或提供您自己的自定义 SSL 证书 主机的访问列表和基本 HTTP 身份验证 超级用户可用的高级 Nginx 配置 用户管理、权限和审核日志 快速设置 安装 Docker 和 Docker-Compose Docker 安装文档 Docker-Compose 安装文档 创建一个与此类似的 docker-compose.yml 文件: yml 123456789101112version: '3.8'services: app: ima...
添加OceanBase-MybatisPlus案例
多思不若养志,多言不若守静,多才不若蓄德。——曾国藩 我在 ob-samples 添加的 demo 合并了 https://github.com/oceanbase/ob-samples/pull/37 通过 mybatisplus-java 启动和测试 OceanBase Docker容器,更多详细信息可以参见 https://github.com/baomidou/mybatis-plus以及 https://java.testcontainers.org/modules/databases/oceanbase 。 快速开始将 OceanBase 驱动、TestContainers OceanBase、MybatisPlusStarter、SpringBootStarter Test 模块添加到 POM。 12345678910111213141516171819202122232425262728293031323334353637383940414243444546<dependencies> <dependency> <grou...
zui
读书须求大义,不可缠绕于琐碎传注之间。——贺钦 分享一个禅道开源的 UI 库 ZUI https://github.com/easysoft/zui 官方文档: https://openzui.com/ ZUI 3 是一个全新的开源 UI 组件库,提供了丰富的实用组件,并提供自由的定制使用方式,不依赖任何 JavaScript 框架,可以在任何 Web 应用中通过原生的方式使用。 访问 ZUI 3 | ZUI 3 来提前预览组件库。 👉 如果你需要访问 ZUI 1,请访问 https://openzui.com/ ,ZUI 1 源码已经转移到 zui1 分支。 特性 🌸 丰富的 CSS 工具类:基于 Tailwind CSS 提供了丰富的 CSS 工具类,包括特别的语义化外观类名; 💠 强大的 JS 组件:基于 Preact 提供了大量 JavaScript 组件,每个组件提供了大量实用的功能选项; 💖 友好现代的界面:提供了经过精心设计的界面风格,所有组件交互经过反复优化和验证以提供最佳方式; 🌗 主题和深色模式:基于 CSS 变量的主题模式,快速生成主题,内置...
jackson序列化时带上类型信息
独学而无友,则孤陋而寡闻。——刘向 首先这么配置即可: 1234objectMapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance,ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY); 假设我们有两个类 Foo 和 Bar,其中 Bar 是 Foo 的子类。未配置 activateDefaultTyping 之前和配置之后,序列化这些对象的 JSON 表示会有所不同。 类定义 1234567public class Foo { public String value = "A Foo";}public class Bar extends Foo { public String barValue = "A Bar";} 配置前 在不使用 activateDefaultTyping 的情况下,序列化 Foo 类型和 Bar 类型的对象...
gradle修改jdk版本
读书是最好的学习,追随伟大人物的思想,是最富有趣味的一门科学。——普希金 今天拉一个项目报错 123456Unable to start the daemon process.The project uses Gradle 3.5 which is incompatible with Java 11 or newer.Possible solution: - Upgrade Gradle wrapper to 7.2 version and re-import the project 找了半天没找到修改jdk的入口 最后还是双击shift,搜Change Gradle JDK Location 这才找到:
android背景省略drawable
带来安定的是两种力量:法律和礼貌。——歌德 https://github.com/JavaNoober/BackgroundLibrary 作为一个android程序员,对于shape、selector这两个标签一定不陌生。每当UI设计师给我们设计出一个个button背景的时候,我们就需要去drawable文件夹下去新建一个bg_xxx.xml,然后很多时候区别仅仅是一个边框的颜色或者填充的颜色。这就导致了很多非常相似的.xml文件产生。 网上之前也有了一种通过自定义View,在xml中通过设置属性达到shape效果的控件。但是这种自定义的控件不太灵活,归根到底是一个自定义的button,如果我想改造项目的话就得去替换原有的button或者textView。接下来就给大家提供一种更加简单的方式:无需自定义View,直接添加属性便可以实现shape、selector效果。 依赖方式: 123456789allprojects { repositories { ... maven { url 'https:...
安卓下拉刷新组件
当一个民族破灭,心理上退化时,便会衍生恶德德奢侈。——尼采 是这个组件: https://github.com/scwang90/SmartRefreshLayout/ 这里我用到了自定义 RefreshHeader 12345 ClassicsHeader classicsHeader = new ClassicsHeader(context);classicsHeader.setEnableLastTime(false);classicsHeader.setArrowResource(R.mipmap.foo);classicsHeader.setProgressResource(R.mipmap.bar);binding.smartRefreshLayout.setRefreshHeader(classicsHeader);//设置Header 然后xml 12345678910<!-- SmartRefreshLayout containing the ObservableRecyclerView --> <com.scwang...
