-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathindex.html
918 lines (509 loc) · 31.3 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
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
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge" >
<title>megagao</title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="description">
<meta property="og:type" content="website">
<meta property="og:title" content="megagao">
<meta property="og:url" content="http://realfond.cn/index.html">
<meta property="og:site_name" content="megagao">
<meta property="og:description">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="megagao">
<meta name="twitter:description">
<link rel="alternative" href="/atom.xml" title="megagao" type="application/atom+xml">
<link rel="icon" href="/icon.jpg">
<link rel="stylesheet" href="/css/style.css">
</head>
<body>
<div id="container">
<div class="left-col">
<div class="overlay"></div>
<div class="intrude-less">
<header id="header" class="inner">
<a href="/" class="profilepic">
<img lazy-src="/icon.jpg" class="js-avatar">
</a>
<hgroup>
<h1 class="header-author"><a href="/">Mega Gao</a></h1>
</hgroup>
<div class="switch-btn">
<div class="icon">
<div class="icon-ctn">
<div class="icon-wrap icon-house" data-idx="0">
<div class="birdhouse"></div>
<div class="birdhouse_holes"></div>
</div>
<div class="icon-wrap icon-ribbon hide" data-idx="1">
<div class="ribbon"></div>
</div>
<div class="icon-wrap icon-link hide" data-idx="2">
<div class="loopback_l"></div>
<div class="loopback_r"></div>
</div>
<div class="icon-wrap icon-me hide" data-idx="3">
<div class="user"></div>
<div class="shoulder"></div>
</div>
</div>
</div>
<div class="tips-box hide">
<div class="tips-arrow"></div>
<ul class="tips-inner">
<li>Menu</li>
<li>Tags</li>
<li>Links</li>
<li>Über</li>
</ul>
</div>
</div>
<div class="switch-area">
<div class="switch-wrap">
<section class="switch-part switch-part1">
<nav class="header-menu">
<ul>
<li><a href="/">主页</a></li>
<li><a href="/archives">所有文章</a></li>
<li><a href="/tags/随笔">随笔</a></li>
<li><a href="/tags/项目">项目</a></li>
<li><a href="/tags/分享">分享</a></li>
</ul>
</nav>
<nav class="header-nav">
<div class="social">
<a class="github" target="_blank" href="https://github.com/megagao" title="github">github</a>
<a class="weibo" target="_blank" href="http://weibo.com/u/2758165673#!/u/2758165673?is_all=1" title="weibo">weibo</a>
<a class="mail" target="_blank" href="mailto:[email protected]" title="mail">mail</a>
</div>
</nav>
</section>
<section class="switch-part switch-part2">
<div class="widget tagcloud" id="js-tagcloud">
<a href="/tags/分享/" style="font-size: 20px;">分享</a> <a href="/tags/随笔/" style="font-size: 20px;">随笔</a> <a href="/tags/项目/" style="font-size: 10px;">项目</a>
</div>
</section>
<section class="switch-part switch-part3">
<div id="js-friends">
<a target="_blank" class="main-nav-link switch-friends-link" href="http://dotgeng.github.io/">Dot Geng的博客</a>
</div>
</section>
<section class="switch-part switch-part4">
<div id="js-aboutme">怕什么真理无穷,进一寸有一寸的欢喜。</div>
</section>
</div>
</div>
</header>
</div>
</div>
<div class="mid-col">
<nav id="mobile-nav">
<div class="overlay">
<div class="slider-trigger"></div>
<h1 class="header-author js-mobile-header hide">Mega Gao</h1>
</div>
<div class="intrude-less">
<header id="header" class="inner">
<div class="profilepic">
<img lazy-src="/icon.jpg" class="js-avatar">
</div>
<hgroup>
<h1 class="header-author">Mega Gao</h1>
</hgroup>
<nav class="header-menu">
<ul>
<li><a href="/">主页</a></li>
<li><a href="/archives">所有文章</a></li>
<li><a href="/tags/随笔">随笔</a></li>
<li><a href="/tags/项目">项目</a></li>
<li><a href="/tags/分享">分享</a></li>
<div class="clearfix"></div>
</ul>
</nav>
<nav class="header-nav">
<div class="social">
<a class="github" target="_blank" href="https://github.com/megagao" title="github">github</a>
<a class="weibo" target="_blank" href="http://weibo.com/u/2758165673#!/u/2758165673?is_all=1" title="weibo">weibo</a>
<a class="mail" target="_blank" href="mailto:[email protected]" title="mail">mail</a>
</div>
</nav>
</header>
</div>
</nav>
<div class="body-wrap">
<article id="post-分布式任务调度LTS(3)-开发实例" class="article article-type-post" itemscope itemprop="blogPost">
<div class="article-meta">
<a href="/2017/07/03/分布式任务调度LTS(3)-开发实例/" class="article-date">
<time datetime="2017-07-03T02:58:09.000Z" itemprop="datePublished">2017-07-03</time>
</a>
</div>
<div class="article-inner">
<input type="hidden" class="isFancy" />
<header class="article-header">
<h1 itemprop="name">
<a class="article-title" href="/2017/07/03/分布式任务调度LTS(3)-开发实例/">分布式任务调度LTS(3)-开发实例</a>
</h1>
</header>
<div class="article-entry" itemprop="articleBody">
<h1 id="LTS-Light-Task-Scheduler-开发实例"><a href="#LTS-Light-Task-Scheduler-开发实例" class="headerlink" title="LTS(Light-Task-Scheduler)开发实例"></a>LTS(Light-Task-Scheduler)开发实例</h1><hr>
<h2 id="实现方式探讨"><a href="#实现方式探讨" class="headerlink" title="实现方式探讨"></a>实现方式探讨</h2><p>先来回顾一下LTS中的各个节点:</p>
<p><strong>JobClient</strong> : 主要负责提交任务, 并接收任务执行反馈结果。<br><strong>JobTracker</strong> : 负责任务调度,接收并分配任务。<br><strong>TaskTracker</strong> : 负责执行任务,执行完反馈给JobTracker。<br><strong>LTS-Monitor</strong> : 主要负责收集各个节点的监控信息,包括任务监控信息,节点JVM监控信息<br><strong>LTS-Admin</strong> : 管理后台)主要负责节点管理,任务队列管理,监控管理等。 </p>
<p>使用LTS进行开发时,我们只需要实现TaskTracker节点来完成我们的业务逻辑。在分布式系统中,往往使用SOA框架进行远程调用,我们这里以RPC框架dubbo为例来实现与LTS整合开发。</p>
<p>最开始我们在使用LTS时,是想与dubbo服务解耦,也就是做一个统一调度的TaskTracker节点,然后在TaskTracker中实现一个dispatcher的功能,根据提交任务时传递的参数,再远程调用dubbo服务进行执行。简要过程如下图:
</div>
<div class="article-info article-info-index">
<div class="article-tag tagcloud">
<ul class="article-tag-list"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/随笔/">随笔</a></li></ul>
</div>
<p class="article-more-link">
<a href="/2017/07/03/分布式任务调度LTS(3)-开发实例/#more">more >></a>
</p>
<div class="clearfix"></div>
</div>
</div>
</article>
<article id="post-分布式任务调度LTS(2)-使用介绍" class="article article-type-post" itemscope itemprop="blogPost">
<div class="article-meta">
<a href="/2017/06/24/分布式任务调度LTS(2)-使用介绍/" class="article-date">
<time datetime="2017-06-24T04:53:46.000Z" itemprop="datePublished">2017-06-24</time>
</a>
</div>
<div class="article-inner">
<input type="hidden" class="isFancy" />
<header class="article-header">
<h1 itemprop="name">
<a class="article-title" href="/2017/06/24/分布式任务调度LTS(2)-使用介绍/">分布式任务调度LTS(2)-使用介绍</a>
</h1>
</header>
<div class="article-entry" itemprop="articleBody">
<h1 id="LTS-Light-Task-Scheduler-使用介绍"><a href="#LTS-Light-Task-Scheduler-使用介绍" class="headerlink" title="LTS(Light-Task-Scheduler)使用介绍"></a>LTS(Light-Task-Scheduler)使用介绍</h1><h2 id="下载LTS"><a href="#下载LTS" class="headerlink" title="下载LTS"></a>下载LTS</h2><p>首先需要下载LTS源码,oschina地址:<a href="http://git.oschina.net/hugui/light-task-scheduler">http://git.oschina.net/hugui/light-task-scheduler</a><br>另外还需要下载官方的example,地址:<a href="https://github.com/ltsopensource/lts-examples">https://github.com/ltsopensource/lts-examples</a>。<br>官方的example提供了详实的例子程序,包含多种使用方式,在使用前推荐仔细阅读。</p>
<h2 id="编译LTS源码"><a href="#编译LTS源码" class="headerlink" title="编译LTS源码"></a>编译LTS源码</h2><p>进入LTS源码包,其中内容如下:
</div>
<div class="article-info article-info-index">
<div class="article-tag tagcloud">
<ul class="article-tag-list"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/随笔/">随笔</a></li></ul>
</div>
<p class="article-more-link">
<a href="/2017/06/24/分布式任务调度LTS(2)-使用介绍/#more">more >></a>
</p>
<div class="clearfix"></div>
</div>
</div>
</article>
<article id="post-分布式任务调度LTS(1)-简介" class="article article-type-post" itemscope itemprop="blogPost">
<div class="article-meta">
<a href="/2017/06/15/分布式任务调度LTS(1)-简介/" class="article-date">
<time datetime="2017-06-15T03:16:49.000Z" itemprop="datePublished">2017-06-15</time>
</a>
</div>
<div class="article-inner">
<input type="hidden" class="isFancy" />
<header class="article-header">
<h1 itemprop="name">
<a class="article-title" href="/2017/06/15/分布式任务调度LTS(1)-简介/">分布式任务调度LTS(1)-简介</a>
</h1>
</header>
<div class="article-entry" itemprop="articleBody">
<h1 id="LTS-Light-Task-Scheduler-简介"><a href="#LTS-Light-Task-Scheduler-简介" class="headerlink" title="LTS(Light-Task-Scheduler)简介"></a>LTS(Light-Task-Scheduler)简介</h1><hr>
<p>由于业务需求,有很多定时任务和周期任务需要调度,因此需要进行动态的任务添加与删除,及手动触发与暂停,同时,我们原来使用的当当开源框架elastic-job的Lite版(项目开源地址:<a href="https://github.com/dangdangdotcom/elastic-job">https://github.com/dangdangdotcom/elastic-job</a>),由于没有统一的任务调度中心,因此查看任务执行日志较不方便。</p>
<p>LTS(light-task-scheduler)是一个分布式任务调度的框架,属于淘宝员工的个人开源。它支持实时任务,定时任务,Cron任务,Repeat任务,有较好的伸缩性、扩展性、健壮稳定性因而被多家公司使用。其架构参考了dubbo和hadoop的设计,容易理解,且上手较为方便;同时,针对我们的前述需求,也都能很好解决,因此最终选用LTS。</p>
<h2 id="主要功能"><a href="#主要功能" class="headerlink" title="主要功能"></a>主要功能</h2><ol>
<li>支持分布式,解决多点故障,支持动态扩容,容错重试等</li>
<li>Spring扩展支持,SpringBoot支持,Spring Quartz Cron任务的无缝接入支持</li>
<li>节点监控支持,任务执行监控支持,JVM监控支持</li>
<li>后台运维操作支持, 可以动态提交,更改,停止 任务
</div>
<div class="article-info article-info-index">
<div class="article-tag tagcloud">
<ul class="article-tag-list"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/随笔/">随笔</a></li></ul>
</div>
<p class="article-more-link">
<a href="/2017/06/15/分布式任务调度LTS(1)-简介/#more">more >></a>
</p>
<div class="clearfix"></div>
</div>
</div>
</article>
<article id="post-导入production_ssm到STS" class="article article-type-post" itemscope itemprop="blogPost">
<div class="article-meta">
<a href="/2017/06/06/导入production_ssm到STS/" class="article-date">
<time datetime="2017-06-06T11:43:54.000Z" itemprop="datePublished">2017-06-06</time>
</a>
</div>
<div class="article-inner">
<input type="hidden" class="isFancy" />
<header class="article-header">
<h1 itemprop="name">
<a class="article-title" href="/2017/06/06/导入production_ssm到STS/">导入production_ssm到STS</a>
</h1>
</header>
<div class="article-entry" itemprop="articleBody">
<p>感谢一位韩国网友给我发的邮件,介绍了将production_ssm导入到STS中,并将详细过程与注意事项完整记录了下来。非常感谢他的文档,也为STS的使用提供了参考。</p>
<h2 id="Import-production-ssm-into-STS-I-am-glad-to-have-a-successful-result"><a href="#Import-production-ssm-into-STS-I-am-glad-to-have-a-successful-result" class="headerlink" title="Import production_ssm into STS - I am glad to have a successful result."></a>Import production_ssm into STS - I am glad to have a successful result.</h2><p>I cloned production_ssm from gitHub and imported it into STS. </p>
<p>I screened the process as picture files.<br>
</div>
<div class="article-info article-info-index">
<div class="article-tag tagcloud">
<ul class="article-tag-list"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/随笔/">随笔</a></li></ul>
</div>
<p class="article-more-link">
<a href="/2017/06/06/导入production_ssm到STS/#more">more >></a>
</p>
<div class="clearfix"></div>
</div>
</div>
</article>
<article id="post-利用filter和全局ajax事件实现shiro session过期登录跳转" class="article article-type-post" itemscope itemprop="blogPost">
<div class="article-meta">
<a href="/2017/05/29/利用filter和全局ajax事件实现shiro session过期登录跳转/" class="article-date">
<time datetime="2017-05-29T11:13:28.000Z" itemprop="datePublished">2017-05-29</time>
</a>
</div>
<div class="article-inner">
<input type="hidden" class="isFancy" />
<header class="article-header">
<h1 itemprop="name">
<a class="article-title" href="/2017/05/29/利用filter和全局ajax事件实现shiro session过期登录跳转/">利用filter和全局ajax事件实现shiro session过期登录跳转</a>
</h1>
</header>
<div class="article-entry" itemprop="articleBody">
<p><strong>起因</strong></p>
<p>我的生产管理ERP(<a href="https://github.com/megagao/production_ssm">https://github.com/megagao/production_ssm</a>)系统有个bug,就是session过期后,不能自动跳转到登录页面,一直想把这个功能实现,但是因为手头事情比较多,所以拖了一阵子。趁着端午假期,把这个功能实现了,特此记录。</p>
<p>shiro在管理session后,在session过期时应当进行跳转,由于我的系统前端采用jQuery easyUI,前后台数据交互采用的是ajax异步的方式,因此需要考虑对ajax请求进行超时处理。</p>
<p><strong>思路</strong></p>
<p>实现一个filter,判断当前session是否过期,及是否为ajax请求(本系统数据交互均采用ajax方式,其他非ajax请求不需要判断,比如跳转登录界面的请求),若满足判定,则在response头部设置session-status值,返回到前端,通过全局ajax事件读取相应值进行判断,若过期则跳转登录界面。
</div>
<div class="article-info article-info-index">
<div class="article-tag tagcloud">
<ul class="article-tag-list"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/随笔/">随笔</a></li></ul>
</div>
<p class="article-more-link">
<a href="/2017/05/29/利用filter和全局ajax事件实现shiro session过期登录跳转/#more">more >></a>
</p>
<div class="clearfix"></div>
</div>
</div>
</article>
<article id="post-(转)CentOS7安装mysql5.6" class="article article-type-post" itemscope itemprop="blogPost">
<div class="article-meta">
<a href="/2017/05/25/(转)CentOS7安装mysql5.6/" class="article-date">
<time datetime="2017-05-25T12:08:35.000Z" itemprop="datePublished">2017-05-25</time>
</a>
</div>
<div class="article-inner">
<input type="hidden" class="isFancy" />
<header class="article-header">
<h1 itemprop="name">
<a class="article-title" href="/2017/05/25/(转)CentOS7安装mysql5.6/">(转)CentOS7安装mysql5.6</a>
</h1>
</header>
<div class="article-entry" itemprop="articleBody">
<p>最近为搭建分布式任务调度框架LTS(Light Task Schedule)的测试环境,需要在CentOS上安装mysql,网上搜索发现这篇博客,照着操作,节省了很多时间。作者写的很详细,很完整,很用心,学习之。原博:<a href="http://www.cnblogs.com/dreamhome/p/4716425.html">http://www.cnblogs.com/dreamhome/p/4716425.html</a></p>
<p>=============================================================================================</p>
<p>linux系统CentOS7<br>到<a href="http://mirrors.sohu.com/mysql/下载想要的mysql版本">http://mirrors.sohu.com/mysql/下载想要的mysql版本</a><br>这里用到的是<br>mysql-5.6.26-linux-glibc2.5-x86_64.tar.gz<br>用 WinSCP上传到指定的目录下,这里是<br>/usr/local/src
</div>
<div class="article-info article-info-index">
<div class="article-tag tagcloud">
<ul class="article-tag-list"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/分享/">分享</a></li></ul>
</div>
<p class="article-more-link">
<a href="/2017/05/25/(转)CentOS7安装mysql5.6/#more">more >></a>
</p>
<div class="clearfix"></div>
</div>
</div>
</article>
<article id="post-浅谈Java反射机制" class="article article-type-post" itemscope itemprop="blogPost">
<div class="article-meta">
<a href="/2017/05/06/浅谈Java反射机制/" class="article-date">
<time datetime="2017-05-06T08:18:38.000Z" itemprop="datePublished">2017-05-06</time>
</a>
</div>
<div class="article-inner">
<input type="hidden" class="isFancy" />
<header class="article-header">
<h1 itemprop="name">
<a class="article-title" href="/2017/05/06/浅谈Java反射机制/">浅谈Java反射</a>
</h1>
</header>
<div class="article-entry" itemprop="articleBody">
<p>反射机制作为Java的重要特性,是理解spring IoC的前提,也是动态代理、AOP的基础。同时,由于反射机制的广泛应用,也使它成为面试时经常被提到的一个问题。写篇文章,加深理解,也供以后复习。</p>
<h2 id="反射的概念"><a href="#反射的概念" class="headerlink" title="反射的概念"></a>反射的概念</h2><p>反射是指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能调用它的任意一个方法.这种动态获取信息,以及动态调用对象方法的功能叫java语言的反射机制.<strong>简单来讲,就是在java中,只要给定类的名字,那么就可以通过反射机制来获得类的所有信息。</strong></p>
<h2 id="反射机制的设计动机"><a href="#反射机制的设计动机" class="headerlink" title="反射机制的设计动机"></a>反射机制的设计动机</h2><p><em>Thinking in Java</em>对反射机制的设计动机做了介绍,这里只简单描述,想进一步了解,请参阅P334-335.</p>
<p>首先是“基于构件的编程”,在这种编程模式中,要求构件都是可实例化的,并且要暴露其部分信息,以允许程序员读取和修改构件的属性。此外,处理图形化用户界面(GUI)事件的构件还必须暴露相关方法的信息。反射就提供了一种机制————用来检查可用的方法,并返回方法名。</p>
<p>人们想要在运行时获取类信息(即反射)的另一个动机,就是希望提供在跨网络的远程平台上创建和运行对象的能力,也就是远程方法调用(RMI),它允许一个Java程序将对象分布到多台机器上。可以这么理解,有了反射,才有RMI及其它的RPC通信机制(底层都是由Java反射通过全限定名获取类信息,生成代理对象),如阿里的dubbo,基于此的大规模分布式系统,为Java的繁荣注入活力。
</div>
<div class="article-info article-info-index">
<div class="article-tag tagcloud">
<ul class="article-tag-list"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/随笔/">随笔</a></li></ul>
</div>
<p class="article-more-link">
<a href="/2017/05/06/浅谈Java反射机制/#more">more >></a>
</p>
<div class="clearfix"></div>
</div>
</div>
</article>
<article id="post-单例的五种写法" class="article article-type-post" itemscope itemprop="blogPost">
<div class="article-meta">
<a href="/2017/04/18/单例的五种写法/" class="article-date">
<time datetime="2017-04-18T13:52:17.000Z" itemprop="datePublished">2017-04-18</time>
</a>
</div>
<div class="article-inner">
<input type="hidden" class="isFancy" />
<header class="article-header">
<h1 itemprop="name">
<a class="article-title" href="/2017/04/18/单例的五种写法/">单例的五种写法</a>
</h1>
</header>
<div class="article-entry" itemprop="articleBody">
<p>一般来说,单例有五种写法,分别是懒汉,饿汉,双重校验锁,枚举和静态内部类。本文是在参考以下博客基础上写的:<br><a href="http://cantellow.iteye.com/blog/838473">http://cantellow.iteye.com/blog/838473</a><br><a href="http://blog.csdn.net/mixiuali/article/details/8107286">http://blog.csdn.net/mixiuali/article/details/8107286</a><br><a href="http://blog.csdn.net/jason0539/article/details/23297037/">http://blog.csdn.net/jason0539/article/details/23297037/</a><br><a href="http://www.ibm.com/developerworks/cn/java/j-dcl.html">http://www.ibm.com/developerworks/cn/java/j-dcl.html</a><br>
</div>
<div class="article-info article-info-index">
<div class="article-tag tagcloud">
<ul class="article-tag-list"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/随笔/">随笔</a></li></ul>
</div>
<p class="article-more-link">
<a href="/2017/04/18/单例的五种写法/#more">more >></a>
</p>
<div class="clearfix"></div>
</div>
</div>
</article>
<article id="post-生产管理ERP系统" class="article article-type-post" itemscope itemprop="blogPost">
<div class="article-meta">
<a href="/2016/12/27/生产管理ERP系统/" class="article-date">
<time datetime="2016-12-27T07:30:25.000Z" itemprop="datePublished">2016-12-27</time>
</a>
</div>
<div class="article-inner">
<input type="hidden" class="isFancy" />
<header class="article-header">
<h1 itemprop="name">
<a class="article-title" href="/2016/12/27/生产管理ERP系统/">生产管理ERP系统</a>
</h1>
</header>
<div class="article-entry" itemprop="articleBody">
<p>这是一个生产管理ERP系统。依托科技计划重点项目“装备物联及生产管理系统研发”,项目研发装备物联以及生产管理的系统,主要包括:计划进度、设备管理、工艺监控、物料监控、人员监控、质量监控、系统管理7大模块。项目源码共享在github上面:<a href="http://github.com/megagao/production_ms" title="github地址">http://github.com/megagao/production_ms</a>。</p>
<h2 id="项目技术架构-Spring-SpringMVC-Mybatis)"><a href="#项目技术架构-Spring-SpringMVC-Mybatis)" class="headerlink" title="项目技术架构(Spring+SpringMVC+Mybatis)"></a>项目技术架构(Spring+SpringMVC+Mybatis)</h2><ul>
<li>Maven</li>
<li>Spring(IOC DI AOP 声明式事务处理)</li>
<li>SpringMVC(支持Restful风格)</li>
<li>Hibernate Validator(参数校验)</li>
<li>Mybatis(最少配置方案)</li>
<li>shiro权限控制,结合ajax实现了异步认证与异步授权,同时实现了细粒度的权限动态分配(到按钮级别);添加了shiro session过期的登录跳转</li>
<li>jQuery EasyUI开发前端页面,利用jQuery文件上传插件实现拖拽上传的效果并对文件类型、大小、数量进行控制;利用search-box实现查找功能</li>
<li><a href="http://wosyingjun.iteye.com/blog/2306139">Druid(数据源配置 sql防注入 sql性能监控)</a></li>
<li>统一的异常处理</li>
<li>JSP JSTL JavaScript</li>
<li>kindeditor富文本编辑器,处理图片上传和富文本编辑
</div>
<div class="article-info article-info-index">
<div class="article-tag tagcloud">
<ul class="article-tag-list"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/项目/">项目</a></li></ul>
</div>
<p class="article-more-link">
<a href="/2016/12/27/生产管理ERP系统/#more">more >></a>
</p>
<div class="clearfix"></div>
</div>
</div>
</article>
<article id="post-室内定位系统" class="article article-type-post" itemscope itemprop="blogPost">
<div class="article-meta">
<a href="/2016/09/10/室内定位系统/" class="article-date">
<time datetime="2016-09-10T08:10:54.000Z" itemprop="datePublished">2016-09-10</time>
</a>
</div>
<div class="article-inner">
<input type="hidden" class="isFancy" />
<header class="article-header">
<h1 itemprop="name">
<a class="article-title" href="/2016/09/10/室内定位系统/">室内定位系统</a>
</h1>
</header>
<div class="article-entry" itemprop="articleBody">
<p>这是我研一下学期主要做的项目,针对的是对室内环境环境进行定位。基于这个项目,我发表了一篇EI论文,并开发了一套室内定位系统。相关的专利和软件著作权正在申请过程中。服务器端的代码共享在github上面:<a href="http://github.com/megagao/IndoorPos">http://github.com/megagao/IndoorPos</a>,里面包含了三种定位算法,三边定位算法、加权三边定位算法和三角形加权质心定位算法。程序采用Spring框架,简化了JDBC和RMI的样板式代码,并配置了Druid数据库连接池,同时,为了满足高并发的需求,采用了NIO框架Netty,更好地支持大量终端同时定位。程序已经Maven化。</p>
<h1 id="一、室内定位系统简介"><a href="#一、室内定位系统简介" class="headerlink" title="一、室内定位系统简介"></a>一、室内定位系统简介</h1><p>由于卫星信号到达地面时较弱、不能穿透建筑物等问题,在室内环境中无法使用卫星定位。本室内定位系统是一种采用蓝牙4.0 iBeacon基站定位技术,结合高容错定位算法进行室内定位的系统,定位基站廉价、易安置,定位终端可直接采用支持蓝牙4.0的移动终端,由于目前绝大多数移动终端都已支持蓝牙4.0,因此本系统不需要使用额外的定位标签、设备,直接可以通过移动电子设备进行定位。从业务应用的角度来看,本系统可实现对人员的实时定位、导航指路等功能以及贵重物品、车辆的定位;同时还可进行区域人流分析,人员密度分析,停留时间、人员流量统计,特定人员监控,区域报警和人员轨迹查看等多种应用的二次开发。</p>
</div>
<div class="article-info article-info-index">
<div class="article-tag tagcloud">
<ul class="article-tag-list"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/项目/">项目</a></li></ul>
</div>
<p class="article-more-link">
<a href="/2016/09/10/室内定位系统/#more">more >></a>
</p>
<div class="clearfix"></div>
</div>
</div>
</article>
<nav id="page-nav">
<span class="page-number current">1</span><a class="page-number" href="/page/2/">2</a><a class="page-number" href="/page/3/">3</a><a class="extend next" rel="next" href="/page/2/">Next »</a>
</nav>
</div>
<footer id="footer">
<div class="outer">
<div id="footer-info">
<div class="footer-left">
© 2018 Mega Gao
</div>
<div class="footer-right">
<a href="http://hexo.io/" target="_blank">Hexo</a>
</div>
</div>
</div>
</footer>
</div>
<link rel="stylesheet" href="/fancybox/jquery.fancybox.css">
<script>
var yiliaConfig = {
fancybox: true,
mathjax: true,
animate: true,
isHome: true,
isPost: false,
isArchive: false,
isTag: false,
isCategory: false,
open_in_new: false
}
</script>
<script src="http://7.url.cn/edu/jslib/comb/require-2.1.6,jquery-1.9.1.min.js"></script>
<script src="/js/main.js"></script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
tex2jax: {
inlineMath: [ ['$','$'], ["\\(","\\)"] ],
processEscapes: true,
skipTags: ['script', 'noscript', 'style', 'textarea', 'pre', 'code']
}
});
MathJax.Hub.Queue(function() {
var all = MathJax.Hub.getAllJax(), i;
for(i=0; i < all.length; i += 1) {
all[i].SourceElement().parentNode.className += ' has-jax';
}
});
</script>
<script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>
<script>
(function(){
var bp = document.createElement('script');
var curProtocol = window.location.protocol.split(':')[0];
if (curProtocol === 'https') {
bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
}
else {
bp.src = 'http://push.zhanzhang.baidu.com/push.js';
}
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(bp, s);
})();
</script>
</div>
</body>
</html>