PageSourceSearch

https://xiaobaiso.github.io/

html xiaobaiso.github.io collected 2026-10-03 10:11:27 UTC 19,326 bytes, 255 lines download raw bytes

1<!DOCTYPE html>
2<html>
3
4  <head>
5  <meta charset="utf-8">
6  <meta http-equiv="X-UA-Compatible" content="IE=edge">
7  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
8
9  <title>小白的技术宅</title>
10  <meta name="description" content="嗨,我是小白,从事iOS相关的工作,目前暂居深圳.">
11  <meta name="author" content="zengjing">
12
13  <meta name="twitter:card" content="summary">
14  <meta name="twitter:title" content="小白的技术宅">
15  <meta name="twitter:description" content="嗨,我是小白,从事iOS相关的工作,目前暂居深圳.">
16  
17  <meta property="og:type" content="article">
18  <meta property="og:title" content="小白的技术宅">
19  <meta property="og:description" content="嗨,我是小白,从事iOS相关的工作,目前暂居深圳.">
20  
21  <link rel="icon" type="image/png" href="/assets/images/favicon.png" />
22  <link href="/assets/images/favicon.png" rel="shortcut icon" type="image/png">
23  
24  <link rel="stylesheet" href="/css/main.css">
25  <link href="//netdna.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.min.css" rel="stylesheet">
26
27  <link rel="canonical" href="http://xiaobaiso.github.io/">
28  <link rel="alternate" type="application/rss+xml" title="小白的技术宅" href="http://xiaobaiso.github.io/feed.xml">
29  
30  <meta name="google-site-verification" content="1-1ZlHoRvM0T2FqPbW2S-qLgYXN6rsn52kErlMPd_gw" />
31
32  
32<script>
33  	var _hmt = _hmt || [];
34	(function() {
35  		var hm = document.createElement("script");
36  		hm.src = "//hm.baidu.com/hm.js?9bd8b5838b97bdb84f93cef73b8878a9";
37  		var s = document.getElementsByTagName("script")[0]; 
38  		s.parentNode.insertBefore(hm, s);
39	})();
40  </script>
40
41
42</head>
43
44
45  <body>
46
47    <span class="mobile btn-mobile-menu">
48        <i class="fa fa-list btn-mobile-menu__icon"></i>
49        <i class="fa fa-angle-up btn-mobile-close__icon hidden"></i>
50    </span>
51    
52    <header class="panel-cover " style="background-image: url('/assets/images/background-cover.jpg')">
53  <div class="panel-main">
54
55    <div class="panel-main__inner panel-inverted">
56    <div class="panel-main__content">
57
58        <a href="/#blog" title="前往 小白的技术宅 的主页" class="blog-button"><img src="/assets/images/avatar.jpg" width="80" alt="小白的技术宅 logo" class="panel-cover__logo logo" /></a>
59        <h1 class="panel-cover__title panel-title"><a href="/#blog" title="link to homepage for 小白的技术宅" class="blog-button">小白的技术宅</a></h1>
60        
61        <span class="panel-cover__subtitle panel-subtitle">遇见更好的自己.</span>
62        
63        <hr class="panel-cover__divider" />
64        <p class="panel-cover__description">嗨,我是小白,从事iOS相关的工作,目前暂居深圳.</p>
65        <hr class="panel-cover__divider panel-cover__divider--secondary" />
66        
67        
68        <p class="panel-cover__description"><a href="http://xiaobaiso.me">这是我用来记录生活和技术的地方,欢迎你的访问.</a></p>
69        
70        
71        <div class="navigation-wrapper">
72          <div>
73            <nav class="cover-navigation cover-navigation--primary">
74              <ul class="navigation">
75                <li class="navigation__item"><a href="/#blog" title="访问博客" class="blog-button">博客</a></li>
76                
77                  <li class="navigation__item"><a href="http://github.com/xiaobaiso" target="_blank" title="了解相关项目">项目</a></li>
78                
79                  <li class="navigation__item"><a href="https://xiaobaiso.github.io/tempmail/" target="_blank" title="临时邮">临时邮说明</a></li>
80                
81                  <li class="navigation__item"><a href="https://itunes.apple.com/cn/app/%E4%B8%B4%E6%97%B6%E9%82%AE-%E5%8D%81%E5%88%86%E9%92%9F%E9%82%AE%E7%AE%B1/id1342693449?mt=8" target="_blank" title="临时邮">临时邮</a></li>
82                
83                  <li class="navigation__item"><a href="https://xiaobaiso.github.io/zhihudoc/" target="_blank" title="视频下载小助手">知乎视频爬虫</a></li>
84                
85              </ul>
86            </nav>
87          </div>
88          
89          <div><nav class="cover-navigation navigation--social">
90  <ul class="navigation">
91
92  
93
94  
95  <!-- Github -->
96  <li class="navigation__item">
97    <a href="https://github.com/xiaobaiso" title="@xiaobaiso 的 Github" target="_blank">
98      <i class='social fa fa-github'></i>
99      <span class="label">Github</span>
100    </a>
101  </li>
102  
103  
104  
105
106  
107
108  <!-- RSS -->
109  <li class="navigation__item">
110    <a href="/feed.xml/" rel="author" title="RSS" target="_blank">
111      <i class='social fa fa-rss'></i>
112      <span class="label">RSS</span>
113    </a>
114  </li>
115
116  
117  <!-- Email -->
118  <li class="navigation__item">
119    <a href="mailto:[email protected]" title="Contact me">
120      <i class='social fa fa-envelope'></i>
121      <span class="label">Email</span>
122    </a>
123  </li>
124  
125
126  </ul>
127</nav>
128</div>
129        </div>
130      </div>
131    </div>
132    
133    
134    <div class="panel-cover--overlay cover-slate"></div>
135    
136  </div>
137</header>
138
139
140    <div class="content-wrapper">
141        <div class="content-wrapper__inner">
142            <div class="main-post-list hidden">
143
144  <ol class="post-list">
145    
146    <li>
147      <h2 class="post-list__post-title post-title"><a href="/blog/%E5%85%B3%E4%BA%8E%E8%82%A1%E7%A5%A8%E9%A1%B9%E7%9B%AE%E9%87%8D%E6%9E%84%E7%9A%84%E5%BF%83%E5%BE%97%E4%BA%8C.html" title="访问 关于股票项目重构的心得二">关于股票项目重构的心得二</a></h2>
148      <p class="excerpt">关于网络层的思考一般而言,和网络层的数据传输无外乎三种:代理,block。在网上如果看过相关的架构设计方面的资料,大多会将这两种架构归为离散型和集约型架构,这两种泾渭分明,有利有弊,这里     这里有一个较好的架构资料,比较好的分析了优缺点。xx股票采用的网络层使用的是代理模式,这里各个Controller与网络层使用了代理模式来获取网络数据,其实就是集约型的网络框架。上一篇文章说道,由于将之前两层换做三层,这样的话新加入的中间层充当了网络的前置层(它其实就是业务的逻辑层,也是具体发送网...&hellip;</p>
149      <div class="post-list__meta"><time datetime="2018-08-23 00:00:00 +0000" class="post-list__meta--date date">2018-08-23</time> &#8226; <span class="post-list__meta--tags tags"></span><a class="btn-border-small" href=/blog/%E5%85%B3%E4%BA%8E%E8%82%A1%E7%A5%A8%E9%A1%B9%E7%9B%AE%E9%87%8D%E6%9E%84%E7%9A%84%E5%BF%83%E5%BE%97%E4%BA%8C.html>继续阅读</a></div>
150      <hr class="post-list__divider" />
151    </li>
152    
153    <li>
154      <h2 class="post-list__post-title post-title"><a href="/blog/%E5%85%B3%E4%BA%8E%E8%82%A1%E7%A5%A8%E9%A1%B9%E7%9B%AE%E9%87%8D%E6%9E%84%E7%9A%84%E5%BF%83%E5%BE%97%E4%B8%80.html" title="访问 关于股票项目重构的心得一">关于股票项目重构的心得一</a></h2>
155      <p class="excerpt">暴风雨前夜我所在的XX金融从事iOS开发已有两年,这两年产品从无到有快速迭代,我一直从事关于App后台的搭建,架构上的整理,主要是负责用户侧/鉴权侧,尤其是在年底对App的账户相关模块进行了一次大的重构,也有了一些新的想法先说说公司的架构,公司的后台服务相当于一个个独立的子服务系统,基本上各自为政,比如日志系统,交易系统,用户系统等等,他们的URL也不尽相同,但是基本上都遵循一个统一的Http头部信息,在语言,Cookies上面提供了不上的好处,在body这一侧,也统一的response的...&hellip;</p>
156      <div class="post-list__meta"><time datetime="2018-07-10 00:00:00 +0000" class="post-list__meta--date date">2018-07-10</time> &#8226; <span class="post-list__meta--tags tags"></span><a class="btn-border-small" href=/blog/%E5%85%B3%E4%BA%8E%E8%82%A1%E7%A5%A8%E9%A1%B9%E7%9B%AE%E9%87%8D%E6%9E%84%E7%9A%84%E5%BF%83%E5%BE%97%E4%B8%80.html>继续阅读</a></div>
157      <hr class="post-list__divider" />
158    </li>
159    
160    <li>
161      <h2 class="post-list__post-title post-title"><a href="/blog/iOS%E7%9A%84YYCahce%E8%B5%B0%E8%AF%BB.html" title="访问 iOS下YYCache走读">iOS下YYCache走读</a></h2>
162      <p class="excerpt">
162iOS下YYCache走读YYCache是一个非常优秀的iOS下持久化底层库,是线程安全的,在我公司的持久化存储都是在使用这个库。这几天有时间,好好走读了一下这个库。YYThreadSafeDictionary这是基于NSMutableDictionary的封装,所有set和get方法,都被加了锁。看源码的时候,发现作者封装的挺好,有这么几个地方。将所有需要被锁包含的地方,用宏进行包含#define LOCK(...) OSSpinLockLock(&amp;_lock); \__VA_A...&hellip;</p>
163      <div class="post-list__meta"><time datetime="2018-07-03 00:00:00 +0000" class="post-list__meta--date date">2018-07-03</time> &#8226; <span class="post-list__meta--tags tags"></span><a class="btn-border-small" href=/blog/iOS%E7%9A%84YYCahce%E8%B5%B0%E8%AF%BB.html>继续阅读</a></div>
164      <hr class="post-list__divider" />
165    </li>
166    
167    <li>
168      <h2 class="post-list__post-title post-title"><a href="/blog/%E4%B8%8B%E8%BD%BD%E8%A7%86%E9%A2%91%E5%B0%8F%E5%8A%A9%E6%89%8B.html" title="访问 下载视频小助手">下载视频小助手</a></h2>
169      <p class="excerpt">背景我是一个重度的知乎er,在零碎阅读方面,知乎一直是我比较长呆的地方:吃饭、公交、等电梯乃至睡前阅读,我都会打开知乎刷一会儿。我算是知乎比较老的用户,老号因为各种原因放弃了,现在比较专注于看知乎互联网的相关知识积累。每次看到知乎上的视频,我都忍不住要下载下来,但是知乎没有提供下载按钮,让我很不爽,尤其是在手机移动端的时候,希望有个短平快的解决方案变得越来越迫切,最后这个项目呼之欲出,算是[小助手]的一个背景原因吧。操作方式1.选择您想要下载视频的知乎地址,如果不知道地址如何获得,建议您看...&hellip;</p>
170      <div class="post-list__meta"><time datetime="2018-06-01 00:00:00 +0000" class="post-list__meta--date date">2018-06-01</time> &#8226; <span class="post-list__meta--tags tags"></span><a class="btn-border-small" href=/blog/%E4%B8%8B%E8%BD%BD%E8%A7%86%E9%A2%91%E5%B0%8F%E5%8A%A9%E6%89%8B.html>继续阅读</a></div>
171      <hr class="post-list__divider" />
172    </li>
173    
174    <li>
175      <h2 class="post-list__post-title post-title"><a href="/blog/%E5%85%B3%E4%BA%8Email%E9%A1%B9%E7%9B%AE%E7%BD%91%E7%BB%9C%E9%80%9A%E4%BF%A1%E9%81%87%E5%88%B0%E7%9A%84%E4%B8%80%E4%BA%9B%E9%97%AE%E9%A2%98.html" title="访问 mail项目网络通信遇到的加密问题">mail项目网络通信遇到的加密问题</a></h2>
176      <p class="excerpt">起因最近在写一个临时邮件的项目,前后端都是自己写,前台用OC+Swift混编,后台用python搭建,数据存储用mysql,有了上一个项目的经验,这个项目很快就有了一些进展。在这个项目中,由于涉及到通信协议Http的加密,所以在这里考虑到尽可能的便捷性,使用了较为原始的Authorization来认证通信内容。事实上,个人项目其实不用太在加解密上面花费功夫。在python中,使用flask的@app.before_request就可以轻易做到这一点。在iOS这一端,授权使用了http头部的...&hellip;</p>
177      <div class="post-list__meta"><time datetime="2018-01-23 00:00:00 +0000" class="post-list__meta--date date">2018-01-23</time> &#8226; <span class="post-list__meta--tags tags"></span><a class="btn-border-small" href=/blog/%E5%85%B3%E4%BA%8Email%E9%A1%B9%E7%9B%AE%E7%BD%91%E7%BB%9C%E9%80%9A%E4%BF%A1%E9%81%87%E5%88%B0%E7%9A%84%E4%B8%80%E4%BA%9B%E9%97%AE%E9%A2%98.html>继续阅读</a></div>
178      <hr class="post-list__divider" />
179    </li>
180    
181    <li>
182      <h2 class="post-list__post-title post-title"><a href="/blog/%E4%B8%B4%E6%97%B6%E9%82%AE%E7%AE%80%E4%BB%8B.html" title="访问 临时邮简介">临时邮简介</a></h2>
183      <p class="excerpt">背景在某一日,终于收到了无数封垃圾邮件的我彻底分裂,一天之间私人邮箱收到数百封未读邮件。而与之绑定的手机客户端,每隔十几分钟就要提醒有邮件收到,烦人的广告,无法关闭的退订ï¼
183Œä»¥åŠç³ç…满目的各类诱惑性邮件,让我彻底放弃了一个使用了十几年的邮箱。而这件事件让我对邮件有了新的看法,在数日的调研和观察中,我有了一个想做一个App的想法,去帮助被垃圾邮件困扰的人,以及如何有效的在信息纷杂的今天快速获取想要的信息。这大概就是“临时邮”制作的初衷:让这个世界少一点垃圾。它是什么“临时邮”这个项目是一个为解...&hellip;</p>
184      <div class="post-list__meta"><time datetime="2018-01-01 00:00:00 +0000" class="post-list__meta--date date">2018-01-01</time> &#8226; <span class="post-list__meta--tags tags"></span><a class="btn-border-small" href=/blog/%E4%B8%B4%E6%97%B6%E9%82%AE%E7%AE%80%E4%BB%8B.html>继续阅读</a></div>
185      <hr class="post-list__divider" />
186    </li>
187    
188    <li>
189      <h2 class="post-list__post-title post-title"><a href="/blog/iOS%E4%B8%8B%E5%93%8D%E5%BA%94%E9%93%BE%E6%9C%BA%E5%88%B6.html" title="访问 iOS下响应链机制">iOS下响应链机制</a></h2>
190      <p class="excerpt">关于iOS的响应链测试妹子给我挂了一个Bug,原因是那个隐秘按钮热点区域太小,点击不够顺畅。我仔细定位了一下,发现确实是妹子的手指太大,不够秀巧,刚想驳回,转眼一想有一个增加热点的办法,故进行了尝试。其实,这是个老生常谈的话题,iOS下的事件传递机制,事件响应是根据响应者链条进行传递的,根据官方文档描述,见图说干就干。这个隐藏密码的眼睛,即便调大了也并不能增加多少热点区域,所以我打算把这个按钮往右边偏移一部分,成为这样:..但是这样多出来的并不能点击,这还要涉及响应者链条问题。首先,要知道...&hellip;</p>
191      <div class="post-list__meta"><time datetime="2017-12-16 00:00:00 +0000" class="post-list__meta--date date">2017-12-16</time> &#8226; <span class="post-list__meta--tags tags"></span><a class="btn-border-small" href=/blog/iOS%E4%B8%8B%E5%93%8D%E5%BA%94%E9%93%BE%E6%9C%BA%E5%88%B6.html>继续阅读</a></div>
192      <hr class="post-list__divider" />
193    </li>
194    
195    <li>
196      <h2 class="post-list__post-title post-title"><a href="/blog/%E7%BB%99%E5%8D%9A%E5%AE%A2%E5%9C%B0%E5%9D%80%E5%8A%A0Https.html" title="访问 给博客地址Http协议加个s">给博客地址Http协议加个s</a></h2>
197      <p class="excerpt">由于域名到期,目前我的blog将暂时使用http协议。这篇文章,是我去年做到https留下的记录,确实可以做到文中所述。让人无奈的运营商偶然间发现打开博客,弹出了一个底部toast广告,虽然只有短短数秒,但显示内容居然是18禁的东西,我秉着认真负责的态度,为广大读者以身试法点开了,居然要某快播变种软件,下载后发现居然是exe,没有Mac对应平台!这种打着发福利变相谋私利的禽兽,真的是太让人生气了。所以我决定,给自己的博客加个s,保证不在传输过程中被添油加醋。GitHub Pages最近已经...&hellip;</p>
198      <div class="post-list__meta"><time datetime="2017-12-11 00:00:00 +0000" class="post-list__meta--date date">2017-12-11</time> &#8226; <span class="post-list__meta--tags tags"></span><a class="btn-border-small" href=/blog/%E7%BB%99%E5%8D%9A%E5%AE%A2%E5%9C%B0%E5%9D%80%E5%8A%A0Https.html>继续阅读</a></div>
199      <hr class="post-list__divider" />
200    </li>
201    
202    <li>
203      <h2 class="post-list__post-title post-title"><a href="/blog/FDTemplateLayoutCell.html" title="访问 FDTemplateLayoutCell走读">FDTemplateLayoutCell走读</a></h2>
204      <p class="excerpt">FDTemplateLayoutCell 代码走读最近组内有人使用了这个tableview算cell高库,一看都是自动算高的,让人感觉很不错,故走读代码,研究其具体运行方式。框架地址作者之一首先在博客中提到的使用RunLoop空闲时间执行预缓存任务,这一块代码并没有找到,估计是我看的这个版本已经去掉了这个功能了。- UITableView+FDIndexPathHeightCache.h- UITableView+FDIndexPathHeightCache.m- UITableView+...&hellip;</p>
205      <div class="post-list__meta"><time datetime="2017-11-22 00:00:00 +0000" class="post-list__meta--date date">
2052017-11-22</time> &#8226; <span class="post-list__meta--tags tags"></span><a class="btn-border-small" href=/blog/FDTemplateLayoutCell.html>继续阅读</a></div>
206      <hr class="post-list__divider" />
207    </li>
208    
209    <li>
210      <h2 class="post-list__post-title post-title"><a href="/blog/iOS%E4%B8%8BNavigationBar%E7%9A%84%E8%A7%A3%E8%AF%BB.html" title="访问 iOS下NavigationBar解析">iOS下NavigationBar解析</a></h2>
211      <p class="excerpt">iOS下NavigationBar解析最近在制作基于毛玻璃的一个滑动渐变NavigationBar,对NavigationBar的层级有了一些了解,故做了一个小的总结NavigationBar这是一个基本的层级:可以看到,UINavigationBar有一个控制自身颜色的UIBarBackground,与它同级的有两个按钮,done,title等按钮,我们关注的就是UIBarBackgroundUIBarBackgroundUIImageView其实就是shadowImage,就是Navi...&hellip;</p>
212      <div class="post-list__meta"><time datetime="2017-10-03 00:00:00 +0000" class="post-list__meta--date date">2017-10-03</time> &#8226; <span class="post-list__meta--tags tags"></span><a class="btn-border-small" href=/blog/iOS%E4%B8%8BNavigationBar%E7%9A%84%E8%A7%A3%E8%AF%BB.html>继续阅读</a></div>
213      <hr class="post-list__divider" />
214    </li>
215    
216  </ol>
217
218  <hr class="post-list__divider " />
219
220<nav class="pagination" role="navigation">
221    
222    <span class="pagination__page-number">1 / 2</span>
223    
224        <a class="older-posts pagination__older btn btn-small btn-tertiary" href="/page/2/#blog">更早 &rarr;</a>
225    
226</nav>
227
228
229</div>
230
231            <section class="footer">
232    <footer>
233    	<span class="footer__copyright">本站点采用<a href="http://creativecommons.org/licenses/by-nc-sa/4.0/">知识共享 署名-非商业性使用-相同方式共享 4.0 国际 许可协议</a></span>
234        <span class="footer__copyright">由 <a href="https://jekyllrb.com">Jekyll</a> 于 2025-05-10 生成,感谢<a href="https://gitcafe.com/signup?invited_by=zengjing">GitCafe</a>和<a href="https://github.com">GitHub</a>为本站提供存储空间.</span>
235        <span class="footer__copyright">本站由 <a href="http://xiaobaiso.me">@xiaobaiso</a> 创建,采用 <a href="jekyll">Vno - Jekyll</a> 作为主题 - &copy; 2025</span>
236    </footer>
237</section>
238
239
240        </div>
241    </div>
242    
243    
243<script type="text/javascript" src="//code.jquery.com/jquery-1.11.3.min.js"></script>
243
244
245<script type="text/javascript" src="/js/highlight.pack.js"></script>
vendor: 1 bytes, line 245
245
246<script>hljs.initHighlightingOnLoad();</script>
246
247
248<script type="text/javascript" src="/js/main.js"></script>
248
249
250
251
252    
253  </body>
254
255</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.