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...
android studio logcat技巧
对人民来说,唯一的权利是法律,对个人来说唯一的权利是良心。——雨果 很多朋友不会用 LogCat 看日志 View logs with Logcat | Android Studio | Android Developers 这个是官方文档,例如这里可以反向筛选: 1level:error -tag:DeviceDoctorHandler -tag:AndroidRuntime -tag:OOMEventManager -tag:MiuiFastConnectService -tag:.gms.persisten -tag:ANDR-PERF -tag:SELinux -tag:GCM -tag:libc 这里就是筛选出除了后面一大串 Tag 的 Error 等级日志 译文: 使用Logcat查看日志Android Studio 中的 Logcat 窗口通过实时显示来自设备的日志来帮助您调试应用程序,例如,使用 Log 类添加到应用程序的消息、来自在 Android 上运行的服务的消息、或系统消息,例如发生垃圾收集时。当应用程...
Apache Fury
得道者多助,失道者寡助。——孟子 https://fury.apache.org/ Apache Fury 是一个 Java 序列化库,它提供了线程安全和高性能的序列化解决方案。在这个示例中,我们通过继承一个抽象序列化类来实现自定义的序列化逻辑。 例如 我们定义了一个 FurySerialize 类,它扩展了一个抽象的 AbsSerialize 类。这个类实现了两个主要方法:encode 用于将对象序列化成字节,而 decode 用于将字节反序列化成对象。 1234567891011121314151617181920212223242526public class FurySerialize extends AbsSerialize { private static ThreadSafeFury fury; static { fury = Fury.builder() .withLanguage(Language.JAVA) .withRefTracking(true) ...
git修改上次提交时间
滴水可以汇成江河,粒米可以聚成谷仓。——萨迪 当你需要修改 Git 提交的时间,可以根据不同的场景采用不同的方法。下面按场景分类详细介绍各种情况的操作步骤。 在未推送之前修改提交时间修改最近一次提交的时间如果你的提交还没有被推送到远程仓库,修改最近一次提交的时间相对简单: 1git commit --amend --no-edit --date="2024-05-04T01:49:20" 这个命令会更新最后一次提交的时间,而不更改提交信息。 修改未提交的更改如果你有更改尚未提交,需要先进行提交。可以先正常提交,然后立即修改这个新提交的时间: 12git commit -m "Your commit message"git commit --amend --no-edit --date="2024-05-04T01:49:20" 已推送到远程仓库后修改提交时间修改最近一次已推送的提交如果修改的是已经推送到远程的最近一次提交,你需要小心操作,因为这会改变提交的哈希值。操作步骤如下: 12git commit --am...
