-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
292 lines (259 loc) · 40.6 KB
/
index.html
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
<!DOCTYPE html><html lang="en" data-theme="light"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0,viewport-fit=cover"><title>ChenWeiHui's Blog</title><meta name="author" content="cwh"><meta name="copyright" content="cwh"><meta name="format-detection" content="telephone=no"><meta name="theme-color" content="#ffffff"><meta property="og:type" content="website">
<meta property="og:title" content="ChenWeiHui's Blog">
<meta property="og:url" content="https://github.com/CWH6/bk/index.html">
<meta property="og:site_name" content="ChenWeiHui's Blog">
<meta property="og:locale" content="en_US">
<meta property="og:image" content="https://cwh6-bucket.oss-cn-shanghai.aliyuncs.com/bk/xhs.png">
<meta property="article:author" content="cwh">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://cwh6-bucket.oss-cn-shanghai.aliyuncs.com/bk/xhs.png"><link rel="shortcut icon" href="/bk/img/jljy3.png"><link rel="canonical" href="https://github.com/CWH6/bk/index.html"><link rel="preconnect" href="//cdn.jsdelivr.net"/><link rel="preconnect" href="//busuanzi.ibruce.info"/><link rel="stylesheet" href="/bk/css/index.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free/css/all.min.css" media="print" onload="this.media='all'"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fancyapps/ui/dist/fancybox/fancybox.min.css" media="print" onload="this.media='all'"><script>const GLOBAL_CONFIG = {
root: '/bk/',
algolia: undefined,
localSearch: undefined,
translate: undefined,
noticeOutdate: undefined,
highlight: {"plugin":"highlighjs","highlightCopy":true,"highlightLang":true,"highlightHeightLimit":false},
copy: {
success: 'Copy successfully',
error: 'Copy error',
noSupport: 'The browser does not support'
},
relativeDate: {
homepage: false,
post: false
},
runtime: '',
dateSuffix: {
just: 'Just',
min: 'minutes ago',
hour: 'hours ago',
day: 'days ago',
month: 'months ago'
},
copyright: undefined,
lightbox: 'fancybox',
Snackbar: undefined,
source: {
justifiedGallery: {
js: 'https://cdn.jsdelivr.net/npm/flickr-justified-gallery/dist/fjGallery.min.js',
css: 'https://cdn.jsdelivr.net/npm/flickr-justified-gallery/dist/fjGallery.min.css'
}
},
isPhotoFigcaption: false,
islazyload: false,
isAnchor: false,
percent: {
toc: true,
rightside: false,
}
}</script><script id="config-diff">var GLOBAL_CONFIG_SITE = {
title: 'ChenWeiHui\'s Blog',
isPost: false,
isHome: true,
isHighlightShrink: false,
isToc: false,
postUpdate: '2025-02-05 21:56:01'
}</script><noscript><style type="text/css">
#nav {
opacity: 1
}
.justified-gallery img {
opacity: 1
}
#recent-posts time,
#post-meta time {
display: inline !important
}
</style></noscript><script>(win=>{
win.saveToLocal = {
set: function setWithExpiry(key, value, ttl) {
if (ttl === 0) return
const now = new Date()
const expiryDay = ttl * 86400000
const item = {
value: value,
expiry: now.getTime() + expiryDay,
}
localStorage.setItem(key, JSON.stringify(item))
},
get: function getWithExpiry(key) {
const itemStr = localStorage.getItem(key)
if (!itemStr) {
return undefined
}
const item = JSON.parse(itemStr)
const now = new Date()
if (now.getTime() > item.expiry) {
localStorage.removeItem(key)
return undefined
}
return item.value
}
}
win.getScript = url => new Promise((resolve, reject) => {
const script = document.createElement('script')
script.src = url
script.async = true
script.onerror = reject
script.onload = script.onreadystatechange = function() {
const loadState = this.readyState
if (loadState && loadState !== 'loaded' && loadState !== 'complete') return
script.onload = script.onreadystatechange = null
resolve()
}
document.head.appendChild(script)
})
win.getCSS = (url,id = false) => new Promise((resolve, reject) => {
const link = document.createElement('link')
link.rel = 'stylesheet'
link.href = url
if (id) link.id = id
link.onerror = reject
link.onload = link.onreadystatechange = function() {
const loadState = this.readyState
if (loadState && loadState !== 'loaded' && loadState !== 'complete') return
link.onload = link.onreadystatechange = null
resolve()
}
document.head.appendChild(link)
})
win.activateDarkMode = function () {
document.documentElement.setAttribute('data-theme', 'dark')
if (document.querySelector('meta[name="theme-color"]') !== null) {
document.querySelector('meta[name="theme-color"]').setAttribute('content', '#0d0d0d')
}
}
win.activateLightMode = function () {
document.documentElement.setAttribute('data-theme', 'light')
if (document.querySelector('meta[name="theme-color"]') !== null) {
document.querySelector('meta[name="theme-color"]').setAttribute('content', '#ffffff')
}
}
const t = saveToLocal.get('theme')
if (t === 'dark') activateDarkMode()
else if (t === 'light') activateLightMode()
const asideStatus = saveToLocal.get('aside-status')
if (asideStatus !== undefined) {
if (asideStatus === 'hide') {
document.documentElement.classList.add('hide-aside')
} else {
document.documentElement.classList.remove('hide-aside')
}
}
const detectApple = () => {
if(/iPad|iPhone|iPod|Macintosh/.test(navigator.userAgent)){
document.documentElement.classList.add('apple')
}
}
detectApple()
})(window)</script><meta name="generator" content="Hexo 5.4.2"></head><body><div id="web_bg"></div><div id="sidebar"><div id="menu-mask"></div><div id="sidebar-menus"><div class="avatar-img is-center"><img src="https://cwh6-bucket.oss-cn-shanghai.aliyuncs.com/bk/xhs.png" onerror="onerror=null;src='/img/friend_404.gif'" alt="avatar"/></div><div class="sidebar-site-data site-data is-center"><a href="/bk/archives/"><div class="headline">Articles</div><div class="length-num">113</div></a><a href="/bk/tags/"><div class="headline">Tags</div><div class="length-num">38</div></a><a href="/bk/categories/"><div class="headline">Categories</div><div class="length-num">12</div></a></div><hr/><div class="menus_items"><div class="menus_item"><a class="site-page" href="/bk/"><i class="fa-fw fas fa-home"></i><span> 主页</span></a></div><div class="menus_item"><a class="site-page" href="/bk/archives/"><i class="fa-fw fas fa-archive"></i><span> 归档</span></a></div><div class="menus_item"><a class="site-page" href="/bk/tags/"><i class="fa-fw fas fa-tags"></i><span> 标签</span></a></div><div class="menus_item"><a class="site-page" href="/bk/categories/"><i class="fa-fw fas fa-folder-open"></i><span> 分类</span></a></div><div class="menus_item"><a class="site-page group" href="javascript:void(0);"><i class="fa-fw fas fa-list"></i><span> List</span><i class="fas fa-chevron-down"></i></a><ul class="menus_item_child"><li><a class="site-page child" href="/bk/music/"><i class="fa-fw fas fa-music"></i><span> 音乐</span></a></li><li><a class="site-page child" href="/bk/movies/"><i class="fa-fw fas fa-video"></i><span> 电影</span></a></li></ul></div><div class="menus_item"><a class="site-page" href="/bk/link/"><i class="fa-fw fas fa-link"></i><span> 友链</span></a></div><div class="menus_item"><a class="site-page" href="/bk/about/"><i class="fa-fw fas fa-heart"></i><span> 关于</span></a></div></div></div></div><div class="page" id="body-wrap"><header class="full_page" id="page-header" style="background-image: url('/bk/img/alone_blue_sky.jpg')"><nav id="nav"><span id="blog-info"><a href="/bk/" title="ChenWeiHui's Blog"><span class="site-name">ChenWeiHui's Blog</span></a></span><div id="menus"><div class="menus_items"><div class="menus_item"><a class="site-page" href="/bk/"><i class="fa-fw fas fa-home"></i><span> 主页</span></a></div><div class="menus_item"><a class="site-page" href="/bk/archives/"><i class="fa-fw fas fa-archive"></i><span> 归档</span></a></div><div class="menus_item"><a class="site-page" href="/bk/tags/"><i class="fa-fw fas fa-tags"></i><span> 标签</span></a></div><div class="menus_item"><a class="site-page" href="/bk/categories/"><i class="fa-fw fas fa-folder-open"></i><span> 分类</span></a></div><div class="menus_item"><a class="site-page group" href="javascript:void(0);"><i class="fa-fw fas fa-list"></i><span> List</span><i class="fas fa-chevron-down"></i></a><ul class="menus_item_child"><li><a class="site-page child" href="/bk/music/"><i class="fa-fw fas fa-music"></i><span> 音乐</span></a></li><li><a class="site-page child" href="/bk/movies/"><i class="fa-fw fas fa-video"></i><span> 电影</span></a></li></ul></div><div class="menus_item"><a class="site-page" href="/bk/link/"><i class="fa-fw fas fa-link"></i><span> 友链</span></a></div><div class="menus_item"><a class="site-page" href="/bk/about/"><i class="fa-fw fas fa-heart"></i><span> 关于</span></a></div></div><div id="toggle-menu"><a class="site-page" href="javascript:void(0);"><i class="fas fa-bars fa-fw"></i></a></div></div></nav><div id="site-info"><h1 id="site-title">ChenWeiHui's Blog</h1><div id="site-subtitle"><span id="subtitle"></span></div><div id="site_social_icons"><a class="social-icon" href="mailto:[email protected]" target="_blank" title="Email"><i class="fas fa-envelope" style="color: #4a7dbe;"></i></a><a class="social-icon" href="https://cwh6-bucket.oss-cn-shanghai.aliyuncs.com/bk/wx_self.jpg" target="_blank" title="wx"><i class="fas fa-qq" style="color: #4a7dbe;"></i></a></div></div><div id="scroll-down"><i class="fas fa-angle-down scroll-down-effects"></i></div></header><main class="layout" id="content-inner"><div class="recent-posts" id="recent-posts"><div class="recent-post-item"><div class="recent-post-info no-cover"><a class="article-title" href="/bk/2025/01/18/%E3%80%90gitlab%E3%80%91%E5%9F%BA%E4%BA%8Egilab-runner%E7%9A%84cicd%E5%AE%9E%E7%8E%B0/" title="【gitlab】基于gilab runner的cicd实现">【gitlab】基于gilab runner的cicd实现</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">Created</span><time class="post-meta-date-created" datetime="2025-01-18T09:57:08.000Z" title="Created 2025-01-18 17:57:08">2025-01-18</time><span class="article-meta-separator">|</span><i class="fas fa-history"></i><span class="article-meta-label">Updated</span><time class="post-meta-date-updated" datetime="2025-01-18T09:57:08.523Z" title="Updated 2025-01-18 17:57:08">2025-01-18</time></span></div><div class="content"></div></div></div><div class="recent-post-item"><div class="recent-post-info no-cover"><a class="article-title" href="/bk/2025/01/18/%E3%80%90WordPress%E3%80%91%E5%9F%BA%E4%BA%8EWordPress%E5%BB%BA%E7%AB%99/" title="【WordPress】基于WordPress建站">【WordPress】基于WordPress建站</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">Created</span><time class="post-meta-date-created" datetime="2025-01-18T09:51:34.000Z" title="Created 2025-01-18 17:51:34">2025-01-18</time><span class="article-meta-separator">|</span><i class="fas fa-history"></i><span class="article-meta-label">Updated</span><time class="post-meta-date-updated" datetime="2025-01-18T09:51:34.655Z" title="Updated 2025-01-18 17:51:34">2025-01-18</time></span></div><div class="content"></div></div></div><div class="recent-post-item"><div class="recent-post-info no-cover"><a class="article-title" href="/bk/2025/01/18/%E3%80%90SSCMS%E3%80%91%E5%9F%BA%E4%BA%8ESSCMS%E6%90%AD%E5%BB%BA%E9%9D%99%E6%80%81%E7%AB%99%E7%82%B9/" title="【SSCMS】基于SSCMS搭建静态站点">【SSCMS】基于SSCMS搭建静态站点</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">Created</span><time class="post-meta-date-created" datetime="2025-01-18T09:49:09.000Z" title="Created 2025-01-18 17:49:09">2025-01-18</time><span class="article-meta-separator">|</span><i class="fas fa-history"></i><span class="article-meta-label">Updated</span><time class="post-meta-date-updated" datetime="2025-01-18T10:29:50.695Z" title="Updated 2025-01-18 18:29:50">2025-01-18</time></span></div><div class="content">概述SSCMS(Smart Software Configuration Management System)是一款智能化的软件配置管理系统,旨在帮助团队高效管理软件版本、配置文件和开发过程,提升开发协作效率,确保系统稳定性与可追溯性。
部署这里采用docker部署, 注意开放主机的8723端口
12345678docker run -d \ --name my-sscms \ -p 8723:80 \ --restart=always \ -v /home/sscms_app_wwwroot:/app/wwwroot \ -e SSCMS_SECURITY_KEY=e2a3d303-ac9b-41ff-9154-930710af0845 \ -e SSCMS_DATABASE_TYPE=SQLite \ sscms/core:latest
安装 SSCMS 后,会显示进入后台的链接。点击该链接即可进入 SSCMS 管理员登录界面,输入安装时设置的用户名和密码即可登录
安装参考:https://juejin.cn/post/743360537 ...</div></div></div><div class="recent-post-item"><div class="recent-post-info no-cover"><a class="article-title" href="/bk/2025/01/02/%E3%80%90Logback%E3%80%91Logback%E9%85%8D%E7%BD%AE%E6%97%A5%E5%BF%97/" title="【Logback】Logback配置日志">【Logback】Logback配置日志</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">Created</span><time class="post-meta-date-created" datetime="2025-01-02T12:20:10.000Z" title="Created 2025-01-02 20:20:10">2025-01-02</time><span class="article-meta-separator">|</span><i class="fas fa-history"></i><span class="article-meta-label">Updated</span><time class="post-meta-date-updated" datetime="2025-01-02T14:45:21.160Z" title="Updated 2025-01-02 22:45:21">2025-01-02</time></span></div><div class="content">概述本文基于logback实现web项目(采用Struts2框架)的日志管理,设置彩色日志,根据日结级别还有日期划分日志文件
一般是springboot项目会集成,因为springboot中有已经定义好的色彩转换类,此处没有则自定义。
依赖jarweb项目, 需要在 web/INF-WEB/lib 下添加以下依赖包
123logback-classic-1.2.3.jarlogback-core-1.2.3.jarslf4j-api-1.7.32.jar
maven如果是maven
123456789101112131415<dependencies> <!-- Logback Classic --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> ...</div></div></div><div class="recent-post-item"><div class="recent-post-info no-cover"><a class="article-title" href="/bk/2024/12/21/%E3%80%90%E5%90%8E%E7%AB%AF%E3%80%91Dubbo/" title="【后端】Dubbo">【后端】Dubbo</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">Created</span><time class="post-meta-date-created" datetime="2024-12-21T09:56:36.000Z" title="Created 2024-12-21 17:56:36">2024-12-21</time><span class="article-meta-separator">|</span><i class="fas fa-history"></i><span class="article-meta-label">Updated</span><time class="post-meta-date-updated" datetime="2024-12-21T09:56:36.800Z" title="Updated 2024-12-21 17:56:36">2024-12-21</time></span></div><div class="content"></div></div></div><div class="recent-post-item"><div class="recent-post-info no-cover"><a class="article-title" href="/bk/2024/12/21/%E3%80%90%E5%90%8E%E7%AB%AF%E3%80%91Struts2/" title="【后端】Struts2 框架">【后端】Struts2 框架</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">Created</span><time class="post-meta-date-created" datetime="2024-12-21T09:56:18.000Z" title="Created 2024-12-21 17:56:18">2024-12-21</time><span class="article-meta-separator">|</span><i class="fas fa-history"></i><span class="article-meta-label">Updated</span><time class="post-meta-date-updated" datetime="2024-12-23T13:36:12.137Z" title="Updated 2024-12-23 21:36:12">2024-12-23</time></span></div><div class="content">概述Struts2框架用于开发基于MVC的Web应用。Struts框架最初由 Craig McClanahan 创建,并在2000年5月捐赠给Apache基金会,Struts1.0在2001年6月发布。Struts2是opensymphony的webwork框架和Struts1的结合
特性Struts2提供了对基于POJO的操作的支持,验证支持AJAX支持,对各种框架的集成支持,如Hibernate、Spring、Tiles等,对各种结果类型的支持,如Freemarker、Velocity、JSP等,各种标签支持,主题和模板支持。
依赖包
官网: http://struts.apache.org/
获取依赖jar
点击Download 进入依赖下载页,然后点击 struts-7.0.0-lib.zip
目录结构
struts2的目录结构与servlet/JSP相同。在项目里面,struts.xml文件必须位于 WEB-INF\classes文件夹中。
执行流程
1、用户发送操作请求
2、Container 映射 web.xml 文件中的请求并获取控制器的类 ...</div></div></div><div class="recent-post-item"><div class="recent-post-info no-cover"><a class="article-title" href="/bk/2024/12/21/%E3%80%90%E9%87%8D%E6%9E%84%E3%80%91%E8%80%81%E7%B3%BB%E7%BB%9F%E9%87%8D%E6%9E%84/" title="【重构】老系统重构指南">【重构】老系统重构指南</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">Created</span><time class="post-meta-date-created" datetime="2024-12-21T05:31:50.000Z" title="Created 2024-12-21 13:31:50">2024-12-21</time><span class="article-meta-separator">|</span><i class="fas fa-history"></i><span class="article-meta-label">Updated</span><time class="post-meta-date-updated" datetime="2024-12-21T09:32:05.318Z" title="Updated 2024-12-21 17:32:05">2024-12-21</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/bk/categories/%E9%87%8D%E6%9E%84/">重构</a></span></div><div class="content">概述系统重构是结合当前业务现状,对系统进行重新设计的过程。这并不是完全从零开始,而是从现有基础向更高水平迈进的过程(从1到10)。
老系统能够支撑公司业务多年,必然有其可取之处,重构时千万不要全盘否定,而是要深入挖掘业务价值,做好用户调研,保留关键的业务场景和流程,取其精华,去其糟粕。
重构原因性能老化:系统已经“跑不动”了,无法满足当前需求,亟需引入年轻化的技术和架构。
模块耦合过深:各板块之间耦合性过强,关联复杂,导致维护和扩展困难。
功能落后:许多功能已无法适应业务的飞速发展,存在明显的瓶颈。
系统臃肿:长期以来的各种补丁堆叠,让系统变得越来越复杂和难以管理。
流程冗长:业务流程繁杂且冗长,稍作调整就可能引发连锁反应。
优化困难:系统功能优化举步维艰,任何改动都显得不合理或不自在。
操作结合各垂直事业部业务场景,梳理业务流程现状先梳理业务流程现状,再结合现状提出可优化的流程点与业务协商,双方意见没冲突,那就可以往下推进。
梳理时,建议重点关注以下几点:
主要流程:先把当前主要大流程搞清楚,一般比较容易整理
正向流程:一件事情的正常流转
逆向流程:事情是同一件事,但往往是一些非常规 ...</div></div></div><div class="recent-post-item"><div class="recent-post-info no-cover"><a class="article-title" href="/bk/2024/12/21/%E3%80%90%E5%A4%A7%E6%95%B0%E6%8D%AE%E3%80%91%E6%95%B0%E6%8D%AE%E4%BB%93%E5%BA%93%E3%80%81%E6%95%B0%E6%8D%AE%E4%B8%AD%E5%8F%B0%E4%B8%8E%E6%95%B0%E6%8D%AE%E6%B9%96/" title="【大数据】数据仓库、数据中台与数据湖">【大数据】数据仓库、数据中台与数据湖</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">Created</span><time class="post-meta-date-created" datetime="2024-12-21T03:28:03.000Z" title="Created 2024-12-21 11:28:03">2024-12-21</time><span class="article-meta-separator">|</span><i class="fas fa-history"></i><span class="article-meta-label">Updated</span><time class="post-meta-date-updated" datetime="2024-12-21T05:08:42.598Z" title="Updated 2024-12-21 13:08:42">2024-12-21</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/bk/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE/">大数据</a></span></div><div class="content">一、引言 随着大数据技术的不断发展,数据已经成为企业最重要的资产之一。为了更好地管理和利用这些数据,企业需要选择合适的技术和工具。数据仓库、数据中台和数据湖作为三种不同的数据处理和管理技术,各自具有独特的优势和应用场景。了解它们之间的区别与联系,有助于企业根据实际需求做出明智的选择。
二、数据仓库(Data Warehouse)
稳定、可靠的数据存储与查询
数据仓库的定义与特点数据仓库是一个面向主题的、集成的、相对稳定的、随时间变化的数据集合,主要用于支持企业或组织的决策分析过程。
目标:为业务分析提供高性能的结构化数据查询,通常是面向分析型处理(OLAP)。
它具有以下特点:
1)集成性
数据仓库能够整合来自不同业务系统的数据,消除数据冗余和不一致性,提供一个统一的数据视图。
2)排序性
数据仓库中的数据按照时间顺序进行存储和管理,便于用户进行历史数据的分析和比较。
3)稳定性
数据仓库注重数据的稳定性和质量,对数据进行清洗、转换和加载,确保数据的准确性和可靠性。
4)面相主题
数据仓库按照业务需求组织数据,将数据划分为不同的主题域, ...</div></div></div><div class="recent-post-item"><div class="recent-post-info no-cover"><a class="article-title" href="/bk/2024/12/18/%E3%80%90%E6%9E%B6%E6%9E%84%E3%80%91DDD%E9%A2%86%E5%9F%9F%E9%A9%B1%E5%8A%A8%E8%AE%BE%E8%AE%A1%E6%A6%82%E5%BF%B5/" title="【架构】DDD领域驱动设计概念">【架构】DDD领域驱动设计概念</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">Created</span><time class="post-meta-date-created" datetime="2024-12-18T13:28:45.000Z" title="Created 2024-12-18 21:28:45">2024-12-18</time><span class="article-meta-separator">|</span><i class="fas fa-history"></i><span class="article-meta-label">Updated</span><time class="post-meta-date-updated" datetime="2024-12-19T15:43:13.337Z" title="Updated 2024-12-19 23:43:13">2024-12-19</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/bk/categories/%E6%9E%B6%E6%9E%84/">架构</a></span></div><div class="content">概念DDD,全程是Domain-Driven Design,翻译过来就是领域驱动设计。
DDD是一个软件设计理念,通过深入理解业务领域,来指导软件设计、和开发。
DDD 强调与业务专家紧密合作,将复杂的业务问题,转化为可管理的软件模型。
作用1、满足业务需求
通过与业务专家密切合作,DDD 确保软件模型准确反映业务需求,减少了软件与业务之间的脱节。
2、增强设计
将复杂业务逻辑,分解成领域模型、和限界上下文,使得系统设计更加模块化、和灵活。
3、改善团队协作
使用通用语言,使得业务专家、和开发团队,能够有效沟通、和协作,减少了误解、和沟通成本。
4、支持业务变化
DDD 强调领域模型的演化、和适应,允许系统随着业务需求的变化,而不断调整和优化。
DDD四层架构总共有四层:
1、用户界面层(UI/Presentation Layer)
2、应用层(Application Layer)
3、领域层(Domain Layer)
3、基础设施层(Infrastructure Layer)
这四层架构提供了一个清晰的层次结构,确保业务逻辑和技术细节之间的分离。
1、用户界面层「用户界面层」的主要 ...</div></div></div><div class="recent-post-item"><div class="recent-post-info no-cover"><a class="article-title" href="/bk/2024/12/15/%E3%80%90%E5%BE%AE%E6%9C%8D%E5%8A%A1%E3%80%91sentinel-gateway-%E5%AE%9E%E7%8E%B0%E9%99%90%E6%B5%81/" title="【微服务】sentinel+gateway 实现限流">【微服务】sentinel+gateway 实现限流</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">Created</span><time class="post-meta-date-created" datetime="2024-12-15T14:35:47.000Z" title="Created 2024-12-15 22:35:47">2024-12-15</time><span class="article-meta-separator">|</span><i class="fas fa-history"></i><span class="article-meta-label">Updated</span><time class="post-meta-date-updated" datetime="2024-12-15T15:01:32.401Z" title="Updated 2024-12-15 23:01:32">2024-12-15</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/bk/categories/%E5%BE%AE%E6%9C%8D%E5%8A%A1/">微服务</a></span></div><div class="content">概述Sentinel 是阿里巴巴开源的流量防卫组件,支持对微服务流量进行实时监控和保护,特别适用于 Spring Cloud Gateway、Zuul 等主流 API 网关的限流、熔断等场景。
功能Sentinel 提供流量控制、熔断降级、系统自适应保护、热点参数限流等核心功能,帮助开发者应对高并发流量及微服务系统的稳定性挑战。
优点Sentinel 具备轻量化、易集成、实时性强、规则灵活配置等优点,支持多语言、多框架,并提供可视化的控制台,方便动态管理限流规则。
限流规则的维度Sentinel 支持多种限流规则维度,灵活应对不同的流量控制需求,包括网关维度和 API 分组维度。
需求如下:假设有两个服务的多个 URL:
A服务:
http://ip:port/a/xxx - 要求:60秒内最多访问60次
http://ip:port/a/yyy - 要求:60秒内最多访问60次
http://ip:port/a/zzz - 要求:60秒内最多访问30次
B服务:
http://ip:port/b/eee - 要求:60秒内最多访问30次
http://ip:port/b/fff ...</div></div></div><nav id="pagination"><div class="pagination"><span class="page-number current">1</span><a class="page-number" href="/bk/page/2/#content-inner">2</a><span class="space">…</span><a class="page-number" href="/bk/page/12/#content-inner">12</a><a class="extend next" rel="next" href="/bk/page/2/#content-inner"><i class="fas fa-chevron-right fa-fw"></i></a></div></nav></div><div class="aside-content" id="aside-content"><div class="card-widget card-info"><div class="is-center"><div class="avatar-img"><img src="https://cwh6-bucket.oss-cn-shanghai.aliyuncs.com/bk/xhs.png" onerror="this.onerror=null;this.src='/bk/img/friend_404.gif'" alt="avatar"/></div><div class="author-info__name">cwh</div><div class="author-info__description">简单写写,记录代码</div></div><div class="card-info-data site-data is-center"><a href="/bk/archives/"><div class="headline">Articles</div><div class="length-num">113</div></a><a href="/bk/tags/"><div class="headline">Tags</div><div class="length-num">38</div></a><a href="/bk/categories/"><div class="headline">Categories</div><div class="length-num">12</div></a></div><a id="card-info-btn" href="https://github.com/cwh6"><i class="fab fa-github"></i><span>Follow Me</span></a><div class="card-info-social-icons is-center"><a class="social-icon" href="mailto:[email protected]" target="_blank" title="Email"><i class="fas fa-envelope" style="color: #4a7dbe;"></i></a><a class="social-icon" href="https://cwh6-bucket.oss-cn-shanghai.aliyuncs.com/bk/wx_self.jpg" target="_blank" title="wx"><i class="fas fa-qq" style="color: #4a7dbe;"></i></a></div></div><div class="card-widget card-announcement"><div class="item-headline"><i class="fas fa-bullhorn fa-shake"></i><span>Announcement</span></div><div class="announcement_content">ありがとう、私の暗い世界の小さな太陽、ありがとう、ずっと温めてくれた</div></div><div class="sticky_layout"><div class="card-widget card-recent-post"><div class="item-headline"><i class="fas fa-history"></i><span>Recent Post</span></div><div class="aside-list"><div class="aside-list-item no-cover"><div class="content"><a class="title" href="/bk/2025/01/18/%E3%80%90gitlab%E3%80%91%E5%9F%BA%E4%BA%8Egilab-runner%E7%9A%84cicd%E5%AE%9E%E7%8E%B0/" title="【gitlab】基于gilab runner的cicd实现">【gitlab】基于gilab runner的cicd实现</a><time datetime="2025-01-18T09:57:08.000Z" title="Created 2025-01-18 17:57:08">2025-01-18</time></div></div><div class="aside-list-item no-cover"><div class="content"><a class="title" href="/bk/2025/01/18/%E3%80%90WordPress%E3%80%91%E5%9F%BA%E4%BA%8EWordPress%E5%BB%BA%E7%AB%99/" title="【WordPress】基于WordPress建站">【WordPress】基于WordPress建站</a><time datetime="2025-01-18T09:51:34.000Z" title="Created 2025-01-18 17:51:34">2025-01-18</time></div></div><div class="aside-list-item no-cover"><div class="content"><a class="title" href="/bk/2025/01/18/%E3%80%90SSCMS%E3%80%91%E5%9F%BA%E4%BA%8ESSCMS%E6%90%AD%E5%BB%BA%E9%9D%99%E6%80%81%E7%AB%99%E7%82%B9/" title="【SSCMS】基于SSCMS搭建静态站点">【SSCMS】基于SSCMS搭建静态站点</a><time datetime="2025-01-18T09:49:09.000Z" title="Created 2025-01-18 17:49:09">2025-01-18</time></div></div><div class="aside-list-item no-cover"><div class="content"><a class="title" href="/bk/2025/01/02/%E3%80%90Logback%E3%80%91Logback%E9%85%8D%E7%BD%AE%E6%97%A5%E5%BF%97/" title="【Logback】Logback配置日志">【Logback】Logback配置日志</a><time datetime="2025-01-02T12:20:10.000Z" title="Created 2025-01-02 20:20:10">2025-01-02</time></div></div><div class="aside-list-item no-cover"><div class="content"><a class="title" href="/bk/2024/12/21/%E3%80%90%E5%90%8E%E7%AB%AF%E3%80%91Dubbo/" title="【后端】Dubbo">【后端】Dubbo</a><time datetime="2024-12-21T09:56:36.000Z" title="Created 2024-12-21 17:56:36">2024-12-21</time></div></div></div></div><div class="card-widget card-categories"><div class="item-headline">
<i class="fas fa-folder-open"></i>
<span>Categories</span>
<a class="card-more-btn" href="/bk/categories/" title="More">
<i class="fas fa-angle-right"></i></a>
</div>
<ul class="card-category-list" id="aside-cat-list">
<li class="card-category-list-item "><a class="card-category-list-link" href="/bk/categories/%E5%85%B6%E4%BB%96/"><span class="card-category-list-name">其他</span><span class="card-category-list-count">2</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/bk/categories/%E5%89%8D%E7%AB%AF/"><span class="card-category-list-name">前端</span><span class="card-category-list-count">6</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/bk/categories/%E5%90%8E%E7%AB%AF/"><span class="card-category-list-name">后端</span><span class="card-category-list-count">27</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/bk/categories/%E5%9F%BA%E6%9C%AC%E5%8A%9F/"><span class="card-category-list-name">基本功</span><span class="card-category-list-count">1</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/bk/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE/"><span class="card-category-list-name">大数据</span><span class="card-category-list-count">1</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/bk/categories/%E5%BE%88%E9%85%B7%E7%9A%84%E4%BA%8B/"><span class="card-category-list-name">很酷的事</span><span class="card-category-list-count">2</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/bk/categories/%E5%BE%AE%E6%9C%8D%E5%8A%A1/"><span class="card-category-list-name">微服务</span><span class="card-category-list-count">2</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/bk/categories/%E6%9E%B6%E6%9E%84/"><span class="card-category-list-name">架构</span><span class="card-category-list-count">2</span></a></li>
</ul></div><div class="card-widget card-tags"><div class="item-headline"><i class="fas fa-tags"></i><span>Tags</span></div><div class="card-tag-cloud"><a href="/bk/tags/springboot/" style="font-size: 1.1em; color: #999">springboot</a> <a href="/bk/tags/springCloud/" style="font-size: 1.3em; color: #99a1ac">springCloud</a> <a href="/bk/tags/%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F/" style="font-size: 1.1em; color: #999">内网穿透</a> <a href="/bk/tags/Mybatis/" style="font-size: 1.1em; color: #999">Mybatis</a> <a href="/bk/tags/%E5%A4%A7%E6%95%B0%E6%8D%AE/" style="font-size: 1.1em; color: #999">大数据</a> <a href="/bk/tags/MyBatis/" style="font-size: 1.1em; color: #999">MyBatis</a> <a href="/bk/tags/Scheduling/" style="font-size: 1.1em; color: #999">Scheduling</a> <a href="/bk/tags/swagger/" style="font-size: 1.1em; color: #999">swagger</a> <a href="/bk/tags/%E5%90%8E%E7%AB%AF/" style="font-size: 1.1em; color: #999">后端</a> <a href="/bk/tags/springSecurity/" style="font-size: 1.1em; color: #999">springSecurity</a> <a href="/bk/tags/%E5%AE%9E%E6%88%98/" style="font-size: 1.3em; color: #99a1ac">实战</a> <a href="/bk/tags/springCache/" style="font-size: 1.1em; color: #999">springCache</a> <a href="/bk/tags/k3s/" style="font-size: 1.1em; color: #999">k3s</a> <a href="/bk/tags/nginx/" style="font-size: 1.1em; color: #999">nginx</a> <a href="/bk/tags/ES6/" style="font-size: 1.1em; color: #999">ES6</a> <a href="/bk/tags/Redis/" style="font-size: 1.3em; color: #99a1ac">Redis</a> <a href="/bk/tags/%E6%9E%B6%E6%9E%84/" style="font-size: 1.5em; color: #99a9bf">架构</a> <a href="/bk/tags/javaWeb/" style="font-size: 1.1em; color: #999">javaWeb</a> <a href="/bk/tags/Annotation/" style="font-size: 1.3em; color: #99a1ac">Annotation</a> <a href="/bk/tags/%E6%95%B0%E6%8D%AE%E8%84%B1%E6%95%8F/" style="font-size: 1.1em; color: #999">数据脱敏</a> <a href="/bk/tags/ai/" style="font-size: 1.1em; color: #999">ai</a> <a href="/bk/tags/ssl/" style="font-size: 1.1em; color: #999">ssl</a> <a href="/bk/tags/Vue/" style="font-size: 1.3em; color: #99a1ac">Vue</a> <a href="/bk/tags/RSA/" style="font-size: 1.1em; color: #999">RSA</a> <a href="/bk/tags/FreeMarker/" style="font-size: 1.1em; color: #999">FreeMarker</a> <a href="/bk/tags/Seata/" style="font-size: 1.1em; color: #999">Seata</a> <a href="/bk/tags/smart-doc/" style="font-size: 1.1em; color: #999">smart-doc</a> <a href="/bk/tags/Tomcat/" style="font-size: 1.1em; color: #999">Tomcat</a> <a href="/bk/tags/datax/" style="font-size: 1.1em; color: #999">datax</a> <a href="/bk/tags/redis/" style="font-size: 1.3em; color: #99a1ac">redis</a> <a href="/bk/tags/MQ/" style="font-size: 1.5em; color: #99a9bf">MQ</a> <a href="/bk/tags/MySQL/" style="font-size: 1.1em; color: #999">MySQL</a> <a href="/bk/tags/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/" style="font-size: 1.1em; color: #999">设计模式</a> <a href="/bk/tags/%E9%87%8D%E6%9E%84/" style="font-size: 1.1em; color: #999">重构</a> <a href="/bk/tags/%E5%BE%AE%E6%9C%8D%E5%8A%A1/" style="font-size: 1.3em; color: #99a1ac">微服务</a> <a href="/bk/tags/%E7%80%9A%E9%AB%98/" style="font-size: 1.3em; color: #99a1ac">瀚高</a> <a href="/bk/tags/docker/" style="font-size: 1.1em; color: #999">docker</a> <a href="/bk/tags/aop/" style="font-size: 1.1em; color: #999">aop</a></div></div><div class="card-widget card-archives"><div class="item-headline"><i class="fas fa-archive"></i><span>Archives</span><a class="card-more-btn" href="/bk/archives/" title="More">
<i class="fas fa-angle-right"></i></a></div><ul class="card-archive-list"><li class="card-archive-list-item"><a class="card-archive-list-link" href="/bk/archives/2025/01/"><span class="card-archive-list-date">January 2025</span><span class="card-archive-list-count">4</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/bk/archives/2024/12/"><span class="card-archive-list-date">December 2024</span><span class="card-archive-list-count">9</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/bk/archives/2024/10/"><span class="card-archive-list-date">October 2024</span><span class="card-archive-list-count">2</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/bk/archives/2024/09/"><span class="card-archive-list-date">September 2024</span><span class="card-archive-list-count">8</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/bk/archives/2024/08/"><span class="card-archive-list-date">August 2024</span><span class="card-archive-list-count">16</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/bk/archives/2024/07/"><span class="card-archive-list-date">July 2024</span><span class="card-archive-list-count">6</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/bk/archives/2024/06/"><span class="card-archive-list-date">June 2024</span><span class="card-archive-list-count">2</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/bk/archives/2024/02/"><span class="card-archive-list-date">February 2024</span><span class="card-archive-list-count">1</span></a></li></ul></div><div class="card-widget card-webinfo"><div class="item-headline"><i class="fas fa-chart-line"></i><span>Info</span></div><div class="webinfo"><div class="webinfo-item"><div class="item-name">Article :</div><div class="item-count">113</div></div><div class="webinfo-item"><div class="item-name">UV :</div><div class="item-count" id="busuanzi_value_site_uv"><i class="fa-solid fa-spinner fa-spin"></i></div></div><div class="webinfo-item"><div class="item-name">PV :</div><div class="item-count" id="busuanzi_value_site_pv"><i class="fa-solid fa-spinner fa-spin"></i></div></div><div class="webinfo-item"><div class="item-name">Last Push :</div><div class="item-count" id="last-push-date" data-lastPushDate="2025-02-05T13:56:00.688Z"><i class="fa-solid fa-spinner fa-spin"></i></div></div></div></div></div></div></main><footer id="footer"><div id="footer-wrap"><div class="copyright">©2020 - 2025 By cwh</div><div class="framework-info"><span>Framework </span><a target="_blank" rel="noopener" href="https://hexo.io">Hexo</a><span class="footer-separator">|</span><span>Theme </span><a href="https://github.com/jerryc127/hexo-theme-butterfly">Butterfly</a></div></div></footer></div><div id="rightside"><div id="rightside-config-hide"><button id="darkmode" type="button" title="Switch Between Light And Dark Mode"><i class="fas fa-adjust"></i></button><button id="hide-aside-btn" type="button" title="Toggle between single-column and double-column"><i class="fas fa-arrows-alt-h"></i></button></div><div id="rightside-config-show"><button id="rightside_config" type="button" title="Setting"><i class="fas fa-cog fa-spin"></i></button><button id="go-up" type="button" title="Back To Top"><span class="scroll-percent"></span><i class="fas fa-arrow-up"></i></button></div></div><div><script src="/bk/js/utils.js"></script><script src="/bk/js/main.js"></script><script src="https://cdn.jsdelivr.net/npm/@fancyapps/ui/dist/fancybox/fancybox.umd.min.js"></script><div class="js-pjax"><script>window.typedJSFn = {
init: (str) => {
window.typed = new Typed('#subtitle', Object.assign({
strings: str,
startDelay: 300,
typeSpeed: 150,
loop: true,
backSpeed: 50,
}, null))
},
run: (subtitleType) => {
if (true) {
if (typeof Typed === 'function') {
subtitleType()
} else {
getScript('https://cdn.jsdelivr.net/npm/typed.js/dist/typed.umd.min.js').then(subtitleType)
}
} else {
subtitleType()
}
}
}
</script><script>function subtitleType () {
if (true) {
typedJSFn.init(["塔塔开 塔塔开 塔塔开!!!","走的很慢,但从不后退"])
} else {
document.getElementById("subtitle").innerHTML = '塔塔开 塔塔开 塔塔开!!!'
}
}
typedJSFn.run(subtitleType)</script></div><script id="click-show-text" src="https://cdn.jsdelivr.net/npm/butterfly-extsrc/dist/click-show-text.min.js" data-mobile="false" data-text="offer" data-fontsize="15px" data-random="false" async="async"></script><script async data-pjax src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script></div></body></html>