-
Notifications
You must be signed in to change notification settings - Fork 0
/
search.xml
311 lines (150 loc) · 367 KB
/
search.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
<?xml version="1.0" encoding="utf-8"?>
<search>
<entry>
<title>Java并发相关基础知识点</title>
<link href="/2020/07/13/Java%E5%B9%B6%E5%8F%91%E7%9B%B8%E5%85%B3%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86%E7%82%B9/"/>
<url>/2020/07/13/Java%E5%B9%B6%E5%8F%91%E7%9B%B8%E5%85%B3%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86%E7%82%B9/</url>
<content type="html"><![CDATA[<h2 id="Java并发相关概念整理"><a href="#Java并发相关概念整理" class="headerlink" title="Java并发相关概念整理"></a>Java并发相关概念整理</h2><h3 id="启动线程"><a href="#启动线程" class="headerlink" title="启动线程"></a>启动线程</h3><p>自动线程的方式只有两种:</p><ol><li>继承自Thread,然后调用start()方法</li><li>实现Runable接口,然后交给Thread运行</li></ol><hr><h3 id="线程的状态"><a href="#线程的状态" class="headerlink" title="线程的状态"></a>线程的状态</h3><p>Java中的线程分为6种状态:</p><ol><li>初始状态(NEW):新创建了一个线程,但还没有调用start方法</li><li>运行状态(Runable):Java线程中将就绪(ready)和运行中(running)两种状态统称为“运行”;</li></ol><blockquote><p>线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取CPU的使用权,此时处于就绪状态(ready)。就绪状态的线程在获得CPU时间片后变为运行中状态(running)。</p></blockquote><ol start="3"><li>阻塞(BLOCKED):表示线程阻塞于锁;</li><li>等待(WAITING):进入该状态的线程需要等待其他线程做出一些特定动作(通知或中断);</li><li>超时等待(TIMED_WAITING):该状态不同于WAITING,它可以在指定的时间后自行返回;</li><li>终止(TERMINATED):表示该线程已经执行完毕。</li></ol><p>状态之间的变迁如下图所示:</p><p><img src="https://i.loli.net/2020/07/12/MZpH65NwcGUSVP2.png" alt=""></p><hr><h3 id="死锁"><a href="#死锁" class="headerlink" title="死锁"></a>死锁</h3><h4 id="概念:"><a href="#概念:" class="headerlink" title="概念:"></a>概念:</h4><p>死锁的发生必须具备以下四个必要条件。</p><ol><li><p>互斥条件:指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其它进程请求资源,则请求者只能等待,直至占有资源的进程用毕释放。</p></li><li><p>请求和保持条件:指进程已经保持至少一个资源,但又提出了新的资源请求,而该资源已被其它进程占有,此时请求进程阻塞,但又对自己已获得的其它资源保持不放。</p></li><li><p>不剥夺条件:指进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放。</p></li><li><p>环路等待条件:指在发生死锁时,必然存在一个进程——资源的环形链,即进程集合{P0,P1,P2,···,Pn}中的P0正在等待一个P1占用的资源;P1正在等待P2占用的资源,……,Pn正在等待已被P0占用的资源。</p></li></ol><p>由于死锁需要上述四个必要条件,所以只要打破以上四种条件中的任何一个,就可以避免死锁。</p><ol><li>打破互斥条件:改造独占性资源为虚拟资源。</li><li>打破不可抢占条件:当一进程占有一独占性资源后又申请一独占性资源而无法满足,则退出原占有的资源。</li><li>打破占有且申请条件:采用资源预先分配策略,即进程运行前申请全部资源,满足则运行,不然就等待,这样就不会占有且申请。</li><li>打破循环等待条件:实现资源有序分配策略,对所有设备实现分类编号,所有进程只能采用按序号递增的形式申请资源。</li></ol><p>解决办法:</p><ol><li>内部通过顺序比较,确定拿锁的顺序;</li><li>采用尝试拿锁的机制。</li></ol><h4 id="其他线程安全问题:"><a href="#其他线程安全问题:" class="headerlink" title="其他线程安全问题:"></a>其他线程安全问题:</h4><h5 id="活锁:"><a href="#活锁:" class="headerlink" title="活锁:"></a>活锁:</h5><p>两个线程在尝试拿锁的机制中,发生多个线程之间互相谦让,不断发生同一个线程总是拿到同一把锁,在尝试拿另一把锁时因为拿不到,而将本来已经持有的锁释放的过程。</p><p>解决办法:每个线程休眠随机数,错开拿锁的时间。</p><h5 id="线程饥饿:"><a href="#线程饥饿:" class="headerlink" title="线程饥饿:"></a>线程饥饿:</h5><p>低优先级的线程,总是拿不到执行时间。</p><hr><h3 id="ThreadLocal-解析"><a href="#ThreadLocal-解析" class="headerlink" title="ThreadLocal 解析"></a>ThreadLocal 解析</h3><h4 id="1-与Synchonized关键字的比较:"><a href="#1-与Synchonized关键字的比较:" class="headerlink" title="1.与Synchonized关键字的比较:"></a>1.与Synchonized关键字的比较:</h4><blockquote><p>ThreadLocal和Synchonized都用于解决多线程并发訪问。可是ThreadLocal与synchronized有本质的差别。synchronized是利用锁的机制,使变量或代码块在某一时该仅仅能被一个线程訪问。而ThreadLocal为每个线程都提供了变量的副本,使得每个线程在某一时间訪问到的并非同一个对象,这样就隔离了多个线程对数据的数据共享。</p></blockquote><h4 id="2-ThreadLocal的使用"><a href="#2-ThreadLocal的使用" class="headerlink" title="2.ThreadLocal的使用"></a>2.ThreadLocal的使用</h4><ul><li><p>void set(Object value)</p><p>设置当前线程局部变量的值</p></li><li><p>Object get()</p><p>返回当前线程所对应的线程局部变量</p></li><li><p>void remove()</p><p>将当前线程局部变量的值删除,在JDK5.0新增的方法。但显式调用该方法清除线程的局部变量并不是必须的操作,但会加快内存回收的速度。所以推荐手动调用。</p></li><li><p>protected Object initialValue() </p><p>返回该线程局部变量的初始值,该方法是一个protected的方法,显然是为了让子类覆盖而设计的。这个方法是一个延迟调用方法,在线程第1次调用get()或set(Object)时才执行,并且仅执行1次。ThreadLocal中的缺省实现直接返回一个null。</p></li></ul><h4 id="3-ThreadLocal的实现原理"><a href="#3-ThreadLocal的实现原理" class="headerlink" title="3. ThreadLocal的实现原理"></a>3. ThreadLocal的实现原理</h4><p>如下图:</p><p><img src="https://i.loli.net/2020/07/13/NS8tQI5ejnokR2s.jpg" alt=""></p><p>ThreadLocal内部实现,主要关注其set()和get()方法</p><ul><li><p>set()方法</p><pre class=" language-java"><code class="language-java"><span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">set</span><span class="token punctuation">(</span>T value<span class="token punctuation">)</span><span class="token punctuation">{</span> Thread t <span class="token operator">=</span> Thread<span class="token punctuation">.</span><span class="token function">getCurrentThread</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> ThreadLocalMap map <span class="token operator">=</span> <span class="token function">getMap</span><span class="token punctuation">(</span>t<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">if</span><span class="token punctuation">(</span>map <span class="token operator">!=</span> null<span class="token punctuation">)</span> map<span class="token punctuation">.</span><span class="token function">set</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">,</span>value<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">else</span> <span class="token function">createMap</span><span class="token punctuation">(</span>t<span class="token punctuation">,</span>value<span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token punctuation">}</span>ThreadLocalMap <span class="token function">getMap</span><span class="token punctuation">(</span>Thread t<span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">return</span> t<span class="token punctuation">.</span>threadLocals<span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token keyword">void</span> <span class="token function">createMap</span><span class="token punctuation">(</span>Thread t<span class="token punctuation">,</span> T firstValue<span class="token punctuation">)</span><span class="token punctuation">{</span> t<span class="token punctuation">.</span>threadLocals <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">ThreadLocalMap</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">,</span>firstValue<span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token punctuation">}</span></code></pre><p>ThreadLocal内部有一个实例变量:</p><pre class=" language-java"><code class="language-java">ThreadLocal<span class="token punctuation">.</span>ThreadLocalMap threadLocals <span class="token operator">=</span> null</code></pre></li><li><p>get()方法</p><pre class=" language-java"><code class="language-java"><span class="token keyword">public</span> T <span class="token function">get</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment" spellcheck="true">//获取当前的Thread对象</span> Thread t <span class="token operator">=</span> Thread<span class="token punctuation">.</span><span class="token function">currentThread</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment" spellcheck="true">// getMap方法获取对应的ThreadLocalMap对象</span> ThreadLocalMap map <span class="token operator">=</span> <span class="token function">getMap</span><span class="token punctuation">(</span>t<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment" spellcheck="true">// 判断map是否为空</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>map <span class="token operator">!=</span> null<span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment" spellcheck="true">// 如果map不为空,则以当前的ThreadLocal为Key,获取到Entry对象,并从中取值返回</span> ThreadLocalMap<span class="token punctuation">.</span>Entry e <span class="token operator">=</span> map<span class="token punctuation">.</span><span class="token function">getEntry</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>e <span class="token operator">!=</span> null<span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token annotation punctuation">@SuppressWarnings</span><span class="token punctuation">(</span><span class="token string">"unchecked"</span><span class="token punctuation">)</span> T result <span class="token operator">=</span> <span class="token punctuation">(</span>T<span class="token punctuation">)</span>e<span class="token punctuation">.</span>value<span class="token punctuation">;</span> <span class="token keyword">return</span> result<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token comment" spellcheck="true">// 如果map为空,则调setInitialValue方法,</span> <span class="token keyword">return</span> <span class="token function">setInitialValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment" spellcheck="true">//</span><span class="token punctuation">}</span><span class="token keyword">private</span> T <span class="token function">setInitialValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> T value <span class="token operator">=</span> <span class="token function">initialValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment" spellcheck="true">//返回空</span> Thread t <span class="token operator">=</span> Thread<span class="token punctuation">.</span><span class="token function">currentThread</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> ThreadLocalMap map <span class="token operator">=</span> <span class="token function">getMap</span><span class="token punctuation">(</span>t<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>map <span class="token operator">!=</span> null<span class="token punctuation">)</span> map<span class="token punctuation">.</span><span class="token function">set</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">,</span> value<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">else</span> <span class="token function">createMap</span><span class="token punctuation">(</span>t<span class="token punctuation">,</span> value<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">return</span> value<span class="token punctuation">;</span><span class="token punctuation">}</span></code></pre></li><li><p>ThreadLocalMap的源码</p><p><img src="https://i.loli.net/2020/07/13/hWoGgScsu6yCJ57.png" alt=""></p><p>可以看到有个Entry内部静态类,它继承了WeakReference,总之它记录了两个信息,一个是ThreadLocal<?>类型,一个是Object类型的值。getEntry方法则是获取某个ThreadLocal对应的值,set方法就是更新或赋值相应的ThreadLocal对应的值。</p><pre class=" language-java"><code class="language-java"><span class="token keyword">private</span> Entry <span class="token function">getEntry</span><span class="token punctuation">(</span>ThreadLocal<span class="token operator"><</span><span class="token operator">?</span><span class="token operator">></span> key<span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">int</span> i <span class="token operator">=</span> key<span class="token punctuation">.</span>threadLocalHashcode <span class="token operator">&</span> <span class="token punctuation">(</span>table<span class="token punctuation">.</span>length <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span> Entry e <span class="token operator">=</span> table<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">}</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token keyword">private</span> <span class="token keyword">void</span> <span class="token function">set</span><span class="token punctuation">(</span>ThreadLocal<span class="token operator"><</span><span class="token operator">?</span><span class="token operator">></span> key<span class="token punctuation">,</span> Object value<span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">}</span></code></pre><p>回顾我们的get方法,其实就是拿到<strong>每个线程独有的ThreadLocalMap</strong></p><p>然后再用ThreadLocal的当前实例,拿到Map中的相应的Entry,然后就可以拿到相应的值返回出去。当然,如果Map为空,还会先进行map的创建,初始化等工作。</p></li></ul><hr><h3 id="CAS原理"><a href="#CAS原理" class="headerlink" title="CAS原理"></a>CAS原理</h3><h4 id="1-什么是原子操作?"><a href="#1-什么是原子操作?" class="headerlink" title="1. 什么是原子操作?"></a>1. 什么是原子操作?</h4><p>假定有两个操作A和B,A和B的操作可能都很复杂,如果从执行A的线程来看,当另一个线程执行B时,要么将B全部执行完,要么完全不执行,那么A和B对彼此来说是原子的。</p><h4 id="2-如何实现原子操作?"><a href="#2-如何实现原子操作?" class="headerlink" title="2.如何实现原子操作?"></a>2.如何实现原子操作?</h4><p>实现原子操作可以使用锁机制,比如synchronized关键字,完全可以满足我们的需求。但sychronized关键字是基于阻塞的锁机制,也就是说当一个线程拥有锁的时候,访问同一资源的其他线程都会被阻塞,直到该线程释放锁。</p><p>这样就会出现一些问题:</p><ol><li>如果被阻塞的线程优先级很高,或者很重要,我们希望它很快就被执行,但拥有锁的线程一直不释放锁,就不满足我们的期望;</li><li>如果有大量线程都来竞争资源,CPU将会花费大量的时间和资源来处理这种竞争(上下文切换),同时还可能出现死锁等糟糕的现象。</li><li>锁机制是一种比较粗糙、粒度较大的机制,相对于少量资源的同步来说太过于笨重。</li></ol><p>实现原子操作还可以使用当前的处理器基本都支持CAS()的指令,只不过每个厂家所实现的算法并不一样,每一个CAS操作过程都包含三个运算符:一个内存地址V,一个期望的值A和一个新值B,操作的时候如果这个地址上存放的值等于这个期望的值A,则将地址上的值赋为新值B,否则不做任何操作。</p><p><strong>CAS</strong>的基本思路就是,如果这个地址上的值和期望的值相等,则给其赋予新值,否则不做任何事儿,但是要返回原值是多少。循环CAS就是在一个循环里不断的做cas操作,直到成功为止。</p><p><img src="https://i.loli.net/2020/07/13/UC7mZwSh85gcxrO.png" alt=""></p><h4 id="3-CAS实现原子操作的三大问题"><a href="#3-CAS实现原子操作的三大问题" class="headerlink" title="3. CAS实现原子操作的三大问题"></a>3. CAS实现原子操作的三大问题</h4><h5 id="1)ABA问题"><a href="#1)ABA问题" class="headerlink" title="1)ABA问题"></a>1)ABA问题</h5><p>因为CAS需要在操作值的时候,检查值有没有发生变化,如果没有发生变化则更新,但是如果一个值原来是A,变成了B,又变成了A,那么使用CAS进行检查时会发现它的值没有发生变化,但是实际上却变化了。</p><p>ABA问题的解决思路就是使用版本号。在变量前面追加上版本号,每次变量更新的时候把版本号加1,那么A→B→A就会变成1A→2B→3A。</p><h5 id="2)循环时间长开销大"><a href="#2)循环时间长开销大" class="headerlink" title="2)循环时间长开销大"></a>2)循环时间长开销大</h5><p>自旋CAS如果长时间不成功,会给CPU带来非常大的执行开销。</p><h5 id="3)只能保证对一个变量的原子操作"><a href="#3)只能保证对一个变量的原子操作" class="headerlink" title="3)只能保证对一个变量的原子操作"></a>3)只能保证对一个变量的原子操作</h5><p>当对一个共享变量执行操作时,我们可以使用循环CAS的方式来保证原子操作,但是对多个共享变量操作时,循环CAS就无法保证操作的原子性,这个时候就可以用锁。</p><p>还有一个取巧的办法,就是把多个共享变量合并成一个共享变量来操作。比如,有两个共享变量i=2,j=a,合并一下ij=2a,然后用CAS来操作ij。从Java 1.5开始,JDK提供了AtomicReference类来保证引用对象之间的原子性,就可以把多个变量放在一个对象里来进行CAS操作。</p><h4 id="4-JDK中原子操作类的使用"><a href="#4-JDK中原子操作类的使用" class="headerlink" title="4. JDK中原子操作类的使用"></a>4. JDK中原子操作类的使用</h4><h5 id="1)基本类型"><a href="#1)基本类型" class="headerlink" title="1)基本类型"></a>1)基本类型</h5><ol><li>AtomicBoolean:以原子更新的方式更新 boolean;</li><li>AtomicInteger:以原子更新的方式更新 Integer;</li><li>AtomicLong:以原子更新的方式更新 Long;</li></ol><p>这几个类的用法基本一致,以 AtomicInteger 为例常用的方法</p><ol><li>addAndGet(int delta) :以原子方式将输入的数值与实例中原本的值相加,并返回最后的结果;</li><li>incrementAndGet() :以原子的方式将实例中的原值进行加 1 操作,并返回最终相加后的结果;</li><li>getAndSet(int newValue):将实例中的值更新为新值,并返回旧值;</li><li>getAndIncrement():以原子的方式将实例中的原值加 1,返回的是自增前的旧值;</li></ol><h5 id="2)数组类型"><a href="#2)数组类型" class="headerlink" title="2)数组类型"></a>2)数组类型</h5><ol><li>AtomicIntegerArray:原子更新整型数组中的元素;</li><li>AtomicLongArray:原子更新长整型数组中的元素;</li><li>AtomicReferenceArray:原子更新引用类型数组中的元素</li></ol><p>这几个类的用法一致,就以 AtomicIntegerArray 来总结下常用的方法:</p><ol><li>addAndGet(int i, int delta):以原子更新的方式将数组中索引为 i 的元素与输入值相加;</li><li>getAndIncrement(int i):以原子更新的方式将数组中索引为 i 的元素自增加 1;</li><li>compareAndSet(int i, int expect, int update):将数组中索引为 i 的位置的元素进行更新</li></ol><p>可以看出,AtomicIntegerArray 与 AtomicInteger 的方法基本一致,只不过在 AtomicIntegerArray 的方法中会多一个指定数组索引位 i。</p><h5 id="3)引用类型"><a href="#3)引用类型" class="headerlink" title="3)引用类型"></a>3)引用类型</h5><ol><li>AtomicReference:原子更新引用类型;</li><li>AtomicReferenceFieldUpdater:原子更新引用类型里的字段;</li><li>AtomicMarkableReference:原子更新带有标记位的引用类型;</li></ol><h5 id="4)字段类型"><a href="#4)字段类型" class="headerlink" title="4)字段类型"></a>4)字段类型</h5><p>AtomicIntegeFieldUpdater:原子更新整型字段类;</p><p>AtomicLongFieldUpdater:原子更新长整型字段类;</p><p>AtomicStampedReference:原子更新引用类型,这种更新方式会带有版本号。而为什么在更新的时候会带有版本号,是为了解决 CAS 的 ABA 问题;</p><p>要想使用原子更新字段需要两步操作:</p><ol><li>原子更新字段类都是抽象类,只能通过静态方法<code>newUpdater</code>来创建一个更新器,并且需要设置想要更新的类和属性;</li><li>更新类的属性必须使用<code>public volatile</code>进行修饰;</li></ol><hr><h3 id="线程池"><a href="#线程池" class="headerlink" title="线程池"></a>线程池</h3><p>在Java开发中,合理的利用线程池可以有以下好处:</p><ol><li>降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。</li><li>提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,T3 销毁线程时间。 如果:T1 + T3 远大于 T2,则可以采用线程池,以提高服务器性能。线程池技术正是关注如何缩短或调整T1,T3时间的技术,从而提高服务器程序性能的。它把T1,T3分别安排在服务器程序的启动和结束的时间段或者一些空闲的时间段,这样在服务器程序处理客户请求时,不会有T1,T3的开销了。</li><li>提高线程的可管理性。线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一分配、调优和监控。</li></ol><h4 id="1-ThreadPoolExecutor-的类关系"><a href="#1-ThreadPoolExecutor-的类关系" class="headerlink" title="1.ThreadPoolExecutor 的类关系"></a>1.ThreadPoolExecutor 的类关系</h4><ul><li><p>Executor是一个接口,它是Executor框架的基础,它将任务的提交与任务的执行分离开来。</p></li><li><p>ExecutorService接口继承了Executor,在其上做了一些shutdown()、submit()的扩展,可以说是真正的线程池接口;</p></li><li><p>AbstractExecutorService抽象类实现了ExecutorService接口中的大部分方法;</p></li><li><p>ThreadPoolExecutor是线程池的核心实现类,用来执行被提交的任务。</p></li><li><p>ScheduledExecutorService接口继承了ExecutorService接口,提供了带”周期执行”功能ExecutorService;</p></li><li><p>ScheduledThreadPoolExecutor是一个实现类,可以在给定的延迟后运行命令,或者定期执行命令。ScheduledThreadPoolExecutor比Timer更灵活,功能更强大。</p></li></ul><h4 id="2-线程池创建各个参数的含义"><a href="#2-线程池创建各个参数的含义" class="headerlink" title="2.线程池创建各个参数的含义"></a>2.线程池创建各个参数的含义</h4><pre class=" language-java"><code class="language-java"><span class="token keyword">public</span> <span class="token function">ThreadPoolExecutor</span><span class="token punctuation">(</span> <span class="token keyword">int</span> corePoolSize<span class="token punctuation">,</span> <span class="token comment" spellcheck="true">//核心线程数</span> <span class="token keyword">int</span> maximumPoolSize<span class="token punctuation">,</span> <span class="token comment" spellcheck="true">//最大线程数</span> <span class="token keyword">long</span> keepAliveTime<span class="token punctuation">,</span> <span class="token comment" spellcheck="true">//线程存活时间</span> TimeUnit unit<span class="token punctuation">,</span> <span class="token comment" spellcheck="true">//线程存活时间单位</span> BlockingQueue<span class="token operator"><</span>Runnable<span class="token operator">></span> workQueue<span class="token punctuation">,</span> <span class="token comment" spellcheck="true">//阻塞队列</span> ThreadFactory threadFactory<span class="token punctuation">,</span> <span class="token comment" spellcheck="true">//线程工厂</span> RejectedExecutionHandler handler <span class="token comment" spellcheck="true">//拒绝策略</span><span class="token punctuation">)</span></code></pre><h5 id="1)corePoolSize"><a href="#1)corePoolSize" class="headerlink" title="1)corePoolSize"></a>1)corePoolSize</h5><p>线程中的核心线程数,当提交一个任务时,线程池创建一个新线程执行任务,直到当前线程数等于corePoolSize;</p><p>如果当前线程数为corePoolSize,继续提交的任务会被保存在阻塞队列中,等待被执行;</p><p>如果执行了线程池的prestartAllCoreThreads()方法,线程池会提前创建并启动所有的核心线程。</p><h5 id="2)maximumPoolSize"><a href="#2)maximumPoolSize" class="headerlink" title="2)maximumPoolSize"></a>2)maximumPoolSize</h5><p>线程池中允许的最大线程数。如果当前阻塞队列满了,且继续提交任务,则创建新的线程执行任务,前提是当前线程数小于maximumPoolSize。</p><h5 id="3)keepAliveTime"><a href="#3)keepAliveTime" class="headerlink" title="3)keepAliveTime"></a>3)keepAliveTime</h5><p>线程空闲时的存活时间,即当线程没有任务执行时,继续存活的时间。默认情况下,该参数只在线程数大于corePoolSize时才有用。</p><h5 id="4)TimeUnit"><a href="#4)TimeUnit" class="headerlink" title="4)TimeUnit"></a>4)TimeUnit</h5><p>keepAliveTime的时间单位。</p><h5 id="5)workQueue"><a href="#5)workQueue" class="headerlink" title="5)workQueue"></a>5)workQueue</h5><p>workQueue必须是BlockingQueue阻塞队列。当线程池中的线程数超过它的corePoolSize的时候,线程会进入阻塞队列进行阻塞等待。通过workQueue,线程池实现了阻塞功能。</p><p>一般来说,我们应该尽量使用有界队列,因为使用无界队列作为工作队列会对线程池带来如下影响。</p><p>1)当线程池中的线程数达到corePoolSize后,新任务将在无界队列中等待,因此线程池中的线程数不会超过corePoolSize。</p><p>2)由于1,使用无界队列时maximumPoolSize将是一个无效参数。</p><p>3)由于1和2,使用无界队列时keepAliveTime将是一个无效参数。</p><p>4)更重要的,使用无界queue可能会耗尽系统资源,有界队列则有助于防止资源耗尽,同时即使使用有界队列,也要尽量控制队列的大小在一个合适的范围。</p><h5 id="6)threadFactory"><a href="#6)threadFactory" class="headerlink" title="6)threadFactory"></a>6)threadFactory</h5><p>创建线程的工厂,通过自定义的线程工厂可以给每个新建的线程设置一个具有识别度的线程名,当然还可以更加自由的对线程做更多的设置,比如设置所有的线程为守护线程。</p><p>Executors静态工厂里默认的threadFactory,线程的命名规则是“pool-数字-thread-数字”。</p><h5 id="7)RejectedExecutionHandler"><a href="#7)RejectedExecutionHandler" class="headerlink" title="7)RejectedExecutionHandler"></a>7)RejectedExecutionHandler</h5><p>线程池的饱和策略,当阻塞队列满了,且没有空闲的工作线程,如果继续提交任务,必须采取一种策略处理该任务,线程池提供了4种策略:</p><p>(1)AbortPolicy:直接抛出异常,默认策略;</p><p>(2)CallerRunsPolicy:用调用者所在的线程来执行任务;</p><p>(3)DiscardOldestPolicy:丢弃阻塞队列中靠最前的任务,并执行当前任务;</p><p>(4)DiscardPolicy:直接丢弃任务;</p><p>当然也可以根据应用场景实现RejectedExecutionHandler接口,自定义饱和策略,如记录日志或持久化存储不能处理的任务。</p><h4 id="3-线程池的工作机制"><a href="#3-线程池的工作机制" class="headerlink" title="3 线程池的工作机制"></a>3 线程池的工作机制</h4><ol><li>如果当前运行的线程少于corePoolSize,则创建新线程来执行任务(注意,执行这一步骤需要获取全局锁)。</li><li>如果运行的线程等于或多于corePoolSize,则将任务加入BlockingQueue。</li><li>如果无法将任务加入BlockingQueue(队列已满),则创建新的线程来处理任务。</li><li>如果创建新线程将使当前运行的线程超出maximumPoolSize,任务将被拒绝,并调用RejectedExecutionHandler.rejectedExecution()方法。</li></ol><h4 id="4-提交任务"><a href="#4-提交任务" class="headerlink" title="4 提交任务"></a>4 提交任务</h4><p>execute()方法用于提交不需要返回值的任务,所以无法判断任务是否被线程池执行成功。</p><p>submit()方法用于提交需要返回值的任务。线程池会返回一个future类型的对象,通过这个future对象可以判断任务是否执行成功,并且可以通过future的get()方法来获取返回值,get()方法会阻塞当前线程直到任务完成,而使用get(long timeout,TimeUnit unit)方法则会阻塞当前线程一段时间后立即返回,这时候有可能任务没有执行完。</p><h4 id="5-关闭线程池"><a href="#5-关闭线程池" class="headerlink" title="5 关闭线程池"></a>5 关闭线程池</h4><p>可以通过调用线程池的shutdown()或shutdownNow()方法来关闭线程池。原理是遍历线程池中的工作线程,然后逐个调用工作线程的interrupt()方法来中断线程,所以无法响应中断的任务可能永远无法停止。但两种方式存在一定的区别,shutdownNow()方法首先将线程池的状态置为STOP,然后尝试停止所有正在执行或者暂停任务的线程,并返回等待执行任务的列表,而shutdown()方法只是将线程池的状态置为SHUTDOWN状态,然后中断所有没有正在执行任务的线程。</p><p>只要调用了这两个关闭方法中的任意一个,isShutdown()方法就会返回true。当所有的任务都已关闭后,才表示线程池关闭成功,这时调用isTerminaed()方法会返回true。至于应该调用哪一种方法来关闭线程池,应该由提交到线程池的任务特性决定,通常调用shutdown()方法来关闭线程池,如果任务不一定要执行完,则可以调用shutdownNow方法。</p><h4 id="6-合理分配线程池"><a href="#6-合理分配线程池" class="headerlink" title="6 合理分配线程池"></a>6 合理分配线程池</h4><p>要想合理地配置线程池,就必须首先分析任务特性,可以从以下几个角度来分析。</p><ul><li><p>任务的性质:CPU密集型任务、IO密集型任务和混合型任务。</p></li><li><p>任务的优先级:高、中和低。</p></li><li><p>任务的执行时间:长、中和短。</p></li><li><p>任务的依赖性:是否依赖其他系统资源,如数据库连接。</p></li></ul><p>性质不同的任务可以用不同规模的线程池分开处理。</p><p>CPU密集型任务应配置尽可能小的线程,如配置Ncpu+1个线程的线程池。由于IO密集型任务线程并不是一直在执行任务,则应配置尽可能多的线程,如2*Ncpu。</p><p>混合型的任务,如果可以拆分,将其拆分成一个CPU密集型任务和一个IO密集型任务,只要这两个任务执行的时间相差不是太大,那么分解后执行的吞吐量将高于串行执行的吞吐量。如果这两个任务执行时间相差太大,则没必要进行分解。可以通过Runtime.getRuntime().availableProcessors()方法获得当前设备的CPU个数。</p><p>优先级不同的任务可以使用优先级队列PriorityBlockingQueue来处理。它可以让优先级高的任务先执行。</p><p>执行时间不同的任务可以交给不同规模的线程池来处理,或者可以使用优先级队列,让执行时间短的任务先执行。</p><p>建议使用有界队列。有界队列能增加系统的稳定性和预警能力,可以根据需要设大一点儿,比如几千。</p><p>如果当时我们设置成无界队列,那么线程池的队列就会越来越多,有可能会撑满内存,导致整个系统不可用,而不只是后台任务出现问题。</p><script> document.querySelectorAll('.github-emoji') .forEach(el => { if (!el.dataset.src) { return; } const img = document.createElement('img'); img.style = 'display:none !important;'; img.src = el.dataset.src; img.addEventListener('error', () => { img.remove(); el.style.color = 'inherit'; el.style.backgroundImage = 'none'; el.style.background = 'none'; }); img.addEventListener('load', () => { img.remove(); }); document.body.appendChild(img); }); </script>]]></content>
</entry>
<entry>
<title>Android-模块化、组件化、插件化、热修复(总结目录)</title>
<link href="/2020/07/12/Android-%E6%A8%A1%E5%9D%97%E5%8C%96%E3%80%81%E7%BB%84%E4%BB%B6%E5%8C%96%E3%80%81%E6%8F%92%E4%BB%B6%E5%8C%96%E3%80%81%E7%83%AD%E4%BF%AE%E5%A4%8D-%E6%80%BB%E7%BB%93%E7%9B%AE%E5%BD%95/"/>
<url>/2020/07/12/Android-%E6%A8%A1%E5%9D%97%E5%8C%96%E3%80%81%E7%BB%84%E4%BB%B6%E5%8C%96%E3%80%81%E6%8F%92%E4%BB%B6%E5%8C%96%E3%80%81%E7%83%AD%E4%BF%AE%E5%A4%8D-%E6%80%BB%E7%BB%93%E7%9B%AE%E5%BD%95/</url>
<content type="html"><![CDATA[<p>应网友需求,做个目录链接总结,依次进阶!</p><p><a href="https://zhuanlan.zhihu.com/p/84694057" target="_blank" rel="noopener">MonkeyLei:Android-模块化、组件化、插件化、热修复-国庆前瞄一眼概念啥的,好伐!</a> </p><p><a href="https://zhuanlan.zhihu.com/p/84713874" target="_blank" rel="noopener">MonkeyLei:Android-模块化、组件化、插件化、热修复-组件化一下试试</a> </p><p><a href="https://zhuanlan.zhihu.com/p/85095730" target="_blank" rel="noopener">MonkeyLei:Android-模块化、组件化、插件化、热修复-组件化工程构建+页面路由多种方式实践</a> </p><p><a href="https://zhuanlan.zhihu.com/p/85593596" target="_blank" rel="noopener">MonkeyLei:Android-模块化、组件化、插件化、热修复-组件化-组件间的通信(本地,下沉,bus,路由)</a> </p><p><a href="https://zhuanlan.zhihu.com/p/85628591" target="_blank" rel="noopener">MonkeyLei:Android-模块化、组件化、插件化、热修复-组件化-ButterKnife引入(解决一些问题)</a> </p><p><a href="https://zhuanlan.zhihu.com/p/86165557" target="_blank" rel="noopener">MonkeyLei:Android-模块化、组件化、插件化、热修复-插件化-起步模仿一个案例(有猫腻呀)</a> </p><p><a href="https://zhuanlan.zhihu.com/p/86261306" target="_blank" rel="noopener">MonkeyLei:Android/Java-插件化-相关预了解、入门、实践推荐链接(一定优先级及遇到问题解决链接参考)</a> </p><p><a href="https://zhuanlan.zhihu.com/p/86534217" target="_blank" rel="noopener">MonkeyLei:Java-Hook技术-入门实践+反射、动态代理、热修复再看看</a> </p><p><a href="https://zhuanlan.zhihu.com/p/87953073" target="_blank" rel="noopener">MonkeyLei:Java-Hook技术-入门实践(反射、动态代理)-Hook拦截通知(当前App/Context)</a> </p><p><a href="https://zhuanlan.zhihu.com/p/88097003" target="_blank" rel="noopener">MonkeyLei:Android-热修复技术框架如何选择?记录一波…</a> </p><p><a href="https://zhuanlan.zhihu.com/p/88900878" target="_blank" rel="noopener">MonkeyLei:Android-美团Robust热修复接入实践问记录</a> </p><p><a href="https://zhuanlan.zhihu.com/p/89050372" target="_blank" rel="noopener">MonkeyLei:Android-Tinker热修复接入实践问题记录(自己认为的较完善的理解)</a> </p><p>路漫漫其修远兮….</p><script> document.querySelectorAll('.github-emoji') .forEach(el => { if (!el.dataset.src) { return; } const img = document.createElement('img'); img.style = 'display:none !important;'; img.src = el.dataset.src; img.addEventListener('error', () => { img.remove(); el.style.color = 'inherit'; el.style.backgroundImage = 'none'; el.style.background = 'none'; }); img.addEventListener('load', () => { img.remove(); }); document.body.appendChild(img); }); </script>]]></content>
<categories>
<category> Android </category>
<category> 框架 </category>
</categories>
<tags>
<tag> Android </tag>
<tag> 组件化 </tag>
<tag> 插件化 </tag>
<tag> 热修复 </tag>
</tags>
</entry>
<entry>
<title>Android-rsa解密服务端给的加密过的内容,利用rsa公钥解密方式解密,先decode再解密</title>
<link href="/2020/07/12/Android-rsa%E8%A7%A3%E5%AF%86%E6%9C%8D%E5%8A%A1%E7%AB%AF%E7%BB%99%E7%9A%84%E5%8A%A0%E5%AF%86%E8%BF%87%E7%9A%84%E5%86%85%E5%AE%B9%EF%BC%8C%E5%88%A9%E7%94%A8rsa%E5%85%AC%E9%92%A5%E8%A7%A3%E5%AF%86%E6%96%B9%E5%BC%8F%E8%A7%A3%E5%AF%86%EF%BC%8C%E5%85%88decode%E5%86%8D%E8%A7%A3%E5%AF%86/"/>
<url>/2020/07/12/Android-rsa%E8%A7%A3%E5%AF%86%E6%9C%8D%E5%8A%A1%E7%AB%AF%E7%BB%99%E7%9A%84%E5%8A%A0%E5%AF%86%E8%BF%87%E7%9A%84%E5%86%85%E5%AE%B9%EF%BC%8C%E5%88%A9%E7%94%A8rsa%E5%85%AC%E9%92%A5%E8%A7%A3%E5%AF%86%E6%96%B9%E5%BC%8F%E8%A7%A3%E5%AF%86%EF%BC%8C%E5%85%88decode%E5%86%8D%E8%A7%A3%E5%AF%86/</url>
<content type="html"><![CDATA[<p> <strong>内容后台加密方式</strong>:Base64 encode加密 -> <strong>Rsa</strong>私钥加密, 给我公钥用来解密, 实现方式参考:<a href="https://www.jianshu.com/p/41ea801eece2?tdsourcetag=s_pctim_aiomsg" target="_blank" rel="noopener">PHP实现RSA加解密</a> </p><p> <strong>前端界面方式</strong>:Base64 <em>decode解密->Rsa公钥解密, 参考</em> <a href="https://www.cnblogs.com/whoislcj/p/5470095.html?tdsourcetag=s_pctim_aiomsg" target="_blank" rel="noopener">Android数据加密之Rsa加密 - 总李写代码 - 博客园</a> <a href="https://blog.csdn.net/qq_36347817/article/details/89357281" target="_blank" rel="noopener">CSDN-专业IT技术社区-登录</a> <a href="https://www.jianshu.com/p/44b3f5f03c78" target="_blank" rel="noopener">Android加密算法</a>-我参考这个修改完善了了之前其他资料的公钥分块解密。。</p><p> 最后从调用方式<strong>提供工具类</strong>:- 如果你的遇到一些问题,比较后台加密方式不同,你需要查阅资料修改一些获取公钥的一些参数,有时候也会有错误提示。我没具体研究加密,就没有怎么深入。。。。喵…</p><p><a href="http://rsadatautil.java/" target="_blank" rel="noopener">RsaDataUtil.java</a> - 注意这个方法CryptorNatvie.getPubliscKey(MyApplication.getInstance())/<em>GlobalAppInfo.public_key</em>/)是我获取本地so里面的一个<strong>rsa</strong>公钥的方式。你可以直接替换为自己的公钥字符串。 </p><pre><code> /***@Author: hl*@Date: created at 2019/12/25 11:43*@Description: 获取RAS加密内容工具*/public class RsaDataUtil { /** * 解密RAS字符串 * @param originStr * @return */ public static String getContentByRSA(String originStr) { try { byte[] bytes = RSAUtil.decryptWithPublicKeyBlock( Base64Util.decodeToBytes(originStr), CryptorNatvie.getPubliscKey(MyApplication.getInstance())/*GlobalAppInfo.public_key*/); return new String(bytes, "UTF-8"); } catch (Exception e) { e.printStackTrace(); } return ""; }}</code></pre><p><a href="http://rsautil.java/" target="_blank" rel="noopener">RSAUtil.java</a> - 具体的Rsa加密解密方式,我这里重点关注decryptWithPublicKeyBlock</p><pre><code>import java.io.BufferedReader;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.math.BigInteger;import java.security.Key;import java.security.KeyFactory;import java.security.KeyPair;import java.security.KeyPairGenerator;import java.security.NoSuchAlgorithmException;import java.security.PrivateKey;import java.security.PublicKey;import java.security.interfaces.RSAPrivateKey;import java.security.interfaces.RSAPublicKey;import java.security.spec.InvalidKeySpecException;import java.security.spec.PKCS8EncodedKeySpec;import java.security.spec.RSAPublicKeySpec;import java.security.spec.X509EncodedKeySpec;import javax.crypto.Cipher;/** * @Author: hl * @Date: created at 2019/12/25 11:02 * @Description: RSA加密解密工具 */public class RSAUtil { /** * 某些时候,后台(目前php后台)给的公钥并不支持RSA/ECB/PKCS1Padding算法,所以我们只需要RSA算法来通过公钥获取解密的key * 因此:分开两个变量使用 */ private static String ECB_PADDING = "RSA/ECB/PKCS1Padding"; private static String RSA = "RSA"; /** * RSA算法规定:待加密的字节数不能超过密钥的长度值除以8再减去11。 * 而加密后得到密文的字节数,正好是密钥的长度值除以 8。 */ private static int KEYSIZE = 2048;// 密钥位数 private static int RESERVE_BYTES = 11; private static int DECRYPT_BLOCK = KEYSIZE / 8; private static int ENCRYPT_BLOCK = DECRYPT_BLOCK - RESERVE_BYTES; /** * 随机生成RSA密钥对范围:512~2048 * (默认密钥长度为1024) */ public static KeyPair generateRSAKeyPair() { return generateRSAKeyPair(1024); } /** * 随机生成RSA密钥对 */ public static KeyPair generateRSAKeyPair(int keyLength) { try { KeyPairGenerator kpg = KeyPairGenerator.getInstance(RSA); kpg.initialize(keyLength); return kpg.genKeyPair(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); return null; } } /** * 用公钥加密 */ public static byte[] encryptDataPublic(byte[] data, PublicKey publicKey) { try { // 对数据加密 Cipher cipher = Cipher.getInstance(RSA); // 编码前设定编码方式及密钥 cipher.init(Cipher.ENCRYPT_MODE, publicKey); // 传入编码数据并返回编码结果 return cipher.doFinal(data); } catch (Exception e) { e.printStackTrace(); return null; } } /** * 用公钥解密 - 传PublicKey的方式 */ public static byte[] decryptDataPublic(byte[] data, PublicKey publicKey) { try { // 对数据解密 Cipher cipher = Cipher.getInstance(RSA); cipher.init(Cipher.DECRYPT_MODE, publicKey); return cipher.doFinal(data); } catch (Exception e) { e.printStackTrace(); return null; } } /** * 分块公钥加密 * * @param data * @param key */ public static byte[] encryptWithPublicKeyBlock(byte[] data, byte[] key) throws Exception { int blockCount = (data.length / ENCRYPT_BLOCK); if ((data.length % ENCRYPT_BLOCK) != 0) { blockCount += 1; } ByteArrayOutputStream bos = new ByteArrayOutputStream(blockCount * ENCRYPT_BLOCK); Cipher cipher = Cipher.getInstance(ECB_PADDING); cipher.init(Cipher.ENCRYPT_MODE, getPublicKey(key)); for (int offset = 0; offset < data.length; offset += ENCRYPT_BLOCK) { int inputLen = (data.length - offset); if (inputLen > ENCRYPT_BLOCK) { inputLen = ENCRYPT_BLOCK; } byte[] encryptedBlock = cipher.doFinal(data, offset, inputLen); bos.write(encryptedBlock); } bos.close(); return bos.toByteArray(); } /** * 用公钥解密 - 传字符串的方式 * ECB_PADDING--当前我的php后台数据加密方式 */ public static byte[] decryptDataPublic(byte[] data, String _publicKey) { try { PublicKey publicKey = loadPublicKey(_publicKey); // 对数据解密 Cipher cipher = Cipher.getInstance(ECB_PADDING); cipher.init(Cipher.DECRYPT_MODE, publicKey); byte[] resultBytes = cipher.doFinal(data); return resultBytes; } catch (Exception e) { e.printStackTrace(); } return null; } /** * 分块公钥解密 * * @param data * @param key */ public static byte[] decryptWithPublicKeyBlock(byte[] data, byte[] key) throws Exception { int blockCount = (data.length / DECRYPT_BLOCK); if ((data.length % DECRYPT_BLOCK) != 0) { blockCount += 1; } ByteArrayOutputStream bos = new ByteArrayOutputStream(blockCount * DECRYPT_BLOCK); Cipher cipher = Cipher.getInstance(ECB_PADDING); cipher.init(Cipher.DECRYPT_MODE, getPublicKey(key)); for (int offset = 0; offset < data.length; offset += DECRYPT_BLOCK) { int inputLen = (data.length - offset); if (inputLen > DECRYPT_BLOCK) { inputLen = DECRYPT_BLOCK; } byte[] decryptedBlock = cipher.doFinal(data, offset, inputLen); bos.write(decryptedBlock); } bos.close(); return bos.toByteArray(); } /** * 分块公钥解密 * * @param data * @param _publicKey */ public static byte[] decryptWithPublicKeyBlock(byte[] data, String _publicKey) throws Exception { int blockCount = (data.length / DECRYPT_BLOCK); if ((data.length % DECRYPT_BLOCK) != 0) { blockCount += 1; } ByteArrayOutputStream bos = new ByteArrayOutputStream(blockCount * DECRYPT_BLOCK); Cipher cipher = Cipher.getInstance(ECB_PADDING); cipher.init(Cipher.DECRYPT_MODE, loadPublicKey(_publicKey)); for (int offset = 0; offset < data.length; offset += DECRYPT_BLOCK) { int inputLen = (data.length - offset); if (inputLen > DECRYPT_BLOCK) { inputLen = DECRYPT_BLOCK; } byte[] decryptedBlock = cipher.doFinal(data, offset, inputLen); bos.write(decryptedBlock); } bos.close(); return bos.toByteArray(); } /** * 用私钥加密 */ public static byte[] encryptDataPrivate(byte[] data, PrivateKey privateKey) { try { // 对数据加密 Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding"); cipher.init(Cipher.ENCRYPT_MODE, privateKey); return cipher.doFinal(data); } catch (Exception e) { return null; } } /** * 分块私钥加密 * * @param data * @param key */ public static byte[] encryptWithPrivateKeyBlock(byte[] data, byte[] key) throws Exception { int blockCount = (data.length / ENCRYPT_BLOCK); if ((data.length % ENCRYPT_BLOCK) != 0) { blockCount += 1; } ByteArrayOutputStream bos = new ByteArrayOutputStream(blockCount * ENCRYPT_BLOCK); Cipher cipher = Cipher.getInstance(ECB_PADDING); cipher.init(Cipher.ENCRYPT_MODE, getPrivateKey(key)); for (int offset = 0; offset < data.length; offset += ENCRYPT_BLOCK) { int inputLen = (data.length - offset); if (inputLen > ENCRYPT_BLOCK) { inputLen = ENCRYPT_BLOCK; } byte[] encryptedBlock = cipher.doFinal(data, offset, inputLen); bos.write(encryptedBlock); } bos.close(); return bos.toByteArray(); } /** * 用私钥解密 */ public static byte[] decryptDataPrivate(byte[] data, PrivateKey privateKey) { try { // 对数据解密 Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding"); cipher.init(Cipher.DECRYPT_MODE, privateKey); return cipher.doFinal(data); } catch (Exception e) { return null; } } /** * 分块私钥解密 * * @param data * @param key */ public static byte[] decryptWithPrivateKeyBlock(byte[] data, byte[] key) throws Exception { int blockCount = (data.length / DECRYPT_BLOCK); if ((data.length % DECRYPT_BLOCK) != 0) { blockCount += 1; } ByteArrayOutputStream bos = new ByteArrayOutputStream(blockCount * DECRYPT_BLOCK); Cipher cipher = Cipher.getInstance(ECB_PADDING); cipher.init(Cipher.DECRYPT_MODE, getPrivateKey(key)); for (int offset = 0; offset < data.length; offset += DECRYPT_BLOCK) { int inputLen = (data.length - offset); if (inputLen > DECRYPT_BLOCK) { inputLen = DECRYPT_BLOCK; } byte[] decryptedBlock = cipher.doFinal(data, offset, inputLen); bos.write(decryptedBlock); } bos.close(); return bos.toByteArray(); } /** * 通过公钥byte[](publicKey.getEncoded())将公钥还原,适用于RSA算法 * * @param keyBytes * @return * @throws NoSuchAlgorithmException * @throws InvalidKeySpecException */ public static PublicKey getPublicKey(byte[] keyBytes) throws NoSuchAlgorithmException, InvalidKeySpecException { X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes); KeyFactory keyFactory = KeyFactory.getInstance(RSA); PublicKey publicKey = keyFactory.generatePublic(keySpec); return publicKey; } /** * 通过私钥byte[]将公钥还原,适用于RSA算法 * * @param keyBytes * @return * @throws NoSuchAlgorithmException * @throws InvalidKeySpecException */ public static PrivateKey getPrivateKey(byte[] keyBytes) throws NoSuchAlgorithmException, InvalidKeySpecException { PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(keyBytes); KeyFactory keyFactory = KeyFactory.getInstance(RSA); PrivateKey privateKey = keyFactory.generatePrivate(keySpec); return privateKey; } /** * 使用N、e值还原公钥 * * @param modulus * @param publicExponent * @return * @throws NoSuchAlgorithmException * @throws InvalidKeySpecException */ public static PublicKey getPublicKey(String modulus, String publicExponent) throws NoSuchAlgorithmException, InvalidKeySpecException { BigInteger bigIntModulus = new BigInteger(modulus); BigInteger bigIntPrivateExponent = new BigInteger(publicExponent); RSAPublicKeySpec keySpec = new RSAPublicKeySpec(bigIntModulus, bigIntPrivateExponent); KeyFactory keyFactory = KeyFactory.getInstance(RSA); PublicKey publicKey = keyFactory.generatePublic(keySpec); return publicKey; } /** * 使用N、d值还原私钥 * * @param modulus * @param privateExponent * @return * @throws NoSuchAlgorithmException * @throws InvalidKeySpecException */ public static PrivateKey getPrivateKey(String modulus, String privateExponent) throws NoSuchAlgorithmException, InvalidKeySpecException { BigInteger bigIntModulus = new BigInteger(modulus); BigInteger bigIntPrivateExponent = new BigInteger(privateExponent); RSAPublicKeySpec keySpec = new RSAPublicKeySpec(bigIntModulus, bigIntPrivateExponent); KeyFactory keyFactory = KeyFactory.getInstance(RSA); PrivateKey privateKey = keyFactory.generatePrivate(keySpec); return privateKey; } /** * 从字符串中加载公钥 * * @param publicKeyStr 公钥数据字符串 * @throws Exception 加载公钥时产生的异常 * RSA - 当前我的后台给的公钥的生成算法是RSA */ public static PublicKey loadPublicKey(String publicKeyStr) throws Exception { try { byte[] buffer = Base64Util.decode(publicKeyStr); KeyFactory keyFactory = KeyFactory.getInstance(RSA); X509EncodedKeySpec keySpec = new X509EncodedKeySpec(buffer); return keyFactory.generatePublic(keySpec); } catch (NoSuchAlgorithmException e) { throw new Exception("无此算法"); } catch (InvalidKeySpecException e) { throw new Exception("公钥非法"); } catch (NullPointerException e) { throw new Exception("公钥数据为空"); } } /** * 从字符串中加载私钥<br> * 加载时使用的是PKCS8EncodedKeySpec(PKCS#8编码的Key指令)。 * * @param privateKeyStr * @return * @throws Exception */ public static PrivateKey loadPrivateKey(String privateKeyStr) throws Exception { try { byte[] buffer = Base64Util.decode(privateKeyStr); PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(buffer); KeyFactory keyFactory = KeyFactory.getInstance(RSA); return keyFactory.generatePrivate(keySpec); } catch (NoSuchAlgorithmException e) { throw new Exception("无此算法"); } catch (InvalidKeySpecException e) { throw new Exception("私钥非法"); } catch (NullPointerException e) { throw new Exception("私钥数据为空"); } } /** * 从文件中输入流中加载公钥 * * @param in 公钥输入流 * @throws Exception 加载公钥时产生的异常 */ public static PublicKey loadPublicKey(InputStream in) throws Exception { try { return loadPublicKey(readKey(in)); } catch (IOException e) { throw new Exception("公钥数据流读取错误"); } catch (NullPointerException e) { throw new Exception("公钥输入流为空"); } } /** * 从文件中加载私钥 * * @param in 私钥文件名 * @return 是否成功 * @throws Exception */ public static PrivateKey loadPrivateKey(InputStream in) throws Exception { try { return loadPrivateKey(readKey(in)); } catch (IOException e) { throw new Exception("私钥数据读取错误"); } catch (NullPointerException e) { throw new Exception("私钥输入流为空"); } } /** * 读取密钥信息 * * @param in * @return * @throws IOException */ private static String readKey(InputStream in) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(in)); String readLine = null; StringBuilder sb = new StringBuilder(); while ((readLine = br.readLine()) != null) { if (readLine.charAt(0) == '-') { continue; } else { sb.append(readLine); sb.append('\r'); } } return sb.toString(); } /** * 打印公钥信息 * * @param publicKey */ public static void printPublicKeyInfo(PublicKey publicKey) { RSAPublicKey rsaPublicKey = (RSAPublicKey) publicKey; System.out.println("----------RSAPublicKey----------"); System.out.println("Modulus.length=" + rsaPublicKey.getModulus().bitLength()); System.out.println("Modulus=" + rsaPublicKey.getModulus().toString()); System.out.println("PublicExponent.length=" + rsaPublicKey.getPublicExponent().bitLength()); System.out.println("PublicExponent=" + rsaPublicKey.getPublicExponent().toString()); } /** * 打印公钥信息 * * @param privateKey */ public static void printPrivateKeyInfo(PrivateKey privateKey) { RSAPrivateKey rsaPrivateKey = (RSAPrivateKey) privateKey; System.out.println("----------RSAPrivateKey ----------"); System.out.println("Modulus.length=" + rsaPrivateKey.getModulus().bitLength()); System.out.println("Modulus=" + rsaPrivateKey.getModulus().toString()); System.out.println("PrivateExponent.length=" + rsaPrivateKey.getPrivateExponent().bitLength()); System.out.println("PrivatecExponent=" + rsaPrivateKey.getPrivateExponent().toString()); } /** * 得到密钥字符串(经过base64编码) */ public static String getKeyString(Key key) throws Exception { byte[] keyBytes = key.getEncoded(); String s = Base64Util.encode(keyBytes); return s; } /** * 16进制字符串转字节数组 * * @param src 16进制字符串 * @return 字节数组 * @throws */ public static byte[] hexString2Bytes(String src) { int l = src.length() / 2; byte[] ret = new byte[l]; for (int i = 0; i < l; i++) { ret[i] = (byte) Integer .valueOf(src.substring(i * 2, i * 2 + 2), 16).byteValue(); } return ret; } /** * 16进制字符串转字符串 * * @param src 16进制字符串 * @return 字节数组 * @throws */ public static String hexString2String(String src) { String temp = ""; for (int i = 0; i < src.length() / 2; i++) { temp = temp + (char) Integer.valueOf(src.substring(i * 2, i * 2 + 2), 16).byteValue(); } return temp; } /** * 字符串转16进制字符串 * * @param strPart 字符串 * @return 16进制字符串 * @throws */ public static String string2HexString(String strPart) { StringBuffer hexString = new StringBuffer(); for (int i = 0; i < strPart.length(); i++) { int ch = (int) strPart.charAt(i); String strHex = Integer.toHexString(ch); hexString.append(strHex); } return hexString.toString(); } /** * 字节数组转16进制字符串 * * @param b 字节数组 * @return 16进制字符串 * @throws */ public static String bytes2HexString(byte[] b) { StringBuffer result = new StringBuffer(); String hex; for (int i = 0; i < b.length; i++) { hex = Integer.toHexString(b[i] & 0xFF); if (hex.length() == 1) { hex = '0' + hex; } result.append(hex.toUpperCase()); } return result.toString(); }}</code></pre><p><a href="http://base64util.java/" target="_blank" rel="noopener">Base64Util.java</a> - Base64解压处理,采用了android本身提供的方式</p><pre><code>import android.util.Base64;import java.io.UnsupportedEncodingException;public class Base64Util { /******************************************非官方**************************************/ private static char[] base64EncodeChars = new char[] {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/'}; private static byte[] base64DecodeChars = new byte[] {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 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, -1, -1, -1, -1, -1, -1, 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, -1, -1, -1, -1, -1}; /** * 加密 * * @param data * @return */ public static String encode(byte[] data) { return decodePublic(data); } /** * 解密 * * @param str * @return */ public static byte[] decode(String str) { try { return decodePrivate(str); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return new byte[]{}; } private static byte[] decodePrivate(String str) throws UnsupportedEncodingException { StringBuffer sb = new StringBuffer(); byte[] data = str.getBytes("US-ASCII"); int len = data.length; int i = 0; int b1, b2, b3, b4; while (i < len) { do { b1 = base64DecodeChars[data[i++]]; } while (i < len && b1 == -1); if (b1 == -1) break; do { b2 = base64DecodeChars[data[i++]]; } while (i < len && b2 == -1); if (b2 == -1) break; sb.append((char) ((b1 << 2) | ((b2 & 0x30) >>> 4))); do { b3 = data[i++]; if (b3 == 61) return sb.toString().getBytes("iso8859-1"); b3 = base64DecodeChars[b3]; } while (i < len && b3 == -1); if (b3 == -1) break; sb.append((char) (((b2 & 0x0f) << 4) | ((b3 & 0x3c) >>> 2))); do { b4 = data[i++]; if (b4 == 61) return sb.toString().getBytes("iso8859-1"); b4 = base64DecodeChars[b4]; } while (i < len && b4 == -1); if (b4 == -1) break; sb.append((char) (((b3 & 0x03) << 6) | b4)); } return sb.toString().getBytes("iso8859-1"); } private static String decodePublic(byte[] data) { StringBuffer sb = new StringBuffer(); int len = data.length; int i = 0; int b1, b2, b3; while (i < len) { b1 = data[i++] & 0xff; if (i == len) { sb.append(base64EncodeChars[b1 >>> 2]); sb.append(base64EncodeChars[(b1 & 0x3) << 4]); sb.append("=="); break; } b2 = data[i++] & 0xff; if (i == len) { sb.append(base64EncodeChars[b1 >>> 2]); sb.append(base64EncodeChars[((b1 & 0x03) << 4) | ((b2 & 0xf0) >>> 4)]); sb.append(base64EncodeChars[(b2 & 0x0f) << 2]); sb.append("="); break; } b3 = data[i++] & 0xff; sb.append(base64EncodeChars[b1 >>> 2]); sb.append(base64EncodeChars[((b1 & 0x03) << 4) | ((b2 & 0xf0) >>> 4)]); sb.append(base64EncodeChars[((b2 & 0x0f) << 2) | ((b3 & 0xc0) >>> 6)]); sb.append(base64EncodeChars[b3 & 0x3f]); } return sb.toString(); } /******************************************官方**************************************/ /** * 【官】解密 * @param str - 纯字母,就不搞utf-8编码了 * @return */ public static byte[] decodeToBytes(String str){ // try { // return Base64.decode(str.getBytes("utf-8"), Base64.DEFAULT); // } catch (UnsupportedEncodingException e) { // e.printStackTrace(); // } // return null; return Base64.decode(str.getBytes(), Base64.DEFAULT); }}</code></pre><p> 基本没啥问题了</p><p><img src="https://pic1.zhimg.com/v2-eed6af06c203c600cb743de14b17c278_b.png" alt="img"></p><p> 问题:</p><p> \1. 如果<strong>不分块解密可能会报错</strong>: - 一下不能进行太多字节解密</p><pre><code> javax.crypto.IllegalBlockSizeException: input must be under 256 bytes</code></pre><p> \2. 具体忘了,应该也是rsa获取公钥出的问题…</p><pre><code>java.lang.ArrayIndexOutOfBoundsException: too much data for RSA block</code></pre><p>\3. 获取公钥方式key出问题,可能出现 ,具体是<strong>loadPublicKey(String publickey)</strong>方法,里面涉及到SSLX509Certificate等问题,这具体看后台加密的方式</p><pre><code> java.security.spec.InvalidKeySpecException: com.android.org.conscrypt.OpenSSLX509CertificateFactory$ParsingException: Error parsing public keyjava.security.spec.InvalidKeySpecException: encoded key spec not recognized: failed to construct sequence from byte[]: unknown tag 13 encountered</code></pre><p> \4. 记得公钥去掉—–BEGIN PUBLIC KEY—– —–END PUBLIC KEY—–</p><p><img src="https://pic3.zhimg.com/v2-38516d96b1f82344ceff1d112625c6be_b.png" alt="img"></p><p> 我的格式如下(\n没去掉试哈哈,保留了,你可以去掉试试。。嘻嘻) - 我定义在<strong>cpp文件</strong>了,打包成了<strong>so</strong>,让破解更难些。。。另外加了<strong>签名校验 参考</strong> <a href="https://blog.csdn.net/venusic/article/details/52347316" target="_blank" rel="noopener">CSDN-专业IT技术社区-登录</a>,防止so直接被调用…</p><p><img src="https://pic2.zhimg.com/v2-6f996a159309ed70e0da7973bcb3a7dd_b.png" alt="img"></p><p> <strong>cryptor.cpp</strong> - 直接给出来吧。需要可以参考</p><pre><code>#include <jni.h>#include <string>const char *app_signature_sha1="E561477307CDxxxxxxxx815EC4A014DF";const char HexCode[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};extern "C" JNIEXPORT jstring JNICALLJava_com_lieyun_rsa_CryptorNatvie_getPubliscKey( JNIEnv* env, jclass type, jobject context_object) { jclass context_class = env->GetObjectClass(context_object); //context.getPackageManager() jmethodID methodId = env->GetMethodID(context_class, "getPackageManager", "()Landroid/content/pm/PackageManager;"); jobject package_manager_object = env->CallObjectMethod(context_object, methodId); if (package_manager_object == NULL) { std::string rsa_keysbhello = "hello"; return env->NewStringUTF(rsa_keysbhello.c_str()); } //context.getPackageName() methodId = env->GetMethodID(context_class, "getPackageName", "()Ljava/lang/String;"); jstring package_name_string = (jstring)env->CallObjectMethod(context_object, methodId); if (package_name_string == NULL) { std::string rsa_keysbheys = "heys"; return env->NewStringUTF(rsa_keysbheys.c_str()); } env->DeleteLocalRef(context_class); //PackageManager.getPackageInfo(Sting, int) //public static final int GET_SIGNATURES= 0x00000040; jclass pack_manager_class = env->GetObjectClass(package_manager_object); methodId = env->GetMethodID(pack_manager_class, "getPackageInfo", "(Ljava/lang/String;I)Landroid/content/pm/PackageInfo;"); env->DeleteLocalRef(pack_manager_class); jobject package_info_object = env->CallObjectMethod(package_manager_object, methodId, package_name_string, 0x40); if (package_info_object == NULL) { std::string rsa_keysbhey = "hey"; return env->NewStringUTF(rsa_keysbhey.c_str()); } env->DeleteLocalRef(package_manager_object); //PackageInfo.signatures[0] jclass package_info_class = env->GetObjectClass(package_info_object); jfieldID fieldId = env->GetFieldID(package_info_class, "signatures", "[Landroid/content/pm/Signature;"); env->DeleteLocalRef(package_info_class); jobjectArray signature_object_array = (jobjectArray)env->GetObjectField(package_info_object, fieldId); if (signature_object_array == NULL) { std::string rsa_keysbfuck = "fuck"; return env->NewStringUTF(rsa_keysbfuck.c_str()); } jobject signature_object = env->GetObjectArrayElement(signature_object_array, 0); env->DeleteLocalRef(package_info_object); //Signature.toByteArray() jclass signature_class = env->GetObjectClass(signature_object); methodId = env->GetMethodID(signature_class, "toByteArray", "()[B"); env->DeleteLocalRef(signature_class); jbyteArray signature_byte = (jbyteArray) env->CallObjectMethod(signature_object, methodId); //new ByteArrayInputStream - 这里报错了,但是不影响打包和运行 jclass byte_array_input_class=env->FindClass("java/io/ByteArrayInputStream"); methodId=env->GetMethodID(byte_array_input_class,"<init>","([B)V"); jobject byte_array_input=env->NewObject(byte_array_input_class,methodId,signature_byte); //CertificateFactory.getInstance("X.509") jclass certificate_factory_class=env->FindClass("java/security/cert/CertificateFactory"); methodId=env->GetStaticMethodID(certificate_factory_class,"getInstance","(Ljava/lang/String;)Ljava/security/cert/CertificateFactory;"); jstring x_509_jstring=env->NewStringUTF("X.509"); jobject cert_factory=env->CallStaticObjectMethod(certificate_factory_class,methodId,x_509_jstring); //certFactory.generateCertificate(byteIn); methodId=env->GetMethodID(certificate_factory_class,"generateCertificate",("(Ljava/io/InputStream;)Ljava/security/cert/Certificate;")); jobject x509_cert=env->CallObjectMethod(cert_factory,methodId,byte_array_input); env->DeleteLocalRef(certificate_factory_class); //cert.getEncoded() jclass x509_cert_class=env->GetObjectClass(x509_cert); methodId=env->GetMethodID(x509_cert_class,"getEncoded","()[B"); jbyteArray cert_byte=(jbyteArray)env->CallObjectMethod(x509_cert,methodId); env->DeleteLocalRef(x509_cert_class); //MessageDigest.getInstance("SHA1") jclass message_digest_class=env->FindClass("java/security/MessageDigest"); methodId=env->GetStaticMethodID(message_digest_class,"getInstance","(Ljava/lang/String;)Ljava/security/MessageDigest;"); jstring sha1_jstring=env->NewStringUTF("SHA1"); jobject sha1_digest=env->CallStaticObjectMethod(message_digest_class,methodId,sha1_jstring); //sha1.digest (certByte) methodId=env->GetMethodID(message_digest_class,"digest","([B)[B"); jbyteArray sha1_byte=(jbyteArray)env->CallObjectMethod(sha1_digest,methodId,cert_byte); env->DeleteLocalRef(message_digest_class); //toHexString jsize array_size=env->GetArrayLength(sha1_byte); jbyte* sha1 =env->GetByteArrayElements(sha1_byte,NULL); char *hex_sha=new char[array_size*2+1]; for (int i = 0; i <array_size ; ++i) { hex_sha[2*i]=HexCode[((unsigned char)sha1[i])/16]; hex_sha[2*i+1]=HexCode[((unsigned char)sha1[i])%16]; } hex_sha[array_size*2]='\0'; //比较签名 if (strcmp(hex_sha,app_signature_sha1)==0) { std::string rsa_key = "MIIBIjxxxxxxxB\n"; return env->NewStringUTF(rsa_key.c_str()); } else{ std::string rsa_keysb = "sb"; return env->NewStringUTF(rsa_keysb.c_str()); }}//jobject getApplication(JNIEnv *env) {// jclass localClass = (*env)->FindClass(env,"android/app/ActivityThread");// if (localClass!=NULL)// {// // LOGI("class have find");// jmethodID getapplication = (*env)->GetStaticMethodID(env,localClass, "currentApplication", "()Landroid/app/Application;");// if (getapplication!=NULL)// {// jobject application = (*env)->CallStaticObjectMethod(env,localClass, getapplication);// return application;// }// return NULL;// }// return NULL;//}//void exitApplication(JNIEnv *env, jint flag){// jclass temp_clazz = NULL;// jmethodID mid_static_method;// // 1、从classpath路径下搜索ClassMethod这个类,并返回该类的Class对象// temp_clazz =(*env)->FindClass(env,"java/lang/System");// mid_static_method = (*env)->GetStaticMethodID(env,temp_clazz,"exit","(I)V");// (*env)->CallStaticVoidMethod(env,temp_clazz,mid_static_method,flag);// (*env)->DeleteLocalRef(env,temp_clazz);//}</code></pre><p><img src="https://pic3.zhimg.com/v2-cb671f4b8eb2f4ca168bfe673850cb76_b.png" alt="img"></p><p>上面这是<strong>签名文件的sha1值</strong>,替换自己的</p><p><img src="https://pic1.zhimg.com/v2-5c784bf030867f88006efeba0c261fe0_b.png" alt="img"></p><p>上面这是rsa公钥字符串(处理了begin和end。。\n保留了。如果有问题可以再多调试)</p><p> 到此基本就搞定了rsa界面,然后做了基本的so加密处理 <a href="https://zhuanlan.zhihu.com/p/101999563。。。顺便复习了下native编程。。哇咔咔。。。加油。。" target="_blank" rel="noopener">https://zhuanlan.zhihu.com/p/101999563。。。顺便复习了下native编程。。哇咔咔。。。加油。。</a></p><script> document.querySelectorAll('.github-emoji') .forEach(el => { if (!el.dataset.src) { return; } const img = document.createElement('img'); img.style = 'display:none !important;'; img.src = el.dataset.src; img.addEventListener('error', () => { img.remove(); el.style.color = 'inherit'; el.style.backgroundImage = 'none'; el.style.background = 'none'; }); img.addEventListener('load', () => { img.remove(); }); document.body.appendChild(img); }); </script>]]></content>
<categories>
<category> Android </category>
<category> 加密解密 </category>
</categories>
<tags>
<tag> Android </tag>
<tag> RSA加密解密 </tag>
</tags>
</entry>
<entry>
<title>Android-androidx-ViewPager2入门简介(总结记录)</title>
<link href="/2020/07/12/Android-androidx-ViewPager2%E5%85%A5%E9%97%A8%E7%AE%80%E4%BB%8B-%E6%80%BB%E7%BB%93%E8%AE%B0%E5%BD%95/"/>
<url>/2020/07/12/Android-androidx-ViewPager2%E5%85%A5%E9%97%A8%E7%AE%80%E4%BB%8B-%E6%80%BB%E7%BB%93%E8%AE%B0%E5%BD%95/</url>
<content type="html"><![CDATA[<p> 这几天群里讨论某音的上下滑动,说道ViewPager2,做上下滑动比较简单,本质上就是RecyclewView.Adapter来做的适配器。就想着尝试哈,之前见过,但是没用过,没遇到这种需求。。。滴滴。。。。</p><p><a href="https://developer.android.google.cn/jetpack/androidx/releases/viewpager2" target="_blank" rel="noopener">ViewPager2 | Android 开发者 | Android Developers</a> </p><p> 根据官方指南,我们来到github、demo介绍…</p><p><a href="https://github.com/android/views-widgets-samples/tree/master/ViewPager2" target="_blank" rel="noopener">android/views-widgets-samples</a> </p><p><a href="https://github.com/android/views-widgets-samples/blob/master/ViewPager2/app/src/main/java/androidx/viewpager2/integration/testapp/CardFragmentActivity.kt" target="_blank" rel="noopener">android/views-widgets-samples</a> – 这是Fragment作为View的案例</p><p><a href="https://github.com/android/views-widgets-samples/blob/master/ViewPager2/app/src/main/java/androidx/viewpager2/integration/testapp/CardViewActivity.kt" target="_blank" rel="noopener">android/views-widgets-samples</a> – 这是View作为内部View的案例,方式采用<a href="https://developer.android.com/reference/androidx/recyclerview/widget/RecyclerView.Adapter" target="_blank" rel="noopener">RecyclerView.Adapter</a>,这样更为简单。github都有相关说明哟:</p><p><img src="https://pic2.zhimg.com/v2-5b77471dd7261660db2f62aea3696b95_b.png" alt="img"></p><p> 当然也可以结合Tablayout来做多页导航,感觉还不错的样纸。。而且网上也有一些坑的记录和解决方式,随着大家逐步转向androidx库的迁移,我们是应该接触下。另外jetpack <a href="https://developer.android.google.cn/jetpack?hl=en" target="_blank" rel="noopener">Android Jetpack | Android Developers</a> 那套,以及相关的新的控件,我们都是有必要xiao习一下的。。</p><p><img src="https://pic2.zhimg.com/v2-8586ee644764b18f1201986125ef4075_b.png" alt="img"></p><p> 新工程,建议直接androidx走起。另外如果有可用的新的控件,建议可快速上手用起来。早晚都是要升级的。。从github上案例都是kt版本,还建议直接kt走起。当然如果没那么多时间熟悉kt,也还是可以继续java的。。。 </p><p> 不过kt目前三方的库,相对来讲,基本上已经兼容kt了。。。androidx基本上也是可以的。 一次性到位。随着技术的迭代,你要同步的东西会越来越多的。当然老的东西也还是可以用。不过新东西肯定有它的独到的地方。</p><p> <strong>快速入门参考</strong>: <a href="https://www.jianshu.com/p/93e2850cc480" target="_blank" rel="noopener">ViewPager2快速入门</a> <a href="https://www.jianshu.com/p/25cc75a4d37c" target="_blank" rel="noopener">Android-ViewPager2</a> </p><p> 转androidx的方式</p><p><img src="https://pic1.zhimg.com/v2-c9b533a968fce563702653d42e148690_b.png" alt="img"></p><p><a href="https://developer.android.google.cn/jetpack/androidx/migrate?hl=en" target="_blank" rel="noopener">Migrating to AndroidX | Android Developers</a> </p><p><img src="https://pic2.zhimg.com/v2-95c9129ffe7b71fcc299fed66f133d5d_b.png" alt="img"></p><p> 底部有坑记录,可参考,其他的网上多查查。或者看官方迁移文档 <a href="https://www.meiwen.com.cn/subject/stbbpqtx.html" target="_blank" rel="noopener">android ViewPager2的使用教程</a></p><p> google中国区的官方网站还不错的。只要仔细看,有一定经验的话,入门应该还是不算难的。基本上照着git上的案例,能模拟个大概。 不过其中创建Fragment的viewpaper2的时候,涉及到FragmentStateAdapter构造函数的理解,其中有个Lifecycle,这也是jetpack这套工具库和指南旗下的。。大概搜了下,可能是涉及到fragmentmannager管理碎片的时候,涉及到的回调,这个回调需要自己传递给外面? 具体你怎么用途?目前没来得及深入了。。。一般用第一个构造函数就可以了。。。有知道的可以指定一二….</p><p><img src="https://pic1.zhimg.com/v2-1cb983a5286d9bea639c17e485906068_b.png" alt="img"></p><p> 可以结合这个仿抖音App上下滑动那块了。。不过要完善,肯定有不少坑要踩… </p><p> 一般用东西,我希望多了解点。所以会多一些疑问。不知道为什么,过了个年,心态发生了变化,一些模棱两可的方法调用,貌似清晰了一些。。。难道进步了?o(<em> ̄︶ ̄</em>)o </p><p> 加油吧。。。哎。一天天都不太想学习。。。卧槽。。。。后续继续。。。明天快速实践接触一把MVVM+LiveData+ViewModel…之前一直是说不喜欢MVVM,喜欢MVP,看来只有试过才知道。。</p><p> 源码贴下?</p><p><a href="http://vp2adapter.java/" target="_blank" rel="noopener">Vp2Adapter.java</a> </p><pre><code> import android.util.Log;import androidx.annotation.NonNull;import androidx.fragment.app.Fragment;import androidx.fragment.app.FragmentActivity;import androidx.viewpager2.adapter.FragmentStateAdapter;public class Vp2Adapter extends FragmentStateAdapter { public Vp2Adapter(@NonNull FragmentActivity fragmentActivity) { super(fragmentActivity); } @NonNull @Override public Fragment createFragment(int position) { Log.e("test", "position=" + position); return BlankFragment.newInstance("test", "position=" + position); } @Override public int getItemCount() { return 5; }}</code></pre><p><a href="http://blankfragment.java/" target="_blank" rel="noopener">BlankFragment.java</a> </p><pre><code>import android.content.Context;import android.graphics.Color;import android.net.Uri;import android.os.Bundle;import androidx.fragment.app.Fragment;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * A simple {@link Fragment} subclass. * Activities that contain this fragment must implement the * {@link BlankFragment.OnFragmentInteractionListener} interface * to handle interaction events. * Use the {@link BlankFragment#newInstance} factory method to * create an instance of this fragment. */public class BlankFragment extends Fragment { // TODO: Rename parameter arguments, choose names that match // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER private static final String ARG_PARAM1 = "param1"; private static final String ARG_PARAM2 = "param2"; // TODO: Rename and change types of parameters private String mParam1; private String mParam2; private OnFragmentInteractionListener mListener; public BlankFragment() { // Required empty public constructor } /** * Use this factory method to create a new instance of * this fragment using the provided parameters. * * @param param1 Parameter 1. * @param param2 Parameter 2. * @return A new instance of fragment BlankFragment. */ // TODO: Rename and change types and number of parameters public static BlankFragment newInstance(String param1, String param2) { BlankFragment fragment = new BlankFragment(); Bundle args = new Bundle(); args.putString(ARG_PARAM1, param1); args.putString(ARG_PARAM2, param2); fragment.setArguments(args); return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getArguments() != null) { mParam1 = getArguments().getString(ARG_PARAM1); mParam2 = getArguments().getString(ARG_PARAM2); Log.e("test", "onCreate " + mParam2); } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Log.e("test", "onCreateView " + mParam2); // Inflate the layout for this fragment View view = inflater.inflate(R.layout.fragment_blank, container, false); TextView textView = view.findViewById(R.id.fb_tv); textView.setText(mParam2); String regEx="[^0-9]"; Pattern p = Pattern.compile(regEx); Matcher m = p.matcher(mParam2); int pos = Integer.parseInt(m.replaceAll("").trim()); switch (pos){ case 0: view.setBackgroundColor(Color.parseColor("#CCFFFF")); break; case 1: view.setBackgroundColor(Color.parseColor("#FF99FF")); break; case 2: view.setBackgroundColor(Color.parseColor("#FF3333")); break; case 3: view.setBackgroundColor(Color.parseColor("#33FF99")); break; case 4: view.setBackgroundColor(Color.parseColor("#3366FF")); break; case 5: view.setBackgroundColor(Color.parseColor("#00CCFF")); break; } return view; } // TODO: Rename method, update argument and hook method into UI event public void onButtonPressed(Uri uri) { if (mListener != null) { mListener.onFragmentInteraction(uri); } } @Override public void onAttach(Context context) { super.onAttach(context); if (context instanceof OnFragmentInteractionListener) { mListener = (OnFragmentInteractionListener) context; } else { throw new RuntimeException(context.toString() + " must implement OnFragmentInteractionListener"); } } @Override public void onDetach() { super.onDetach(); mListener = null; } @Override public void onDestroyView() { super.onDestroyView(); Log.e("test", "onDestroyView " + mParam2); } @Override public void onDestroy() { super.onDestroy(); Log.e("test", "onDestroy " + mParam2); } /** * This interface must be implemented by activities that contain this * fragment to allow an interaction in this fragment to be communicated * to the activity and potentially other fragments contained in that * activity. * <p> * See the Android Training lesson <a href= * "http://developer.android.com/training/basics/fragments/communicating.html" * >Communicating with Other Fragments</a> for more information. */ public interface OnFragmentInteractionListener { // TODO: Update argument type and name void onFragmentInteraction(Uri uri); }}</code></pre><p>fragment_blank.xml</p><pre><code> <?xml version="1.0" encoding="utf-8"?><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".BlankFragment"> <!-- TODO: Update blank fragment layout --> <TextView android:id="@+id/fb_tv" android:layout_width="match_parent" android:layout_height="match_parent" android:text="@string/hello_blank_fragment" /></FrameLayout></code></pre><p><a href="http://cardfragmentactivity.java/" target="_blank" rel="noopener">CardFragmentActivity.java</a> </p><pre><code>import androidx.annotation.NonNull;import androidx.appcompat.app.AppCompatActivity;import androidx.viewpager2.widget.ViewPager2;import android.net.Uri;import android.os.Bundle;import android.view.View;public class CardFragmentActivity extends AppCompatActivity implements BlankFragment.OnFragmentInteractionListener { private ViewPager2 viewPager2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_card_fragment); viewPager2 = findViewById(R.id.acf_acfVp2); viewPager2.setOrientation(ViewPager2.ORIENTATION_VERTICAL); //viewPager2.setOffscreenPageLimit(100); // 可以容纳多少页,多余页面切换会被销毁 viewPager2.setPageTransformer(new ViewPager2.PageTransformer() { @Override public void transformPage(@NonNull View page, float position) { Float absPos = Math.abs(position); Float scaleX; Float scaleY; if (absPos > 1) { scaleX = 0F; scaleY = 0F; } else { scaleX = 1 - absPos; scaleY = 1 - absPos; } page.setScaleX(scaleX); page.setScaleY(scaleY); } }); Vp2Adapter vp2Adapter = new Vp2Adapter(this); viewPager2.setAdapter(vp2Adapter); } @Override public void onFragmentInteraction(Uri uri) { }}</code></pre><p>activity_card_fragment.xml</p><pre><code> <?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".CardFragmentActivity"> <androidx.viewpager2.widget.ViewPager2 android:id="@+id/acf_acfVp2" android:layout_width="match_parent" android:layout_height="match_parent" /></androidx.constraintlayout.widget.ConstraintLayout></code></pre><p>依赖:</p><pre><code>apply plugin: 'com.android.application'android { compileSdkVersion 28 buildToolsVersion "29.0.0" defaultConfig { applicationId "com.lieyun.test" minSdkVersion 21 targetSdkVersion 28 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } }}dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'androidx.appcompat:appcompat:1.0.0' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' implementation 'androidx.legacy:legacy-support-v4:1.0.0' testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test:runner:1.1.0' androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0' implementation 'org.jetbrains:annotations-java5:15.0' implementation "androidx.viewpager2:viewpager2:1.0.0"}</code></pre><p><img src="https://pic1.zhimg.com/v2-4d751056da617d84ff0fa730117d8324_b.png" alt="img"></p><p>其他的慢慢来..</p><script> document.querySelectorAll('.github-emoji') .forEach(el => { if (!el.dataset.src) { return; } const img = document.createElement('img'); img.style = 'display:none !important;'; img.src = el.dataset.src; img.addEventListener('error', () => { img.remove(); el.style.color = 'inherit'; el.style.backgroundImage = 'none'; el.style.background = 'none'; }); img.addEventListener('load', () => { img.remove(); }); document.body.appendChild(img); }); </script>]]></content>
<categories>
<category> Android </category>
<category> Jetpack </category>
</categories>
<tags>
<tag> Android </tag>
<tag> ViewPaper2 </tag>
<tag> 抖音 </tag>
</tags>
</entry>
<entry>
<title>面试简单算法.md</title>
<link href="/2020/07/05/%E9%9D%A2%E8%AF%95%E7%AE%80%E5%8D%95%E7%AE%97%E6%B3%95/"/>
<url>/2020/07/05/%E9%9D%A2%E8%AF%95%E7%AE%80%E5%8D%95%E7%AE%97%E6%B3%95/</url>
<content type="html"><![CDATA[<h1 id="排序"><a href="#排序" class="headerlink" title="排序"></a>排序</h1><p>冒泡、选择、快排</p><pre class=" language-java"><code class="language-java"><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">SortTest</span> <span class="token punctuation">{</span> <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">main</span><span class="token punctuation">(</span>String<span class="token punctuation">[</span><span class="token punctuation">]</span> args<span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">int</span><span class="token punctuation">[</span><span class="token punctuation">]</span> arr <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token number">3</span><span class="token punctuation">,</span><span class="token number">5</span><span class="token punctuation">,</span><span class="token number">2</span><span class="token punctuation">,</span><span class="token number">8</span><span class="token punctuation">,</span><span class="token number">4</span><span class="token punctuation">,</span><span class="token number">1</span><span class="token punctuation">,</span><span class="token number">9</span><span class="token punctuation">,</span><span class="token number">7</span><span class="token punctuation">}</span><span class="token punctuation">;</span> <span class="token comment" spellcheck="true">//bubbleSort(arr);</span> <span class="token comment" spellcheck="true">//selectionSort(arr);</span> <span class="token function">quickSort</span><span class="token punctuation">(</span>arr<span class="token punctuation">,</span><span class="token number">0</span><span class="token punctuation">,</span>arr<span class="token punctuation">.</span>length<span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span> System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>Arrays<span class="token punctuation">.</span><span class="token function">toString</span><span class="token punctuation">(</span>arr<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token comment" spellcheck="true">/** * 冒泡排序 * @param arr */</span> <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">bubbleSort</span><span class="token punctuation">(</span><span class="token keyword">int</span><span class="token punctuation">[</span><span class="token punctuation">]</span> arr<span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator"><</span> arr<span class="token punctuation">.</span>length <span class="token operator">-</span> <span class="token number">1</span> <span class="token punctuation">;</span> i <span class="token operator">++</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">int</span> j <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> j <span class="token operator"><</span> arr<span class="token punctuation">.</span>length <span class="token operator">-</span> i <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">;</span> j <span class="token operator">++</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">if</span><span class="token punctuation">(</span>arr<span class="token punctuation">[</span>j<span class="token punctuation">]</span> <span class="token operator">></span> arr<span class="token punctuation">[</span>j <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">int</span> temp <span class="token operator">=</span> arr<span class="token punctuation">[</span>j<span class="token punctuation">]</span><span class="token punctuation">;</span> arr<span class="token punctuation">[</span>j<span class="token punctuation">]</span> <span class="token operator">=</span> arr<span class="token punctuation">[</span>j <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">;</span> arr<span class="token punctuation">[</span>j <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">]</span> <span class="token operator">=</span> temp<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token comment" spellcheck="true">/** * 选择排序 * @param arr */</span> <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">selectionSort</span><span class="token punctuation">(</span><span class="token keyword">int</span><span class="token punctuation">[</span><span class="token punctuation">]</span> arr<span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator"><</span> arr<span class="token punctuation">.</span>length <span class="token operator">-</span> <span class="token number">1</span> <span class="token punctuation">;</span> i <span class="token operator">++</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">int</span> j <span class="token operator">=</span> i <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">;</span> j <span class="token operator"><</span> arr<span class="token punctuation">.</span>length<span class="token punctuation">;</span> j <span class="token operator">++</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>arr<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">></span> arr<span class="token punctuation">[</span>j<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">int</span> temp <span class="token operator">=</span> arr<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">;</span> arr<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">=</span> arr<span class="token punctuation">[</span>j<span class="token punctuation">]</span><span class="token punctuation">;</span> arr<span class="token punctuation">[</span>j<span class="token punctuation">]</span> <span class="token operator">=</span> temp<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token comment" spellcheck="true">/** * 快速排序 * 快速排序需要注意的地方就是要先从右边开始判断 * @param arr * @param low * @param high */</span> <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">quickSort</span><span class="token punctuation">(</span><span class="token keyword">int</span><span class="token punctuation">[</span><span class="token punctuation">]</span> arr<span class="token punctuation">,</span><span class="token keyword">int</span> low <span class="token punctuation">,</span> <span class="token keyword">int</span> high<span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">if</span><span class="token punctuation">(</span>low <span class="token operator">></span> high<span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">int</span> i <span class="token punctuation">,</span> j<span class="token punctuation">,</span>temp<span class="token punctuation">;</span> i <span class="token operator">=</span> low<span class="token punctuation">;</span> j <span class="token operator">=</span> high<span class="token punctuation">;</span> temp <span class="token operator">=</span> arr<span class="token punctuation">[</span>low<span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">while</span> <span class="token punctuation">(</span>i <span class="token operator"><</span> j<span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment" spellcheck="true">//先右</span> <span class="token keyword">while</span> <span class="token punctuation">(</span>temp <span class="token operator"><=</span> arr<span class="token punctuation">[</span>j<span class="token punctuation">]</span> <span class="token operator">&&</span> i <span class="token operator"><</span> j<span class="token punctuation">)</span><span class="token punctuation">{</span> j<span class="token operator">--</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token comment" spellcheck="true">//再左</span> <span class="token keyword">while</span> <span class="token punctuation">(</span>temp <span class="token operator">>=</span> arr<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">&&</span> i <span class="token operator"><</span> j<span class="token punctuation">)</span> <span class="token punctuation">{</span> i <span class="token operator">++</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>i <span class="token operator"><</span> j<span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">int</span> t <span class="token operator">=</span> arr<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">;</span> arr<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">=</span> arr<span class="token punctuation">[</span>j<span class="token punctuation">]</span><span class="token punctuation">;</span> arr<span class="token punctuation">[</span>j<span class="token punctuation">]</span> <span class="token operator">=</span> t<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> arr<span class="token punctuation">[</span>low<span class="token punctuation">]</span> <span class="token operator">=</span> arr<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">;</span> arr<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">=</span> temp<span class="token punctuation">;</span> <span class="token function">quickSort</span><span class="token punctuation">(</span>arr<span class="token punctuation">,</span>low<span class="token punctuation">,</span>j<span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">quickSort</span><span class="token punctuation">(</span>arr<span class="token punctuation">,</span>j <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">,</span>high<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">}</span></code></pre><h1 id="二分查找"><a href="#二分查找" class="headerlink" title="二分查找"></a>二分查找</h1><blockquote><p>需要注意的地方就是在二分查找时,要在折半查询之后再将算出中间值(middle),不能在循环一开始就算中间值</p></blockquote><pre class=" language-java"><code class="language-java"><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">BinarySearchTest</span> <span class="token punctuation">{</span> <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">main</span><span class="token punctuation">(</span>String<span class="token punctuation">[</span><span class="token punctuation">]</span> args<span class="token punctuation">)</span><span class="token punctuation">{</span> Scanner scanner <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Scanner</span><span class="token punctuation">(</span>System<span class="token punctuation">.</span>in<span class="token punctuation">)</span><span class="token punctuation">;</span> System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"请输入需要查询的值:"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">int</span> key <span class="token operator">=</span> scanner<span class="token punctuation">.</span><span class="token function">nextInt</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">int</span><span class="token punctuation">[</span><span class="token punctuation">]</span> arr <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token number">2</span><span class="token punctuation">,</span><span class="token number">5</span><span class="token punctuation">,</span><span class="token number">2</span><span class="token punctuation">,</span><span class="token number">8</span><span class="token punctuation">,</span><span class="token number">9</span><span class="token punctuation">,</span><span class="token number">4</span><span class="token punctuation">,</span><span class="token number">3</span><span class="token punctuation">,</span><span class="token number">5</span><span class="token punctuation">,</span><span class="token number">5</span><span class="token punctuation">}</span><span class="token punctuation">;</span> <span class="token comment" spellcheck="true">//int[] arr = {2,2,3,4,5,5,8,9};</span> <span class="token keyword">int</span> x <span class="token operator">=</span> <span class="token function">commBinarySearch</span><span class="token punctuation">(</span>arr<span class="token punctuation">,</span>key<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>x <span class="token operator">==</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">{</span> System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"数组中没有这个值"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token keyword">else</span> <span class="token punctuation">{</span> System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"查找的这个数在数组中排序后的位置为:"</span><span class="token operator">+</span> x<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">int</span> <span class="token function">commBinarySearch</span><span class="token punctuation">(</span><span class="token keyword">int</span><span class="token punctuation">[</span><span class="token punctuation">]</span> arr<span class="token punctuation">,</span><span class="token keyword">int</span> key<span class="token punctuation">)</span><span class="token punctuation">{</span> Arrays<span class="token punctuation">.</span><span class="token function">sort</span><span class="token punctuation">(</span>arr<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">int</span> low <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">,</span> high <span class="token operator">=</span> arr<span class="token punctuation">.</span>length <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">;</span> <span class="token keyword">int</span> middle <span class="token operator">=</span> <span class="token punctuation">(</span>low <span class="token operator">+</span> high<span class="token punctuation">)</span> <span class="token operator">/</span> <span class="token number">2</span><span class="token punctuation">;</span> <span class="token keyword">if</span><span class="token punctuation">(</span>key <span class="token operator"><</span> arr<span class="token punctuation">[</span>low<span class="token punctuation">]</span> <span class="token operator">||</span> key <span class="token operator">></span> arr<span class="token punctuation">[</span>high<span class="token punctuation">]</span> <span class="token operator">||</span> low <span class="token operator">></span> high<span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">while</span> <span class="token punctuation">(</span>low <span class="token operator"><=</span> high<span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span><span class="token punctuation">(</span>key <span class="token operator"><</span> arr<span class="token punctuation">[</span>middle<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">{</span> high <span class="token operator">=</span> middle <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token keyword">else</span> <span class="token keyword">if</span><span class="token punctuation">(</span>key <span class="token operator">></span> arr<span class="token punctuation">[</span>middle<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">{</span> low <span class="token operator">=</span> middle <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token keyword">else</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> middle<span class="token punctuation">;</span> <span class="token punctuation">}</span> middle <span class="token operator">=</span> <span class="token punctuation">(</span>low <span class="token operator">+</span> high<span class="token punctuation">)</span> <span class="token operator">/</span><span class="token number">2</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">return</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">}</span></code></pre><h1 id="字符串反转"><a href="#字符串反转" class="headerlink" title="字符串反转"></a>字符串反转</h1><pre class=" language-java"><code class="language-java"><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">Test</span> <span class="token punctuation">{</span> <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">main</span><span class="token punctuation">(</span>String<span class="token punctuation">[</span><span class="token punctuation">]</span> args<span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment" spellcheck="true">//StringBuffer中的reverse()方法</span> StringBuffer sb <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">StringBuffer</span><span class="token punctuation">(</span><span class="token string">"Hello World"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>sb<span class="token punctuation">.</span><span class="token function">reverse</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">toString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment" spellcheck="true">//自定义方法</span> String str <span class="token operator">=</span> <span class="token string">"Hello World"</span><span class="token punctuation">;</span> System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token function">reverseStr</span><span class="token punctuation">(</span>str<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">public</span> <span class="token keyword">static</span> String <span class="token function">reverseStr</span><span class="token punctuation">(</span>String str<span class="token punctuation">)</span><span class="token punctuation">{</span> String reverse <span class="token operator">=</span> <span class="token string">""</span><span class="token punctuation">;</span> <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> str<span class="token punctuation">.</span><span class="token function">length</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">;</span> i <span class="token operator">>=</span> <span class="token number">0</span> <span class="token punctuation">;</span> i<span class="token operator">--</span><span class="token punctuation">)</span><span class="token punctuation">{</span> reverse <span class="token operator">+=</span> str<span class="token punctuation">.</span><span class="token function">charAt</span><span class="token punctuation">(</span>i<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">return</span> reverse<span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">}</span></code></pre><h1 id="单例模式"><a href="#单例模式" class="headerlink" title="单例模式"></a>单例模式</h1><p>懒汉式</p><p>线程不安全,延迟初始化,严格意义上不是单例模式</p><pre class=" language-java"><code class="language-java"><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">Singleton</span><span class="token punctuation">{</span> <span class="token keyword">private</span> <span class="token function">Singleton</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token comment" spellcheck="true">//私有构造函数</span> <span class="token keyword">private</span> <span class="token keyword">static</span> Singleton singleton <span class="token operator">=</span> null<span class="token punctuation">;</span> <span class="token keyword">public</span> <span class="token keyword">static</span> Singleton <span class="token function">getInstance</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">if</span><span class="token punctuation">(</span>singleton <span class="token operator">==</span> null<span class="token punctuation">)</span><span class="token punctuation">{</span> singleton <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Singleton</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">return</span> instance<span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">}</span></code></pre><p><strong>饿汉模式</strong><br>线程安全,比较常用,但容易产生垃圾,因为一开始就初始化</p><pre class=" language-java"><code class="language-java"><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">Singleton</span><span class="token punctuation">{</span> <span class="token keyword">private</span> <span class="token function">Singleton</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span><span class="token punctuation">}</span> <span class="token keyword">private</span> <span class="token keyword">static</span> Singleton singleton <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Singleton</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">public</span> <span class="token keyword">static</span> Singleton <span class="token function">getInstance</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">return</span> singleton<span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">}</span></code></pre><p><strong>双重锁模式</strong><br>线程安全,延迟初始化。这种方式采用双锁机制,安全且在多线程情况下能保持高性能。</p><p>双重检查模式,进行了两次的判断,第一次是为了避免不要的实例,第二次是为了进行同步,避免多线程问题。由于<code>singleton=new Singleton()</code>对象的创建在JVM中可能会进行重排序,在多线程访问下存在风险,使用<code>volatile</code>修饰<code>signleton</code>实例变量有效,解决该问题。</p><pre class=" language-java"><code class="language-java"><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">Singleton</span><span class="token punctuation">{</span> <span class="token keyword">private</span> <span class="token function">Singleton</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span><span class="token punctuation">}</span> <span class="token keyword">private</span> <span class="token keyword">volatile</span> <span class="token keyword">static</span> Singleton singleton<span class="token punctuation">;</span> <span class="token keyword">public</span> <span class="token keyword">static</span> Singleton <span class="token function">getInstance</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">if</span><span class="token punctuation">(</span>singleton <span class="token operator">==</span> null<span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">synchronized</span><span class="token punctuation">(</span>Singleton<span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">if</span><span class="token punctuation">(</span>singleton <span class="token operator">==</span> null<span class="token punctuation">)</span><span class="token punctuation">{</span> singleton <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Singleton</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token keyword">return</span> singleton<span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">}</span></code></pre><p><strong>静态内部类单例模式</strong><br>只有第一次调用<code>getInstance</code>方法时,虚拟机才加载<code>Inner</code>并初始化<code>instance</code>,只有一个线程可以获得对象的初始化锁,其他线程无法进行初始化,保证对象的唯一性。目前此方式是所有单例模式中最推荐的模式,但具体还是根据项目选择。</p><pre class=" language-java"><code class="language-java"><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">Singleton</span><span class="token punctuation">{</span> <span class="token keyword">private</span> <span class="token function">Singleton</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token punctuation">}</span> <span class="token keyword">public</span> <span class="token keyword">static</span> Singleton <span class="token function">getInstance</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">return</span> Inner<span class="token punctuation">.</span>instance<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">private</span> <span class="token keyword">static</span> <span class="token keyword">class</span> <span class="token class-name">Inner</span> <span class="token punctuation">{</span> <span class="token keyword">private</span> <span class="token keyword">static</span> <span class="token keyword">final</span> Singleton instance <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Singleton</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span></code></pre><p><a href="https://zhuanlan.zhihu.com/p/33102022?from_voters_page=true" target="_blank" rel="noopener">https://zhuanlan.zhihu.com/p/33102022?from_voters_page=true</a></p><script> document.querySelectorAll('.github-emoji') .forEach(el => { if (!el.dataset.src) { return; } const img = document.createElement('img'); img.style = 'display:none !important;'; img.src = el.dataset.src; img.addEventListener('error', () => { img.remove(); el.style.color = 'inherit'; el.style.backgroundImage = 'none'; el.style.background = 'none'; }); img.addEventListener('load', () => { img.remove(); }); document.body.appendChild(img); }); </script>]]></content>
<categories>
<category> Java算法 </category>
</categories>
<tags>
<tag> Markdown </tag>
<tag> 算法 </tag>
</tags>
</entry>
<entry>
<title>Android-ConstraintLayout(约束布局)-全部解读-目录</title>
<link href="/2020/07/05/Android-ConstraintLayout-%E7%BA%A6%E6%9D%9F%E5%B8%83%E5%B1%80-%E5%85%A8%E9%83%A8%E8%A7%A3%E8%AF%BB-%E7%9B%AE%E5%BD%95/"/>
<url>/2020/07/05/Android-ConstraintLayout-%E7%BA%A6%E6%9D%9F%E5%B8%83%E5%B1%80-%E5%85%A8%E9%83%A8%E8%A7%A3%E8%AF%BB-%E7%9B%AE%E5%BD%95/</url>
<content type="html"><![CDATA[<p>应网友要求,把相关链接做一个目录合集,同时后续出现的问题也一并总汇总:</p><p><a href="https://zhuanlan.zhihu.com/p/37102629" target="_blank" rel="noopener">MonkeyLei:Android-ConstraintLayout(约束布局)-基本介绍</a></p><p><a href="https://zhuanlan.zhihu.com/p/37159830" target="_blank" rel="noopener">MonkeyLei:Android-ConstraintLayout(约束布局)-margin</a></p><p><a href="https://zhuanlan.zhihu.com/p/37988125" target="_blank" rel="noopener">MonkeyLei:Android-ConstraintLayout(约束布局)-替代线性相对复杂布局案例</a></p><p><a href="https://zhuanlan.zhihu.com/p/37995065" target="_blank" rel="noopener">MonkeyLei:Android-ConstraintLayout(约束布局)-Centering/Circular and with Bias了解一下</a></p><p><a href="https://zhuanlan.zhihu.com/p/38903441" target="_blank" rel="noopener">MonkeyLei:Android-ConstraintLayout(约束布局)-Dimensions constraints(略显复杂But有用)</a></p><p><a href="https://zhuanlan.zhihu.com/p/38980922" target="_blank" rel="noopener">MonkeyLei:Android-ConstraintLayout(约束布局)-Chains链(链条布局,Nice)</a></p><p><a href="https://zhuanlan.zhihu.com/p/39002655" target="_blank" rel="noopener">MonkeyLei:Android-ConstraintLayout(约束布局)-Virtual Helper objects(Guideline,Barrier, Group)</a></p><p><a href="https://zhuanlan.zhihu.com/p/40357629" target="_blank" rel="noopener">MonkeyLei:Android-ConstraintSet进阶-不同显示效果</a></p><p>问题:</p><p><a href="https://zhuanlan.zhihu.com/p/102713335" target="_blank" rel="noopener">MonkeyLei:Android-约束布局-ConstraintLayout goneMarginTop还不错</a></p><p>其他的有问题继续补充…另外如果遇到一些复杂布局出现问题,可以回过头去琢磨一些属性,相信应该都可以解决哒!目前已经三个项目都是约束,对尽量做到适配,很有帮助,很nice的。。。特殊情况可能需要用的一些不常用的属性,but很有用哟</p><script> document.querySelectorAll('.github-emoji') .forEach(el => { if (!el.dataset.src) { return; } const img = document.createElement('img'); img.style = 'display:none !important;'; img.src = el.dataset.src; img.addEventListener('error', () => { img.remove(); el.style.color = 'inherit'; el.style.backgroundImage = 'none'; el.style.background = 'none'; }); img.addEventListener('load', () => { img.remove(); }); document.body.appendChild(img); }); </script>]]></content>
<categories>
<category> UI </category>
<category> 布局 </category>
<category> Android </category>
</categories>
<tags>
<tag> ConstraintLayout </tag>
<tag> Android </tag>
<tag> 约束布局 </tag>
<tag> 2020 </tag>
</tags>
</entry>
<entry>
<title>Android/Java面试题总结2020</title>
<link href="/2020/07/05/Android-Java%E9%9D%A2%E8%AF%95%E9%A2%98%E6%80%BB%E7%BB%932020/"/>
<url>/2020/07/05/Android-Java%E9%9D%A2%E8%AF%95%E9%A2%98%E6%80%BB%E7%BB%932020/</url>
<content type="html"><![CDATA[<h5>*******************知识总结**************</h5><p><a href="https://blog.csdn.net/z151213/article/details/106619455" target="_blank" rel="noopener">Android面试题总结(含答案),欢迎各位补充。_z151213的博客-CSDN博客_android面试题总结(含答案),欢迎各位补充。</a></p><h5>*******************面试总结**************</h5><p>某桥,某康,某条,某旷,职位需求略有不同:</p><p>主要是Java、C++(OpenGL)、Android</p><p>mvp,mvvm,你为什么会有这样的转变,mvvm优势在哪<br>Context相关(application的,Service,Activity的)<br>Handler需要深入了解(为什么底层while不会卡死等?)<br>网络如何优化(数据传输优化)<br>图像oom具体如何深度优化<br>两个单链表,如何超找公共节点(一个节点同时存在两个单链表)<br>如何设计Android 日志系统,同时如何保证程序崩溃了日志也能得到上传<br>两个线程交替打印1 3 5 246……. 结果展示: 1 2 3 4 5 6..<br>Android Binder深入理解部分(越深入越好)<br>luncher之后的流程<br>内存堆栈如何分析,如何查看死循环,如何分析界面卡顿的问题(从哪些方面入手)<br>Surfaceflinger类深入分析(源码)</p><p>其他职位需求:</p><p>C++的#define ##符号 #typedef 构造,析构,new malloc free等</p><p>OpenGL的渲染流程,Buffer,Cpu,Gpu,VBO,FBO等概念,多线程渲染问题?</p><p>OpenGL渲染脚本Shader相关基础数据类型,简单样例代码,以及如何和顶点等传输交互等</p><p>图片格式,视频格式有了解过没,如何转换了解过没</p><h5>***************多源码多算法**************</h5><p>Java(熟悉的前提下需要专攻源码解读):</p><p>1.集合(map collection-list/set)</p><p>2.多线程(几种锁,线程池)</p><p>3.jvm,内存管理(内存回收)</p><p>4.网络(模型,socket,https,tcp/ip,加密,参数)</p><p>5.常用算法(二叉树,深度宽度,红黑树)</p><p>【附,I think】从事后台还需要攻读相关框架源码,练习手写乞丐版框架(可参考其他资料)</p><p>Android(需要多源码):</p><p>1.Context深入了解(继承关系源码解读)</p><p>2.Binder机制</p><p>3.Handler机制</p><p>4.Service用法场景</p><p>5.luncher流程</p><p>6.mvp,mvvm演变</p><p>7.性能优化(oom,图像->Surfaceflinger优化,视频加密压缩,电池电量优化)</p><p>8.性能分析(内存堆栈分析,cpu,过渡绘制)</p><h5>***************软实力(参考)**************</h5><ol start="0"><li>简单介绍下自己(如果工作时间长,经历多。要简单概要,比如“我叫黄磊,从事互联网已经5年,第一个项目主要是地图插件开发,主要是对OpenGL绘制熟悉。第二个开始从事Android方向,也是这个时候开始深入这块,对系统源码,一些框架都有做过深入学习和实践”) - 尽量简短吧,挑自己擅长的来总结!</li></ol><p>过往项目中遇到的最难的问题(有实际印象深的可以描述,我描述了之前关于一个项目从Android3D迁移到U3D引擎的过程,以及为何这样做)<br>你最讨厌跟什么样的人交流(千万不要正面回答,要回答“交流协调是一个过程,有分歧很正常的,不存在什么讨厌不讨厌”,大概就是要阐述如何团队合作,如何协调工作)<br>你对加班怎么看(要表示出你并不反对加班,因为项目紧,赶工期,上线都是很正常的事情)<br>介绍下你最近项目,以及项目从开始到上线,是如何分配工作,安排(可以简单描述下产品原型->评审->最终原型->设计图->开发->测试->上线)<br>你们团队规模(可以稍微说的大一点,以及你对团队职责的了解,显得你不只是守着自己的一亩三分地)<br>可能会问你架构的演变,为什么这样演变(mvp到mvvm)<br>如何保证项目稳定性(可以往大量测试,网络,性能,内存等优化方向,如果实践过自动化测试,可以提及; 热修复实践过可以提及,之前文章有介绍过)<br>期望薪资,看个人情况<br>暂时回忆了这些,等想起其他的再补充</p><p>Next,将完善新项目,届时会将很多自定义组件(进度条,banner,文本图片组合+角标,底部角标,官方Exoplayer视频界面,收货地址管理(仿某团,带高德地图点选相关界面,城市索引页面等),顶部角标Tab等独立原生自定义实现)也精简后更新工程,这个要等新项目完成后有时间搞!<a href="https://github.com/FanChael/MVVM" target="_blank">FanChael/MVVM</a> - 欢迎提前关注一波!</p><img src="https://pic2.zhimg.com/80/v2-d1c0111ffa562e8bc2ce4a412b113945_1440w.jpg"><p>希望菜鸟你我可以共勉,多源码,多算法,江湖再战!</p><script> document.querySelectorAll('.github-emoji') .forEach(el => { if (!el.dataset.src) { return; } const img = document.createElement('img'); img.style = 'display:none !important;'; img.src = el.dataset.src; img.addEventListener('error', () => { img.remove(); el.style.color = 'inherit'; el.style.backgroundImage = 'none'; el.style.background = 'none'; }); img.addEventListener('load', () => { img.remove(); }); document.body.appendChild(img); }); </script>]]></content>
<categories>
<category> 面经 </category>
<category> Java基础 </category>
<category> Android </category>
</categories>
<tags>
<tag> Android </tag>
<tag> 2020 </tag>
<tag> Java </tag>
<tag> 面试 </tag>
</tags>
</entry>
<entry>
<title>Android->MVVM_组件化的一些乞丐总结(目录)</title>
<link href="/2020/07/05/Android-MVVM_%E7%BB%84%E4%BB%B6%E5%8C%96%E7%9A%84%E4%B8%80%E4%BA%9B%E4%B9%9E%E4%B8%90%E6%80%BB%E7%BB%93%E7%9B%AE%E5%BD%95/"/>
<url>/2020/07/05/Android-MVVM_%E7%BB%84%E4%BB%B6%E5%8C%96%E7%9A%84%E4%B8%80%E4%BA%9B%E4%B9%9E%E4%B8%90%E6%80%BB%E7%BB%93%E7%9B%AE%E5%BD%95/</url>
<content type="html"><![CDATA[<p>简单总结下一路做这个乞丐版的组件化,androidX,jetpack,沉浸式、暗黑模式,自我学习实践刷新组件等过程中的一些记录。。。从上到下依次是遇到的一些问题的记录链接。。自我激励一把,喵喵喵, 供菜鸟参考,不喜勿喷,谢谢:</p><p><a href="https://zhuanlan.zhihu.com/p/115328957" target="_blank" rel="noopener">MonkeyLei:Android-DataBinding-BindingAdapter简单试试-覆盖属性/自定义属性.</a></p><p><a href="https://zhuanlan.zhihu.com/p/115546495" target="_blank" rel="noopener">MonkeyLei:Android-ViewModel-入门实践、FragmentContainerView等</a></p><p><a href="https://zhuanlan.zhihu.com/p/121654671" target="_blank" rel="noopener">MonkeyLei:Android_组件化_MVVM_组件化+LiveData+ViewModel+Repository</a></p><p><a href="https://zhuanlan.zhihu.com/p/122251620" target="_blank" rel="noopener">MonkeyLei:Android 架构组件之 LifeCycle详解(转载+实践+运用到MVVM组件化工程,做埋点等)</a></p><p><a href="https://zhuanlan.zhihu.com/p/122261766" target="_blank" rel="noopener">MonkeyLei:Arouter 里面如何使用fragment的 startactivityforresult 方式</a></p><p><a href="https://zhuanlan.zhihu.com/p/123121253" target="_blank" rel="noopener">MonkeyLei:Android-TabLayout-动态设置TabItem的背景Shape.有坑…….</a></p><p><a href="https://zhuanlan.zhihu.com/p/124077334" target="_blank" rel="noopener">MonkeyLei:Android 夜间模式实现(转载记录)</a></p><p><a href="https://zhuanlan.zhihu.com/p/129291792" target="_blank" rel="noopener">MonkeyLei:Android沉浸式简单实现(暂未测试全部机型,根据资料修改,模拟器,小米6,,荣耀做了简单测试)</a></p><p><a href="https://zhuanlan.zhihu.com/p/136035987" target="_blank" rel="noopener">MonkeyLei:Android-自定义乞丐版刷新组件Refreshlayout-想象着搞一搞,还未怎么看成熟的轮子</a></p><p><a href="https://zhuanlan.zhihu.com/p/136349063" target="_blank" rel="noopener">MonkeyLei:Android-崩溃重启实现-Activity栈的管理、CardView、navigation</a></p><p><a href="https://zhuanlan.zhihu.com/p/136351720" target="_blank" rel="noopener">MonkeyLei:Android - 关于主题Style, theme、getColor、ColorStateList</a></p><p><a href="https://zhuanlan.zhihu.com/p/139311491" target="_blank" rel="noopener">MonkeyLei:Android-BottomNavigationView(支持角标,加载网络图标..)+vp+fg</a></p><p><a href="https://zhuanlan.zhihu.com/p/138413781" target="_blank" rel="noopener">MonkeyLei:Android-自定义轮播Banner-Viewpaper2实现+贪吃蛇原点指示器+触摸暂停轮播处理</a></p><p><a href="https://zhuanlan.zhihu.com/p/137143417" target="_blank" rel="noopener">MonkeyLei:更全的ViewPager2的使用方式总结, Glide加载https空白问题(http也要修改配置)</a></p><p><a href="https://gitee.com/heyclock/mvvm_modularization" target="_blank" rel="noopener"> gitee–工程地址</a></p><p><a href="https://link.zhihu.com/?target=https%3A//github.com/FanChael/mvvm">FanChael/mvvm –github 工程地址</a></p><p>第二版实际项目已经完成,走路+微电商(电商的视频详情,购物车,收货地址,支付等流程均有!以及更多自定义组件的组件库,媒体库,弹窗库等)。之后将会完善模板模块(方便快速开发新模块),然后再放出:<br><img src="data:image/png;base64,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%0AHJAKt7rkoWHA4A2DMpP10Xjr+dfwW+1wLztWYHS66bvpQ2z1QCNyLwfC0fsS%0AMqu7MT5XK/t5uJEXO/7pr/twxsFa05pa+OQWrDsYgdx6bVmbecuJXMNYXxXC%0Az5/EWt34m8xhZe+C3du3y5+XHGKL4zvOGg8/rvkB4VXbCuh+6hEhdqnXXs18%0Apl2Hp9efhldeA7r19jMhhBBCbg6G2JRSSimllJpek4XY4uVxYz0tqKjugX4m%0Adn1qEkOdLahp0NW51jClGkZXaxOauke1rXmvYXyoF0011SgtF9ajsbMfvT1d%0AaGjpQu+oWg6Zu1uaUSH319rUpxdga1EPo6W2DmWif10vxqZmwtbRjhpNd61l%0AFbXoHNX2FC/AG+1FQ03jLQv2TBdiX4daNYT2WrGetaht6sGwPFlpOw/3oUXe%0AznVoaOuXto+m+1i/tK2rRfd6NHcPY1w/ox4fRJP0EKXbbk09Y1AsLy5aRlfX%0ATm/jut4JaUlmuH5tBK1yvxpU1kj7Ru4qbXfVIJrl7nWona6JPgWVdEw0yt0b%0A0Ng2BMOK4yp0l2Yi2sURwQk5aBpUG8xrsYgfWqqqajTL2zOuKTcz0j29DmUd%0AmqW8PjWO7nrNsldUt6K7vwe12mFKKxtQ1z4yUwpHLPugdCzJ/RvR2G687GoM%0Ad3fMjN/Qhb7+frQ2Ncqfq6X9MjJxTTqUu1EvPbiKbjUd0j5Rz72G1V7v4I9/%0AWoOHHt4F1xq9c1icm91NmvlMW4Oquk5Im4wQQgghJoQhNqWUUkoppabXdCE2%0AMQmmC7FXPuqhZuRfCYaTbTAS85oxNLth+N8OfXk4sf5V+UWaDx1KwpwNtgkh%0AhBCyrDDEppRSSiml1PQyxL7NYIi9eK5PTWB0eAC9vUMYGVPjbzHDrgk7he3b%0Ad+OVDVvxyKOiFfZ5hHXo/rSAEEIIIR81DLEppZRSSik1vQyxbzMYYpOlUOr6%0AFp56Slfn+jzCRDmfG6mpQgghhBCTwBCbUkoppZRS08sQ+zaDITZZChNDPejo%0A6ERrm3AI49JDMyGEEEJuHQyxKaWUUkopNb0MsW8zGGITQgghhNy5MMSmlFJK%0AKaXU9DLEvs1giE0IIYQQcufCEJtSSimllFLTyxD7NoMhNiGEEELInQtDbEop%0ApZRSSk0vQ+zbDIbYhBBCCCF3LguF2CqValaI3d/fj97eXnR3d6Ozs1MOsVta%0AWuQQu76+3iDELikpkUPsgoICxZt7SimllFJKV6IMsW8zGGITQgghhNy5MMSm%0AlFJKKaXU9DLEvs1giE0IIYQQcufCEJtSSimllFLTyxD7NoMhNiGEEELInQtD%0AbEoppZRSSk3v7BC7uw+j4xPaT+Sj5Jr0wMMQmxBCCCHkzoUhNqWUUkoppaZ3%0AVojdNzSCnoFhjE+qMSVuvBdySqEbXbJqyYHhUXT1DcrblBBCCCGE3HkwxKaU%0AUkoppdT0zgqxRWtgEWSLFsENbV0LWq/Qjd6YHT39mJAecgghhBBCyJ0JQ2xK%0AKaWUUkpN76wQmxBCCCGEEHJjMMSmlFJKKaXU9DLEJoQQQgghxEQwxKaUUkop%0ApdT0MsQmhBBCCCHERDDEppRSSiml1PQyxCaEEEIIIcREMMSmlFJKKaXU9DLE%0AJoQQQgghxEQwxKaUUkoppdT0MsQmhBBCCCHERDDEppRSSiml1PQyxCaEEEII%0AIcRELDbEHhkZWTDEbmxslEPsmpoaVFZWoqysTA6xCwsLkZ+fr3hzTymllFJK%0A6UqUITYhhBBCCCEmgiE2pZRSSimlppchNiGEEEIIISaCITallFJKKaWmlyE2%0AIYQQQgghJoIhNqWUUkoppaaXITYhhBBCCCEmgiE2pZRSSimlppchNiGEEEII%0AISaCITallFJKKaWmlyE2IYQQQgghJoIhNqWUUkoppaaXITYhhBBCCCEmgiE2%0ApZRSSimlppchNiGEEEIIISaCITallFJKKaWmd84Q+9q16xifmMTI2DiGR1UY%0AopRSSimllM7r4MiY7MDwqGz/0Aj6BofROzCEnv5BdPX2o7OnDx1dPWjv7EZr%0ARyea2zrQ2NKG+qYW1DY0obquARXVtSirqEJJWQUKi0uRf7UIOfkFyMrNQ3pW%0ANlLSMxVv7imllFJKKV2JKobY6qkpw5tv7Q04pZRSSimldG5FYK0LrXXBdXff%0AgGJ43dLeiabWdjQ0t6KusRk19Y2oqq1HpTbALi4rR2FJKfILi5GTfxVZOXnI%0AyMpBanomklLSFG/uKaWUUkopXYnOCrFFC2wRXPdJN+Fj4xNyoD2l/VNISiml%0AlFJK6dyK0iG68iG6EiLj4+OKZUTEzXhfXx96enrQ1dWFjo4OtLW1TZcSqaur%0AMyglUlxcjKKiIhQUFCA3N3fWjT2llFJKKaUr1VkhtgiuewdHMC7ddCvdmFNK%0AKaWUUkqVZYhNKaWUUkqp6Z0VYosW2COqcba+ppRSSimldImaIsRubm6eDrGr%0Aq6sNQmzdSx0ZYlNKKaWU0r8lZ4XY3f1D8gsddW9Tp5RSSimllC5OhtiUUkop%0ApZSa3lkhdpcIsSfVDLEppZRSSildogyxKaWUUkopNb0MsSmllFJKKTWRDLEp%0ApZRSSik1vQyxKaWUUkopNZEMsSmllFJKKTW9DLEppZRSSik1kQyxKaWUUkop%0ANb0MsSmllFJKKTWRDLEppZRSSik1vQyxKaWUUkopNZEMsSmllFJKKTW9DLEp%0ApZRSSik1kQyxKaWUUkopNb0MsSmllFJKKTWRDLEppZRSSik1vQyxKaWUUkop%0ANZEMsSmllFJKKTW9DLEppZRSSik1kQyxKaWUUkopNb23LMQelW7i65qakCrd%0AgEdduYLw+HiExcXJRly+jNjkZKRJ/arq6zEs3ewrTYNSSimllNLbSYbYlFJK%0AKaWUmt6PPMQeGR1FUUUF/CMjYe3hASt3dzj4+MA1IADO/v5w8vODi/R/V/8A%0AOPr6ws7bGz4REciTbtoHh4YUp0kppZRSSunt4Hwh9qh0HzxfiN3e3o7W1tZZ%0AIXaFdO9cWlpqEGLn5OTMurGnlFJKKaV0pfqRhti9/f2ISEiAhasrzjk44Ky9%0APc47OcHKzR12Xl6wlbTx9ISdp/RvD09YSsOZS/3NHR3lf4fExqK1o0Nx2vT2%0AtfJyBJzcw6Z19opGWH633jATGOqtQ2L4ZVwu7dXrbkL7q5EUHYPwnE50jyj0%0A/1tSNYTe8jTE5TUr9lf1tKAyLwtX65f4o9FgGZwc3XEiugq1gwr9TeFoH64m%0AB+OJC4moVOpv7GgjYiP8ccA9HVldCv0l+8tTsPmcDXZGzbfc1fA84YSL2X0Y%0AGFfqr1U9gcGmeGx82xL3CXfZ4Y/uWejRG0bV24qIAE88b5+GGr3uN2Y/siOC%0A8Yx7IhJbBxX6d+Oymyt+5pODlmGVQn9lJ0b6kRXpjJ8f9YZfvfIwy2cNfM44%0A42JGD/pUSv1Nb3tlPg76h+JcUbtif1OrnlChMs4N9x+IQpFCf53iXAz198Rq%0Ax4zFHyvD1fD39saRoEKU9Gq7tWRjm2Uw7Ipa0Gc8/A07KV23a+Bl64pjufrX%0A8znsq4dviC/We2agaFihv5F1WXF4xS4EvpUdGFPoL1t3GY8etsGxrAXOy8U4%0A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%0ABNhPP43vfv/7+Po3voFvfPNbuPvuu/HxT3wCn/7MZ/D5L3wBP/zRj7B2wwac%0AunhRbnlt6eqKi9L/Q2Jj0S7d6CvNi1JKKaWU0lslQ2xKKaWUUkpN70cSYosb%0A+S7p5jwgIgIbt23D0y+8gPcOHsTqV1/Dl//pK/j4xz+Oj33sY/jUpz6Fe77w%0ABfzzd76Dnz30EDa99RZOW1vLra/FSxxtPDwQcfkyWqQbfPFQoDQvSimllFJK%0Ab5UMsSmllFJKKTW9H0mIrVO86DE+JQVWrq447+SE948clcuL3Pfv/47v3Xcf%0AfvrAA3j82Wexcft27DtxAufs7HDB2QVWbu5wCwxEYkYGunsXePEVpZRSSiml%0At0iG2JRSSimllJrejzTEFo5JN/C1jY24nJYGz+BgmNnZ4f0jR/DW3r3Yc/w4%0AjltawszBAVZubnDy84NPeDjiUlJRWVuLYemmX2malFJKKaWU3g4yxKaUUkop%0ApdT0fuQhtk6VdDPf2tGBovJypEg34XEpKbiUmCgbl5yClKwsXJVu1pvb2jA6%0ANqY4DUoppZRSSm8nGWJTSimllFJqem9ZiE0ppZRSSulK80ZC7O7ubsUQu7a2%0AFlVVVSgvL0dJSQlDbEoppZRS+jcrQ2xKKaWUUkpNJENsSimllFJKTS9DbEop%0ApZRSSk0kQ2xKKaWUUkpNL0NsSimllFJKTSRDbEoppZRSSk0vQ2xKKaWUUkpN%0AJENsSimllFJKTS9DbEoppZRSSk0kQ2xKKaWUUkpNL0NsSimllFJKTSRDbEop%0ApZRSSk0vQ2xKKaWUUkpNJENsSimllFJKTS9DbEoppZRSSk0kQ2xKKaWUUkpN%0A75whdt/gMDp7ByillFJKKaWLtKOnX7a9u0+2rasXrZ09aOnoRnN7J5raOtDY%0A2oH65jbUNragpqEZlbUNqKypR1llDUoqqlBUVoGC4jLkXS1Gdt5VZOTkITUz%0AGynpmUhMScflxBTEXUlSvLmnlFJKKaV0JTpniD2qGsfQyNiCDip0o5RSSiml%0A9G/RweFR2YGhEdn+wWH0DQyht38Q3b396OrpQ2d3Lzo6u9HW0YnW9g40tbSh%0AsbkVdQ1NqKlrQFVNHcorq1FaVoGi4lIUFBYhN78A2bl5yMjKQWp6JlJS0xVv%0A7imllFJKKV2JzhliE0IIIYQQQpbG9evXZUVpPl15Pl15EV1ZkbGxMbmsyNDQ%0A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%0AmLuZEHuua5bEkl/oaIT+MhieI6YOsY3Oy9s5xNa7Vs8ZYouW2KKV9cJOKXSj%0AlM4YiWurHtC0VFbw2gZN62nlcY3UtsRW7Cepa4mt1M/Q+ZdpRrPpFtVzTucB%0A/f5VmvXZsGGB8eazSloPafwNZpiqUOgnTV/6JpqjP6WUUnprnRStsCUnpPvp%0A8YlJ2THpIVo4MjqG4ZFRDA4NY2BwCH39A+jp7UNXdw86OrvQ1t6BltY2NDY1%0Ao76hETVGLbELi4qQX1CAnNxcZLElNqUfmQyxbzzclUNIxcBHF8gYBdF6aAJx%0Ao6BFh9Ky3WCILdDMa3HB6nysjBBbEx7NFeLNuY10IZ/e/tYEacb7cI7pKzDX%0AenxULHUfZGRk4OGHH54Vos7lXXfdJQfdDz30U/zq3vvkciL3fvcpHHB2lltu%0A/+aHq/CJTyqPe6u8+8ur8MFxTWis1P9G/PjHtK25v7kKTz6/StqG0r/vUR5W%0Ap2jJ/fWfr4K39yppu6/CcWmZRD1vpZdN3v3Zz886v/VD3uljdslBrhEj1YiV%0AW2HHonpE222JKAXSGpY5xNYP6Y3OuaVNawnd55mnQT+9/TNniE0IMRUL1Ide%0AdB1riVk1sY1Y7LSqF/nCxoWWfaPUT2l2YjlFHWvpC0N+IaN4MaOBUv8ohRHl%0Al2HO0U8fMX152trpL/RiTEIIIeQjgjWxKV15MsReOGycCzmENA6DBNMBhXHA%0AqUMbeCiNKzM7iL6ZEHsmIJo7VF8MKyLE1u4b4+2oC7Lm3r6zt6tmnNnbVF6O%0AOff9DHdaiL2UAFvn/fffj5987yuK/Rbj3d9cBTMzTR3p03/QlM0Q5mtbSwvz%0ALWa6a0pqGHZ7SPq3btjgHTPd/+OpVfjUXcrzNZVf/eoq/Ne9mhB7oRIjYtjd%0AW1fh8Z+swg//8+f4+rd+gn/61r2Kw+r7zXvvk9ZH/1jSne9ap68z+kGr/nE7%0AV3dDbuaFjjr0A2PD65/+Mi9DiG3QT+881w+TJU0aYhvth5lryxzdpWURR6kB%0ADLEJMTVRwMZ5XkooAtnFZrAi5J0vpN74oDTMIkPsRb0oUVowETgrBtXS+IuY%0AlXSHLw0rTUdoLo0zK/iWPojuwsVMbxoxnjStxf4AQAghhHwEMMSmdOXJEPsm%0AQ2xtEKFRhBfaMGPHAaOwVBtciOBmMYG08TA3FWILdCHLjQfZKyLEnt4/esNp%0A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%0ADxYt3YyV67KwduMem5XL1mPOiiykb+DrDMyenY7ZK519JH3DdsxbsB4L95RZ%0Abe5Dd0UZsk8ewMr0DCzfdgbX2nvQWVeJY5u5DvdOZOZcCWqLQzXyThzB8gXr%0AsHxXHkpv9iIwxANNKDy2H4vnDT7YkWm/XIi9B87h0s0OmO5Qrp46ik1HL1r3%0ALyKxJWMfkdiCkHyIxJZIJBKJZOyTchL7719ZgE/utD58M3duo7vuOH744jR8%0AeEEOmqLpdkcdDuUfx1vnb7gbelBVcAzfeWcBHttRhAb3dLbEfu893P38GqSf%0ArILT8hs4tHIlPvaj5ZhXWIsO2t3+NhRkrcY9r8zDu6ca0awMQ2seprw9Az//%0AwW4U3hwU3qblRDiT+tLpXZhVqD7ud6PuSg6ee2EOPru5CErP+y0nEiKxBzpx%0A+WQWHnx7Dr67owyX1SS6jotIX7wYf/TuFqy7eBPOM9Mcif3Pz87Exzblo6bT%0Anct9dS/+5qm38Jm1peiU6dhauK71RCDLtJh1lOG62NEez4c/DuNUMSXh2mWd%0AIFx77LXDrXZIEjhVyMk6hI1b9mG9gXWbKFnXYu5q8/71Ww4g8+B5lFs/wwZ6%0Ae9Fy8xaaO28aJXZfVyea6q7iTPZxbF6/yz5+TfoObLKOz7/SgIa2Hn+ZHZXE%0A7sTFrM2YseQoKu/csX5HNqK6pj6ImtoalJfnYPW8zVix6TDONrTh+qXj2LD+%0AGE5z5rUrsWcs2IIla4P7umbNNsyfvxazlmVi5UbPvtVbMHu5/mBHJ7bEzjiD%0ABs6qttJ1qwklB3ZiU671893+P24qcXSj9fM+uw419h9676Cvpwq7V7oSW2Wg%0AGy3XcrFj5wnklNai8fI5bNPO788uLFuzG/tyr6LFHduBpos4tG0r0mZlIPNM%0AOWq6ezHQ047G+oaQ8TJR29wD++++EskYRiS2ICQfIrElEolEIhn7pJzE/vCU%0Aw6jTF8W+3YebRRvxF0/Mx9Jr+sf7GNJ8EfNXLMZ/LDqKc+4DrWyJ/eI7+M81%0A53BB+1/R24v34osvz8DT+y6huhvoqz2KJ1+cice3l6G60zODrCoLdz/+Nn6Q%0A3RqQJ9Guid3fUovMNfPx8Xd2o8C9nNFK7P6mAkybuQAPLsnGKe9CsHU5eOS1%0AaXhk60VUtrNRjsT+ze+swa66Nm05kmbsmP4efu7HW3BxwM/8pGgq0qzvPMPD%0A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%0ApjgPh85ewtVmu9JAwi0notJyIQfrNhzE+Vpn+SqjxObs5oJyXCi5HCBn28Yw%0AEvsOOltu4OCGzVi9r8T+fXe78yYqTuxBesZplPFihZPYHVU4e+AAdu7LRnZ5%0ANa4396ItRGKHRpYTkSRyRGILQvIhElsikUgkkrFPyknsT7y3Df+2NAOLDuZi%0A0YGzmLNyHv52xm6svEijHClduHH5NN58dyH+6YNtmMk69hzCpPQV+IeXpuJL%0AQ5HYVjqunMNbC+fjP5YewbS9Vp2sd/tafHfaNszKbUSPtv7J7ZYCTJk0Gf+R%0AnoulR8/j2PU2tF0/g0nvz8JvT91pHzt/3wm8tWYV/uXV6UESG/0tKDm9G89P%0AXYlntuRife4VXGzuC5XYVrprL2LZuhX4+oKdeH2H26ZdW/H83C2YfLgSNQFh%0ALRI7NAb5qqDIDXw9ESEPUuRyF94lLex9Vjm1/AUFLOuxlwKhjKWUtb62w6+t%0A420Rzq89slaPdzmOWCV2XNoVZh8lOfephzpGihLedjsteLyaxc3Xet/DzdqW%0AjG26G5C/KwNLdpahKPcIVq7cg+wLlbjePTSJvTe3AqWn92LZyr3Ynl2BwovV%0AuF5TMTyJ3XgFJ09cwKX2bvj/9hyU2HcG2nDlYCbmrDuFG7iDnvYGHFm/Hosp%0AsC9WoTQ3B5s2HcSxwiu4dOoENm89glNVTe7vN3N6aspwcHNGGIndjsqTh5C+%0AJQdl9e3gb0ajxF6xE7v25WDvwVNB7D95CW0miX2nF6211nVYlYmMc1y7ux/t%0ADRU4tHkHNqmHA4eT2C2VOLVnDzJyKlDr/sFUJLZkvEcktiAkHyKxJRKJRCIZ%0A+0xw/w1kxCR2Sx32zXkaX3tnK/YdOj4s1s+fgmemrcHuUvOa1Z3XzmPa5hwc%0Ar1Oz4OqQnXEQy3Lr0KaW6Ogow8r03ciqGsDlk7vx1LJdNt9fvQ8H+b87R5v+%0AVlwuOY3J7vFPrTuK1XkXcCY3B+sPl6LcFdM3r5Vh2YEc7K4MXoMU3dXYv/cw%0AMs7Xo1H/7N1wAe9t3htoF8m43I1er/+1PhQ1FR2y9z9jtX0NTzjQg/ryE4PH%0ArjuEabmXcLEoB+/sOo9y7XlYfdZ1OXR0v13utaw8nKzrRk/TNWTsP441+TUI%0AmtzXXIn0vQcG67VY4W036nEi8xCWn7uBFk9j28qO49mVp1ChLd8iGW4qHBkb%0A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%0AIXTY5XLR/YkJ6N2oHxsZ9UEskVAfEkcC9cEz0dA/HCcjXhmQjHgFiCCMBEp+%0ACuMPCi4145rSWi0bQnR5ffnyZVuC6WtgU4hxCRHOwI4ksCnMvKIt2dHvr/T7%0AF/13vf77x+/7Sl0j/VoR73ZV3lsP61bn4TnV+dkW1S69raa+COMLXkdeX157%0AvjdSSWLrAptCmvzwlZ/gH7/wBfzp//f/4ff/4A/wf/7qr/CPn/8CvvHII9a+%0AV/DB3LmBWdmU2bNWrLDl91RXZJvOI8RIjDOSaw9vDiuxR2Zms7/E9pfUhdhg%0AnT9qiW1h92WE2mzPMI9aiMeLemSvW4zF67JRb9wfGc62DhHdddm23A43SzsS%0A9uxok8T1w1fuujI8aL93myOXv5xVo5WJFldMxyiXfcV6QHiHMmYzxgUbkdiS%0AlEi0EjsagW2S12El8IaHgIc2GPe1vvMJ9G4I3W5mgyOxzw1u4wemtm99ArC2%0Ad51RwvYMuj4xAT3r1evo0MXqcFAf6hINJRwTDe8H40RAfWhPZryiQvBHyR1B%0AEKJDiWvOuNblNamsrAzMvjYJbLWECAU2xZhaB1stI8J1sA8cOGDLst27d4eI%0AtmREl8HhxLX+O1X9nNevCa+H6Zr4ocqp41iHqo918xzqfDw328C2qHaxjSK0%0AkwdeO15TXmtef75HUkFicwmRQYG9HPNWr8Zb06fj//3zP8d//5mfwYQJE2x+%0A6qd+Ch/67/8dv/TLv4Tf+/3/hb/59Kfx7ae+i9nLlmHRunWYvzods1euRNrS%0AZbbI3n3kiPF8YTm7HPd+/kGL5Thr2m9TiBlWmacybhj2ReIGtjxrOtapk+ee%0AcVbfHszZWVaZZ/f4iq/w+J07DCM8EzveEtvYHo3BY4Y5c1oRpZgecYlti2P/%0AWdNmXIkdlWwe7oxuRRRt1JbZCC9tXRkdbskR05Ikbv36Eh4mqRwdIrFTBZHY%0AkpTIaAhs9aHFS/Pbn8DA22cCr3Xhe8va17M+WAL7sx49Ez6BztOD226uewsD%0AH/8Wer5lfSt/a50rbE+j8+MT0LMuVOSGQ0nV4aI+0CUausBMJJQoHAnUh+tE%0AQskcITqULBEEYfyiS1LOuiaU14Szr73Lh+gCWy0hQimm1sHmLOxjx44F1sHe%0At2+fLbCzsrJCRFsyoYtfr7zmPZC6d1G/49XvQfWzVL8G6o8HHH91DRQUkTr6%0APlWex7IO1qUEN8/Bc/GcPDfbwLawTWwb28i2isxODnjNUk1i8yGOXANbzcCe%0Au2qVLbEfmvgEfuZnfzYgsE38tw99CP+//+f/wYOPfhvLNm7CYorsdEdkc51s%0Arqsd88MeAxLbYpbfEg/Dkdh+xw5K7HACfXgSewjtTqiZ2M5s6lCZvAcFcZiJ%0APZKMpMR2ZkNHKYiDiEVijxK6YHbXsvabIa1ma4dbTzpUDKtlSryyeGgyWiR2%0A6iASW5ISCSex/ZYRiSSwTR+mFJTLnW+tQ6v1b491I6cLZSV7yc23Po7udcES%0A2J916J7wcXScsr4+tQ4d3/wmuteewk1b0p5Cx8e5T309wdoXLHEjoYvV4aCE%0AaqKhi9XhokvHREKXKMNBCZhEgx8YhehQ4kwQhNFHCWuTNPXK6+LiYhQVFYUs%0AIcIZ2LrAVsuIUGDv2bMHu3btwo4dO0JEWzKgi95oxbX63aXGX5/trsacM94V%0AHH91DUyo/foxrIN1KdGti22em21gW9gmto1tZFvZZq/Q1vtoGgMh8eC1SjWJ%0AzWVEKJspneesXImFa9bix6++ht/7/d/Hhz70IRvOwP7Zn/1Z/NZv/zb+95/8%0ACX79N37D3k6R/dM//dP4nd/7Pbz+3vtYvnETFq1dh3mr0+2lRbhG9trMTON5%0AfbEl9uuYMet1WyibZ0XHT2I/NWs5nrL+9RPo411ihwroaKGoVvX5z8QersQu%0AyNiM/bWGfYV7hrVu9UhI7EF5HcMs5yBildhu+aBzBrOzxClrt01bpqRkl7U/%0AwnkcseuR1q7UDhbZUczAtnEEc5DkNszCjmqfLzFIbLd+E+yf6n9YRGKPGSKx%0AJSkRk8RW3wSxCmz9Q5X3A1UQp95Ev3UD1//NtUHbdeHb/F/W/jdygrb5s8aW%0A2N1vvIF2i+Y1a3ArPT1Am7Wtzf76DXRTYqc78jZadEk7HExydajoYnW46DI0%0AkfDKx+GgS5REQcmcRIPyIZlR4kwQhNFHCWslUJVE9c68przWZ1/n5uYG1sDm%0AEiKRBHZmZqZRto1XdLEbSV7zfkP9bufvGv7cU2OuC2uONcefZXgM62DdvJ/j%0A/R3v94j+f+AR7mMZluUxPJZ1sC7WqYttXWqzDNvEtvEYtpVtZh0is8c3vEap%0AJLGrrD5yGRHK5lnLl9vLgXCN63/7j6/i5/7H/8Bn/uEf8MMXX8K3v/MdTHr3%0AXSy1PoOsy8jAgmXL8IPnnsM//t//i1/51V+1RfYf/vEf48XXJ2HZxo1YtHat%0APaObM7u5rEi1dR7T+Y24M7FnnHWW3jDPivaTweqYQXQJXpPhiPFgVP1OnZTX%0AqpxJoIdI7Ot7bOkdWtZti1s2/LnDMBT57CuxfQRxzPhLbGN7NMJJbLUGtqlM%0AQeEedxa4LtOjZ8QktiuKjWtTR2RoEtv4sEZ3HeyhS2xHTBtnXbszsm2Bq74O%0AM2NZoaTwoJSOLJydYyLJcZ2hzMRWEl5mYo8nRGJLkj4mgW2aha0LbBKtwFYf%0AqLxSmDScCN3GDzWKm//112hbHSyB/VmN7r+ehJvaNpP4ranJxs0HH8TNbNM+%0Af5TsHS66oB0uXkk7HPjBcqQwSdGhoovHRMEkZRIBJYYSDX6ITTSUOBMEYfRR%0AwpqS0zvjV8lrzrxWs6+VvObyIeohjlwD27uEiC6wt23bZssyk2wbjyiRa5LX%0AahIA76F4v8L7A/4u5u8r/gxWY67Gm79beV/G+pScHmlYN8/Bc6kZ22wD28I2%0AsW1sI9vKNrPtqh/hZLZpbITEgNcnlST24ZMnMSUwC3uVPQubfP6L/4pf/83f%0AxHvTpiHr0GHsPXoEB44fwyHrZ5biSE4Olqen2+U4I5szsz/1mc9g3oqVWLph%0Aoy3D1WzsI9bPPNP5jQQktvW1K4hDZ0WbJPaghA5sc+sylfObie0c7y/Qhyqx%0AnW1+5x4F4iWxWa89Q3p4M7GjfYijLaO9/eAsbVtwD5foBblZYo/0OtbxlNj+%0AGGcoR5TYrly2UBLbWX4k8rrXTrloRfYQJLYS8VG0RUgcRGJLkj4mia2+AaKZ%0AhW1aQsQrsP2Fcihe6Rstutz1wytuY0GXtMNBF7TDRRerw8UkRYeKLjATCa/I%0AHCq6jEkklBhKNNSMvERCiTNBEEYfJay5VAgFlxLXSl5z5rX+8EbKa335EMow%0APsQxksDevHlziGgbbyh5y/srXWDzHouy0CSv+XuYv6v0n7+8T+LxXtk8WvDc%0AbINqD9vGNrKtbDPbzj4oma1mZusim4jMTlxSTWKnWz9npi521sLmOthc03rl%0A5i146tkf4L4vfAGbtu/Abj5olv+3CP+vEevnV7b1c+zE6TP2v3MXLrTXxFZr%0AZP+v3/99vPr2O1ixicuKrMXclauQtnQp1m3fbjy/EV1iW6/Ns6JDZbDfMh+h%0A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%0AkrzqnskrsDnLmOW84tYL62FZylzOSubxvN9SS2yoWdcmcc36FWyXjqnt4fAe%0Ar9et+uoV2uo+UU10YNvZB/aFfeJxpj7rsH6WNYlsnktE9ujCMeZ4p5rEJmsz%0AM/Hu7Nn4+899Dj/zMz+Dv/2Hf8CXv/Y1fPJv/xb/6yMfwV/c9Vf4nd/9Pfz0%0AT/80fvbnfg6/9Mu/jJ/92Z/Fn/zpn+Lp55/HgvQ19gxsCmw+zHH9jh3G8wiC%0AIAhCJFJOYv/NK0tw/6ErzrY7t9HTcBZvvjUDvznzCGp81tzW40js6fi9p+fg%0AuW0nke/cK1j1VGJF+lL866xMrC9vgzOCN1FwNA+nimqhFHnntWx87/XZeHp7%0ACa50OHLaltgvv4/7X9+NEw0dcJpRjW2TZ+CXf7AGx5p74ZTMx1vfeAN3/3gh%0A7j9+zd6CgR7UFm7Hp74/Df+54zJs/Wxtqyo9g++/NxePbyrEdbtgJ2qKj+PZ%0An8zDl9JPo9pqoCOxp+NPfrQYU46UoCq53HUgYyexKa35AMa73AcsBi+LoZYD%0A4UzrgKwOJ7G/am2f9+vYvuHPbE4+5JHYn/iwtY3y2t1mwVnZwW0KQ4wSm8t8%0A6ELYf5kOwrrvwnrra/uBjFHLYspvZ7b65PtiW/t6EJ7f51yciS3LhwiCIAgj%0ASupJbF3whhPYlLgs5xW2Xnh/xZnLPEZ/0CGX7NDltUlcq7YQU1tHAv0c6ry6%0A0NZltlpmhH1gX9gn9o19NPVdh/X7zchWIlvvs6mtwsjA8U1Vid1hfTZKz8jA%0A1x5+GH/2F3+Bp378Y/zo1dfwK7/6q/ipn/ope91rBUX2L/7SL+HuT38aL7zx%0Ahr3+9bxVqzF7xQp7BjYFNj9rmc4jCIIgCJFIOYn9B2nZaLytLYp9uw+3Srfi%0AnolzMe9St7vRP47EnoY/fXMz1nmWN7lVfgbPzlyIJ3ddQJ3vEF7HzvlL8KUF%0Ax5BT5xxvS+zvTMFrp+pxy30OJdN2ahV+/dEPMKOsG312k/Px5jfewP94cRcG%0AR/U2OluqMP+d9/C/39+PKmtLf2s9dm6cj7umZCF/cPUQoPM6dmWuxpcn78Du%0AG32uxJ6Kj0/fjayayH0frxkLiW0vgUFRay9VYRCo9ixsRxgHSex5Pw9MzMK5%0ADb85uE1JbM7EbjuAS30n8MyhvzTOxGa4LyCx35wQ/czqYc7EJpT2QxPNZij6%0A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%0ASoSi1vfBjqZQ2lIIZw1irxWtSdhwS26ExCoXSeDakjeCJNZjfc8Gx3rN9apj%0AXZeaY+Nde5vxbp9o1R2pu2qcTU3g8bJmtkQSFF+JLZEkQ+7cuWNz+/Ztm4GB%0AAZv+/n709fWht7fXXluwq6sLnZ2d9lPg+bAc3qyqDx76rBn1YZMfHvi/cfLm%0AlR82+eHDe7MrCIIgCELqoUtM3kcQSkZdZCaLxCZ6X9lHdc/EfrFP5eXldn9Y%0AziRnFa2trXY5wvsrHss6uFwGx4v1emdlK2lLTG0bTVQ7VLvYRn32NfvAvqhx%0AYR9Vf9l305goWC/LcSzVuHCMWa8I7NGBY8txFoktSZkYJXaFWbbasXbwYYj6%0A/izr+ICE5X5K2axByc1ZyDzGd7ayVcZ+uKT70ptYJS/Le+VzNKLZmyBZbZ1f%0A9YfraN+jifxAf61tfOijqa1+QpwZStskkiSP9V0RHJHYkmSKSGxBEARBEEYT%0AXWbyPoIku8RW/dWlrS5s2SfOImY5k6RV8D6M91YsS2HLey2OjWlWdqLIbL3/%0A6pqzbfr1ZtvZB/aFfWLf1Kxq9tk0FgrWzbIcQ13ss14l9cey/6kCx5bXViS2%0AJCnDBxYq8aqgkLUFsraNUpXbjN7Y2hhOYptkrS13LcKFs7f9JC/3xSKxTeVt%0AEa71UfWTMtovfuLZuz0aCS0SWyKJKdZ3RXBEYkuSKSKxBUEQBEEYTZRMVPcR%0AJJklNtH77BXZlH28Z1L9YjmTrNWh8GX/eYxaXoTjxPFSs7IjyWxiautIoJ9D%0AnZdt8MprtlW/d1TXl31jH01912H9HDMewzHkWIrAHhs4vrzGIrElKRPK1ViX%0AEwknse2lRKzXASnL8tFIWquA30ztkZLYUYli6zgludWMa1v083i3To6ZvgQK%0A90dqni6xrZ8pQTLdO3Ody6f4CW+JJEUiEluS1Im3xFb/i6xIbEEQBEEQiBKK%0A6j6CJLvEJnqfw4lszipmOZO01WE9LMux0Gdlc7xYpy6zeS6T0CbqeihMbQ+H%0A93i9btVXnptt0K8v26iurX7PyD7xOFOfdXguNQPbT2CrvrKsqe3CyMEx5niL%0AxJakTEZUYlPAUr5aX1NkM7bUtrYPJ/GW2JTKprBfXpls1+3K5iCssiGz160X%0Aan9gCRKOt9UWfUy8bRuJMZNIxnlEYkuSOiKxBUEQBEEYTXTZyfsIkgoSm+j9%0ApmRV/fWKbPaP+03yVof3ZjyOY8FjKA05ThwvzmRmvRxHnoOYhDZhm3TUNYqE%0A9zhVn0lcE7aFbVJLh7CtbLO6ntzGPpn6qsP6eYxJYPN8qm+qL6ZrIYwsHGeO%0AOcdfJLYkJRJWYld4pCxjbaDE1kWuksb6jGRbAFvbwy3XEW1MUtornlVbiP2g%0ASatf+raQdbpdWNZvHWvKZaPENpSlhQ43e1qfie2NSGyJJCQisSVJHZHYgiAI%0AgiCMJroAVdIzlSS23ne9z0pks5+8f+IsY46BSeJ6YZ0Uhmpmsi6zOX4cR9al%0AZmcr2auENqH41cV2tKjjVD1ece13LdlGtpVt5tfsg6lvXlgXj+EYsR6vwGYb%0A2C4lsInpWggjC8eZ485rwGskEluSFPGKWx17qYx7zPsofk2ziznLmtsoW61i%0A9lrb1vdJcDn3eF+xaxUOnIttcEWuad3uECltfe2dzRw21rnSrGOC2hcpVmG7%0A/Ty321/GFsx6W7Q2icSWSEYs1ndFcERiS5IpIrEFQRAEQRhNlFhMRYlNvP3X%0A+00Zy/4qyct+su+8FzMJXS+8J1MCXMls3o/xvoxSkTOgOaY8jy60CdtAWIdC%0AXRcvehl1nF4X6+Y5eC6ek+dW94a6vGZbWYepL144BhwLjgnr4BhxrERgJwYc%0Aa449r0NKSOzWYmTMW4E0P9bn4+aAW1aSnLHlqiZpY4mS2CGxKqN45hrSLGNL%0A8nAnsCoJJ4BZh3H2c5hY37dBoSiOpQ57XKzzsl32bHXrax7u25YIffCV2FZd%0AlOUisSWSoIjEliR1RGILgiAIgjCaeCWuErlEydBkltjEOwacyazup5TI5r0U%0A+6ukLe+/THLXBMeRx1AU83jej7EujqES2jyHLrU53hx3r9wOhyrPY3VpzbqV%0AuFbXTd0TxiqvCfvO/vB41sV6eQ4lsFmXmkUuAnts4Hhz/FNFYufNexj3Pv6B%0AWWDPW4wXHnoY9z21Bnmt7gGS8R/OGNYfSmgL2onui2hCWasLXet10LIb1g59%0A5jJjC1yrDEUwZzGHOGDWqY43JGaJbZXl+fR+emc7q3AWtSn2Odlut13qeFsw%0AW9uGPBPbalvIce44qm32gx3d2ekisyUpGuvdHxyR2JJkikhsQRAEQRBGE6/A%0AJakmsYl3HHSRzb6rdaN5P6X6zH0myesH66ZM5FjpQptykfVyTHkOltHFtpLb%0A4VDllLAm6jqpGde6uGYbWIZtMrXVD/aZdXAMWC/PwfNyjLhPBHZiwDHnNUgV%0AiV27+wO8sLvBfWXIwHXsevMp3Pvld5BR5W6TjO9Qwuqy1U9iW+97c7IGy7Mu%0A3bFyKRB79rK1P0jUWq+5zXdJDx6ntcmbWCW26YGMJomtljHRZbcd67Ut2y1U%0APWo87D67XwfVyWO89WjR6wqKdQzboP4wIJGkQAoz0jE1o8h9ZY5IbElSRyS2%0AIAiCIAijiVfeklSU2MQ7FrrI5hiw/5SB7Ls+EzmWWdmE93Ksl/UUFxcHhDbH%0AUklt1qvENuG9nILjT/RtqhyP4bFKWqvrw3PwXCzDc7MNprb5wT6yXtbFulkP%0Ax4JjwrERgZ1YcNx5HVJFYkeXTlxY8gru+/yDuDcsTyHtfJ97jCRhQ/GqC2Fb%0AYlPMZg1ir5NtlTNKWUpXaz8TkNhWfRTUtgy28MpaX4GrYjhGT0wSm3UZhLBX%0AYtv99oyFinpAZdh2WwVM57F+Xhij10XZr8S53Q6ez/pXZl1LUiEX9mDqrHRs%0APHoD9e4mU0RiS5I6IrEFQRAEQRhNvOKWpKrEJvp4EEpZfSy8y4uo/nN7rGKY%0A8Bieh2NLyUjRzLFUYpvwHEpwm1D7VXk105p1sU7WzXMMtX3sm2oH+8y+cwzU%0A8iEcG44Rx0qNmxpH0xgL8Ydjn0oSu7dyF1549Fk8YOQVTDnW4pa0ynZ0or3V%0AnwMfPIh7Zxe7pUNzY08aJjywEjnuayAPbz8wCROW5rmvrTTswlesbW8Xuq8T%0AOKH9GQ+heDXJXFdKRxXrYL+Z2HasDWMpsf3K6hLb7jPbbqrTKqSXU+3SJb+N%0AW4e+DIia2a3LaEpt7uMSIablVNheu7y1UWZjS5I99dlYPCvdltiREIktSeqI%0AxBYEQRAEYTTRpa1I7EG848Lx8N5jeWdlE5YxyeBo4X0ez8ux5zl0Wc4xVnJa%0AyW6iy2Uew2NZx1CktQ7rUf1iH/XZ1xwDjgX7y7HhGIm8Thx4DXhNUkVi581+%0AEPe+vM36mZMfwoFNafjK5x/G40uK0R7Fwx3bq4pR3ui+MGT0JbZTf7yE+FhL%0AbPv8r+7CDfd1VFHyVn+Q40hIbCVq7Tqtf4cjsVnWK6GjktjW9f7i51H2vKmc%0AtY2CmG21lxqJUhaHa7caN85A9w3PO8HCKucnzCm92S77JdsWrj6JZDznBg6s%0A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%0A5A8KTN9Dic14OpTYhLgPJbZ346TEPiJu8Cf5e2Ev13phS+697358/i//EuOn%0ATsXuw0ew79hRHDxxHIdPnvRz9PRpxK5cqU0nLwJlz+zv/cd/YM7SZVi8br0m%0Aw43e2EfPnlWuX4lfYovXuiAO7RWtktgBCe0v05elms6uJ7ZvfnuB3luJ7Suz%0AW/c1wC2JLZer9ZDuW0/sSB/imLJFimzLdshe2prgtmfy9BV+JsUs15g4bZnG%0AhE9iMWFqLMZP2YazYSS2eUxstcTehJj33lN+JxNCnMcssUtLS1FQUKCdn5mZ%0Amdq9wFnxb8/Ro0exZ88e7d/NgRT5nRIbG4uRI0dqIunGG28MkS9u0Zfej48+%0A+mhIL1WnkL0mVevsC5T/5HoTrte/7OGtOhfC9XqXP+Jdz8jvLlW9JKptGTJk%0ASMh2X0txLtuY6XsosRlPhxKbEPehxPZunJTYK7duxRR9LGw5DrYc03rZxk0Y%0AMfK3+NFPfoIN23dgz+HDOHj8OI6eOoXjZ87g5LlzOHUuTvt79vz52pjYxoXg%0A33z5yxg19mMs3SCHFVmN2cuWI2bxYqzZvl25fiVmiS3eq3tFh8pgu2E+Qssj%0AkdjivY1AvzYSO7JezZHgl8YuSGxtHRE+WDEcAYEtRbdNT2tT/cP12LbD6Qc7%0Asic2Idcf87kqJba8N5D3BfKeIC0tDefPn9eud+S42P0l8vvEKnSk+JXiRspj%0As1yJFrMMsw45IR9uaZZJEub6R/5vAet+6a9cq6E5rgdODoXC8Z2vXVTtb4e8%0A3mPcCyU24+lQYhPiPpTY3o2TEnum3lNa/i17Ti9auw4rNm/FzEWLMeLlkdi4%0Acxf2HjmMXQcOYO3GjViyfBnWb9qEPfsPYN+hQ3j/ww/xl1/4gjaciBw3Ww4t%0AMvT557F0/UYsXLMWc5avwPTYWE2Qq9avxCKxJZo4DuoVbZXBYeSwtrwPsKnI%0AKItQYkvs6uK6xDZQ9272Sdwoh9VwSmJrywkW5IZUjpxAPXw9q/Ue2PqyVXLa%0AN51pm7Xe15FvDyU2Id7DKrHleSrP0UuXLmkPdzTGxZZDirgZs5iWstgQY0Yv%0AaokTPaml5Ja9FuWyZe9yyjKGYRimP4QSm/F0KLEJcR9KbO/GSYmtPdBx0SLM%0AWup7oOOS9RsQu249ps+bj6eGD8fr77yLCVOm4PW33sIvHnkE//ad7+AnP/0f%0A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%0AN808jtx6fcDtygN4YthH+DChDZ2U2IMmlNiEuA8ltndDia3K9ZTYob3Lo08/%0Alth2vb4HWCixCSGEEEIIcR7XJHZrTQl2z3gZw5ZniIt0eaFuorEB5VfTsSN2%0AFl747SeYsTMDxTUtolxNY12TuNhvt5XPoRK7FVXFFUivbNQEuRZK7EEZSmxC%0A3IcS27sZnBK7B6FqkbLhptU+U0jsUIEcgcS2k8FRJ1KJHV072NbPrjzi4UQG%0AXiixCSGEEEIIcR53JfbMkXh67WW9JDjdXR1ori7A6W0r8MZzI/HY0Ffxq2F2%0AvIbXFxxEYok+NIgloRJbEUrsQRlKbELchxLbuxmsEtsYukMljK3L8L1X9ZD2%0AyeLg9ellIb2b9fJwElslunuVyCV2NO3QV4ltTKeq10ALJTYhhBBCCCHOc90k%0AtpbuLrS3NKJSXKwXFduTuGMh3pqxAjvTa/QZgxMqsS9jzYTFGLnrMipb9CFI%0AzBI7cyu+OnI6vvqy4NXZ+M62TN80EaS18irWrF6JISvOIzEvHRNn6ssRPLr0%0AJM5W6BOaU5qEN+ct8k8neWVfLq426p/L1CVg3IQFmHq6EjWZ+/GDUbMD069O%0ARlMHH2rZm1BiE+I+lNjezaCV2CK+XtQWOa2UurpcDlqur+yhUaHrC5XexvyW%0AOqjkr75+qwSXy1SJZnWikNgiEbdDXyW2iG9dqvYN3Wf9OZTYhBBCCCGEOM/1%0AldgRpvDEKoyauQzb06r1kuDYjYn9y/UXUdYcLLEf+Xgh/mb5WeRX1iK/ohpZ%0AqZvw389Oi1hkt5TmYP686fjKC9MxcuVObM6qE8uqQ1byKbw25RP8bPEpnDOJ%0A7PyEI3h6zHQ8sykep4p80+an7MX/fjQT969JxsUavXd5jZj/9Ul45IN5+LvY%0A4zhbUOGbNnsX/u/5yfjyqmS084mUUYcSmxD3ocT2bgazxJbxTe8Tqz4sMtcf%0Ak4jWkSI27PqCptXn70liy+jl5vmj650dncSWiagdHJDYMqHrGni9symxCSGE%0AEEIIcZ5BJ7E/8+4WJDToD3sU6W5vQPbhxfizl5Zhr3rxQfFJ7Mm4+e0ViEks%0AR6veQbq7sx3Z5w9j6Puz8OKOdN/NZGky3poxQxPbp0s7AsOYdLYh7/Rm3P3m%0AbHx0thCV0mPrEvumN9dhR2EN2sTNj5auNtTGrcRnnp6AKWnqB1sy9qHEJsR9%0A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%0AB+byHiS2FED6fox83fZoQ6AY63ZAfvqRIjJkWyPveasWWKFys2fR5WtPrc3s%0Atk1rU58Mk+0hf5gIns744UG+DhVn1nbRhuKIaN+YlmWSg3aiM5wAdXo/OjVN%0AgNB2sz0epFS1lhmIbQu/TjuBaSGMxA73Y0cA47gS+1oeL7LNg47D0O2V+Pah%0AOJ7kcWY9brXj0LlzW0lP8j4IsY3Wc8H22AreXuvY5GbU52wvzu2QNjewOwZk%0AHSM4NgghhCgR/0IFhxKb8VIosQlxH09JbCPRiGyjx6cmEwXmHps9xiTNpMA2%0ArzMSzD2Y7/i6eH9rsLA1+ImY9oWVPnF7n2nIESsr5TSB9+VbtuuvRfl9Yhnm%0AHtCy7B/1MtlDWrXeD34JfEnWVR/K5NFHA/U1sPZ+v558+tN6W/4L8MXP+cq+%0A+XDodvnbQEf2DpfTTjDaRbz3t5F4LX8ckTGksq2gFseSNm63mE4bm9tOEkcY%0As8QOei3q6l+2XK/4TBP4YeytUxJbm0+2t6k+Tsap8zFcnJDYsif21qFiObej%0AbXPPErvo/dvQNuqwKxJbjsssZVn7ELHtfhnjk2P2yxXL0eVZ32WMXJZJSNkK%0AKh9hpaW4JmuSPVI1OacQWJqgE+0lPpPj0mriz/x5L+lRdBmy0W67tB6g5rbs%0AYXqLrJOEtotvX/fYG9i0LPOxFL3EdnA/6jg1jYGc1rqf7CR2YEgWBWLbwq/T%0ATmDqaMPJyHpL8SyP18BxKIfAkcdnz/tNR/5QY7zWhaq2TLF+bTmKccl957b8%0AgcdH8DLlfnTq3LYhKomtQN/O0M8Cx7L/fSQ/JoRBdcyYkZ+rzwdKbEIIcQPx%0AL1RwKLEZL4USmxD38aTElnnuOXETJ2/kdGJj9Q+MZPvEnyYe9SJ/L1NRLh+i%0A16M/M0kzuXwpUeX8cqgQKVPvvdcnTcf8QpTf5+utbRelGBWRvW7N5YbkM8s9%0A8V2niXuzXBa03nkXcM8d6JZC94v/jO4f/MDCP/vq+7kvovt262c6t38N+Nrt%0A6s/s+M530P2v/xrM178OfPnLwOc/C3z2877Xf/EXPpFv8KlP+erjBf6fIFy7%0ACrreeBNdo963pfu2L6Fr9Gx0HByPrp+OF38f8jFuBLqWib+XifJ//Kn2ur0h%0AFZ3fE+t8egc6OsS/lVZ2PKN9Fijbga7vPRMY7zmIT9B9g/jMPL+Zi5+ga2qm%0A+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%0A2J3VhO6uTrQ0NqCyrBJlJWrity/G6zHLsSNd3V27JmkHfvT2ciy+VI4GreQS%0AYkfNwt/OP40rDW1aCaqO4NkXJmFicjs67bz6tU5dAsaNm4XR+wtQ3OwrStux%0ACP/4m+XYVtEAveZMH0KJTYj7UGIrIr5bcOONPoktx8aWvbMHYAa6xFaLaWu5%0AogexjdiW+JZtEru20xq9lZ2S2Ip6hi23I1Ri+9rFLJUNQutlO61e34gktqIN%0AQtp1AEOJTQghhBBCiPO4JrFba0qwd/pv8Pj4HTh5Mj6IYwf3Y/7kD/Gr56dg%0A0bEitPbQwbqlqghXC8tR3ay2z9XxW3DXbxdjbmaZLrEvYv4bU3HTzOPIrddV%0AcOUBPDHsI3yY0NZ/JHZtHD54/xO8tesqipp8Rcmb5+Bvhi3CxjKTxM5Yj5ue%0AXokTHeyJHm0osQlxH0psmzz3XKA3tuyZPQAzsCV2qBD1lYcKWF/vYIuotesV%0AbBGz4aYNWV9fJLbtvPbbpcYqsUOltpngZYebViHTbSW2oq5hfjgYaBgS2yqy%0AzRK7urZBE9lmiV1aVoni0nJNYucXFuNKfiFyr+QjJ/cqLuXk4WJWDtIvXvJL%0A7KTkNOV3MiGEEEIIIV7EVYm9e+ZIPL0mxy8SzbTXF+P0hrkYNnQU3l+VgCsV%0AjaivtaMZra2dsHPPoRJbrENKS7EefwaIxJZt09kl6u97q6Xs0Dz80RNLcYwS%0AO+oYxxslNiHuQYltkyNHAhL77rv1woGVgT8mdmTlwSK6p57NZpEbflpHJbYu%0Aee1RiGElFhEdRo5raOvVfxDQp+2zxFZJ/57qMYCgxCaEEEIIIcR53JfYay/r%0AJYq01+HS8U14e+gw/Oj+Ibb8931P4ImJW3EqXz3Ahkpid3Z0or3TJIPNElsO%0AYSK20aA1WqstRXOnaRlyXV3By5ASvb0jsI72Tp9EbRN/+ydVSWxRt9YOYxqx%0AHjFv/v65+KMnYnFQ3AxpyzKvq7sLHfo6JK2iLlTdgVBiE+I+lNhhYh5SRA4x%0AMsBCiR08nY/rKbGdGG6j7xJbPS0ltgElNiGEEEIIIc5zfSV2hCk8sQqjZi7D%0A9rRqvSQ4dsOJ/HL9RZQ1d2olhsT+4GwjapJW4XNDx+OzT43DZ58ejy8sT0RD%0Ae2TqV8rpuvx0xMyZis/IZQwdh8+8NB8v7M1AvW8KdHbU4OzuLbj/pY/F53Ka%0A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%0Ag4Ny7MRpOX3BHsQFOXniK/mstO8T8vmZC7GoHovYwXOPHvtS9tp1Pz8VPNvw%0A9QX5KnhT7fvydLCXOF/LxaFzwRvuhBw8FRzL0AU5MXBCDg2erZgT++sL5+TL%0AE1+aY9BtD8rnZ82Whs7K8eDN2v/VWTkbe9LFc6ekP7imx0/Hj1fk3KmvZP8X%0A+g8MxZx1m4iN2Hq7JmLryGsbsW+91Sz0m86fE7uS2iJ23sjmeOytvm5TI7YZ%0ArZxtfRE7HYzrjdjmmEv7V2uJ2K7jzDomAIAGqGdUcsl4RNZR2lEYzgzBYdRO%0Ah+cwfrc0YusI72DddXb/ZkS5I9oTsf2HiI2YLxHbL0Y2YtfIgdcXy9SZC+T5%0A7V+YJZVkzYmtMfiIHdFsIvbNrx2RnW8vlct+8PPAmfK//MW98o8f3SAfZs1V%0AEmPgwIdy3333yb+dsVZ2l5rtSdm94SWZcOOD8icrdsjndvmFT+XZ+Qvkuz9/%0AVV49eEbk4ln54vMdMj84j3///Znh/v/n790vN6zeITu/PC8XwueZiL3wXdmw%0A42X5q795SP55eJz3yT+4cZmsPfxVGLKHzge/ON55p/y921fKJ/GK/fV5Of7Z%0Ae/KjHz8g33x5XzQn9s+ny394/B2xs4kPnT8rn+18W348c6b8SrjtGfLLty+W%0AH7yyR46eOicXj22Vv5n5gFw5Z4O8fawcpo9vXiH/zw9/JpNf2iP7z9g35zl5%0Ae+mj8mt3Pyc7j540y4oFERux9XZFxO7tLQfsMWOiubG7ACK2i5GM2PnTeuQz%0A/IgdXq/kujWPxCZiA0CLMRE7Ned1uNwRizOCtFI9YqdHQLc6YofrarCOH7Oe%0Al2OfRGz/IWIj5kvE9ouui9j/4ZZZ8k+Xm198v74opw+9Kn9ywzT5xpy3ZKBy%0AWHOak4dk5XPz5d/d9bysOW5HLh+WdauWyW9fc7f8/pzX5K0TUfi9ePBdueH+%0AR+W657bJvrNDcurQ23L7zx6RP170jmw9Ho38Htj5soz/65/KHz67R/YN6vOi%0AiP17fzFD/smMNbKzNIL6A3nsr++Tv3fjMtl1Rg/7guz9xSz5pe/MkgUHyq/V%0AxXMDsv2NRfL7fzlPnvrMfLBjPGIPnZO92zbJlDsflOuWbZUD4bM+ly1rnpNv%0A/cWj8v2Xd8sXF4/K+qVL5Ds/WynP7v3K7P+cbAvO8Xd/8BP5Fw+/LhsPn5bw%0A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%0A/x+o+VmXPhV3vwAAAABJRU5ErkJggg=="><br>To be continue….</p><script> document.querySelectorAll('.github-emoji') .forEach(el => { if (!el.dataset.src) { return; } const img = document.createElement('img'); img.style = 'display:none !important;'; img.src = el.dataset.src; img.addEventListener('error', () => { img.remove(); el.style.color = 'inherit'; el.style.backgroundImage = 'none'; el.style.background = 'none'; }); img.addEventListener('load', () => { img.remove(); }); document.body.appendChild(img); }); </script>]]></content>
<categories>
<category> 架构 </category>
<category> MVVM </category>
<category> Android </category>
<category> 自定义View </category>
</categories>
<tags>
<tag> 2020 </tag>
<tag> jetpack </tag>
<tag> AndroidX </tag>
<tag> MVVM </tag>
<tag> 自定义组件 </tag>
</tags>
</entry>
<entry>
<title>Java面经</title>
<link href="/2020/07/05/%E5%85%AC%E5%8F%B8%E9%9D%A2%E8%AF%95%E9%97%AE%E9%A2%98/"/>
<url>/2020/07/05/%E5%85%AC%E5%8F%B8%E9%9D%A2%E8%AF%95%E9%97%AE%E9%A2%98/</url>
<content type="html"><![CDATA[<h1 id="5-21、先从科技有限公司"><a href="#5-21、先从科技有限公司" class="headerlink" title="5.21、先从科技有限公司"></a>5.21、先从科技有限公司</h1><p>面试:</p><ol><li>项目讲解,亮点部分</li><li>spring的初始化流程(IOC初始化)</li><li>springMVC工作流程</li><li>mybatis缓存</li><li>SQL优化</li></ol><h1 id="5-21、海纳丰科技有限公司"><a href="#5-21、海纳丰科技有限公司" class="headerlink" title="5.21、海纳丰科技有限公司"></a>5.21、海纳丰科技有限公司</h1><p>面试:</p><ol><li>java面向对象</li><li>多线程创建方式</li><li>spring和springMVC区别</li><li>springMVC中注解和用处</li><li>springMVC工作流程</li><li>集合</li><li>SQL优化</li><li>注入依赖方式</li></ol><h1 id="5-22、超然祥润有限公司"><a href="#5-22、超然祥润有限公司" class="headerlink" title="5.22、超然祥润有限公司"></a>5.22、超然祥润有限公司</h1><p>笔试部分:</p><ol><li>能力测试!(IQ)</li><li>前端JavaScript代码编写</li><li>ajax的介绍,原理</li></ol><p>面试部分</p><ol><li>项目讲解</li><li>多线程相关知识,<font color="red">项目中那些地方用到了多线程</font></li><li><font color="red">事务相关知识,以及自己项目中那些地方用到了事务</font></li><li>spring 的IOC和AOP相关知识</li><li>springMVC工作流程</li><li>集合,<font color="red">map中有哪些方法</font></li><li>SQL优化</li></ol><h1 id="6-19、西辰软件"><a href="#6-19、西辰软件" class="headerlink" title="6.19、西辰软件"></a>6.19、西辰软件</h1><p>笔试部分:</p><ol><li>JDBC连接</li><li>SQL</li></ol><h1 id="6-23、海乂知信息科技有限公司"><a href="#6-23、海乂知信息科技有限公司" class="headerlink" title="6.23、海乂知信息科技有限公司"></a>6.23、海乂知信息科技有限公司</h1><p>技术面试:</p><ul><li>error和exception的父类</li><li>SQL优化</li><li>JDBC连接过程</li><li>索引介绍</li><li>List中有几条数据,要求在进行迭代的时候删除一条数据,怎么删除</li><li>SQL数据访问量过大怎么办</li><li>Linux命令</li><li>多线程,线程池</li><li>对算法的理解</li></ul><p>负责人面试:</p><ul><li>你在实习中遇到的困难?</li><li>你解决问题要多久?</li><li>你认为你的优势是什么?</li><li>你认为你能给公司带来什么?</li><li>你的职业规划?</li><li>近期打算?</li><li>能问我三个问题?</li></ul><h1 id="6-30、四川创博云软信息技术有限公司"><a href="#6-30、四川创博云软信息技术有限公司" class="headerlink" title="6.30、四川创博云软信息技术有限公司"></a>6.30、四川创博云软信息技术有限公司</h1><ul><li>数据库中列和行之间的转换?</li><li>error和exception的区别?</li><li>SpringBoot常用命令?</li><li>JDK,JRE,JVM?</li></ul><h1 id="6-30、鸿达安视"><a href="#6-30、鸿达安视" class="headerlink" title="6.30、鸿达安视"></a>6.30、鸿达安视</h1><p><strong>面试部分:</strong></p><ul><li>java面向对象的特征,封装、继承、多态</li><li>final、finally、finalize区别</li><li>事务回滚发生错误怎么办?</li><li>垃圾回收机制回收对象以及垃圾回收机制什么时候回收?</li><li>分库、分表</li><li>SpringBoot比起SSM的优势?</li><li>SpringBean的生命周期?</li><li>ArrayList,Vocter,LinkedList的区别?</li><li>链表的添加和删除元素的底层实现?</li><li>数,队列?</li><li>hashmap中转红黑树?</li><li>mybatis中一级缓存和二级缓存?</li><li>Linux中的常用命令,权限命令,权限分级?</li><li>数据库的引擎分类</li></ul><h1 id="7-2、汉图"><a href="#7-2、汉图" class="headerlink" title="7.2、汉图"></a>7.2、汉图</h1><p><strong>笔试:</strong></p><ul><li><strong>接口中可以定义的方法</strong>(选择题?除了abstract方法之外,还有default(缺省)和static)</li><li>多线程中的锁(volatile和synchronized)</li><li>单例模式</li><li>error和exception,CheckedException和RuntimeException区别</li><li>类的实例化顺序</li><li>spring的优点</li><li>spring的作用域</li><li>#{}和${}区别</li><li><strong>Sql语句(没写出来)</strong></li></ul><p><strong>面试:</strong></p><ul><li><strong>@Controller和@RestController的区别</strong></li><li>JSP九大内置对象</li><li>servlet生命周期</li><li>乐观锁和悲观锁</li><li>ACID</li><li>Linux常用命令,<strong>查看内存等</strong></li><li>maven常用命令(clean,test,compile,package,install,deploy)</li><li>maven打包等</li><li><strong>springBoot运行jar</strong></li><li>项目中遇到的问题?(这个问题回答得不太好)</li></ul><p>还有几个问题忘记了</p><script> document.querySelectorAll('.github-emoji') .forEach(el => { if (!el.dataset.src) { return; } const img = document.createElement('img'); img.style = 'display:none !important;'; img.src = el.dataset.src; img.addEventListener('error', () => { img.remove(); el.style.color = 'inherit'; el.style.backgroundImage = 'none'; el.style.background = 'none'; }); img.addEventListener('load', () => { img.remove(); }); document.body.appendChild(img); }); </script>]]></content>
<categories>
<category> Java面试 </category>
<category> 面经 </category>
</categories>
<tags>
<tag> 面试 </tag>
<tag> Java面试 </tag>
<tag> 先从科技有限公司 </tag>
<tag> 海纳丰科技有限公司 </tag>
<tag> 超然祥润有限公司 </tag>
<tag> 海乂知信息科技有限公司 </tag>
</tags>
</entry>
<entry>
<title>Hello World</title>
<link href="/2020/07/04/hello-world/"/>
<url>/2020/07/04/hello-world/</url>
<content type="html"><![CDATA[<p>Welcome to <a href="https://hexo.io/" target="_blank" rel="noopener">Hexo</a>! This is your very first post. Check <a href="https://hexo.io/docs/" target="_blank" rel="noopener">documentation</a> for more info. If you get any problems when using Hexo, you can find the answer in <a href="https://hexo.io/docs/troubleshooting.html" target="_blank" rel="noopener">troubleshooting</a> or you can ask me on <a href="https://github.com/hexojs/hexo/issues" target="_blank" rel="noopener">GitHub</a>.</p><h2 id="Quick-Start"><a href="#Quick-Start" class="headerlink" title="Quick Start"></a>Quick Start</h2><h3 id="Create-a-new-post"><a href="#Create-a-new-post" class="headerlink" title="Create a new post"></a>Create a new post</h3><pre class=" language-bash"><code class="language-bash">$ hexo new <span class="token string">"My New Post"</span></code></pre><p>More info: <a href="https://hexo.io/docs/writing.html" target="_blank" rel="noopener">Writing</a></p><h3 id="Run-server"><a href="#Run-server" class="headerlink" title="Run server"></a>Run server</h3><pre class=" language-bash"><code class="language-bash">$ hexo server</code></pre><p>More info: <a href="https://hexo.io/docs/server.html" target="_blank" rel="noopener">Server</a></p><h3 id="Generate-static-files"><a href="#Generate-static-files" class="headerlink" title="Generate static files"></a>Generate static files</h3><pre class=" language-bash"><code class="language-bash">$ hexo generate</code></pre><p>More info: <a href="https://hexo.io/docs/generating.html" target="_blank" rel="noopener">Generating</a></p><h3 id="Deploy-to-remote-sites"><a href="#Deploy-to-remote-sites" class="headerlink" title="Deploy to remote sites"></a>Deploy to remote sites</h3><pre class=" language-bash"><code class="language-bash">$ hexo deploy</code></pre><p>More info: <a href="https://hexo.io/docs/one-command-deployment.html" target="_blank" rel="noopener">Deployment</a></p><script> document.querySelectorAll('.github-emoji') .forEach(el => { if (!el.dataset.src) { return; } const img = document.createElement('img'); img.style = 'display:none !important;'; img.src = el.dataset.src; img.addEventListener('error', () => { img.remove(); el.style.color = 'inherit'; el.style.backgroundImage = 'none'; el.style.background = 'none'; }); img.addEventListener('load', () => { img.remove(); }); document.body.appendChild(img); }); </script>]]></content>
<categories>
<category> 模板 </category>
</categories>
<tags>
<tag> Markdown </tag>
</tags>
</entry>
</search>