摘要: 总结了iOS开发过程中的一些常用宏,以后会陆陆续续添加进来。 字符串是否为空 1 #define kStringIsEmpty(str) ([str isKindOfClass:[NSNull class]] || str == nil || [str length] < 1 ? YES : NO  阅读全文
posted @ 2016-12-29 16:10 brave-sailor 阅读(162) 评论(0) 推荐(0)
摘要: 前言 iOS 实现主题切换,相信在未来的app里也是会频繁出现的,尽管现在只是出现在主流的APP,如(QQ、新浪微博、酷狗音乐、网易云音乐等),但是现在是看颜值、追求个性的年代,所以根据用户喜好自定义/切换主题也是未来app的必备功能了。 实现思路 为了降低耦合度,决定采用的方案是使用NSObjec 阅读全文
posted @ 2016-12-29 16:08 brave-sailor 阅读(514) 评论(0) 推荐(0)
摘要: 在升级到Xcode8版本以后大多数人会碰到这个问题-开开心心开发好一款app以后上传到iTunes后台提交审核,然而iTunes Connect后台活动栏里没有出现我们上传的app,确切的说是显示一会儿之后平白无故的消失,也不见Apple的邮件告知原因,只能借助强大的网络和那些具有分享精神的巨人! 阅读全文
posted @ 2016-12-29 11:50 brave-sailor 阅读(1386) 评论(1) 推荐(0)
摘要: 最近iOS10出来了 Xcode也跟着升级到了8 想着App做个更新 于是修改好了代码打算上传新包 ,无奈总是发现构建不了新版本 经过各种蛋疼的查找.我列一下我的经验 1.如果是收费的App,那么是要去同意一个协议,才能构建新版本的 || 如果是免费App,那就忽略这条 2.如果你上传了新包,无论是 阅读全文
posted @ 2016-12-29 11:09 brave-sailor 阅读(711) 评论(0) 推荐(0)
摘要: 本文转载至 http://blog.csdn.net/fengsh998/article/details/8307424 Key:Application can be killed immediately after launch(NSSupportsSuddenTermination)Value: 阅读全文
posted @ 2016-12-29 11:03 brave-sailor 阅读(644) 评论(0) 推荐(0)
摘要: 新版本发布总会有很多坑,也会有很多改动。 一个一个填吧。。。 一、遇到的问题 1、权限以及相关设置 iOS10系统下调用系统相册、相机功能,或者苹果健康都会遇到闪退的情况,调用系统相册报错描述如下: This app has crashed because it attempted to acces 阅读全文
posted @ 2016-12-29 10:46 brave-sailor 阅读(375) 评论(0) 推荐(0)
摘要: 写在前面 APP开发避免不开系统权限的问题,如何在APP以更加友好的方式向用户展示系统权限,似乎也是开发过程中值得深思的一件事; 那如何提高APP获取iOS系统权限的通过率呢?有以下几种方式:1.在用户打开APP时就向用户请求权限;2.告知用户授权权限后能够获得好处之后,再向用户请求权限;3.在绝对 阅读全文
posted @ 2016-12-29 10:13 brave-sailor 阅读(1465) 评论(0) 推荐(0)
摘要: 假如有 大于2 台的Tomcat servers,如何实现sticky session特点的高可靠web 服务? 方案设计: 前端使用nginx(最好是淘宝的 tengine)作为we 流量分发器,向后端的两台tomcat分发web 流量。同时为了实现sticky session功能和高可靠的web 阅读全文
posted @ 2016-12-29 10:08 brave-sailor 阅读(295) 评论(0) 推荐(0)
摘要: 悲观锁并不是适用于任何场景,它也有它存在的一些不足,因为悲观锁大多数情况下依靠数据库的锁机制实现,以保证操作最大程度的独占性。如果加锁的时间过长,其他用户长时间无法访问,影响了程序的并发访问性,同时这样对数据库性能开销影响也很大,特别是对长事务而言,这样的开销往往无法承受。所以与悲观锁相对的,我们有 阅读全文
posted @ 2016-12-29 10:07 brave-sailor 阅读(404) 评论(0) 推荐(0)
摘要: 我们平时写程序需要经常用到集合类,比如ArrayList、HashMap等,但是这些集合不能够实现并发运行机制,这样在服务器上运行时就会非常的消耗资源和浪费时间,并且对这些集合进行迭代的过程中不能进行操作,否则会出现错误,例如下面程序: [Java] public class CollectionM 阅读全文
posted @ 2016-12-29 10:06 brave-sailor 阅读(436) 评论(0) 推荐(0)
摘要: 悲观锁: 它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态。悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能真正保证数据访问的排他性,否则,即使在本系统中实现了加锁机制,也无法保证外部系 阅读全文
posted @ 2016-12-29 10:06 brave-sailor 阅读(386) 评论(0) 推荐(0)
摘要: 1. java.util.concurrent - Java 并发工具包 Java 5 添加了一个新的包到 Java 平台,java.util.concurrent 包。这个包包含有一系列能够让 Java 的并发编程变得更加简单轻松的类。在这个包被添加以前,你需要自己去动手实现自己的相关工具类。 本 阅读全文
posted @ 2016-12-29 10:05 brave-sailor 阅读(297) 评论(0) 推荐(0)
摘要: Selector允许单线程处理多个Channel,能够检测一到多个Channel,并能够知晓通道是否为诸如读写事件做好准备。这样,一个单独的线程可以管理多个channel,从而管理多个网络连接。 如果你的应用打开了多个连接(通道),但每个连接的流量都很低,使用Selector就会很方便。例如,在一个 阅读全文
posted @ 2016-12-29 10:03 brave-sailor 阅读(476) 评论(0) 推荐(1)
摘要: java.nio.channels 类 SocketChannel 针对面向流的连接套接字的可选择通道。 套接字通道不是连接网络套接字的完整抽象。必须通过调用 socket 方法所获得的关联 Socket 对象来完成对套接字选项的绑定、关闭和操作。不可能为任意的已有套接字创建通道,也不可能指定与套接 阅读全文
posted @ 2016-12-29 09:49 brave-sailor 阅读(5882) 评论(0) 推荐(0)
摘要: java.nio.channels 类 ServerSocketChannel java.lang.Object java.nio.channels.spi.AbstractInterruptibleChannel java.nio.channels.SelectableChannel java.n 阅读全文
posted @ 2016-12-29 09:48 brave-sailor 阅读(2197) 评论(0) 推荐(0)
摘要: java.nio.channels 类 Selector SelectableChannel 对象的多路复用器。 可通过调用此类的 open 方法创建选择器,该方法将使用系统的默认选择器提供者创建新的选择器。也可通过调用自定义选择器提供者的 openSelector 方法来创建选择器。通过选择器的 阅读全文
posted @ 2016-12-29 09:47 brave-sailor 阅读(1824) 评论(0) 推荐(0)
摘要: 面是本次学习的笔记。主要分异常类型、交互原理、Socket、ServerSocket、多线程这几个方面阐述。 异常类型 在了解Socket的内容之前,先要了解一下涉及到的一些异常类型。以下四种类型都是继承于IOException,所以很多之后直接弹出IOException即可。 UnkownHost 阅读全文
posted @ 2016-12-29 09:46 brave-sailor 阅读(332) 评论(0) 推荐(0)
摘要: java.nio.channels 类 SelectionKey 表示 SelectableChannel 在 Selector 中的注册的标记。 每次向选择器注册通道时就会创建一个选择键。通过调用某个键的 cancel 方法、关闭其通道,或者通过关闭其选择器来取消 该键之前,它一直保持有效。取消某 阅读全文
posted @ 2016-12-29 09:46 brave-sailor 阅读(6506) 评论(0) 推荐(1)
摘要: 不错的文章,推荐一下。 http://www.ibm.com/developerworks/cn/education/java/j-nio/j-nio.html Java NIO非堵塞技术实际是采取Reactor模式,或者说是Observer模式为我们监察I/O端口,如果有内容进来,会自动通知我们, 阅读全文
posted @ 2016-12-29 09:45 brave-sailor 阅读(255) 评论(0) 推荐(0)
摘要: 实现五:统计一个单词可重复的英文文件(假设4G)中每个单词出现的次数,把结果按照英文排序放入一个文件中。并能够检索特定单词的出现次数。由于文件过大,不重复单词总数有限,需要考虑到执行速度和内存使用情况。(淘宝笔试技术题) [java] view plain copy print? import ja 阅读全文
posted @ 2016-12-29 09:43 brave-sailor 阅读(272) 评论(0) 推荐(0)
摘要: 在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列(先进先出)。Java提供的线程安全的Queue可以分为阻塞队列和非阻塞队列,其中阻塞队列的典型例子是BlockingQueue,非阻塞队列的典型例子是ConcurrentLinkedQueue,在实际应用中要根据实际需 阅读全文
posted @ 2016-12-29 09:42 brave-sailor 阅读(520) 评论(0) 推荐(0)
摘要: 本例是把一个大的数组求和的计算的大任务分解到在小范围内求和的小任务,然后把这些小任务之和加起来就是所求之结果。 技术:JDK8.0, Java fork-join模式下的RecursiveTask技术,override compute(). [java] view plain copy print? 阅读全文
posted @ 2016-12-29 09:42 brave-sailor 阅读(662) 评论(0) 推荐(0)
摘要: 本文是Java并发包探秘的第一篇,旨在介绍一下Java并发容器中用的一些思路和技巧,帮助大家更好的理解Java并发容器,让我们更好的使用并发容器打造更高效的程序。本人能力有限,错误难免。希望及时指出。 Java并发包中有很多精心设计的高并发容器。有ConcurrentHashMap、Concurre 阅读全文
posted @ 2016-12-29 09:41 brave-sailor 阅读(321) 评论(0) 推荐(0)
摘要: 它是一个基于链接节点的无界线程安全队列。该队列的元素遵循先进先出的原则。头是最先加入的,尾是最近加入的。 插入元素是追加到尾上。提取一个元素是从头提取。当多个线程共享访问一个公共 collection 时,ConcurrentLinkedQueue 是一个恰当的选择。该队列不允许null元素。 Th 阅读全文
posted @ 2016-12-29 09:41 brave-sailor 阅读(346) 评论(0) 推荐(0)
摘要: Java.util.concurrent包完全建立在CAS之上的,没有CAS就不会有此包。可见CAS的重要性。 CAS CAS:Compare and Swap, 翻译成比较并交换。 java.util.concurrent包中借助CAS实现了区别于synchronouse同步锁的一种乐观锁。 本文 阅读全文
posted @ 2016-12-29 09:40 brave-sailor 阅读(369) 评论(0) 推荐(0)
摘要: 1. 引言 在并发编程中我们有时候需要使用线程安全的队列。如果我们要实现一个线程安全的队列有两种实现方式一种是使用阻塞算法,另一种是使用非阻塞算法。使用阻塞算法的队列可以用一个锁(入队和出队用同一把锁)或两个锁(入队和出队用不同的锁)等方式来实现,而非阻塞的实现方式则可以使用循环CAS的方式来实现, 阅读全文
posted @ 2016-12-29 09:38 brave-sailor 阅读(260) 评论(0) 推荐(0)
摘要: Java 中无锁的线程安全整数 AtomicInteger,一个提供原子操作的Integer的类。在Java语言中,++i和i++操作并不是线程安全的,在使用的时候, 不可避免的会用到synchronized关键字。而AtomicInteger则通过一种线程安全的加减操作接口。AtomicInteg 阅读全文
posted @ 2016-12-29 09:34 brave-sailor 阅读(1383) 评论(0) 推荐(0)
摘要: 线程不安全的HashMap 因为多线程环境下,使用HashMap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap,如以下代码 效率低下的HashTable容器 HashTable容器使用synchronized来保证线程安全,但在线程竞争激烈的情况下H 阅读全文
posted @ 2016-12-29 09:33 brave-sailor 阅读(246) 评论(0) 推荐(0)
摘要: ConcurrentHashMap ConcurrentHashMap是一个线程安全的Hash Table,它的主要功能是提供了一组和HashTable功能相同但是线程安全的方法。ConcurrentHashMap可以做到读取数据不加锁,并且其内部的结构可以让其在进行写操作的时候能够将锁的粒度保持地 阅读全文
posted @ 2016-12-29 09:32 brave-sailor 阅读(329) 评论(0) 推荐(0)
摘要: 跳跃表是一种随机化数据结构,基于并联的链表,其效率可比拟于二叉查找树(对于大多数操作需要O(log n)平均时间),并且对并发算法友好。 关于跳跃表的具体介绍可以参考MIT的公开课:跳跃表 跳跃表的应用 Skip list(跳表)是一种可以代替平衡树的数据结构,默认是按照Key值升序的。Skip list让已排序的数据分布在多层链表中,以0-1随机数决定一个数据的向上攀升与否,通过“空间来... 阅读全文
posted @ 2016-12-29 09:30 brave-sailor 阅读(2008) 评论(0) 推荐(0)
摘要: 比较Java原生的 3种Map的效率。 1. TreeMap 2. HashMap 3. ConcurrentSkipListMap 结果: 模拟150W以内海量数据的插入和查找,通过增加和查找两方面的性能测试,结果如下: Map类型 插入 查找(在100W数据量中) 10W 50W 100W 15 阅读全文
posted @ 2016-12-29 09:29 brave-sailor 阅读(732) 评论(0) 推荐(0)
摘要: Java SE5的Java.util.concurrent包中的执行器(Executor)将为你管理Thread对象,从而简化了并发编程。Executor在客户端和执行任务之间提供了一个间接层,Executor代替客户端执行任务。Executor允许你管理异步任务的执行,而无须显式地管理线程的生命周 阅读全文
posted @ 2016-12-29 09:28 brave-sailor 阅读(479) 评论(0) 推荐(0)