-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathatom.xml
490 lines (260 loc) · 424 KB
/
atom.xml
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
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>Pdone's Blog</title>
<subtitle>皮蛋的博客</subtitle>
<link href="https://awaw.cc/atom.xml" rel="self"/>
<link href="https://awaw.cc/"/>
<updated>2024-06-25T07:09:28.697Z</updated>
<id>https://awaw.cc/</id>
<author>
<name>pdone</name>
</author>
<generator uri="https://hexo.io/">Hexo</generator>
<entry>
<title>安装 Windows 11 时使用本地帐户的方法</title>
<link href="https://awaw.cc/post/install-win11-with-local-user/"/>
<id>https://awaw.cc/post/install-win11-with-local-user/</id>
<published>2024-06-24T16:00:00.000Z</published>
<updated>2024-06-25T07:09:28.697Z</updated>
<content type="html"><![CDATA[<p>在系统安装界面断网并以 <code>OOBE\BYPASSNRO</code> 指令跳过登录。</p><span id="more"></span><p>在进行到登录阶段时断开网络连接,然后按 <code>shift + F10</code> 打开 <code>cmd</code> 运行框,输入 <code>OOBE\BYPASSNRO</code> 并回车;</p><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/install-win11-with-local-user/1.png"></p><p>这时候会重启安装程序,直到联网界面点击新出现的「我没有 Internet 连接」选项;</p><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/install-win11-with-local-user/2.png"></p><p>再点击继续执行受限设置,这样就能绕过登录 Microsoft 账户要求并自动创建本地账户。</p><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/install-win11-with-local-user/3.png"></p>]]></content>
<summary type="html"><p>在系统安装界面断网并以 <code>OOBE\BYPASSNRO</code> 指令跳过登录。</p></summary>
<category term="Share" scheme="https://awaw.cc/categories/Share/"/>
<category term="OS" scheme="https://awaw.cc/tags/OS/"/>
<category term="Win" scheme="https://awaw.cc/tags/Win/"/>
</entry>
<entry>
<title>奇思妙想💭</title>
<link href="https://awaw.cc/post/whimsy/"/>
<id>https://awaw.cc/post/whimsy/</id>
<published>2023-08-03T16:00:00.000Z</published>
<updated>2023-09-19T06:13:25.323Z</updated>
<content type="html"><![CDATA[<span id="more"></span><h2 id="想象"><a href="#想象" class="headerlink" title="想象"></a>想象</h2><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/whimsy/%E6%83%B3%E8%B1%A1%E4%B8%AD%E7%9A%84%E9%BB%91%E6%B4%9E.jpg" alt="想象中的黑洞"></p><p>在造物主的奇妙创造中,智慧生命被孕育而生,被赋予了独特的使命。一部分智慧生命被委派为造物主的助手,肩负着神圣的使命,辅助他完成众多事务。然而,其他的智慧生命则被放置在宇宙沙盒之中,这个神秘的沙盒划分成了无数个对照组,每个对照组即如同一个平行宇宙。</p><p>尽管这些平行宇宙共享着相同的宇宙环境,但造物主巧妙地设置了一种绝妙的隔离机制,使得不同对照组之间相互孤立,有如我们所熟知的虚拟机。每个对照组的智慧生命都在自己独特的条件下发展和进化,彼此并不感知对方的存在,仿佛分居于各自的宇宙之中。</p><p>造物主寄望于观察自己创造的智慧生命在多样条件下的发展轨迹。然而,为了避免智慧生命的过快发展而导致自我毁灭,他睿智地赋予了它们有限的寿命。这样一来,生命将在有限的时间内经历成长、繁荣与变化,却不至于过早迎来终结。</p><p>基于这个精妙的构思,人类注定永远无法自行发现存在于其他平行宇宙中的外星生命——即使是与我们自身相似的存在。除非造物主以某种形式干预,揭示了这些神秘生命的存在。这样的干预可能是一个宏大的奇迹,或者是一连串微妙的迹象,引导我们开始怀疑我们不是宇宙中唯一的智慧生命。</p><p>在这美妙而神秘的创世之旅中,我们不妨保持谦卑和好奇,探索宇宙和生命的奥秘,也许在某一刻,我们会获得关于我们自身存在意义的更深刻认知。</p><h2 id="扩展"><a href="#扩展" class="headerlink" title="扩展"></a>扩展</h2><p>让我们继续扩展这个设想,将其构建成一个虚构的宇宙场景。</p><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/whimsy/%E6%98%9F%E4%BA%91.jpg" alt="星云"></p><p>在这个造物主创造的宇宙沙盒中,有许多平行宇宙(对照组),每个宇宙都是一个独特的实验场景。每个实验场景都有不同的初始条件和规则,从微观层面到宏观层面都存在微妙的差异,以产生各种可能性。</p><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/whimsy/%E5%9C%A8%E6%9C%88%E7%90%83%E8%A1%A8%E9%9D%A2%E7%9C%8B%E5%9C%B0%E7%90%83.jpg" alt="在月球表面看地球"></p><ul><li><p>宇宙的初始条件:每个宇宙都有自己独特的初始条件。有些可能具有更多的自然资源和生态平衡,而另一些可能在资源稀缺和环境恶劣的情况下开始。</p></li><li><p>生命的诞生:在每个宇宙中,生命以各种形式诞生。从单细胞生物到复杂的多细胞生物,从植物到动物,各种形态的生命在不同的宇宙中演化。</p></li><li><p>有限的寿命:造物主赋予智慧生命有限的寿命,以避免其发展过快而自我毁灭。这使得智慧生命需要理性和谨慎对待资源和科技的发展,以延续自己的文明。</p></li><li><p>智慧生命的出现:在某些宇宙中,智慧生命可能会逐渐出现。他们会经历进化、文明的崛起和科技的发展。不同宇宙中智慧生命的特点和文明水平可能千差万别。</p></li><li><p>宇宙沙盒中的对照组:这些对照组可能不仅包括类似地球的情景,也包括完全不同的星球和宇宙结构。有些对照组中可能存在比地球上更高级的生物形式,也有可能有完全不同类型的智慧生命。</p></li><li><p>交互与隔离:虽然这些宇宙共享相似的宇宙环境,但造物主将它们隔离开来,避免相互干扰,以保持实验的独立性。智慧生命之间并不知道其他宇宙的存在,让他们自主发展。</p></li><li><p>观察和干预:造物主时不时地观察不同对照组中智慧生命的进展,他们也许通过超自然手段对这些对照组进行干预,但也可能仅是静观其变。</p></li><li><p>生命的进化与文明:不同对照组中的智慧生命会经历不同的进化历程和文明发展。有些对照组的文明可能迅速崛起,创造出强大的科技和社会结构,而另一些对照组可能在原始阶段停滞不前。</p></li><li><p>实验的结果:每个宇宙的结果都是独一无二的。有些宇宙的智慧生命可能因为资源利用不当或自相残杀而灭亡。而另一些宇宙的智慧生命可能会团结合作,探索宇宙的奥秘,并达到一个高度先进的文明。</p></li><li><p>自行发现外星人的难题:基于设定中的隔离和宇宙沙盒的概念,人类在自然条件下可能难以自行发现其他对照组中的外星文明。这是因为这些对照组是相互隔离的,彼此无法直接联系。除非造物主进行干预或解除隔离,否则人类可能永远不会直接接触其他宇宙中的外星文明。</p></li></ul><p>这样的设想,将宇宙看作一个巨大的实验室,造物主作为超自然的存在,掌控着这个宏伟的观察与实验计划。在这个设定下,人类和其他智慧生命都是宇宙中的一部分,我们的存在和发展也可能是造物主实验的一部分。</p><p>同时也为我们提供了一种有趣的哲学思考,让我们思考宇宙的无限可能性以及我们作为智慧生命的存在和发展。虽然这只是一个设想,但它为我们提供了一种探索未知和宇宙奥秘的视角。</p><h2 id="类比"><a href="#类比" class="headerlink" title="类比"></a>类比</h2><p>当我们将老鼠乌托邦(25号宇宙)实验的结果与上文观点相结合,可以得到一些有趣的启示和类比。</p><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/whimsy/%E8%80%81%E9%BC%A0%E4%B9%8C%E6%89%98%E9%82%A6%E5%AE%9E%E9%AA%8C1.jpg" alt="老鼠乌托邦实验"></p><ul><li><p>在上文设想中,造物主创造了智慧生命并观察他们在宇宙中的发展。类似地,老鼠乌托邦实验也是一个观察社会动物(老鼠)在特定条件下的发展。这两者都是通过在特定环境中设定条件和规则来探索生命的进化和行为。</p></li><li><p>有限的资源:在老鼠乌托邦实验中,随着人口密度的增加,资源的竞争变得更为激烈。类似地,在上文观点中,造物主给予生命有限的资源,可能是为了观察智慧生命如何在资源有限的情况下适应和发展。</p></li><li><p>社会结构与动力:实验中老鼠群体的社会结构出现了退化和混乱,而在上文设想中,智慧生命也可能面临类似的挑战。人类社会中也存在着资源竞争、社会不平等和文明冲突等问题,而这些因素可能影响文明的发展和社会动力。</p></li><li><p>行为沮丧:老鼠乌托邦实验中,高度拥挤和资源过剩的环境导致了老鼠社会的异常行为,这类似于上文观点中对于发展太快可能导致自行灭亡的担忧。这个类比可能引发我们对于人类社会中过度竞争、资源过剩和社会动态的反思。</p></li><li><p>自我调整和适应:在实验和上文设想中,动物和智慧生命都面临着适应环境和资源限制的挑战。在类似于乌托邦实验中,老鼠群体可能最终自我调整或消亡,而在上文设想中的智慧生命可能会逐渐适应和发展,寻找合适的平衡。</p></li></ul><p>通过将老鼠乌托邦实验与上文观点相结合,我们可以从一个不同的角度思考社会动物和智慧生命在特定环境下的行为和进化。这样的类比提醒我们在探讨人类社会和文明发展的同时,也要关注资源的合理分配、社会结构的稳定和适应环境的能力。同时,也让我们思考造物主设立这样的实验是否旨在观察智慧生命如何面对类似挑战,以及从中获取对于宇宙和生命的更深刻理解。</p><blockquote><p>注:以上内容源于想象和假设。</p></blockquote>]]></content>
<summary type="html"><span id="more"></span>
<h2 id="想象"><a href="#想象" class="headerlink" title="想象"></a>想象</h2><p><img src="https://cdn.awaw.cc/raw/pdone/stati</summary>
<category term="Share" scheme="https://awaw.cc/categories/Share/"/>
<category term="Whimsy" scheme="https://awaw.cc/tags/Whimsy/"/>
</entry>
<entry>
<title>短链接服务Octopus的实现与源码开放</title>
<link href="https://awaw.cc/post/whats-short-link/"/>
<id>https://awaw.cc/post/whats-short-link/</id>
<published>2023-07-19T16:00:00.000Z</published>
<updated>2023-07-20T09:26:03.361Z</updated>
<content type="html"><![CDATA[<p>一直想实现一个私有化的短链接服务,后来发现了这个项目,避免了重复造轮子。</p><span id="more"></span><div class="note note-primary"> <p>本文转自 <a href="https://github.com/zjcscut/octopus">https://github.com/zjcscut/octopus</a></p> </div><h2 id="前提"><a href="#前提" class="headerlink" title="前提"></a>前提</h2><p>半年前(<code>2020-06</code>)左右,疫情触底反弹,公司的业务量不断提升,运营部门为了方便短信、模板消息推送等渠道的投放,提出了一个把长链接压缩为短链接的功能需求。当时为了快速推广,使用了一些比较知名的第三方短链压缩平台,存在一些问题:</p><ul><li>收费贵</li><li>一些情况下,短链域名在部分第三方平台例如微信会被封杀</li><li>回源数据没有办法定制处理方案,无法打通整个业务链路进行数据分析和跟踪</li></ul><p>基于此类问题,决定自研一个(长链接压缩为)短链接服务,当时刚好同步进行微服务拆分,内部很多微服务需要重新命名,组内的一个妹子说不如就用<code>Github</code>的吉祥物去命名<code>octopus cat</code>(章鱼猫)去命名,但是考虑到版权问题,去掉了她最喜欢的猫,剩下章鱼,以<code>octopus</code>命名:</p><p><img src="https://throwable-blog-1256189093.cos.ap-guangzhou.myqcloud.com/202012/o-c-g-w-1.png"></p><p>(项目的描述还打错字了,应该是”短链接”)因为实现的功能并不复杂,初版于<code>2020-06</code>月底就发布。<code>octopus</code>的实现参考了互联网中几篇关于”短链服务实现”浏览量比较高的文章,下面从实现原理、服务实现和部署架构等方面展开谈谈。</p><h2 id="基本原理"><a href="#基本原理" class="headerlink" title="基本原理"></a>基本原理</h2><p>短链服务的核心就是构建短链接和长链接的唯一映射关系,依赖到一个高性能、排列组合数量大而且破解难度大的映射标识生成算法。</p><h3 id="构建唯一映射关系"><a href="#构建唯一映射关系" class="headerlink" title="构建唯一映射关系"></a>构建唯一映射关系</h3><p><img src="https://throwable-blog-1256189093.cos.ap-guangzhou.myqcloud.com/202012/o-c-g-w-4.png"></p><p>上图是笔者收到的京东白条分期还款结果提醒短信,短信内容也包含了一个短链<code>https://3.cn/j/xxxxxxx</code>,把它拷贝到浏览器中打开,发现客户端会重定向到长链<code>https://jrmkt.jd.com/ptp/wl/vouchers.html?activityId=${activityId}&uep_p=${uep_p}&uep_template_id=${uep_template_id}&uep_timestamp=${uep_timestamp}</code>,然后跳入一个<code>H5</code>的登录页,登录后再跳进一个白条攻略页面。这里其实一个长链其实可以压成多个短链,短链可以相同域名,也可以使用不同的域名:</p><p><img src="https://throwable-blog-1256189093.cos.ap-guangzhou.myqcloud.com/202012/o-c-g-w-5.png"></p><p>访问<code>https://3.cn/j/xxxxxxx</code>短链接具体的交互流程猜测如下:</p><p><img src="https://throwable-blog-1256189093.cos.ap-guangzhou.myqcloud.com/202012/o-c-g-w-8.png"></p><blockquote><p>jrmkt.jd.com和3.cn查证都是doge东的域名</p></blockquote><p>构建唯一映射关系其实就是基于一个固定的长链接,映射到一个或者多个可以动态生成的短链接,这个唯一映射关系,要求生成的短链接满足:</p><ul><li>不容易被破解(使用数字例如数据库的自增主键作为唯一映射标识容易被人遍历出来进行恶意调用)</li><li>不能重复(一个短链接只能对应一个长链接,当然一个长链接可以对应多个短链接)</li><li>长度尽可能短,这是因为第三方推送的报文内容一般有长度限制,如果短链过长,会导致不容易传输,还会令到推送内容字数受限(试想运营商短信投放内容最大长度为<code>30</code>个字符长度,短链已经占了<code>20</code>个字符长度,剩下只有<code>10</code>个字符长度让运营同事去发挥,显然不合理)</li><li>如果链接过长,生成的二维码里面的”码点”会十分密集,不利于客户端识别和传输,刚好笔者公司运营有使用二维码的场景,所以必须尽可能缩短链接的长度</li></ul><p>总的来说,这个唯一映射关系中的映射标识需要像<code>Hash</code>算法生成的<code>Hash</code>码那样具备高唯一性和低碰撞频率,同时具备短小易传输的特点,具体如何去生成映射唯一标识见下一节”压缩码生成算法”。</p><h3 id="压缩码生成算法"><a href="#压缩码生成算法" class="headerlink" title="压缩码生成算法"></a>压缩码生成算法</h3><p>这里的”压缩码”(<code>compression_code</code>)是笔者杜撰出来的名词,在本文中它的含义是短链接<code>URL</code>的路径部分(为了节省长度,除了协议和域名部分,短链的<code>URL</code>只有第一段路径):</p><p><img src="https://throwable-blog-1256189093.cos.ap-guangzhou.myqcloud.com/202012/o-c-g-w-2.png"></p><p>其中,协议部分基本是固定为<code>https://</code>(从安全性来看不建议使用<code>http://</code>),短链域名可以购买尽可能长度短的域名如<code>t.cn</code>,不过有先见之明的资本家一般会把所有优质的短域名买下并且把价格提到很高,所以域名的长度基本也是很难控制的因素,剩下可控的就是压缩码部分。压缩码部分是可控的,但因为它是<code>URL</code>的一部分,只要确保所使用的字符不会被<code>URL</code>编码转义,那么长度是人为可控的。假设我们使用的是<code>26</code>个字母的大小写,加上<code>10</code>个数字,那么对于<code>N</code>位压缩码可以表示的最大组合数量为:</p><ul><li><code>N = 4</code>,组合数为<code>62 ^ 4 = 14_776_336</code>,<code>147</code>万接近<code>148</code>万</li><li><code>N = 5</code>,组合数为<code>62 ^ 5 = 916_132_832</code>,<code>9.16</code>亿左右</li><li><code>N = 6</code>,组合数为<code>62 ^ 6 = 56_800_235_584</code>,<code>568</code>亿左右</li></ul><p>一般来说,组合数越小破解的难度就越小,组合数越大,要求压缩码长度越大,所以常用的长度就是<code>4</code>、<code>5</code>和<code>6</code>,而且后期可以对失效的长链进行压缩码回收或者禁用,这三个长度对于绝大对数生产短链的应用场景都能满足。<code>octopus</code>在实现的时候选用的是<code>6</code>位长度的压缩码,无他,因为有现成的成熟的参考方案:<code>62</code>进制数刚好由字符<code>0-9 a-z A-Z</code>组成,生成压缩码的时候,只需要生成一个唯一的<code>10</code>进制数,然后再基于此<code>10</code>进制数转换为<code>62</code>进制数数即可。说到这里,看起来的方案如下:</p><p><img src="https://throwable-blog-1256189093.cos.ap-guangzhou.myqcloud.com/202012/o-c-g-w-6.png"></p><p>虚线部分一般依赖一种高效而且低冲突的摘要算法,如<code>MurmurHash</code>,而第<code>(1)</code>步的实线部分就是生成一个全局唯一的<code>10</code>进制序列,常用的手法有:</p><ul><li>数据库自增序列(如自增主键)</li><li><code>Snowflake</code>算法</li><li>自研的类似<code>UUID</code>算法生成全局唯一的序列值</li></ul><p>考虑到之前笔者钻研过<code>Snowflake</code>算法的原理,这里简单使用<code>Snowflake</code>算法生成自增序列,使用了下面的流程进行压缩码生成和分配:</p><p><img src="https://throwable-blog-1256189093.cos.ap-guangzhou.myqcloud.com/202012/o-c-g-w-7.png"></p><p>因为运用部门对短链生成的批量不大,而且短链域名只有一个,<strong>所以简单起见,一次压缩操作直接消耗掉一个压缩码,不考虑不同短链域名对同一个压缩码进行共享,也不考虑压缩码的回收问题</strong>。</p><h2 id="服务实现"><a href="#服务实现" class="headerlink" title="服务实现"></a>服务实现</h2><p>短链服务的主访问入口一般<code>QPS</code>极高,因此需要想尽一切办法降低该入口的耗时,考虑可以用<code>Redis</code>做缓存承载入口的流量,基础架构选型如下:</p><ul><li><code>JDK1.8+</code>:生产部署使用<code>JDK11</code></li><li><code>MVC</code>框架与容器:<code>spring-boot-starter-webflux</code>或者<code>spring-cloud-gateway</code>,主要是必须使用<code>Netty</code>作为底层通讯容器</li><li>内部<code>RPC</code>框架:<code>Dubbo</code></li><li>服务注册与发现:<code>Nacos</code></li><li>可选<code>APM</code>工具:<code>Pinpoint</code></li></ul><p>中间件依赖(因为之前整个服务集群都上云了,低负载的服务共用了部分中间件):</p><ul><li><code>MySQL8.x</code></li><li><code>Redis5.x</code>普通主从或者哨兵集群</li><li><code>RabbitMQ3.8.x</code>集群,使用镜像队列</li></ul><p>服务的设计图如下:</p><p><img src="https://throwable-blog-1256189093.cos.ap-guangzhou.myqcloud.com/202012/o-c-g-w-3.png"></p><p>最新的版本考虑把黑白名单的拦截器去掉,<strong>替换成一个基于布隆过滤器现实的拦截器</strong>。服务使用了两个拦截器(虽然<code>Filter</code>翻译是过滤器,但是出于习惯,下文称为拦截器)链,容器提供的拦截器组成的拦截器链主要是负责服务安全、调用链跟踪的功能,而服务内部自定义的拦截器链主要是实现请求参数解析、<code>URL</code>转换、重定向和异步事件记录等功能。</p><p>模块划分:</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs shell">- (ROOT) octopus<br> - octopus-contract<br> - octopus-server<br></code></pre></td></tr></table></figure><p><code>octopus-contract</code>模块必须脱离父<code>POM</code>的管理,方便单独迭代更新。</p><h3 id="数据库设计"><a href="#数据库设计" class="headerlink" title="数据库设计"></a>数据库设计</h3><p>一共使用了<code>5</code>个表:</p><p><img src="https://throwable-blog-1256189093.cos.ap-guangzhou.myqcloud.com/202012/o-c-g-w-10.png"></p><p>具体的初始化<code>DDL</code>如下:</p><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br></pre></td><td class="code"><pre><code class="hljs sql"><span class="hljs-keyword">CREATE</span> DATABASE `db_octopus` CHARSET <span class="hljs-string">'utf8mb4'</span> <span class="hljs-keyword">COLLATE</span> <span class="hljs-string">'utf8mb4_unicode_520_ci'</span>;<br><br>USE `db_octopus`;<br><br><span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">TABLE</span> `url_map`<br>(<br> `id` <span class="hljs-type">BIGINT</span> UNSIGNED <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">PRIMARY</span> KEY AUTO_INCREMENT COMMENT <span class="hljs-string">'主键'</span>,<br> `short_url` <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">32</span>) <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> COMMENT <span class="hljs-string">'短链URL'</span>,<br> `long_url` <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">768</span>) <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> COMMENT <span class="hljs-string">'长链URL'</span>,<br> `short_url_digest` <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">128</span>) <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> COMMENT <span class="hljs-string">'短链摘要'</span>,<br> `long_url_digest` <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">128</span>) <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> COMMENT <span class="hljs-string">'长链摘要'</span>,<br> `compression_code` <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">16</span>) <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> COMMENT <span class="hljs-string">'压缩码'</span>,<br> `description` <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">256</span>) COMMENT <span class="hljs-string">'描述'</span>,<br> `url_status` TINYINT <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-number">1</span> COMMENT <span class="hljs-string">'URL状态,1:正常,2:已失效'</span>,<br> `create_time` DATETIME <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-built_in">CURRENT_TIMESTAMP</span> COMMENT <span class="hljs-string">'创建时间'</span>,<br> `edit_time` DATETIME <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-built_in">CURRENT_TIMESTAMP</span> <span class="hljs-keyword">ON</span> <span class="hljs-keyword">UPDATE</span> <span class="hljs-built_in">CURRENT_TIMESTAMP</span> COMMENT <span class="hljs-string">'更新时间'</span>,<br> `creator` <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">32</span>) <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-string">'admin'</span> COMMENT <span class="hljs-string">'创建者'</span>,<br> `editor` <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">32</span>) <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-string">'admin'</span> COMMENT <span class="hljs-string">'更新者'</span>,<br> `deleted` TINYINT <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-number">0</span> COMMENT <span class="hljs-string">'软删除标识'</span>,<br> `version` <span class="hljs-type">BIGINT</span> <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-number">1</span> COMMENT <span class="hljs-string">'版本号'</span>,<br> <span class="hljs-keyword">UNIQUE</span> uniq_compression_code (`compression_code`),<br> INDEX idx_short_url (`short_url`),<br> INDEX idx_short_url_digest (`short_url_digest`),<br> INDEX idx_long_url_digest (`long_url_digest`)<br>) COMMENT <span class="hljs-string">'URL映射表'</span>;<br><br><span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">TABLE</span> `domain_conf`<br>(<br> `id` <span class="hljs-type">BIGINT</span> UNSIGNED <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">PRIMARY</span> KEY AUTO_INCREMENT COMMENT <span class="hljs-string">'主键'</span>,<br> `domain_value` <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">16</span>) <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> COMMENT <span class="hljs-string">'域名'</span>,<br> `protocol` <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">8</span>) <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-string">'https'</span> COMMENT <span class="hljs-string">'协议,https或者http'</span>,<br> `domain_status` TINYINT <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-number">1</span> COMMENT <span class="hljs-string">'域名状态,1:正常,2:已失效'</span>,<br> `create_time` DATETIME <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-built_in">CURRENT_TIMESTAMP</span> COMMENT <span class="hljs-string">'创建时间'</span>,<br> `edit_time` DATETIME <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-built_in">CURRENT_TIMESTAMP</span> <span class="hljs-keyword">ON</span> <span class="hljs-keyword">UPDATE</span> <span class="hljs-built_in">CURRENT_TIMESTAMP</span> COMMENT <span class="hljs-string">'更新时间'</span>,<br> `creator` <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">32</span>) <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-string">'admin'</span> COMMENT <span class="hljs-string">'创建者'</span>,<br> `editor` <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">32</span>) <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-string">'admin'</span> COMMENT <span class="hljs-string">'更新者'</span>,<br> `deleted` TINYINT <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-number">0</span> COMMENT <span class="hljs-string">'软删除标识'</span>,<br> `version` <span class="hljs-type">BIGINT</span> <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-number">1</span> COMMENT <span class="hljs-string">'版本号'</span>,<br> <span class="hljs-keyword">UNIQUE</span> uniq_domain (`domain_value`)<br>) COMMENT <span class="hljs-string">'域名配置'</span>;<br><br><span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">TABLE</span> `compression_code`<br>(<br> `id` <span class="hljs-type">BIGINT</span> UNSIGNED <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">PRIMARY</span> KEY AUTO_INCREMENT COMMENT <span class="hljs-string">'主键'</span>,<br> `compression_code` <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">16</span>) <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> COMMENT <span class="hljs-string">'压缩码'</span>,<br> `code_status` TINYINT <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-number">1</span> COMMENT <span class="hljs-string">'压缩码状态,1:未使用,2:已使用,3:已失效'</span>,<br> `sequence_value` <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">64</span>) <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> COMMENT <span class="hljs-string">'序列(盐)'</span>,<br> `strategy` <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">8</span>) <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-string">'sequence'</span> COMMENT <span class="hljs-string">'策略,sequence或者hash'</span>,<br> `create_time` DATETIME <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-built_in">CURRENT_TIMESTAMP</span> COMMENT <span class="hljs-string">'创建时间'</span>,<br> `edit_time` DATETIME <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-built_in">CURRENT_TIMESTAMP</span> <span class="hljs-keyword">ON</span> <span class="hljs-keyword">UPDATE</span> <span class="hljs-built_in">CURRENT_TIMESTAMP</span> COMMENT <span class="hljs-string">'更新时间'</span>,<br> `creator` <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">32</span>) <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-string">'admin'</span> COMMENT <span class="hljs-string">'创建者'</span>,<br> `editor` <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">32</span>) <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-string">'admin'</span> COMMENT <span class="hljs-string">'更新者'</span>,<br> `deleted` TINYINT <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-number">0</span> COMMENT <span class="hljs-string">'软删除标识'</span>,<br> `version` <span class="hljs-type">BIGINT</span> <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-number">1</span> COMMENT <span class="hljs-string">'版本号'</span>,<br> <span class="hljs-keyword">UNIQUE</span> uniq_compression_code (`compression_code`)<br>) COMMENT <span class="hljs-string">'压缩码'</span>;<br><br><span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">TABLE</span> `visit_statistics`<br>(<br> `id` <span class="hljs-type">BIGINT</span> UNSIGNED <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">PRIMARY</span> KEY AUTO_INCREMENT COMMENT <span class="hljs-string">'主键'</span>,<br> `create_time` DATETIME <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-built_in">CURRENT_TIMESTAMP</span> COMMENT <span class="hljs-string">'创建时间'</span>,<br> `edit_time` DATETIME <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-built_in">CURRENT_TIMESTAMP</span> <span class="hljs-keyword">ON</span> <span class="hljs-keyword">UPDATE</span> <span class="hljs-built_in">CURRENT_TIMESTAMP</span> COMMENT <span class="hljs-string">'更新时间'</span>,<br> `creator` <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">32</span>) <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-string">'admin'</span> COMMENT <span class="hljs-string">'创建者'</span>,<br> `editor` <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">32</span>) <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-string">'admin'</span> COMMENT <span class="hljs-string">'更新者'</span>,<br> `deleted` TINYINT <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-number">0</span> COMMENT <span class="hljs-string">'软删除标识'</span>,<br> `version` <span class="hljs-type">BIGINT</span> <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-number">1</span> COMMENT <span class="hljs-string">'版本号'</span>,<br> `statistics_date` <span class="hljs-type">DATE</span> <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-string">'1970-01-01'</span> COMMENT <span class="hljs-string">'统计日期'</span>,<br> `pv_count` <span class="hljs-type">BIGINT</span> UNSIGNED <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-number">0</span> COMMENT <span class="hljs-string">'页面流量数'</span>,<br> `uv_count` <span class="hljs-type">BIGINT</span> UNSIGNED <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-number">0</span> COMMENT <span class="hljs-string">'独立访客数'</span>,<br> `ip_count` <span class="hljs-type">BIGINT</span> UNSIGNED <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-number">0</span> COMMENT <span class="hljs-string">'独立IP数'</span>,<br> `effective_redirection_count` <span class="hljs-type">BIGINT</span> UNSIGNED <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-number">0</span> COMMENT <span class="hljs-string">'有效跳转数'</span>,<br> `ineffective_redirection_count` <span class="hljs-type">BIGINT</span> UNSIGNED <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-number">0</span> COMMENT <span class="hljs-string">'无效跳转数'</span>,<br> `compression_code` <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">16</span>) <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> COMMENT <span class="hljs-string">'压缩码'</span>,<br> `short_url_digest` <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">128</span>) <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> COMMENT <span class="hljs-string">'短链摘要'</span>,<br> `long_url_digest` <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">128</span>) <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> COMMENT <span class="hljs-string">'长链摘要'</span>,<br> <span class="hljs-keyword">UNIQUE</span> uniq_date_code_digest (`statistics_date`, `compression_code`)<br>) COMMENT <span class="hljs-string">'访问数据统计'</span>;<br><br><span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">TABLE</span> `transform_event_record`<br>(<br> `id` <span class="hljs-type">BIGINT</span> UNSIGNED <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">PRIMARY</span> KEY AUTO_INCREMENT COMMENT <span class="hljs-string">'主键'</span>,<br> `create_time` DATETIME <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-built_in">CURRENT_TIMESTAMP</span> COMMENT <span class="hljs-string">'创建时间'</span>,<br> `edit_time` DATETIME <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-built_in">CURRENT_TIMESTAMP</span> <span class="hljs-keyword">ON</span> <span class="hljs-keyword">UPDATE</span> <span class="hljs-built_in">CURRENT_TIMESTAMP</span> COMMENT <span class="hljs-string">'更新时间'</span>,<br> `creator` <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">32</span>) <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-string">'admin'</span> COMMENT <span class="hljs-string">'创建者'</span>,<br> `editor` <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">32</span>) <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-string">'admin'</span> COMMENT <span class="hljs-string">'更新者'</span>,<br> `deleted` TINYINT <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-number">0</span> COMMENT <span class="hljs-string">'软删除标识'</span>,<br> `version` <span class="hljs-type">BIGINT</span> <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-number">1</span> COMMENT <span class="hljs-string">'版本号'</span>,<br> `unique_identity` <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">128</span>) <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> COMMENT <span class="hljs-string">'唯一身份标识,SHA-1(客户端IP-UA)'</span>,<br> `client_ip` <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">64</span>) <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> COMMENT <span class="hljs-string">'客户端IP'</span>,<br> `short_url` <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">32</span>) <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> COMMENT <span class="hljs-string">'短链URL'</span>,<br> `long_url` <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">768</span>) <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> COMMENT <span class="hljs-string">'长链URL'</span>,<br> `short_url_digest` <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">128</span>) <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> COMMENT <span class="hljs-string">'短链摘要'</span>,<br> `long_url_digest` <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">128</span>) <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> COMMENT <span class="hljs-string">'长链摘要'</span>,<br> `compression_code` <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">16</span>) <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> COMMENT <span class="hljs-string">'压缩码'</span>,<br> `record_time` DATETIME <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> COMMENT <span class="hljs-string">'记录时间戳'</span>,<br> `user_agent` <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">2048</span>) COMMENT <span class="hljs-string">'UA'</span>,<br> `cookie_value` <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">2048</span>) COMMENT <span class="hljs-string">'cookie'</span>,<br> `query_param` <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">2048</span>) COMMENT <span class="hljs-string">'URL参数'</span>,<br> `province` <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">32</span>) COMMENT <span class="hljs-string">'省份'</span>,<br> `city` <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">32</span>) COMMENT <span class="hljs-string">'城市'</span>,<br> `phone_type` <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">64</span>) COMMENT <span class="hljs-string">'手机型号'</span>,<br> `browser_type` <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">64</span>) COMMENT <span class="hljs-string">'浏览器类型'</span>,<br> `browser_version` <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">128</span>) COMMENT <span class="hljs-string">'浏览器版本号'</span>,<br> `os_type` <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">32</span>) COMMENT <span class="hljs-string">'操作系统型号'</span>,<br> `device_type` <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">32</span>) COMMENT <span class="hljs-string">'设备型号'</span>,<br> `os_version` <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">32</span>) COMMENT <span class="hljs-string">'操作系统版本号'</span>,<br> `transform_status` TINYINT <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-number">0</span> COMMENT <span class="hljs-string">'转换状态,1:转换成功,2:转换失败,3:重定向成功,4:重定向失败'</span>,<br> INDEX idx_record_time (`record_time`),<br> INDEX idx_compression_code (`compression_code`),<br> INDEX idx_short_url_digest (`short_url_digest`),<br> INDEX idx_long_url_digest (`long_url_digest`),<br> INDEX idx_unique_identity (`unique_identity`)<br>) COMMENT <span class="hljs-string">'转换事件记录'</span>;<br></code></pre></td></tr></table></figure><h3 id="压缩码生成模块实现"><a href="#压缩码生成模块实现" class="headerlink" title="压缩码生成模块实现"></a>压缩码生成模块实现</h3><p>压缩码生成的方法比较简单:</p><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><code class="hljs java"><span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> SequenceGenerator sequenceGenerator; # <------------- 雪花算法序列生成器<br><span class="hljs-meta">@Value("${compress.code.batch:100}")</span><br><span class="hljs-keyword">private</span> Integer compressCodeBatch;<br>......<br><br><br><span class="hljs-keyword">private</span> <span class="hljs-keyword">void</span> <span class="hljs-title function_">generateBatchCompressionCodes</span><span class="hljs-params">()</span> {<br> <span class="hljs-keyword">for</span> (<span class="hljs-type">int</span> <span class="hljs-variable">i</span> <span class="hljs-operator">=</span> <span class="hljs-number">0</span>; i < compressCodeBatch; i++) {<br> <span class="hljs-type">long</span> <span class="hljs-variable">sequence</span> <span class="hljs-operator">=</span> sequenceGenerator.generate();<br> <span class="hljs-type">CompressionCode</span> <span class="hljs-variable">compressionCode</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">new</span> <span class="hljs-title class_">CompressionCode</span>();<br> compressionCode.setSequenceValue(String.valueOf(sequence));<br> <span class="hljs-type">String</span> <span class="hljs-variable">code</span> <span class="hljs-operator">=</span> ConversionUtils.X.encode62(sequence); # <-------------- <span class="hljs-number">10</span>进制转<span class="hljs-number">62</span>进制<br> code = code.substring(code.length() - <span class="hljs-number">6</span>);<br> compressionCode.setCompressionCode(code);<br> compressionCodeDao.insertSelective(compressionCode);<br> }<br>}<br></code></pre></td></tr></table></figure><p>总是批量生成可用的压缩码,查询的时候只需要查出当前未被使用的第一个压缩码即可。</p><h3 id="容器拦截器链实现"><a href="#容器拦截器链实现" class="headerlink" title="容器拦截器链实现"></a>容器拦截器链实现</h3><p>容器的拦截器需要实现<code>org.springframework.web.server.WebFilter</code>(<code>WebFlux</code>的<code>Filter</code>接口),主要有四个实现(顺序如下):</p><ul><li><code>MappedDiagnosticContextFilter</code>:引入<code>transmittable-thread-local</code>通过<code>MDC</code>做<code>TraceId</code>的请求上下文绑定,<code>WebFlux</code>的线程模型和常见的<code>Servlet</code>容器的线程模型不一样,这里不能直接使用<code>ThreadLocal</code>或者<code>Slf4j</code>中原有的<code>MDC</code>实现</li><li><code>BlockIpFilter</code>:判断客户端请求<code>IP</code>是否命中黑名单</li><li><code>AccessDomainFilter</code>:判断域名是否命中短链域名白名单(可选的,因为外部已经通过<code>NGINX</code>做了一次拦截,这个实现是可有可无的)</li><li><code>ExcludeUriFilter</code>:判断当前请求的<code>URI</code>是否命中了<code>URI</code>黑名单</li></ul><p>这里简单展示一下<code>MappedDiagnosticContextFilter</code>的实现:</p><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><code class="hljs java"><span class="hljs-meta">@Order(value = Integer.MIN_VALUE)</span><br><span class="hljs-meta">@Component</span><br><span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">MappedDiagnosticContextFilter</span> <span class="hljs-keyword">implements</span> <span class="hljs-title class_">WebFilter</span> {<br><br> <span class="hljs-meta">@Override</span><br> <span class="hljs-keyword">public</span> Mono<Void> <span class="hljs-title function_">filter</span><span class="hljs-params">(ServerWebExchange exchange, WebFilterChain chain)</span> {<br> <span class="hljs-type">String</span> <span class="hljs-variable">uuid</span> <span class="hljs-operator">=</span> UUID.randomUUID().toString();<br> MDC.put(<span class="hljs-string">"TRACE_ID"</span>, uuid);<br> <span class="hljs-keyword">return</span> chain.filter(exchange).then(Mono.fromRunnable(() -> MDC.remove(<span class="hljs-string">"TRACE_ID"</span>)));<br> }<br>}<br></code></pre></td></tr></table></figure><p>上面的<code>TRACE_ID</code>是配合项目的<code>logback.xml</code>中的<code>pattern</code>使用。另外需要参考<code>https://github.com/alibaba/transmittable-thread-local/blob/master/docs/requirement-scenario.md</code>中<code>logback</code>与<code>transmittable-thread-local</code>做集成的场景:</p><p><img src="https://throwable-blog-1256189093.cos.ap-guangzhou.myqcloud.com/202012/o-c-g-w-12.png"></p><p>这里为了方便管理和升级版本,笔者直接把<code>logback-mdc-ttl</code>的源码实现改造好后放到项目中。</p><h3 id="服务内部拦截器链实现"><a href="#服务内部拦截器链实现" class="headerlink" title="服务内部拦截器链实现"></a>服务内部拦截器链实现</h3><p>服务内部的拦截器链主要负责请求参数解析、<code>URL</code>映射转换、重定向和访问转换结果记录,顶层接口设计如下:</p><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs java"><span class="hljs-keyword">public</span> <span class="hljs-keyword">interface</span> <span class="hljs-title class_">TransformFilter</span> {<br><br> <span class="hljs-keyword">default</span> <span class="hljs-type">int</span> <span class="hljs-title function_">order</span><span class="hljs-params">()</span> {<br> <span class="hljs-keyword">return</span> <span class="hljs-number">1</span>;<br> }<br><br> <span class="hljs-keyword">default</span> <span class="hljs-keyword">void</span> <span class="hljs-title function_">init</span><span class="hljs-params">(TransformContext context)</span> {<br><br> }<br><br> <span class="hljs-keyword">void</span> <span class="hljs-title function_">doFilter</span><span class="hljs-params">(TransformFilterChain chain,</span><br><span class="hljs-params"> TransformContext context)</span>;<br>}<br></code></pre></td></tr></table></figure><p><code>TransformContext</code>是一个属性承载类,本质是一个普通的<code>JavaBean</code>,设计如下:</p><p><img src="https://throwable-blog-1256189093.cos.ap-guangzhou.myqcloud.com/202012/o-c-g-w-13.png"></p><p>目前内置了<code>4</code>个拦截器实现,包括:</p><ul><li><code>ExtractRequestHeaderTransformFilter</code>:请求头解析</li><li><code>UrlTransformFilter</code>:<code>URL</code>转换</li><li><code>RedirectionTransformFilter</code>:重定向处理</li><li><code>TransformEventProcessTransformFilter</code>:转换事件记录</li></ul><p>以<code>UrlTransformFilter</code>为例子,源码如下:</p><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br></pre></td><td class="code"><pre><code class="hljs java"><span class="hljs-meta">@Slf4j</span><br><span class="hljs-meta">@Scope(scopeName = ConfigurableBeanFactory.SCOPE_PROTOTYPE)</span><br><span class="hljs-meta">@Component</span><br><span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">UrlTransformFilter</span> <span class="hljs-keyword">implements</span> <span class="hljs-title class_">TransformFilter</span> {<br><br> <span class="hljs-meta">@Autowired</span><br> <span class="hljs-keyword">private</span> UrlMapCacheManager urlMapCacheManager;<br><br> <span class="hljs-meta">@Override</span><br> <span class="hljs-keyword">public</span> <span class="hljs-type">int</span> <span class="hljs-title function_">order</span><span class="hljs-params">()</span> {<br> <span class="hljs-keyword">return</span> <span class="hljs-number">2</span>;<br> }<br><br> <span class="hljs-meta">@Override</span><br> <span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title function_">init</span><span class="hljs-params">(TransformContext context)</span> {<br><br> }<br><br> <span class="hljs-meta">@Override</span><br> <span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title function_">doFilter</span><span class="hljs-params">(TransformFilterChain chain,</span><br><span class="hljs-params"> TransformContext context)</span> {<br> <span class="hljs-type">String</span> <span class="hljs-variable">compressionCode</span> <span class="hljs-operator">=</span> context.getCompressionCode();<br> <span class="hljs-type">UrlMap</span> <span class="hljs-variable">urlMap</span> <span class="hljs-operator">=</span> urlMapCacheManager.loadUrlMapCacheByCompressCode(compressionCode);<br> context.setTransformStatus(TransformStatus.TRANSFORM_FAIL);<br> <span class="hljs-keyword">if</span> (Objects.nonNull(urlMap)) {<br> context.setTransformStatus(TransformStatus.TRANSFORM_SUCCESS);<br> context.setParam(TransformContext.PARAM_LONG_URL_KEY, urlMap.getLongUrl());<br> context.setParam(TransformContext.PARAM_SHORT_URL_KEY, urlMap.getShortUrl());<br> chain.doFilter(context);<br> } <span class="hljs-keyword">else</span> {<br> log.warn(<span class="hljs-string">"压缩码[{}]不存在或异常,终止TransformFilterChain执行,并且重定向到404页面......"</span>, compressionCode);<br> <span class="hljs-keyword">throw</span> <span class="hljs-keyword">new</span> <span class="hljs-title class_">RedirectToErrorPageException</span>(String.format(<span class="hljs-string">"[c:%s]"</span>, compressionCode));<br> }<br> }<br>}<br></code></pre></td></tr></table></figure><p>所有的服务内拦截器的<code>scope</code>都是<code>prototype</code>,意味着每次初始化拦截器链都会重新创建对应的<code>Bean</code>。</p><h3 id="主控制器实现"><a href="#主控制器实现" class="headerlink" title="主控制器实现"></a>主控制器实现</h3><p>因为<code>octopus</code>只做短链访问的入口,后台管理的功能交给另外的服务实现,此服务只有一个控制器,控制器里面只有一个方法:</p><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br></pre></td><td class="code"><pre><code class="hljs java"><span class="hljs-meta">@RequiredArgsConstructor</span><br><span class="hljs-meta">@RestController</span><br><span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">OctopusController</span> {<br><br> <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> UrlMapService urlMapService;<br><br> <span class="hljs-meta">@GetMapping(path = "/{compressionCode}")</span><br> <span class="hljs-meta">@ResponseStatus(HttpStatus.FOUND)</span><br> <span class="hljs-keyword">public</span> Mono<Void> <span class="hljs-title function_">dispatch</span><span class="hljs-params">(<span class="hljs-meta">@PathVariable(name = "compressionCode")</span> String compressionCode, ServerWebExchange exchange)</span> {<br> <span class="hljs-type">ServerHttpRequest</span> <span class="hljs-variable">request</span> <span class="hljs-operator">=</span> exchange.getRequest();<br> <span class="hljs-type">TransformContext</span> <span class="hljs-variable">context</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">new</span> <span class="hljs-title class_">TransformContext</span>();<br> context.setCompressionCode(compressionCode);<br> context.setParam(TransformContext.PARAM_SERVER_WEB_EXCHANGE_KEY, exchange);<br> <span class="hljs-keyword">if</span> (Objects.nonNull(request.getRemoteAddress())) {<br> context.setParam(TransformContext.PARAM_REMOTE_HOST_NAME_KEY, request.getRemoteAddress().getHostName());<br> }<br> <span class="hljs-type">HttpHeaders</span> <span class="hljs-variable">httpHeaders</span> <span class="hljs-operator">=</span> request.getHeaders();<br> Set<String> headerNames = httpHeaders.keySet();<br> <span class="hljs-keyword">if</span> (!CollectionUtils.isEmpty(headerNames)) {<br> headerNames.forEach(headerName -> {<br> <span class="hljs-type">String</span> <span class="hljs-variable">headerValue</span> <span class="hljs-operator">=</span> httpHeaders.getFirst(headerName);<br> context.setHeader(headerName, headerValue);<br> });<br> }<br> <span class="hljs-comment">// 处理转换</span><br> urlMapService.processTransform(context);<br> <span class="hljs-comment">// 这里有一个技巧,flush用到的线程和内部逻辑处理的线程不是同一个线程,所有要用到TTL -- 和Servlet容器不一样,所以目前写的比较别扭</span><br> <span class="hljs-keyword">return</span> Mono.fromRunnable(context.getRedirectAction());<br> }<br>}<br></code></pre></td></tr></table></figure><p>这个主控制的分发压缩码方法只负责封装参数调用服务内部拦截器链进行后续的处理。然后添加一个全局的异常处理器,把所有的异常或者非法操作引导到一个自定义的<code>404</code>页面(甚至可以在上面挂一点广告):</p><p><img src="https://throwable-blog-1256189093.cos.ap-guangzhou.myqcloud.com/202012/o-c-g-w-11.png"></p><h3 id="Dubbo契约实现"><a href="#Dubbo契约实现" class="headerlink" title="Dubbo契约实现"></a>Dubbo契约实现</h3><p><code>octopus-contract</code>是一个完全独立的模块,甚至可以说它是一个完全独立的项目,主要作用是提供契约<code>API</code>,让其他服务引入,让<code>octopus-server</code>模块进行实现。契约接口定义如下:</p><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs java"><span class="hljs-keyword">public</span> <span class="hljs-keyword">interface</span> <span class="hljs-title class_">OctopusApi</span> {<br><br> Response<CreateUrlMapResponse> <span class="hljs-title function_">createUrlMap</span><span class="hljs-params">(CreateUrlMapRequest request)</span>;<br>}<br></code></pre></td></tr></table></figure><p>基于<code>Dubbo</code>的实现如下:</p><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><code class="hljs java"><span class="hljs-meta">@DubboService(retries = -1)</span><br><span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">DefaultOctopusApi</span> <span class="hljs-keyword">implements</span> <span class="hljs-title class_">OctopusApi</span> {<br><br> <span class="hljs-meta">@Autowired</span><br> <span class="hljs-keyword">private</span> UrlMapService urlMapService;<br><br> <span class="hljs-meta">@Value("${default.octopus.domain}")</span><br> <span class="hljs-keyword">private</span> String domain;<br><br> <span class="hljs-meta">@Override</span><br> <span class="hljs-keyword">public</span> Response<CreateUrlMapResponse> <span class="hljs-title function_">createUrlMap</span><span class="hljs-params">(CreateUrlMapRequest request)</span> {<br> <span class="hljs-type">UrlMap</span> <span class="hljs-variable">urlMap</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">new</span> <span class="hljs-title class_">UrlMap</span>();<br> urlMap.setUrlStatus(UrlMapStatus.AVAILABLE.getValue());<br> urlMap.setLongUrl(request.getLongUrl());<br> urlMap.setDescription(request.getDescription());<br> <span class="hljs-type">String</span> <span class="hljs-variable">shortUrl</span> <span class="hljs-operator">=</span> urlMapService.createUrlMap(domain, urlMap);<br> <span class="hljs-keyword">return</span> Response.succeed(<span class="hljs-keyword">new</span> <span class="hljs-title class_">CreateUrlMapResponse</span>(request.getRequestId(), shortUrl));<br> }<br>}<br></code></pre></td></tr></table></figure><p>生产中契约模块做了比较多的特性定制,这里只举一个简单实现的例子。</p><h2 id="部署架构"><a href="#部署架构" class="headerlink" title="部署架构"></a>部署架构</h2><p><code>octopus</code>服务集群单独部署,支持无限添加节点,部署架构的关键在于网络架构,内层的负载均衡使用了<code>Nginx</code>,最外层的负载均衡使用了云负载均衡,如阿里云的<code>SLB</code>或者<code>UCloud</code>的<code>ULB</code>。添加或者移除短链域名,关键在于修改<code>Nginx</code>的配置。基本的架构如下:</p><p><img src="https://throwable-blog-1256189093.cos.ap-guangzhou.myqcloud.com/202012/o-c-g-w-19.png"></p><p>只要保证负载均衡池指向<code>octopus</code>集群即可,短链的域名可能动态增删,操作完之后只需要<code>nginx -s -reload</code>刷新一下<code>Nginx</code>的配置即可。</p><h2 id="使用短链服务"><a href="#使用短链服务" class="headerlink" title="使用短链服务"></a>使用短链服务</h2><p>先在<code>domain_conf</code>表写入一条本地域名和端口的数据:</p><p><img src="https://throwable-blog-1256189093.cos.ap-guangzhou.myqcloud.com/202012/o-c-g-w-14.png"></p><p>编写一个集成测试类,创建一个短链映射:</p><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><code class="hljs java"><span class="hljs-meta">@Slf4j</span><br><span class="hljs-meta">@SpringBootTest(classes = OctopusServerApplication.class, properties = "spring.profiles.active=local")</span><br><span class="hljs-meta">@RunWith(SpringRunner.class)</span><br><span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">UrlMapServiceTest</span> {<br><br> <span class="hljs-meta">@Autowired</span><br> <span class="hljs-keyword">private</span> UrlMapService urlMapService;<br><br> <span class="hljs-meta">@Test</span><br> <span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title function_">createUrlMap</span><span class="hljs-params">()</span> {<br> <span class="hljs-type">String</span> <span class="hljs-variable">domain</span> <span class="hljs-operator">=</span> <span class="hljs-string">"localhost:9099"</span>;<br> <span class="hljs-type">UrlMap</span> <span class="hljs-variable">urlMap</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">new</span> <span class="hljs-title class_">UrlMap</span>();<br> urlMap.setUrlStatus(UrlMapStatus.AVAILABLE.getValue());<br> urlMap.setLongUrl(<span class="hljs-string">"https://throwx.cn/2020/08/24/canal-ha-cluster-guide"</span>);<br> urlMap.setDescription(<span class="hljs-string">"测试短链"</span>);<br> <span class="hljs-type">String</span> <span class="hljs-variable">url</span> <span class="hljs-operator">=</span> urlMapService.createUrlMap(domain, urlMap);<br> log.info(<span class="hljs-string">"生成的短链:{}"</span>, url);<br> }<br>}<br><span class="hljs-comment">// 某次执行的结果如下:生成的短链:http://localhost:9099/Myt8qW</span><br></code></pre></td></tr></table></figure><p>基于本地配置启动项目,然后访问<code>http://localhost:9099/Myt8qW</code>,效果如下:</p><p><img src="https://throwable-blog-1256189093.cos.ap-guangzhou.myqcloud.com/202012/o-c-g-w-15.gif"></p><p>日志如下:</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs shell">[2020-12-27 19:29:22,285] [INFO] cn.throwx.octopus.server.application.consumer.TransformEventConsumer [org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#0-1] [1c603903-e8d8-4072-aa97-6abf614b9411] - 接收到URL转换事件,内容:{"clientIp":"192.168.211.113","compressionCode":"Myt8qW","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36","cookieValue":"Webstorm-734c3b68=9b8b3560-41f5-478a-93d0-b02128b1022f; __gads=ID=28121bd829638f67-2286c86e7fc400d3:T=1604132165:RT=1604132165:S=ALNI_MbsMQROv6swaC8kf4ux2suZm_GZXA; Hm_lvt_4df6907aebab752244c3ca1432b4ff57=1605930058,1607228133","timestamp":1609068562262,"shortUrlString":"http://localhost:9099/Myt8qW","longUrlString":"https://throwx.cn/2020/08/24/canal-ha-cluster-guide","transformStatusValue":3}......<br>[2020-12-27 19:29:22,353] [INFO] cn.throwx.octopus.server.application.consumer.TransformEventConsumer [org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#0-1] [1c603903-e8d8-4072-aa97-6abf614b9411] - 记录URL转换事件完成......<br></code></pre></td></tr></table></figure><p>查看转换事件记录表的数据:</p><p><img src="https://throwable-blog-1256189093.cos.ap-guangzhou.myqcloud.com/202012/o-c-g-w-16.png"></p><h2 id="后续功能迭代"><a href="#后续功能迭代" class="headerlink" title="后续功能迭代"></a>后续功能迭代</h2><p>前期方案有一个安全隐患:没有做压缩码的白名单,容易被基于短链域名,伪造压缩码拼接短链接的方法进行攻击。解决方案是在容器的拦截器链添加或者替换一个基于布隆过滤器实现的压缩码(短链接)白名单拦截器,这样就能在前期拦截了绝大部分恶意伪造的压缩码,让极少量命中了错误率部分的恶意压缩码流到后面的处理逻辑中进行判断。另外,可以引入<code>Caffeine</code>配合<code>Redis</code>做两级缓存,毕竟本地缓存的速度更快。</p><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><p><code>octopus</code>初版是一个<code>4</code>小时紧急迭代出来的一个微型项目,到现在为止更新了很多次,生产上已经基本稳定。文中描述的版本是公司生产版本的移植版,精简了大量代码同时移除了一些业务耦合的设计,这里把源码开放出来,让一些有可能用到短链服务的场景提供一个可参考但尽可能不要复制的解决思路。源码仓库:</p><ul><li><code>Gitee</code>:<code>https://gitee.com/throwableDoge/octopus</code></li><li><code>Github</code>:<code>https://github.com/zjcscut/octopus</code></li></ul><p>代码都在<code>main</code>分支。</p><h2 id="彩蛋"><a href="#彩蛋" class="headerlink" title="彩蛋"></a>彩蛋</h2><p>最近鸽了很长一段时间,原因是年底比较多业务功能迭代,内部的一个标签服务重构花了大量时间。笔者一直在摸索着通过”分片”、”异步”等等思想,在时间可控的前提下,对小数据量(百万和千万级别)前提下,通过常用的关系型数据库、缓存、消息队列等非大数据平台架构替代实现《用户画像方法论与工程化解决方案》里面提到的解决方案。</p><p><img src="https://throwable-blog-1256189093.cos.ap-guangzhou.myqcloud.com/202012/o-c-g-w-17.png"></p><p>标签服务内部的代号是”千寻”,取自于辛弃疾《青玉案元夕》中的”众里寻他千百度”,项目名来自于宫崎骏的动漫《千与千寻》的女主千寻(千寻罗马音是<code>chihiro</code>):</p><p><img src="https://throwable-blog-1256189093.cos.ap-guangzhou.myqcloud.com/202012/o-c-g-w-18.png"></p><p>待后面项目上线一段时间稳定后,应该会抽时间写一个系列谈谈怎么不用大数据那套体系,提供用户画像的工程化解决方案。</p><p>(本文完 c-10-d e-a-20201227)</p>]]></content>
<summary type="html"><p>一直想实现一个私有化的短链接服务,后来发现了这个项目,避免了重复造轮子。</p></summary>
<category term="Developer" scheme="https://awaw.cc/categories/Developer/"/>
<category term="OpenSource" scheme="https://awaw.cc/tags/OpenSource/"/>
<category term="Java" scheme="https://awaw.cc/tags/Java/"/>
<category term="ShortLink" scheme="https://awaw.cc/tags/ShortLink/"/>
</entry>
<entry>
<title>🌈Awesome Software / Service</title>
<link href="https://awaw.cc/post/awesome/"/>
<id>https://awaw.cc/post/awesome/</id>
<published>2023-07-06T16:00:00.000Z</published>
<updated>2024-03-26T09:33:47.693Z</updated>
<content type="html"><![CDATA[<p>分享一些好用的软件、服务和开源项目等,传递开源与分享精神。纯粹的分享与推荐,放心食用。</p><span id="more"></span><div class="note note-primary"> <p>开源项目仅提供代码仓库地址,若有官方网站亦会标明。内容排序方式为项目名称英文字母顺序。</p><p>目前收录总数:35</p><ul><li>桌面应用:19</li><li>服务应用:12</li><li>开源字体:4</li></ul> </div><div class="note note-info"> <p>最近更新 2024.03.26</p><ul><li>新增 <a href="#CUE-Splitter-%E9%9F%B3%E9%A2%91%E5%88%86%E8%BD%A8">CUE Splitter(音频分轨)</a></li><li>新增 <a href="#FreeControl-%E7%94%A8%E7%94%B5%E8%84%91%E6%8E%A7%E5%88%B6%E6%89%8B%E6%9C%BA">FreeControl(用电脑控制手机)</a></li><li>新增 <a href="#LocalSend-%E5%B1%80%E5%9F%9F%E7%BD%91%E6%96%87%E4%BB%B6%E4%BC%A0%E8%BE%93">LocalSend(局域网文件传输)</a></li><li>新增 <a href="#MusicTag-%E9%9F%B3%E4%B9%90%E6%A0%87%E7%AD%BE%E7%BC%96%E8%BE%91%E5%99%A8">MusicTag(音乐标签编辑器)</a></li><li>新增 <a href="#ruffle-Flash%E6%92%AD%E6%94%BE%E5%99%A8">ruffle(Flash播放器)</a></li><li>新增 <a href="#ScreenToGif-%E5%BD%95%E5%88%B6GIF">ScreenToGif(录制GIF)</a></li></ul> </div><h1 id="桌面应用"><a href="#桌面应用" class="headerlink" title="桌面应用"></a>桌面应用</h1><p>桌面应用是一种在桌面操作系统上运行的应用程序,例如 Windows、macOS 和 Linux。与 Web 应用程序和移动应用程序不同,桌面应用程序通常是使用本地编程语言和工具(例如 C++、C#、Java 或 Swift)开发的,并且可以直接在计算机上运行,而无需通过浏览器或移动设备。桌面应用程序可以具有许多不同的功能,例如文本编辑器、图形设计工具、游戏、办公套件、音频/视频编辑器等。与 Web 应用程序相比,桌面应用程序通常具有更高的性能和更好的用户体验,因为它们可以直接访问计算机的资源,例如文件系统、网络和硬件设备。同时,桌面应用程序也需要更多的开发和维护工作,因为它们需要考虑不同操作系统和硬件设备的兼容性问题。</p><h2 id="7z-压缩工具"><a href="#7z-压缩工具" class="headerlink" title="7z - 压缩工具"></a>7z - 压缩工具</h2><p>7-Zip是一个具有高压缩比的文件归档器。</p><blockquote><p>7-Zip is a file archiver with a high compression ratio.</p></blockquote><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/awesome/7z.png"></p><span><a class="btn" href="https://7-zip.org/" title="访问官网"><i class='fa fa-home fa-lg'></i> 官方网站</a><a class="btn" href="https://github.com/sparanoid/7z" title="访问代码仓库"><i class='fa fa-github fa-lg'></i> GitHub</a></span><h2 id="CUE-Splitter-音频分轨"><a href="#CUE-Splitter-音频分轨" class="headerlink" title="CUE Splitter - 音频分轨"></a>CUE Splitter - 音频分轨</h2><p>CUE Splitter是一个免费的工具,它可以将一个大的音频文件,主要是一张专辑或一个汇编,分割成相对独立的曲目,使用相关的“CUE表”文件中包含的信息。有时你可以找到一个大的压缩音乐文件(例如MP3,APE,FLAC,OGG,WAV,WMA等)。配备了一个小的.cue文本文件,其中包含有关内部轨道的所有细节:标题,艺术家,持续时间等。通常这对夫妇的文件是由像EAC(精确音频复制),foobar2000,BPM Studio,GoldWave或类似的程序生成的。使用CUE Splitter,您可以分割音乐曲目,而无需解码/重新编码任何音频数据!此外,输出文件自动命名使用用户定义的“文件掩码”字符串和他们的标签填充信息提取的“提示表”。</p><blockquote><p>CUE Splitter is a freeware tool that splits a single big audio file, mostly an album or a compilation, into the relative individual tracks, using the informations contained in the associated “CUE Sheet” file. Sometimes you can find a big compressed music file (for example MP3, APE, FLAC, OGG, WAV, WMA, etc.) equipped with a small .cue text file that contains all the details about internal tracks: title, artist, duration, and so on. Usually these couple of files are generated by programs like EAC (Exact Audio Copy), foobar2000, BPM Studio, GoldWave or similar. With CUE Splitter you can split music tracks without decode/re-encode any audio data! Moreover output files are automatically named using a user-defined “file mask” string and their tags are filled with informations extracted from “CUE Sheet”.</p></blockquote><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/awesome/cue-splitter.png"></p><span><a class="btn" href="https://cue-splitter.medieval.it/" title="访问官网"><i class='fa fa-home fa-lg'></i> 官方网站</a></span><h2 id="DBeaver-数据库工具"><a href="#DBeaver-数据库工具" class="headerlink" title="DBeaver - 数据库工具"></a>DBeaver - 数据库工具</h2><p>DBeaver Community是一个免费的跨平台数据库工具,面向开发人员、数据库管理员、分析师和所有使用数据的人。它支持所有流行的SQL数据库,如MySQL,MariaDB,PostgreSQL,SQLite,Apache Family等。</p><blockquote><p>DBeaver Community is a free cross-platform database tool for developers, database administrators, analysts, and everyone working with data. It supports all popular SQL databases like MySQL, MariaDB, PostgreSQL, SQLite, Apache Family, and more.</p></blockquote><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/awesome/dbeaver.png"></p><p><a class="btn" href="https://dbeaver.io/" title="访问官网"><i class='fa fa-home fa-lg'></i> 官方网站</a></p><h2 id="Everything-本地搜索引擎"><a href="#Everything-本地搜索引擎" class="headerlink" title="Everything - 本地搜索引擎"></a>Everything - 本地搜索引擎</h2><p>Everything 是 Windows 上一款搜索引擎,它能够基于文件名快速定文件和文件夹位置。</p><blockquote><p>Everything is search engine that locates files and folders by filename instantly for Windows.</p></blockquote><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/awesome/everything.png"></p><p>可以快速搜索本地任何角落,以便找到自己想要的内容,装机必备。Everything也衍生了一些工具,比如uTools中的本地搜索依赖Everything才能更高效的工作,又如<a href="https://github.com/srwi/EverythingToolbar">EverythingToolbar</a>可以把Everything集成到任务栏中。</p><p><a class="btn" href="https://www.voidtools.com/" title="访问官网"><i class='fa fa-home fa-lg'></i> 官方网站</a></p><h2 id="FreeControl-用电脑控制手机"><a href="#FreeControl-用电脑控制手机" class="headerlink" title="FreeControl - 用电脑控制手机"></a>FreeControl - 用电脑控制手机</h2><p>在PC上控制Android设备。</p><blockquote><p>Control Android devices on PC.</p></blockquote><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/free-control/1.7.0_1.png"></p><span><a class="btn" href="https://awaw.cc/post/free-control" title="访问官网"><i class='fa fa-home fa-lg'></i> 官方网站</a><a class="btn" href="https://github.com/pdone/FreeControl" title="访问代码仓库"><i class='fa fa-github fa-lg'></i> GitHub</a></span><h2 id="HiBit-Uninstaller-卸载工具"><a href="#HiBit-Uninstaller-卸载工具" class="headerlink" title="HiBit Uninstaller - 卸载工具"></a>HiBit Uninstaller - 卸载工具</h2><p>HiBit Uninstaller是卸载Windows软件的完美解决方案,使您可以使用其简单且用户友好的界面快速,完全地卸载程序。</p><blockquote><p>HiBit Uninstaller is the perfect solution for uninstalling Windows software, allowing you to uninstall programs quickly and completely using its simple and user friendly interface.</p></blockquote><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/awesome/hibit.png?boxshadow=none"></p><p><a class="btn" href="https://www.hibitsoft.ir/Uninstaller.html" title="访问官网"><i class='fa fa-home fa-lg'></i> 官方网站</a></p><h2 id="LocalSend-局域网文件传输"><a href="#LocalSend-局域网文件传输" class="headerlink" title="LocalSend - 局域网文件传输"></a>LocalSend - 局域网文件传输</h2><p>AirDrop的开源跨平台替代品。</p><blockquote><p>An open-source cross-platform alternative to AirDrop.</p></blockquote><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/awesome/local-send.png"></p><span><a class="btn" href="https://localsend.org/" title="访问官网"><i class='fa fa-home fa-lg'></i> 官方网站</a><a class="btn" href="https://github.com/localsend/localsend" title="访问代码仓库"><i class='fa fa-github fa-lg'></i> GitHub</a></span><h2 id="Motrix-下载工具"><a href="#Motrix-下载工具" class="headerlink" title="Motrix - 下载工具"></a>Motrix - 下载工具</h2><p>一款全能的下载工具。支持下载 HTTP、FTP、BT、磁力链接等资源。</p><blockquote><p>A full-featured download manager. Support downloading HTTP, FTP, BitTorrent, Magnet, etc.</p></blockquote><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/awesome/motrix.png"></p><p>这个软件内置了<a href="#aria2-%E4%B8%8B%E8%BD%BD%E5%B7%A5%E5%85%B7">Aria2 - 下载工具</a>,如果懒得折腾aria2,用这个软件就够用了。如果有NAS设备,推荐使用Docker部署aria2服务,让下载这件事与PC解耦。</p><span><a class="btn" href="https://motrix.app/" title="访问官网"><i class='fa fa-home fa-lg'></i> 官方网站</a><a class="btn" href="https://github.com/agalwood/Motrix" title="访问代码仓库"><i class='fa fa-github fa-lg'></i> GitHub</a></span><h2 id="MusicPlayer2-音乐播放器"><a href="#MusicPlayer2-音乐播放器" class="headerlink" title="MusicPlayer2 - 音乐播放器"></a>MusicPlayer2 - 音乐播放器</h2><p>MusicPlayer2是一款集音乐播放、歌词显示、格式转换等众多功能于一身的音频播放软件。支持歌词显示、歌词卡拉OK样式显示、歌词在线下载、歌词编辑、歌曲标签识别、专辑封面显示、专辑封面在线下载、频谱分析、音效设置、任务栏缩略图按钮、主题颜色、格式转换等功能。播放内核为BASS音频库(V2.4)。播放器支持几乎所有常见的音频格式。</p><blockquote><p>MusicPlayer2 is an audio player whitch supports music collection playback, lyrics display, format conversion and many other functions. It supports lyrics display, lyrics karaoke style display, lyrics online download, lyrics editing, song tag recognition, album cover display, album cover online download, spectrum analysis, sound effect settings, taskbar thumbnail button, theme color, format conversion and other functions. The playback kernel is the Bass Audio Library (V2.4). The player supports almost all common audio formats.</p></blockquote><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/awesome/music-player.png"></p><p><a class="btn" href="https://github.com/zhongyang219/MusicPlayer2" title="访问代码仓库"><i class='fa fa-github fa-lg'></i> GitHub</a></p><h2 id="MusicTag-音乐标签编辑器"><a href="#MusicTag-音乐标签编辑器" class="headerlink" title="MusicTag - 音乐标签编辑器"></a>MusicTag - 音乐标签编辑器</h2><p>『音乐标签』是一款可以编辑歌曲的标题、专辑、艺术家等信息的应用程序,支持FLAC, APE, WAV, AIFF, WV, TTA, MP3, MP4, M4A, OGG, MPC, OPUS, WMA, DSF, DFF等音频格式,绿色无广告,无任何功能限制。</p><blockquote><p>MusicTag is an application that can edit the title, album, artist information of the song, supporting FLAC, APE, WAV, AIFF, WV, TTA, MP3, MP4, M4A, OGG, MPC, OPUS, WMA, DSF, DFF, etc. audio formats, green and without ads, no function restrictions.</p></blockquote><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/awesome/music-tag.png"></p><p><a class="btn" href="https://www.cnblogs.com/vinlxc/p/11347744.html" title="访问官网"><i class='fa fa-home fa-lg'></i> 官方网站</a></p><h2 id="ruffle-Flash播放器"><a href="#ruffle-Flash播放器" class="headerlink" title="ruffle - Flash播放器"></a>ruffle - Flash播放器</h2><p>用Rust编写的Flash Player模拟器。</p><blockquote><p>A Flash Player emulator written in Rust.</p></blockquote><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/awesome/ruffle.png"></p><span><a class="btn" href="https://ruffle.rs/" title="访问官网"><i class='fa fa-home fa-lg'></i> 官方网站</a><a class="btn" href="https://github.com/ruffle-rs/ruffle" title="访问代码仓库"><i class='fa fa-github fa-lg'></i> GitHub</a></span><h2 id="ScreenToGif-录制GIF"><a href="#ScreenToGif-录制GIF" class="headerlink" title="ScreenToGif - 录制GIF"></a>ScreenToGif - 录制GIF</h2><p>ScreenToGif允许您录制屏幕的选定区域,编辑并保存为gif或视频。</p><blockquote><p>🎬 ScreenToGif allows you to record a selected area of your screen, edit and save it as a gif or video.</p></blockquote><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/awesome/screen-to-gif.png"></p><span><a class="btn" href="https://www.screentogif.com/" title="访问官网"><i class='fa fa-home fa-lg'></i> 官方网站</a><a class="btn" href="https://github.com/NickeManarin/ScreenToGif" title="访问代码仓库"><i class='fa fa-github fa-lg'></i> GitHub</a></span><h2 id="Snipaste-截图贴图工具"><a href="#Snipaste-截图贴图工具" class="headerlink" title="Snipaste - 截图贴图工具"></a>Snipaste - 截图贴图工具</h2><p>Snipaste 是一个简单但强大的贴图工具,同时也可以执行截屏、标注等功能。</p><blockquote><p>Snipaste is a simple but powerful snipping tool, and also allows you to pin the screenshot back onto the screen.</p></blockquote><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/awesome/snipaste.png?boxshadow=none"></p><p><a class="btn" href="https://zh.snipaste.com/" title="访问官网"><i class='fa fa-home fa-lg'></i> 官方网站</a></p><h2 id="TrafficMonitor-硬件资源监控"><a href="#TrafficMonitor-硬件资源监控" class="headerlink" title="TrafficMonitor - 硬件资源监控"></a>TrafficMonitor - 硬件资源监控</h2><p>一款用于Windows平台的网速监控悬浮窗软件,可以显示当前网速、CPU及内存利用率,支持嵌入到任务栏显示,支持更换皮肤、历史流量统计等功能。</p><blockquote><p>TrafficMonitor is a network monitoring software with floating window feature for Windows. It displays the current internet speed and CPU and RAM usage. There are also other capabilities like an embedded display in the taksbar, changeable display skins, and historical traffic statistics.</p></blockquote><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/awesome/traffic-monitor1.gif"></p><p><a class="btn" href="https://github.com/zhongyang219/TrafficMonitor" title="访问代码仓库"><i class='fa fa-github fa-lg'></i> GitHub</a></p><h2 id="TranslucentTB-任务栏透明"><a href="#TranslucentTB-任务栏透明" class="headerlink" title="TranslucentTB - 任务栏透明"></a>TranslucentTB - 任务栏透明</h2><p>一个轻量级的实用程序,使Windows任务栏半透明/透明。</p><blockquote><p>A lightweight utility that makes the Windows taskbar translucent/transparent.</p></blockquote><div class="group-image-container"><div class="group-image-row"><div class="group-image-wrap"><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/awesome/translucent-tb1.png"></div><div class="group-image-wrap"><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/awesome/translucent-tb2.png"></div></div></div><p><a class="btn" href="https://github.com/TranslucentTB/TranslucentTB" title="访问代码仓库"><i class='fa fa-github fa-lg'></i> GitHub</a></p><h2 id="uTools-效率工具平台"><a href="#uTools-效率工具平台" class="headerlink" title="uTools - 效率工具平台"></a>uTools - 效率工具平台</h2><p>uTools 是一个极简、插件化的现代桌面软件,通过自由选配丰富的插件,打造得心应手的工具集合。</p><div id="dplayer1" class="dplayer hexo-tag-dplayer-mark" style="margin-bottom: 20px;"></div><script>(function(){var player = new DPlayer({"container":document.getElementById("dplayer1"),"mutex":true,"video":{"url":"https://res.u-tools.cn/website/v4/utools-4-video.mp4","pic":"https://res.u-tools.cn/website/v4/poster.png"}});window.dplayers||(window.dplayers=[]);window.dplayers.push(player);})()</script><p>非常好用的一款跨平台工具集合,虽然有会员订阅服务(主要是提供了数据备份、多端同步等功能),但无需订阅即可使用大部分功能,满足大部分用户的需要。</p><p><a class="btn" href="https://u.tools/" title="访问官网"><i class='fa fa-home fa-lg'></i> 官方网站</a></p><p><strong>插件推荐</strong></p><p>易翻翻译、ctool、颜色助手、OCR、文件批量重命名、hosts、二维码、本地搜索、文本代码对比、json编辑器、变量命名方式、正则编辑器、编码小助手、计算稿纸。</p><h2 id="Visual-Studio-Code-编辑器"><a href="#Visual-Studio-Code-编辑器" class="headerlink" title="Visual Studio Code - 编辑器"></a>Visual Studio Code - 编辑器</h2><p>Visual Studio Code是一个轻量级但功能强大的源代码编辑器,可在桌面上运行,适用于Windows、macOS和Linux。它内置了对JavaScript,TypeScript和Node.js的支持,并拥有丰富的其他语言和运行时扩展生态系统(如C++,C#,Java,Python,PHP,Go,.NET)。</p><blockquote><p>Visual Studio Code is a lightweight but powerful source code editor which runs on your desktop and is available for Windows, macOS and Linux. It comes with built-in support for JavaScript, TypeScript and Node.js and has a rich ecosystem of extensions for other languages and runtimes (such as C++, C#, Java, Python, PHP, Go, .NET). </p></blockquote><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/awesome/vs-code.png"></p><span><a class="btn" href="https://code.visualstudio.com/" title="访问官网"><i class='fa fa-home fa-lg'></i> 官方网站</a><a class="btn" href="https://github.com/Microsoft/vscode" title="访问代码仓库"><i class='fa fa-github fa-lg'></i> GitHub</a></span><h2 id="VLC-媒体播放器"><a href="#VLC-媒体播放器" class="headerlink" title="VLC - 媒体播放器"></a>VLC - 媒体播放器</h2><p>VLC 是一款自由、开源的跨平台多媒体播放器及框架,可播放大多数多媒体文件,以及 DVD、音频 CD、VCD 及各类流媒体协议。</p><blockquote><p>VLC is a free and open source cross-platform multimedia player and framework that plays most multimedia files as well as DVDs, Audio CDs, VCDs, and various streaming protocols.</p></blockquote><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/awesome/vlc.png"></p><span><a class="btn" href="https://www.videolan.org/" title="访问官网"><i class='fa fa-home fa-lg'></i> 官方网站</a><a class="btn" href="https://github.com/videolan/vlc" title="访问代码仓库"><i class='fa fa-github fa-lg'></i> GitHub</a></span><h2 id="WindTerm-跨平台终端"><a href="#WindTerm-跨平台终端" class="headerlink" title="WindTerm - 跨平台终端"></a>WindTerm - 跨平台终端</h2><p>一款专业的跨平台SSH/Sftp/Shell/Telnet/Serial终端。</p><blockquote><p>A professional cross-platform SSH/Sftp/Shell/Telnet/Serial terminal.</p></blockquote><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/awesome/wind-term.png"></p><span><a class="btn" href="https://kingtoolbox.github.io/" title="访问官网"><i class='fa fa-home fa-lg'></i> 官方网站</a><a class="btn" href="https://github.com/kingToolbox/WindTerm" title="访问代码仓库"><i class='fa fa-github fa-lg'></i> GitHub</a></span><!-- # 移动应用 --><h1 id="服务应用"><a href="#服务应用" class="headerlink" title="服务应用"></a>服务应用</h1><p>服务应用是一种在后台运行的应用程序,通常在服务器或云平台上运行。与桌面应用程序和移动应用程序不同,服务应用程序通常不直接与用户交互,而是在后台执行某些任务。服务应用程序可以具有许多不同的功能,例如数据处理、文件传输、消息传递、安全认证等。服务应用程序通常使用 Web 技术(例如 RESTful API、SOAP、JSON 等)作为与其他应用程序和服务进行交互的接口。服务应用程序可以在云平台上扩展和自动扩展,以满足不断变化的需求。同时,服务应用程序也需要更多的开发和维护工作,因为它们需要考虑安全性、可伸缩性、可靠性等问题。</p><p>推荐部署在云服务器上或有公网IP的NAS设备上,推荐使用常见的Linux发行版,如CentOS、Ubuntu、Debian。</p><p>推荐使用 <code>docker-compose</code> 方式部署便于维护和迁移,但部署方式不限于此,文中推荐的大部分服务都提供了跨平台、跨架构支持,更多部署方式请参考官方网站或GitHub。</p><h2 id="acme-sh-自动化证书"><a href="#acme-sh-自动化证书" class="headerlink" title="acme.sh - 自动化证书"></a>acme.sh - 自动化证书</h2><p>一个实现ACME客户端协议的纯Unix shell脚本。</p><blockquote><p>A pure Unix shell script implementing ACME client protocol.</p></blockquote><p>本站的证书由Let’s Encrypt签发,因为托管在Vercel和Netlify中,服务商会定期进行续签,个人无需维护。</p><p>但个人服务器的证书就需要自己维护了,这时就要用到acme.sh。具体用法参考以下内容以及项目官网文档。</p><ul><li><a href="https://www.ssl.com/zh-CN/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98/%E4%BB%80%E4%B9%88%E6%98%AFacme%E5%8D%8F%E8%AE%AE/">什么是acme协议?</a></li><li><a href="https://blog.freessl.cn/acme-quick-start/">ACME v2证书自动化快速入门</a></li></ul><span><a class="btn" href="https://acme.sh/" title="访问官网"><i class='fa fa-home fa-lg'></i> 官方网站</a><a class="btn" href="https://github.com/acmesh-official/acme.sh" title="访问代码仓库"><i class='fa fa-github fa-lg'></i> GitHub</a></span><h2 id="AdGuard-Home-私人DNS"><a href="#AdGuard-Home-私人DNS" class="headerlink" title="AdGuard Home - 私人DNS"></a>AdGuard Home - 私人DNS</h2><p>AdGuard Home 是一款全网广告拦截与反跟踪软件。在您将其安装完毕后,它将保护您所有家用设备,同时您不再需要安装任何客户端软件。随着物联网与连接设备的兴起,掌控您自己的整个网络环境变得越来越重要。</p><blockquote><p>AdGuard Home is a network-wide software for blocking ads & tracking. After you set it up, it’ll cover ALL your home devices, and you don’t need any client-side software for that. With the rise of Internet-Of-Things and connected devices, it becomes more and more important to be able to control your whole network.</p></blockquote><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/awesome/adgh.png"></p><span><a class="btn" href="https://adguard.com/adguard-home.html" title="访问官网"><i class='fa fa-home fa-lg'></i> 官方网站</a><a class="btn" href="https://github.com/AdguardTeam/AdguardHome" title="访问代码仓库"><i class='fa fa-github fa-lg'></i> GitHub</a></span><h2 id="Alist-多存储整合"><a href="#Alist-多存储整合" class="headerlink" title="Alist - 多存储整合"></a>Alist - 多存储整合</h2><p>一个支持多存储的文件列表程序,由 Gin 和 Solidjs 驱动。</p><blockquote><p>A file list program that supports multiple storage, powered by Gin and Solidjs.</p></blockquote><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/awesome/alist.png"></p><p>非常好用的一款存储整合服务,可以把各种存储整合在一个服务中,提供了友好的操作界面,支持超多网盘和其他存储方式、在线预览、离线下载、推送到Aira下载等。</p><span><a class="btn" href="https://alist.nn.ci/" title="访问官网"><i class='fa fa-home fa-lg'></i> 官方网站</a><a class="btn" href="https://github.com/alist-org/alist" title="访问代码仓库"><i class='fa fa-github fa-lg'></i> GitHub</a></span><h2 id="aria2-下载工具"><a href="#aria2-下载工具" class="headerlink" title="aria2 - 下载工具"></a>aria2 - 下载工具</h2><p>aria 2是一个轻量级的多协议和多源,跨平台下载工具,在命令行操作。它支持HTTP/HTTPS,FTP,SFTP,BitTorrent和Metalink。</p><blockquote><p>aria2 is a lightweight multi-protocol & multi-source, cross platform download utility operated in command-line. It supports HTTP/HTTPS, FTP, SFTP, BitTorrent and Metalink.</p></blockquote><p>如果没有自己的服务器,建议使用<a href="#Motrix-%E4%B8%8B%E8%BD%BD%E5%B7%A5%E5%85%B7">Motrix - 下载工具</a>简单易用。</p><p><a class="btn" href="https://github.com/aria2/aria2" title="访问代码仓库"><i class='fa fa-github fa-lg'></i> GitHub</a></p><h2 id="AriaNg-aria2-WebUI"><a href="#AriaNg-aria2-WebUI" class="headerlink" title="AriaNg - aria2 WebUI"></a>AriaNg - aria2 WebUI</h2><p>AriaNg,一个让aria2更容易使用的现代化Web前端。</p><blockquote><p>AriaNg, a modern web frontend making aria2 easier to use.</p></blockquote><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/awesome/aria-ng.png"></p><p>只是一个静态的网站,可以直接双击index.html运行,也可以托管到免费的平台中使用,如GitHub Pages、Vercel等。或者使用我托管在Netlify中的<a href="https://aria.awaw.cc/">AriaNg</a>。</p><p><a class="btn" href="https://github.com/mayswind/AriaNg" title="访问代码仓库"><i class='fa fa-github fa-lg'></i> GitHub</a></p><h2 id="ddns-go-动态域名解析"><a href="#ddns-go-动态域名解析" class="headerlink" title="ddns-go - 动态域名解析"></a>ddns-go - 动态域名解析</h2><p>自动获得你的公网 IPv4 或 IPv6 地址,并解析到对应的域名服务。</p><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/awesome/ddns-go.png"></p><p>一般家用宽带没有固定的公网IP,但目前大部分地区运行商都提供了动态公网IPv6,此时就需要动态域名解析了。实现原理很简单,定时获取本机公网IP,调用域名服务商API将值更新上去,但是这个项目已经很完善,没必要重复造轮子,完全满足需求。</p><p><a class="btn" href="https://github.com/jeessy2/ddns-go" title="访问代码仓库"><i class='fa fa-github fa-lg'></i> GitHub</a></p><h2 id="Heimdall-导航页"><a href="#Heimdall-导航页" class="headerlink" title="Heimdall - 导航页"></a>Heimdall - 导航页</h2><p>应用程序仪表板和启动器。</p><blockquote><p>An Application dashboard and launcher.</p></blockquote><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/awesome/heimdall2.png"></p><p>简约大气的导航页,且可以对一些支持的应用提供扩展功能,如监控Portainer容器状态、aria2下载任务状态等。</p><p><a class="btn" href="https://github.com/linuxserver/Heimdall" title="访问代码仓库"><i class='fa fa-github fa-lg'></i> GitHub</a></p><h2 id="Home-Assistant-家庭自动化平台"><a href="#Home-Assistant-家庭自动化平台" class="headerlink" title="Home Assistant - 家庭自动化平台"></a>Home Assistant - 家庭自动化平台</h2><p>将本地控制和隐私放在首位的开源家庭自动化。由世界各地的社区成员和DIY爱好者组成的团体提供强力支持。</p><blockquote><p>Open source home automation that puts local control and privacy first. Powered by a worldwide community of tinkerers and DIY enthusiasts.</p></blockquote><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/awesome/home-assistant.png"></p><p>目前智能家居品牌很多,大部分品牌都在搞自家生态,想使用一个APP控制家里所有设备,就需要用到Home Assistant将不同品牌智能设备接入统一管理。</p><span><a class="btn" href="https://www.home-assistant.io/" title="访问官网"><i class='fa fa-home fa-lg'></i> 官方网站</a><a class="btn" href="https://github.com/home-assistant" title="访问代码仓库"><i class='fa fa-github fa-lg'></i> GitHub</a></span><h2 id="Qwerty-Learner-记单词"><a href="#Qwerty-Learner-记单词" class="headerlink" title="Qwerty Learner - 记单词"></a>Qwerty Learner - 记单词</h2><p>为键盘工作者设计的单词记忆与英语肌肉记忆锻炼软件。</p><blockquote><p>Words learning and English muscle memory training software designed for keyboard workers.</p></blockquote><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/awesome/qwerty-learner.png"></p><span><a class="btn" href="https://qwerty.kaiyi.cool/" title="访问官网"><i class='fa fa-home fa-lg'></i> 官方网站</a><a class="btn" href="https://github.com/RealKai42/qwerty-learner" title="访问代码仓库"><i class='fa fa-github fa-lg'></i> GitHub</a></span><h2 id="RustDesk-远程桌面"><a href="#RustDesk-远程桌面" class="headerlink" title="RustDesk - 远程桌面"></a>RustDesk - 远程桌面</h2><p>RustDesk 是一个功能齐全的开源远程控制替代方案,可通过最少的配置实现自托管和安全性。</p><blockquote><p>RustDesk is a full-featured open source remote control alternative for self-hosting and security with minimal configuration.</p></blockquote><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/awesome/rustdesk.png?boxshadow=none"></p><p>建议使用拥有公网IP的设备自建服务器(无公网IP可以通过<a href="#Tailscale-%E5%BC%82%E5%9C%B0%E7%BB%84%E7%BD%91">Tailscale - 异地组网</a>后使用),我的NAS只有公网IPv6,上行带宽30Mbps,使用体验比ToDesk免费版好很多,已经逐渐放弃使用ToDesk。</p><span><a class="btn" href="https://rustdesk.com/" title="访问官网"><i class='fa fa-home fa-lg'></i> 官方网站</a><a class="btn" href="https://github.com/rustdesk/rustdesk" title="访问代码仓库"><i class='fa fa-github fa-lg'></i> GitHub</a></span><h2 id="Tailscale-异地组网"><a href="#Tailscale-异地组网" class="headerlink" title="Tailscale - 异地组网"></a>Tailscale - 异地组网</h2><p>Tailscale是一种VPN服务,可以让您在世界任何地方安全、轻松地访问您拥有的设备和应用程序。它使用开源<a href="https://www.wireguard.com/">WireGuard</a>协议实现加密的点对点连接,这意味着只有您的专用网络上的设备才能相互通信。</p><blockquote><p>Tailscale is a VPN service that makes the devices and applications you own accessible anywhere in the world, securely and effortlessly. It enables encrypted point-to-point connections using the open source <a href="https://www.wireguard.com/">WireGuard</a> protocol, which means only devices on your private network can communicate with each other.</p></blockquote><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/awesome/tailscale.png?boxshadow=none"></p><p>当用手机或电脑处于无IPv6环境时,可以通过Tailscale来访问家中的NAS服务器。需要注意的是,组网的双方其中有一方的<a href="https://www.zhihu.com/question/38729355">NAT</a>是Symmetric(对称型),就会打洞失败,流量会经转公共DERP服务器,速度很慢。同类型的产品还有Zerotier,个人感觉没有Tailscale好用。</p><span><a class="btn" href="https://tailscale.com/" title="访问官网"><i class='fa fa-home fa-lg'></i> 官方网站</a><a class="btn" href="https://github.com/tailscale/tailscale" title="访问代码仓库"><i class='fa fa-github fa-lg'></i> GitHub</a></span><h2 id="Uptime-Kuma-服务状态监控"><a href="#Uptime-Kuma-服务状态监控" class="headerlink" title="Uptime Kuma - 服务状态监控"></a>Uptime Kuma - 服务状态监控</h2><p>一个精美的自托管监控工具。</p><blockquote><p>A fancy self-hosted monitoring tool.</p></blockquote><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/awesome/uptime-kuma.jpg"></p><p>可以用于监控并记录一些可访问服务的运行状态,如docker容器、网站等,也可以用作导航页(Heimdall平替)。除了管理页面,还可以创建允许匿名访问的状态页面(<a href="https://u.awaw.cc/status/me">示例 - IPv6 Only</a>)。</p><p><a class="btn" href="https://github.com/louislam/uptime-kuma" title="访问代码仓库"><i class='fa fa-github fa-lg'></i> GitHub</a></p><h1 id="开源字体"><a href="#开源字体" class="headerlink" title="开源字体"></a>开源字体</h1><p>开源字体是指那些可以在版权允许的情况下免费或低成本向公众提供使用和修改的字体。这些字体的设计文件(源代码)通常是公开的,任何人在遵循相关许可协议的前提下都可以下载、使用,并在需要时进行修改和再分发。</p><h2 id="阿里巴巴普惠体"><a href="#阿里巴巴普惠体" class="headerlink" title="阿里巴巴普惠体"></a>阿里巴巴普惠体</h2><p>阿里巴巴普惠体是一套全球永久免费正版商用的字体家族。</p><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/awesome/alibaba-font.png"></p><p>阿里巴巴普惠体3.0为一套符合新国家标准GB18030-2022的简体中文字符集,包含GB18030-2022强制规范三个实现级别:实现级别1+实现级别2标准规格的7字重、实现级别3标准规格的Regular 单一字重。7字重共194,460个全形汉字。包含拉丁字母、希腊字母、西里尔字母、标点符号。</p><p><a class="btn" href="https://fonts.alibabagroup.com/#/font" title="访问官网"><i class='fa fa-home fa-lg'></i> 官方网站</a></p><h2 id="Cascadia-Code"><a href="#Cascadia-Code" class="headerlink" title="Cascadia Code"></a>Cascadia Code</h2><p>这是一种有趣的新型等宽字体,包含编程连字,旨在增强 Windows 终端的现代外观和感觉。</p><blockquote><p>This is a fun, new monospaced font that includes programming ligatures and is designed to enhance the modern look and feel of the Windows Terminal.</p></blockquote><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/awesome/cascadia-code2.png"></p><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/awesome/cascadia-code3.png"></p><p><a class="btn" href="https://github.com/microsoft/cascadia-code" title="访问代码仓库"><i class='fa fa-github fa-lg'></i> GitHub</a></p><h2 id="Monaspace"><a href="#Monaspace" class="headerlink" title="Monaspace"></a>Monaspace</h2><p>一个创新的代码字体超家族。</p><blockquote><p>An innovative superfamily of fonts for code</p></blockquote><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/awesome/monaspace.png"></p><span><a class="btn" href="https://monaspace.githubnext.com/" title="访问官网"><i class='fa fa-home fa-lg'></i> 官方网站</a><a class="btn" href="https://github.com/githubnext/monaspace" title="访问代码仓库"><i class='fa fa-github fa-lg'></i> GitHub</a></span><h2 id="霞鹜文楷"><a href="#霞鹜文楷" class="headerlink" title="霞鹜文楷"></a>霞鹜文楷</h2><p>一款开源中文字体,基于 FONTWORKS 出品字体 Klee One 衍生。</p><blockquote><p>An open-source Chinese font derived from Fontworks’ Klee One.</p></blockquote><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/awesome/lxgw1.png"></p><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/awesome/lxgw2.png"></p><p><a class="btn" href="https://github.com/lxgw/LxgwWenKai" title="访问代码仓库"><i class='fa fa-github fa-lg'></i> GitHub</a></p>]]></content>
<summary type="html"><p>分享一些好用的软件、服务和开源项目等,传递开源与分享精神。纯粹的分享与推荐,放心食用。</p></summary>
<category term="Share" scheme="https://awaw.cc/categories/Share/"/>
<category term="Software" scheme="https://awaw.cc/tags/Software/"/>
<category term="Service" scheme="https://awaw.cc/tags/Service/"/>
<category term="Awesome" scheme="https://awaw.cc/tags/Awesome/"/>
</entry>
<entry>
<title>道路勘测设计学习笔记</title>
<link href="https://awaw.cc/post/learn-road-design/"/>
<id>https://awaw.cc/post/learn-road-design/</id>
<published>2023-03-31T16:00:00.000Z</published>
<updated>2023-07-04T04:07:05.632Z</updated>
<content type="html"><![CDATA[<h2 id="道路平面设计"><a href="#道路平面设计" class="headerlink" title="道路平面设计"></a>道路平面设计</h2><h3 id="公路"><a href="#公路" class="headerlink" title="公路"></a>公路</h3><p>一种带状的空间结构物,它的中线是一条空间曲线。</p><span id="more"></span><h3 id="公路平面图"><a href="#公路平面图" class="headerlink" title="公路平面图"></a>公路平面图</h3><p>公路在水平面上的投影图。</p><h3 id="公路纵断面图"><a href="#公路纵断面图" class="headerlink" title="公路纵断面图"></a>公路纵断面图</h3><p>通过公路中线的竖向剖面图。</p><h3 id="公路横断面图"><a href="#公路横断面图" class="headerlink" title="公路横断面图"></a>公路横断面图</h3><p>公路上任一点垂直于路中线的竖向剖面图。</p><h3 id="缓和曲线"><a href="#缓和曲线" class="headerlink" title="缓和曲线"></a>缓和曲线</h3><p>从曲率半径为无穷大逐渐向某一定值变化的曲线。</p><h3 id="缓和曲线的作用"><a href="#缓和曲线的作用" class="headerlink" title="缓和曲线的作用"></a>缓和曲线的作用</h3><ul><li>缓和曲率——使曲率连续变化</li><li>缓和超高——使横向坡度连续变化</li><li>缓和加宽——使车道加宽连续变化</li></ul><h3 id="缓和曲线产生的效果"><a href="#缓和曲线产生的效果" class="headerlink" title="缓和曲线产生的效果"></a>缓和曲线产生的效果</h3><ul><li>曲率连续变化,便于车辆驾驶</li><li>离心加速度连续变化,没有突变,乘客感觉舒适</li><li>超高横坡度及加宽逐渐变化,行车更加稳定</li><li>与圆曲线配合,增加线形美观</li></ul><h3 id="缓和曲线的线型"><a href="#缓和曲线的线型" class="headerlink" title="缓和曲线的线型"></a>缓和曲线的线型</h3><p>回旋线、三次抛物线、七次四项式型、半波正弦型、一波正弦型、双纽线、多心复曲线。</p><h3 id="回旋线"><a href="#回旋线" class="headerlink" title="回旋线"></a>回旋线</h3><p>半径从无穷大一直变化到一定设计值的一段弧线。回旋线是曲率随着曲线长度成比例变化的曲线。公路、匝道常用的缓和曲线是回旋线,也叫放射螺旋线。回旋线不仅线形美观,而且与驾驶员匀速转动方向盘由圆曲线驶入直线或者由直线驶入圆曲线的轨迹线相符合。</p><h3 id="弯道的超高"><a href="#弯道的超高" class="headerlink" title="弯道的超高"></a>弯道的超高</h3><p>为了减小横向力,一般圆曲线段上路面做成外侧高、内侧低的单向内倾横坡。</p><h3 id="圆曲线最小半径"><a href="#圆曲线最小半径" class="headerlink" title="圆曲线最小半径"></a>圆曲线最小半径</h3><p>最大横向力系数μ和超高横坡度值i为主要影响因素。</p><h3 id="横向力系数μ的确定"><a href="#横向力系数μ的确定" class="headerlink" title="横向力系数μ的确定"></a>横向力系数μ的确定</h3><ul><li>按汽车行驶稳定性</li><li>按行车舒适性</li><li>按燃料和轮胎消耗</li></ul><h3 id="极限最小半径"><a href="#极限最小半径" class="headerlink" title="极限最小半径"></a>极限最小半径</h3><p>各级公路对按计算行车速度行驶的车辆,能保证其安全行车的最小允许半径。</p><h3 id="一般最小半径"><a href="#一般最小半径" class="headerlink" title="一般最小半径"></a>一般最小半径</h3><p>对按计算行车速度行驶的车辆能保证其安全性和舒适性,它是通常情况下推荐采用的最小半径值。</p><h3 id="不设超高的最小半径"><a href="#不设超高的最小半径" class="headerlink" title="不设超高的最小半径"></a>不设超高的最小半径</h3><p>当平曲线半径较大时,离心力的影响就较小,路面摩阻力就可以保证汽车有足够的稳定性,这是就可以不设置超高,而允许设置与直线段上相同的双向横坡的路拱形式。</p><h3 id="平曲线的极限最小长度"><a href="#平曲线的极限最小长度" class="headerlink" title="平曲线的极限最小长度"></a>平曲线的极限最小长度</h3><p>根据经验,为使驾驶员在曲线行驶时不感到方向盘操作的困难,按6s的通过时间设置曲线长度是适宜的。</p><h3 id="平曲线的一般最小长度"><a href="#平曲线的一般最小长度" class="headerlink" title="平曲线的一般最小长度"></a>平曲线的一般最小长度</h3><p>各级公路的平曲线,一般情况下应能够设置两段缓和曲线(或超高、加宽缓和段)及一段圆曲线。在平面设计中,为便于驾驶操作和行车安全与舒适,汽车在任何一种曲线形式上行驶的时间都不应短于3s。</p><h3 id="公路转角小于7°时的平曲线长度"><a href="#公路转角小于7°时的平曲线长度" class="headerlink" title="公路转角小于7°时的平曲线长度"></a>公路转角小于7°时的平曲线长度</h3><p>为避免造成视觉错误、保证行车安全,在进行平面设计时应避免设置小于7°的转角。当条件限制不得已时,在偏角小于7°的转角处应设置较长的平曲线,其长度应大于标准中规定值。</p><h3 id="加宽"><a href="#加宽" class="headerlink" title="加宽"></a>加宽</h3><p>汽车在曲线上行驶所占路面宽度就比在直线上的大,为保证行车的安全,曲线段的路面应做适当的加宽。</p><h3 id="加宽缓和段"><a href="#加宽缓和段" class="headerlink" title="加宽缓和段"></a>加宽缓和段</h3><p>为避免路面宽度从直线段上的正常宽度到圆曲线段的加宽断面的突变,在直线和圆曲线之间应设置一段路面宽度的渐变段,这一渐变段称为加宽缓和段。</p><h3 id="超高"><a href="#超高" class="headerlink" title="超高"></a>超高</h3><p>《标准》规定,当圆曲线半径小于不设超高的最小半径时,应设置超高(即将曲线部分的路面做成向内侧倾斜的单向横坡)。</p><h3 id="超高缓和段"><a href="#超高缓和段" class="headerlink" title="超高缓和段"></a>超高缓和段</h3><p>直线段上的双向横坡逐渐过渡到圆曲线段上的超高横坡的过渡段。</p><h3 id="视距"><a href="#视距" class="headerlink" title="视距"></a>视距</h3><p>驾驶员在行驶过程中的通视距离。</p><h3 id="行车视距"><a href="#行车视距" class="headerlink" title="行车视距"></a>行车视距</h3><p>为了保证行车安全,驾驶员应能看到前方一定距离的公路以及公路上的障碍物或迎面的来车,以便及时刹车或绕过。汽车在这段时间里沿公路路面行驶的必要安全距离,称为行车视距。</p><h3 id="停车视距"><a href="#停车视距" class="headerlink" title="停车视距"></a>停车视距</h3><p>指驾驶员看到障碍物后立即采取制动措施,至汽车在障碍物前停下来的最小安全距离。由三部分距离组成:</p><ul><li>驾驶员反应时间内行驶的距离</li><li>制动距离,指制动生效到汽车完全停止时行驶的距离</li><li>安全距离</li></ul><h3 id="会车视距"><a href="#会车视距" class="headerlink" title="会车视距"></a>会车视距</h3><p>对于不设分隔带的双车道公路,车辆在行驶中,驾驶员趋向于沿路面中心行驶,一旦发现前方来车,双方驾驶员各自把车辆驶回到自己的车道上,使两车安全交会。为保证双向行驶的双车道公路的行车安全,公路平面应能保证会车视距要求,即满足双向行驶的汽车能在同一车道上及时刹车所需的最短距离。由三部分距离组成:</p><ul><li>双方驾驶员反应时间内汽车所行驶的距离</li><li>双方汽车的制动距离</li><li>安全距离</li></ul><h3 id="超车视距"><a href="#超车视距" class="headerlink" title="超车视距"></a>超车视距</h3><p>《标准》规定,对于双向行驶的双车道公路,根据需要,应结合地形设置保证具有超车视距的路段,以使汽车行驶时安全超越前车。</p><h3 id="超车视距全程可分为四个阶段"><a href="#超车视距全程可分为四个阶段" class="headerlink" title="超车视距全程可分为四个阶段"></a>超车视距全程可分为四个阶段</h3><ul><li>加速行驶距离</li><li>超车汽车在对向车道上行驶的距离</li><li>超车汽车从开始加速到超车完成的时间内,对向车道汽车的行驶距离</li><li>超车完成时,超车汽车与对向汽车之间的安全距离</li></ul><h3 id="平面线形"><a href="#平面线形" class="headerlink" title="平面线形"></a>平面线形</h3><p>直线、圆曲线、回旋线</p><h3 id="平面线形要素组合"><a href="#平面线形要素组合" class="headerlink" title="平面线形要素组合"></a>平面线形要素组合</h3><ul><li>基本型——圆曲线两端用回旋线与直线相连接的组合型式称为基本型</li><li>S型——用两个反向回旋线连接两个反向圆曲线的组合型式称为S型</li><li>卵型——用一个回旋线连接两个同向圆曲线的组合型式称为卵型</li><li>凸型——在两个同向可旋线间不插入圆曲线而径相衔接的组合型式称为凸型</li><li>复合型——两个以上同向回旋线在曲率相等处直接连接的组合型式称为复合型</li><li>C型——两同向回旋线在曲率为零处径相衔接的组合型式称为C型</li></ul><h2 id="道路纵断面设计"><a href="#道路纵断面设计" class="headerlink" title="道路纵断面设计"></a>道路纵断面设计</h2><h3 id="坡线和竖曲线"><a href="#坡线和竖曲线" class="headerlink" title="坡线和竖曲线"></a>坡线和竖曲线</h3><p>公路在纵断面上由不同的上坡段、下坡段(统称坡段)和平顺连接相邻两坡段的竖向曲线段组成,即公路路线在纵断面上是一条有起伏的空间线,其基本线形由坡线和竖曲线组成。</p><h3 id="地面标高"><a href="#地面标高" class="headerlink" title="地面标高"></a>地面标高</h3><p>公路中线各桩点的地面高程称地面标高。</p><h3 id="地面线"><a href="#地面线" class="headerlink" title="地面线"></a>地面线</h3><p>各点地面标高的连线称地面线,它是一条不规则的空间折线。</p><h3 id="设计标高"><a href="#设计标高" class="headerlink" title="设计标高"></a>设计标高</h3><p>路基边缘点的高程称设计标高(公路改建时可用原路中线标高为设计标高)。</p><h3 id="设计线"><a href="#设计线" class="headerlink" title="设计线"></a>设计线</h3><p>各桩点设计标高的连线称纵断面设计线,简称设计线,它是经过技术上、经济上和美学上比较后确定的,由坡线和竖曲线组成的空间线。地面线和设计线是纵断面图的两条主要线。</p><h3 id="填挖高"><a href="#填挖高" class="headerlink" title="填挖高"></a>填挖高</h3><p>同一桩点的设计标高与地面标高的差值称施工标高,又称填挖高。</p><h3 id="填方路段、挖方路段"><a href="#填方路段、挖方路段" class="headerlink" title="填方路段、挖方路段"></a>填方路段、挖方路段</h3><ul><li>若该桩点的施工标高为“+”,即设计标高大于地面标高,这样的路基通常为填筑而成的路堤,这样的路段即填方路段</li><li>若施工标高为“-”则为路堑,这样的路段即挖方路段。</li></ul><h3 id="纵坡"><a href="#纵坡" class="headerlink" title="纵坡"></a>纵坡</h3><p>坡线的坡度即路线纵向坡度,简称纵坡。</p><h3 id="转坡点"><a href="#转坡点" class="headerlink" title="转坡点"></a>转坡点</h3><p>相邻两坡线的交点称转坡点,在转坡点处应设竖曲线。转坡点前后两坡线坡度之差称转坡角。</p><h3 id="高原折减"><a href="#高原折减" class="headerlink" title="高原折减"></a>高原折减</h3><p>在海拔3000m以上的高原地区,因空气稀薄,不但会使发动机的功率减少,还使水箱的水容易沸腾而降低冷却系统的功能,因此应将《标准》规定的最大纵坡予以折减。</p><h3 id="平均纵坡"><a href="#平均纵坡" class="headerlink" title="平均纵坡"></a>平均纵坡</h3><p>由若干坡段组成的路段,其两端点的高差与路段长度之比称平均纵坡。</p><h3 id="合成坡度"><a href="#合成坡度" class="headerlink" title="合成坡度"></a>合成坡度</h3><p>路线纵向坡度与横向坡度的矢量和称合成坡度。</p><h2 id="道路横断面设计"><a href="#道路横断面设计" class="headerlink" title="道路横断面设计"></a>道路横断面设计</h2><h3 id="横断面"><a href="#横断面" class="headerlink" title="横断面"></a>横断面</h3><p>公路中线法线方向的剖面图称公路横断面图,简称横断面,亦即由公路横断面设计的主要组成部分与横断地面线所围成的面,它反映了公路在横剖面上的组成情况、形状和几何尺寸,是公路路线设计的重要内容之一。公路横断面设计的主要组成部分是路面和路基,路面包括行车道、变速车道、紧急停车带、爬坡道等,路基包括路肩、边坡、边沟、护坡道、截水沟等。</p><h3 id="路基横断面"><a href="#路基横断面" class="headerlink" title="路基横断面"></a>路基横断面</h3><p>为设计计算方便,通常用两侧路肩边缘点的联线,来代替路面、路肩等的横坡折线,即横断面的顶面可绘成一条直线。这样将顶面用一直线绘成的横断面即路基横断面。</p><h3 id="路拱"><a href="#路拱" class="headerlink" title="路拱"></a>路拱</h3><p>为了排除路面的雨水,将路面做成中间高两边低的拱起形状称路拱。</p><h3 id="路拱横坡"><a href="#路拱横坡" class="headerlink" title="路拱横坡"></a>路拱横坡</h3><p>路面中线点与路面边缘点的高差,与其水平距离的比值称路拱横坡,以%表示。</p><h3 id="分隔带"><a href="#分隔带" class="headerlink" title="分隔带"></a>分隔带</h3><p>沿道路纵向设置分隔行车道用的带状设施称分隔带,位于中线位置上的称中间带,位于中线两侧的称外侧分隔带。</p><h3 id="路肩"><a href="#路肩" class="headerlink" title="路肩"></a>路肩</h3><p>位于行车道外缘至路基边缘具有一定宽度的带状设施称路肩,它是路面的侧向支撑,可供临时停车和人行通行,还可使驾驶员有安全感。</p><h3 id="路基宽度"><a href="#路基宽度" class="headerlink" title="路基宽度"></a>路基宽度</h3><p>在一个横断面上,两侧路肩边缘点间的宽度称路基宽度。</p><h3 id="路基边坡"><a href="#路基边坡" class="headerlink" title="路基边坡"></a>路基边坡</h3><p>为保证路基的稳定,把路基两侧做成具有一定坡度的坡面称路基边坡。</p><h3 id="边沟"><a href="#边沟" class="headerlink" title="边沟"></a>边沟</h3><p>为汇集并排除路面、路肩和边玻的水流,在路基两侧设置的水沟称边沟。一般情况下,挖方路基和填土高度小于0.5m的矮路堤,均应设置边沟。</p><h3 id="边沟的型式"><a href="#边沟的型式" class="headerlink" title="边沟的型式"></a>边沟的型式</h3><p>通常有梯形、矩形和三角形三种,视上质情况和施工方法而定,一般土质路基采用梯形,岩石路基可采用三角形或矩形,机械化施工时多采用三角形。</p><h3 id="截水沟"><a href="#截水沟" class="headerlink" title="截水沟"></a>截水沟</h3><p>为拦截并排除流向路基的地面水流,以避免对路基边坡冲刷等而设置的排水沟称截水沟。</p><h3 id="免费运距"><a href="#免费运距" class="headerlink" title="免费运距"></a>免费运距</h3><p>土方作业包括挖、装、运卸等工序,在某一一特定距离内,只按挖方数计价而不计算运费,这一特定距离称免费运距。</p><h3 id="平均运距"><a href="#平均运距" class="headerlink" title="平均运距"></a>平均运距</h3><p>土石方调配时,从挖方体积重心到填方体积重心的距离称平均运距,为简化设计计算,通常平均运距按挖方路段中心至填方路段中心的距离计。</p><h2 id="道路交叉设计"><a href="#道路交叉设计" class="headerlink" title="道路交叉设计"></a>道路交叉设计</h2><h3 id="冲突点"><a href="#冲突点" class="headerlink" title="冲突点"></a>冲突点</h3><p>当行车方向互相交叉时,可能发生碰撞的地点称为冲突点。</p><h3 id="交织点"><a href="#交织点" class="headerlink" title="交织点"></a>交织点</h3><p>当车辆从不同方向驶向同一方向或成锐角相交时,可能产生挤撞的地点称为交织点。</p><h3 id="加铺转角"><a href="#加铺转角" class="headerlink" title="加铺转角"></a>加铺转角</h3><p>以圆曲线构成宽来连接交叉公路的路基和路面,称为加铺转角式交叉。</p><h3 id="立体交叉"><a href="#立体交叉" class="headerlink" title="立体交叉"></a>立体交叉</h3><p>公路与公路或铁路在不同高度上互相交义的型式称立体交叉。</p><h3 id="立体交叉形式"><a href="#立体交叉形式" class="headerlink" title="立体交叉形式"></a>立体交叉形式</h3><ul><li>分离式</li><li>互通式</li></ul><h3 id="互通式立体交叉的类型"><a href="#互通式立体交叉的类型" class="headerlink" title="互通式立体交叉的类型"></a>互通式立体交叉的类型</h3><ul><li>苜蓿叶形</li><li>部分苜蓿叶形</li><li>Y形</li><li>喇叭形</li><li>菱形</li><li>环形</li><li>定向式立体交叉</li></ul><h3 id="匝道的作用"><a href="#匝道的作用" class="headerlink" title="匝道的作用"></a>匝道的作用</h3><p>匝道是连接立体交叉上、下路线的交换道,一般在匝道上既有弯道又有坡度。</p><h3 id="匝道的类型"><a href="#匝道的类型" class="headerlink" title="匝道的类型"></a>匝道的类型</h3><ul><li>右转弯匝道——直接从主干线右转弯驶出的匝道</li><li>环形匝道——这是一种左转弯行驶的匝道形式。车辆由干线的右侧出口,并以约270°角向右转弯,而完成左转弯的行驶</li><li>定向式匝道——由干线左侧出口,以较短捷的路线直接驶入连接的干线,从而完成左转弯的匝道</li><li>迁回式匝道——由干线右侧出口,暂时偏离所去方向,以迂回绕行的方式完成左转弯的匝道</li></ul><h3 id="变速车道"><a href="#变速车道" class="headerlink" title="变速车道"></a>变速车道</h3><p>车辆由高速公路驶入匝道(或车速低的道路)须减速,反之,车辆由匝道(或车速低的道路)驶进高速公路须加速。为了调整车速而设置在高速公路与匝道间的减速或加速车道,称为变速车道。</p>]]></content>
<summary type="html"><h2 id="道路平面设计"><a href="#道路平面设计" class="headerlink" title="道路平面设计"></a>道路平面设计</h2><h3 id="公路"><a href="#公路" class="headerlink" title="公路"></a>公路</h3><p>一种带状的空间结构物,它的中线是一条空间曲线。</p></summary>
<category term="Share" scheme="https://awaw.cc/categories/Share/"/>
<category term="Note" scheme="https://awaw.cc/tags/Note/"/>
<category term="RoadDesign" scheme="https://awaw.cc/tags/RoadDesign/"/>
</entry>
<entry>
<title>桥梁设计学习笔记</title>
<link href="https://awaw.cc/post/learn-bridge-design/"/>
<id>https://awaw.cc/post/learn-bridge-design/</id>
<published>2023-03-31T16:00:00.000Z</published>
<updated>2023-07-04T04:07:09.846Z</updated>
<content type="html"><![CDATA[<h2 id="桥梁定义"><a href="#桥梁定义" class="headerlink" title="桥梁定义"></a>桥梁定义</h2><p>桥梁是道路路线遇到江河湖泊、山谷深沟以及其他线路(铁路或公路)等障碍时,为了保持道路的连续性而专门建造的人工构造物。桥梁既要保证桥上的交通运行,也要保证桥下水流的宣泄、船只的通航或车辆的通行。</p><span id="more"></span><h2 id="桥梁基本组成"><a href="#桥梁基本组成" class="headerlink" title="桥梁基本组成"></a>桥梁基本组成</h2><h3 id="上部结构"><a href="#上部结构" class="headerlink" title="上部结构"></a>上部结构</h3><h4 id="桥跨结构"><a href="#桥跨结构" class="headerlink" title="桥跨结构"></a>桥跨结构</h4><p>线路跨越障碍(如江河、山谷或其他线路等)的结构物。</p><h3 id="下部结构"><a href="#下部结构" class="headerlink" title="下部结构"></a>下部结构</h3><h4 id="桥墩"><a href="#桥墩" class="headerlink" title="桥墩"></a>桥墩</h4><p>是在河中或岸上支承桥跨结构的结构物。</p><ul><li>轻型桥墩——盖梁、系梁、立柱</li><li>重力式桥墩——墩帽、墩身</li></ul><h4 id="桥台"><a href="#桥台" class="headerlink" title="桥台"></a>桥台</h4><p>设在桥的两端;一边与路堤相接,以防止路堤滑塌;另一边则支承桥跨结构的端部。为保护桥台和路堤填土,桥台两侧常做锥形护坡、挡土墙等防护工程。</p><h4 id="墩台基础"><a href="#墩台基础" class="headerlink" title="墩台基础"></a>墩台基础</h4><p>是保证桥梁墩台安全并将荷载传至地基的结构。</p><ul><li>扩大基础</li><li>桩基础承台</li><li>桩柱式</li></ul><h3 id="支座系统"><a href="#支座系统" class="headerlink" title="支座系统"></a>支座系统</h3><p>在桥跨结构与桥墩或桥台的支承处所设置的传力装置。它不仅要传递很大的荷载,并且还要保证桥跨结构能产生一定的变位。</p><ul><li>橡胶支座</li><li>支座垫石</li></ul><h3 id="附属设施"><a href="#附属设施" class="headerlink" title="附属设施"></a>附属设施</h3><h4 id="桥面铺装"><a href="#桥面铺装" class="headerlink" title="桥面铺装"></a>桥面铺装</h4><p>或称行车道铺装,铺装的平整性、耐磨性、不翘曲、不渗水是保证行车舒适的关键。</p><h4 id="排水防水"><a href="#排水防水" class="headerlink" title="排水防水"></a>排水防水</h4><p>应能迅速排除桥面积水,并使渗水的可能性降至最小限度。</p><h4 id="栏杆"><a href="#栏杆" class="headerlink" title="栏杆"></a>栏杆</h4><p>既是保证安全的构造措施,又是有利于观赏的最佳装饰件。</p><h4 id="伸缩缝"><a href="#伸缩缝" class="headerlink" title="伸缩缝"></a>伸缩缝</h4><p>桥跨上部结构之间或桥跨上部结构与桥台端墙之间所设的缝隙,以保证结构在各种因素作用下的变位。为使行车顺适、不顺簸,桥面上要设置伸缩缝构造。</p><h4 id="灯光照明"><a href="#灯光照明" class="headerlink" title="灯光照明"></a>灯光照明</h4><h2 id="桥梁分类"><a href="#桥梁分类" class="headerlink" title="桥梁分类"></a>桥梁分类</h2><h3 id="按使用性质分类"><a href="#按使用性质分类" class="headerlink" title="按使用性质分类"></a>按使用性质分类</h3><p>公路桥、铁路桥、公铁两用桥、城市道路桥(含立交桥)、人行桥、机耕桥、管线桥、渡槽桥。</p><h3 id="按桥身结构材料分类"><a href="#按桥身结构材料分类" class="headerlink" title="按桥身结构材料分类"></a>按桥身结构材料分类</h3><p>木桥、圬工桥(砖、石、砼砌块桥)、钢筋砼桥、预应力砼桥、钢桥。</p><h3 id="按单孔跨径、多孔跨径总长分类"><a href="#按单孔跨径、多孔跨径总长分类" class="headerlink" title="按单孔跨径、多孔跨径总长分类"></a>按单孔跨径、多孔跨径总长分类</h3><table><thead><tr><th align="center">分类</th><th align="center">多孔跨径总长L(m)</th><th align="center">单孔跨径L<sub>k</sub>(m)</th></tr></thead><tbody><tr><td align="center">特大桥</td><td align="center">L > 1000</td><td align="center">L<sub>k</sub> > 150</td></tr><tr><td align="center">大桥</td><td align="center">100 ≤ L ≤ 1000</td><td align="center">40 ≤ L<sub>k</sub> < 150</td></tr><tr><td align="center">中桥</td><td align="center">30 < L < 100</td><td align="center">20 ≤ L<sub>k</sub> < 40</td></tr><tr><td align="center">小桥</td><td align="center">8 ≤ L ≤ 30</td><td align="center">5 ≤ L<sub>k</sub> < 20</td></tr><tr><td align="center">涵洞</td><td align="center">L < 8</td><td align="center">L<sub>k</sub> < 5</td></tr></tbody></table><h3 id="按桥跨结构分类"><a href="#按桥跨结构分类" class="headerlink" title="按桥跨结构分类"></a>按桥跨结构分类</h3><p>梁式桥(简支梁、连续梁、伸臂梁)、桁架桥、拱桥、刚构桥、悬索桥、斜拉桥等。此外,还有浮桥、漫水桥、活动桥等。</p><h2 id="桥梁类型和受力特点"><a href="#桥梁类型和受力特点" class="headerlink" title="桥梁类型和受力特点"></a>桥梁类型和受力特点</h2><table><thead><tr><th align="center">类型</th><th align="left">受力特点</th><th align="left">建造材料</th></tr></thead><tbody><tr><td align="center">梁式桥</td><td align="left">竖向荷载作用下无水平反力,梁内产生的弯矩最大</td><td align="left">抗弯能力强(钢、木、钢筋砼、预应力钢筋砼)</td></tr><tr><td align="center">拱式桥</td><td align="left">主要承重结构是拱圈或拱助,在竖向荷载作用下,墩台承受水平推力,承重结构以受压为主</td><td align="left">抗压能力强的圬工材料(砖、石、砼)和钢筋砼</td></tr><tr><td align="center">刚架桥</td><td align="left">梁和柱的连接处具有很大的刚性,在竖向荷载作用下,梁部主要受弯,在柱脚处也具有水平反力,受力状态介于梁桥和拱桥之间</td><td align="left">施工比较困难,用普通钢筋砼修建,梁柱刚结处易产生裂缝</td></tr><tr><td align="center">悬索桥</td><td align="left">以悬索为主要承重结构,结构自重较轻,构造简单、受力明确,能以较小的建筑高度经济合理地修建大跨度桥</td><td align="left">结构自重轻,刚度差,在车辆荷载和风荷载作用下有较大的变形和振动</td></tr><tr><td align="center">组合体系桥</td><td align="left">由几个不同体系的结构组合而成,常见的有:连续刚构,梁、拱组合等;斜拉桥也是组合体系桥的一种</td><td align="left">——</td></tr></tbody></table><h2 id="梁式桥"><a href="#梁式桥" class="headerlink" title="梁式桥"></a>梁式桥</h2><h3 id="梁式桥分类"><a href="#梁式桥分类" class="headerlink" title="梁式桥分类"></a>梁式桥分类</h3><ul><li>简支梁桥</li><li>悬臂梁桥</li><li>等截面连续梁桥</li><li>变截面连续梁桥</li><li>连续刚构</li></ul><h3 id="梁截面"><a href="#梁截面" class="headerlink" title="梁截面"></a>梁截面</h3><ul><li>实心板梁</li><li>空心板梁</li><li>T梁——底板、梁肋、翼缘板</li><li>箱梁——底板、腹板、顶板、翼缘板</li></ul><h2 id="拱式桥"><a href="#拱式桥" class="headerlink" title="拱式桥"></a>拱式桥</h2><p>与梁式桥主要承受弯曲力不同,拱桥要承受的是沿圈传递的轴向压力。该压力即是桥墩桥台在竖向移动荷作用下所产生的水平推力。</p><h3 id="拱式桥分类"><a href="#拱式桥分类" class="headerlink" title="拱式桥分类"></a>拱式桥分类</h3><ul><li>三铰拱</li><li>两铰拱</li><li>无铰拱</li><li>系杆拱</li></ul><h3 id="承载方式"><a href="#承载方式" class="headerlink" title="承载方式"></a>承载方式</h3><ul><li>上承式拱</li><li>中承式拱</li><li>下承式拱</li></ul><h2 id="刚架桥"><a href="#刚架桥" class="headerlink" title="刚架桥"></a>刚架桥</h2><p>刚架桥是梁和柱(或竖墙)整体结合的桥梁结构。竖向荷载作用下,梁部主要受弯,柱脚处有水平推力,力状态介于梁式桥和拱桥之间。</p><h3 id="刚架桥分类"><a href="#刚架桥分类" class="headerlink" title="刚架桥分类"></a>刚架桥分类</h3><ul><li>T型刚架桥</li><li>连续刚架桥</li><li>斜腿刚架桥</li></ul><h2 id="斜拉桥"><a href="#斜拉桥" class="headerlink" title="斜拉桥"></a>斜拉桥</h2><p>斜拉桥由主梁、塔柱和斜拉索3种基本构件组成,用高强钢材制成的斜拉索将主梁多点吊起,将主梁承受的荷载传至塔柱,再由塔柱基础传给地基。斜拉桥是主梁(桥面体系)受压、受弯,斜拉索(支承体系)受拉的结构。</p><h3 id="索型"><a href="#索型" class="headerlink" title="索型"></a>索型</h3><ul><li>辐射性</li><li>竖琴型</li><li>扇形</li></ul><h2 id="桥梁常用术语"><a href="#桥梁常用术语" class="headerlink" title="桥梁常用术语"></a>桥梁常用术语</h2><h3 id="横隔板"><a href="#横隔板" class="headerlink" title="横隔板"></a>横隔板</h3><p>横隔板是为保持截面形状、增强横向刚度而在梁之间设置的构件。位于桥梁端部的横隔板称为端隔板,位于中部的横隔板称为中隔板。</p><h3 id="湿接缝、湿接头"><a href="#湿接缝、湿接头" class="headerlink" title="湿接缝、湿接头"></a>湿接缝、湿接头</h3><h3 id="净跨径"><a href="#净跨径" class="headerlink" title="净跨径"></a>净跨径</h3><p>相邻两个桥墩(或桥台)之间的净距。对于拱式桥是每孔拱跨两个拱脚截面最低点之间的水平距离。</p><h3 id="计算跨径"><a href="#计算跨径" class="headerlink" title="计算跨径"></a>计算跨径</h3><p>对于具有支座的桥梁,是指桥跨结构相邻两个支座中心之间的距离;对于拱式桥,是指两相邻拱脚截面形心点之间的水平距离,即拱轴线两端点之间的水平距离。</p><h3 id="标准跨径"><a href="#标准跨径" class="headerlink" title="标准跨径"></a>标准跨径</h3><p>相邻两个桥墩中心线的距离。</p><h3 id="拱轴线"><a href="#拱轴线" class="headerlink" title="拱轴线"></a>拱轴线</h3><p>拱圈各截面形心点的连线。</p><h3 id="桥梁高度"><a href="#桥梁高度" class="headerlink" title="桥梁高度"></a>桥梁高度</h3><p>指桥面与低水位之间的高差,或指桥面与桥下线路路面之间的距离,简称桥高。</p><h3 id="桥下净空高度"><a href="#桥下净空高度" class="headerlink" title="桥下净空高度"></a>桥下净空高度</h3><p>设计洪水位、计算通航水位或桥下线路路面至桥跨结构最下缘之间的距离。</p><h3 id="建筑高度"><a href="#建筑高度" class="headerlink" title="建筑高度"></a>建筑高度</h3><p>桥上行车路面(或轨顶)标高至桥跨结构最下缘之间的距离。</p><h3 id="容许建筑高度"><a href="#容许建筑高度" class="headerlink" title="容许建筑高度"></a>容许建筑高度</h3><p>公路或铁路定线中所确定的桥面或轨顶标高,对通航净空顶部标高之差。</p><h3 id="净矢高"><a href="#净矢高" class="headerlink" title="净矢高"></a>净矢高</h3><p>从拱顶截面下缘至相邻两拱脚截面下缘最低点之连线的垂直距离。</p><h3 id="计算矢高"><a href="#计算矢高" class="headerlink" title="计算矢高"></a>计算矢高</h3><p>从拱顶截面形心至相两拱脚截面形心之连线的垂直距离。</p><h3 id="矢跨比"><a href="#矢跨比" class="headerlink" title="矢跨比"></a>矢跨比</h3><p>计算矢高与计算跨径之比,也称拱矢度,它是反映拱桥受力特性的一个重要指标。</p><h3 id="涵洞"><a href="#涵洞" class="headerlink" title="涵洞"></a>涵洞</h3><p>用来宣泄路堤下水流的构造物。通常在建造涵洞处路堤不中断。凡是多孔跨径全长不到8m和单孔跨径不到5m的泄水结构物,均称为涵洞。</p>]]></content>
<summary type="html"><h2 id="桥梁定义"><a href="#桥梁定义" class="headerlink" title="桥梁定义"></a>桥梁定义</h2><p>桥梁是道路路线遇到江河湖泊、山谷深沟以及其他线路(铁路或公路)等障碍时,为了保持道路的连续性而专门建造的人工构造物。桥梁既要保证桥上的交通运行,也要保证桥下水流的宣泄、船只的通航或车辆的通行。</p></summary>
<category term="Share" scheme="https://awaw.cc/categories/Share/"/>
<category term="Note" scheme="https://awaw.cc/tags/Note/"/>
<category term="BridgeDesign" scheme="https://awaw.cc/tags/BridgeDesign/"/>
</entry>
<entry>
<title>NAS诞生记</title>
<link href="https://awaw.cc/post/my-first-nas/"/>
<id>https://awaw.cc/post/my-first-nas/</id>
<published>2022-06-09T16:00:00.000Z</published>
<updated>2023-07-04T05:17:59.285Z</updated>
<content type="html"><![CDATA[<p>NAS(Network Attached Storage:网络附属存储)按字面简单说就是<strong>连接在网络上,具备资料存储功能的装置</strong>,因此也称为“网络存储器”。</p><span id="more"></span><p>它是一种专用数据存储服务器。它以数据为中心,将存储设备与服务器彻底分离,集中管理数据,从而释放带宽、提高性能、降低总拥有成本、保护投资。其成本远远低于使用服务器存储,而效率却远远高于后者。</p><h2 id="配置清单"><a href="#配置清单" class="headerlink" title="配置清单"></a>配置清单</h2><table><thead><tr><th>品类</th><th>型号</th><th>渠道</th><th>价格</th><th>备注</th></tr></thead><tbody><tr><td>主板</td><td>映泰J4125NHU</td><td>淘宝</td><td>580</td><td>SATA*2、M.2*1、PCIEx16*1</td></tr><tr><td>处理器</td><td>Intel J4125</td><td>-</td><td>-</td><td>板载CPU、被动散热</td></tr><tr><td>机箱</td><td>蜗牛星际C款</td><td>闲鱼</td><td>128</td><td>PCIE开口、4盘位、硬盘背板</td></tr><tr><td>内存</td><td>玖合 忆界马甲条</td><td>京东</td><td>149</td><td>8G、DDR4、3000MHz</td></tr><tr><td>扩展卡</td><td>乐扩m.2转5口SATA</td><td>京东</td><td>149</td><td>SATA3.0*5</td></tr><tr><td>电源</td><td>益衡7025B</td><td>淘宝</td><td>245</td><td>80PLUS铜牌、双路12V 36A</td></tr><tr><td>插座</td><td>小米智能插座2</td><td>京东</td><td>49</td><td>电量统计、远程开机</td></tr><tr><td></td><td></td><td></td><td>1300</td><td></td></tr></tbody></table><h2 id="系统方案"><a href="#系统方案" class="headerlink" title="系统方案"></a>系统方案</h2><table><thead><tr><th>方案</th><th>系统</th><th>备注</th></tr></thead><tbody><tr><td>虚拟机</td><td>PVE/EXSi</td><td>硬盘直通、核显直通</td></tr><tr><td>虚拟机</td><td>Windows & VMware</td><td>CPU性能羸弱</td></tr><tr><td>物理机</td><td>群晖<sup>1</sup></td><td><strong>U盘/SATA引导、UI人性化、套件易用(采纳✔)</strong></td></tr><tr><td>物理机</td><td>Unraid</td><td>按盘位收费</td></tr><tr><td>物理机</td><td>FreeNAS/TrueNAS</td><td>使用ECC内存</td></tr><tr><td>物理机</td><td>万由</td><td>只支持到U-NAS5、U-NAS6仅万由硬件可用</td></tr></tbody></table><blockquote><p>1 固件版本 918+ 7.0.1 42218 up3</p></blockquote><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>目前这套配置搭配群晖系统已稳定运行两周,单块1T硬盘(老笔记本淘汰),功耗15W。</p><h2 id="2023-07-04"><a href="#2023-07-04" class="headerlink" title="2023.07.04"></a>2023.07.04</h2><p>更新了以下内容</p><ol><li>改用 <a href="https://github.com/fbelavenuto/arpl">arpl v1.1-beta2a</a> 自编译引导</li><li>系统升级为 7.1.1 42962 up5</li><li>添加了一块 512GB SATA固态硬盘(用于提升docker、套件、虚拟机等服务的运行效率,实际感受docker和套件提升不明显,跑虚拟机提升明显)</li><li>添加了一块 4TB 西部数据垂直盘</li><li>添加了一块 4*SATA PCIe扩展卡,目前板载2SATA,扩展4SATA,共6个SATA口</li><li>目前待机功率为21W,每天消耗0.5度电</li></ol>]]></content>
<summary type="html"><p>NAS(Network Attached Storage:网络附属存储)按字面简单说就是<strong>连接在网络上,具备资料存储功能的装置</strong>,因此也称为“网络存储器”。</p></summary>
<category term="Share" scheme="https://awaw.cc/categories/Share/"/>
<category term="NAS" scheme="https://awaw.cc/tags/NAS/"/>
<category term="Synology" scheme="https://awaw.cc/tags/Synology/"/>
</entry>
<entry>
<title>挪车码生成器 - 开源</title>
<link href="https://awaw.cc/post/car-code-generator/"/>
<id>https://awaw.cc/post/car-code-generator/</id>
<published>2021-06-17T16:00:00.000Z</published>
<updated>2023-07-14T06:11:37.772Z</updated>
<content type="html"><![CDATA[<p>临时停车时,直接把手机号放在车上,容易被广告推销人员盯上,用二维码的方式间接给别人提供联系方式,可以有效降低此类情况发生。</p><span id="more"></span><h2 id="优势"><a href="#优势" class="headerlink" title="优势"></a>优势</h2><ul><li>使用挪车码展示联系方式,可以避免直接展示出手机号码,广告推销人员可能懒得扫码获取你的手机号</li><li>可以使用微信、浏览器、系统相机扫一扫等进行扫码,无需手动输入<strong>长达11位的无序数字</strong>组成的手机号,直接一键拨号,减少焦虑感</li></ul><h2 id="劣势"><a href="#劣势" class="headerlink" title="劣势"></a>劣势</h2><ul><li>由于本服务是完全免费的,故无法提供虚拟手机号进行拨号</li></ul><h2 id="使用方法"><a href="#使用方法" class="headerlink" title="使用方法"></a>使用方法</h2><ol><li>输入手机号码</li><li>保存到挪车码</li><li>用作图工具添加“扫码挪车”等字样后用A4纸打印出来</li><li>临时停车的时候放在车窗下显眼位置</li></ol><h2 id="截图"><a href="#截图" class="headerlink" title="截图"></a>截图</h2><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/car-code-generator/1.png" alt="主界面"></p><div class="group-image-container"><div class="group-image-row"><div class="group-image-wrap"><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/car-code-generator/2.jpg" alt="微信扫一扫"></div><div class="group-image-wrap"><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/car-code-generator/3.jpg" alt="点击拨打号码按钮"></div><div class="group-image-wrap"><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/car-code-generator/4.jpg" alt="跳转系统拨号界面"></div></div></div><h2 id="下载地址"><a href="#下载地址" class="headerlink" title="下载地址"></a>下载地址</h2><p><a href="https://www.lanzoux.com/iej9Tqkzj7c">https://www.lanzoux.com/iej9Tqkzj7c</a><br><b style='font-size:1em;'>提取码:pdone</b></p><h2 id="代码仓库"><a href="#代码仓库" class="headerlink" title="代码仓库"></a>代码仓库</h2><p><a href="https://github.com/pdone/car-code-generator">https://github.com/pdone/car-code-generator</a></p>]]></content>
<summary type="html"><p>临时停车时,直接把手机号放在车上,容易被广告推销人员盯上,用二维码的方式间接给别人提供联系方式,可以有效降低此类情况发生。</p></summary>
<category term="Tools" scheme="https://awaw.cc/categories/Tools/"/>
<category term=".NET" scheme="https://awaw.cc/tags/NET/"/>
<category term="QRCode" scheme="https://awaw.cc/tags/QRCode/"/>
<category term="OpenSource" scheme="https://awaw.cc/tags/OpenSource/"/>
</entry>
<entry>
<title>最常用的 35 个 Git 命令</title>
<link href="https://awaw.cc/post/git-command/"/>
<id>https://awaw.cc/post/git-command/</id>
<published>2021-05-20T16:00:00.000Z</published>
<updated>2023-07-04T03:58:52.572Z</updated>
<content type="html"><![CDATA[<p>不管你是新手还是经验丰富的开发人员,都需要使用源代码管理。因此很大几率上你会选择使用Git来管理源代码。</p><p>要发挥Git的全部潜力,我们需要了解Git命令。在本文中,你将学到最有用的一些Git命令,掌握这些Git命令将帮助你提升编码水平。</p><span id="more"></span><p>本Git命令指南共分为三个部分:基础命令,进阶命令和高阶Git命令。</p><h2 id="基础Git命令"><a href="#基础Git命令" class="headerlink" title="基础Git命令"></a>基础Git命令</h2><p>在这个部分中,我们要学习的是一些非常基础的Git命令。这些基础的Git命令是学习其他进阶命令的基础。</p><p>下面请看这9个基础的Git命令。</p><h3 id="1-git-config"><a href="#1-git-config" class="headerlink" title="1. git config"></a>1. git config</h3><p><code>git config</code>命令非常有用。尤其是在你第一次使用Git或刚安装新的Git时。此命令可设置身份——Name和Email地址。并且每次提交时会使用此信息。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git config --global user.name <span class="hljs-string">"Your name"</span> <br><br>$ git config --global user.email <span class="hljs-string">"Your email"</span><br></code></pre></td></tr></table></figure><h3 id="2-git-version"><a href="#2-git-version" class="headerlink" title="2. git version"></a>2. git version</h3><p>顾名思义,它会检查你使用的是哪个版本的Git。目前,截至编写本指南时,Git for Windows的最新版本是2.31.1。它发布于2021年3月27日。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git version<br></code></pre></td></tr></table></figure><h3 id="3-git-init"><a href="#3-git-init" class="headerlink" title="3. git init"></a>3. git init</h3><p>这可能是你在Git中启动新项目所使用的第一个命令。此命令将创建一个空白的新存储库,然后你可以将源代码存储在此存储库中。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git init<br></code></pre></td></tr></table></figure><p>或者,你也可以在<code>git init</code>命令中使用存储库名称。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git init <your repository name><br></code></pre></td></tr></table></figure><h3 id="4-git-clone"><a href="#4-git-clone" class="headerlink" title="4. git clone"></a>4. git clone</h3><p><code>git clone</code>命令将使用现有的存储库进行复制。<code>git init</code>和<code>git clone</code>之间有一个主要区别。</p><p>在你需要在现有的存储库上进行复制时,使用<code>git clone</code>。<code>git clone</code>命令首先在内部使用<code>git init</code>命令,然后检出所有内容。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">git <span class="hljs-built_in">clone</span> <your project URL><br></code></pre></td></tr></table></figure><h3 id="5-git-add"><a href="#5-git-add" class="headerlink" title="5. git add"></a>5. git add</h3><p><code>git add</code>命令会把所有新的代码文件或修改后的文件添加到存储库中。此命令提供了添加文件和文件夹的不同选项。</p><p><strong>将单个文件添加到暂存区</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git add your_file_name<br></code></pre></td></tr></table></figure><p><strong>此选项会将所有修改过的文件和新文件添加到暂存区</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git add *<br></code></pre></td></tr></table></figure><h3 id="6-git-commit"><a href="#6-git-commit" class="headerlink" title="6. git commit"></a>6. git commit</h3><p>这个Git命令是必不可少的。如果不能合理利用此命令,则可能会降低项目质量。</p><p>简而言之,<code>git commit</code>会将更改添加到本地存储库。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git commit -m <span class="hljs-string">"your useful commit message"</span><br></code></pre></td></tr></table></figure><h3 id="7-git-status"><a href="#7-git-status" class="headerlink" title="7. git status"></a>7. git status</h3><p>使用此Git命令可以方便地查看有多少文件需要得到关注。你可以随时运行此命令。</p><p>此命令可以用来在<code>git add</code>和<code>git commit</code>之间查看状态。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git status<br></code></pre></td></tr></table></figure><h3 id="8-git-branch"><a href="#8-git-branch" class="headerlink" title="8. git branch"></a>8. git branch</h3><p>大多数时候,你的Git存储库中总会有多个分支。我们可以使用<code>git branch</code>命令有效地管理分支。Git分支有许多不同的选项和开关。</p><p>为简单起见,在这里我将重点介绍如何创建和删除Git分支。</p><p><strong>列出所有分支</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git branch<br></code></pre></td></tr></table></figure><p><strong>创建新的分支</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git branch <branch_name><br></code></pre></td></tr></table></figure><p><strong>删除分支</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git branch -d <branch_name><br></code></pre></td></tr></table></figure><h3 id="9-git-checkout"><a href="#9-git-checkout" class="headerlink" title="9. git checkout"></a>9. git checkout</h3><p>此Git命令用于在分支之间进行切换。这是功能强大的git命令之一,堪称万能的瑞士军刀。</p><p>以下是切换到另一个分支的语法。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git checkout <branch_name><br></code></pre></td></tr></table></figure><p>此外,你也可以创建和检出到分支。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git checkout -b <your_new_branch_name><br></code></pre></td></tr></table></figure><h2 id="进阶Git命令"><a href="#进阶Git命令" class="headerlink" title="进阶Git命令"></a>进阶Git命令</h2><p>掌握了基础的Git命令之后,我们就该学习进阶Git命令了。</p><p>如果你需要与团队合作,与他人共享代码,那么这些Git命令会非常有用。另外,还有一些类似<code>git log</code>命令,这些命令可帮助查看以前的提交历史。</p><h3 id="10-git-remote"><a href="#10-git-remote" class="headerlink" title="10. git remote"></a>10. git remote</h3><p><code>git remote</code>命令就像边界,如果你需要与外界连接,则必须使用<code>git remote</code>命令。此命令会将你的本地存储库连接到远程。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git remote add <shortname> <url><br></code></pre></td></tr></table></figure><p><strong>举例</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git remote add origin https://dev.azure.com/aCompiler/_git/DemoProject<br></code></pre></td></tr></table></figure><h3 id="11-git-push"><a href="#11-git-push" class="headerlink" title="11. git push"></a>11. git push</h3><p>(借助<code>git remote</code>命令)与远程存储库连接之后,就需要将更改推送到存储库。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git push -u <short_name> <your_branch_name><br></code></pre></td></tr></table></figure><p><strong>举例</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git push -u origin feature_branch<br></code></pre></td></tr></table></figure><h3 id="12-git-push-–set-upstream"><a href="#12-git-push-–set-upstream" class="headerlink" title="12. git push –set-upstream"></a>12. git push –set-upstream</h3><p>在使用<code>git push</code>之前,我们应该先设置好<code>origin</code>和<code>upstream</code>。下面是设置<code>upstream</code>的命令。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git push --set-upstream <short_name> <branch_name><br></code></pre></td></tr></table></figure><p><strong>举例</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git push --set-upstream origin feature_branch<br></code></pre></td></tr></table></figure><h3 id="13-git-fetch"><a href="#13-git-fetch" class="headerlink" title="13. git fetch"></a>13. git fetch</h3><p>当需要下载其他团队成员的更改时,就得使用<code>git fetch</code>。</p><p>此命令会下载有关提交、引用等的所有信息,因此你可以在将这些更改应用于本地存储库之前对其进行检查。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git fetch<br></code></pre></td></tr></table></figure><h3 id="14-git-pull"><a href="#14-git-pull" class="headerlink" title="14. git pull"></a>14. git pull</h3><p><code>git pull</code>命令下载内容(而不是元数据),并立即用最新的内容更新本地存储库。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git pull <remote_url><br></code></pre></td></tr></table></figure><h3 id="15-git-stash"><a href="#15-git-stash" class="headerlink" title="15. git stash"></a>15. git stash</h3><p>此git命令会临时存储已修改的文件。你可以使用以下Git命令处理<code>stash</code>工作。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git stash<br></code></pre></td></tr></table></figure><p>可以使用以下命令查看所有<code>stash</code></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git stash list<br></code></pre></td></tr></table></figure><p>如果你需要应用<code>stash</code>到分支,那就使用<code>apply</code></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git stash apply<br></code></pre></td></tr></table></figure><h3 id="16-git-log"><a href="#16-git-log" class="headerlink" title="16. git log"></a>16. git log</h3><p>在<code>git log</code>的帮助下,你可以看到所有之前的提交,并且最近的提交出现在最前面。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git <span class="hljs-built_in">log</span><br></code></pre></td></tr></table></figure><p>默认情况下,它将显示当前已检出分支的所有提交,但是你可以强制通过所有选项来查看所有分支的所有提交。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git <span class="hljs-built_in">log</span> --all<br></code></pre></td></tr></table></figure><h3 id="17-git-shortlog"><a href="#17-git-shortlog" class="headerlink" title="17. git shortlog"></a>17. git shortlog</h3><p><code>git shortlog</code>命令会显示来自<code>git log</code>命令的摘要。如果你只对简短的摘要感兴趣,那么此命令就非常有用了。</p><p>这个命令有助于查看谁处理了什么,因为它对作者及其提交进行了分组。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git shortlog<br></code></pre></td></tr></table></figure><h3 id="18-git-show"><a href="#18-git-show" class="headerlink" title="18. git show"></a>18. git show</h3><p>与<code>git log</code>相比,此命令将显示有关特定提交的详细信息。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git show <your_commit_hash><br></code></pre></td></tr></table></figure><h3 id="19-git-rm"><a href="#19-git-rm" class="headerlink" title="19. git rm"></a>19. git rm</h3><p>有时你需要从代码库中删除文件,在这种情况下,可以使用<code>git rm</code>命令。</p><p>它可以从索引和工作目录中删除跟踪的文件。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git <span class="hljs-built_in">rm</span> <your_file_name><br></code></pre></td></tr></table></figure><h3 id="20-git-merge"><a href="#20-git-merge" class="headerlink" title="20. git merge"></a>20. git merge</h3><p><code>git merge</code>可帮助将来自两个分支的更改集成到单个分支中。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git merge <branch_name><br></code></pre></td></tr></table></figure><p>此命令会将<code><branch_name></code>合并到当前你选择的分支中。</p><h2 id="高阶Git命令"><a href="#高阶Git命令" class="headerlink" title="高阶Git命令"></a>高阶Git命令</h2><p>现在是时候再上一个层次了。在这个部分中,我们要学习的是高阶的Git命令。这些命令就需要花时间去练习了。</p><p>但是一旦掌握了这些命令的基础知识,使用起来不要太轻松哦。</p><h3 id="21-git-rebase"><a href="#21-git-rebase" class="headerlink" title="21. git rebase"></a>21. git rebase</h3><p><code>git rebase</code>类似于<code>git merge</code>命令。它把两个分支集成到一个分支中,但有一个不一样的地方:<code>git rebase</code>命令将会重写提交记录。</p><p>当你有多个私有分支合并到单个分支时,应使用<code>git rebase</code>命令。它将使得提交历史成为线性的。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git rebase <base><br></code></pre></td></tr></table></figure><h3 id="22-git-bisect"><a href="#22-git-bisect" class="headerlink" title="22. git bisect"></a>22. git bisect</h3><p><code>git bisect</code>命令可帮助查找糟糕的提交。</p><p><strong>启动git bisect</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git bisect start<br></code></pre></td></tr></table></figure><p><strong>让git bisect知道什么是好的提交</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git bisect good a123<br></code></pre></td></tr></table></figure><p><strong>让git bisect知道什么是糟糕的提交</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git bisect bad z123<br></code></pre></td></tr></table></figure><p>通过<code>git bisect</code>,只要几分钟你就可以缩小问题代码的范围。</p><h3 id="23-git-cherry-pick"><a href="#23-git-cherry-pick" class="headerlink" title="23. git cherry-pick"></a>23. git cherry-pick</h3><p><code>git cherry-pick</code>是一个蛮有用的命令,允许你从任意分支中选择任意提交并将其应用于其他任意分支。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git cherry-pick <commit-hash><br></code></pre></td></tr></table></figure><p><code>git cherry-pick</code>不会修改存储库的历史记录;相反,它会添加到历史记录。</p><h3 id="24-git-archive"><a href="#24-git-archive" class="headerlink" title="24. git archive"></a>24. git archive</h3><p><code>git archive</code>命令会把多个文件合并为单个文件。就好像<code>zip</code>实用程序一样,所以你可以提取存档文件以获取单个文件。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git archive --format zip HEAD > archive-HEAD.zip<br></code></pre></td></tr></table></figure><p>它将创建当前修订的<code>zip</code>存档。</p><h3 id="25-git-pull-–rebase"><a href="#25-git-pull-–rebase" class="headerlink" title="25. git pull –rebase"></a>25. git pull –rebase</h3><p>在大多数情况下,当你使用<code>git pull</code>时,你需要重新设置基准(并且不进行合并)。</p><p>此时,你就可以使用此选项。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git pull --rebase<br></code></pre></td></tr></table></figure><p>这将帮助保持干净的历史记录。另外,还可以避免多次合并。</p><h3 id="26-git-blame"><a href="#26-git-blame" class="headerlink" title="26. git blame"></a>26. git blame</h3><p>如果你需要逐行检查任意文件的内容,则需要使用<code>git blame</code>命令。它可以帮助确定是谁对文件进行了更改。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git blame <your_file_name><br></code></pre></td></tr></table></figure><h3 id="27-git-tag"><a href="#27-git-tag" class="headerlink" title="27. git tag"></a>27. git tag</h3><p>在Git中,标签很有用,你可以使用它们来管理发布。你可以将<code>git tag</code>视为不会改变的分支。尤其是要公开发布的时候,则更为重要了。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git tag -a v1.0.0<br></code></pre></td></tr></table></figure><h3 id="28-git-verify-commit"><a href="#28-git-verify-commit" class="headerlink" title="28. git verify-commit"></a>28. git verify-commit</h3><p><code>git verify-commit</code>命令将检查<code>gpg</code>签名。GPG,GNU Privacy Guard,是sign文件中使用的工具,包含签名。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git verify-commit <commit><br></code></pre></td></tr></table></figure><h3 id="29-git-verify-tag"><a href="#29-git-verify-tag" class="headerlink" title="29. git verify-tag"></a>29. git verify-tag</h3><p>可以以同样的方式确认标签。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git verify-tag <tag><br></code></pre></td></tr></table></figure><h3 id="30-git-diff"><a href="#30-git-diff" class="headerlink" title="30. git diff"></a>30. git diff</h3><p>大多数情况下,在提交或推送之前,你需要比较两个git文件或分支。用这个命令就方便多了。</p><p><strong>将工作目录与本地存储库进行比较</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git diff HEAD <filename><br></code></pre></td></tr></table></figure><p><strong>比较两个分支</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git diff <<span class="hljs-built_in">source</span> branch> <target branch><br></code></pre></td></tr></table></figure><h3 id="31-git-citool"><a href="#31-git-citool" class="headerlink" title="31. git citool"></a>31. git citool</h3><p><code>git citool</code>是Git提交的图形化替代。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git citool<br></code></pre></td></tr></table></figure><h3 id="32-git-mv"><a href="#32-git-mv" class="headerlink" title="32. git mv"></a>32. git mv</h3><p>重命名git文件。接受两个参数,源文件名和目标文件名。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git <span class="hljs-built_in">mv</span> <old-file-name> <new-file-name><br></code></pre></td></tr></table></figure><h3 id="33-git-clean"><a href="#33-git-clean" class="headerlink" title="33. git clean"></a>33. git clean</h3><p>你可以使用<code>git clean</code>命令处理未跟踪的文件。可以使用此命令从工作目录中删除所有未跟踪的文件。如果要处理跟踪的文件,则需要使用<code>git reset</code>命令。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git clean<br></code></pre></td></tr></table></figure><h3 id="34-git-help"><a href="#34-git-help" class="headerlink" title="34. git help"></a>34. git help</h3><p>Git中有许多命令,如果你需要其他命令的帮助,则可以随时在终端上使用<code>git help</code>。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git <span class="hljs-built_in">help</span> <git_command><br></code></pre></td></tr></table></figure><h3 id="35-git-whatchanged"><a href="#35-git-whatchanged" class="headerlink" title="35. git whatchanged"></a>35. git whatchanged</h3><p>此命令的作用与<code>git log</code>相同,但为原始格式。并且由于历史原因,它也是git的一份子。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git whatchanged<br></code></pre></td></tr></table></figure>]]></content>
<summary type="html"><p>不管你是新手还是经验丰富的开发人员,都需要使用源代码管理。因此很大几率上你会选择使用Git来管理源代码。</p>
<p>要发挥Git的全部潜力,我们需要了解Git命令。在本文中,你将学到最有用的一些Git命令,掌握这些Git命令将帮助你提升编码水平。</p></summary>
<category term="Developer" scheme="https://awaw.cc/categories/Developer/"/>
<category term="Git" scheme="https://awaw.cc/tags/Git/"/>
</entry>
<entry>
<title>批处理获取时间小于10点时补零</title>
<link href="https://awaw.cc/post/bat-date/"/>
<id>https://awaw.cc/post/bat-date/</id>
<published>2021-04-07T16:00:00.000Z</published>
<updated>2023-07-13T04:14:05.896Z</updated>
<content type="html"><![CDATA[<p>使用 <code>%time:~0,2%</code> 获取时间时,当前时间若小于10点,获取到的时间不会自动补零,但是分钟和秒钟会补零,所以小时部分需要自己处理一下。</p><span id="more"></span><h3 id="Code"><a href="#Code" class="headerlink" title="Code"></a>Code</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs bash">@<span class="hljs-built_in">echo</span> off<br><span class="hljs-built_in">set</span> hour=%time:~0,2%<br><span class="hljs-keyword">if</span> %hour% LSS 10 (<br><span class="hljs-built_in">set</span> <span class="hljs-string">"hour=0%time:~1,1%"</span>)<br><span class="hljs-built_in">set</span> <span class="hljs-built_in">date</span>=%<span class="hljs-built_in">date</span>:~0,4%-%<span class="hljs-built_in">date</span>:~5,2%-%<span class="hljs-built_in">date</span>:~8,2%T%hour%:%time:~3,2%:%time:~6,5%<br><span class="hljs-built_in">echo</span> %<span class="hljs-built_in">date</span>%<br>pause<br></code></pre></td></tr></table></figure><h3 id="Output"><a href="#Output" class="headerlink" title="Output"></a>Output</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs text">2021-04-08T09:45:01.11<br></code></pre></td></tr></table></figure>]]></content>
<summary type="html"><p>使用 <code>%time:~0,2%</code> 获取时间时,当前时间若小于10点,获取到的时间不会自动补零,但是分钟和秒钟会补零,所以小时部分需要自己处理一下。</p></summary>
<category term="Developer" scheme="https://awaw.cc/categories/Developer/"/>
<category term="批处理" scheme="https://awaw.cc/tags/%E6%89%B9%E5%A4%84%E7%90%86/"/>
</entry>
<entry>
<title>洛阳地铁一号线开通啦!(内附线路图)</title>
<link href="https://awaw.cc/post/luoyang-subway/"/>
<id>https://awaw.cc/post/luoyang-subway/</id>
<published>2021-03-27T16:00:00.000Z</published>
<updated>2023-07-14T06:12:34.377Z</updated>
<content type="html"><![CDATA[<p>洛阳轨道交通(Luoyang Subway)是服务于中国河南省洛阳市的城市轨道交通系统,其首条线路于2020年12月1日开始试运行。</p><span id="more"></span><p>2021年3月28日正式运营,当日客流量为10.7382万人次。</p><p>截至2021年3月,洛阳轨道交通已开通运营线路1条,为洛阳轨道交通1号线;在建线路1条,为洛阳轨道交通2号线;规划线路2条,为洛阳轨道交通3号线、洛阳轨道交通4号线;线网共设车站34座。</p><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/ly_line_lite.png" alt="洛阳地铁线路简图"></p><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/ly_line.jpg" alt="洛阳地铁线路图"></p>]]></content>
<summary type="html"><p>洛阳轨道交通(Luoyang Subway)是服务于中国河南省洛阳市的城市轨道交通系统,其首条线路于2020年12月1日开始试运行。</p></summary>
<category term="Share" scheme="https://awaw.cc/categories/Share/"/>
<category term="News" scheme="https://awaw.cc/tags/News/"/>
</entry>
<entry>
<title>数据库调优</title>
<link href="https://awaw.cc/post/sql-tuning/"/>
<id>https://awaw.cc/post/sql-tuning/</id>
<published>2021-01-31T16:00:00.000Z</published>
<updated>2023-07-04T05:10:14.518Z</updated>
<content type="html"><![CDATA[<p>先思考这几个问题:</p><ul><li>什么时候才需要分库分表呢?我们的评判标准是什么?</li><li>一张表存储了多少数据的时候,才需要考虑分库分表?</li><li>数据增长速度很快,每天产生多少数据,才需要考虑做分库分表?</li></ul><span id="more"></span><h2 id="为什么要分库分表?"><a href="#为什么要分库分表?" class="headerlink" title="为什么要分库分表?"></a>为什么要分库分表?</h2><p>首先回答一下为什么要分库分表,答案很简单:<strong>数据库出现性能瓶颈</strong>。用大白话来说就是数据库快扛不住了。<br>数据库出现性能瓶颈,对外表现有几个方面:</p><ul><li><p>大量请求阻塞<br>在高并发场景下,大量请求都需要操作数据库,导致连接数不够了,请求处于阻塞状态。</p></li><li><p>SQL 操作变慢<br>如果数据库中存在一张上亿数据量的表,一条 SQL 没有命中索引会全表扫描,这个查询耗时会非常久。</p></li><li><p>存储出现问题<br>业务量剧增,单库数据量越来越大,给存储造成巨大压力。</p></li></ul><p>从机器的角度看,性能瓶颈无非就是CPU、内存、磁盘、网络这些,要解决性能瓶颈最简单粗暴的办法就是提升机器性能,但是通过这种方法成本和收益投入比往往又太高了,不划算,所以重点还是要从软件角度入手。</p><h2 id="数据库相关优化方案"><a href="#数据库相关优化方案" class="headerlink" title="数据库相关优化方案"></a>数据库相关优化方案</h2><p>数据库优化方案很多,主要分为两大类:<strong>软件层面</strong>、<strong>硬件层面</strong>。<br>软件层面包括:SQL 调优、表结构优化、读写分离、数据库集群、分库分表等;<br>硬件层面主要是增加机器性能。</p><h3 id="SQL-调优"><a href="#SQL-调优" class="headerlink" title="SQL 调优"></a><b style="font-size:1.3rem;">SQL 调优</b></h3><p>SQL 调优往往是解决数据库问题的第一步,往往投入少部分精力就能获得较大的收益。<br>SQL 调优主要目的是尽可能的让那些慢 SQL 变快,手段其实也很简单就是让 SQL 执行尽量命中索引。</p><h4 id="开启慢-SQL-记录"><a href="#开启慢-SQL-记录" class="headerlink" title="开启慢 SQL 记录"></a>开启慢 SQL 记录</h4><p>如果你使用的是 Mysql,需要在 Mysql 配置文件中配置几个参数即可。</p><figure class="highlight ini"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs ini"><span class="hljs-attr">slow_query_log</span> = <span class="hljs-literal">on</span><br><span class="hljs-attr">long_query_time</span> = <span class="hljs-number">1</span><br><span class="hljs-attr">slow_query_log_file</span> = /path/to/log<br></code></pre></td></tr></table></figure><h4 id="调优工具"><a href="#调优工具" class="headerlink" title="调优工具"></a>调优工具</h4><p>常常会用到 explain 这个命令来查看 SQL 语句的执行计划,通过观察执行结果很容易就知道该 SQL 语句是不是全表扫描、有没有命中索引。</p><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs sql"><span class="hljs-keyword">select</span> id, age, gender <span class="hljs-keyword">from</span> <span class="hljs-keyword">user</span> <span class="hljs-keyword">where</span> name <span class="hljs-operator">=</span> <span class="hljs-string">'pdone'</span>;<br></code></pre></td></tr></table></figure><p>返回有一列叫“type”,常见取值有:</p><p>ALL、index、range、 ref、eq_ref、const、system、NULL(从左到右,性能从差到好)<br>ALL 代表这条 SQL 语句全表扫描了,需要优化。一般来说需要达到range 级别及以上。</p><h3 id="表结构优化"><a href="#表结构优化" class="headerlink" title="表结构优化"></a><b style="font-size:1.3rem;">表结构优化</b></h3><p>以一个场景举例说明:</p><p>“user”表中有 user_id、nickname 等字段,“order”表中有order_id、user_id等字段,如果想拿到用户昵称怎么办?一般情况是通过 join 关联表操作,在查询订单表时关联查询用户表,从而获取导用户昵称。</p><p>但是随着业务量增加,订单表和用户表肯定也是暴增,这时候通过两个表关联数据就比较费力了,为了取一个昵称字段而不得不关联查询几十上百万的用户表,其速度可想而知。</p><p>这个时候可以尝试将 nickname 这个字段加到 order 表中(order_id、user_id、nickname),这种做法通常叫做数据库表冗余字段。这样做的好处展示订单列表时不需要再关联查询用户表了。</p><p>冗余字段的做法也有一个弊端,如果这个字段更新会同时涉及到多个表的更新,因此在选择冗余字段时要尽量选择不经常更新的字段。</p><h3 id="架构优化"><a href="#架构优化" class="headerlink" title="架构优化"></a><b style="font-size:1.3rem;">架构优化</b></h3><p>当单台数据库实例扛不住,我们可以增加实例组成集群对外服务。</p><p>当发现读请求明显多于写请求时,我们可以让主实例负责写,从实例对外提供读的能力;如果读实例压力依然很大,可以在数据库前面加入缓存如 redis,让请求优先从缓存取数据减少数据库访问。</p><p>缓存分担了部分压力后,数据库依然是瓶颈,这个时候就可以考虑分库分表的方案了,后面会详细介绍。</p><h3 id="硬件优化"><a href="#硬件优化" class="headerlink" title="硬件优化"></a><b style="font-size:1.3rem;">硬件优化</b></h3><p>硬件成本非常高,一般来说不可能遇到数据库性能瓶颈就去升级硬件。</p><p>在前期业务量比较小的时候,升级硬件数据库性能可以得到较大提升;但是在后期,升级硬件得到的收益就不那么明显了。</p><h2 id="分库分表详解"><a href="#分库分表详解" class="headerlink" title="分库分表详解"></a>分库分表详解</h2><p>下面我们以一个商城系统为例逐步讲解数据库是如何一步步演进。</p><div class="note note-info"> <p>未完待续</p> </div>]]></content>
<summary type="html"><p>先思考这几个问题:</p>
<ul>
<li>什么时候才需要分库分表呢?我们的评判标准是什么?</li>
<li>一张表存储了多少数据的时候,才需要考虑分库分表?</li>
<li>数据增长速度很快,每天产生多少数据,才需要考虑做分库分表?</li>
</ul></summary>
<category term="Developer" scheme="https://awaw.cc/categories/Developer/"/>
<category term="Database" scheme="https://awaw.cc/tags/Database/"/>
<category term="SQL" scheme="https://awaw.cc/tags/SQL/"/>
</entry>
<entry>
<title>Markdown代码块支持的语言</title>
<link href="https://awaw.cc/post/md-codeblock-lang/"/>
<id>https://awaw.cc/post/md-codeblock-lang/</id>
<published>2021-01-29T16:00:00.000Z</published>
<updated>2023-07-04T04:07:40.271Z</updated>
<content type="html"><![CDATA[<p>Markdown代码块支持的语言,使用时在<code>```</code>后加上对应关键字即可。</p><span id="more"></span><style>table th:nth-of-type(2) { width: 400px;}</style><table><thead><tr><th>名称</th><th>关键字</th><th>调用的js</th></tr></thead><tbody><tr><td>AppleScript</td><td>applescript</td><td>shBrushAppleScript.js</td></tr><tr><td>ActionScript 3.0</td><td>actionscript3, as3</td><td>shBrushAS3.js</td></tr><tr><td>Shell</td><td>bash, shell</td><td>shBrushBash.js</td></tr><tr><td>ColdFusion</td><td>coldfusion, cf</td><td>shBrushColdFusion.js</td></tr><tr><td>C</td><td>cpp, c</td><td>shBrushCpp.js</td></tr><tr><td>C#</td><td>c#, c-sharp, csharp</td><td>shBrushCSharp.js</td></tr><tr><td>CSS</td><td>css</td><td>shBrushCss.js</td></tr><tr><td>Delphi</td><td>delphi, pascal, pas</td><td>shBrushDelphi.js</td></tr><tr><td>diff&patch</td><td>diff patch</td><td>shBrushDiff.js</td></tr><tr><td>Erlang</td><td>erl, erlang</td><td>shBrushErlang.js</td></tr><tr><td>Groovy</td><td>groovy</td><td>shBrushGroovy.js</td></tr><tr><td>Java</td><td>java</td><td>shBrushJava.js</td></tr><tr><td>JavaFX</td><td>jfx, javafx</td><td>shBrushJavaFX.js</td></tr><tr><td>JavaScript</td><td>js, jscript, javascript</td><td>shBrushJScript.js</td></tr><tr><td>Perl</td><td>perl, pl, Perl</td><td>shBrushPerl.js</td></tr><tr><td>PHP</td><td>php</td><td>shBrushPhp.js</td></tr><tr><td>text</td><td>text, plain</td><td>shBrushPlain.js</td></tr><tr><td>Python</td><td>py, python</td><td>shBrushPython.js</td></tr><tr><td>Ruby</td><td>ruby, rails, ror, rb</td><td>shBrushRuby.js</td></tr><tr><td>SASS&SCSS</td><td>sass, scss</td><td>shBrushSass.js</td></tr><tr><td>Scala</td><td>scala</td><td>shBrushScala.js</td></tr><tr><td>SQL</td><td>sql</td><td>shBrushSql.js</td></tr><tr><td>Visual Basic</td><td>vb, vbnet</td><td>shBrushVb.js</td></tr><tr><td>XML</td><td>xml, xhtml, xslt, html</td><td>shBrushXml.js</td></tr><tr><td>Objective C</td><td>objc, obj-c</td><td>shBrushObjectiveC.js</td></tr><tr><td>F#</td><td>f# f-sharp, fsharp</td><td>shBrushFSharp.js</td></tr><tr><td></td><td>xpp, dynamics-xpp</td><td>shBrushDynamics.js</td></tr><tr><td>R</td><td>r, s, splus</td><td>shBrushR.js</td></tr><tr><td>matlab</td><td>matlab</td><td>shBrushMatlab.js</td></tr><tr><td>swift</td><td>swift</td><td>shBrushSwift.js</td></tr><tr><td>GO</td><td>go, golang</td><td>shBrushGo.js</td></tr></tbody></table>]]></content>
<summary type="html"><p>Markdown代码块支持的语言,使用时在<code>```</code>后加上对应关键字即可。</p></summary>
<category term="Developer" scheme="https://awaw.cc/categories/Developer/"/>
<category term="MD" scheme="https://awaw.cc/tags/MD/"/>
<category term="Markdown" scheme="https://awaw.cc/tags/Markdown/"/>
</entry>
<entry>
<title>BuildInCategory枚举</title>
<link href="https://awaw.cc/post/revit-category/"/>
<id>https://awaw.cc/post/revit-category/</id>
<published>2020-12-01T10:30:00.000Z</published>
<updated>2023-07-04T05:04:04.499Z</updated>
<content type="html"><![CDATA[<p>Revit二次开发中经常用到<strong>BuildInCategory</strong>过滤元素,以下是通过遍历该枚举获取的数据,其中部分类别的名称未能获取到,本文未显示<strong>Unknown</strong>部分,完整版本见 <a href="/post/revit-category-all/">BuildInCategory枚举 - 完整</a>。</p><span id="more"></span><table><thead><tr><th>中文名称</th><th>名称</th><th>值</th></tr></thead><tbody><tr><td>分析链接</td><td>OST_LinksAnalytical</td><td>-2009657</td></tr><tr><td>分析楼板基础标记</td><td>OST_FoundationSlabAnalyticalTags</td><td>-2009656</td></tr><tr><td>分析条形基础标记</td><td>OST_WallFoundationAnalyticalTags</td><td>-2009655</td></tr><tr><td>分析独立基础标记</td><td>OST_IsolatedFoundationAnalyticalTags</td><td>-2009654</td></tr><tr><td>分析墙标记</td><td>OST_WallAnalyticalTags</td><td>-2009653</td></tr><tr><td>分析楼层标记</td><td>OST_FloorAnalyticalTags</td><td>-2009652</td></tr><tr><td>分析柱标记</td><td>OST_ColumnAnalyticalTags</td><td>-2009651</td></tr><tr><td>分析支撑标记</td><td>OST_BraceAnalyticalTags</td><td>-2009650</td></tr><tr><td>分析梁标记</td><td>OST_BeamAnalyticalTags</td><td>-2009649</td></tr><tr><td>分析节点</td><td>OST_AnalyticalNodes</td><td>-2009645</td></tr><tr><td>分析基础底板</td><td>OST_FoundationSlabAnalytical</td><td>-2009643</td></tr><tr><td>分析条形基础</td><td>OST_WallFoundationAnalytical</td><td>-2009642</td></tr><tr><td>分析独立基础</td><td>OST_IsolatedFoundationAnalytical</td><td>-2009641</td></tr><tr><td>分析墙</td><td>OST_WallAnalytical</td><td>-2009640</td></tr><tr><td>分析楼层</td><td>OST_FloorAnalytical</td><td>-2009639</td></tr><tr><td>顶部线段</td><td>OST_ColumnEndSegment</td><td>-2009638</td></tr><tr><td>基准线段</td><td>OST_ColumnStartSegment</td><td>-2009637</td></tr><tr><td>分析柱</td><td>OST_ColumnAnalytical</td><td>-2009636</td></tr><tr><td>末端线段</td><td>OST_BraceEndSegment</td><td>-2009635</td></tr><tr><td>起点线段</td><td>OST_BraceStartSegment</td><td>-2009634</td></tr><tr><td>分析支撑</td><td>OST_BraceAnalytical</td><td>-2009633</td></tr><tr><td>末端线段</td><td>OST_BeamEndSegment</td><td>-2009632</td></tr><tr><td>起点线段</td><td>OST_BeamStartSegment</td><td>-2009631</td></tr><tr><td>分析梁</td><td>OST_BeamAnalytical</td><td>-2009630</td></tr><tr><td>棍状符号</td><td>OST_StructuralTrussStickSymbols</td><td>-2009608</td></tr><tr><td>隐藏线</td><td>OST_MassHiddenLines</td><td>-2009532</td></tr><tr><td>隐藏线</td><td>OST_CurtaSystemHiddenLines</td><td>-2009531</td></tr><tr><td>隐藏线</td><td>OST_EntourageHiddenLines</td><td>-2009529</td></tr><tr><td>隐藏线</td><td>OST_PlantingHiddenLines</td><td>-2009528</td></tr><tr><td>隐藏线</td><td>OST_SpecialityEquipmentHiddenLines</td><td>-2009527</td></tr><tr><td>隐藏线</td><td>OST_TopographyHiddenLines</td><td>-2009526</td></tr><tr><td>隐藏线</td><td>OST_SiteHiddenLines</td><td>-2009524</td></tr><tr><td>隐藏线</td><td>OST_RoadsHiddenLines</td><td>-2009523</td></tr><tr><td>隐藏线</td><td>OST_ParkingHiddenLines</td><td>-2009522</td></tr><tr><td>隐藏线</td><td>OST_PlumbingFixturesHiddenLines</td><td>-2009521</td></tr><tr><td>隐藏线</td><td>OST_MechanicalEquipmentHiddenLines</td><td>-2009520</td></tr><tr><td>隐藏线</td><td>OST_LightingFixturesHiddenLines</td><td>-2009519</td></tr><tr><td>隐藏线</td><td>OST_FurnitureSystemsHiddenLines</td><td>-2009518</td></tr><tr><td>隐藏线</td><td>OST_ElectricalFixturesHiddenLines</td><td>-2009517</td></tr><tr><td>隐藏线</td><td>OST_ElectricalEquipmentHiddenLines</td><td>-2009516</td></tr><tr><td>隐藏线</td><td>OST_CaseworkHiddenLines</td><td>-2009515</td></tr><tr><td>隐藏线</td><td>OST_DetailComponentsHiddenLines</td><td>-2009514</td></tr><tr><td>隐藏线</td><td>OST_ShaftOpeningHiddenLines</td><td>-2009513</td></tr><tr><td>隐藏线</td><td>OST_GenericModelHiddenLines</td><td>-2009512</td></tr><tr><td>隐藏线</td><td>OST_CurtainWallMullionsHiddenLines</td><td>-2009511</td></tr><tr><td>隐藏线</td><td>OST_CurtainWallPanelsHiddenLines</td><td>-2009510</td></tr><tr><td>隐藏线</td><td>OST_RampsHiddenLines</td><td>-2009509</td></tr><tr><td>隐藏线</td><td>OST_StairsRailingHiddenLines</td><td>-2009508</td></tr><tr><td>隐藏线</td><td>OST_StairsHiddenLines</td><td>-2009507</td></tr><tr><td>隐藏线</td><td>OST_ColumnsHiddenLines</td><td>-2009506</td></tr><tr><td>隐藏线</td><td>OST_FurnitureHiddenLines</td><td>-2009505</td></tr><tr><td>隐藏线</td><td>OST_LinesHiddenLines</td><td>-2009504</td></tr><tr><td>隐藏线</td><td>OST_CeilingsHiddenLines</td><td>-2009503</td></tr><tr><td>隐藏线</td><td>OST_RoofsHiddenLines</td><td>-2009502</td></tr><tr><td>隐藏线</td><td>OST_DoorsHiddenLines</td><td>-2009501</td></tr><tr><td>隐藏线</td><td>OST_WindowsHiddenLines</td><td>-2009500</td></tr><tr><td>轮廓标记</td><td>OST_StructConnectionProfilesTags</td><td>-2009064</td></tr><tr><td>孔标记</td><td>OST_StructConnectionHoleTags</td><td>-2009063</td></tr><tr><td>隐藏线</td><td>OST_CouplerHiddenLines</td><td>-2009062</td></tr><tr><td>结构钢筋接头标记</td><td>OST_CouplerTags</td><td>-2009061</td></tr><tr><td>结构钢筋接头</td><td>OST_Coupler</td><td>-2009060</td></tr><tr><td>焊接标记</td><td>OST_StructConnectionWeldTags</td><td>-2009059</td></tr><tr><td>剪力钉标记</td><td>OST_StructConnectionShearStudTags</td><td>-2009058</td></tr><tr><td>锚固件标记</td><td>OST_StructConnectionAnchorTags</td><td>-2009057</td></tr><tr><td>螺栓标记</td><td>OST_StructConnectionBoltTags</td><td>-2009056</td></tr><tr><td>板标记</td><td>OST_StructConnectionPlateTags</td><td>-2009055</td></tr><tr><td>隐藏线</td><td>OST_RebarHiddenLines</td><td>-2009050</td></tr><tr><td>修改器</td><td>OST_StructConnectionModifiers</td><td>-2009047</td></tr><tr><td>焊缝</td><td>OST_StructConnectionWelds</td><td>-2009046</td></tr><tr><td>孔</td><td>OST_StructConnectionHoles</td><td>-2009045</td></tr><tr><td>剪力钉</td><td>OST_StructConnectionShearStuds</td><td>-2009044</td></tr><tr><td>其他</td><td>OST_StructConnectionOthers</td><td>-2009042</td></tr><tr><td>螺栓</td><td>OST_StructConnectionBolts</td><td>-2009041</td></tr><tr><td>结构连接标记</td><td>OST_StructConnectionTags</td><td>-2009040</td></tr><tr><td>锚固件</td><td>OST_StructConnectionAnchors</td><td>-2009039</td></tr><tr><td>平板</td><td>OST_StructConnectionPlates</td><td>-2009038</td></tr><tr><td>轮廓</td><td>OST_StructConnectionProfiles</td><td>-2009037</td></tr><tr><td>参照</td><td>OST_StructConnectionReference</td><td>-2009036</td></tr><tr><td>符号</td><td>OST_StructConnectionSymbol</td><td>-2009033</td></tr><tr><td>隐藏线</td><td>OST_StructConnectionHiddenLines</td><td>-2009032</td></tr><tr><td>结构连接</td><td>OST_StructConnections</td><td>-2009030</td></tr><tr><td>边界</td><td>OST_FabricAreaBoundary</td><td>-2009029</td></tr><tr><td>结构钢筋网符号</td><td>OST_FabricReinSpanSymbol</td><td>-2009028</td></tr><tr><td>钢筋网</td><td>OST_FabricReinforcementWire</td><td>-2009027</td></tr><tr><td>边界</td><td>OST_FabricReinforcementBoundary</td><td>-2009026</td></tr><tr><td>钢筋集切换</td><td>OST_RebarSetToggle</td><td>-2009025</td></tr><tr><td>结构钢筋网标记</td><td>OST_FabricReinforcementTags</td><td>-2009022</td></tr><tr><td>结构区域钢筋标记</td><td>OST_AreaReinTags</td><td>-2009021</td></tr><tr><td>结构钢筋标记</td><td>OST_RebarTags</td><td>-2009020</td></tr><tr><td><钢筋网片></td><td>OST_FabricAreaSketchSheetsLines</td><td>-2009019</td></tr><tr><td><钢筋网外围></td><td>OST_FabricAreaSketchEnvelopeLines</td><td>-2009018</td></tr><tr><td>结构钢筋网区域</td><td>OST_FabricAreas</td><td>-2009017</td></tr><tr><td>结构钢筋网</td><td>OST_FabricReinforcement</td><td>-2009016</td></tr><tr><td>钢筋保护层参照</td><td>OST_RebarCover</td><td>-2009015</td></tr><tr><td>钢筋形状</td><td>OST_RebarShape</td><td>-2009013</td></tr><tr><td>边界</td><td>OST_PathReinBoundary</td><td>-2009012</td></tr><tr><td>结构路径钢筋标记</td><td>OST_PathReinTags</td><td>-2009011</td></tr><tr><td>结构路径钢筋符号</td><td>OST_PathReinSpanSymbol</td><td>-2009010</td></tr><tr><td>结构路径钢筋</td><td>OST_PathRein</td><td>-2009009</td></tr><tr><td>边界</td><td>OST_AreaReinBoundary</td><td>-2009006</td></tr><tr><td>结构区域钢筋符号</td><td>OST_AreaReinSpanSymbol</td><td>-2009005</td></tr><tr><td>结构区域钢筋</td><td>OST_AreaRein</td><td>-2009003</td></tr><tr><td>结构钢筋</td><td>OST_Rebar</td><td>-2009000</td></tr><tr><td>隔热层</td><td>OST_FabricationPipeworkInsulation</td><td>-2008221</td></tr><tr><td>内衬</td><td>OST_FabricationDuctworkLining</td><td>-2008220</td></tr><tr><td>降</td><td>OST_FabricationContainmentDrop</td><td>-2008219</td></tr><tr><td>升</td><td>OST_FabricationContainmentRise</td><td>-2008218</td></tr><tr><td>降</td><td>OST_FabricationPipeworkDrop</td><td>-2008217</td></tr><tr><td>升</td><td>OST_FabricationPipeworkRise</td><td>-2008216</td></tr><tr><td>符号</td><td>OST_FabricationContainmentSymbology</td><td>-2008215</td></tr><tr><td>中心线</td><td>OST_FabricationContainmentCenterLine</td><td>-2008214</td></tr><tr><td>MEP 预制保护层标记</td><td>OST_FabricationContainmentTags</td><td>-2008213</td></tr><tr><td>MEP 预制保护层</td><td>OST_FabricationContainment</td><td>-2008212</td></tr><tr><td>符号</td><td>OST_FabricationPipeworkSymbology</td><td>-2008211</td></tr><tr><td>中心线</td><td>OST_FabricationPipeworkCenterLine</td><td>-2008210</td></tr><tr><td>MEP 预制管道标记</td><td>OST_FabricationPipeworkTags</td><td>-2008209</td></tr><tr><td>MEP 预制管道</td><td>OST_FabricationPipework</td><td>-2008208</td></tr><tr><td>符号</td><td>OST_FabricationDuctworkSymbology</td><td>-2008207</td></tr><tr><td>降</td><td>OST_FabricationDuctworkDrop</td><td>-2008206</td></tr><tr><td>升</td><td>OST_FabricationDuctworkRise</td><td>-2008205</td></tr><tr><td>MEP 预制支架标记</td><td>OST_FabricationHangerTags</td><td>-2008204</td></tr><tr><td>MEP 预制支架</td><td>OST_FabricationHangers</td><td>-2008203</td></tr><tr><td>隔热层</td><td>OST_FabricationDuctworkInsulation</td><td>-2008198</td></tr><tr><td>中心线</td><td>OST_FabricationDuctworkCenterLine</td><td>-2008196</td></tr><tr><td>MEP 预制管网标记</td><td>OST_FabricationDuctworkTags</td><td>-2008194</td></tr><tr><td>MEP 预制管网</td><td>OST_FabricationDuctwork</td><td>-2008193</td></tr><tr><td>着色</td><td>OST_gbXML_Shade</td><td>-2008187</td></tr><tr><td>分析表面</td><td>OST_AnalyticSurfaces</td><td>-2008186</td></tr><tr><td>分析空间</td><td>OST_AnalyticSpaces</td><td>-2008185</td></tr><tr><td>空气洞口</td><td>OST_gbXML_OpeningAir</td><td>-2008184</td></tr><tr><td>非推拉门</td><td>OST_gbXML_NonSlidingDoor</td><td>-2008183</td></tr><tr><td>推拉门</td><td>OST_gbXML_SlidingDoor</td><td>-2008182</td></tr><tr><td>可操作天窗</td><td>OST_gbXML_OperableSkylight</td><td>-2008181</td></tr><tr><td>固定天窗</td><td>OST_gbXML_FixedSkylight</td><td>-2008180</td></tr><tr><td>可操作窗口</td><td>OST_gbXML_OperableWindow</td><td>-2008179</td></tr><tr><td>固定窗</td><td>OST_gbXML_FixedWindow</td><td>-2008178</td></tr><tr><td>地下天花板</td><td>OST_gbXML_UndergroundCeiling</td><td>-2008177</td></tr><tr><td>地下板</td><td>OST_gbXML_UndergroundSlab</td><td>-2008176</td></tr><tr><td>地下墙</td><td>OST_gbXML_UndergroundWall</td><td>-2008175</td></tr><tr><td>空气曲面</td><td>OST_gbXML_SurfaceAir</td><td>-2008174</td></tr><tr><td>天花板</td><td>OST_gbXML_Ceiling</td><td>-2008173</td></tr><tr><td>内部楼板</td><td>OST_gbXML_InteriorFloor</td><td>-2008172</td></tr><tr><td>内墙</td><td>OST_gbXML_InteriorWall</td><td>-2008171</td></tr><tr><td>平整表面上的板</td><td>OST_gbXML_SlabOnGrade</td><td>-2008170</td></tr><tr><td>活动楼板</td><td>OST_gbXML_RaisedFloor</td><td>-2008169</td></tr><tr><td>屋顶</td><td>OST_gbXML_Roof</td><td>-2008168</td></tr><tr><td>外墙</td><td>OST_gbXML_ExteriorWall</td><td>-2008167</td></tr><tr><td>管段</td><td>OST_PipeSegments</td><td>-2008163</td></tr><tr><td>管道占位符</td><td>OST_PlaceHolderPipes</td><td>-2008161</td></tr><tr><td>风管占位符</td><td>OST_PlaceHolderDucts</td><td>-2008160</td></tr><tr><td>参照线</td><td>OST_PipingSystem_Reference_Visibility</td><td>-2008159</td></tr><tr><td>参照线</td><td>OST_DuctSystem_Reference_Visibility</td><td>-2008157</td></tr><tr><td>管道隔热层标记</td><td>OST_PipeInsulationsTags</td><td>-2008155</td></tr><tr><td>风管内衬标记</td><td>OST_DuctLiningsTags</td><td>-2008154</td></tr><tr><td>风管隔热层标记</td><td>OST_DuctInsulationsTags</td><td>-2008153</td></tr><tr><td>电气备件/空间电路</td><td>OST_ElectricalInternalCircuits</td><td>-2008152</td></tr><tr><td>配电盘明细表图形</td><td>OST_PanelScheduleGraphics</td><td>-2008151</td></tr><tr><td>电缆桥架管路</td><td>OST_CableTrayRun</td><td>-2008150</td></tr><tr><td>线管管路</td><td>OST_ConduitRun</td><td>-2008149</td></tr><tr><td>中心线</td><td>OST_ConduitFittingCenterLine</td><td>-2008141</td></tr><tr><td>中心线</td><td>OST_CableTrayFittingCenterLine</td><td>-2008140</td></tr><tr><td>中心线</td><td>OST_ConduitCenterLine</td><td>-2008139</td></tr><tr><td>降</td><td>OST_ConduitDrop</td><td>-2008138</td></tr><tr><td>升</td><td>OST_ConduitRiseDrop</td><td>-2008137</td></tr><tr><td>中心线</td><td>OST_CableTrayCenterLine</td><td>-2008136</td></tr><tr><td>降</td><td>OST_CableTrayDrop</td><td>-2008135</td></tr><tr><td>升</td><td>OST_CableTrayRiseDrop</td><td>-2008134</td></tr><tr><td>线管标记</td><td>OST_ConduitTags</td><td>-2008133</td></tr><tr><td>线管</td><td>OST_Conduit</td><td>-2008132</td></tr><tr><td>电缆桥架标记</td><td>OST_CableTrayTags</td><td>-2008131</td></tr><tr><td>电缆桥架</td><td>OST_CableTray</td><td>-2008130</td></tr><tr><td>线管配件标记</td><td>OST_ConduitFittingTags</td><td>-2008129</td></tr><tr><td>线管配件</td><td>OST_ConduitFitting</td><td>-2008128</td></tr><tr><td>电缆桥架配件标记</td><td>OST_CableTrayFittingTags</td><td>-2008127</td></tr><tr><td>电缆桥架配件</td><td>OST_CableTrayFitting</td><td>-2008126</td></tr><tr><td>布管系统配置</td><td>OST_RoutingPreferences</td><td>-2008125</td></tr><tr><td>风管内衬</td><td>OST_DuctLinings</td><td>-2008124</td></tr><tr><td>风管隔热层</td><td>OST_DuctInsulations</td><td>-2008123</td></tr><tr><td>管道隔热层</td><td>OST_PipeInsulations</td><td>-2008122</td></tr><tr><td>参照线</td><td>OST_HVAC_Zones_Reference_Visibility</td><td>-2008118</td></tr><tr><td>内部填充</td><td>OST_HVAC_Zones_InteriorFill_Visibility</td><td>-2008117</td></tr><tr><td>颜色填充</td><td>OST_HVAC_Zones_ColorFill</td><td>-2008116</td></tr><tr><td>分区标记</td><td>OST_ZoneTags</td><td>-2008115</td></tr><tr><td>边界</td><td>OST_HVAC_Zones_Boundary</td><td>-2008108</td></tr><tr><td>HVAC 区</td><td>OST_HVAC_Zones</td><td>-2008107</td></tr><tr><td>开关系统</td><td>OST_SwitchSystem</td><td>-2008101</td></tr><tr><td>喷头标记</td><td>OST_SprinklerTags</td><td>-2008100</td></tr><tr><td>喷头</td><td>OST_Sprinklers</td><td>-2008099</td></tr><tr><td>洞口</td><td>OST_GbXML_Opening</td><td>-2008095</td></tr><tr><td>地下</td><td>OST_GbXML_SType_Underground</td><td>-2008094</td></tr><tr><td>着色</td><td>OST_GbXML_SType_Shade</td><td>-2008093</td></tr><tr><td>外部</td><td>OST_GbXML_SType_Exterior</td><td>-2008092</td></tr><tr><td>内部</td><td>OST_GbXML_SType_Interior</td><td>-2008091</td></tr><tr><td>分析表面</td><td>OST_GbXMLFaces</td><td>-2008090</td></tr><tr><td>回路方向</td><td>OST_WireHomeRunArrows</td><td>-2008089</td></tr><tr><td>灯具标记</td><td>OST_LightingDeviceTags</td><td>-2008088</td></tr><tr><td>灯具</td><td>OST_LightingDevices</td><td>-2008087</td></tr><tr><td>火警设备标记</td><td>OST_FireAlarmDeviceTags</td><td>-2008086</td></tr><tr><td>火警设备</td><td>OST_FireAlarmDevices</td><td>-2008085</td></tr><tr><td>数据设备标记</td><td>OST_DataDeviceTags</td><td>-2008084</td></tr><tr><td>数据设备</td><td>OST_DataDevices</td><td>-2008083</td></tr><tr><td>通讯设备标记</td><td>OST_CommunicationDeviceTags</td><td>-2008082</td></tr><tr><td>通讯设备</td><td>OST_CommunicationDevices</td><td>-2008081</td></tr><tr><td>安全设备标记</td><td>OST_SecurityDeviceTags</td><td>-2008080</td></tr><tr><td>安全设备</td><td>OST_SecurityDevices</td><td>-2008079</td></tr><tr><td>护理呼叫设备标记</td><td>OST_NurseCallDeviceTags</td><td>-2008078</td></tr><tr><td>护理呼叫设备</td><td>OST_NurseCallDevices</td><td>-2008077</td></tr><tr><td>电话设备标记</td><td>OST_TelephoneDeviceTags</td><td>-2008076</td></tr><tr><td>电话设备</td><td>OST_TelephoneDevices</td><td>-2008075</td></tr><tr><td>导线记号</td><td>OST_WireTickMarks</td><td>-2008074</td></tr><tr><td>中心线</td><td>OST_PipeFittingCenterLine</td><td>-2008072</td></tr><tr><td>降</td><td>OST_PipeCurvesDrop</td><td>-2008069</td></tr><tr><td>中心线</td><td>OST_DuctFittingCenterLine</td><td>-2008066</td></tr><tr><td>降</td><td>OST_DuctCurvesDrop</td><td>-2008062</td></tr><tr><td>风管管件标记</td><td>OST_DuctFittingTags</td><td>-2008061</td></tr><tr><td>管件标记</td><td>OST_PipeFittingTags</td><td>-2008060</td></tr><tr><td>管道颜色填充</td><td>OST_PipeColorFills</td><td>-2008059</td></tr><tr><td>管道颜色填充图例</td><td>OST_PipeColorFillLegends</td><td>-2008058</td></tr><tr><td>导线标记</td><td>OST_WireTags</td><td>-2008057</td></tr><tr><td>管道附件标记</td><td>OST_PipeAccessoryTags</td><td>-2008056</td></tr><tr><td>管道附件</td><td>OST_PipeAccessory</td><td>-2008055</td></tr><tr><td>升</td><td>OST_PipeCurvesRiseDrop</td><td>-2008054</td></tr><tr><td>填充图案</td><td>OST_FlexPipeCurvesPattern</td><td>-2008053</td></tr><tr><td>中心线</td><td>OST_FlexPipeCurvesCenterLine</td><td>-2008051</td></tr><tr><td>软管</td><td>OST_FlexPipeCurves</td><td>-2008050</td></tr><tr><td>管件</td><td>OST_PipeFitting</td><td>-2008049</td></tr><tr><td>软管标记</td><td>OST_FlexPipeTags</td><td>-2008048</td></tr><tr><td>管道标记</td><td>OST_PipeTags</td><td>-2008047</td></tr><tr><td>中心线</td><td>OST_PipeCurvesCenterLine</td><td>-2008045</td></tr><tr><td>管道</td><td>OST_PipeCurves</td><td>-2008044</td></tr><tr><td>管道系统</td><td>OST_PipingSystem</td><td>-2008043</td></tr><tr><td>导线</td><td>OST_Wire</td><td>-2008039</td></tr><tr><td>电路</td><td>OST_ElectricalCircuit</td><td>-2008037</td></tr><tr><td>升</td><td>OST_DuctCurvesRiseDrop</td><td>-2008036</td></tr><tr><td>填充图案</td><td>OST_FlexDuctCurvesPattern</td><td>-2008023</td></tr><tr><td>中心线</td><td>OST_FlexDuctCurvesCenterLine</td><td>-2008021</td></tr><tr><td>软风管</td><td>OST_FlexDuctCurves</td><td>-2008020</td></tr><tr><td>风管附件标记</td><td>OST_DuctAccessoryTags</td><td>-2008017</td></tr><tr><td>风管附件</td><td>OST_DuctAccessory</td><td>-2008016</td></tr><tr><td>风管系统</td><td>OST_DuctSystem</td><td>-2008015</td></tr><tr><td>风道末端标记</td><td>OST_DuctTerminalTags</td><td>-2008014</td></tr><tr><td>风道末端</td><td>OST_DuctTerminal</td><td>-2008013</td></tr><tr><td>风管管件</td><td>OST_DuctFitting</td><td>-2008010</td></tr><tr><td>风管颜色填充</td><td>OST_DuctColorFills</td><td>-2008005</td></tr><tr><td>软风管标记</td><td>OST_FlexDuctTags</td><td>-2008004</td></tr><tr><td>风管标记</td><td>OST_DuctTags</td><td>-2008003</td></tr><tr><td>中心线</td><td>OST_DuctCurvesCenterLine</td><td>-2008001</td></tr><tr><td>风管</td><td>OST_DuctCurves</td><td>-2008000</td></tr><tr><td>风管颜色填充图例</td><td>OST_DuctColorFillLegends</td><td>-2007004</td></tr><tr><td>桥梁支座</td><td>OST_BridgeBearings</td><td>-2006138</td></tr><tr><td>桥梁大梁</td><td>OST_BridgeGirders</td><td>-2006137</td></tr><tr><td>桥梁基础</td><td>OST_BridgeFoundations</td><td>-2006136</td></tr><tr><td>桥面</td><td>OST_BridgeDecks</td><td>-2006135</td></tr><tr><td>桥拱</td><td>OST_BridgeArches</td><td>-2006134</td></tr><tr><td>桥梁缆索</td><td>OST_BridgeCables</td><td>-2006133</td></tr><tr><td>桥塔</td><td>OST_BridgeTowers</td><td>-2006132</td></tr><tr><td>桥墩</td><td>OST_BridgePiers</td><td>-2006131</td></tr><tr><td>桥台</td><td>OST_BridgeAbutments</td><td>-2006130</td></tr><tr><td>平面视图中的支撑符号</td><td>OST_StructuralBracePlanReps</td><td>-2006110</td></tr><tr><td>连接符号</td><td>OST_StructConnectionSymbols</td><td>-2006100</td></tr><tr><td>结构注释</td><td>OST_StructuralAnnotations</td><td>-2006090</td></tr><tr><td>云线批注标记</td><td>OST_RevisionCloudTags</td><td>-2006080</td></tr><tr><td>云线批注</td><td>OST_RevisionClouds</td><td>-2006060</td></tr><tr><td>立面标记</td><td>OST_ElevationMarks</td><td>-2006045</td></tr><tr><td>轴网标头</td><td>OST_GridHeads</td><td>-2006040</td></tr><tr><td>标高标头</td><td>OST_LevelHeads</td><td>-2006020</td></tr><tr><td>范围框</td><td>OST_VolumeOfInterest</td><td>-2006000</td></tr><tr><td>边界条件</td><td>OST_BoundaryConditions</td><td>-2005301</td></tr><tr><td>内部面荷载标记</td><td>OST_InternalAreaLoadTags</td><td>-2005255</td></tr><tr><td>内部线荷载标记</td><td>OST_InternalLineLoadTags</td><td>-2005254</td></tr><tr><td>内部点荷载标记</td><td>OST_InternalPointLoadTags</td><td>-2005253</td></tr><tr><td>面荷载标记</td><td>OST_AreaLoadTags</td><td>-2005252</td></tr><tr><td>线荷载标记</td><td>OST_LineLoadTags</td><td>-2005251</td></tr><tr><td>点荷载标记</td><td>OST_PointLoadTags</td><td>-2005250</td></tr><tr><td>地震荷载</td><td>OST_LoadCasesSeismic</td><td>-2005218</td></tr><tr><td>温度荷载</td><td>OST_LoadCasesTemperature</td><td>-2005217</td></tr><tr><td>偶然荷载</td><td>OST_LoadCasesAccidental</td><td>-2005216</td></tr><tr><td>屋顶活荷载</td><td>OST_LoadCasesRoofLive</td><td>-2005215</td></tr><tr><td>雪荷载</td><td>OST_LoadCasesSnow</td><td>-2005214</td></tr><tr><td>风荷载</td><td>OST_LoadCasesWind</td><td>-2005213</td></tr><tr><td>活荷载</td><td>OST_LoadCasesLive</td><td>-2005212</td></tr><tr><td>恒荷载</td><td>OST_LoadCasesDead</td><td>-2005211</td></tr><tr><td>结构荷载工况</td><td>OST_LoadCases</td><td>-2005210</td></tr><tr><td>内部面荷载</td><td>OST_InternalAreaLoads</td><td>-2005207</td></tr><tr><td>内部线荷载</td><td>OST_InternalLineLoads</td><td>-2005206</td></tr><tr><td>内部点荷载</td><td>OST_InternalPointLoads</td><td>-2005205</td></tr><tr><td>结构内部荷载</td><td>OST_InternalLoads</td><td>-2005204</td></tr><tr><td>面荷载</td><td>OST_AreaLoads</td><td>-2005203</td></tr><tr><td>线荷载</td><td>OST_LineLoads</td><td>-2005202</td></tr><tr><td>点荷载</td><td>OST_PointLoads</td><td>-2005201</td></tr><tr><td>结构荷载</td><td>OST_Loads</td><td>-2005200</td></tr><tr><td>结构梁系统标记</td><td>OST_BeamSystemTags</td><td>-2005130</td></tr><tr><td>基础跨方向符号</td><td>OST_FootingSpanDirectionSymbol</td><td>-2005111</td></tr><tr><td>跨方向符号</td><td>OST_SpanDirectionSymbol</td><td>-2005110</td></tr><tr><td>高程点符号</td><td>OST_SpotElevSymbols</td><td>-2005100</td></tr><tr><td>结构桁架标记</td><td>OST_TrussTags</td><td>-2005030</td></tr><tr><td>注释记号标记</td><td>OST_KeynoteTags</td><td>-2005029</td></tr><tr><td>详图项目标记</td><td>OST_DetailComponentTags</td><td>-2005028</td></tr><tr><td>材质标记</td><td>OST_MaterialTags</td><td>-2005027</td></tr><tr><td>楼板标记</td><td>OST_FloorTags</td><td>-2005026</td></tr><tr><td>幕墙系统标记</td><td>OST_CurtaSystemTags</td><td>-2005025</td></tr><tr><td>楼梯标记</td><td>OST_StairsTags</td><td>-2005023</td></tr><tr><td>多类别标记</td><td>OST_MultiCategoryTags</td><td>-2005022</td></tr><tr><td>植物标记</td><td>OST_PlantingTags</td><td>-2005021</td></tr><tr><td>面积标记</td><td>OST_AreaTags</td><td>-2005020</td></tr><tr><td>结构基础标记</td><td>OST_StructuralFoundationTags</td><td>-2005019</td></tr><tr><td>结构柱标记</td><td>OST_StructuralColumnTags</td><td>-2005018</td></tr><tr><td>停车场标记</td><td>OST_ParkingTags</td><td>-2005017</td></tr><tr><td>场地标记</td><td>OST_SiteTags</td><td>-2005016</td></tr><tr><td>结构框架标记</td><td>OST_StructuralFramingTags</td><td>-2005015</td></tr><tr><td>专用设备标记</td><td>OST_SpecialityEquipmentTags</td><td>-2005014</td></tr><tr><td>常规模型标记</td><td>OST_GenericModelTags</td><td>-2005013</td></tr><tr><td>幕墙嵌板标记</td><td>OST_CurtainWallPanelTags</td><td>-2005012</td></tr><tr><td>墙标记</td><td>OST_WallTags</td><td>-2005011</td></tr><tr><td>卫浴装置标记</td><td>OST_PlumbingFixtureTags</td><td>-2005010</td></tr><tr><td>机电设备标记</td><td>OST_MechanicalEquipmentTags</td><td>-2005009</td></tr><tr><td>照明设备标记</td><td>OST_LightingFixtureTags</td><td>-2005008</td></tr><tr><td>家具系统标记</td><td>OST_FurnitureSystemTags</td><td>-2005007</td></tr><tr><td>家具标记</td><td>OST_FurnitureTags</td><td>-2005006</td></tr><tr><td>电气装置标记</td><td>OST_ElectricalFixtureTags</td><td>-2005004</td></tr><tr><td>电气设备标记</td><td>OST_ElectricalEquipmentTags</td><td>-2005003</td></tr><tr><td>天花板标记</td><td>OST_CeilingTags</td><td>-2005002</td></tr><tr><td>橱柜标记</td><td>OST_CaseworkTags</td><td>-2005001</td></tr><tr><td>颜色填充</td><td>OST_MEPSpaceColorFill</td><td>-2003605</td></tr><tr><td>参照</td><td>OST_MEPSpaceReferenceVisibility</td><td>-2003602</td></tr><tr><td>内墙</td><td>OST_MEPSpaceInteriorFillVisibility</td><td>-2003601</td></tr><tr><td>空间</td><td>OST_MEPSpaces</td><td>-2003600</td></tr><tr><td>体量着色</td><td>OST_MassShade</td><td>-2003418</td></tr><tr><td>体量洞口</td><td>OST_MassOpening</td><td>-2003417</td></tr><tr><td>体量天窗</td><td>OST_MassSkylights</td><td>-2003416</td></tr><tr><td>体量玻璃</td><td>OST_MassGlazing</td><td>-2003415</td></tr><tr><td>体量屋顶</td><td>OST_MassRoof</td><td>-2003414</td></tr><tr><td>体量外墙</td><td>OST_MassExteriorWall</td><td>-2003413</td></tr><tr><td>体量内墙</td><td>OST_MassInteriorWall</td><td>-2003412</td></tr><tr><td>体量分区</td><td>OST_MassZone</td><td>-2003411</td></tr><tr><td>体量楼层标记</td><td>OST_MassAreaFaceTags</td><td>-2003410</td></tr><tr><td>体量标记</td><td>OST_MassTags</td><td>-2003405</td></tr><tr><td>形式</td><td>OST_MassForm</td><td>-2003404</td></tr><tr><td>体量楼层</td><td>OST_MassFloor</td><td>-2003403</td></tr><tr><td>体量</td><td>OST_Mass</td><td>-2003400</td></tr><tr><td>图案填充</td><td>OST_DividedSurface_PatternFill</td><td>-2003327</td></tr><tr><td>填充图案线</td><td>OST_DividedSurface_PatternLines</td><td>-2003326</td></tr><tr><td>网格线</td><td>OST_DividedSurface_Gridlines</td><td>-2003325</td></tr><tr><td>节点</td><td>OST_DividedSurface_Nodes</td><td>-2003324</td></tr><tr><td>向下箭头</td><td>OST_RampsDownArrow</td><td>-2003308</td></tr><tr><td>向上箭头</td><td>OST_RampsUpArrow</td><td>-2003307</td></tr><tr><td>文字(向下)</td><td>OST_RampsDownText</td><td>-2003306</td></tr><tr><td>文字(向上)</td><td>OST_RampsUpText</td><td>-2003305</td></tr><tr><td>超出截面线的梯边梁</td><td>OST_RampsStringerAboveCut</td><td>-2003304</td></tr><tr><td>梯边梁</td><td>OST_RampsStringer</td><td>-2003303</td></tr><tr><td>坡道超出截面线</td><td>OST_RampsAboveCut</td><td>-2003302</td></tr><tr><td>面积</td><td>OST_Areas</td><td>-2003200</td></tr><tr><td>项目信息</td><td>OST_ProjectInformation</td><td>-2003101</td></tr><tr><td>图纸</td><td>OST_Sheets</td><td>-2003100</td></tr><tr><td>详图项目</td><td>OST_DetailComponents</td><td>-2002000</td></tr><tr><td>屋檐底板</td><td>OST_RoofSoffit</td><td>-2001393</td></tr><tr><td>楼板边缘</td><td>OST_EdgeSlab</td><td>-2001392</td></tr><tr><td>檐沟</td><td>OST_Gutter</td><td>-2001391</td></tr><tr><td>封檐板</td><td>OST_Fascia</td><td>-2001390</td></tr><tr><td>环境</td><td>OST_Entourage</td><td>-2001370</td></tr><tr><td>植物</td><td>OST_Planting</td><td>-2001360</td></tr><tr><td>隐藏线</td><td>OST_StructuralStiffenerHiddenLines</td><td>-2001358</td></tr><tr><td>定位线</td><td>OST_StructuralColumnLocationLine</td><td>-2001357</td></tr><tr><td>定位线</td><td>OST_StructuralFramingLocationLine</td><td>-2001356</td></tr><tr><td>结构加强板标记</td><td>OST_StructuralStiffenerTags</td><td>-2001355</td></tr><tr><td>结构加强板</td><td>OST_StructuralStiffener</td><td>-2001354</td></tr><tr><td>RVT 链接</td><td>OST_RvtLinks</td><td>-2001352</td></tr><tr><td>专用设备</td><td>OST_SpecialityEquipment</td><td>-2001350</td></tr><tr><td>刚性链接</td><td>OST_ColumnAnalyticalRigidLinks</td><td>-2001344</td></tr><tr><td>次等高线</td><td>OST_SecondaryTopographyContours</td><td>-2001343</td></tr><tr><td>主等高线</td><td>OST_TopographyContours</td><td>-2001342</td></tr><tr><td>三角形边缘</td><td>OST_TopographySurface</td><td>-2001341</td></tr><tr><td>地形</td><td>OST_Topography</td><td>-2001340</td></tr><tr><td>地形链接</td><td>OST_TopographyLink</td><td>-2001339</td></tr><tr><td>结构桁架</td><td>OST_StructuralTruss</td><td>-2001336</td></tr><tr><td>棍状符号</td><td>OST_StructuralColumnStickSymbols</td><td>-2001335</td></tr><tr><td>隐藏线</td><td>OST_HiddenStructuralColumnLines</td><td>-2001334</td></tr><tr><td>刚性链接</td><td>OST_AnalyticalRigidLinks</td><td>-2001333</td></tr><tr><td>结构柱</td><td>OST_StructuralColumns</td><td>-2001330</td></tr><tr><td>隐藏线</td><td>OST_HiddenStructuralFramingLines</td><td>-2001329</td></tr><tr><td>结构梁系统</td><td>OST_StructuralFramingSystem</td><td>-2001327</td></tr><tr><td>结构框架</td><td>OST_StructuralFraming</td><td>-2001320</td></tr><tr><td>隐藏线</td><td>OST_HiddenStructuralFoundationLines</td><td>-2001302</td></tr><tr><td>结构基础</td><td>OST_StructuralFoundation</td><td>-2001300</td></tr><tr><td>测量点</td><td>OST_SharedBasePoint</td><td>-2001272</td></tr><tr><td>项目基点</td><td>OST_ProjectBasePoint</td><td>-2001271</td></tr><tr><td>建筑红线线段标记</td><td>OST_SitePropertyLineSegmentTags</td><td>-2001269</td></tr><tr><td>建筑红线线段</td><td>OST_SitePropertyLineSegment</td><td>-2001268</td></tr><tr><td>属性标记</td><td>OST_SitePropertyTags</td><td>-2001267</td></tr><tr><td>边界点</td><td>OST_SitePointBoundary</td><td>-2001266</td></tr><tr><td>建筑红线</td><td>OST_SiteProperty</td><td>-2001265</td></tr><tr><td>建筑地坪</td><td>OST_BuildingPad</td><td>-2001263</td></tr><tr><td>内部点</td><td>OST_SitePoint</td><td>-2001262</td></tr><tr><td>场地</td><td>OST_Site</td><td>-2001260</td></tr><tr><td>道路</td><td>OST_Roads</td><td>-2001220</td></tr><tr><td>停车场</td><td>OST_Parking</td><td>-2001180</td></tr><tr><td>卫浴装置</td><td>OST_PlumbingFixtures</td><td>-2001160</td></tr><tr><td>机械设备</td><td>OST_MechanicalEquipment</td><td>-2001140</td></tr><tr><td>光源</td><td>OST_LightingFixtureSource</td><td>-2001121</td></tr><tr><td>照明设备</td><td>OST_LightingFixtures</td><td>-2001120</td></tr><tr><td>家具系统</td><td>OST_FurnitureSystems</td><td>-2001100</td></tr><tr><td>电气装置</td><td>OST_ElectricalFixtures</td><td>-2001060</td></tr><tr><td>电气设备</td><td>OST_ElectricalEquipment</td><td>-2001040</td></tr><tr><td>橱柜</td><td>OST_Casework</td><td>-2001000</td></tr><tr><td>竖井洞口</td><td>OST_ShaftOpening</td><td>-2000996</td></tr><tr><td>水力分离符号</td><td>OST_PipeHydronicSeparationSymbols</td><td>-2000988</td></tr><tr><td>机械设备集边界线</td><td>OST_MechanicalEquipmentSetBoundaryLines</td><td>-2000987</td></tr><tr><td>机械设备集标记</td><td>OST_MechanicalEquipmentSetTags</td><td>-2000986</td></tr><tr><td>机械设备集</td><td>OST_MechanicalEquipmentSet</td><td>-2000985</td></tr><tr><td>连接线符号</td><td>OST_AnalyticalPipeConnectionLineSymbol</td><td>-2000984</td></tr><tr><td>分析管道连接</td><td>OST_AnalyticalPipeConnections</td><td>-2000983</td></tr><tr><td>局部坐标系</td><td>OST_FndSlabLocalCoordSys</td><td>-2000976</td></tr><tr><td>局部坐标系</td><td>OST_FloorLocalCoordSys</td><td>-2000975</td></tr><tr><td>局部坐标系</td><td>OST_WallLocalCoordSys</td><td>-2000974</td></tr><tr><td>局部坐标系</td><td>OST_BraceLocalCoordSys</td><td>-2000973</td></tr><tr><td>局部坐标系</td><td>OST_ColumnLocalCoordSys</td><td>-2000972</td></tr><tr><td>局部坐标系</td><td>OST_BeamLocalCoordSys</td><td>-2000971</td></tr><tr><td>多钢筋注释</td><td>OST_MultiReferenceAnnotations</td><td>-2000970</td></tr><tr><td>分析节点标记</td><td>OST_NodeAnalyticalTags</td><td>-2000956</td></tr><tr><td>分析链接标记</td><td>OST_LinkAnalyticalTags</td><td>-2000955</td></tr><tr><td>支撑</td><td>OST_StairsSupports</td><td>-2000952</td></tr><tr><td><高于> 扶手</td><td>OST_RailingHandRailAboveCut</td><td>-2000951</td></tr><tr><td><高于> 顶部扶栏</td><td>OST_RailingTopRailAboveCut</td><td>-2000950</td></tr><tr><td>终端</td><td>OST_RailingTermination</td><td>-2000949</td></tr><tr><td>支座</td><td>OST_RailingSupport</td><td>-2000948</td></tr><tr><td>扶手</td><td>OST_RailingHandRail</td><td>-2000947</td></tr><tr><td>顶部扶栏</td><td>OST_RailingTopRail</td><td>-2000946</td></tr><tr><td>楼梯踏板/踢面数</td><td>OST_StairsTriserNumbers</td><td>-2000944</td></tr><tr><td>楼梯支撑标记</td><td>OST_StairsSupportTags</td><td>-2000942</td></tr><tr><td>楼梯平台标记</td><td>OST_StairsLandingTags</td><td>-2000941</td></tr><tr><td>楼梯梯段标记</td><td>OST_StairsRunTags</td><td>-2000940</td></tr><tr><td><高于> 向上箭头</td><td>OST_StairsPathsAboveCut</td><td>-2000939</td></tr><tr><td>楼梯路径</td><td>OST_StairsPaths</td><td>-2000938</td></tr><tr><td><高于> 踢面线</td><td>OST_StairsRiserLinesAboveCut</td><td>-2000937</td></tr><tr><td>踢面线</td><td>OST_StairsRiserLines</td><td>-2000936</td></tr><tr><td><高于> 轮廓</td><td>OST_StairsOutlinesAboveCut</td><td>-2000935</td></tr><tr><td>轮廓</td><td>OST_StairsOutlines</td><td>-2000934</td></tr><tr><td><高于> 楼梯前缘线</td><td>OST_StairsNosingLinesAboveCut</td><td>-2000933</td></tr><tr><td>楼梯前缘线</td><td>OST_StairsNosingLines</td><td>-2000932</td></tr><tr><td><高于> 剪切标记</td><td>OST_StairsCutMarksAboveCut</td><td>-2000931</td></tr><tr><td>剪切标记</td><td>OST_StairsCutMarks</td><td>-2000930</td></tr><tr><td>踢面/踏板</td><td>OST_StairsTrisers</td><td>-2000921</td></tr><tr><td>平台</td><td>OST_StairsLandings</td><td>-2000920</td></tr><tr><td>梯段</td><td>OST_StairsRuns</td><td>-2000919</td></tr><tr><td>线</td><td>OST_AdaptivePoints_Lines</td><td>-2000903</td></tr><tr><td>平面</td><td>OST_AdaptivePoints_Planes</td><td>-2000902</td></tr><tr><td>点</td><td>OST_AdaptivePoints_Points</td><td>-2000901</td></tr><tr><td>自适应点</td><td>OST_AdaptivePoints</td><td>-2000900</td></tr><tr><td><空间分隔></td><td>OST_MEPSpaceSeparationLines</td><td>-2000831</td></tr><tr><td>线</td><td>OST_ReferencePoints_Lines</td><td>-2000713</td></tr><tr><td>平面</td><td>OST_ReferencePoints_Planes</td><td>-2000712</td></tr><tr><td>点</td><td>OST_ReferencePoints_Points</td><td>-2000711</td></tr><tr><td>参照点</td><td>OST_ReferencePoints</td><td>-2000710</td></tr><tr><td>材质</td><td>OST_Materials</td><td>-2000700</td></tr><tr><td>截面填充图案</td><td>OST_CeilingsCutPattern</td><td>-2000617</td></tr><tr><td>公共边</td><td>OST_CeilingsDefault</td><td>-2000616</td></tr><tr><td>面层 2 [5]</td><td>OST_CeilingsFinish2</td><td>-2000615</td></tr><tr><td>面层 1 [4]</td><td>OST_CeilingsFinish1</td><td>-2000614</td></tr><tr><td>衬底 [2]</td><td>OST_CeilingsSubstrate</td><td>-2000613</td></tr><tr><td>保温层/空气层 [3]</td><td>OST_CeilingsInsulation</td><td>-2000612</td></tr><tr><td>结构 [1]</td><td>OST_CeilingsStructure</td><td>-2000611</td></tr><tr><td>涂膜层</td><td>OST_CeilingsMembrane</td><td>-2000610</td></tr><tr><td>内部边缘</td><td>OST_FloorsInteriorEdges</td><td>-2000609</td></tr><tr><td>截面填充图案</td><td>OST_FloorsCutPattern</td><td>-2000608</td></tr><tr><td>隐藏线</td><td>OST_HiddenFloorLines</td><td>-2000607</td></tr><tr><td>公共边</td><td>OST_FloorsDefault</td><td>-2000606</td></tr><tr><td>面层 2 [5]</td><td>OST_FloorsFinish2</td><td>-2000605</td></tr><tr><td>面层 1 [4]</td><td>OST_FloorsFinish1</td><td>-2000604</td></tr><tr><td>衬底 [2]</td><td>OST_FloorsSubstrate</td><td>-2000603</td></tr><tr><td>保温层/空气层 [3]</td><td>OST_FloorsInsulation</td><td>-2000602</td></tr><tr><td>结构 [1]</td><td>OST_FloorsStructure</td><td>-2000601</td></tr><tr><td>涂膜层</td><td>OST_FloorsMembrane</td><td>-2000600</td></tr><tr><td>内部边缘</td><td>OST_RoofsInteriorEdges</td><td>-2000598</td></tr><tr><td>截面填充图案</td><td>OST_RoofsCutPattern</td><td>-2000597</td></tr><tr><td>公共边</td><td>OST_RoofsDefault</td><td>-2000596</td></tr><tr><td>面层 2 [5]</td><td>OST_RoofsFinish2</td><td>-2000595</td></tr><tr><td>面层 1 [4]</td><td>OST_RoofsFinish1</td><td>-2000594</td></tr><tr><td>衬底 [2]</td><td>OST_RoofsSubstrate</td><td>-2000593</td></tr><tr><td>保温层/空气层 [3]</td><td>OST_RoofsInsulation</td><td>-2000592</td></tr><tr><td>结构 [1]</td><td>OST_RoofsStructure</td><td>-2000591</td></tr><tr><td>涂膜层</td><td>OST_RoofsMembrane</td><td>-2000590</td></tr><tr><td>截面填充图案</td><td>OST_WallsCutPattern</td><td>-2000588</td></tr><tr><td>隐藏线</td><td>OST_HiddenWallLines</td><td>-2000587</td></tr><tr><td>公共边</td><td>OST_WallsDefault</td><td>-2000586</td></tr><tr><td>面层 2 [5]</td><td>OST_WallsFinish2</td><td>-2000585</td></tr><tr><td>面层 1 [4]</td><td>OST_WallsFinish1</td><td>-2000584</td></tr><tr><td>衬底 [2]</td><td>OST_WallsSubstrate</td><td>-2000583</td></tr><tr><td>保温层/空气层 [3]</td><td>OST_WallsInsulation</td><td>-2000582</td></tr><tr><td>结构 [1]</td><td>OST_WallsStructure</td><td>-2000581</td></tr><tr><td>涂膜层</td><td>OST_WallsMembrane</td><td>-2000580</td></tr><tr><td>明细表</td><td>OST_Schedules</td><td>-2000573</td></tr><tr><td>明细表图形</td><td>OST_ScheduleGraphics</td><td>-2000570</td></tr><tr><td>光栅图像</td><td>OST_RasterImages</td><td>-2000560</td></tr><tr><td>颜色填充</td><td>OST_RoomColorFill</td><td>-2000551</td></tr><tr><td>颜色填充图例</td><td>OST_ColorFillLegends</td><td>-2000550</td></tr><tr><td>注释裁剪边界</td><td>OST_AnnotationCropSpecial</td><td>-2000549</td></tr><tr><td>裁剪边界</td><td>OST_CropBoundarySpecial</td><td>-2000548</td></tr><tr><td>注释裁剪边界</td><td>OST_AnnotationCrop</td><td>-2000547</td></tr><tr><td>详图索引引线</td><td>OST_CalloutLeaderLine</td><td>-2000544</td></tr><tr><td>表面填充图案</td><td>OST_CeilingsSurfacePattern</td><td>-2000543</td></tr><tr><td>表面填充图案</td><td>OST_RoofsSurfacePattern</td><td>-2000542</td></tr><tr><td>表面填充图案</td><td>OST_FloorsSurfacePattern</td><td>-2000541</td></tr><tr><td>表面填充图案</td><td>OST_WallsSurfacePattern</td><td>-2000540</td></tr><tr><td>详图索引边界</td><td>OST_CalloutBoundary</td><td>-2000539</td></tr><tr><td>详图索引标头</td><td>OST_CalloutHeads</td><td>-2000538</td></tr><tr><td>详图索引</td><td>OST_Callouts</td><td>-2000537</td></tr><tr><td>裁剪边界</td><td>OST_CropBoundary</td><td>-2000536</td></tr><tr><td>立面</td><td>OST_Elev</td><td>-2000535</td></tr><tr><td>参照平面</td><td>OST_CLines</td><td>-2000530</td></tr><tr><td>视图标题</td><td>OST_ViewportLabel</td><td>-2000515</td></tr><tr><td>视口</td><td>OST_Viewports</td><td>-2000510</td></tr><tr><td>相机</td><td>OST_Camera_Lines</td><td>-2000501</td></tr><tr><td>空间标记</td><td>OST_MEPSpaceTags</td><td>-2000485</td></tr><tr><td>房间标记</td><td>OST_RoomTags</td><td>-2000480</td></tr><tr><td>门标记</td><td>OST_DoorTags</td><td>-2000460</td></tr><tr><td>窗标记</td><td>OST_WindowTags</td><td>-2000450</td></tr><tr><td>宽线</td><td>OST_SectionHeadWideLines</td><td>-2000404</td></tr><tr><td>中粗线</td><td>OST_SectionHeadMediumLines</td><td>-2000403</td></tr><tr><td>细线</td><td>OST_SectionHeadThinLines</td><td>-2000401</td></tr><tr><td>剖面标头</td><td>OST_SectionHeads</td><td>-2000400</td></tr><tr><td>等高线标签</td><td>OST_ContourLabels</td><td>-2000350</td></tr><tr><td>幕墙系统</td><td>OST_CurtaSystem</td><td>-2000340</td></tr><tr><td>幕墙系统网格</td><td>OST_CurtainGridsCurtaSystem</td><td>-2000323</td></tr><tr><td>幕墙网格</td><td>OST_CurtainGridsWall</td><td>-2000321</td></tr><tr><td>幕墙屋顶网格</td><td>OST_CurtainGridsRoof</td><td>-2000320</td></tr><tr><td>分析显示样式</td><td>OST_AnalysisDisplayStyle</td><td>-2000304</td></tr><tr><td>分析结果</td><td>OST_AnalysisResults</td><td>-2000303</td></tr><tr><td>渲染区域</td><td>OST_RenderRegions</td><td>-2000302</td></tr><tr><td>剖面框</td><td>OST_SectionBox</td><td>-2000301</td></tr><tr><td>文字注释</td><td>OST_TextNotes</td><td>-2000300</td></tr><tr><td><中心线></td><td>OST_CenterLines</td><td>-2000288</td></tr><tr><td><超出></td><td>OST_LinesBeyond</td><td>-2000287</td></tr><tr><td><隐藏></td><td>OST_HiddenLines</td><td>-2000286</td></tr><tr><td><已拆除></td><td>OST_DemolishedLines</td><td>-2000285</td></tr><tr><td><架空线></td><td>OST_OverheadLines</td><td>-2000284</td></tr><tr><td>宽线</td><td>OST_TitleBlockWideLines</td><td>-2000283</td></tr><tr><td>中粗线</td><td>OST_TitleBlockMediumLines</td><td>-2000282</td></tr><tr><td>细线</td><td>OST_TitleBlockThinLines</td><td>-2000281</td></tr><tr><td>图框</td><td>OST_TitleBlocks</td><td>-2000280</td></tr><tr><td>视图</td><td>OST_Views</td><td>-2000279</td></tr><tr><td>隐藏线</td><td>OST_PartHiddenLines</td><td>-2000271</td></tr><tr><td>零件标记</td><td>OST_PartTags</td><td>-2000270</td></tr><tr><td>组成部分</td><td>OST_Parts</td><td>-2000269</td></tr><tr><td>部件标记</td><td>OST_AssemblyTags</td><td>-2000268</td></tr><tr><td>部件</td><td>OST_Assemblies</td><td>-2000267</td></tr><tr><td>屋顶标记</td><td>OST_RoofTags</td><td>-2000266</td></tr><tr><td>高程点坡度</td><td>OST_SpotSlopes</td><td>-2000265</td></tr><tr><td>高程点坐标</td><td>OST_SpotCoordinates</td><td>-2000264</td></tr><tr><td>高程点</td><td>OST_SpotElevations</td><td>-2000263</td></tr><tr><td>自动绘制尺寸标注</td><td>OST_WeakDims</td><td>-2000261</td></tr><tr><td>尺寸标注</td><td>OST_Dimensions</td><td>-2000260</td></tr><tr><td>标高</td><td>OST_Levels</td><td>-2000240</td></tr><tr><td>位移路径</td><td>OST_DisplacementPath</td><td>-2000223</td></tr><tr><td>多段轴网</td><td>OST_GridChains</td><td>-2000221</td></tr><tr><td>轴网</td><td>OST_Grids</td><td>-2000220</td></tr><tr><td>断开剖面线</td><td>OST_BrokenSectionLine</td><td>-2000202</td></tr><tr><td>剖面线</td><td>OST_SectionLine</td><td>-2000201</td></tr><tr><td>剖面</td><td>OST_Sections</td><td>-2000200</td></tr><tr><td>视图参照</td><td>OST_ReferenceViewer</td><td>-2000198</td></tr><tr><td>视图参照</td><td>OST_ReferenceViewerSymbol</td><td>-2000197</td></tr><tr><td>在族中导入</td><td>OST_ImportObjectStyles</td><td>-2000196</td></tr><tr><td>遮罩区域</td><td>OST_MaskingRegion</td><td>-2000194</td></tr><tr><td>拼接线</td><td>OST_Matchline</td><td>-2000193</td></tr><tr><td>平面区域</td><td>OST_PlanRegion</td><td>-2000191</td></tr><tr><td>填充区域</td><td>OST_FilledRegion</td><td>-2000190</td></tr><tr><td>墙饰条</td><td>OST_Cornices</td><td>-2000181</td></tr><tr><td>坡道</td><td>OST_Ramps</td><td>-2000180</td></tr><tr><td>幕墙网格</td><td>OST_CurtainGrids</td><td>-2000173</td></tr><tr><td>幕墙竖梃</td><td>OST_CurtainWallMullions</td><td>-2000171</td></tr><tr><td>幕墙嵌板</td><td>OST_CurtainWallPanels</td><td>-2000170</td></tr><tr><td>颜色填充</td><td>OST_AreaColorFill</td><td>-2000165</td></tr><tr><td>参照</td><td>OST_AreaReferenceVisibility</td><td>-2000164</td></tr><tr><td>内部填充</td><td>OST_AreaInteriorFillVisibility</td><td>-2000163</td></tr><tr><td>参照</td><td>OST_RoomReferenceVisibility</td><td>-2000162</td></tr><tr><td>内部填充</td><td>OST_RoomInteriorFillVisibility</td><td>-2000161</td></tr><tr><td>房间</td><td>OST_Rooms</td><td>-2000160</td></tr><tr><td>常规模型</td><td>OST_GenericModel</td><td>-2000151</td></tr><tr><td>常规注释</td><td>OST_GenericAnnotation</td><td>-2000150</td></tr><tr><td>栏杆扶手标记</td><td>OST_StairsRailingTags</td><td>-2000133</td></tr><tr><td><高于> 栏杆扶手截面线</td><td>OST_StairsRailingAboveCut</td><td>-2000132</td></tr><tr><td>向下箭头</td><td>OST_StairsDownArrows</td><td>-2000131</td></tr><tr><td>向上箭头</td><td>OST_StairsUpArrows</td><td>-2000130</td></tr><tr><td>文字(向下)</td><td>OST_StairsDownText</td><td>-2000129</td></tr><tr><td>扶栏</td><td>OST_StairsRailingRail</td><td>-2000128</td></tr><tr><td>栏杆</td><td>OST_StairsRailingBaluster</td><td>-2000127</td></tr><tr><td>栏杆扶手</td><td>OST_StairsRailing</td><td>-2000126</td></tr><tr><td>文字(向上)</td><td>OST_StairsUpText</td><td>-2000125</td></tr><tr><td><高于> 支撑</td><td>OST_StairsSupportsAboveCut</td><td>-2000124</td></tr><tr><td>支撑</td><td>OST_StairsStringerCarriage</td><td>-2000123</td></tr><tr><td>楼梯</td><td>OST_Stairs</td><td>-2000120</td></tr><tr><td>导向轴网</td><td>OST_GuideGrid</td><td>-2000107</td></tr><tr><td>柱</td><td>OST_Columns</td><td>-2000100</td></tr><tr><td>模型组</td><td>OST_IOSModelGroups</td><td>-2000095</td></tr><tr><td>参照线</td><td>OST_ReferenceLines</td><td>-2000083</td></tr><tr><td>家具</td><td>OST_Furniture</td><td>-2000080</td></tr><tr><td><面积边界></td><td>OST_AreaSchemeLines</td><td>-2000079</td></tr><tr><td>线</td><td>OST_GenericLines</td><td>-2000078</td></tr><tr><td>隔热层线</td><td>OST_InsulationLines</td><td>-2000077</td></tr><tr><td><房间分隔></td><td>OST_RoomSeparationLines</td><td>-2000066</td></tr><tr><td>旋转轴</td><td>OST_AxisOfRotation</td><td>-2000065</td></tr><tr><td>线</td><td>OST_Lines</td><td>-2000051</td></tr><tr><td><草图></td><td>OST_SketchLines</td><td>-2000045</td></tr><tr><td>宽线</td><td>OST_CurvesWideLines</td><td>-2000044</td></tr><tr><td>中粗线</td><td>OST_CurvesMediumLines</td><td>-2000043</td></tr><tr><td>细线</td><td>OST_CurvesThinLines</td><td>-2000042</td></tr><tr><td>天花板</td><td>OST_Ceilings</td><td>-2000038</td></tr><tr><td>屋顶</td><td>OST_Roofs</td><td>-2000035</td></tr><tr><td>楼板</td><td>OST_Floors</td><td>-2000032</td></tr><tr><td>玻璃</td><td>OST_DoorsGlassProjection</td><td>-2000031</td></tr><tr><td>框架/竖梃</td><td>OST_DoorsFrameMullionProjection</td><td>-2000029</td></tr><tr><td>洞口</td><td>OST_DoorsOpeningProjection</td><td>-2000027</td></tr><tr><td>嵌板</td><td>OST_DoorsPanelProjection</td><td>-2000025</td></tr><tr><td>门</td><td>OST_Doors</td><td>-2000023</td></tr><tr><td>洞口</td><td>OST_WindowsOpeningProjection</td><td>-2000022</td></tr><tr><td>窗台/盖板</td><td>OST_WindowsSillHeadProjection</td><td>-2000020</td></tr><tr><td>框架/竖梃</td><td>OST_WindowsFrameMullionProjection</td><td>-2000018</td></tr><tr><td>玻璃</td><td>OST_WindowsGlassProjection</td><td>-2000016</td></tr><tr><td>窗</td><td>OST_Windows</td><td>-2000014</td></tr><tr><td>墙</td><td>OST_Walls</td><td>-2000011</td></tr></tbody></table>]]></content>
<summary type="html"><p>Revit二次开发中经常用到<strong>BuildInCategory</strong>过滤元素,以下是通过遍历该枚举获取的数据,其中部分类别的名称未能获取到,本文未显示<strong>Unknown</strong>部分,完整版本见 <a href="/post/revit-category-all/">BuildInCategory枚举 - 完整</a>。</p></summary>
<category term="Developer" scheme="https://awaw.cc/categories/Developer/"/>
<category term=".NET" scheme="https://awaw.cc/tags/NET/"/>
<category term="Revit" scheme="https://awaw.cc/tags/Revit/"/>
</entry>
<entry>
<title>BuildInCategory枚举 - 完整</title>
<link href="https://awaw.cc/post/revit-category-all/"/>
<id>https://awaw.cc/post/revit-category-all/</id>
<published>2020-12-01T10:20:00.000Z</published>
<updated>2023-07-04T05:03:52.663Z</updated>
<content type="html"><![CDATA[<p>Revit二次开发中经常用到<strong>BuildInCategory</strong>过滤元素,以下是通过遍历该枚举获取的数据,其中部分类别的名称未能获取到,显示为<strong>Unknown</strong>,请悉知。</p><span id="more"></span><table><thead><tr><th>中文名称</th><th>名称</th><th>值</th></tr></thead><tbody><tr><td>Unknown</td><td>OST_StackedWalls_Obsolete_IdInWrongRange</td><td>-20034100</td></tr><tr><td>Unknown</td><td>OST_MassTags_Obsolete_IdInWrongRange</td><td>-20034005</td></tr><tr><td>Unknown</td><td>OST_MassSurface_Obsolete_IdInWrongRange</td><td>-20034004</td></tr><tr><td>Unknown</td><td>OST_MassFloor_Obsolete_IdInWrongRange</td><td>-20034003</td></tr><tr><td>Unknown</td><td>OST_Mass_Obsolete_IdInWrongRange</td><td>-20034000</td></tr><tr><td>Unknown</td><td>OST_WallRefPlanes_Obsolete_IdInWrongRange</td><td>-20000896</td></tr><tr><td>Unknown</td><td>OST_StickSymbols_Obsolete_IdInWrongRange</td><td>-20000828</td></tr><tr><td>Unknown</td><td>OST_RemovedGridSeg_Obsolete_IdInWrongRange</td><td>-20000827</td></tr><tr><td>Unknown</td><td>OST_PointClouds</td><td>-2010001</td></tr><tr><td>Unknown</td><td>OST_AssemblyOrigin_Lines</td><td>-2009661</td></tr><tr><td>Unknown</td><td>OST_AssemblyOrigin_Planes</td><td>-2009660</td></tr><tr><td>Unknown</td><td>OST_AssemblyOrigin_Points</td><td>-2009659</td></tr><tr><td>Unknown</td><td>OST_AssemblyOrigin</td><td>-2009658</td></tr><tr><td>分析链接</td><td>OST_LinksAnalytical</td><td>-2009657</td></tr><tr><td>分析楼板基础标记</td><td>OST_FoundationSlabAnalyticalTags</td><td>-2009656</td></tr><tr><td>分析条形基础标记</td><td>OST_WallFoundationAnalyticalTags</td><td>-2009655</td></tr><tr><td>分析独立基础标记</td><td>OST_IsolatedFoundationAnalyticalTags</td><td>-2009654</td></tr><tr><td>分析墙标记</td><td>OST_WallAnalyticalTags</td><td>-2009653</td></tr><tr><td>分析楼层标记</td><td>OST_FloorAnalyticalTags</td><td>-2009652</td></tr><tr><td>分析柱标记</td><td>OST_ColumnAnalyticalTags</td><td>-2009651</td></tr><tr><td>分析支撑标记</td><td>OST_BraceAnalyticalTags</td><td>-2009650</td></tr><tr><td>分析梁标记</td><td>OST_BeamAnalyticalTags</td><td>-2009649</td></tr><tr><td>Unknown</td><td>OST_AnalyticalNodes_Lines</td><td>-2009648</td></tr><tr><td>Unknown</td><td>OST_AnalyticalNodes_Planes</td><td>-2009647</td></tr><tr><td>Unknown</td><td>OST_AnalyticalNodes_Points</td><td>-2009646</td></tr><tr><td>分析节点</td><td>OST_AnalyticalNodes</td><td>-2009645</td></tr><tr><td>Unknown</td><td>OST_RigidLinksAnalytical</td><td>-2009644</td></tr><tr><td>分析基础底板</td><td>OST_FoundationSlabAnalytical</td><td>-2009643</td></tr><tr><td>分析条形基础</td><td>OST_WallFoundationAnalytical</td><td>-2009642</td></tr><tr><td>分析独立基础</td><td>OST_IsolatedFoundationAnalytical</td><td>-2009641</td></tr><tr><td>分析墙</td><td>OST_WallAnalytical</td><td>-2009640</td></tr><tr><td>分析楼层</td><td>OST_FloorAnalytical</td><td>-2009639</td></tr><tr><td>顶部线段</td><td>OST_ColumnEndSegment</td><td>-2009638</td></tr><tr><td>基准线段</td><td>OST_ColumnStartSegment</td><td>-2009637</td></tr><tr><td>分析柱</td><td>OST_ColumnAnalytical</td><td>-2009636</td></tr><tr><td>末端线段</td><td>OST_BraceEndSegment</td><td>-2009635</td></tr><tr><td>起点线段</td><td>OST_BraceStartSegment</td><td>-2009634</td></tr><tr><td>分析支撑</td><td>OST_BraceAnalytical</td><td>-2009633</td></tr><tr><td>末端线段</td><td>OST_BeamEndSegment</td><td>-2009632</td></tr><tr><td>起点线段</td><td>OST_BeamStartSegment</td><td>-2009631</td></tr><tr><td>分析梁</td><td>OST_BeamAnalytical</td><td>-2009630</td></tr><tr><td>Unknown</td><td>OST_CompassSecondaryMonth</td><td>-2009624</td></tr><tr><td>Unknown</td><td>OST_CompassPrimaryMonth</td><td>-2009623</td></tr><tr><td>Unknown</td><td>OST_CompassSectionFilled</td><td>-2009622</td></tr><tr><td>Unknown</td><td>OST_LightLine</td><td>-2009621</td></tr><tr><td>Unknown</td><td>OST_MultiSurface</td><td>-2009620</td></tr><tr><td>Unknown</td><td>OST_SunSurface</td><td>-2009619</td></tr><tr><td>Unknown</td><td>OST_Analemma</td><td>-2009618</td></tr><tr><td>Unknown</td><td>OST_SunsetText</td><td>-2009617</td></tr><tr><td>Unknown</td><td>OST_CompassSection</td><td>-2009616</td></tr><tr><td>Unknown</td><td>OST_CompassOuter</td><td>-2009615</td></tr><tr><td>Unknown</td><td>OST_SunriseText</td><td>-2009614</td></tr><tr><td>Unknown</td><td>OST_CompassInner</td><td>-2009613</td></tr><tr><td>Unknown</td><td>OST_SunPath2</td><td>-2009612</td></tr><tr><td>Unknown</td><td>OST_SunPath1</td><td>-2009611</td></tr><tr><td>Unknown</td><td>OST_Sun</td><td>-2009610</td></tr><tr><td>Unknown</td><td>OST_SunStudy</td><td>-2009609</td></tr><tr><td>棍状符号</td><td>OST_StructuralTrussStickSymbols</td><td>-2009608</td></tr><tr><td>Unknown</td><td>OST_StructuralTrussHiddenLines</td><td>-2009607</td></tr><tr><td>Unknown</td><td>OST_TrussChord</td><td>-2009606</td></tr><tr><td>Unknown</td><td>OST_TrussWeb</td><td>-2009605</td></tr><tr><td>Unknown</td><td>OST_TrussBottomChordCurve</td><td>-2009604</td></tr><tr><td>Unknown</td><td>OST_TrussTopChordCurve</td><td>-2009603</td></tr><tr><td>Unknown</td><td>OST_TrussVertWebCurve</td><td>-2009602</td></tr><tr><td>Unknown</td><td>OST_TrussDiagWebCurve</td><td>-2009601</td></tr><tr><td>Unknown</td><td>OST_Truss</td><td>-2009600</td></tr><tr><td>Unknown</td><td>OST_RailingSystemTransitionHiddenLines_Deprecated</td><td>-2009549</td></tr><tr><td>Unknown</td><td>OST_RailingSystemTerminationHiddenLines_Deprecated</td><td>-20095</td></tr><tr><td>Unknown</td><td>OST_RailingSystemRailHiddenLines_Deprecated</td><td>-2009547</td></tr><tr><td>Unknown</td><td>OST_RailingSystemTopRailHiddenLines_Deprecated</td><td>-2009546</td></tr><tr><td>Unknown</td><td>OST_RailingSystemHandRailBracketHiddenLines_Deprecated</td><td>-2</td></tr><tr><td>Unknown</td><td>OST_RailingSystemHandRailHiddenLines_Deprecated</td><td>-2009544</td></tr><tr><td>Unknown</td><td>OST_RailingSystemPanelBracketHiddenLines_Deprecated</td><td>-2009</td></tr><tr><td>Unknown</td><td>OST_RailingSystemPanelHiddenLines_Deprecated</td><td>-2009542</td></tr><tr><td>Unknown</td><td>OST_RailingSystemBalusterHiddenLines_Deprecated</td><td>-2009541</td></tr><tr><td>Unknown</td><td>OST_RailingSystemPostHiddenLines_Deprecated</td><td>-2009540</td></tr><tr><td>Unknown</td><td>OST_RailingSystemSegmentHiddenLines_Deprecated</td><td>-2009539</td></tr><tr><td>Unknown</td><td>OST_RailingSystemHiddenLines_Deprecated</td><td>-2009538</td></tr><tr><td>Unknown</td><td>OST_StairStringer2012HiddenLines_Deprecated</td><td>-2009537</td></tr><tr><td>Unknown</td><td>OST_StairTread2012HiddenLines_Deprecated</td><td>-2009536</td></tr><tr><td>Unknown</td><td>OST_StairLanding2012HiddenLines_Deprecated</td><td>-2009535</td></tr><tr><td>Unknown</td><td>OST_StairRun2012HiddenLines_Deprecated</td><td>-2009534</td></tr><tr><td>Unknown</td><td>OST_Stairs2012HiddenLines_Deprecated</td><td>-2009533</td></tr><tr><td>隐藏线</td><td>OST_MassHiddenLines</td><td>-2009532</td></tr><tr><td>隐藏线</td><td>OST_CurtaSystemHiddenLines</td><td>-2009531</td></tr><tr><td>Unknown</td><td>OST_OBSOLETE_ElemArrayHiddenLines</td><td>-2009530</td></tr><tr><td>隐藏线</td><td>OST_EntourageHiddenLines</td><td>-2009529</td></tr><tr><td>隐藏线</td><td>OST_PlantingHiddenLines</td><td>-2009528</td></tr><tr><td>隐藏线</td><td>OST_SpecialityEquipmentHiddenLines</td><td>-2009527</td></tr><tr><td>隐藏线</td><td>OST_TopographyHiddenLines</td><td>-2009526</td></tr><tr><td>Unknown</td><td>OST_StructuralFramingSystemHiddenLines_Obsolete</td><td>-2009525</td></tr><tr><td>隐藏线</td><td>OST_SiteHiddenLines</td><td>-2009524</td></tr><tr><td>隐藏线</td><td>OST_RoadsHiddenLines</td><td>-2009523</td></tr><tr><td>隐藏线</td><td>OST_ParkingHiddenLines</td><td>-2009522</td></tr><tr><td>隐藏线</td><td>OST_PlumbingFixturesHiddenLines</td><td>-2009521</td></tr><tr><td>隐藏线</td><td>OST_MechanicalEquipmentHiddenLines</td><td>-2009520</td></tr><tr><td>隐藏线</td><td>OST_LightingFixturesHiddenLines</td><td>-2009519</td></tr><tr><td>隐藏线</td><td>OST_FurnitureSystemsHiddenLines</td><td>-2009518</td></tr><tr><td>隐藏线</td><td>OST_ElectricalFixturesHiddenLines</td><td>-2009517</td></tr><tr><td>隐藏线</td><td>OST_ElectricalEquipmentHiddenLines</td><td>-2009516</td></tr><tr><td>隐藏线</td><td>OST_CaseworkHiddenLines</td><td>-2009515</td></tr><tr><td>隐藏线</td><td>OST_DetailComponentsHiddenLines</td><td>-2009514</td></tr><tr><td>隐藏线</td><td>OST_ShaftOpeningHiddenLines</td><td>-2009513</td></tr><tr><td>隐藏线</td><td>OST_GenericModelHiddenLines</td><td>-2009512</td></tr><tr><td>隐藏线</td><td>OST_CurtainWallMullionsHiddenLines</td><td>-2009511</td></tr><tr><td>隐藏线</td><td>OST_CurtainWallPanelsHiddenLines</td><td>-2009510</td></tr><tr><td>隐藏线</td><td>OST_RampsHiddenLines</td><td>-2009509</td></tr><tr><td>隐藏线</td><td>OST_StairsRailingHiddenLines</td><td>-2009508</td></tr><tr><td>隐藏线</td><td>OST_StairsHiddenLines</td><td>-2009507</td></tr><tr><td>隐藏线</td><td>OST_ColumnsHiddenLines</td><td>-2009506</td></tr><tr><td>隐藏线</td><td>OST_FurnitureHiddenLines</td><td>-2009505</td></tr><tr><td>隐藏线</td><td>OST_LinesHiddenLines</td><td>-2009504</td></tr><tr><td>隐藏线</td><td>OST_CeilingsHiddenLines</td><td>-2009503</td></tr><tr><td>隐藏线</td><td>OST_RoofsHiddenLines</td><td>-2009502</td></tr><tr><td>隐藏线</td><td>OST_DoorsHiddenLines</td><td>-2009501</td></tr><tr><td>隐藏线</td><td>OST_WindowsHiddenLines</td><td>-2009500</td></tr><tr><td>轮廓标记</td><td>OST_StructConnectionProfilesTags</td><td>-2009064</td></tr><tr><td>孔标记</td><td>OST_StructConnectionHoleTags</td><td>-2009063</td></tr><tr><td>隐藏线</td><td>OST_CouplerHiddenLines</td><td>-2009062</td></tr><tr><td>结构钢筋接头标记</td><td>OST_CouplerTags</td><td>-2009061</td></tr><tr><td>结构钢筋接头</td><td>OST_Coupler</td><td>-2009060</td></tr><tr><td>焊接标记</td><td>OST_StructConnectionWeldTags</td><td>-2009059</td></tr><tr><td>剪力钉标记</td><td>OST_StructConnectionShearStudTags</td><td>-2009058</td></tr><tr><td>锚固件标记</td><td>OST_StructConnectionAnchorTags</td><td>-2009057</td></tr><tr><td>螺栓标记</td><td>OST_StructConnectionBoltTags</td><td>-2009056</td></tr><tr><td>板标记</td><td>OST_StructConnectionPlateTags</td><td>-2009055</td></tr><tr><td>隐藏线</td><td>OST_RebarHiddenLines</td><td>-2009050</td></tr><tr><td>Unknown</td><td>OST_StructSubConnections</td><td>-2009049</td></tr><tr><td>修改器</td><td>OST_StructConnectionModifiers</td><td>-2009047</td></tr><tr><td>焊缝</td><td>OST_StructConnectionWelds</td><td>-2009046</td></tr><tr><td>孔</td><td>OST_StructConnectionHoles</td><td>-2009045</td></tr><tr><td>剪力钉</td><td>OST_StructConnectionShearStuds</td><td>-2009044</td></tr><tr><td>Unknown</td><td>OST_StructConnectionNobleWarning</td><td>-2009043</td></tr><tr><td>其他</td><td>OST_StructConnectionOthers</td><td>-2009042</td></tr><tr><td>螺栓</td><td>OST_StructConnectionBolts</td><td>-2009041</td></tr><tr><td>结构连接标记</td><td>OST_StructConnectionTags</td><td>-2009040</td></tr><tr><td>锚固件</td><td>OST_StructConnectionAnchors</td><td>-2009039</td></tr><tr><td>平板</td><td>OST_StructConnectionPlates</td><td>-2009038</td></tr><tr><td>轮廓</td><td>OST_StructConnectionProfiles</td><td>-2009037</td></tr><tr><td>参照</td><td>OST_StructConnectionReference</td><td>-2009036</td></tr><tr><td>Unknown</td><td>OST_StructConnectionFailed</td><td>-2009035</td></tr><tr><td>Unknown</td><td>OST_StructConnectionStale</td><td>-2009034</td></tr><tr><td>符号</td><td>OST_StructConnectionSymbol</td><td>-2009033</td></tr><tr><td>隐藏线</td><td>OST_StructConnectionHiddenLines</td><td>-2009032</td></tr><tr><td>Unknown</td><td>OST_StructWeldLines</td><td>-2009031</td></tr><tr><td>结构连接</td><td>OST_StructConnections</td><td>-2009030</td></tr><tr><td>边界</td><td>OST_FabricAreaBoundary</td><td>-2009029</td></tr><tr><td>结构钢筋网符号</td><td>OST_FabricReinSpanSymbol</td><td>-2009028</td></tr><tr><td>钢筋网</td><td>OST_FabricReinforcementWire</td><td>-2009027</td></tr><tr><td>边界</td><td>OST_FabricReinforcementBoundary</td><td>-2009026</td></tr><tr><td>钢筋集切换</td><td>OST_RebarSetToggle</td><td>-2009025</td></tr><tr><td>Unknown</td><td>OST_FabricAreaTags</td><td>-2009023</td></tr><tr><td>结构钢筋网标记</td><td>OST_FabricReinforcementTags</td><td>-2009022</td></tr><tr><td>结构区域钢筋标记</td><td>OST_AreaReinTags</td><td>-2009021</td></tr><tr><td>结构钢筋标记</td><td>OST_RebarTags</td><td>-2009020</td></tr><tr><td><钢筋网片></td><td>OST_FabricAreaSketchSheetsLines</td><td>-2009019</td></tr><tr><td><钢筋网外围></td><td>OST_FabricAreaSketchEnvelopeLines</td><td>-2009018</td></tr><tr><td>结构钢筋网区域</td><td>OST_FabricAreas</td><td>-2009017</td></tr><tr><td>结构钢筋网</td><td>OST_FabricReinforcement</td><td>-2009016</td></tr><tr><td>钢筋保护层参照</td><td>OST_RebarCover</td><td>-2009015</td></tr><tr><td>Unknown</td><td>OST_CoverType</td><td>-2009014</td></tr><tr><td>钢筋形状</td><td>OST_RebarShape</td><td>-2009013</td></tr><tr><td>边界</td><td>OST_PathReinBoundary</td><td>-2009012</td></tr><tr><td>结构路径钢筋标记</td><td>OST_PathReinTags</td><td>-2009011</td></tr><tr><td>结构路径钢筋符号</td><td>OST_PathReinSpanSymbol</td><td>-2009010</td></tr><tr><td>结构路径钢筋</td><td>OST_PathRein</td><td>-2009009</td></tr><tr><td>Unknown</td><td>OST_Cage</td><td>-2009008</td></tr><tr><td>Unknown</td><td>OST_AreaReinXVisibility</td><td>-2009007</td></tr><tr><td>边界</td><td>OST_AreaReinBoundary</td><td>-2009006</td></tr><tr><td>结构区域钢筋符号</td><td>OST_AreaReinSpanSymbol</td><td>-2009005</td></tr><tr><td>Unknown</td><td>OST_AreaReinSketchOverride</td><td>-2009004</td></tr><tr><td>结构区域钢筋</td><td>OST_AreaRein</td><td>-2009003</td></tr><tr><td>Unknown</td><td>OST_RebarLines</td><td>-2009002</td></tr><tr><td>Unknown</td><td>OST_RebarSketchLines</td><td>-2009001</td></tr><tr><td>结构钢筋</td><td>OST_Rebar</td><td>-2009000</td></tr><tr><td>隔热层</td><td>OST_FabricationPipeworkInsulation</td><td>-2008221</td></tr><tr><td>内衬</td><td>OST_FabricationDuctworkLining</td><td>-2008220</td></tr><tr><td>降</td><td>OST_FabricationContainmentDrop</td><td>-2008219</td></tr><tr><td>升</td><td>OST_FabricationContainmentRise</td><td>-2008218</td></tr><tr><td>降</td><td>OST_FabricationPipeworkDrop</td><td>-2008217</td></tr><tr><td>升</td><td>OST_FabricationPipeworkRise</td><td>-2008216</td></tr><tr><td>符号</td><td>OST_FabricationContainmentSymbology</td><td>-2008215</td></tr><tr><td>中心线</td><td>OST_FabricationContainmentCenterLine</td><td>-2008214</td></tr><tr><td>MEP 预制保护层标记</td><td>OST_FabricationContainmentTags</td><td>-2008213</td></tr><tr><td>MEP 预制保护层</td><td>OST_FabricationContainment</td><td>-2008212</td></tr><tr><td>符号</td><td>OST_FabricationPipeworkSymbology</td><td>-2008211</td></tr><tr><td>中心线</td><td>OST_FabricationPipeworkCenterLine</td><td>-2008210</td></tr><tr><td>MEP 预制管道标记</td><td>OST_FabricationPipeworkTags</td><td>-2008209</td></tr><tr><td>MEP 预制管道</td><td>OST_FabricationPipework</td><td>-2008208</td></tr><tr><td>符号</td><td>OST_FabricationDuctworkSymbology</td><td>-2008207</td></tr><tr><td>降</td><td>OST_FabricationDuctworkDrop</td><td>-2008206</td></tr><tr><td>升</td><td>OST_FabricationDuctworkRise</td><td>-2008205</td></tr><tr><td>MEP 预制支架标记</td><td>OST_FabricationHangerTags</td><td>-2008204</td></tr><tr><td>MEP 预制支架</td><td>OST_FabricationHangers</td><td>-2008203</td></tr><tr><td>Unknown</td><td>OST_OBSOLETE_FabricationPartsTmpGraphicDropDrag</td><td>-200820</td></tr><tr><td>Unknown</td><td>OST_FabricationPartsTmpGraphicDrag</td><td>-2008201</td></tr><tr><td>Unknown</td><td>OST_OBSOLETE_FabricationPartsTmpGraphicDrop</td><td>-2008200</td></tr><tr><td>Unknown</td><td>OST_FabricationPartsTmpGraphicEnd</td><td>-2008199</td></tr><tr><td>隔热层</td><td>OST_FabricationDuctworkInsulation</td><td>-2008198</td></tr><tr><td>Unknown</td><td>OST_LayoutNodes</td><td>-2008197</td></tr><tr><td>中心线</td><td>OST_FabricationDuctworkCenterLine</td><td>-2008196</td></tr><tr><td>Unknown</td><td>OST_FabricationServiceElements</td><td>-2008195</td></tr><tr><td>MEP 预制管网标记</td><td>OST_FabricationDuctworkTags</td><td>-2008194</td></tr><tr><td>MEP 预制管网</td><td>OST_FabricationDuctwork</td><td>-2008193</td></tr><tr><td>Unknown</td><td>OST_LayoutPathBase_Pipings</td><td>-2008192</td></tr><tr><td>Unknown</td><td>OST_NumberingSchemas</td><td>-2008191</td></tr><tr><td>Unknown</td><td>OST_DivisionRules</td><td>-2008190</td></tr><tr><td>着色</td><td>OST_gbXML_Shade</td><td>-2008187</td></tr><tr><td>分析表面</td><td>OST_AnalyticSurfaces</td><td>-2008186</td></tr><tr><td>分析空间</td><td>OST_AnalyticSpaces</td><td>-2008185</td></tr><tr><td>空气洞口</td><td>OST_gbXML_OpeningAir</td><td>-2008184</td></tr><tr><td>非推拉门</td><td>OST_gbXML_NonSlidingDoor</td><td>-2008183</td></tr><tr><td>推拉门</td><td>OST_gbXML_SlidingDoor</td><td>-2008182</td></tr><tr><td>可操作天窗</td><td>OST_gbXML_OperableSkylight</td><td>-2008181</td></tr><tr><td>固定天窗</td><td>OST_gbXML_FixedSkylight</td><td>-2008180</td></tr><tr><td>可操作窗口</td><td>OST_gbXML_OperableWindow</td><td>-2008179</td></tr><tr><td>固定窗</td><td>OST_gbXML_FixedWindow</td><td>-2008178</td></tr><tr><td>地下天花板</td><td>OST_gbXML_UndergroundCeiling</td><td>-2008177</td></tr><tr><td>地下板</td><td>OST_gbXML_UndergroundSlab</td><td>-2008176</td></tr><tr><td>地下墙</td><td>OST_gbXML_UndergroundWall</td><td>-2008175</td></tr><tr><td>空气曲面</td><td>OST_gbXML_SurfaceAir</td><td>-2008174</td></tr><tr><td>天花板</td><td>OST_gbXML_Ceiling</td><td>-2008173</td></tr><tr><td>内部楼板</td><td>OST_gbXML_InteriorFloor</td><td>-2008172</td></tr><tr><td>内墙</td><td>OST_gbXML_InteriorWall</td><td>-2008171</td></tr><tr><td>平整表面上的板</td><td>OST_gbXML_SlabOnGrade</td><td>-2008170</td></tr><tr><td>活动楼板</td><td>OST_gbXML_RaisedFloor</td><td>-2008169</td></tr><tr><td>屋顶</td><td>OST_gbXML_Roof</td><td>-2008168</td></tr><tr><td>外墙</td><td>OST_gbXML_ExteriorWall</td><td>-2008167</td></tr><tr><td>Unknown</td><td>OST_DivisionProfile</td><td>-2008165</td></tr><tr><td>Unknown</td><td>OST_SplitterProfile</td><td>-2008164</td></tr><tr><td>管段</td><td>OST_PipeSegments</td><td>-2008163</td></tr><tr><td>Unknown</td><td>OST_GraphicalWarning_OpenConnector</td><td>-2008162</td></tr><tr><td>管道占位符</td><td>OST_PlaceHolderPipes</td><td>-2008161</td></tr><tr><td>风管占位符</td><td>OST_PlaceHolderDucts</td><td>-2008160</td></tr><tr><td>参照线</td><td>OST_PipingSystem_Reference_Visibility</td><td>-2008159</td></tr><tr><td>Unknown</td><td>OST_PipingSystem_Reference</td><td>-2008158</td></tr><tr><td>参照线</td><td>OST_DuctSystem_Reference_Visibility</td><td>-2008157</td></tr><tr><td>Unknown</td><td>OST_DuctSystem_Reference</td><td>-2008156</td></tr><tr><td>管道隔热层标记</td><td>OST_PipeInsulationsTags</td><td>-2008155</td></tr><tr><td>风管内衬标记</td><td>OST_DuctLiningsTags</td><td>-2008154</td></tr><tr><td>风管隔热层标记</td><td>OST_DuctInsulationsTags</td><td>-2008153</td></tr><tr><td>电气备件/空间电路</td><td>OST_ElectricalInternalCircuits</td><td>-2008152</td></tr><tr><td>配电盘明细表图形</td><td>OST_PanelScheduleGraphics</td><td>-2008151</td></tr><tr><td>电缆桥架管路</td><td>OST_CableTrayRun</td><td>-2008150</td></tr><tr><td>线管管路</td><td>OST_ConduitRun</td><td>-2008149</td></tr><tr><td>Unknown</td><td>OST_ParamElemElectricalLoadClassification</td><td>-2008148</td></tr><tr><td>Unknown</td><td>OST_DataPanelScheduleTemplates</td><td>-2008147</td></tr><tr><td>Unknown</td><td>OST_SwitchboardScheduleTemplates</td><td>-2008146</td></tr><tr><td>Unknown</td><td>OST_BranchPanelScheduleTemplates</td><td>-2008145</td></tr><tr><td>Unknown</td><td>OST_ConduitStandards</td><td>-2008144</td></tr><tr><td>Unknown</td><td>OST_ElectricalLoadClassifications</td><td>-2008143</td></tr><tr><td>Unknown</td><td>OST_ElectricalDemandFactorDefinitions</td><td>-2008142</td></tr><tr><td>中心线</td><td>OST_ConduitFittingCenterLine</td><td>-2008141</td></tr><tr><td>中心线</td><td>OST_CableTrayFittingCenterLine</td><td>-2008140</td></tr><tr><td>中心线</td><td>OST_ConduitCenterLine</td><td>-2008139</td></tr><tr><td>降</td><td>OST_ConduitDrop</td><td>-2008138</td></tr><tr><td>升</td><td>OST_ConduitRiseDrop</td><td>-2008137</td></tr><tr><td>中心线</td><td>OST_CableTrayCenterLine</td><td>-2008136</td></tr><tr><td>降</td><td>OST_CableTrayDrop</td><td>-2008135</td></tr><tr><td>升</td><td>OST_CableTrayRiseDrop</td><td>-2008134</td></tr><tr><td>线管标记</td><td>OST_ConduitTags</td><td>-2008133</td></tr><tr><td>线管</td><td>OST_Conduit</td><td>-2008132</td></tr><tr><td>电缆桥架标记</td><td>OST_CableTrayTags</td><td>-2008131</td></tr><tr><td>电缆桥架</td><td>OST_CableTray</td><td>-2008130</td></tr><tr><td>线管配件标记</td><td>OST_ConduitFittingTags</td><td>-2008129</td></tr><tr><td>线管配件</td><td>OST_ConduitFitting</td><td>-2008128</td></tr><tr><td>电缆桥架配件标记</td><td>OST_CableTrayFittingTags</td><td>-2008127</td></tr><tr><td>电缆桥架配件</td><td>OST_CableTrayFitting</td><td>-2008126</td></tr><tr><td>布管系统配置</td><td>OST_RoutingPreferences</td><td>-2008125</td></tr><tr><td>风管内衬</td><td>OST_DuctLinings</td><td>-2008124</td></tr><tr><td>风管隔热层</td><td>OST_DuctInsulations</td><td>-2008123</td></tr><tr><td>管道隔热层</td><td>OST_PipeInsulations</td><td>-2008122</td></tr><tr><td>Unknown</td><td>OST_HVAC_Load_Schedules</td><td>-2008121</td></tr><tr><td>Unknown</td><td>OST_HVAC_Load_Building_Types</td><td>-2008120</td></tr><tr><td>Unknown</td><td>OST_HVAC_Load_Space_Types</td><td>-2008119</td></tr><tr><td>参照线</td><td>OST_HVAC_Zones_Reference_Visibility</td><td>-2008118</td></tr><tr><td>内部填充</td><td>OST_HVAC_Zones_InteriorFill_Visibility</td><td>-2008117</td></tr><tr><td>颜色填充</td><td>OST_HVAC_Zones_ColorFill</td><td>-2008116</td></tr><tr><td>分区标记</td><td>OST_ZoneTags</td><td>-2008115</td></tr><tr><td>Unknown</td><td>OST_LayoutPath_Bases</td><td>-2008114</td></tr><tr><td>Unknown</td><td>OST_WireTemperatureRatings</td><td>-2008113</td></tr><tr><td>Unknown</td><td>OST_WireInsulations</td><td>-2008112</td></tr><tr><td>Unknown</td><td>OST_WireMaterials</td><td>-2008111</td></tr><tr><td>Unknown</td><td>OST_HVAC_Zones_Reference</td><td>-2008110</td></tr><tr><td>Unknown</td><td>OST_HVAC_Zones_InteriorFill</td><td>-2008109</td></tr><tr><td>边界</td><td>OST_HVAC_Zones_Boundary</td><td>-2008108</td></tr><tr><td>HVAC 区</td><td>OST_HVAC_Zones</td><td>-2008107</td></tr><tr><td>Unknown</td><td>OST_Fluids</td><td>-2008106</td></tr><tr><td>Unknown</td><td>OST_PipeSchedules</td><td>-2008105</td></tr><tr><td>Unknown</td><td>OST_PipeMaterials</td><td>-2008104</td></tr><tr><td>Unknown</td><td>OST_PipeConnections</td><td>-2008103</td></tr><tr><td>Unknown</td><td>OST_EAConstructions</td><td>-2008102</td></tr><tr><td>开关系统</td><td>OST_SwitchSystem</td><td>-2008101</td></tr><tr><td>喷头标记</td><td>OST_SprinklerTags</td><td>-2008100</td></tr><tr><td>喷头</td><td>OST_Sprinklers</td><td>-2008099</td></tr><tr><td>Unknown</td><td>OST_RouteCurveBranch</td><td>-2008098</td></tr><tr><td>Unknown</td><td>OST_RouteCurveMain</td><td>-2008097</td></tr><tr><td>Unknown</td><td>OST_RouteCurve</td><td>-2008096</td></tr><tr><td>洞口</td><td>OST_GbXML_Opening</td><td>-2008095</td></tr><tr><td>地下</td><td>OST_GbXML_SType_Underground</td><td>-2008094</td></tr><tr><td>着色</td><td>OST_GbXML_SType_Shade</td><td>-2008093</td></tr><tr><td>外部</td><td>OST_GbXML_SType_Exterior</td><td>-2008092</td></tr><tr><td>内部</td><td>OST_GbXML_SType_Interior</td><td>-2008091</td></tr><tr><td>分析表面</td><td>OST_GbXMLFaces</td><td>-2008090</td></tr><tr><td>回路方向</td><td>OST_WireHomeRunArrows</td><td>-2008089</td></tr><tr><td>灯具标记</td><td>OST_LightingDeviceTags</td><td>-2008088</td></tr><tr><td>灯具</td><td>OST_LightingDevices</td><td>-2008087</td></tr><tr><td>火警设备标记</td><td>OST_FireAlarmDeviceTags</td><td>-2008086</td></tr><tr><td>火警设备</td><td>OST_FireAlarmDevices</td><td>-2008085</td></tr><tr><td>数据设备标记</td><td>OST_DataDeviceTags</td><td>-2008084</td></tr><tr><td>数据设备</td><td>OST_DataDevices</td><td>-2008083</td></tr><tr><td>通讯设备标记</td><td>OST_CommunicationDeviceTags</td><td>-2008082</td></tr><tr><td>通讯设备</td><td>OST_CommunicationDevices</td><td>-2008081</td></tr><tr><td>安全设备标记</td><td>OST_SecurityDeviceTags</td><td>-2008080</td></tr><tr><td>安全设备</td><td>OST_SecurityDevices</td><td>-2008079</td></tr><tr><td>护理呼叫设备标记</td><td>OST_NurseCallDeviceTags</td><td>-2008078</td></tr><tr><td>护理呼叫设备</td><td>OST_NurseCallDevices</td><td>-2008077</td></tr><tr><td>电话设备标记</td><td>OST_TelephoneDeviceTags</td><td>-2008076</td></tr><tr><td>电话设备</td><td>OST_TelephoneDevices</td><td>-2008075</td></tr><tr><td>导线记号</td><td>OST_WireTickMarks</td><td>-2008074</td></tr><tr><td>Unknown</td><td>OST_PipeFittingInsulation</td><td>-2008073</td></tr><tr><td>中心线</td><td>OST_PipeFittingCenterLine</td><td>-2008072</td></tr><tr><td>Unknown</td><td>OST_FlexPipeCurvesInsulation</td><td>-2008071</td></tr><tr><td>Unknown</td><td>OST_PipeCurvesInsulation</td><td>-2008070</td></tr><tr><td>降</td><td>OST_PipeCurvesDrop</td><td>-2008069</td></tr><tr><td>Unknown</td><td>OST_DuctFittingLining</td><td>-2008068</td></tr><tr><td>Unknown</td><td>OST_DuctFittingInsulation</td><td>-2008067</td></tr><tr><td>中心线</td><td>OST_DuctFittingCenterLine</td><td>-2008066</td></tr><tr><td>Unknown</td><td>OST_FlexDuctCurvesInsulation</td><td>-2008065</td></tr><tr><td>Unknown</td><td>OST_DuctCurvesLining</td><td>-2008064</td></tr><tr><td>Unknown</td><td>OST_DuctCurvesInsulation</td><td>-2008063</td></tr><tr><td>降</td><td>OST_DuctCurvesDrop</td><td>-2008062</td></tr><tr><td>风管管件标记</td><td>OST_DuctFittingTags</td><td>-2008061</td></tr><tr><td>管件标记</td><td>OST_PipeFittingTags</td><td>-2008060</td></tr><tr><td>管道颜色填充</td><td>OST_PipeColorFills</td><td>-2008059</td></tr><tr><td>管道颜色填充图例</td><td>OST_PipeColorFillLegends</td><td>-2008058</td></tr><tr><td>导线标记</td><td>OST_WireTags</td><td>-2008057</td></tr><tr><td>管道附件标记</td><td>OST_PipeAccessoryTags</td><td>-2008056</td></tr><tr><td>管道附件</td><td>OST_PipeAccessory</td><td>-2008055</td></tr><tr><td>升</td><td>OST_PipeCurvesRiseDrop</td><td>-2008054</td></tr><tr><td>填充图案</td><td>OST_FlexPipeCurvesPattern</td><td>-2008053</td></tr><tr><td>Unknown</td><td>OST_FlexPipeCurvesContour</td><td>-2008052</td></tr><tr><td>中心线</td><td>OST_FlexPipeCurvesCenterLine</td><td>-2008051</td></tr><tr><td>软管</td><td>OST_FlexPipeCurves</td><td>-2008050</td></tr><tr><td>管件</td><td>OST_PipeFitting</td><td>-2008049</td></tr><tr><td>软管标记</td><td>OST_FlexPipeTags</td><td>-2008048</td></tr><tr><td>管道标记</td><td>OST_PipeTags</td><td>-2008047</td></tr><tr><td>Unknown</td><td>OST_PipeCurvesContour</td><td>-2008046</td></tr><tr><td>中心线</td><td>OST_PipeCurvesCenterLine</td><td>-2008045</td></tr><tr><td>管道</td><td>OST_PipeCurves</td><td>-2008044</td></tr><tr><td>管道系统</td><td>OST_PipingSystem</td><td>-2008043</td></tr><tr><td>Unknown</td><td>OST_ElectricalDemandFactor</td><td>-2008042</td></tr><tr><td>Unknown</td><td>OST_ElecDistributionSys</td><td>-2008041</td></tr><tr><td>Unknown</td><td>OST_ElectricalVoltage</td><td>-2008040</td></tr><tr><td>导线</td><td>OST_Wire</td><td>-2008039</td></tr><tr><td>Unknown</td><td>OST_ElectricalCircuitTags</td><td>-2008038</td></tr><tr><td>电路</td><td>OST_ElectricalCircuit</td><td>-2008037</td></tr><tr><td>升</td><td>OST_DuctCurvesRiseDrop</td><td>-2008036</td></tr><tr><td>填充图案</td><td>OST_FlexDuctCurvesPattern</td><td>-2008023</td></tr><tr><td>Unknown</td><td>OST_FlexDuctCurvesContour</td><td>-2008022</td></tr><tr><td>中心线</td><td>OST_FlexDuctCurvesCenterLine</td><td>-2008021</td></tr><tr><td>软风管</td><td>OST_FlexDuctCurves</td><td>-2008020</td></tr><tr><td>风管附件标记</td><td>OST_DuctAccessoryTags</td><td>-2008017</td></tr><tr><td>风管附件</td><td>OST_DuctAccessory</td><td>-2008016</td></tr><tr><td>风管系统</td><td>OST_DuctSystem</td><td>-2008015</td></tr><tr><td>风道末端标记</td><td>OST_DuctTerminalTags</td><td>-2008014</td></tr><tr><td>风道末端</td><td>OST_DuctTerminal</td><td>-2008013</td></tr><tr><td>风管管件</td><td>OST_DuctFitting</td><td>-2008010</td></tr><tr><td>风管颜色填充</td><td>OST_DuctColorFills</td><td>-2008005</td></tr><tr><td>软风管标记</td><td>OST_FlexDuctTags</td><td>-2008004</td></tr><tr><td>风管标记</td><td>OST_DuctTags</td><td>-2008003</td></tr><tr><td>Unknown</td><td>OST_DuctCurvesContour</td><td>-2008002</td></tr><tr><td>中心线</td><td>OST_DuctCurvesCenterLine</td><td>-2008001</td></tr><tr><td>风管</td><td>OST_DuctCurves</td><td>-2008000</td></tr><tr><td>风管颜色填充图例</td><td>OST_DuctColorFillLegends</td><td>-2007004</td></tr><tr><td>Unknown</td><td>OST_ConnectorElemZAxis</td><td>-2007003</td></tr><tr><td>Unknown</td><td>OST_ConnectorElemYAxis</td><td>-2007002</td></tr><tr><td>Unknown</td><td>OST_ConnectorElemXAxis</td><td>-2007001</td></tr><tr><td>Unknown</td><td>OST_ConnectorElem</td><td>-2007000</td></tr><tr><td>Unknown</td><td>OST_BridgeBearingTags</td><td>-2006178</td></tr><tr><td>Unknown</td><td>OST_BridgeGirderTags</td><td>-2006177</td></tr><tr><td>Unknown</td><td>OST_BridgeFoundationTags</td><td>-2006176</td></tr><tr><td>Unknown</td><td>OST_BridgeDeckTags</td><td>-2006175</td></tr><tr><td>Unknown</td><td>OST_BridgeArchTags</td><td>-2006174</td></tr><tr><td>Unknown</td><td>OST_BridgeCableTags</td><td>-2006173</td></tr><tr><td>Unknown</td><td>OST_BridgeTowerTags</td><td>-2006172</td></tr><tr><td>Unknown</td><td>OST_BridgePierTags</td><td>-2006171</td></tr><tr><td>Unknown</td><td>OST_BridgeAbutmentTags</td><td>-2006170</td></tr><tr><td>Unknown</td><td>OST_BridgeBearingHiddenLines</td><td>-2006158</td></tr><tr><td>Unknown</td><td>OST_BridgeGirderHiddenLines</td><td>-2006157</td></tr><tr><td>Unknown</td><td>OST_BridgeFoundationHiddenLines</td><td>-2006156</td></tr><tr><td>Unknown</td><td>OST_BridgeDeckHiddenLines</td><td>-2006155</td></tr><tr><td>Unknown</td><td>OST_BridgeArchHiddenLines</td><td>-2006154</td></tr><tr><td>Unknown</td><td>OST_BridgeCableHiddenLines</td><td>-2006153</td></tr><tr><td>Unknown</td><td>OST_BridgeTowerHiddenLines</td><td>-2006152</td></tr><tr><td>Unknown</td><td>OST_BridgePierHiddenLines</td><td>-2006151</td></tr><tr><td>Unknown</td><td>OST_BridgeAbutmentHiddenLines</td><td>-2006150</td></tr><tr><td>桥梁支座</td><td>OST_BridgeBearings</td><td>-2006138</td></tr><tr><td>桥梁大梁</td><td>OST_BridgeGirders</td><td>-2006137</td></tr><tr><td>桥梁基础</td><td>OST_BridgeFoundations</td><td>-2006136</td></tr><tr><td>桥面</td><td>OST_BridgeDecks</td><td>-2006135</td></tr><tr><td>桥拱</td><td>OST_BridgeArches</td><td>-2006134</td></tr><tr><td>桥梁缆索</td><td>OST_BridgeCables</td><td>-2006133</td></tr><tr><td>桥塔</td><td>OST_BridgeTowers</td><td>-2006132</td></tr><tr><td>桥墩</td><td>OST_BridgePiers</td><td>-2006131</td></tr><tr><td>桥台</td><td>OST_BridgeAbutments</td><td>-2006130</td></tr><tr><td>Unknown</td><td>OST_DesignOptions</td><td>-2006114</td></tr><tr><td>Unknown</td><td>OST_DesignOptionSets</td><td>-2006112</td></tr><tr><td>平面视图中的支撑符号</td><td>OST_StructuralBracePlanReps</td><td>-2006110</td></tr><tr><td>连接符号</td><td>OST_StructConnectionSymbols</td><td>-2006100</td></tr><tr><td>结构注释</td><td>OST_StructuralAnnotations</td><td>-2006090</td></tr><tr><td>云线批注标记</td><td>OST_RevisionCloudTags</td><td>-2006080</td></tr><tr><td>Unknown</td><td>OST_Revisions</td><td>-2006070</td></tr><tr><td>云线批注</td><td>OST_RevisionClouds</td><td>-2006060</td></tr><tr><td>Unknown</td><td>OST_EditCutProfile</td><td>-2006050</td></tr><tr><td>立面标记</td><td>OST_ElevationMarks</td><td>-2006045</td></tr><tr><td>轴网标头</td><td>OST_GridHeads</td><td>-2006040</td></tr><tr><td>标高标头</td><td>OST_LevelHeads</td><td>-2006020</td></tr><tr><td>Unknown</td><td>OST_DecalType</td><td>-2006002</td></tr><tr><td>Unknown</td><td>OST_DecalElement</td><td>-2006001</td></tr><tr><td>范围框</td><td>OST_VolumeOfInterest</td><td>-2006000</td></tr><tr><td>边界条件</td><td>OST_BoundaryConditions</td><td>-2005301</td></tr><tr><td>内部面荷载标记</td><td>OST_InternalAreaLoadTags</td><td>-2005255</td></tr><tr><td>内部线荷载标记</td><td>OST_InternalLineLoadTags</td><td>-2005254</td></tr><tr><td>内部点荷载标记</td><td>OST_InternalPointLoadTags</td><td>-2005253</td></tr><tr><td>面荷载标记</td><td>OST_AreaLoadTags</td><td>-2005252</td></tr><tr><td>线荷载标记</td><td>OST_LineLoadTags</td><td>-2005251</td></tr><tr><td>点荷载标记</td><td>OST_PointLoadTags</td><td>-2005250</td></tr><tr><td>地震荷载</td><td>OST_LoadCasesSeismic</td><td>-2005218</td></tr><tr><td>温度荷载</td><td>OST_LoadCasesTemperature</td><td>-2005217</td></tr><tr><td>偶然荷载</td><td>OST_LoadCasesAccidental</td><td>-2005216</td></tr><tr><td>屋顶活荷载</td><td>OST_LoadCasesRoofLive</td><td>-2005215</td></tr><tr><td>雪荷载</td><td>OST_LoadCasesSnow</td><td>-2005214</td></tr><tr><td>风荷载</td><td>OST_LoadCasesWind</td><td>-2005213</td></tr><tr><td>活荷载</td><td>OST_LoadCasesLive</td><td>-2005212</td></tr><tr><td>恒荷载</td><td>OST_LoadCasesDead</td><td>-2005211</td></tr><tr><td>结构荷载工况</td><td>OST_LoadCases</td><td>-2005210</td></tr><tr><td>内部面荷载</td><td>OST_InternalAreaLoads</td><td>-2005207</td></tr><tr><td>内部线荷载</td><td>OST_InternalLineLoads</td><td>-2005206</td></tr><tr><td>内部点荷载</td><td>OST_InternalPointLoads</td><td>-2005205</td></tr><tr><td>结构内部荷载</td><td>OST_InternalLoads</td><td>-2005204</td></tr><tr><td>面荷载</td><td>OST_AreaLoads</td><td>-2005203</td></tr><tr><td>线荷载</td><td>OST_LineLoads</td><td>-2005202</td></tr><tr><td>点荷载</td><td>OST_PointLoads</td><td>-2005201</td></tr><tr><td>结构荷载</td><td>OST_Loads</td><td>-2005200</td></tr><tr><td>结构梁系统标记</td><td>OST_BeamSystemTags</td><td>-2005130</td></tr><tr><td>基础跨方向符号</td><td>OST_FootingSpanDirectionSymbol</td><td>-2005111</td></tr><tr><td>跨方向符号</td><td>OST_SpanDirectionSymbol</td><td>-2005110</td></tr><tr><td>Unknown</td><td>OST_SpotSlopesSymbols</td><td>-2005102</td></tr><tr><td>Unknown</td><td>OST_SpotCoordinateSymbols</td><td>-2005101</td></tr><tr><td>高程点符号</td><td>OST_SpotElevSymbols</td><td>-2005100</td></tr><tr><td>Unknown</td><td>OST_StructuralConnectionHandlerTags_Deprecated</td><td>-2005031</td></tr><tr><td>结构桁架标记</td><td>OST_TrussTags</td><td>-2005030</td></tr><tr><td>注释记号标记</td><td>OST_KeynoteTags</td><td>-2005029</td></tr><tr><td>详图项目标记</td><td>OST_DetailComponentTags</td><td>-2005028</td></tr><tr><td>材质标记</td><td>OST_MaterialTags</td><td>-2005027</td></tr><tr><td>楼板标记</td><td>OST_FloorTags</td><td>-2005026</td></tr><tr><td>幕墙系统标记</td><td>OST_CurtaSystemTags</td><td>-2005025</td></tr><tr><td>Unknown</td><td>OST_HostFinTags</td><td>-2005024</td></tr><tr><td>楼梯标记</td><td>OST_StairsTags</td><td>-2005023</td></tr><tr><td>多类别标记</td><td>OST_MultiCategoryTags</td><td>-2005022</td></tr><tr><td>植物标记</td><td>OST_PlantingTags</td><td>-2005021</td></tr><tr><td>面积标记</td><td>OST_AreaTags</td><td>-2005020</td></tr><tr><td>结构基础标记</td><td>OST_StructuralFoundationTags</td><td>-2005019</td></tr><tr><td>结构柱标记</td><td>OST_StructuralColumnTags</td><td>-2005018</td></tr><tr><td>停车场标记</td><td>OST_ParkingTags</td><td>-2005017</td></tr><tr><td>场地标记</td><td>OST_SiteTags</td><td>-2005016</td></tr><tr><td>结构框架标记</td><td>OST_StructuralFramingTags</td><td>-2005015</td></tr><tr><td>专用设备标记</td><td>OST_SpecialityEquipmentTags</td><td>-2005014</td></tr><tr><td>常规模型标记</td><td>OST_GenericModelTags</td><td>-2005013</td></tr><tr><td>幕墙嵌板标记</td><td>OST_CurtainWallPanelTags</td><td>-2005012</td></tr><tr><td>墙标记</td><td>OST_WallTags</td><td>-2005011</td></tr><tr><td>卫浴装置标记</td><td>OST_PlumbingFixtureTags</td><td>-2005010</td></tr><tr><td>机电设备标记</td><td>OST_MechanicalEquipmentTags</td><td>-2005009</td></tr><tr><td>照明设备标记</td><td>OST_LightingFixtureTags</td><td>-2005008</td></tr><tr><td>家具系统标记</td><td>OST_FurnitureSystemTags</td><td>-2005007</td></tr><tr><td>家具标记</td><td>OST_FurnitureTags</td><td>-2005006</td></tr><tr><td>电气装置标记</td><td>OST_ElectricalFixtureTags</td><td>-2005004</td></tr><tr><td>电气设备标记</td><td>OST_ElectricalEquipmentTags</td><td>-2005003</td></tr><tr><td>天花板标记</td><td>OST_CeilingTags</td><td>-2005002</td></tr><tr><td>橱柜标记</td><td>OST_CaseworkTags</td><td>-2005001</td></tr><tr><td>Unknown</td><td>OST_Tags</td><td>-2005000</td></tr><tr><td>颜色填充</td><td>OST_MEPSpaceColorFill</td><td>-2003605</td></tr><tr><td>Unknown</td><td>OST_MEPSpaceReference</td><td>-2003604</td></tr><tr><td>Unknown</td><td>OST_MEPSpaceInteriorFill</td><td>-2003603</td></tr><tr><td>参照</td><td>OST_MEPSpaceReferenceVisibility</td><td>-2003602</td></tr><tr><td>内墙</td><td>OST_MEPSpaceInteriorFillVisibility</td><td>-2003601</td></tr><tr><td>空间</td><td>OST_MEPSpaces</td><td>-2003600</td></tr><tr><td>Unknown</td><td>OST_StackedWalls</td><td>-2003500</td></tr><tr><td>Unknown</td><td>OST_MassGlazingAll</td><td>-2003423</td></tr><tr><td>Unknown</td><td>OST_MassFloorsAll</td><td>-2003422</td></tr><tr><td>Unknown</td><td>OST_MassWallsAll</td><td>-2003421</td></tr><tr><td>Unknown</td><td>OST_MassExteriorWallUnderground</td><td>-2003420</td></tr><tr><td>Unknown</td><td>OST_MassSlab</td><td>-2003419</td></tr><tr><td>体量着色</td><td>OST_MassShade</td><td>-2003418</td></tr><tr><td>体量洞口</td><td>OST_MassOpening</td><td>-2003417</td></tr><tr><td>体量天窗</td><td>OST_MassSkylights</td><td>-2003416</td></tr><tr><td>体量玻璃</td><td>OST_MassGlazing</td><td>-2003415</td></tr><tr><td>体量屋顶</td><td>OST_MassRoof</td><td>-2003414</td></tr><tr><td>体量外墙</td><td>OST_MassExteriorWall</td><td>-2003413</td></tr><tr><td>体量内墙</td><td>OST_MassInteriorWall</td><td>-2003412</td></tr><tr><td>体量分区</td><td>OST_MassZone</td><td>-2003411</td></tr><tr><td>体量楼层标记</td><td>OST_MassAreaFaceTags</td><td>-2003410</td></tr><tr><td>Unknown</td><td>OST_HostTemplate</td><td>-2003409</td></tr><tr><td>Unknown</td><td>OST_MassFaceSplitter</td><td>-2003408</td></tr><tr><td>Unknown</td><td>OST_MassCutter</td><td>-2003407</td></tr><tr><td>Unknown</td><td>OST_ZoningEnvelope</td><td>-2003406</td></tr><tr><td>体量标记</td><td>OST_MassTags</td><td>-2003405</td></tr><tr><td>形式</td><td>OST_MassForm</td><td>-2003404</td></tr><tr><td>体量楼层</td><td>OST_MassFloor</td><td>-2003403</td></tr><tr><td>体量</td><td>OST_Mass</td><td>-2003400</td></tr><tr><td>Unknown</td><td>OST_DividedSurface_DiscardedDivisionLines</td><td>-2003333</td></tr><tr><td>Unknown</td><td>OST_DividedSurfaceBelt</td><td>-2003332</td></tr><tr><td>Unknown</td><td>OST_TilePatterns</td><td>-2003331</td></tr><tr><td>Unknown</td><td>OST_AlwaysExcludedInAllViews</td><td>-2003330</td></tr><tr><td>Unknown</td><td>OST_DividedSurface_TransparentFace</td><td>-2003329</td></tr><tr><td>Unknown</td><td>OST_DividedSurface_PreDividedSurface</td><td>-2003328</td></tr><tr><td>图案填充</td><td>OST_DividedSurface_PatternFill</td><td>-2003327</td></tr><tr><td>填充图案线</td><td>OST_DividedSurface_PatternLines</td><td>-2003326</td></tr><tr><td>网格线</td><td>OST_DividedSurface_Gridlines</td><td>-2003325</td></tr><tr><td>节点</td><td>OST_DividedSurface_Nodes</td><td>-2003324</td></tr><tr><td>Unknown</td><td>OST_DividedSurface</td><td>-2003323</td></tr><tr><td>Unknown</td><td>OST_RepeatingDetailLines</td><td>-2003321</td></tr><tr><td>向下箭头</td><td>OST_RampsDownArrow</td><td>-2003308</td></tr><tr><td>向上箭头</td><td>OST_RampsUpArrow</td><td>-2003307</td></tr><tr><td>文字(向下)</td><td>OST_RampsDownText</td><td>-2003306</td></tr><tr><td>文字(向上)</td><td>OST_RampsUpText</td><td>-2003305</td></tr><tr><td>超出截面线的梯边梁</td><td>OST_RampsStringerAboveCut</td><td>-2003304</td></tr><tr><td>梯边梁</td><td>OST_RampsStringer</td><td>-2003303</td></tr><tr><td>坡道超出截面线</td><td>OST_RampsAboveCut</td><td>-2003302</td></tr><tr><td>Unknown</td><td>OST_RampsIncomplete</td><td>-2003301</td></tr><tr><td>Unknown</td><td>OST_TrussDummy</td><td>-2003300</td></tr><tr><td>Unknown</td><td>OST_ZoneSchemes</td><td>-2003225</td></tr><tr><td>Unknown</td><td>OST_AreaSchemes</td><td>-2003201</td></tr><tr><td>面积</td><td>OST_Areas</td><td>-2003200</td></tr><tr><td>项目信息</td><td>OST_ProjectInformation</td><td>-2003101</td></tr><tr><td>图纸</td><td>OST_Sheets</td><td>-2003100</td></tr><tr><td>Unknown</td><td>OST_ProfileFamilies</td><td>-2003000</td></tr><tr><td>详图项目</td><td>OST_DetailComponents</td><td>-2002000</td></tr><tr><td>屋檐底板</td><td>OST_RoofSoffit</td><td>-2001393</td></tr><tr><td>楼板边缘</td><td>OST_EdgeSlab</td><td>-2001392</td></tr><tr><td>檐沟</td><td>OST_Gutter</td><td>-2001391</td></tr><tr><td>封檐板</td><td>OST_Fascia</td><td>-2001390</td></tr><tr><td>环境</td><td>OST_Entourage</td><td>-2001370</td></tr><tr><td>植物</td><td>OST_Planting</td><td>-2001360</td></tr><tr><td>Unknown</td><td>OST_Blocks</td><td>-2001359</td></tr><tr><td>隐藏线</td><td>OST_StructuralStiffenerHiddenLines</td><td>-2001358</td></tr><tr><td>定位线</td><td>OST_StructuralColumnLocationLine</td><td>-2001357</td></tr><tr><td>定位线</td><td>OST_StructuralFramingLocationLine</td><td>-2001356</td></tr><tr><td>结构加强板标记</td><td>OST_StructuralStiffenerTags</td><td>-2001355</td></tr><tr><td>结构加强板</td><td>OST_StructuralStiffener</td><td>-2001354</td></tr><tr><td>Unknown</td><td>OST_FootingAnalyticalGeometry</td><td>-2001353</td></tr><tr><td>RVT 链接</td><td>OST_RvtLinks</td><td>-2001352</td></tr><tr><td>Unknown</td><td>OST_Automatic</td><td>-2001351</td></tr><tr><td>专用设备</td><td>OST_SpecialityEquipment</td><td>-2001350</td></tr><tr><td>刚性链接</td><td>OST_ColumnAnalyticalRigidLinks</td><td>-2001344</td></tr><tr><td>次等高线</td><td>OST_SecondaryTopographyContours</td><td>-2001343</td></tr><tr><td>主等高线</td><td>OST_TopographyContours</td><td>-2001342</td></tr><tr><td>三角形边缘</td><td>OST_TopographySurface</td><td>-2001341</td></tr><tr><td>地形</td><td>OST_Topography</td><td>-2001340</td></tr><tr><td>地形链接</td><td>OST_TopographyLink</td><td>-2001339</td></tr><tr><td>结构桁架</td><td>OST_StructuralTruss</td><td>-2001336</td></tr><tr><td>棍状符号</td><td>OST_StructuralColumnStickSymbols</td><td>-2001335</td></tr><tr><td>隐藏线</td><td>OST_HiddenStructuralColumnLines</td><td>-2001334</td></tr><tr><td>刚性链接</td><td>OST_AnalyticalRigidLinks</td><td>-2001333</td></tr><tr><td>Unknown</td><td>OST_ColumnAnalyticalGeometry</td><td>-2001332</td></tr><tr><td>Unknown</td><td>OST_FramingAnalyticalGeometry</td><td>-2001331</td></tr><tr><td>结构柱</td><td>OST_StructuralColumns</td><td>-2001330</td></tr><tr><td>隐藏线</td><td>OST_HiddenStructuralFramingLines</td><td>-2001329</td></tr><tr><td>Unknown</td><td>OST_KickerBracing</td><td>-2001328</td></tr><tr><td>结构梁系统</td><td>OST_StructuralFramingSystem</td><td>-2001327</td></tr><tr><td>Unknown</td><td>OST_VerticalBracing</td><td>-2001326</td></tr><tr><td>Unknown</td><td>OST_HorizontalBracing</td><td>-2001325</td></tr><tr><td>Unknown</td><td>OST_Purlin</td><td>-2001324</td></tr><tr><td>Unknown</td><td>OST_Joist</td><td>-2001323</td></tr><tr><td>Unknown</td><td>OST_Girder</td><td>-2001322</td></tr><tr><td>Unknown</td><td>OST_StructuralFramingOther</td><td>-2001321</td></tr><tr><td>结构框架</td><td>OST_StructuralFraming</td><td>-2001320</td></tr><tr><td>隐藏线</td><td>OST_HiddenStructuralFoundationLines</td><td>-2001302</td></tr><tr><td>结构基础</td><td>OST_StructuralFoundation</td><td>-2001300</td></tr><tr><td>Unknown</td><td>OST_BasePointAxisZ</td><td>-2001275</td></tr><tr><td>Unknown</td><td>OST_BasePointAxisY</td><td>-2001274</td></tr><tr><td>Unknown</td><td>OST_BasePointAxisX</td><td>-2001273</td></tr><tr><td>测量点</td><td>OST_SharedBasePoint</td><td>-2001272</td></tr><tr><td>项目基点</td><td>OST_ProjectBasePoint</td><td>-2001271</td></tr><tr><td>Unknown</td><td>OST_SiteRegion</td><td>-2001270</td></tr><tr><td>建筑红线线段标记</td><td>OST_SitePropertyLineSegmentTags</td><td>-2001269</td></tr><tr><td>建筑红线线段</td><td>OST_SitePropertyLineSegment</td><td>-2001268</td></tr><tr><td>属性标记</td><td>OST_SitePropertyTags</td><td>-2001267</td></tr><tr><td>边界点</td><td>OST_SitePointBoundary</td><td>-2001266</td></tr><tr><td>建筑红线</td><td>OST_SiteProperty</td><td>-2001265</td></tr><tr><td>建筑地坪</td><td>OST_BuildingPad</td><td>-2001263</td></tr><tr><td>内部点</td><td>OST_SitePoint</td><td>-2001262</td></tr><tr><td>Unknown</td><td>OST_SiteSurface</td><td>-2001261</td></tr><tr><td>场地</td><td>OST_Site</td><td>-2001260</td></tr><tr><td>Unknown</td><td>OST_Sewer</td><td>-2001240</td></tr><tr><td>道路</td><td>OST_Roads</td><td>-2001220</td></tr><tr><td>Unknown</td><td>OST_Property</td><td>-2001200</td></tr><tr><td>停车场</td><td>OST_Parking</td><td>-2001180</td></tr><tr><td>卫浴装置</td><td>OST_PlumbingFixtures</td><td>-2001160</td></tr><tr><td>机械设备</td><td>OST_MechanicalEquipment</td><td>-2001140</td></tr><tr><td>光源</td><td>OST_LightingFixtureSource</td><td>-2001121</td></tr><tr><td>照明设备</td><td>OST_LightingFixtures</td><td>-2001120</td></tr><tr><td>家具系统</td><td>OST_FurnitureSystems</td><td>-2001100</td></tr><tr><td>电气装置</td><td>OST_ElectricalFixtures</td><td>-2001060</td></tr><tr><td>电气设备</td><td>OST_ElectricalEquipment</td><td>-2001040</td></tr><tr><td>橱柜</td><td>OST_Casework</td><td>-2001000</td></tr><tr><td>Unknown</td><td>OST_ArcWallRectOpening</td><td>-2000999</td></tr><tr><td>Unknown</td><td>OST_DormerOpeningIncomplete</td><td>-2000998</td></tr><tr><td>Unknown</td><td>OST_SWallRectOpening</td><td>-2000997</td></tr><tr><td>竖井洞口</td><td>OST_ShaftOpening</td><td>-2000996</td></tr><tr><td>Unknown</td><td>OST_StructuralFramingOpening</td><td>-2000995</td></tr><tr><td>Unknown</td><td>OST_ColumnOpening</td><td>-2000994</td></tr><tr><td>Unknown</td><td>OST_RiseDropSymbols</td><td>-2000989</td></tr><tr><td>水力分离符号</td><td>OST_PipeHydronicSeparationSymbols</td><td>-2000988</td></tr><tr><td>机械设备集边界线</td><td>OST_MechanicalEquipmentSetBoundaryLines</td><td>-2000987</td></tr><tr><td>机械设备集标记</td><td>OST_MechanicalEquipmentSetTags</td><td>-2000986</td></tr><tr><td>机械设备集</td><td>OST_MechanicalEquipmentSet</td><td>-2000985</td></tr><tr><td>连接线符号</td><td>OST_AnalyticalPipeConnectionLineSymbol</td><td>-2000984</td></tr><tr><td>分析管道连接</td><td>OST_AnalyticalPipeConnections</td><td>-2000983</td></tr><tr><td>Unknown</td><td>OST_Coordination_Model</td><td>-2000982</td></tr><tr><td>Unknown</td><td>OST_MultistoryStairs</td><td>-2000980</td></tr><tr><td>Unknown</td><td>OST_HiddenStructuralConnectionLines_Deprecated</td><td>-2000979</td></tr><tr><td>Unknown</td><td>OST_StructuralConnectionHandler_Deprecated</td><td>-2000978</td></tr><tr><td>Unknown</td><td>OST_CoordinateSystem</td><td>-2000977</td></tr><tr><td>局部坐标系</td><td>OST_FndSlabLocalCoordSys</td><td>-2000976</td></tr><tr><td>局部坐标系</td><td>OST_FloorLocalCoordSys</td><td>-2000975</td></tr><tr><td>局部坐标系</td><td>OST_WallLocalCoordSys</td><td>-2000974</td></tr><tr><td>局部坐标系</td><td>OST_BraceLocalCoordSys</td><td>-2000973</td></tr><tr><td>局部坐标系</td><td>OST_ColumnLocalCoordSys</td><td>-2000972</td></tr><tr><td>局部坐标系</td><td>OST_BeamLocalCoordSys</td><td>-2000971</td></tr><tr><td>多钢筋注释</td><td>OST_MultiReferenceAnnotations</td><td>-2000970</td></tr><tr><td>Unknown</td><td>OST_DSR_LeaderTickMarkStyleId</td><td>-2000969</td></tr><tr><td>Unknown</td><td>OST_DSR_InteriorTickMarkStyleId</td><td>-2000968</td></tr><tr><td>Unknown</td><td>OST_DSR_ArrowHeadStyleId</td><td>-2000967</td></tr><tr><td>Unknown</td><td>OST_DSR_CenterlineTickMarkStyleId</td><td>-2000966</td></tr><tr><td>Unknown</td><td>OST_DSR_CenterlinePatternCatId</td><td>-2000965</td></tr><tr><td>Unknown</td><td>OST_DSR_DimStyleHeavyEndCategoryId</td><td>-2000964</td></tr><tr><td>Unknown</td><td>OST_DSR_DimStyleHeavyEndCatId</td><td>-2000963</td></tr><tr><td>Unknown</td><td>OST_DSR_DimStyleTickCategoryId</td><td>-2000962</td></tr><tr><td>Unknown</td><td>OST_DSR_LineAndTextAttrFontId</td><td>-2000961</td></tr><tr><td>Unknown</td><td>OST_DSR_LineAndTextAttrCategoryId</td><td>-2000960</td></tr><tr><td>分析节点标记</td><td>OST_NodeAnalyticalTags</td><td>-2000956</td></tr><tr><td>分析链接标记</td><td>OST_LinkAnalyticalTags</td><td>-2000955</td></tr><tr><td>Unknown</td><td>OST_RailingRailPathExtensionLines</td><td>-2000954</td></tr><tr><td>Unknown</td><td>OST_RailingRailPathLines</td><td>-2000953</td></tr><tr><td>支撑</td><td>OST_StairsSupports</td><td>-2000952</td></tr><tr><td><高于> 扶手</td><td>OST_RailingHandRailAboveCut</td><td>-2000951</td></tr><tr><td><高于> 顶部扶栏</td><td>OST_RailingTopRailAboveCut</td><td>-2000950</td></tr><tr><td>终端</td><td>OST_RailingTermination</td><td>-2000949</td></tr><tr><td>支座</td><td>OST_RailingSupport</td><td>-2000948</td></tr><tr><td>扶手</td><td>OST_RailingHandRail</td><td>-2000947</td></tr><tr><td>顶部扶栏</td><td>OST_RailingTopRail</td><td>-2000946</td></tr><tr><td>Unknown</td><td>OST_StairsSketchPathLines</td><td>-2000945</td></tr><tr><td>楼梯踏板/踢面数</td><td>OST_StairsTriserNumbers</td><td>-2000944</td></tr><tr><td>Unknown</td><td>OST_StairsTriserTags</td><td>-2000943</td></tr><tr><td>楼梯支撑标记</td><td>OST_StairsSupportTags</td><td>-2000942</td></tr><tr><td>楼梯平台标记</td><td>OST_StairsLandingTags</td><td>-2000941</td></tr><tr><td>楼梯梯段标记</td><td>OST_StairsRunTags</td><td>-2000940</td></tr><tr><td><高于> 向上箭头</td><td>OST_StairsPathsAboveCut</td><td>-2000939</td></tr><tr><td>楼梯路径</td><td>OST_StairsPaths</td><td>-2000938</td></tr><tr><td><高于> 踢面线</td><td>OST_StairsRiserLinesAboveCut</td><td>-2000937</td></tr><tr><td>踢面线</td><td>OST_StairsRiserLines</td><td>-2000936</td></tr><tr><td><高于> 轮廓</td><td>OST_StairsOutlinesAboveCut</td><td>-2000935</td></tr><tr><td>轮廓</td><td>OST_StairsOutlines</td><td>-2000934</td></tr><tr><td><高于> 楼梯前缘线</td><td>OST_StairsNosingLinesAboveCut</td><td>-2000933</td></tr><tr><td>楼梯前缘线</td><td>OST_StairsNosingLines</td><td>-2000932</td></tr><tr><td><高于> 剪切标记</td><td>OST_StairsCutMarksAboveCut</td><td>-2000931</td></tr><tr><td>剪切标记</td><td>OST_StairsCutMarks</td><td>-2000930</td></tr><tr><td>Unknown</td><td>OST_ComponentRepeaterSlot</td><td>-2000928</td></tr><tr><td>Unknown</td><td>OST_ComponentRepeater</td><td>-2000927</td></tr><tr><td>Unknown</td><td>OST_DividedPath</td><td>-2000926</td></tr><tr><td>Unknown</td><td>OST_IOSRoomCalculationPoint</td><td>-2000925</td></tr><tr><td>Unknown</td><td>OST_PropertySet</td><td>-2000924</td></tr><tr><td>Unknown</td><td>OST_AppearanceAsset</td><td>-2000923</td></tr><tr><td>Unknown</td><td>OST_StairStringer2012_Deprecated</td><td>-2000922</td></tr><tr><td>踢面/踏板</td><td>OST_StairsTrisers</td><td>-2000921</td></tr><tr><td>平台</td><td>OST_StairsLandings</td><td>-2000920</td></tr><tr><td>梯段</td><td>OST_StairsRuns</td><td>-2000919</td></tr><tr><td>Unknown</td><td>OST_Stair2012_Deprecated</td><td>-2000918</td></tr><tr><td>Unknown</td><td>OST_RailingSystemTags</td><td>-2000917</td></tr><tr><td>Unknown</td><td>OST_RailingSystemTransition</td><td>-2000916</td></tr><tr><td>Unknown</td><td>OST_RailingSystemTermination</td><td>-2000915</td></tr><tr><td>Unknown</td><td>OST_RailingSystemRail</td><td>-2000914</td></tr><tr><td>Unknown</td><td>OST_RailingSystemTopRail</td><td>-2000913</td></tr><tr><td>Unknown</td><td>OST_RailingSystemHandRailBracket</td><td>-2000912</td></tr><tr><td>Unknown</td><td>OST_RailingSystemHandRail</td><td>-2000911</td></tr><tr><td>Unknown</td><td>OST_RailingSystemHardware</td><td>-2000910</td></tr><tr><td>Unknown</td><td>OST_RailingSystemPanel</td><td>-2000909</td></tr><tr><td>Unknown</td><td>OST_RailingSystemBaluster</td><td>-2000908</td></tr><tr><td>Unknown</td><td>OST_RailingSystemPost</td><td>-2000907</td></tr><tr><td>Unknown</td><td>OST_RailingSystemSegment</td><td>-2000906</td></tr><tr><td>Unknown</td><td>OST_RailingSystem</td><td>-2000905</td></tr><tr><td>Unknown</td><td>OST_AdaptivePoints_HiddenLines</td><td>-2000904</td></tr><tr><td>线</td><td>OST_AdaptivePoints_Lines</td><td>-2000903</td></tr><tr><td>平面</td><td>OST_AdaptivePoints_Planes</td><td>-2000902</td></tr><tr><td>点</td><td>OST_AdaptivePoints_Points</td><td>-2000901</td></tr><tr><td>自适应点</td><td>OST_AdaptivePoints</td><td>-2000900</td></tr><tr><td>Unknown</td><td>OST_CeilingOpening</td><td>-2000899</td></tr><tr><td>Unknown</td><td>OST_FloorOpening</td><td>-2000898</td></tr><tr><td>Unknown</td><td>OST_RoofOpening</td><td>-2000897</td></tr><tr><td>Unknown</td><td>OST_WallRefPlanes</td><td>-2000896</td></tr><tr><td>Unknown</td><td>OST_StructLocationLineControl</td><td>-2000880</td></tr><tr><td>Unknown</td><td>OST_DimLockControlLeader</td><td>-2000832</td></tr><tr><td><空间分隔></td><td>OST_MEPSpaceSeparationLines</td><td>-2000831</td></tr><tr><td>Unknown</td><td>OST_AreaPolylines</td><td>-2000830</td></tr><tr><td>Unknown</td><td>OST_RoomPolylines</td><td>-2000829</td></tr><tr><td>Unknown</td><td>OST_InstanceDrivenLineStyle</td><td>-2000828</td></tr><tr><td>Unknown</td><td>OST_RemovedGridSeg</td><td>-2000827</td></tr><tr><td>Unknown</td><td>OST_IOSOpening</td><td>-2000810</td></tr><tr><td>Unknown</td><td>OST_IOSTilePatternGrid</td><td>-2000800</td></tr><tr><td>Unknown</td><td>OST_ControlLocal</td><td>-2000774</td></tr><tr><td>Unknown</td><td>OST_ControlAxisZ</td><td>-2000773</td></tr><tr><td>Unknown</td><td>OST_ControlAxisY</td><td>-2000772</td></tr><tr><td>Unknown</td><td>OST_ControlAxisX</td><td>-2000721</td></tr><tr><td>Unknown</td><td>OST_XRayConstrainedProfileEdge</td><td>-2000720</td></tr><tr><td>Unknown</td><td>OST_XRayImplicitPathCurve</td><td>-2000719</td></tr><tr><td>Unknown</td><td>OST_XRayPathPoint</td><td>-2000718</td></tr><tr><td>Unknown</td><td>OST_XRayPathCurve</td><td>-2000717</td></tr><tr><td>Unknown</td><td>OST_XRaySideEdge</td><td>-2000716</td></tr><tr><td>Unknown</td><td>OST_XRayProfileEdge</td><td>-2000715</td></tr><tr><td>Unknown</td><td>OST_ReferencePoints_HiddenLines</td><td>-2000714</td></tr><tr><td>线</td><td>OST_ReferencePoints_Lines</td><td>-2000713</td></tr><tr><td>平面</td><td>OST_ReferencePoints_Planes</td><td>-2000712</td></tr><tr><td>点</td><td>OST_ReferencePoints_Points</td><td>-2000711</td></tr><tr><td>参照点</td><td>OST_ReferencePoints</td><td>-2000710</td></tr><tr><td>材质</td><td>OST_Materials</td><td>-2000700</td></tr><tr><td>截面填充图案</td><td>OST_CeilingsCutPattern</td><td>-2000617</td></tr><tr><td>公共边</td><td>OST_CeilingsDefault</td><td>-2000616</td></tr><tr><td>面层 2 [5]</td><td>OST_CeilingsFinish2</td><td>-2000615</td></tr><tr><td>面层 1 [4]</td><td>OST_CeilingsFinish1</td><td>-2000614</td></tr><tr><td>衬底 [2]</td><td>OST_CeilingsSubstrate</td><td>-2000613</td></tr><tr><td>保温层/空气层 [3]</td><td>OST_CeilingsInsulation</td><td>-2000612</td></tr><tr><td>结构 [1]</td><td>OST_CeilingsStructure</td><td>-2000611</td></tr><tr><td>涂膜层</td><td>OST_CeilingsMembrane</td><td>-2000610</td></tr><tr><td>内部边缘</td><td>OST_FloorsInteriorEdges</td><td>-2000609</td></tr><tr><td>截面填充图案</td><td>OST_FloorsCutPattern</td><td>-2000608</td></tr><tr><td>隐藏线</td><td>OST_HiddenFloorLines</td><td>-2000607</td></tr><tr><td>公共边</td><td>OST_FloorsDefault</td><td>-2000606</td></tr><tr><td>面层 2 [5]</td><td>OST_FloorsFinish2</td><td>-2000605</td></tr><tr><td>面层 1 [4]</td><td>OST_FloorsFinish1</td><td>-2000604</td></tr><tr><td>衬底 [2]</td><td>OST_FloorsSubstrate</td><td>-2000603</td></tr><tr><td>保温层/空气层 [3]</td><td>OST_FloorsInsulation</td><td>-2000602</td></tr><tr><td>结构 [1]</td><td>OST_FloorsStructure</td><td>-2000601</td></tr><tr><td>涂膜层</td><td>OST_FloorsMembrane</td><td>-2000600</td></tr><tr><td>内部边缘</td><td>OST_RoofsInteriorEdges</td><td>-2000598</td></tr><tr><td>截面填充图案</td><td>OST_RoofsCutPattern</td><td>-2000597</td></tr><tr><td>公共边</td><td>OST_RoofsDefault</td><td>-2000596</td></tr><tr><td>面层 2 [5]</td><td>OST_RoofsFinish2</td><td>-2000595</td></tr><tr><td>面层 1 [4]</td><td>OST_RoofsFinish1</td><td>-2000594</td></tr><tr><td>衬底 [2]</td><td>OST_RoofsSubstrate</td><td>-2000593</td></tr><tr><td>保温层/空气层 [3]</td><td>OST_RoofsInsulation</td><td>-2000592</td></tr><tr><td>结构 [1]</td><td>OST_RoofsStructure</td><td>-2000591</td></tr><tr><td>涂膜层</td><td>OST_RoofsMembrane</td><td>-2000590</td></tr><tr><td>截面填充图案</td><td>OST_WallsCutPattern</td><td>-2000588</td></tr><tr><td>隐藏线</td><td>OST_HiddenWallLines</td><td>-2000587</td></tr><tr><td>公共边</td><td>OST_WallsDefault</td><td>-2000586</td></tr><tr><td>面层 2 [5]</td><td>OST_WallsFinish2</td><td>-2000585</td></tr><tr><td>面层 1 [4]</td><td>OST_WallsFinish1</td><td>-2000584</td></tr><tr><td>衬底 [2]</td><td>OST_WallsSubstrate</td><td>-2000583</td></tr><tr><td>保温层/空气层 [3]</td><td>OST_WallsInsulation</td><td>-2000582</td></tr><tr><td>结构 [1]</td><td>OST_WallsStructure</td><td>-2000581</td></tr><tr><td>涂膜层</td><td>OST_WallsMembrane</td><td>-2000580</td></tr><tr><td>Unknown</td><td>OST_PreviewLegendComponents</td><td>-2000576</td></tr><tr><td>Unknown</td><td>OST_LegendComponents</td><td>-2000575</td></tr><tr><td>明细表</td><td>OST_Schedules</td><td>-2000573</td></tr><tr><td>明细表图形</td><td>OST_ScheduleGraphics</td><td>-2000570</td></tr><tr><td>光栅图像</td><td>OST_RasterImages</td><td>-2000560</td></tr><tr><td>Unknown</td><td>OST_ColorFillSchema</td><td>-2000552</td></tr><tr><td>颜色填充</td><td>OST_RoomColorFill</td><td>-2000551</td></tr><tr><td>颜色填充图例</td><td>OST_ColorFillLegends</td><td>-2000550</td></tr><tr><td>注释裁剪边界</td><td>OST_AnnotationCropSpecial</td><td>-2000549</td></tr><tr><td>裁剪边界</td><td>OST_CropBoundarySpecial</td><td>-2000548</td></tr><tr><td>注释裁剪边界</td><td>OST_AnnotationCrop</td><td>-2000547</td></tr><tr><td>Unknown</td><td>OST_FloorsAnalyticalGeometry</td><td>-2000546</td></tr><tr><td>Unknown</td><td>OST_WallsAnalyticalGeometry</td><td>-2000545</td></tr><tr><td>详图索引引线</td><td>OST_CalloutLeaderLine</td><td>-2000544</td></tr><tr><td>表面填充图案</td><td>OST_CeilingsSurfacePattern</td><td>-2000543</td></tr><tr><td>表面填充图案</td><td>OST_RoofsSurfacePattern</td><td>-2000542</td></tr><tr><td>表面填充图案</td><td>OST_FloorsSurfacePattern</td><td>-2000541</td></tr><tr><td>表面填充图案</td><td>OST_WallsSurfacePattern</td><td>-2000540</td></tr><tr><td>详图索引边界</td><td>OST_CalloutBoundary</td><td>-2000539</td></tr><tr><td>详图索引标头</td><td>OST_CalloutHeads</td><td>-2000538</td></tr><tr><td>详图索引</td><td>OST_Callouts</td><td>-2000537</td></tr><tr><td>裁剪边界</td><td>OST_CropBoundary</td><td>-2000536</td></tr><tr><td>立面</td><td>OST_Elev</td><td>-2000535</td></tr><tr><td>Unknown</td><td>OST_AxisZ</td><td>-2000533</td></tr><tr><td>Unknown</td><td>OST_AxisY</td><td>-2000532</td></tr><tr><td>Unknown</td><td>OST_AxisX</td><td>-2000531</td></tr><tr><td>参照平面</td><td>OST_CLines</td><td>-2000530</td></tr><tr><td>Unknown</td><td>OST_Lights</td><td>-2000520</td></tr><tr><td>视图标题</td><td>OST_ViewportLabel</td><td>-2000515</td></tr><tr><td>视口</td><td>OST_Viewports</td><td>-2000510</td></tr><tr><td>相机</td><td>OST_Camera_Lines</td><td>-2000501</td></tr><tr><td>Unknown</td><td>OST_Cameras</td><td>-2000500</td></tr><tr><td>空间标记</td><td>OST_MEPSpaceTags</td><td>-2000485</td></tr><tr><td>房间标记</td><td>OST_RoomTags</td><td>-2000480</td></tr><tr><td>门标记</td><td>OST_DoorTags</td><td>-2000460</td></tr><tr><td>窗标记</td><td>OST_WindowTags</td><td>-2000450</td></tr><tr><td>宽线</td><td>OST_SectionHeadWideLines</td><td>-2000404</td></tr><tr><td>中粗线</td><td>OST_SectionHeadMediumLines</td><td>-2000403</td></tr><tr><td>细线</td><td>OST_SectionHeadThinLines</td><td>-2000401</td></tr><tr><td>剖面标头</td><td>OST_SectionHeads</td><td>-2000400</td></tr><tr><td>等高线标签</td><td>OST_ContourLabels</td><td>-2000350</td></tr><tr><td>Unknown</td><td>OST_CurtaSystemFaceManager</td><td>-2000341</td></tr><tr><td>幕墙系统</td><td>OST_CurtaSystem</td><td>-2000340</td></tr><tr><td>Unknown</td><td>OST_AreaReport_Arc_Minus</td><td>-2000328</td></tr><tr><td>Unknown</td><td>OST_AreaReport_Arc_Plus</td><td>-2000327</td></tr><tr><td>Unknown</td><td>OST_AreaReport_Boundary</td><td>-2000326</td></tr><tr><td>Unknown</td><td>OST_AreaReport_Triangle</td><td>-2000325</td></tr><tr><td>幕墙系统网格</td><td>OST_CurtainGridsCurtaSystem</td><td>-2000323</td></tr><tr><td>Unknown</td><td>OST_CurtainGridsSystem</td><td>-2000322</td></tr><tr><td>幕墙网格</td><td>OST_CurtainGridsWall</td><td>-2000321</td></tr><tr><td>幕墙屋顶网格</td><td>OST_CurtainGridsRoof</td><td>-2000320</td></tr><tr><td>Unknown</td><td>OST_HostFinHF</td><td>-2000315</td></tr><tr><td>Unknown</td><td>OST_HostFinWall</td><td>-2000314</td></tr><tr><td>Unknown</td><td>OST_HostFinCeiling</td><td>-2000313</td></tr><tr><td>Unknown</td><td>OST_HostFinRoof</td><td>-2000312</td></tr><tr><td>Unknown</td><td>OST_HostFinFloor</td><td>-2000311</td></tr><tr><td>Unknown</td><td>OST_HostFin</td><td>-2000310</td></tr><tr><td>分析显示样式</td><td>OST_AnalysisDisplayStyle</td><td>-2000304</td></tr><tr><td>分析结果</td><td>OST_AnalysisResults</td><td>-2000303</td></tr><tr><td>渲染区域</td><td>OST_RenderRegions</td><td>-2000302</td></tr><tr><td>剖面框</td><td>OST_SectionBox</td><td>-2000301</td></tr><tr><td>文字注释</td><td>OST_TextNotes</td><td>-2000300</td></tr><tr><td>Unknown</td><td>OST_Divisions</td><td>-2000291</td></tr><tr><td>Unknown</td><td>OST_Catalogs</td><td>-2000290</td></tr><tr><td>Unknown</td><td>OST_DirectionEdgeLines</td><td>-2000289</td></tr><tr><td><中心线></td><td>OST_CenterLines</td><td>-2000288</td></tr><tr><td><超出></td><td>OST_LinesBeyond</td><td>-2000287</td></tr><tr><td><隐藏></td><td>OST_HiddenLines</td><td>-2000286</td></tr><tr><td><已拆除></td><td>OST_DemolishedLines</td><td>-2000285</td></tr><tr><td><架空线></td><td>OST_OverheadLines</td><td>-2000284</td></tr><tr><td>宽线</td><td>OST_TitleBlockWideLines</td><td>-2000283</td></tr><tr><td>中粗线</td><td>OST_TitleBlockMediumLines</td><td>-2000282</td></tr><tr><td>细线</td><td>OST_TitleBlockThinLines</td><td>-2000281</td></tr><tr><td>图框</td><td>OST_TitleBlocks</td><td>-2000280</td></tr><tr><td>视图</td><td>OST_Views</td><td>-2000279</td></tr><tr><td>Unknown</td><td>OST_Viewers</td><td>-2000278</td></tr><tr><td>隐藏线</td><td>OST_PartHiddenLines</td><td>-2000271</td></tr><tr><td>零件标记</td><td>OST_PartTags</td><td>-2000270</td></tr><tr><td>组成部分</td><td>OST_Parts</td><td>-2000269</td></tr><tr><td>部件标记</td><td>OST_AssemblyTags</td><td>-2000268</td></tr><tr><td>部件</td><td>OST_Assemblies</td><td>-2000267</td></tr><tr><td>屋顶标记</td><td>OST_RoofTags</td><td>-2000266</td></tr><tr><td>高程点坡度</td><td>OST_SpotSlopes</td><td>-2000265</td></tr><tr><td>高程点坐标</td><td>OST_SpotCoordinates</td><td>-2000264</td></tr><tr><td>高程点</td><td>OST_SpotElevations</td><td>-2000263</td></tr><tr><td>Unknown</td><td>OST_Constraints</td><td>-2000262</td></tr><tr><td>自动绘制尺寸标注</td><td>OST_WeakDims</td><td>-2000261</td></tr><tr><td>尺寸标注</td><td>OST_Dimensions</td><td>-2000260</td></tr><tr><td>标高</td><td>OST_Levels</td><td>-2000240</td></tr><tr><td>位移路径</td><td>OST_DisplacementPath</td><td>-2000223</td></tr><tr><td>Unknown</td><td>OST_DisplacementElements</td><td>-2000222</td></tr><tr><td>多段轴网</td><td>OST_GridChains</td><td>-2000221</td></tr><tr><td>轴网</td><td>OST_Grids</td><td>-2000220</td></tr><tr><td>断开剖面线</td><td>OST_BrokenSectionLine</td><td>-2000202</td></tr><tr><td>剖面线</td><td>OST_SectionLine</td><td>-2000201</td></tr><tr><td>剖面</td><td>OST_Sections</td><td>-2000200</td></tr><tr><td>视图参照</td><td>OST_ReferenceViewer</td><td>-2000198</td></tr><tr><td>视图参照</td><td>OST_ReferenceViewerSymbol</td><td>-2000197</td></tr><tr><td>在族中导入</td><td>OST_ImportObjectStyles</td><td>-2000196</td></tr><tr><td>Unknown</td><td>OST_ModelText</td><td>-2000195</td></tr><tr><td>遮罩区域</td><td>OST_MaskingRegion</td><td>-2000194</td></tr><tr><td>拼接线</td><td>OST_Matchline</td><td>-2000193</td></tr><tr><td>Unknown</td><td>OST_FaceSplitter</td><td>-2000192</td></tr><tr><td>平面区域</td><td>OST_PlanRegion</td><td>-2000191</td></tr><tr><td>填充区域</td><td>OST_FilledRegion</td><td>-2000190</td></tr><tr><td>Unknown</td><td>OST_MassingProjectionOutlines</td><td>-2000187</td></tr><tr><td>Unknown</td><td>OST_MassingCutOutlines</td><td>-2000186</td></tr><tr><td>Unknown</td><td>OST_Massing</td><td>-2000185</td></tr><tr><td>Unknown</td><td>OST_Reveals</td><td>-2000182</td></tr><tr><td>墙饰条</td><td>OST_Cornices</td><td>-2000181</td></tr><tr><td>坡道</td><td>OST_Ramps</td><td>-2000180</td></tr><tr><td>Unknown</td><td>OST_RailingBalusterRailCut</td><td>-2000177</td></tr><tr><td>Unknown</td><td>OST_RailingBalusterRail</td><td>-2000176</td></tr><tr><td>Unknown</td><td>OST_Railings</td><td>-2000175</td></tr><tr><td>幕墙网格</td><td>OST_CurtainGrids</td><td>-2000173</td></tr><tr><td>Unknown</td><td>OST_CurtainWallMullionsCut</td><td>-2000172</td></tr><tr><td>幕墙竖梃</td><td>OST_CurtainWallMullions</td><td>-2000171</td></tr><tr><td>幕墙嵌板</td><td>OST_CurtainWallPanels</td><td>-2000170</td></tr><tr><td>Unknown</td><td>OST_AreaReference</td><td>-2000169</td></tr><tr><td>Unknown</td><td>OST_AreaInteriorFill</td><td>-2000168</td></tr><tr><td>Unknown</td><td>OST_RoomReference</td><td>-2000167</td></tr><tr><td>Unknown</td><td>OST_RoomInteriorFill</td><td>-2000166</td></tr><tr><td>颜色填充</td><td>OST_AreaColorFill</td><td>-2000165</td></tr><tr><td>参照</td><td>OST_AreaReferenceVisibility</td><td>-2000164</td></tr><tr><td>内部填充</td><td>OST_AreaInteriorFillVisibility</td><td>-2000163</td></tr><tr><td>参照</td><td>OST_RoomReferenceVisibility</td><td>-2000162</td></tr><tr><td>内部填充</td><td>OST_RoomInteriorFillVisibility</td><td>-2000161</td></tr><tr><td>房间</td><td>OST_Rooms</td><td>-2000160</td></tr><tr><td>常规模型</td><td>OST_GenericModel</td><td>-2000151</td></tr><tr><td>常规注释</td><td>OST_GenericAnnotation</td><td>-2000150</td></tr><tr><td>Unknown</td><td>OST_Fixtures</td><td>-2000140</td></tr><tr><td>栏杆扶手标记</td><td>OST_StairsRailingTags</td><td>-2000133</td></tr><tr><td><高于> 栏杆扶手截面线</td><td>OST_StairsRailingAboveCut</td><td>-2000132</td></tr><tr><td>向下箭头</td><td>OST_StairsDownArrows</td><td>-2000131</td></tr><tr><td>向上箭头</td><td>OST_StairsUpArrows</td><td>-2000130</td></tr><tr><td>文字(向下)</td><td>OST_StairsDownText</td><td>-2000129</td></tr><tr><td>扶栏</td><td>OST_StairsRailingRail</td><td>-2000128</td></tr><tr><td>栏杆</td><td>OST_StairsRailingBaluster</td><td>-2000127</td></tr><tr><td>栏杆扶手</td><td>OST_StairsRailing</td><td>-2000126</td></tr><tr><td>文字(向上)</td><td>OST_StairsUpText</td><td>-2000125</td></tr><tr><td><高于> 支撑</td><td>OST_StairsSupportsAboveCut</td><td>-2000124</td></tr><tr><td>支撑</td><td>OST_StairsStringerCarriage</td><td>-2000123</td></tr><tr><td>Unknown</td><td>OST_StairsAboveCut_ToBeDeprecated</td><td>-2000122</td></tr><tr><td>Unknown</td><td>OST_StairsIncomplete_Deprecated</td><td>-2000121</td></tr><tr><td>楼梯</td><td>OST_Stairs</td><td>-2000120</td></tr><tr><td>Unknown</td><td>OST_IOSNavWheelPivotBall</td><td>-2000117</td></tr><tr><td>Unknown</td><td>OST_IOSRoomComputationHeight</td><td>-2000116</td></tr><tr><td>Unknown</td><td>OST_IOSRoomUpperLowerLines</td><td>-2000115</td></tr><tr><td>Unknown</td><td>OST_IOSDragBoxInverted</td><td>-2000114</td></tr><tr><td>Unknown</td><td>OST_IOSDragBox</td><td>-2000113</td></tr><tr><td>Unknown</td><td>OST_Phases</td><td>-2000112</td></tr><tr><td>Unknown</td><td>OST_IOS_GeoSite</td><td>-2000111</td></tr><tr><td>Unknown</td><td>OST_IOS_GeoLocations</td><td>-2000110</td></tr><tr><td>Unknown</td><td>OST_IOSFabricReinSpanSymbolCtrl</td><td>-2000109</td></tr><tr><td>导向轴网</td><td>OST_GuideGrid</td><td>-2000107</td></tr><tr><td>Unknown</td><td>OST_EPS_Future</td><td>-2000106</td></tr><tr><td>Unknown</td><td>OST_EPS_Temporary</td><td>-2000105</td></tr><tr><td>Unknown</td><td>OST_EPS_New</td><td>-2000104</td></tr><tr><td>Unknown</td><td>OST_EPS_Demolished</td><td>-2000103</td></tr><tr><td>Unknown</td><td>OST_EPS_Existing</td><td>-2000102</td></tr><tr><td>Unknown</td><td>OST_IOSMeasureLineScreenSize</td><td>-2000101</td></tr><tr><td>柱</td><td>OST_Columns</td><td>-2000100</td></tr><tr><td>Unknown</td><td>OST_IOSRebarSystemSpanSymbolCtrl</td><td>-2000099</td></tr><tr><td>Unknown</td><td>OST_IOSRoomTagToRoomLines</td><td>-2000098</td></tr><tr><td>Unknown</td><td>OST_IOSAttachedDetailGroups</td><td>-2000097</td></tr><tr><td>Unknown</td><td>OST_IOSDetailGroups</td><td>-2000096</td></tr><tr><td>模型组</td><td>OST_IOSModelGroups</td><td>-2000095</td></tr><tr><td>Unknown</td><td>OST_IOSSuspendedSketch</td><td>-2000094</td></tr><tr><td>Unknown</td><td>OST_IOSWallCoreBoundary</td><td>-2000093</td></tr><tr><td>Unknown</td><td>OST_IOSMeasureLine</td><td>-2000092</td></tr><tr><td>Unknown</td><td>OST_IOSArrays</td><td>-2000091</td></tr><tr><td>Unknown</td><td>OST_Curtain_Systems</td><td>-2000090</td></tr><tr><td>Unknown</td><td>OST_IOSBBoxScreenSize</td><td>-2000089</td></tr><tr><td>Unknown</td><td>OST_IOSSlabShapeEditorPointInterior</td><td>-2000088</td></tr><tr><td>Unknown</td><td>OST_IOSSlabShapeEditorPointBoundary</td><td>-2000087</td></tr><tr><td>Unknown</td><td>OST_IOSSlabShapeEditorBoundary</td><td>-2000086</td></tr><tr><td>Unknown</td><td>OST_IOSSlabShapeEditorAutoCrease</td><td>-2000085</td></tr><tr><td>Unknown</td><td>OST_IOSSlabShapeEditorExplitCrease</td><td>-2000084</td></tr><tr><td>参照线</td><td>OST_ReferenceLines</td><td>-2000083</td></tr><tr><td>Unknown</td><td>OST_IOSNotSilhouette</td><td>-2000082</td></tr><tr><td>Unknown</td><td>OST_FillPatterns</td><td>-2000081</td></tr><tr><td>家具</td><td>OST_Furniture</td><td>-2000080</td></tr><tr><td><面积边界></td><td>OST_AreaSchemeLines</td><td>-2000079</td></tr><tr><td>线</td><td>OST_GenericLines</td><td>-2000078</td></tr><tr><td>隔热层线</td><td>OST_InsulationLines</td><td>-2000077</td></tr><tr><td>Unknown</td><td>OST_CloudLines</td><td>-2000076</td></tr><tr><td>Unknown</td><td>OST_IOSRoomPerimeterLines</td><td>-2000075</td></tr><tr><td>Unknown</td><td>OST_IOSCuttingGeometry</td><td>-2000074</td></tr><tr><td>Unknown</td><td>OST_IOSCrashGraphics</td><td>-2000073</td></tr><tr><td>Unknown</td><td>OST_IOSGroups</td><td>-2000072</td></tr><tr><td>Unknown</td><td>OST_IOSGhost</td><td>-2000071</td></tr><tr><td>Unknown</td><td>OST_StairsSketchLandingCenterLines</td><td>-2000070</td></tr><tr><td>Unknown</td><td>OST_StairsSketchRunLines</td><td>-2000069</td></tr><tr><td>Unknown</td><td>OST_StairsSketchRiserLines</td><td>-2000068</td></tr><tr><td>Unknown</td><td>OST_StairsSketchBoundaryLines</td><td>-2000067</td></tr><tr><td><房间分隔></td><td>OST_RoomSeparationLines</td><td>-2000066</td></tr><tr><td>旋转轴</td><td>OST_AxisOfRotation</td><td>-2000065</td></tr><tr><td>Unknown</td><td>OST_InvisibleLines</td><td>-2000064</td></tr><tr><td>Unknown</td><td>OST_IOSThinPixel_DashDot</td><td>-2000063</td></tr><tr><td>Unknown</td><td>OST_IOSThinPixel_Dash</td><td>-2000062</td></tr><tr><td>Unknown</td><td>OST_IOSThinPixel_Dot</td><td>-2000061</td></tr><tr><td>Unknown</td><td>OST_Extrusions</td><td>-2000060</td></tr><tr><td>Unknown</td><td>OST_IOS</td><td>-2000059</td></tr><tr><td>Unknown</td><td>OST_CutOutlines</td><td>-2000058</td></tr><tr><td>Unknown</td><td>OST_IOSThinPixel</td><td>-2000057</td></tr><tr><td>Unknown</td><td>OST_IOSFlipControl</td><td>-2000056</td></tr><tr><td>Unknown</td><td>OST_IOSSketchGrid</td><td>-2000055</td></tr><tr><td>Unknown</td><td>OST_IOSSuspendedSketch_obsolete</td><td>-2000054</td></tr><tr><td>Unknown</td><td>OST_IOSFreeSnapLine</td><td>-2000053</td></tr><tr><td>Unknown</td><td>OST_IOSDatumPlane</td><td>-2000052</td></tr><tr><td>线</td><td>OST_Lines</td><td>-2000051</td></tr><tr><td>Unknown</td><td>OST_IOSConstructionLine</td><td>-2000050</td></tr><tr><td>Unknown</td><td>OST_IOSAlignmentGraphics</td><td>-2000049</td></tr><tr><td>Unknown</td><td>OST_IOSAligningLine</td><td>-2000048</td></tr><tr><td>Unknown</td><td>OST_IOSBackedUpElements</td><td>-2000047</td></tr><tr><td>Unknown</td><td>OST_IOSRegeneratedElements</td><td>-2000046</td></tr><tr><td><草图></td><td>OST_SketchLines</td><td>-2000045</td></tr><tr><td>宽线</td><td>OST_CurvesWideLines</td><td>-2000044</td></tr><tr><td>中粗线</td><td>OST_CurvesMediumLines</td><td>-2000043</td></tr><tr><td>细线</td><td>OST_CurvesThinLines</td><td>-2000042</td></tr><tr><td>Unknown</td><td>OST_Curves</td><td>-2000041</td></tr><tr><td>Unknown</td><td>OST_CeilingsProjection</td><td>-2000040</td></tr><tr><td>Unknown</td><td>OST_CeilingsCut</td><td>-2000039</td></tr><tr><td>天花板</td><td>OST_Ceilings</td><td>-2000038</td></tr><tr><td>Unknown</td><td>OST_RoofsProjection</td><td>-2000037</td></tr><tr><td>Unknown</td><td>OST_RoofsCut</td><td>-2000036</td></tr><tr><td>屋顶</td><td>OST_Roofs</td><td>-2000035</td></tr><tr><td>Unknown</td><td>OST_FloorsProjection</td><td>-2000034</td></tr><tr><td>Unknown</td><td>OST_FloorsCut</td><td>-2000033</td></tr><tr><td>楼板</td><td>OST_Floors</td><td>-2000032</td></tr><tr><td>玻璃</td><td>OST_DoorsGlassProjection</td><td>-2000031</td></tr><tr><td>Unknown</td><td>OST_DoorsGlassCut</td><td>-2000030</td></tr><tr><td>框架/竖梃</td><td>OST_DoorsFrameMullionProjection</td><td>-2000029</td></tr><tr><td>Unknown</td><td>OST_DoorsFrameMullionCut</td><td>-2000028</td></tr><tr><td>洞口</td><td>OST_DoorsOpeningProjection</td><td>-2000027</td></tr><tr><td>Unknown</td><td>OST_DoorsOpeningCut</td><td>-2000026</td></tr><tr><td>嵌板</td><td>OST_DoorsPanelProjection</td><td>-2000025</td></tr><tr><td>Unknown</td><td>OST_DoorsPanelCut</td><td>-2000024</td></tr><tr><td>门</td><td>OST_Doors</td><td>-2000023</td></tr><tr><td>洞口</td><td>OST_WindowsOpeningProjection</td><td>-2000022</td></tr><tr><td>Unknown</td><td>OST_WindowsOpeningCut</td><td>-2000021</td></tr><tr><td>窗台/盖板</td><td>OST_WindowsSillHeadProjection</td><td>-2000020</td></tr><tr><td>Unknown</td><td>OST_WindowsSillHeadCut</td><td>-2000019</td></tr><tr><td>框架/竖梃</td><td>OST_WindowsFrameMullionProjection</td><td>-2000018</td></tr><tr><td>Unknown</td><td>OST_WindowsFrameMullionCut</td><td>-2000017</td></tr><tr><td>玻璃</td><td>OST_WindowsGlassProjection</td><td>-2000016</td></tr><tr><td>Unknown</td><td>OST_WindowsGlassCut</td><td>-2000015</td></tr><tr><td>窗</td><td>OST_Windows</td><td>-2000014</td></tr><tr><td>Unknown</td><td>OST_WallsProjectionOutlines</td><td>-2000013</td></tr><tr><td>Unknown</td><td>OST_WallsCutOutlines</td><td>-2000012</td></tr><tr><td>墙</td><td>OST_Walls</td><td>-2000011</td></tr><tr><td>Unknown</td><td>OST_IOSRegenerationFailure</td><td>-2000010</td></tr><tr><td>Unknown</td><td>OST_ScheduleViewParamGroup</td><td>-2000008</td></tr><tr><td>Unknown</td><td>OST_MatchSiteComponent</td><td>-2000007</td></tr><tr><td>Unknown</td><td>OST_MatchProfile</td><td>-2000006</td></tr><tr><td>Unknown</td><td>OST_MatchDetail</td><td>-2000005</td></tr><tr><td>Unknown</td><td>OST_MatchAnnotation</td><td>-2000004</td></tr><tr><td>Unknown</td><td>OST_MatchModel</td><td>-2000003</td></tr><tr><td>Unknown</td><td>OST_MatchAll</td><td>-2000002</td></tr><tr><td>Unknown</td><td>INVALID</td><td>-1</td></tr></tbody></table>]]></content>
<summary type="html"><p>Revit二次开发中经常用到<strong>BuildInCategory</strong>过滤元素,以下是通过遍历该枚举获取的数据,其中部分类别的名称未能获取到,显示为<strong>Unknown</strong>,请悉知。</p></summary>
<category term="Developer" scheme="https://awaw.cc/categories/Developer/"/>
<category term=".NET" scheme="https://awaw.cc/tags/NET/"/>
<category term="Revit" scheme="https://awaw.cc/tags/Revit/"/>
</entry>
<entry>
<title>深度操作系统 20——崭新视界,创无止境</title>
<link href="https://awaw.cc/post/deepin-20/"/>
<id>https://awaw.cc/post/deepin-20/</id>
<published>2020-09-15T16:00:00.000Z</published>
<updated>2024-06-25T07:42:39.221Z</updated>
<content type="html"><![CDATA[<p>深度操作系统是一个致力于为全球用户提供美观易用、安全可靠的Linux发行版。</p><span id="more"></span><p>深度操作系统 20正式版(1002)采取统一的设计风格,从桌面环境和应用进行重新设计,带来焕然一新的视觉感受。底层仓库升级到Debian 10.5,系统安装采用双内核机制(Kernel 5.4、Kernel 5.7),全面提升系统稳定性和兼容性。全新设计的启动器菜单、指纹识别、系统安全增强等,系统部分预装应用升级到最新版本,只为给你更好体验。</p><h2 id="统一风格的桌面环境"><a href="#统一风格的桌面环境" class="headerlink" title="统一风格的桌面环境"></a>统一风格的桌面环境</h2><p>别出心裁的图标设计,焕然一新的图形界面,自然、平滑的动画过渡效果,更有独树一帜的圆角窗口设计,精美绝伦的多任务视图,处处精心,只为给你细腻自然的品质体验。</p><p><img src="https://www.deepin.org/wp-content/uploads/2020/09/%E6%A1%8C%E9%9D%A2%E7%8E%AF%E5%A2%83.png" alt="支持黑白主题、透明度调节、色温调节自定义、电源电池设置等贴心功能。"></p><h2 id="个性贴心的通知管理"><a href="#个性贴心的通知管理" class="headerlink" title="个性贴心的通知管理"></a>个性贴心的通知管理</h2><p>增强通知中心功能,支持设置通知时提示声音、锁屏时显示消息、仅在通知中心显示、显示消息预览,必要应用强提醒、特定应用弱提醒或不提醒,个性化你的消息通知,在不错过任何重要提醒的同时,避免不必要的打扰。</p><p><img src="https://www.deepin.org/wp-content/uploads/2020/09/%E9%80%9A%E7%9F%A5%E4%B8%AD%E5%BF%83.png"></p><h2 id="系统支持双内核安装"><a href="#系统支持双内核安装" class="headerlink" title="系统支持双内核安装"></a>系统支持双内核安装</h2><p>系统安装界面提供双内核选项,Kernel 5.4(LTS)和Kernel 5.7(Stable)以及Safe Graphics模式,保证系统安装更多选择,提升系统整体的稳定性、兼容性,最新的内核支持更多的硬件设备。</p><p><img src="https://www.deepin.org/wp-content/uploads/2020/09/%E5%8F%8C%E5%86%85%E6%A0%B8-1.png"></p><h2 id="更易用的新版安装器"><a href="#更易用的新版安装器" class="headerlink" title="更易用的新版安装器"></a>更易用的新版安装器</h2><p>化繁为简的设计和交互,保证更一致的操作习惯。新版的安装器界面,只需按照操作向导提示安装即可,在硬盘分区操作中,提供手动和全盘安装两种模式,并且支持全盘加密功能。</p><p><img src="https://www.deepin.org/wp-content/uploads/2020/09/%E5%AE%89%E8%A3%85%E5%99%A8.png" alt="注:对于N卡用户,安装器自动检测并提供安装闭源驱动选项。"></p><h2 id="管理方便的应用商店"><a href="#管理方便的应用商店" class="headerlink" title="管理方便的应用商店"></a>管理方便的应用商店</h2><p>应用商店的不同类别应用,覆盖了生活、工作的主要使用场景,本次新增一键更新、应用筛选等功能,带来更便捷的应用管理体验,同时也兼容部分Wine应用,并达到原生应用的体验。</p><p><img src="https://www.deepin.org/wp-content/uploads/2020/09/%E5%BA%94%E7%94%A8%E5%95%86%E5%BA%97.png"></p><h2 id="好用安全的指纹识别"><a href="#好用安全的指纹识别" class="headerlink" title="好用安全的指纹识别"></a>好用安全的指纹识别</h2><p>全新的指纹功能框架,提供了更细腻的引导交互和更准确的场景提示。可使用指纹进行解锁登录、验证身份和管理员权限。现已支持多款国产指纹硬件。</p><p><img src="https://www.deepin.org/wp-content/uploads/2020/09/%E6%8C%87%E7%BA%B9%E8%AF%86%E5%88%AB.png"></p><h2 id="下载"><a href="#下载" class="headerlink" title="下载"></a>下载</h2><blockquote><p><a href="https://www.deepin.org/zh/download/">https://www.deepin.org/zh/download/</a></p></blockquote>]]></content>
<summary type="html"><p>深度操作系统是一个致力于为全球用户提供美观易用、安全可靠的Linux发行版。</p></summary>
<category term="Share" scheme="https://awaw.cc/categories/Share/"/>
<category term="Linux" scheme="https://awaw.cc/tags/Linux/"/>
<category term="OS" scheme="https://awaw.cc/tags/OS/"/>
</entry>
<entry>
<title>Free Control 用电脑控制手机 - 开源</title>
<link href="https://awaw.cc/post/free-control/"/>
<id>https://awaw.cc/post/free-control/</id>
<published>2020-09-14T16:00:00.000Z</published>
<updated>2024-06-25T06:36:33.345Z</updated>
<content type="html"><![CDATA[<h2 id="FreeControl"><a href="#FreeControl" class="headerlink" title="FreeControl"></a>FreeControl</h2><p style="display: flex;"><a target="_blank" rel="noopener" href="https://github.com/pdone/FreeControl/actions/workflows/build-and-release.yml"><img title="Workflow" style="margin: inherit;" src="https://img.shields.io/github/actions/workflow/status/pdone/FreeControl/build-and-release.yml?style=for-the-badge&boxshadow="></a><a target="_blank" rel="noopener" href="https://github.com/pdone/FreeControl/releases/latest"><img title="Latest Release" style="margin: inherit;" src="https://img.shields.io/github/release/pdone/FreeControl?style=for-the-badge&boxshadow="></a><a target="_blank" rel="noopener" href="https://github.com/pdone/FreeControl/releases"><img title="All Releases" style="margin: inherit;" src="https://img.shields.io/github/downloads/pdone/FreeControl/total?style=for-the-badge&boxshadow="></a><a target="_blank" rel="noopener" href="https://github.com/pdone/FreeControl"><img title="Stars" style="margin: inherit;" src="https://img.shields.io/github/stars/pdone/FreeControl?style=for-the-badge&boxshadow="></a><a target="_blank" rel="noopener" href="https://github.com/pdone/FreeControl/issues"><img title="Issues" style="margin: inherit;" src="https://img.shields.io/github/issues/pdone/FreeControl?style=for-the-badge&boxshadow="></a></p><h2 id="介绍"><a href="#介绍" class="headerlink" title="介绍"></a>介绍</h2><p>[ <a href="https://github.com/pdone/FreeControl/blob/master/README.en.md">English</a> | <a href="https://github.com/pdone/FreeControl/blob/master/README.md">中文</a> ]</p><p>基于开源项目<a href="https://github.com/Genymobile/scrcpy"><strong>scrcpy</strong></a>,提供简洁的交互界面。</p><ul><li>编码语言 <code>C#</code></li><li>开发工具 <code>Visual Studio 2022</code></li><li>运行环境 <code>.NET Framework 4.7.2</code></li></ul><h2 id="界面"><a href="#界面" class="headerlink" title="界面"></a>界面</h2><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/free-control/latest_home.png" alt="启动界面"></p><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/free-control/latest_setting.png" alt="设置界面"></p><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/free-control/v1.4.0_5.gif" alt="功能演示"></p><h2 id="下载"><a href="#下载" class="headerlink" title="下载"></a>下载</h2><h3 id="GitHub-Release"><a href="#GitHub-Release" class="headerlink" title="GitHub Release"></a>GitHub Release</h3><p><a href="https://github.com/pdone/FreeControl/releases/latest/download/FreeControl.exe">https://github.com/pdone/FreeControl/releases/latest/download/FreeControl.exe</a></p><h3 id="My-Proxy"><a href="#My-Proxy" class="headerlink" title="My Proxy"></a>My Proxy</h3><p><a href="https://cdn.awaw.cc/gh/pdone/FreeControl/releases/latest/download/FreeControl.exe">https://cdn.awaw.cc/gh/pdone/FreeControl/releases/latest/download/FreeControl.exe</a></p><h2 id="代码仓库"><a href="#代码仓库" class="headerlink" title="代码仓库"></a>代码仓库</h2><p style="display: -webkit-flex;"><a target="_blank" rel="noopener" href="https://github.com/pdone/FreeControl"><img title="点击查看" style="margin: inherit;" src="https://img.shields.io/badge/github-Free_Control-blue?style=for-the-badge"></a></p><h2 id="更新记录"><a href="#更新记录" class="headerlink" title="更新记录"></a>更新记录</h2><p style="display: -webkit-flex;"><a target="_blank" rel="noopener" href="https://github.com/pdone/FreeControl/blob/master/FreeControl/Update.md"><img title="点击查看" style="margin: inherit;" src="https://img.shields.io/badge/updete-record-fedcba?style=for-the-badge"></a></p><h2 id="常见问题"><a href="#常见问题" class="headerlink" title="常见问题"></a>常见问题</h2><h3 id="关闭窗口后锁屏"><a href="#关闭窗口后锁屏" class="headerlink" title="关闭窗口后锁屏"></a>关闭窗口后锁屏</h3><p><code>v1.7.1</code> 及以后的版本中,增加 <code>PowerOffOnClose</code> 参数,用于控制关闭控制窗口后,是否将手机锁屏。默认不启用,可以在配置文件 <code>%AppData%\FreeControl\config.json</code> 中,将 <code>PowerOffOnClose</code> 参数值改为 <code>true</code> 以启用。</p><h3 id="编译问题"><a href="#编译问题" class="headerlink" title="编译问题"></a>编译问题</h3><p>本仓库已添加 <code>Workflows</code> 进行持续集成,可通过 <code>GitHub Action</code> 查看最新代码构建情况。如果 <code>Workflows</code> 构建成功,但拉取本地后无法正常编译,可尝试手动添加项目依赖,也可参考 <code>Workflows</code> 中配置的构建流程重试。</p><h3 id="输入法问题"><a href="#输入法问题" class="headerlink" title="输入法问题"></a>输入法问题</h3><p><code>v1.7.0</code> 及以后的版本中,默认启用scrcpy的 <code>UHID keyboard</code> 特性,以优化中文输入体验。</p><p>如果在此过程中遇到了什么问题,可尝试打开配置文件 <code>%AppData%\FreeControl\config.json</code>,将 <code>CustomArgs</code> 的值由 <code>--keyboard=uhid</code> 改为 <code>--keyboard=sdk</code>。</p><p>更多信息可参考 <a href="https://github.com/Genymobile/scrcpy/blob/master/doc/keyboard.md">scrcpy-doc-keyboard</a>。</p><details><summary>已过时</summary><p>个人测试发现,目前支持跨屏进行拼音输入的 <strong>手机输入法APP</strong> 如下:</p><ul><li>搜狗输入法</li><li>QQ输入法</li><li>谷歌拼音输入法</li><li>Gboard</li><li>微信输入法</li></ul><p>此功能需要输入法APP适配,有更好用的输入法欢迎留言推荐。</p><blockquote><p>自动切换输入法功能默认禁用。如需启用,先关闭程序,然后打开配置文件 <code>%AppData%\FreeControl\config.json</code>,将 <code>EnableSwitchIME</code> 字段值改为 <code>true</code>,保存后启动程序即可。</p></blockquote></details><h3 id="设备连接问题"><a href="#设备连接问题" class="headerlink" title="设备连接问题"></a>设备连接问题</h3><h4 id="USB-连接"><a href="#USB-连接" class="headerlink" title="USB 连接"></a>USB 连接</h4><p>通过 USB 连接来正常使用 adb 需要保证几点:</p><ol><li><p>硬件状态正常。</p><p>包括 Android 设备处于正常开机状态,USB 连接线和各种接口完好。</p></li><li><p>Android 设备的开发者选项和 USB 调试模式已开启。</p><p>可以到「设置」-「开发者选项」-「Android 调试」查看。</p><p>如果在设置里找不到开发者选项,那需要通过一个彩蛋来让它显示出来:在「设置」-「关于手机」连续点击「版本号」7 次。</p></li><li><p>设备驱动状态正常。</p><p>这一点貌似在 Linux 和 Mac OS X 下不用操心,在 Windows 下有可能遇到需要安装驱动的情况,确认这一点可以右键「计算机」-「属性」,到「设备管理器」里查看相关设备上是否有黄色感叹号或问号,如果没有就说明驱动状态已经好了。否则可以下载一个手机助手类程序来安装驱动先。</p></li><li><p>通过 USB 线连接好电脑和设备后确认状态。</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs sh">adb devices<br></code></pre></td></tr></table></figure><p>如果能看到</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs sh">xxxxxx device<br></code></pre></td></tr></table></figure><p>说明连接成功。</p></li></ol><h4 id="无线连接(需要借助-USB-线)"><a href="#无线连接(需要借助-USB-线)" class="headerlink" title="无线连接(需要借助 USB 线)"></a>无线连接(需要借助 USB 线)</h4><p>除了可以通过 USB 连接设备与电脑来使用 adb,也可以通过无线连接——虽然连接过程中也有需要使用 USB 的步骤,但是连接成功之后你的设备就可以在一定范围内摆脱 USB 连接线的限制啦!</p><p>操作步骤:</p><ol><li><p>将 Android 设备与要运行 adb 的电脑连接到同一个局域网,比如连到同一个 WiFi。</p></li><li><p>将设备与电脑通过 USB 线连接。</p><p>应确保连接成功(可运行 <code>adb devices</code> 看是否能列出该设备)。</p></li><li><p>让设备在 5555 端口监听 TCP/IP 连接:</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs sh">adb tcpip 5555<br></code></pre></td></tr></table></figure></li><li><p>断开 USB 连接。</p></li><li><p>找到设备的 IP 地址。</p><p>一般能在「设置」-「关于手机」-「状态信息」-「IP地址」找到。</p></li><li><p>通过 IP 地址连接设备。</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs sh">adb connect <device-ip-address><br></code></pre></td></tr></table></figure><p>这里的 <code><device-ip-address></code> 就是上一步中找到的设备 IP 地址。</p></li><li><p>确认连接状态。</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs sh">adb devices<br></code></pre></td></tr></table></figure><p>如果能看到</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs sh"><device-ip-address>:5555 device<br></code></pre></td></tr></table></figure><p>说明连接成功。</p></li></ol><p>如果连接不了,请确认 Android 设备与电脑是连接到了同一个 WiFi,然后再次执行 <code>adb connect <device-ip-address></code> 那一步;</p><p>如果还是不行的话,通过 <code>adb kill-server</code> 重新启动 adb 然后从头再来一次试试。</p><details><summary>已隐藏</summary><h4 id="无线连接(Android11-及以上)"><a href="#无线连接(Android11-及以上)" class="headerlink" title="无线连接(Android11 及以上)"></a>无线连接(Android11 及以上)</h4><p>Android 11 及更高版本支持使用 Android 调试桥 (adb) 从工作站以无线方式部署和调试应用。例如,您可以将可调试应用部署到多台远程设备,而无需通过 USB 实际连接设备。这样就可以避免常见的 USB 连接问题,例如驱动程序安装方面的问题。</p><p><a href="https://developer.android.com/studio/command-line/adb?hl=zh_cn#connect-to-a-device-over-wi-fi-android-11+">官方文档</a></p><p>操作步骤:</p><ol><li><p>更新到最新版本的 <a href="https://developer.android.com/studio/releases/platform-tools?hl=zh_cn">SDK 平台工具</a>(至少30.0.0)。</p></li><li><p>将 Android 设备与要运行 adb 的电脑连接到同一个局域网,比如连到同一个 WiFi。</p></li><li><p>在开发者选项中启用<strong>无线调试</strong>。</p></li><li><p>在询问要允许在此网络上进行无线调试吗?的对话框中,点击允许。</p></li><li><p>选择使用配对码配对设备,使用弹窗中的 IP 地址和端口号。</p> <figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs sh">adb pair ipaddr:port<br></code></pre></td></tr></table></figure></li><li><p>提示 <code>Enter pairing code:</code> 时输入弹窗中的配对码,成功后会显示 <code>Successfully paired to ...</code> 。</p></li><li><p>使用无线调试下的 <strong>IP 地址和端口</strong>。</p> <figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs sh">adb connect ipaddr:port<br></code></pre></td></tr></table></figure></li><li><p>确认连接状态。</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs sh">adb devices<br></code></pre></td></tr></table></figure><p>如果能看到</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs sh">ipaddr:port device<br></code></pre></td></tr></table></figure><p>说明连接成功。</p></li></ol><h4 id="无线连接(无需借助-USB-线)"><a href="#无线连接(无需借助-USB-线)" class="headerlink" title="无线连接(无需借助 USB 线)"></a>无线连接(无需借助 USB 线)</h4><p><strong>需要 root 权限</strong>,此处不做详细说明,有需要的朋友可<a href="https://github.com/mzlogin/awesome-adb#%E6%97%A0%E7%BA%BF%E8%BF%9E%E6%8E%A5%E6%97%A0%E9%9C%80%E5%80%9F%E5%8A%A9-usb-%E7%BA%BF">参考此处</a>。</p></details><h3 id="保持唤醒功能"><a href="#保持唤醒功能" class="headerlink" title="保持唤醒功能"></a>保持唤醒功能</h3><p>仅在手机充电时有效。</p><h3 id="音频转发功能"><a href="#音频转发功能" class="headerlink" title="音频转发功能"></a>音频转发功能</h3><p>使用 <code>Android 11</code> 或更高版本的设备支持音频转发,并且默认情况下启用:</p><ul><li>对于 <code>Android 12</code> 或更高版本,它开箱即用。</li><li>对于 <code>Android 11</code> ,您需要确保在启动scrcpy时设备屏幕已解锁。假的弹出窗口将短暂出现,使系统认为shell应用程序处于前台。没有这个,音频捕获将失败。</li><li>对于 <code>Android 10</code> 或更早版本,无法捕获音频并自动禁用。</li></ul><h2 id="捐赠"><a href="#捐赠" class="headerlink" title="捐赠"></a>捐赠</h2><p>如果您觉得这个项目对您有帮助,欢迎请作者喝杯咖啡。☕</p><p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/donate/zfb_wx.png?boxshadow=none"></p><p>爱发电❤ <a href="https://afdian.net/a/pdone">https://afdian.net/a/pdone</a></p><h2 id="Stargazers-Over-Time"><a href="#Stargazers-Over-Time" class="headerlink" title="Stargazers Over Time"></a>Stargazers Over Time</h2><p><a href="https://starchart.cc/pdone/FreeControl"><img src="https://starchart.cc/pdone/FreeControl.svg?background=%23ffffff00&axis=%23888888&line=%2330a9de&boxshadow=none" alt="Stargazers over time"></a></p>]]></content>
<summary type="html">基于开源项目scrcpy,提供简洁的交互界面。</summary>
<category term="Tools" scheme="https://awaw.cc/categories/Tools/"/>
<category term=".NET" scheme="https://awaw.cc/tags/NET/"/>
<category term="OpenSource" scheme="https://awaw.cc/tags/OpenSource/"/>
</entry>
<entry>
<title>WinForm加载中窗体</title>
<link href="https://awaw.cc/post/net-loading/"/>
<id>https://awaw.cc/post/net-loading/</id>
<published>2020-04-14T16:00:00.000Z</published>
<updated>2023-07-14T06:13:37.810Z</updated>
<content type="html"><![CDATA[<p>最近项目中用有用到,就简单整了个,只有几行代码。</p><span id="more"></span> <p><img src="https://cdn.awaw.cc/raw/pdone/static/master/img/article/net-loading/1.gif" alt="预览图"></p><h2 id="调用示例"><a href="#调用示例" class="headerlink" title="调用示例"></a>调用示例</h2><pre><code class="hljs">public partial class Main : Form{ public Main() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { //构造函数参数说明: //work: 需要在新线程中执行的任务 //msg: 执行完成提示信息(为空时不提示) //openDir: 执行完成后自动打开指定目录(为空时不打开) Loading loading = new Loading(DoSomething, 执行完成); //不show的话 可以当作后台线程执行任务来用 loading.ShowDialog(); } public void DoSomething() { Thread.Sleep(3000); }}</code></pre><h2 id="源代下载"><a href="#源代下载" class="headerlink" title="源代下载"></a>源代下载</h2><h3 id="百度云"><a href="#百度云" class="headerlink" title="百度云"></a>百度云</h3><p><a href="https://pan.baidu.com/s/1NzrZeNKqjlZxK__iXaGvwQ">https://pan.baidu.com/s/1NzrZeNKqjlZxK__iXaGvwQ</a></p><blockquote><p>提取码:npkt</p></blockquote>]]></content>
<summary type="html"><p>最近项目中用有用到,就简单整了个,只有几行代码。</p></summary>
<category term="Developer" scheme="https://awaw.cc/categories/Developer/"/>
<category term=".NET" scheme="https://awaw.cc/tags/NET/"/>
<category term="async" scheme="https://awaw.cc/tags/async/"/>
</entry>
<entry>
<title>DapperHelper</title>
<link href="https://awaw.cc/post/dapper-helper/"/>
<id>https://awaw.cc/post/dapper-helper/</id>
<published>2020-03-16T16:00:00.000Z</published>
<updated>2023-07-04T03:55:28.185Z</updated>
<content type="html"><![CDATA[<p>Dapper is a simple object mapper for .NET and owns the title of <strong>King of Micro ORM</strong> in terms of speed and is virtually as fast as using a raw ADO.NET data reader. An ORM is an Object Relational Mapper, which is responsible for mapping between database and programming language.</p><span id="more"></span><p>Dapper extends the IDbConnection by providing useful extension methods to query your database.</p><h2 id="How-Dapper-Works"><a href="#How-Dapper-Works" class="headerlink" title="How Dapper Works?"></a>How Dapper Works?</h2><p>It is a three-step process.</p><ul><li>Create an IDbConnection object.</li><li>Write a query to perform CRUD operations.</li><li>Pass query as a parameter in the Execute method.</li></ul><h2 id="Installation"><a href="#Installation" class="headerlink" title="Installation"></a>Installation</h2><p>Dapper is installed through NuGet: <a href="https://www.nuget.org/packages/Dapper">https://www.nuget.org/packages/Dapper</a></p><figure class="highlight ada"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs ada">PM> Install-<span class="hljs-keyword">Package</span> <span class="hljs-title">Dapper</span><br></code></pre></td></tr></table></figure><h2 id="Requirement"><a href="#Requirement" class="headerlink" title="Requirement"></a>Requirement</h2><p>Dapper works with any database provider since there is no DB specific implementation.</p><h2 id="Methods"><a href="#Methods" class="headerlink" title="Methods"></a>Methods</h2><p>Dapper will extend your IDbConnection interface with multiple methods:</p><ul><li><a href="https://dapper-tutorial.net/execute">Execute</a></li><li><a href="https://dapper-tutorial.net/query">Query</a></li><li><a href="https://dapper-tutorial.net/queryfirst">QueryFirst</a></li><li><a href="https://dapper-tutorial.net/queryfirstordefault">QueryFirstOrDefault</a></li><li><a href="https://dapper-tutorial.net/querysingle">QuerySingle</a></li><li><a href="https://dapper-tutorial.net/querysingleordefault">QuerySingleOrDefault</a></li><li><a href="https://dapper-tutorial.net/querymultiple">QueryMultiple</a></li></ul><figure class="highlight cs"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><code class="hljs cs"><span class="hljs-built_in">string</span> sqlOrderDetails = <span class="hljs-string">"SELECT TOP 5 * FROM OrderDetails;"</span>;<br><span class="hljs-built_in">string</span> sqlOrderDetail = <span class="hljs-string">"SELECT * FROM OrderDetails WHERE OrderDetailID = @OrderDetailID;"</span>;<br><span class="hljs-built_in">string</span> sqlCustomerInsert = <span class="hljs-string">"INSERT INTO Customers (CustomerName) Values (@CustomerName);"</span>;<br><br><span class="hljs-keyword">using</span> (<span class="hljs-keyword">var</span> connection = <span class="hljs-keyword">new</span> SqlConnection(FiddleHelper.GetConnectionStringSqlServerW3Schools()))<br>{<br> <span class="hljs-keyword">var</span> orderDetails = connection.Query<OrderDetail>(sqlOrderDetails).ToList();<br> <span class="hljs-keyword">var</span> orderDetail = connection.QueryFirstOrDefault<OrderDetail>(sqlOrderDetail, <span class="hljs-keyword">new</span> {OrderDetailID = <span class="hljs-number">1</span>});<br> <span class="hljs-keyword">var</span> affectedRows = connection.Execute(sqlCustomerInsert, <span class="hljs-keyword">new</span> {CustomerName = <span class="hljs-string">"Mark"</span>});<br><br> Console.WriteLine(orderDetails.Count);<br> Console.WriteLine(affectedRows);<br><br> FiddleHelper.WriteTable(orderDetails);<br> FiddleHelper.WriteTable(<span class="hljs-keyword">new</span> List<OrderDetail>() { orderDetail });<br>}<br></code></pre></td></tr></table></figure><p>Try it: <a href="https://dotnetfiddle.net/FghvFq">.NET Core</a> | <a href="https://dotnetfiddle.net/vIvUNm">.NET Framework</a></p><h2 id="Parameter"><a href="#Parameter" class="headerlink" title="Parameter"></a>Parameter</h2><p>Execute and queries method can use parameters from multiple different ways:</p><ul><li><a href="https://dapper-tutorial.net/parameter-anonymous">Anonymous</a></li><li><a href="https://dapper-tutorial.net/parameter-dynamic">Dynamic</a></li><li><a href="https://dapper-tutorial.net/parameter-list">List</a></li><li><a href="https://dapper-tutorial.net/parameter-string">String</a></li></ul><figure class="highlight cs"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><code class="hljs cs"><span class="hljs-comment">// Anonymous</span><br><span class="hljs-keyword">var</span> affectedRows = connection.Execute(sql,<br> <span class="hljs-keyword">new</span> {Kind = InvoiceKind.WebInvoice, Code = <span class="hljs-string">"Single_Insert_1"</span>},<br> commandType: CommandType.StoredProcedure);<br><br><span class="hljs-comment">// Dynamic</span><br>DynamicParameters parameter = <span class="hljs-keyword">new</span> DynamicParameters();<br><br>parameter.Add(<span class="hljs-string">"@Kind"</span>, InvoiceKind.WebInvoice, DbType.Int32, ParameterDirection.Input);<br>parameter.Add(<span class="hljs-string">"@Code"</span>, <span class="hljs-string">"Many_Insert_0"</span>, DbType.String, ParameterDirection.Input);<br>parameter.Add(<span class="hljs-string">"@RowCount"</span>, dbType: DbType.Int32, direction: ParameterDirection.ReturnValue);<br><br>connection.Execute(sql,<br> parameter,<br> commandType: CommandType.StoredProcedure);<br><br><span class="hljs-built_in">int</span> rowCount = parameter.Get<<span class="hljs-built_in">int</span>>(<span class="hljs-string">"@RowCount"</span>);<br><br><span class="hljs-comment">// List</span><br>connection.Query<Invoice>(sql, <span class="hljs-keyword">new</span> {Kind = <span class="hljs-keyword">new</span>[] {InvoiceKind.StoreInvoice, InvoiceKind.WebInvoice}}).ToList();<br><span class="hljs-comment">// String</span><br>connection.Query<Invoice>(sql, <span class="hljs-keyword">new</span> {Code = <span class="hljs-keyword">new</span> DbString {Value = <span class="hljs-string">"Invoice_1"</span>, IsFixedLength = <span class="hljs-literal">false</span>, Length = <span class="hljs-number">9</span>, IsAnsi = <span class="hljs-literal">true</span>}}).ToList();<br></code></pre></td></tr></table></figure><h2 id="Result"><a href="#Result" class="headerlink" title="Result"></a>Result</h2><p>The result returned by queries method can be mapped to multiple types:</p><ul><li><a href="https://dapper-tutorial.net/result-anonymous">Anonymous</a></li><li><a href="https://dapper-tutorial.net/result-strongly-typed">Strongly Typed</a></li><li><a href="https://dapper-tutorial.net/result-multi-mapping">Multi-Mapping</a></li><li><a href="https://dapper-tutorial.net/result-multi-result">Multi-Result</a></li><li><a href="https://dapper-tutorial.net/result-multi-type">Multi-Type</a></li></ul><figure class="highlight cs"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><code class="hljs cs"><span class="hljs-built_in">string</span> sqlOrderDetails = <span class="hljs-string">"SELECT TOP 10 * FROM OrderDetails;"</span>;<br><br><span class="hljs-keyword">using</span> (<span class="hljs-keyword">var</span> connection = <span class="hljs-keyword">new</span> SqlConnection(FiddleHelper.GetConnectionStringSqlServerW3Schools()))<br>{<br> <span class="hljs-keyword">var</span> anonymousList = connection.Query(sqlOrderDetails).ToList();<br> <span class="hljs-keyword">var</span> orderDetails = connection.Query<OrderDetail>(sqlOrderDetails).ToList();<br><br> Console.WriteLine(anonymousList.Count);<br> Console.WriteLine(orderDetails.Count);<br><br> FiddleHelper.WriteTable(orderDetails);<br><br> FiddleHelper.WriteTable(connection.Query(sqlOrderDetails).FirstOrDefault());<br>}<br></code></pre></td></tr></table></figure><p>Try it: <a href="https://dotnetfiddle.net/VPwBKR">.NET Core</a> | <a href="https://dotnetfiddle.net/EbR9BP">.NET Framework</a></p><h2 id="Utilities"><a href="#Utilities" class="headerlink" title="Utilities"></a>Utilities</h2><ul><li><a href="https://dapper-tutorial.net/async">Async</a></li><li><a href="https://dapper-tutorial.net/buffered">Buffered</a></li><li><a href="https://dapper-tutorial.net/transaction">Transaction</a></li><li><a href="https://dapper-tutorial.net/stored-procedure">Stored Procedure</a></li></ul><figure class="highlight cs"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><code class="hljs cs"><span class="hljs-comment">// Async</span><br>connection.QueryAsync<Invoice>(sql)<br><br><span class="hljs-comment">// Buffered</span><br>connection.Query<Invoice>(sql, buffered: <span class="hljs-literal">false</span>)<br><br><span class="hljs-comment">// Transaction</span><br><span class="hljs-keyword">using</span> (<span class="hljs-keyword">var</span> transaction = connection.BeginTransaction())<br>{<br> <span class="hljs-keyword">var</span> affectedRows = connection.Execute(sql,<br> <span class="hljs-keyword">new</span> {Kind = InvoiceKind.WebInvoice, Code = <span class="hljs-string">"Single_Insert_1"</span>},<br> commandType: CommandType.StoredProcedure,<br> transaction: transaction);<br><br> transaction.Commit();<br>}<br><br><span class="hljs-comment">// Stored Procedure</span><br><span class="hljs-keyword">var</span> affectedRows = connection.Execute(sql,<br><span class="hljs-keyword">new</span> {Kind = InvoiceKind.WebInvoice, Code = <span class="hljs-string">"Single_Insert_1"</span>},<br>commandType: CommandType.StoredProcedure);<br></code></pre></td></tr></table></figure><h2 id="DapperHelper-cs"><a href="#DapperHelper-cs" class="headerlink" title="DapperHelper.cs"></a>DapperHelper.cs</h2><figure class="highlight cs"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br><span class="line">153</span><br><span class="line">154</span><br><span class="line">155</span><br><span class="line">156</span><br><span class="line">157</span><br><span class="line">158</span><br><span class="line">159</span><br><span class="line">160</span><br><span class="line">161</span><br><span class="line">162</span><br><span class="line">163</span><br><span class="line">164</span><br><span class="line">165</span><br><span class="line">166</span><br><span class="line">167</span><br><span class="line">168</span><br><span class="line">169</span><br><span class="line">170</span><br><span class="line">171</span><br><span class="line">172</span><br><span class="line">173</span><br><span class="line">174</span><br><span class="line">175</span><br><span class="line">176</span><br><span class="line">177</span><br><span class="line">178</span><br><span class="line">179</span><br><span class="line">180</span><br><span class="line">181</span><br><span class="line">182</span><br><span class="line">183</span><br><span class="line">184</span><br><span class="line">185</span><br><span class="line">186</span><br><span class="line">187</span><br><span class="line">188</span><br><span class="line">189</span><br><span class="line">190</span><br><span class="line">191</span><br><span class="line">192</span><br><span class="line">193</span><br><span class="line">194</span><br><span class="line">195</span><br><span class="line">196</span><br><span class="line">197</span><br><span class="line">198</span><br><span class="line">199</span><br><span class="line">200</span><br><span class="line">201</span><br><span class="line">202</span><br><span class="line">203</span><br><span class="line">204</span><br><span class="line">205</span><br><span class="line">206</span><br><span class="line">207</span><br><span class="line">208</span><br><span class="line">209</span><br><span class="line">210</span><br><span class="line">211</span><br><span class="line">212</span><br><span class="line">213</span><br><span class="line">214</span><br><span class="line">215</span><br><span class="line">216</span><br><span class="line">217</span><br><span class="line">218</span><br><span class="line">219</span><br><span class="line">220</span><br><span class="line">221</span><br><span class="line">222</span><br><span class="line">223</span><br><span class="line">224</span><br><span class="line">225</span><br><span class="line">226</span><br><span class="line">227</span><br><span class="line">228</span><br><span class="line">229</span><br><span class="line">230</span><br><span class="line">231</span><br><span class="line">232</span><br><span class="line">233</span><br><span class="line">234</span><br><span class="line">235</span><br><span class="line">236</span><br><span class="line">237</span><br><span class="line">238</span><br><span class="line">239</span><br><span class="line">240</span><br><span class="line">241</span><br><span class="line">242</span><br><span class="line">243</span><br><span class="line">244</span><br><span class="line">245</span><br><span class="line">246</span><br><span class="line">247</span><br><span class="line">248</span><br><span class="line">249</span><br><span class="line">250</span><br><span class="line">251</span><br><span class="line">252</span><br><span class="line">253</span><br><span class="line">254</span><br><span class="line">255</span><br><span class="line">256</span><br><span class="line">257</span><br><span class="line">258</span><br><span class="line">259</span><br><span class="line">260</span><br><span class="line">261</span><br><span class="line">262</span><br><span class="line">263</span><br><span class="line">264</span><br><span class="line">265</span><br><span class="line">266</span><br><span class="line">267</span><br><span class="line">268</span><br><span class="line">269</span><br><span class="line">270</span><br><span class="line">271</span><br><span class="line">272</span><br><span class="line">273</span><br><span class="line">274</span><br><span class="line">275</span><br><span class="line">276</span><br><span class="line">277</span><br><span class="line">278</span><br><span class="line">279</span><br><span class="line">280</span><br><span class="line">281</span><br><span class="line">282</span><br><span class="line">283</span><br><span class="line">284</span><br><span class="line">285</span><br><span class="line">286</span><br><span class="line">287</span><br><span class="line">288</span><br><span class="line">289</span><br><span class="line">290</span><br><span class="line">291</span><br><span class="line">292</span><br><span class="line">293</span><br><span class="line">294</span><br><span class="line">295</span><br><span class="line">296</span><br><span class="line">297</span><br><span class="line">298</span><br><span class="line">299</span><br><span class="line">300</span><br><span class="line">301</span><br><span class="line">302</span><br><span class="line">303</span><br><span class="line">304</span><br><span class="line">305</span><br><span class="line">306</span><br><span class="line">307</span><br><span class="line">308</span><br><span class="line">309</span><br><span class="line">310</span><br><span class="line">311</span><br><span class="line">312</span><br><span class="line">313</span><br><span class="line">314</span><br><span class="line">315</span><br><span class="line">316</span><br><span class="line">317</span><br><span class="line">318</span><br><span class="line">319</span><br><span class="line">320</span><br><span class="line">321</span><br><span class="line">322</span><br><span class="line">323</span><br><span class="line">324</span><br><span class="line">325</span><br><span class="line">326</span><br><span class="line">327</span><br><span class="line">328</span><br><span class="line">329</span><br><span class="line">330</span><br><span class="line">331</span><br><span class="line">332</span><br><span class="line">333</span><br><span class="line">334</span><br><span class="line">335</span><br><span class="line">336</span><br><span class="line">337</span><br><span class="line">338</span><br><span class="line">339</span><br><span class="line">340</span><br><span class="line">341</span><br><span class="line">342</span><br><span class="line">343</span><br><span class="line">344</span><br><span class="line">345</span><br><span class="line">346</span><br><span class="line">347</span><br><span class="line">348</span><br><span class="line">349</span><br><span class="line">350</span><br><span class="line">351</span><br><span class="line">352</span><br><span class="line">353</span><br><span class="line">354</span><br><span class="line">355</span><br><span class="line">356</span><br><span class="line">357</span><br><span class="line">358</span><br><span class="line">359</span><br><span class="line">360</span><br><span class="line">361</span><br><span class="line">362</span><br><span class="line">363</span><br><span class="line">364</span><br><span class="line">365</span><br><span class="line">366</span><br><span class="line">367</span><br><span class="line">368</span><br><span class="line">369</span><br><span class="line">370</span><br><span class="line">371</span><br><span class="line">372</span><br><span class="line">373</span><br><span class="line">374</span><br><span class="line">375</span><br><span class="line">376</span><br><span class="line">377</span><br><span class="line">378</span><br><span class="line">379</span><br><span class="line">380</span><br><span class="line">381</span><br><span class="line">382</span><br><span class="line">383</span><br><span class="line">384</span><br></pre></td><td class="code"><pre><code class="hljs cs"><span class="hljs-keyword">using</span> System;<br><span class="hljs-keyword">using</span> System.Collections.Generic;<br><span class="hljs-keyword">using</span> System.Configuration;<br><span class="hljs-keyword">using</span> System.Data;<br><span class="hljs-keyword">using</span> System.Data.SqlClient;<br><span class="hljs-keyword">using</span> System.Data.SQLite;<br><span class="hljs-keyword">using</span> System.Linq;<br><span class="hljs-keyword">using</span> System.Threading.Tasks;<br><span class="hljs-keyword">using</span> Dapper;<br><span class="hljs-keyword">using</span> MySql.Data.MySqlClient;<br><br><span class="hljs-keyword">namespace</span> <span class="hljs-title">ORMSuit.DAO</span> {<br> <span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title">DapperHelper</span><<span class="hljs-title">T</span>> {<br> <span class="hljs-built_in">enum</span> DBType {<br> MSSQL,<br> MySQL,<br> SQLite<br> }<br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><summary></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> 数据库连接字符串</span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"></summary></span></span><br> <span class="hljs-keyword">private</span> <span class="hljs-keyword">static</span> <span class="hljs-built_in">string</span> connectionString = <span class="hljs-string">""</span>;<br><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><summary></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> MSSQL=0, MySQL=1, SQLite=2</span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"></summary></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><param name="dbType"></span><span class="hljs-doctag"></param></span></span><br> <span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-built_in">int</span> dbType = <span class="hljs-number">0</span>;<br><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><summary></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> 获取数据库连接</span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"></summary></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><returns></span><span class="hljs-doctag"></returns></span></span><br> <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> IDbConnection <span class="hljs-title">GetConnection</span> ()</span> {<br> <span class="hljs-keyword">switch</span> ((DBType) dbType) {<br> <span class="hljs-keyword">case</span> DBType.MSSQL:<br> <span class="hljs-keyword">return</span> <span class="hljs-keyword">new</span> SqlConnection (connectionString);<br> <span class="hljs-keyword">case</span> DBType.MySQL:<br> connectionString = ConfigurationManager.ConnectionStrings[<span class="hljs-string">"mysqlconn"</span>].ConnectionString;<br> <span class="hljs-keyword">return</span> <span class="hljs-keyword">new</span> MySqlConnection (connectionString);<br> <span class="hljs-keyword">case</span> DBType.SQLite:<br> connectionString = ConfigurationManager.ConnectionStrings[<span class="hljs-string">"sqliteconn"</span>].ConnectionString;<br> <span class="hljs-keyword">return</span> <span class="hljs-keyword">new</span> SQLiteConnection (connectionString);<br> <span class="hljs-literal">default</span>:<br> <span class="hljs-keyword">return</span> <span class="hljs-keyword">new</span> SqlConnection (connectionString);<br> }<br> }<br><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><summary></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> 查询列表</span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"></summary></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><param name="sql"></span><span class="hljs-doctag"></param></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><param name="param"></span><span class="hljs-doctag"></param></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><returns></span><span class="hljs-doctag"></returns></span></span><br> <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> List<T> <span class="hljs-title">Query</span> (<span class="hljs-params"><span class="hljs-built_in">string</span> sql, <span class="hljs-built_in">object</span> param = <span class="hljs-literal">null</span></span>)</span> {<br> <span class="hljs-keyword">using</span> (IDbConnection con = GetConnection ()) {<br> <span class="hljs-keyword">return</span> con.Query<T> (sql, param).ToList ();<br> }<br> }<br><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><summary></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> 查询第一个数据</span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"></summary></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><param name="sql"></span><span class="hljs-doctag"></param></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><param name="param"></span><span class="hljs-doctag"></param></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><returns></span><span class="hljs-doctag"></returns></span></span><br> <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> T <span class="hljs-title">QueryFirst</span> (<span class="hljs-params"><span class="hljs-built_in">string</span> sql, <span class="hljs-built_in">object</span> param = <span class="hljs-literal">null</span></span>)</span> {<br> <span class="hljs-keyword">using</span> (IDbConnection con = GetConnection ()) {<br> List<T> tempList = con.Query<T> (sql, param).ToList ();<br> <span class="hljs-keyword">if</span> (tempList != <span class="hljs-literal">null</span> && tempList.Count > <span class="hljs-number">0</span>) {<br> <span class="hljs-keyword">return</span> tempList[<span class="hljs-number">0</span>];<br> } <span class="hljs-keyword">else</span> {<br> <span class="hljs-keyword">return</span> <span class="hljs-literal">default</span>;<br> }<br> <span class="hljs-comment">//return con.QueryFirst<T>(sql, param);</span><br> }<br> }<br><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><summary></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> 查询第一个数据没有返回默认值</span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"></summary></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><param name="sql"></span><span class="hljs-doctag"></param></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><param name="param"></span><span class="hljs-doctag"></param></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><returns></span><span class="hljs-doctag"></returns></span></span><br> <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> T <span class="hljs-title">QueryFirstOrDefault</span> (<span class="hljs-params"><span class="hljs-built_in">string</span> sql, <span class="hljs-built_in">object</span> param = <span class="hljs-literal">null</span></span>)</span> {<br> <span class="hljs-keyword">using</span> (IDbConnection con = GetConnection ()) {<br> <span class="hljs-keyword">return</span> con.QueryFirstOrDefault<T> (sql, param);<br> }<br> }<br><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><summary></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> 查询单条数据</span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"></summary></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><param name="sql"></span><span class="hljs-doctag"></param></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><param name="param"></span><span class="hljs-doctag"></param></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><returns></span><span class="hljs-doctag"></returns></span></span><br> <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> T <span class="hljs-title">QuerySingle</span> (<span class="hljs-params"><span class="hljs-built_in">string</span> sql, <span class="hljs-built_in">object</span> param = <span class="hljs-literal">null</span></span>)</span> {<br> <span class="hljs-keyword">using</span> (IDbConnection con = GetConnection ()) {<br> <span class="hljs-keyword">return</span> con.QuerySingle<T> (sql, param);<br> }<br> }<br><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><summary></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> 数据是否存在</span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"></summary></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><param name="sql"></span>select count(*) from table where id=@id<span class="hljs-doctag"></param></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><param name="param"></span>new { id = 1 }<span class="hljs-doctag"></param></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><returns></span><span class="hljs-doctag"></returns></span></span><br> <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-built_in">bool</span> <span class="hljs-title">Exists</span> (<span class="hljs-params"><span class="hljs-built_in">string</span> sql, <span class="hljs-built_in">object</span> param = <span class="hljs-literal">null</span></span>)</span> {<br> <span class="hljs-built_in">object</span> obj = ExecuteScalar (sql, param);<br> <span class="hljs-built_in">int</span> count = <span class="hljs-number">0</span>;<br> <span class="hljs-keyword">if</span> (obj == <span class="hljs-literal">null</span>) {<br> count = <span class="hljs-number">0</span>;<br> } <span class="hljs-keyword">else</span> {<br> count = Convert.ToInt32 (obj);<br> }<br> <span class="hljs-keyword">if</span> (count > <span class="hljs-number">0</span>) {<br> <span class="hljs-keyword">return</span> <span class="hljs-literal">true</span>;<br> } <span class="hljs-keyword">else</span> {<br> <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;<br> }<br> }<br><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><summary></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> 数据行数</span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"></summary></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><param name="sql"></span>select count(*) from table where id=@id<span class="hljs-doctag"></param></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><param name="param"></span>new { id = 1 }<span class="hljs-doctag"></param></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><returns></span><span class="hljs-doctag"></returns></span></span><br> <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-built_in">int</span> <span class="hljs-title">RecordCount</span> (<span class="hljs-params"><span class="hljs-built_in">string</span> sql, <span class="hljs-built_in">object</span> param = <span class="hljs-literal">null</span></span>)</span> {<br> <span class="hljs-built_in">object</span> obj = ExecuteScalar (sql, param);<br> <span class="hljs-built_in">int</span> count = <span class="hljs-number">0</span>;<br> <span class="hljs-keyword">if</span> (obj == <span class="hljs-literal">null</span>) {<br> count = <span class="hljs-number">0</span>;<br> } <span class="hljs-keyword">else</span> {<br> count = Convert.ToInt32 (obj);<br> }<br> <span class="hljs-keyword">return</span> count;<br> }<br><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><summary></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> 查询单条数据没有返回默认值</span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"></summary></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><param name="sql"></span><span class="hljs-doctag"></param></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><param name="param"></span><span class="hljs-doctag"></param></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><returns></span><span class="hljs-doctag"></returns></span></span><br> <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> T <span class="hljs-title">QuerySingleOrDefault</span> (<span class="hljs-params"><span class="hljs-built_in">string</span> sql, <span class="hljs-built_in">object</span> param = <span class="hljs-literal">null</span></span>)</span> {<br> <span class="hljs-keyword">using</span> (IDbConnection con = GetConnection ()) {<br> <span class="hljs-keyword">return</span> con.QuerySingleOrDefault<T> (sql, param);<br> }<br> }<br><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><summary></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> 增删改</span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"></summary></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><param name="sql"></span><span class="hljs-doctag"></param></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><param name="param"></span><span class="hljs-doctag"></param></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><returns></span><span class="hljs-doctag"></returns></span></span><br> <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-built_in">int</span> <span class="hljs-title">Execute</span> (<span class="hljs-params"><span class="hljs-built_in">string</span> sql, <span class="hljs-built_in">object</span> param = <span class="hljs-literal">null</span></span>)</span> {<br> <span class="hljs-keyword">using</span> (IDbConnection con = GetConnection ()) {<br> <span class="hljs-keyword">return</span> con.Execute (sql, param);<br> }<br> }<br><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><summary></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> Reader获取数据</span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"></summary></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><param name="sql"></span><span class="hljs-doctag"></param></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><param name="param"></span><span class="hljs-doctag"></param></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><returns></span><span class="hljs-doctag"></returns></span></span><br> <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> IDataReader <span class="hljs-title">ExecuteReader</span> (<span class="hljs-params"><span class="hljs-built_in">string</span> sql, <span class="hljs-built_in">object</span> param = <span class="hljs-literal">null</span></span>)</span> {<br> <span class="hljs-keyword">using</span> (IDbConnection con = GetConnection ()) {<br> <span class="hljs-keyword">return</span> con.ExecuteReader (sql, param);<br> }<br> }<br><br> <span class="hljs-meta">#<span class="hljs-keyword">region</span> </span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><summary></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> 获取DataTabel</span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"></summary></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><param name="sql"></span><span class="hljs-doctag"></param></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><param name="param"></span><span class="hljs-doctag"></param></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><returns></span><span class="hljs-doctag"></returns></span></span><br> <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> DataTable <span class="hljs-title">ExecuteDataTabel</span> (<span class="hljs-params"><span class="hljs-built_in">string</span> sql, <span class="hljs-built_in">object</span> param = <span class="hljs-literal">null</span></span>)</span> {<br> <span class="hljs-keyword">using</span> (IDbConnection con = GetConnection ()) {<br> <span class="hljs-keyword">return</span> DataReaderToDataTable (con.ExecuteReader (sql, param));<br> }<br> }<br><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><summary></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> 获取DataSet</span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"></summary></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><param name="sql"></span><span class="hljs-doctag"></param></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><param name="param"></span><span class="hljs-doctag"></param></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><returns></span><span class="hljs-doctag"></returns></span></span><br> <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> DataSet <span class="hljs-title">ExecuteDataSet</span> (<span class="hljs-params"><span class="hljs-built_in">string</span> sql, <span class="hljs-built_in">object</span> param = <span class="hljs-literal">null</span></span>)</span> {<br> <span class="hljs-keyword">using</span> (IDbConnection con = GetConnection ()) {<br> <span class="hljs-keyword">return</span> DataReaderToDataSet (con.ExecuteReader (sql, param));<br> }<br> }<br><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><summary></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> DataReader转DataTable</span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"></summary></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><param name="dataReader"></span><span class="hljs-doctag"></param></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><returns></span><span class="hljs-doctag"></returns></span></span><br> <span class="hljs-function"><span class="hljs-keyword">private</span> <span class="hljs-keyword">static</span> DataTable <span class="hljs-title">DataReaderToDataTable</span> (<span class="hljs-params">IDataReader dataReader</span>)</span> {<br> DataTable datatable = <span class="hljs-keyword">new</span> DataTable ();<br> <span class="hljs-keyword">for</span> (<span class="hljs-built_in">int</span> i = <span class="hljs-number">0</span>; i < dataReader.FieldCount; i++) {<br> DataColumn myDataColumn = <span class="hljs-keyword">new</span> DataColumn ();<br> myDataColumn.DataType = dataReader.GetFieldType (i);<br> myDataColumn.ColumnName = dataReader.GetName (i);<br> datatable.Columns.Add (myDataColumn);<br> }<br> <span class="hljs-keyword">while</span> (dataReader.Read ()) {<br> DataRow myDataRow = datatable.NewRow ();<br> <span class="hljs-keyword">for</span> (<span class="hljs-built_in">int</span> i = <span class="hljs-number">0</span>; i < dataReader.FieldCount; i++) {<br> myDataRow[i] = dataReader[i].ToString ();<br> }<br> datatable.Rows.Add (myDataRow);<br> myDataRow = <span class="hljs-literal">null</span>;<br> }<br> dataReader.Close ();<br> <span class="hljs-keyword">return</span> datatable;<br> }<br><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><summary></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> DataReader转DataSet</span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"></summary></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><param name="reader"></span><span class="hljs-doctag"></param></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><returns></span><span class="hljs-doctag"></returns></span></span><br> <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> DataSet <span class="hljs-title">DataReaderToDataSet</span> (<span class="hljs-params">IDataReader dataReader</span>)</span> {<br> DataSet dataSet = <span class="hljs-keyword">new</span> DataSet ();<br> <span class="hljs-keyword">do</span> {<br> DataTable schemaTable = dataReader.GetSchemaTable ();<br> DataTable dataTable = <span class="hljs-keyword">new</span> DataTable ();<br> <span class="hljs-keyword">if</span> (schemaTable != <span class="hljs-literal">null</span>) {<br> <span class="hljs-keyword">for</span> (<span class="hljs-built_in">int</span> i = <span class="hljs-number">0</span>; i < schemaTable.Rows.Count; i++) {<br> DataRow dataRow = schemaTable.Rows[i];<br> <span class="hljs-built_in">string</span> columnName = (<span class="hljs-built_in">string</span>) dataRow[<span class="hljs-string">"ColumnName"</span>];<br> DataColumn column = <span class="hljs-keyword">new</span> DataColumn (columnName, (Type) dataRow[<span class="hljs-string">"DataType"</span>]);<br> dataTable.Columns.Add (column);<br> }<br> dataSet.Tables.Add (dataTable);<br> <span class="hljs-keyword">while</span> (dataReader.Read ()) {<br> DataRow dataRow = dataTable.NewRow ();<br> <span class="hljs-keyword">for</span> (<span class="hljs-built_in">int</span> i = <span class="hljs-number">0</span>; i < dataReader.FieldCount; i++) {<br> dataRow[i] = dataReader.GetValue (i);<br> }<br> dataTable.Rows.Add (dataRow);<br> }<br> } <span class="hljs-keyword">else</span> {<br> DataColumn column = <span class="hljs-keyword">new</span> DataColumn (<span class="hljs-string">"RowsAffected"</span>);<br> dataTable.Columns.Add (column);<br> dataSet.Tables.Add (dataTable);<br> DataRow dataRow = dataTable.NewRow ();<br> dataRow[<span class="hljs-number">0</span>] = dataReader.RecordsAffected;<br> dataTable.Rows.Add (dataRow);<br> }<br> }<br> <span class="hljs-keyword">while</span> (dataReader.NextResult ());<br> <span class="hljs-keyword">return</span> dataSet;<br> }<br><br> <span class="hljs-meta">#<span class="hljs-keyword">endregion</span></span><br><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><summary></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> Scalar获取数据</span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"></summary></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><param name="sql"></span><span class="hljs-doctag"></param></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><param name="param"></span><span class="hljs-doctag"></param></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><returns></span><span class="hljs-doctag"></returns></span></span><br> <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-built_in">object</span> <span class="hljs-title">ExecuteScalar</span> (<span class="hljs-params"><span class="hljs-built_in">string</span> sql, <span class="hljs-built_in">object</span> param = <span class="hljs-literal">null</span></span>)</span> {<br> <span class="hljs-keyword">using</span> (IDbConnection con = GetConnection ()) {<br> <span class="hljs-keyword">return</span> con.ExecuteScalar (sql, param);<br> }<br> }<br><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><summary></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> Scalar获取数据</span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"></summary></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><param name="sql"></span><span class="hljs-doctag"></param></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><param name="param"></span><span class="hljs-doctag"></param></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><returns></span><span class="hljs-doctag"></returns></span></span><br> <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> T <span class="hljs-title">ExecuteScalarForT</span> (<span class="hljs-params"><span class="hljs-built_in">string</span> sql, <span class="hljs-built_in">object</span> param = <span class="hljs-literal">null</span></span>)</span> {<br> <span class="hljs-keyword">using</span> (IDbConnection con = GetConnection ()) {<br> <span class="hljs-keyword">return</span> con.ExecuteScalar<T> (sql, param);<br> }<br> }<br><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><summary></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> 带参数的存储过程</span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"></summary></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><param name="sql"></span><span class="hljs-doctag"></param></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><param name="param"></span><span class="hljs-doctag"></param></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><returns></span><span class="hljs-doctag"></returns></span></span><br> <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> List<T> <span class="hljs-title">ExecutePro</span> (<span class="hljs-params"><span class="hljs-built_in">string</span> proc, <span class="hljs-built_in">object</span> param = <span class="hljs-literal">null</span></span>)</span> {<br> <span class="hljs-keyword">using</span> (IDbConnection con = GetConnection ()) {<br> List<T> list = con.Query<T> (proc,<br> param,<br> <span class="hljs-literal">null</span>,<br> <span class="hljs-literal">true</span>,<br> <span class="hljs-literal">null</span>,<br> CommandType.StoredProcedure).ToList ();<br> <span class="hljs-keyword">return</span> list;<br> }<br> }<br><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><summary></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> 多条SQL批量执行</span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"></summary></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><param name="Key"></span>多条SQL<span class="hljs-doctag"></param></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><param name="Value"></span>SQL对应实体<span class="hljs-doctag"></param></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><returns></span><span class="hljs-doctag"></returns></span></span><br> <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-built_in">int</span> <span class="hljs-title">ExecuteTransaction</span> (<span class="hljs-params">Dictionary<<span class="hljs-built_in">string</span>, <span class="hljs-built_in">object</span>> dic</span>)</span> {<br> <span class="hljs-keyword">using</span> (IDbConnection con = GetConnection ()) {<br> <span class="hljs-keyword">using</span> (<span class="hljs-keyword">var</span> transaction = con.BeginTransaction ()) {<br> <span class="hljs-keyword">try</span> {<br> <span class="hljs-built_in">int</span> result = <span class="hljs-number">0</span>;<br> <span class="hljs-keyword">foreach</span> (<span class="hljs-keyword">var</span> sql <span class="hljs-keyword">in</span> dic) {<br> result += con.Execute (sql.Key, sql.Value, transaction);<br> }<br><br> transaction.Commit ();<br> <span class="hljs-keyword">return</span> result;<br> } <span class="hljs-keyword">catch</span> (Exception ex) {<br> transaction.Rollback ();<br> <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br> }<br> }<br> }<br> }<br><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><summary></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> 批量增删改 带事务</span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"></summary></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><param name="sql"></span>单SQL<span class="hljs-doctag"></param></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><param name="object"></span>实体列表<span class="hljs-doctag"></param></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><returns></span><span class="hljs-doctag"></returns></span></span><br> <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-built_in">int</span> <span class="hljs-title">ExecuteTransaction</span> (<span class="hljs-params"><span class="hljs-built_in">string</span> sql, <span class="hljs-built_in">object</span> obj</span>)</span> {<br> <span class="hljs-keyword">using</span> (IDbConnection con = GetConnection ()) {<br> con.Open ();<br> <span class="hljs-keyword">using</span> (IDbTransaction transaction = con.BeginTransaction ()) {<br> <span class="hljs-keyword">try</span> {<br> <span class="hljs-built_in">int</span> result = <span class="hljs-number">0</span>;<br> result = con.Execute (sql, obj, transaction);<br> transaction.Commit ();<br> con.Close ();<br> <span class="hljs-keyword">return</span> result;<br> } <span class="hljs-keyword">catch</span> (Exception ex) {<br> transaction.Rollback ();<br> con.Close ();<br> <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br> }<br> }<br> }<br> }<br><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><summary></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> 异步批量增删改 带事务 </span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"></summary></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><param name="sql"></span>单SQL<span class="hljs-doctag"></param></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><param name="object"></span>实体列表<span class="hljs-doctag"></param></span></span><br> <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag"><returns></span><span class="hljs-doctag"></returns></span></span><br> <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> Task<<span class="hljs-built_in">int</span>> <span class="hljs-title">ExecuteTransactionAsync</span> (<span class="hljs-params"><span class="hljs-built_in">string</span> sql, <span class="hljs-built_in">object</span> obj</span>)</span> {<br> <span class="hljs-keyword">using</span> (IDbConnection con = GetConnection ()) {<br> con.Open ();<br> <span class="hljs-keyword">using</span> (IDbTransaction transaction = con.BeginTransaction ()) {<br> <span class="hljs-keyword">try</span> {<br> Task<<span class="hljs-built_in">int</span>> result;<br> result = con.ExecuteAsync (sql, obj, transaction);<br> transaction.Commit ();<br> con.Close ();<br> <span class="hljs-keyword">return</span> result;<br> } <span class="hljs-keyword">catch</span> (Exception ex) {<br> transaction.Rollback ();<br> con.Close ();<br> <span class="hljs-keyword">return</span> <span class="hljs-literal">null</span>;<br> }<br> }<br> }<br> }<br> }<br>}<br></code></pre></td></tr></table></figure>]]></content>
<summary type="html"><p>Dapper is a simple object mapper for .NET and owns the title of <strong>King of Micro ORM</strong> in terms of speed and is virtually as fast as using a raw ADO.NET data reader. An ORM is an Object Relational Mapper, which is responsible for mapping between database and programming language.</p></summary>
<category term="Developer" scheme="https://awaw.cc/categories/Developer/"/>
<category term=".NET" scheme="https://awaw.cc/tags/NET/"/>
<category term="Database" scheme="https://awaw.cc/tags/Database/"/>
<category term="ORM" scheme="https://awaw.cc/tags/ORM/"/>
</entry>
<entry>
<title>Steam免费游戏一键领取</title>
<link href="https://awaw.cc/post/steam-free-game/"/>
<id>https://awaw.cc/post/steam-free-game/</id>
<published>2019-07-21T16:00:00.000Z</published>
<updated>2023-07-04T05:13:33.385Z</updated>
<content type="html"><![CDATA[<p>这些都是Steam上免费的游戏,如果手动领取的话需要一个一个领取,这里提供一种简便的方法,一键批量把免费游戏添加到自己的库里。</p><span id="more"></span><h2 id="第一步"><a href="#第一步" class="headerlink" title="第一步"></a>第一步</h2><p>打开该链接: <a href="https://store.steampowered.com/account/licenses/">https://store.steampowered.com/account/licenses/</a> ,然后登录自己的账号(或者自己进入Steam主页,登录网页版Steam,然后进入到 <strong>主页 > 帐户 > 许可和产品序列号激活</strong> 页面)。</p><h2 id="第二步"><a href="#第二步" class="headerlink" title="第二步"></a>第二步</h2><p>按键盘F12,进入Console,粘贴下方代码后按Enter键执行代码。</p><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br></pre></td><td class="code"><pre><code class="hljs js">(<span class="hljs-keyword">function</span> (<span class="hljs-params"></span>) {<br> <span class="hljs-keyword">if</span> (location.<span class="hljs-property">href</span>.<span class="hljs-title function_">match</span>(<span class="hljs-regexp">/^https:\/\/store\.steampowered\.com\/account\/licenses\/?$/</span>) === <span class="hljs-literal">null</span>) {<br> <span class="hljs-title function_">alert</span>(<span class="hljs-string">'请在Steam帐号明细页面运行这些代码: https://store.steampowered.com/account/licenses/'</span>);<br><br> <span class="hljs-variable language_">window</span>.<span class="hljs-property">location</span> = <span class="hljs-string">'https://store.steampowered.com/account/licenses/'</span>;<br><br> <span class="hljs-keyword">return</span>;<br> }<br><br> <span class="hljs-keyword">var</span> freePackages =<br> [<br> <span class="hljs-comment">//本体</span><br> <span class="hljs-number">39166</span>,<span class="hljs-comment">//Heroine's Quest: The Herald of Ragnarok</span><br> <span class="hljs-number">13261</span>,<span class="hljs-comment">//RACE 07: Andy Priaulx Crowne Plaza Raceway</span><br> <span class="hljs-number">32032</span>,<span class="hljs-comment">//Portal 2 Sixense Perceptual Pack</span><br> <span class="hljs-number">59373</span>,<span class="hljs-comment">//Penumbra: Necrologue</span><br> <span class="hljs-number">33694</span>,<span class="hljs-comment">//Grimm&Episode 1 - A Boy Learns What Fear Is</span><br> <span class="hljs-number">88162</span>,<span class="hljs-comment">//Romance of the Three Kingdoms Maker</span><br> <span class="hljs-number">36561</span>,<span class="hljs-comment">//Serena</span><br> <span class="hljs-number">58514</span>,<span class="hljs-comment">//Voxelized</span><br> <span class="hljs-number">117526</span>,<span class="hljs-comment">//Amnesia: Final Revelations</span><br><br> <span class="hljs-comment">//dlc</span><br> <span class="hljs-number">85604</span>,<span class="hljs-comment">//RTK Maker - Face CG “RTK13” Set / 三国志ツクール顔登録素材 『三國志13』セット+シナリオ</span><br> <span class="hljs-number">21478</span>,<span class="hljs-comment">//Free to Play免费本体</span><br> <span class="hljs-number">50861</span>,<span class="hljs-comment">//Free to Play Soundtrack</span><br> <span class="hljs-number">21473</span>,<span class="hljs-comment">//Prime World免费本体</span><br> <span class="hljs-number">31538</span>,<span class="hljs-comment">//Prime World - Prime Machine</span><br> <span class="hljs-number">32287</span>,<span class="hljs-comment">//Z3TA+ 2 - Polybius 8-bit Game Pack</span><br> <span class="hljs-number">38085</span>,<span class="hljs-comment">//Saints Row IV - Reverse Cosplay Pack</span><br> <span class="hljs-number">72261</span>,<span class="hljs-comment">//The Secret of Tremendous Corporation免费本体</span><br> <span class="hljs-number">81026</span>,<span class="hljs-comment">//The Sources of Tremendous Corporation</span><br> <span class="hljs-number">47333</span>,<span class="hljs-comment">//Aura Kingdom免费本体</span><br> <span class="hljs-number">38820</span>,<span class="hljs-comment">//Aura Kingdom - Winter Gift</span><br> <span class="hljs-number">69802</span>,<span class="hljs-comment">//Fuse免费本体</span><br> <span class="hljs-number">60341</span>,<span class="hljs-comment">//Fuse - Free Brute Character Pack</span><br> <span class="hljs-number">21416</span>,<span class="hljs-comment">//Elsword免费本体</span><br> <span class="hljs-number">63207</span>,<span class="hljs-comment">//Time Tracer's DLC Package</span><br> <span class="hljs-number">59253</span>,<span class="hljs-comment">//Vindictus - New User Package</span><br><br> <span class="hljs-comment">//软件&工具</span><br> <span class="hljs-number">35063</span>,<span class="hljs-comment">//Star Swarm Stress Test</span><br> <span class="hljs-number">74465</span>,<span class="hljs-comment">//Arma 3 Samples</span><br><br> <span class="hljs-number">21101</span>, <span class="hljs-comment">// DiRT Showdown Demo</span><br> <span class="hljs-number">21102</span>, <span class="hljs-comment">// Rayman Origins Demo</span><br> <span class="hljs-number">21103</span>, <span class="hljs-comment">// iBomber Defense Pacific Demo</span><br> <span class="hljs-number">21104</span>, <span class="hljs-comment">// Men Of War: Assault Squad GOTY Demo</span><br> <span class="hljs-number">21105</span>, <span class="hljs-comment">// Bang Bang Racing Demo</span><br> <span class="hljs-number">21106</span>, <span class="hljs-comment">// Sine Mora Demo</span><br> <span class="hljs-number">21107</span>, <span class="hljs-comment">// Noitu Love 2 Devolution Demo</span><br> <span class="hljs-number">21108</span>, <span class="hljs-comment">// Waveform Demo</span><br> <span class="hljs-number">21109</span>, <span class="hljs-comment">// Ridge Racer™ Unbounded Demo</span><br> <span class="hljs-number">21110</span>, <span class="hljs-comment">// Hegemony Gold: Wars of Ancient Greece</span><br> <span class="hljs-number">21111</span>, <span class="hljs-comment">// Rocksmith Demo</span><br> <span class="hljs-number">21113</span>, <span class="hljs-comment">// Binary Domain Demo</span><br> <span class="hljs-number">21114</span>, <span class="hljs-comment">// Sniper Elite V2 Demo</span><br> <span class="hljs-number">21115</span>, <span class="hljs-comment">// Blades of Time Demo</span><br> <span class="hljs-number">21117</span>, <span class="hljs-comment">// A Valley Without Wind Demo</span><br> <span class="hljs-number">21118</span>, <span class="hljs-comment">// F1 2012 Demo</span><br> <span class="hljs-number">21119</span>, <span class="hljs-comment">// Magical Diary Demo</span><br> <span class="hljs-number">21120</span>, <span class="hljs-comment">// The Dream Machine Demo</span><br> <span class="hljs-number">21121</span>, <span class="hljs-comment">// Hell Yeah! Demo</span><br> <span class="hljs-number">21122</span>, <span class="hljs-comment">// A Virus Named Tom Demo</span><br> <span class="hljs-number">21123</span>, <span class="hljs-comment">// Splice Demo</span><br> <span class="hljs-number">21124</span>, <span class="hljs-comment">// Atooms to Moolecules</span><br> <span class="hljs-number">21125</span>, <span class="hljs-comment">// BeatBuddy Demo</span><br> <span class="hljs-number">21126</span>, <span class="hljs-comment">// DIVO</span><br> <span class="hljs-number">21127</span>, <span class="hljs-comment">// Imagine Earth Demo</span><br> <span class="hljs-number">21128</span>, <span class="hljs-comment">// MilitAnt</span><br> <span class="hljs-number">21129</span>, <span class="hljs-comment">// Plutonic Repulse</span><br> <span class="hljs-number">21130</span>, <span class="hljs-comment">// The White Laboratory Demo</span><br> <span class="hljs-number">21131</span>, <span class="hljs-comment">// Blackwell's Asylum</span><br> <span class="hljs-number">21132</span>, <span class="hljs-comment">// Magic 2014 Demo</span><br> <span class="hljs-number">21133</span>, <span class="hljs-comment">// Sid Meier's Civilization V: Gods & Kings Demo</span><br> <span class="hljs-number">21134</span>, <span class="hljs-comment">// Gratuitous Tank Battles Demo</span><br> <span class="hljs-number">21135</span>, <span class="hljs-comment">// Tiny and Big: Grandpa's Leftovers Demo</span><br> <span class="hljs-number">21136</span>, <span class="hljs-comment">// KungFu Strike Demo</span><br> <span class="hljs-number">21137</span>, <span class="hljs-comment">// Adventures of Shuggy Demo</span><br> <span class="hljs-number">21138</span>, <span class="hljs-comment">// E.Y.E: Divine Cybermancy Demo</span><br> <span class="hljs-number">21139</span>, <span class="hljs-comment">// Orcs Must Die! 2 Demo</span><br> <span class="hljs-number">21140</span>, <span class="hljs-comment">// The Book of Unwritten Tales Demo</span><br> <span class="hljs-number">21141</span>, <span class="hljs-comment">// Sleeping Dogs™ Demo</span><br> <span class="hljs-number">21142</span>, <span class="hljs-comment">// Damage Inc Demo</span><br> <span class="hljs-number">21143</span>, <span class="hljs-comment">// Gateways Demo</span><br> <span class="hljs-number">21144</span>, <span class="hljs-comment">// Football Manager 2013 Demo</span><br> <span class="hljs-number">21145</span>, <span class="hljs-comment">// XCOM: Enemy Unknown Demo</span><br> <span class="hljs-number">21146</span>, <span class="hljs-comment">// Transcripted Demo</span><br> <span class="hljs-number">21147</span>, <span class="hljs-comment">// Intrusion 2 Demo</span><br> <span class="hljs-number">21148</span>, <span class="hljs-comment">// Din's Curse Demo</span><br> <span class="hljs-number">21149</span>, <span class="hljs-comment">// Democracy 2 Demo</span><br> <span class="hljs-number">21150</span>, <span class="hljs-comment">// Ys Origin Demo</span><br> <span class="hljs-number">21151</span>, <span class="hljs-comment">// Ether Vapor Remaster Demo</span><br> ];<br><br> <span class="hljs-keyword">var</span> ownedPackages = {};<br><br> <span class="hljs-title function_">jQuery</span>(<span class="hljs-string">'.account_table a'</span>).<span class="hljs-title function_">each</span>(<span class="hljs-keyword">function</span> (<span class="hljs-params">i, el</span>) {<br> <span class="hljs-keyword">var</span> match = el.<span class="hljs-property">href</span>.<span class="hljs-title function_">match</span>(<span class="hljs-regexp">/javascript:RemoveFreeLicense\( ([0-9]+), '/</span>);<br><br> <span class="hljs-keyword">if</span> (match !== <span class="hljs-literal">null</span>) {<br> ownedPackages[+match[<span class="hljs-number">1</span>]] = <span class="hljs-literal">true</span>;<br> }<br> });<br><br> <span class="hljs-keyword">var</span> i = <span class="hljs-number">0</span>,<br> loaded = <span class="hljs-number">0</span>,<br> package = <span class="hljs-number">0</span>,<br> total = freePackages.<span class="hljs-property">length</span>,<br> modal = <span class="hljs-title class_">ShowBlockingWaitDialog</span>(<span class="hljs-string">'努力执行中...'</span>,<br> <span class="hljs-string">'请耐心等待,如果有错误请无视,请耐心等待脚本加载完毕'</span>);<br><br> <span class="hljs-keyword">for</span> (; i < total; i++) {<br> package = freePackages[i];<br><br> <span class="hljs-keyword">if</span> (ownedPackages[package]) {<br> loaded++;<br> <span class="hljs-keyword">continue</span>;<br> }<br><br> jQuery.<span class="hljs-title function_">post</span>(<br> <span class="hljs-string">'//store.steampowered.com/checkout/addfreelicense'</span>,<br> {<br> <span class="hljs-attr">action</span>: <span class="hljs-string">'add_to_cart'</span>,<br> <span class="hljs-attr">sessionid</span>: g_sessionID,<br> <span class="hljs-attr">subid</span>: package<br> }<br> ).<span class="hljs-title function_">always</span>(<span class="hljs-keyword">function</span> (<span class="hljs-params"></span>) {<br> loaded++;<br><br> modal.<span class="hljs-title class_">Dismiss</span>();<br><br> <span class="hljs-keyword">if</span> (loaded >= total) {<br> location.<span class="hljs-title function_">reload</span>();<br> }<br> <span class="hljs-keyword">else</span> {<br> modal = <span class="hljs-title class_">ShowBlockingWaitDialog</span>(<span class="hljs-string">'执行中...'</span>,<br> <span class="hljs-string">'加载至 <b>'</span> + loaded + <span class="hljs-string">'</b>/'</span> + total + <span class="hljs-string">'.'</span>);<br> }<br> }<br> );<br> }<br>}());<br></code></pre></td></tr></table></figure><h2 id="第三步"><a href="#第三步" class="headerlink" title="第三步"></a>第三步</h2><p>Enjoy your free game!</p>]]></content>
<summary type="html"><p>这些都是Steam上免费的游戏,如果手动领取的话需要一个一个领取,这里提供一种简便的方法,一键批量把免费游戏添加到自己的库里。</p></summary>
<category term="Share" scheme="https://awaw.cc/categories/Share/"/>
<category term="Steam" scheme="https://awaw.cc/tags/Steam/"/>
<category term="Game" scheme="https://awaw.cc/tags/Game/"/>
</entry>
</feed>