映射 mac 快捷键到 windows 上
推荐
GitHub - rbreaves/kinto: Mac-style shortcut keys for Linux & Windows.
GitHub - stroebjo/autohotkey-windows-mac-keyboard: AutoHotkey Mappings to emulate OSX behaviour with a Mac keyboard on Windows
powerToys
GitHub - randyrants/sharpkeys: SharpKeys is a utility that manages a Registry key that allows Windows to remap one key to any other key.
AutoHotkey
utilities
快捷键工具
AutoHotkey 是面向普通电脑用户的自由开源的自动化软件工具,它让用户能够快捷或自动执行重复性任务。——中文维基百科
VIMO REBINDER
utilities
快捷键工具
参考 vim 的方案,快速处理系统的事务,比如打开 app 等。可以做到 win/mac 统一。
Vimo Rebinder – Max Out Shortcuts Utilization
国内可用的 Docker 镜像源
前端开源视频编辑框架
Revideo is an open-source framework for programmatic video editing based on Motion Canvas. You can use it to automate complex video workflows, or to build entire video editors in the browser.
Apache Commons Configuration
Commons Configuration 是 Apache 基金会开发的配置管理框架
- 支持从 properties 文件、XML 文件、数据库等多种数据源读取配置信息
- 支持配置文件的自动重载
Apache Camel
别被它的名字迷惑了,这可不是沙漠里的骆驼,而是一个强大的企业集成模式(EIP)框架。Camel 就像是给咱们搭建系统集成的”快递员”,帮我们把不同的系统和服务连接起来。
Camel 是什么?
Camel 是一个轻量级的集成框架,它的核心理念是”路由和中介”。简单说,它就像是一个智能的信息中转站,可以帮我们处理不同系统之间的数据交换和转换。它支持 40 多种传输协议和数据格式,让系统集成变得超级简单!
安装 Camel
首先,在 Maven 项目中添加 Camel 的依赖:
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-core</artifactId>
<version>3.20.0</version></dependency>
创建你的第一个 Camel 路由
来看看如何创建一个简单的 Camel 应用:
import org.apache.camel.CamelContext;import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.impl.DefaultCamelContext;
public class FileCopyExample {
public static void main(String[] args) throws Exception { // 创建Camel上下文
CamelContext context = new DefaultCamelContext();
// 添加路由规则
context.addRoutes(new RouteBuilder() { @Override
public void configure() {
from("file:input?noop=true")
.log("发现新文件:${file:name}")
.to("file:output");
}
});
// 启动Camel
context.start();
// 让应用运行一会儿
Thread.sleep(10000);
// 停止Camel
context.stop();
}
}
这段代码创建了一个文件复制的路由,我来解释下:
- 我们创建了一个
CamelContext
,这是 Camel 的运行环境 - 通过
RouteBuilder
定义了路由规则 from("file:input")
监控 input 目录的文件to("file:output")
把文件复制到 output 目录noop=true
表示不要移动或删除源文件
Camel 的路由构建器
Camel 的路由构建非常灵活,我们来看个复杂点的例子:
public class OrderProcessingRoute extends RouteBuilder {
@Override
public void configure() {
from("file:orders?noop=true")
.choice()
.when(xpath("/order/customer/country = 'US'"))
.to("jms:queue:us.orders")
.when(xpath("/order/customer/country = 'UK'"))
.to("jms:queue:uk.orders")
.otherwise()
.to("jms:queue:other.orders")
.end()
.log("订单已处理:${file:name}");
}
}
这个例子展示了:
- 内容路由(Content-based Router)模式
- XPath 表达式解析 XML
- JMS 消息队列集成
- 日志记录
使用企业集成模式
Camel 实现了大多数企业集成模式(EIP):
java
from("direct:start")
.split(body().tokenize("\n"))
.filter(body().contains("重要"))
.aggregate(constant(true), new StringAggregationStrategy())
.completionSize(5)
.to("file:output");
这个例子使用了:
- Split(分割器)
- Filter(过滤器)
- Aggregate(聚合器)
总结
更多的是参考代码设计, 企业集成模式
企业集成的定义及重要性| SAP
企业集成模式(EIP)
Enterprise Integration Patterns(EIP) 对企业集成进行了分析, 并详细介绍了设计、构建和部署消息系统的模式。
EIP中将消息集成结构表示为三个核心组件:端点、通道、消息和三个关键逻辑:多步传递、路由和转换。 从集成抽象的角度来说, 这些概念不仅仅使用于消息系统,也适用于任何系统集成方式的抽象概念。 后面为保持和EIP名词一致,依然使用以上名字,但需要意识到这些同样适用于其他集成模式。
EIP中将消息集成结构表示为以下核心组件:
- 端点:位于应用程序端,负责将应用请求转换为集成请求,与消息系统进行通讯。
- 通道:消息传递应用程序通过消息通道传输数据,是连接发送方和接收方的虚拟管道。
- 消息:消息是通道上传输的原子数据包。
- 多步传递:在消息从发送者传递到接收者的过程中, 可能经过附加的操作,如转换、校验、增加附加信息等。
- 路由:消息中间件的核心功能,负责建立通道网络拓扑并将消息定向到最终接收者。
- 转换:不同的应用程序概念模型可能不一致,发送者以一种方式格式化消息,但接收者希望它以另一种方式格式化。