-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
531 lines (342 loc) · 17.1 KB
/
index.html
File metadata and controls
531 lines (342 loc) · 17.1 KB
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
<!DOCTYPE HTML>
<html >
<head>
<meta charset="UTF-8">
<title>一旬一题</title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=3, minimum-scale=1">
<meta name="author" content="振之(炊事班程序猿小谢)">
<link rel="icon" href="/img/profile.jpg">
<link rel="apple-touch-icon" href="/img/profile.jpg">
<link rel="apple-touch-icon-precomposed" href="/img/profile.jpg">
<link rel="stylesheet" href="/css/style.css">
<script>
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "//hm.baidu.com/hm.js?d182ed77fc48758bf45a33835ee35745";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script>
<script type="text/javascript">
(function(w,d,t,u,n,s,e){w['SwiftypeObject']=n;w[n]=w[n]||function(){
(w[n].q=w[n].q||[]).push(arguments);};s=d.createElement(t);
e=d.getElementsByTagName(t)[0];s.async=1;s.src=u;e.parentNode.insertBefore(s,e);
})(window,document,'script','//s.swiftypecdn.com/install/v1/st.js','_st');
_st('install','.............Add your swiftype userID...............');
</script>
</head>
<body>
<header>
<div>
<div id="textlogo">
<h1 class="site-name"><a href="/" title="一旬一题">一旬一题</a></h1>
<h2 class="blog-motto">在一成不变的内容中,找到自我磨练的题目</h2>
</div>
<div class="navbar"><a class="navbutton navmobile" href="#" title="Menu">
</a></div>
<nav class="animated">
<ul>
<ul>
<li><a href="/">首页</a></li>
<li><a href="/archives">归档</a></li>
<li><a href="/2017/02/03/1q15d/">专题</a></li>
<li><a href="https://juejin.im/user/57ff552d5bbb50005b4e9ef9">掘金</a></li>
<li><a href="https://blog.csdn.net/greens1995">CSDN</a></li>
<li>
</li>
<!--<li><div class="closeaside"><a class="closebutton" href="#" title="Hide Sidebar"></a></div></li>-->
</ul>
</nav>
</div>
</header>
<div id="container" class="clearfix">
<div id="main">
<section class="post" itemscope itemprop="blogPost">
<article>
<h1 itemprop="name">
<a href="/2019/01/28/gson-tips/" title="Gson使用小窍门:干涉序列化和反序列化过程,实现动态解析" itemprop="url">
Gson使用小窍门:干涉序列化和反序列化过程,实现动态解析
</a>
</h1>
<p itemprop="description" >Gson 最基本的使用,就是你写好了一个Java类模型,然后调一下 Gson 的基本 api 就可以实现类对象与json字符串的互转,这个我就不多说了。但是有时候可能想定制这个互转的过程,比如根据某个字段,动态解析成不同的json模型,或者对某些数据加密等。比如下面的栗子:123</p>
<p class="article-more-link">
<time datetime="2019-01-28T09:02:39.000Z" itemprop="datePublished">2019-01-28</time>
<a href="/2019/01/28/gson-tips/">阅读更多»</a>
</p>
</article>
</section>
<section class="post" itemscope itemprop="blogPost">
<article>
<h1 itemprop="name">
<a href="/2018/09/28/road-of-cpp/" title="小白 C++ 入门并发疯学习路线(书单)" itemprop="url">
小白 C++ 入门并发疯学习路线(书单)
</a>
</h1>
<p itemprop="description" >小白 C++ 入门并发疯学习路线这篇文章实际上是我自己入门过程的总结,一个尽量少废话的C++入门指南。总结完忽然发现像个读书清单😄。
具体总结前,想先回答一个问题——要不要先学C,再学C++?我作为小白时疑惑过这个问题,在此给后来的小白和当年的自己一个答案。个人看法是,单就学习</p>
<p class="article-more-link">
<time datetime="2018-09-28T12:47:21.000Z" itemprop="datePublished">2018-09-28</time>
<a href="/2018/09/28/road-of-cpp/">阅读更多»</a>
</p>
</article>
</section>
<section class="post" itemscope itemprop="blogPost">
<article>
<h1 itemprop="name">
<a href="/2018/06/03/android-bingfa/" title="Android 并发/多线程 的基础与应用" itemprop="url">
Android 并发/多线程 的基础与应用
</a>
</h1>
<p itemprop="description" >本篇文章主要目的为总结 覆盖80%场景的20% Android端并发所需基础知识和应用。Android 端应用主要使用 Java 语言开发,所以基础与 Java 的并发基础基本一样,深入了解推荐细读《Java并发编程实践》。应用部分就会掺杂 Android 的东西了。
并发与线程</p>
<p class="article-more-link">
<time datetime="2018-06-03T04:57:15.000Z" itemprop="datePublished">2018-06-03</time>
<a href="/2018/06/03/android-bingfa/">阅读更多»</a>
</p>
</article>
</section>
<section class="post" itemscope itemprop="blogPost">
<article>
<h1 itemprop="name">
<a href="/2018/02/23/androidzhidekan/" title="值得看的 Android 技术文章来源小结" itemprop="url">
值得看的 Android 技术文章来源小结
</a>
</h1>
<p itemprop="description" >网上太多复制黏贴和拼凑的文章了,看了也是浪费时间,要筛出好的来也很费时间。为此做了个自用的Android干货推送机器人。优质Android技术周报,筛选过的牛人和大公司博客烧制的Rss源,由即刻自动追踪和推送。适合所有患有资讯焦虑症、气血循环不顺的Android工程师们。有需要的</p>
<p class="article-more-link">
<time datetime="2018-02-23T03:01:09.000Z" itemprop="datePublished">2018-02-23</time>
<a href="/2018/02/23/androidzhidekan/">阅读更多»</a>
</p>
</article>
</section>
<section class="post" itemscope itemprop="blogPost">
<article>
<h1 itemprop="name">
<a href="/2018/01/30/anti-counterfeit/" title="恶意用户识别?——Java 层反模拟器、反Hook、反多开技巧" itemprop="url">
恶意用户识别?——Java 层反模拟器、反Hook、反多开技巧
</a>
</h1>
<p itemprop="description" >本文为 一旬一题写作计划 中 安全 专题内文章,读完本篇大约需要20分钟。
近两年,Android端的虚拟化技术和群控技术发展急速,带来很多好玩产品和便利工具。但是作为App开发者就头疼了,恶意用户(比如不文明用户、比如刷单)利用这些技术,作恶门槛低得不知道哪里去。我们需</p>
<p class="article-more-link">
<time datetime="2018-01-30T10:02:59.000Z" itemprop="datePublished">2018-01-30</time>
<a href="/2018/01/30/anti-counterfeit/">阅读更多»</a>
</p>
</article>
</section>
<section class="post" itemscope itemprop="blogPost">
<article>
<h1 itemprop="name">
<a href="/2018/01/06/yunshucengsuisuinian/" title="个人速查用碎碎念笔记——网络运输层" itemprop="url">
个人速查用碎碎念笔记——网络运输层
</a>
</h1>
<p itemprop="description" >运输层是整个网络体系结构中的关键层次之一,其中有以下几个概念必须弄清楚:
运输层为相互通信的应用进程提供逻辑通信
端口和套接字的意义跨操作系统的进程间通信终点,不依赖于具体程序。程序未运行也可以使用,端点就在那里。
无连接的UDP 的特点,后面详述
面向连接的TCP 的特点,后</p>
<p class="article-more-link">
<time datetime="2018-01-06T15:07:07.000Z" itemprop="datePublished">2018-01-06</time>
<a href="/2018/01/06/yunshucengsuisuinian/">阅读更多»</a>
</p>
</article>
</section>
<section class="post" itemscope itemprop="blogPost">
<article>
<h1 itemprop="name">
<a href="/2017/12/31/httpsuisuinian/" title="个人速查用碎碎念笔记——Http( 报文结构/缓存/持久连接/Chunk)" itemprop="url">
个人速查用碎碎念笔记——Http( 报文结构/缓存/持久连接/Chunk)
</a>
</h1>
<p itemprop="description" >Http报文结构
Http之缓存Http的缓存技术大致可以分为3种,Cache-Control系,Expires系,Last-Modified系,Etag系。其中Cache-Control的存在会覆盖Expires,其他的同时存在则需要全部的规则都通过检验才能使用缓存。比如带有C</p>
<p class="article-more-link">
<time datetime="2017-12-31T05:17:34.000Z" itemprop="datePublished">2017-12-31</time>
<a href="/2017/12/31/httpsuisuinian/">阅读更多»</a>
</p>
</article>
</section>
<section class="post" itemscope itemprop="blogPost">
<article>
<h1 itemprop="name">
<a href="/2017/12/04/notification-check/" title="如何检测应用通知权限?如何跳转通知权限设置页?" itemprop="url">
如何检测应用通知权限?如何跳转通知权限设置页?
</a>
</h1>
<p itemprop="description" >如何检测应用通知权限?一般情况下,Api 19 以前是没有通知管理的,默认都是开启,不用管。Api 19 – 24 虽加入了通知管理功能,但没有开放检测是否开启了通知的接口,开发者只能用反射来获取权限值。Api 24 以上,NotificationManager 提供了 areN</p>
<p class="article-more-link">
<time datetime="2017-12-04T07:55:44.000Z" itemprop="datePublished">2017-12-04</time>
<a href="/2017/12/04/notification-check/">阅读更多»</a>
</p>
</article>
</section>
<section class="post" itemscope itemprop="blogPost">
<article>
<h1 itemprop="name">
<a href="/2017/11/17/dockersuisuinian/" title="个人速查用碎碎念笔记——Docker" itemprop="url">
个人速查用碎碎念笔记——Docker
</a>
</h1>
<p itemprop="description" >什么是Docker(虚拟系统环境)区别于KVM, Virtualbox, Vmware等虚拟出机器的虚拟机技术,Docker是虚拟出操作系统,实现应用之间的隔离,让各个应用觉得自己有一个自己的操作系统,而且彼此之间隔离。可以让两个进程都觉得自己在一个独立的系统内运行,却又共享网卡</p>
<p class="article-more-link">
<time datetime="2017-11-17T10:05:29.000Z" itemprop="datePublished">2017-11-17</time>
<a href="/2017/11/17/dockersuisuinian/">阅读更多»</a>
</p>
</article>
</section>
<section class="post" itemscope itemprop="blogPost">
<article>
<h1 itemprop="name">
<a href="/2017/11/14/kotlinsuisuinian/" title="个人速查用碎碎念笔记——Kotlin" itemprop="url">
个人速查用碎碎念笔记——Kotlin
</a>
</h1>
<p itemprop="description" >基本类型接近Java,但有些不同点要注意。下面列出。
类型转换没有了隐式转换,必须使用显式转换
同一性和相等性基本类型装箱不保留同一性,只保留相等性。 如果显示转换过,那么同一性和相等性都失去 。
字符串支持模版导包出现冲突,支持用 as 做本地重命名控制流基本控制结构(循环,条</p>
<p class="article-more-link">
<time datetime="2017-11-14T12:31:22.000Z" itemprop="datePublished">2017-11-14</time>
<a href="/2017/11/14/kotlinsuisuinian/">阅读更多»</a>
</p>
</article>
</section>
<nav id="page-nav" class="clearfix">
<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>
<div id="asidepart">
<div id="authorInfo">
<div class="author-logo"></div>
<section class="author-info">
<p> 振之-Android工程师 @ Nonolive 直播</p>
<p> 这个人白天只是一个普通的Android工程师,但是只要一到了夜晚,他就会摇身一变,成为一名加班的Android工程师!</p>
</section>
<div class="social-font" class="clearfix">
<a href="https://github.com/Labmem003" target="_blank" title="github"></a>
</div>
</div>
<aside class="clearfix">
<div class="tagslist">
<p class="asidetitle">Tags</p>
<ul class="clearfix">
<li><a href="/tags/Android/" title="Android">Android<sup>11</sup></a></li>
<li><a href="/tags/C/" title="C">C<sup>2</sup></a></li>
<li><a href="/tags/C/" title="C++">C++<sup>1</sup></a></li>
<li><a href="/tags/Git/" title="Git">Git<sup>1</sup></a></li>
<li><a href="/tags/GitHub/" title="GitHub">GitHub<sup>1</sup></a></li>
<li><a href="/tags/Gson/" title="Gson">Gson<sup>1</sup></a></li>
<li><a href="/tags/JNI/" title="JNI">JNI<sup>2</sup></a></li>
<li><a href="/tags/JS/" title="JS">JS<sup>1</sup></a></li>
<li><a href="/tags/Java/" title="Java">Java<sup>2</sup></a></li>
<li><a href="/tags/Kotlin/" title="Kotlin">Kotlin<sup>1</sup></a></li>
<li><a href="/tags/NDK/" title="NDK">NDK<sup>2</sup></a></li>
<li><a href="/tags/TCP/" title="TCP">TCP<sup>1</sup></a></li>
<li><a href="/tags/UDP/" title="UDP">UDP<sup>1</sup></a></li>
<li><a href="/tags/UI/" title="UI">UI<sup>3</sup></a></li>
<li><a href="/tags/http/" title="http">http<sup>1</sup></a></li>
<li><a href="/tags/一旬一题/" title="一旬一题">一旬一题<sup>3</sup></a></li>
<li><a href="/tags/单元测试/" title="单元测试">单元测试<sup>1</sup></a></li>
<li><a href="/tags/反Hook/" title="反Hook">反Hook<sup>1</sup></a></li>
<li><a href="/tags/反多开/" title="反多开">反多开<sup>1</sup></a></li>
<li><a href="/tags/反模拟器/" title="反模拟器">反模拟器<sup>1</sup></a></li>
</ul>
</div>
</aside>
</div>
</div>
<footer><div id="footer" >
<div class="copyright">
<span>Powered by <a href="https://github.com/hexojs/hexo">Hexo</a> and theme by
<a href="https://github.com/levonlin/Tinnypp">Tinnypp</a>.</span>
<span>© 振之-Android工程师 @ Nonolive 直播</span>
<div>
<div align="center"><a href="http://www.amazingcounters.com"><img border="0" src="http://cc.amazingcounters.com/counter.php?i=3212273&c=9637132" alt="AmazingCounters.com"></a></div>
</div></footer>
<script src="/js/jquery-2.1.0.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
//back to top
function backToTop(){
var buttonHTML = $("<a href=\"#top\" id=\"back-top\">" + "<span>Back to Top</span></a>");
buttonHTML.appendTo($("body"));
var buttonToTop = $("#back-top");
// hide #back-top first
buttonToTop.hide();
// fade in #back-top
$(function() {
$(window).scroll(function() {
if ($(this).scrollTop() > 200) {
buttonToTop.fadeIn();
} else {
buttonToTop.fadeOut();
}
});
// scroll body to 0px on click
buttonToTop.click(function() {
$('body,html').animate({
scrollTop: 0
}, 800);
return false;
});
});
}
backToTop();
$('.navbar').click(function(){
$('header nav').toggleClass('shownav');
});
var myWidth = 0;
function getSize(){
if( typeof( window.innerWidth ) == 'number' ) {
myWidth = window.innerWidth;
} else if( document.documentElement && document.documentElement.clientWidth) {
myWidth = document.documentElement.clientWidth;
};
};
var m = $('#main'),
a = $('#asidepart'),
c = $('.closeaside'),
ta = $('#toc.toc-aside');
$(window).resize(function(){
getSize();
if (myWidth >= 1024) {
$('header nav').removeClass('shownav');
}else
{
m.removeClass('moveMain');
a.css('display', 'block').removeClass('fadeOut');
}
});
var show = true;
c.click(function(){
if(show == true){
a.addClass('fadeOut').css('display', 'none');
ta.css('display', 'block').addClass('fadeIn');
m.addClass('moveMain');
}else{
a.css('display', 'block').removeClass('fadeOut').addClass('fadeIn');
ta.css('display', 'none');
m.removeClass('moveMain');
$('#toc.toc-aside').css('display', 'none');
}
show = !show;
});
});
</script>
<script type="text/javascript">
function footerPosition() {
var contentHeight = document.documentElement.scrollHeight,
winHeight = window.innerHeight;
if(contentHeight <= winHeight) {
$('footer').addClass('fixed-bottom');
} else {
$('footer').removeClass('fixed-bottom');
}
}
footerPosition();
$(window).resize(footerPosition);
</script>
</body>
</html>