摘要: 聊天程序的底层socket实现我们用开源的GCDAsyncUdpSocket,本文依据GCDAsyncUdpSocket源码来解析UDP socket通信。 socket通信的整体流程是: 创建并初始化一个socket进行相应的配置 -> 本地地址和端口的绑定 -> 连接socket到被给的地址和端 阅读全文
posted @ 2018-08-10 17:10 袁华超 阅读(1868) 评论(0) 推荐(0) 编辑
摘要: ROOT表和META表 先看一下HBase的相关的机制是怎样的。之前我们说过HRegion是按照表名和主键范围来区分的,由于主键范围是连续的,所以一般用开始主键就可以表示相应的HRegion了。 不过,因为我们有合并和分割操作,如果正好在执行这些操作的过程中出现死机,那么就可能存在相同的“表名和开始 阅读全文
posted @ 2017-08-21 09:19 袁华超 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 在启动的时候,每台HRegion服务器都会检查自己的Hlog文件(Hlog是磁盘上的记录文件,它记录着所有的更新操作),看看最近一次执行flushcache之后有没有新的更新写入操作。如果没有更新,就表示所有的数据都已经更新到文件中了;如果有更新,服务器就会先把这些更新写入高速缓存,然后调用fuls 阅读全文
posted @ 2017-08-16 17:54 袁华超 阅读(99) 评论(0) 推荐(0) 编辑
摘要: group By操作 map端部分聚合。并不是所有的聚合操作都需要在reduce部分进行,很多聚合操作都可以先在map端进行部分聚合,然后在reduce端得出最终结果。 hive.map.aggr=true,用于设定是否在map端进行聚合,默认为True。hive.groupby.mapaggr.c 阅读全文
posted @ 2017-08-16 09:02 袁华超 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 阅读过程中文章内容可能需要很多屏才能展示完,那么现在的问题是创建多少个视图来渲染内容。 经过考虑,决定用两个视图,利用手势来控制不断来回切换来实现。 首先定义两个私有的实体的view对象: buffer1与buffer2就是用于渲染内容的两个视图。 其次还要定义一个用于区分是当前显示的视图还是被当前 阅读全文
posted @ 2017-02-15 18:03 袁华超 阅读(1117) 评论(0) 推荐(0) 编辑
摘要: 本篇介绍coretext中的图文混排,这里暂用静态的内容,即在文本中某一固定位置插入图片,而不是插入位置是根据文本内容动态插入的(要实现这一效果需要写一个文本解析器,将原信息内容解析为某些特定格式的结构来标示出特定的类型(比如文字、图片、链接等),然后按照其结构中的属性配置,生成属性字符串,之后渲染 阅读全文
posted @ 2016-11-08 18:42 袁华超 阅读(1163) 评论(1) 推荐(0) 编辑
摘要: 当内容太多,一页显示不下时,就需要显示多页,本篇就介绍多页显示。 这里的一页我们可以理解为一个视图,即这里我们需要多个视图来显示排版内容。在简单情况下,我们可在一个视图中绘制一个CTFrame(当然一个视图中可以绘制多个CTFrame)。那么问题转化为我们的内容字符串需要生成多个CTFrame,从而 阅读全文
posted @ 2016-11-04 16:44 袁华超 阅读(543) 评论(0) 推荐(0) 编辑
摘要: 前言:之前做了公司阅读类的App,最近有时间来写一下阅读部分的实现过程,供梳理逻辑,也希望能为后来使用者提供一点思路,如有错误,欢迎指正。 阅读的排版用的是coretext,这篇介绍用coretext实现基本的排版功能。 关于coretext的实现原理,可以查看文档或其他资料,这里就不介绍了,只介绍 阅读全文
posted @ 2016-11-04 16:01 袁华超 阅读(2406) 评论(3) 推荐(0) 编辑