Vertx基础

响应json, 需要安装jackson

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.4</version>
</dependency>

router
.get("/some/path")
// 这个处理器将保证这个Pojo会被序列化成json
// content type被设置成 "application/json"
.respond(
ctx -> Future.succeededFuture(new Pojo()));

或者
ctx.json(new Todo());

阅读更多

react router

react router V6

安装

1
npm i react-router-dom
阅读更多

redux-toolkit使用

安装 npm i @reduxjs/toolkit

创建store

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import { configureStore } from '@reduxjs/toolkit'
import CounterReducer from './counter.slice'


export const store = configureStore({
reducer: {
counter: CounterReducer
},
})

// Infer the `RootState` and `AppDispatch` types from the store itself
export type RootState = ReturnType<typeof store.getState>
// Inferred type: {posts: PostsState, comments: CommentsState, users: UsersState}
export type AppDispatch = typeof store.dispatch
阅读更多

js 其他

axios

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import axios from 'axios'

const baseUrl = "http://localhost:4567"

<!--more-->

// 创建 axios 的实例
const instance = axios.create({
baseURL: baseUrl,
timeout: 30000,
headers: { Authorization: "Bear mytoken" }
});

instance.interceptors.request.use(function (config) {
return config;
}, function (error) {
return Promise.reject(error);
});

instance.interceptors.response.use(
(res) => {
return res;
},
(err) => {
if (err.response.status === 401) {
document.location = '/login';
}
return Promise.reject(err);
}
);
export default instance

typescript

初始化工程

1
2
npm init -y
tsc --init

安装依赖

1
2
npm install -D ts-node
npm install typescript -D
阅读更多

React学习

useEffect

是每次组件 render 完后判断依赖并执行

useCallback缓存一个函数

1
2
3
4
5
6
7
8
9
function Counter() {
const [count, setCount] = useState(0);
const handleIncrement = useCallback(
() => setCount(count + 1),
[count], // 只有当 count 发生变化时,才会重新创建回调函数
);
// ...
return <button onClick={handleIncrement}>+</button>
}
阅读更多

java图片添加文字/图片水印

读取要处理的图片

1
2
ClassPathResource resource = new ClassPathResource("template/clockbg.png");
BufferedImage image = ImageIO.read(resource.getInputStream());
阅读更多

mqtt

简介

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的”轻量级”通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。

MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。

阅读更多