熟人介绍的
Tony Joseph
无知识,有内涵,不好看,健谈
  • 好物推荐:Niz Plum 静电容键盘

    就是它 好在哪 双模支持:蓝牙 + 有线,可以连接3个设备 续航理想:USB插线使用时会自动充电,充满后编码使用,半个月没问题 颜值较高:布局虽然紧凑,但是键大小几乎都没缩小;侧刻键帽,英文字体看着很清晰 手感很好:PBT材质键帽,有点磨砂的感觉...

  • 软件推荐:7+ Taskbar Tweaker

    这是个啥 7+ Taskbar Tweaker 是一个用来定制Windows 任务栏的工具,别看这个软件的名字有点“非主流”,但是它的功能真的是特别强大。感谢我的好基友推荐了它,解决了我日常工作中切实的痛点:定制相同应用被分组后的顺序。 用它干啥 我在使用Windows 10系统(...

  • 使用Java Stream将邻接表组装成树

    描述 在关系型数据库中保存树形结构最简单、最广泛的设计方案是采用邻接表(Adjacency List),也就是在一行记录中,用一个parent_id字段来引用同一张表的其他记录,比如: id name parent_id 0 中国 null ...

  • 如何将Spring Data JPA的分页实体映射为自定义的类型

    问题 使用Spring Data JPA可以让操作数据库数据变得极为简单:定义一个实体类、然后再创建一个Interface继承JpaRepository,通过这个Interface的实例便可以对数据库进行增删改查。 1 2 3 4 5 6 7 8 ...

  • 在SpringMVC的响应中添加Location响应头

    背景 HTTP协议有一个状态码是201(Created),表示请求成功、已在服务器上成功创建资源。这是一个非常实用的HTTP状态码。使用这个语义明确的状态码是远比只返回一个HTTP 200要好的。 假设我们发送一个POST请求来创建一本书: 1 2 3 4...

  • 好物推荐:显示器折叠文件夹

    我一直用纯五笔模式打字,忘字的代价特别高,这是驱动我用笔记录一些备忘事项的根本原因。为此我还专门买了钢笔和自动铅笔。 另外一个驱动我手写的原因是,最近参与的工作都是和工单有关的,记录纯文字我还可以直接在我电脑软件中快速码字,但是要画一些流转图、关系图什么的,就跟不上了。 面向电脑工...

  • 提取Microsoft Edge的朗读声音

    介绍 Microsoft Edge 浏览器的真人朗读功能真的太牛了,无论是分词、断句还是音色、语调都是我用过的 TTS 工具中较为出色的一个。之前我曾用过阿里云的 TTS SDK,把我的文本朗读为一段小姐姐的声音,作为手机闹铃提警我下班打卡。 但是 Edge 的 TTS 引擎是内置的...

  • 群晖设置HTTPS访问

    背景 我的VPS上有一个定时任务,使用开源的 asme.sh 脚本为我的域名申请Let’s Encrypt的泛解名证书,并自动延期。 1 58 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.s...

  • FAW A11 003(BG)/003(BG)隐藏式行车记录仪使用说明

    一汽大众速腾,2021款卓越版,自带的原厂隐藏式行车记录仪(带雨量传感器)。 主要功能 开机自动录像 自动紧急备份,利用加速触发自动紧急备份当前视频文件 手动紧急备份,录像过程中短按拍照键可手动备份当前视频文件 时间同步功能,打开手机APP自动同步日期时间,日期时间标签显...

  • 不继承SpringBoot的parent项目

    问题 我们在使用 spring initializr 创建SpringBoot项目时,pom.xml文件中默认会继承spring-boot-starter-parent这个父项目: 1 2 3 4 5 6 7 8 9 10 11 12...

  • SpringBoot退出时执行相关代码

    背景 我的一个SpringBoot Web应用(简称主应用),收到请求之后,会启动另外一个Java Web应用(简称子应用)。 当我们通过 Ctrl + C 、SpringBoot Actuator的shutdown接入端,或任务管理器“掐”掉我的主应用时,由主应用启动的子应用并不会退出...

  • 查看SpringBoot应用的进程号

    背景 Springboot应用启动后,需要记录下它的进程id。以便通过PID实现监控和停止等运维工作。 步骤 方案一 创建一个ApplicationPid类的对象(推荐方案): 1 2 3 4 5 6 7 8 9 10 1...

  • 删除Camunda镜像中默认的demo用户

    背景 Camunda Platform的Tomcat分发包,启动后会自动创建一个用户名和密码都是demo的用户,但是有的时候我们并不需要它,本文介绍如何取消这个默认的用户。 ​ 结论 移除掉 camunda-invoice 这个示例应用。 如果demo这个用户已...

  • 使用openjdk docker镜像执行Java程序

    背景 我们可以不必在宿主机上安装JDK或JRE,借助OpenJDK的Docker镜像,来运行一个可执行Java程序(SpringBoot Web应用)。 首先从DockerHub上拉取OpenJDK的镜像,因为我使用的技术栈还是Java 8,因此这里的镜像tag使用了8。 ...

  • Camunda Docker镜像Tag格式规范

    问题描述 Docker Hub上Camunda Bpm Platform这个镜像仓库,Tags页里有很多的镜像,名称又分成很多种,看起来是比较杂乱( 所有可用Tag )。 本文主要记录一下Camunda的Docker镜像命名格式。 ​ 我们可以看到这些Tag有的是run...

  • BPMN2.0教程-泳池泳道

    泳池和泳道都是BPMN中表示“ 参与者 ”的组件,泳道不能单独存在,只能放在泳池中。作为“容器”类型的组件,泳池或泳道中可以放置其他类型的组件:比如活动、网关、事件、顺序流等。 ​ 泳池 介绍泳池:乐队的指挥 这里的 指挥 是名词,我感觉中文环境中用“ 指挥 ”这个...

  • Camunda集成LDAP

    背景 当安装好Camunda BPM之后,用默认用户名 demo 和默认密码 demo 可以登陆到Camunda Cockpit。在不修改任何配置的情况下,Camunda使用的是一个叫做 H2 的嵌入式数据库,Camunda的所有数据都保存在这个数据库中,当然也包括认证服务的数据。 ​ ...

  • BPMN2.0简单入门

    概述 BPM业务流程管理,从管理业务流程的角度来说,我们现有的IT系统大多数都属于这一类,比如供应链领域的InStock(WMS),物流管理/提货送货预约(TMS),订单管理OMS、SRM、CRM等。都可以称之为BPM系统。 ​ 就和我们处理现实中的问题的解决思路一样,我们通...

  • BPMN最佳实践:命名约定

    BPMN 2.0规范没有正式的命名规范,这里是普遍公认的最佳实践和我个人积累的一些经验。 ​ 通用规则 命名尽量简短。 在不影响理解和造成混淆的前提下,命名越短越好,BPMN2.0主要是以设计图的形式存在,要在固定大小的组件内部写很多文字本身就是非常不美观的...

  • Camunda Call Activiti调用子流程版本动态指定

    描述 Camunda调用子流程时,到底要调用哪一个版本的子流程定义,可以通过设置 CalledElementBinding 属性来进行设置。 CalledElementBinding 属性有2个值是可以使用变量的,即, version 和 versionTag 。 ​ ...

  • Camunda调用子流程(Call Activity)

    概述 官方文档在这一章的描述中经常会用到的术语是MainProcess和SubProcess,或者Calling Process和Called Process,我就简单的用“父流程”和“子流程”来代替了,并不严谨,提前知会一下。 BPMN 2.0中有2种类型的子流程,分别是Sub...

  • Camunda设置子流程(Call Activity)的BusinessKey

    背景 子流程 BPMN2.0将嵌入式子流程(SubProcess)和调用活动(Call Activity)进行了区分。首先要明确的是,本文介绍的是 Call Activity ,也就是下图所示中,加粗黑色边框的圆角矩形。本文介绍如何在主流程调用子流程的时候为其设置一个Busines...

  • Camunda使用表达式操作列表类型的变量

    背景 Camunda BPM通过JUEL(Java Unified Expression Language)来支持表达式,详细内容可以参看 https://docs.oracle.com/javaee/5/tutorial/doc/bnahq.html。 Camunda Mod...

  • 使用Camunda HTTP Connector发送HTTP请求

    配置 添加一个 ServiceTask ,在General面板中implementation的下拉菜单中选择 Conector : 选择Conector之后,会新出现一个Tab页 Connector ,点击切换到这个标签页,在Connector Id输入框中添加 http-con...

  • Spring事务的传播机制

    什么是事务传播机制 事务传播机制是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何去执行,例如method1方法添加了事务,去调用了method2事务方法,那么method2是继续在method1的事务中执行,还是新开一个事务时执行,这就需要method2的事务传播机制来决定。 ...

  • PAPAGO GoSafe 560WiFi使用说明

    硬件规格 规格项 规格值 主镜头光圈 F#1.6 运行内存 2GB 影像分辨率 2160P/1600P/1440P/1296P/1080P/720P 核心数 双核心 画面视角 视场角150°...

  • 重新部署了一下家庭网络

    本文包含内容 启动U盘的制作 工控机安装ESXI EXSI配置网卡直通 在VMWare ESXI环境安装OpenWrt 单线复用:只用一条网络同时传输WAN和LAN数据 交换机如何配置VLAN 为什么要折腾 在设备上装App留学练英语会让手机电量掉的...

  • 找回IDEA调试时的Stop and Rerun提示框

    问题描述 使用IDEA来调试SpringBoot应用时,程序运行中我们修改一些代码,然后需要重启应用查看效果,在这种场景下每次点击Debug图标(也就是那个绿色的小虫子按钮)重启服务时,会弹出一个提示框,提示你是否要停止当前的Web服务器运行,然后重新启动它。 这很好理解,不像一个mai...

  • Windows学习积累

    常用命令 netplwiz:打开用户账户管理 slmgr.vbs -xpr:查看Windows是否永久激活 slmgr.vbs -dlv:显示详细的激活信息,包括:系统版本、激活ID、安装ID、部分产品密钥、许可证状态、剩余 Windows 重置计数等。 shell:startu...

  • Docker学习积累

    常用命令 删除所有已停止的容器 1 docker rm $(docker ps -a -q) 删除容器以及它关联的所有的卷 1 docker rm -v redis 查看Docker镜像版...

  • 软件推荐:ProcessExplorer

    背景 最近在使用Windows 10系统的“投影”功能向电视投屏时,不知道是什么原因,就是连不上,但是连不上就连不上呗,你倒是能让我关闭啊!连个退出按钮也没有,就那么一直卡着,这个在屏幕顶部和右侧浮出来的深灰色的“连接”面板直接缩小了屏幕的可视和操作区域。 想在任务管理器中把它Kill掉...

  • JPA初始化数据

    背景 我们常常需要在应用的初始化阶段自动向数据库中插入一些基础数据,比如默认分类或省市信息等。 SpringBoot应用可以通过在application.properties文件中配置 spring.jpa.generate-ddl 和 spring.jpa.hibernate.ddl-...

  • 手动控制SpringBoot的RabbitMQ消费者

    背景 使用 @RabbitHandler 和@ RabbitListener 注解并指定消息队列后,默认会在应用启动的时候立即就会去消费消息队列中的消息,然而在处理某些场景下,我们可能需要手动停止监听或者手动开始监听,比如我们在调试应用的时候,会经常在本地的IDE中启动项目,这样本地代码和线...

  • maven指定pom.xml文件

    问题描述 有的时候在你的项目中需要对Maven进行不同的配置,典型的场景就是在公司和家里会使用不同的代理或者Maven私服或者在使用Jenkins的时候有时候需要使用固定位置的pom.xml文件。 解决方案 是使用 mvn 命令时,使用-f参数,指定pom.xml的位置: ...

  • JPA监听器

    背景 在JPA中,我们使用Java Persistence API进行数据的持久化(增删改查),相应的该API也提供了监听数据持久化生命周期中的回调方法,比如我们通过JPA的审计功能可以插入创建者(@CreatedBy)、修改者(@LastModifiedBy)、创建时间(@CreatedD...

  • 汇率的涨跌对于出口的影响

    前提 假设一件中国产的衣服总成本是10元人民币。 汇率上升 人民币 $美元 美国顾客需要支付金额 原汇率 ¥10 $1 $1 现汇率 ¥5 $1 $2 按原来的汇率美国顾客只需要付$1就可...

  • 动态修改SpringBoot应用的日志级别

    背景 线上环境的代码日志输出级别通常都是 INFO (SpringBoot的默认日志级别就是INFO),在这个日志级别下只会打印一些非常重要的信息。 但是一旦线上代码出现了Bug,就需要输出在代码中预置好的更详细的日志(使用 logger.debug() 或 logger.trace()...

  • Java Bean Validation入门介绍

    概述 “数据校验”是比较常见的工作,在日常的开发中贯穿于代码的各个层次,从上层的View层到底层的数据层,为了保证程序的正确运行以及数据的正确性,开发者通常会在不同层次间做数据校验,而且这些校验工作通常都是重复的,为了实现代码的复用性,通常会把校验的逻辑写在被校验的对象上。 Bean ...

  • 使用dom4j解析XML

    最近在工作中需要解析BPMN2.0的XML文件,需要用到XML解析的类库。在Java的生态中通常解析XML可以使用dom4j,jdom,SAX,JAXB等方式,看到一些文章说dom4j的效率要高一些而且它还支持 XPath,所以最终选择了使用dom4j。 步骤 导入依赖 ...

  • ISO8601基本介绍

    概述 看到 ISO 就知道这是国际标准化组织为了实现统一标准而定义的规范,规范是反复使用的、多数人知晓的、更容易被大家都理解的一系列共识和要求,了解规范是很重要的。虽然我们根本不可能把众多的规范都系统学习,但是常见、常用的规范还是应该花点时间看一下,毕竟,不看不学,它们还是会不断地在你面前出...

  • 使用acme.sh脚本申请Let's Encrypt免费泛域名证书

    问题描述 在之前 搭建Hexo博客 的时候是使用了 letsencrypt-auto 脚本来生成 Let’s Encrypt 证书的,但是用这个我没能实现自动续期,于是学习了一下,发现改用 acme.sh 脚本可以很方便的实现我的需求,本文记录一下使用过程。 操作步骤 ...

  • 怎样才能玩上使命召唤战区

    注册港区账号 安装暴雪战网客户端,右键暴雪战网图标,点击属性,设置启动快捷方式,在目标一栏的末尾添加 --setregion=US (注意和最后的分号之间有一个空格),点击确定 再次双击暴雪战网图标,在登陆窗体中选择 建立免费的暴雪账号 地区选择 香港 ,填写表单信...

  • 使用Typora编辑hexo博客设置图片路径问题

    问题描述 Typora作为优秀的Markdown所见即所得编辑器,提供了非常强大的图片功能,包括支持图片拖拽、复制粘贴的操作,并且能将截图直接拷贝到对应目录下,非常方便,不再需要复制图片到对应目录下,然后再填写图片路径这样的繁琐过程。 然而,hexo框架默认只能识别根目录中source目...

  • Hexo博客环境塔建

    概述 博客没写几篇,环境倒是换了不少: Github Pages 和 Google Firebase 国内访问要看GFW心情; Coding Pages 非会员如果不加水印就会被强制跳转到他们的推广页; Netlify 也是偶尔抽风,最终还是用回自己的 搬瓦工 $19.9传家宝VPS。 ...

  • 新日XC1软解限速

    新国标要求速度不能超过25km/h,且超过15km/h时就会发出“嘀、嘀、嘀”的发生报警声。选了一圈,终于在今年618活动的时候购入了这台代步小电驴,考虑因素:好看,能上牌,能破解限速。 破解步骤 关闭电源 左刹车捏住到底 拧开钥匙通电 转右车把四下(第四下转到底...

  • Hello World

    Welcome to Hexo ! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answe...