环境准备
Node.js 安装
React 开发需要 Node.js 环境,建议安装 LTS 版本。
大约 2 分钟
// useLocalStorage.js
import { useState, useEffect } from 'react';
function useLocalStorage(key, initialValue) {
const [storedValue, setStoredValue] = useState(() => {
try {
const item = window.localStorage.getItem(key);
return item ? JSON.parse(item) : initialValue;
} catch (error) {
console.error(error);
return initialValue;
}
});
const setValue = (value) => {
try {
const valueToStore = value instanceof Function ? value(storedValue) : value;
setStoredValue(valueToStore);
window.localStorage.setItem(key, JSON.stringify(valueToStore));
} catch (error) {
console.error(error);
}
};
return [storedValue, setValue];
}
// 使用
function App() {
const [theme, setTheme] = useLocalStorage('theme', 'light');
return <button onClick={() => setTheme('dark')}>Switch Theme</button>;
}
本文档详细记录了在Kubernetes环境中部署Elasticsearch并配置IK中文分词器的完整过程,包括镜像构建、权限处理、配置验证等关键步骤。
| 组件 | 版本 | 说明 |
|---|---|---|
| bpmn-js | ^18.1.2 | 核心渲染库 |
| camunda-bpmn-moddle | latest | Camunda 扩展支持 |
| modeler | latest | 模型编辑器 |
需要将自建的 JDK 21 安装包打包成 Docker 镜像,用于容器化部署。
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
这是个人技术学习记录的博客,专注于分享:
| 框架 | 实现 | 特点 |
|---|---|---|
| SLF4J | API 层 | 统一日志门面接口 |
| Logback | 实现 | Spring Boot 默认集成 |
| Log4j2 | 实现 | 高性能,插件化架构 |
| java.util.logging | JDK 自带 | 原生支持,功能简单 |
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
<version>3.2.6</version> <!-- 与项目版本一致 -->
</dependency>
记录学习与实践,分享技术与心得
在 Spring Boot 项目中集成 Spring Security,实现用户认证与权限控制。
<article class="blog-card">
<h2><a href="/blog/posts/java/logging-framework.html">Java 日志框架实践</a></h2>
<p>对比 Logback、Log4j2 等日志框架,搭建企业级日志系统。</p>
<div class="meta">
<span class="tag">Java</span>
<span class="tag">Logging</span>
<span class="tag">Log4j2</span>
<time datetime="2026-03-21">3 min read</time>
</div>
</article>
<article class="blog-card">
<h2><a href="/blog/posts/java/springboot-build.html">SpringBoot 项目构建指南</a></h2>
<p>如何选择合适版本,配置 pom.xml,快速构建 Spring Boot 项目。</p>
<div class="meta">
<span class="tag">Java</span>
<span class="tag">SpringBoot</span>
<time datetime="2026-03-21">1 min read</time>
</div>
</article>
<article class="blog-card">
<h2><a href="/blog/posts/docker/installation.html">Docker 安装与使用记录</a></h2>
<p>CentOS/Ubuntu 环境下的 Docker 安装步骤及使用记录。</p>
<div class="meta">
<span class="tag">Docker</span>
<span class="tag">DevOps</span>
<time datetime="2026-03-21">4 min read</time>
</div>
</article>
<article class="blog-card">
<h2><a href="/blog/posts/docker/dockerfile-jdk.html">Dockerfile JDK 镜像制作</a></h2>
<p>自定义 JDK 21 镜像,基于 tar.gz 包打包 Docker 镜像。</p>
<div class="meta">
<span class="tag">Docker</span>
<span class="tag">JDK</span>
<time datetime="2026-03-21">1 min read</time>
</div>
</article>
<article class="blog-card">
<h2><a href="/blog/posts/nginx/plugins.html">Nginx RTMP 直播流插件</a></h2>
<p>使用 nginx-rtmp-module 搭建直播流服务。</p>
<div class="meta">
<span class="tag">Nginx</span>
<span class="tag">RTMP</span>
<span class="tag">Streaming</span>
<time datetime="2026-03-21">1 min read</time>
</div>
</article>
<article class="blog-card">
<h2><a href="/blog/posts/k8s/basics.html">Kubernetes 基础学习</a></h2>
<p>K8s 入门:Pod、Service、Deployment 基本概念与实践。</p>
<div class="meta">
<span class="tag">K8s</span>
<span class="tag">容器化</span>
<time datetime="2026-03-21">1 min read</time>
</div>
</article>
<article class="blog-card">
<h2><a href="/blog/posts/bpmn/js-bpmn.html">bpmn.js 流程引擎使用记录</a></h2>
<p>基于 bpmn-js 18.x 版本的前端流程引擎集成与使用记录。</p>
<div class="meta">
<span class="tag">BPMN</span>
<span class="tag">JS</span>
<span class="tag">Flowable</span>
<time datetime="2026-03-21">1 min read</time>
</div>
</article>