Chars's Blog

Never stop living and learning

为了能够将我们项目中的代码能够在后续开发者使用(重用代码),通常使用的方法是将代码按照功能模块编写成API。那么我们就很有必要了解Objective-C语言中常见的编程范式(paradigm),同时还需了解各种可能碰到的陷阱。

Read more »

圆角是一种很常见的视图效果,相比于直角,它更加柔和优美,易于接受。设置圆角会带来一定的性能损耗,如何提高性能是一个需要重点讨论的话题。

大家常见的圆角代码x.layer.cornerRadius = xx; x.clipsToBounds = YES;这两行确实实现了圆角视觉效果。其实使用x.layer.cornerRadius = xx;已经实现了圆角,只不过在某些控件是不生效的,因为某些图层在被切割圆角图层之上而被显示出来了。而x.clipsToBounds = YES;带来的后果就是产生离屏渲染。可以使用instruments中的CoreAnimation工具,打开Color Offscren-Rednered Yellow选项,可见黄色区域部分即是离屏渲染部分。

那么离屏渲染会带来什么?当然后资源损耗,可能产生卡顿。因为在iPhone设备的硬件资源有差异,当离屏渲染不多时,并不是很明显感觉到它的缺点。

Read more »

在计算机科学中,二叉树(英语:Binary tree)是每个节点最多只有两个分支(不存在分支度大于2的节点)的树结构。通常分支被称作“左子树”和“右子树”。二叉树的分支具有左右次序,不能颠倒。

二叉树的第i层至多拥有 2^(i-1) 个节点数;深度为k的二叉树至多总共有 2^(k+1) - 1 个节点数,而总计拥有节点数匹配的,称为“满二叉树”;深度为k有n个节点的二叉树,当且仅当其中的每一节点,都可以和同样深度k的满二叉树,序号为1到n的节点一对一对应时,称为“完全二叉树”。对任何一棵非空的二叉树T,如果其叶片(终端节点)数为n0,分支度为2的节点数为n2,则n0 = n2 + 1。

与普通树不同,普通树的节点个数至少为1,而二叉树的节点个数可以为0;普通树节点的最大分支度没有限制,而二叉树节点的最大分支度为2;普通树的节点无左、右次序之分,而二叉树的节点有左、右次序之分。

Read more »

二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有节点的值均小于它的根节点的值; 若它的右子树不空,则右子树上所有节点的值均大于它的根节点的值; 它的左、右子树也分别为二叉排序树。“中序遍历”可以让节点有序。

binary search tree

Read more »

TensorFlow 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。它灵活的架构让你可以在多种平台上展开计算,例如台式计算机中的一个或多个CPU(或GPU),服务器,移动设备等等。TensorFlow 最初由Google大脑小组(隶属于Google机器智能研究机构)的研究员和工程师们开发出来,用于机器学习和深度神经网络方面的研究,但这个系统的通用性使其也可广泛用于其他计算领域。

tensors_flowing

Read more »

结构化查询语言(英语:Structured Query Language,缩写:SQL),是一种特殊目的之编程语言,用于数据库中的标准数据查询语言,IBM公司最早使用在其开发的数据库系统中。

不过各种通行的数据库系统在其实践过程中都对SQL规范作了某些编改和扩充。所以,实际上不同数据库系统之间的SQL不能完全相互通用。

文章以MySQL数据库为演示环境,主要分享MySQL中的SQL使用。

Read more »

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。

MySQL是一个开源的关系型数据库管理系统,分为社区版和企业版。

Read more »

Objective-C 语言是一门动态语言,它将很多静态语言在编译和链接时期做的事放到了运行时来处理。

对于 Objective-C 来说,这个运行时系统就像一个操作系统一样:它让所有的工作可以正常的运行。Runtime 基本上是用 C 和汇编写的,这个库使得C语言有了面向对象的能力。

在 Runtime 中,对象可以用 C 语言中的结构体表示,而方法可以用 C 函数来实现,另外再加上了一些额外的特性。这些结构体和函数被 runtime 函数封装后,让 Objective-C 的面向对象编程变为可能。

找出方法的最终执行代码:当程序执行[object doSomething]时,会向消息接收者(object)发送一条消息(doSomething),runtime 会根据消息接收者是否能响应该消息而做出不同的反应。

Read more »

在口语里,日语的谓语形式根据说话人之间的上下级关系、亲疏关系的不同而不同。“~ます”、“~です”是对长辈或关系不太亲密的人使用的形式。这种形式我们称为“敬体形”。与此相反,如对方是自己的同辈或晚辈,或者关系比较密切时则使用“简体形”。“简体形”是不使用“ます”、“です”的形式。

动词本身即具有“敬体形”和“简体形”,“~ます”、“~ません”、“~ました”、“~ませんでした”等四种礼貌的表达形式即是“敬体形”,而动词的“基本形”、“ない形”、“た形”都属于简体形。但一类形容词、二类形容词和名词本身没有“敬体形”和“简体形”之分,只有在做谓语时,其谓语形式才具有“敬体形”和“简体形”。

Read more »

全世界大概有几百种编程语言,而其中著名的只有十几种。Python就是著名编程语言之一。它起源于“龟叔”(Guido van Rossum,荷兰人)在1989年圣诞节间的无聊,而为了打发时间所创造。

可见业余时间比工作时间创造出来的东西更容易出名哈,当然,这是开玩笑的。“龟叔”赋予Python“优雅、明确、简单”的特点。

那么,Python适合做什么呢?它主要适用领域:Web网站和各种网络服务(YouTube、Instagram、douban、openstack);系统工具和脚本;作为“胶水”语言把其它语言开发的模块包装起来方便使用。

优点是显著的,但是也少不了缺点。Python不适用的领域:贴近硬件的代码(首选C);移动开发(iOS/Android都有各自的开发语言);因为不能做到告诉渲染,所以不适合游戏开发(首选C/C++)。

Read more »

作为iOS开发,作品App肯定需要提交到App Store审核。平心而论,App Store确实成功地将许多恶意软件拒之门外。但是,对开发者而言,应用程序的审核流程是令人沮丧的黑箱操作。

当然,什么是恶意程序是由Apple来定义。因为App Store的存在,所以,如果想要实现某些特定的功能,唯一的手段就是将设备越狱或者骗过App Store的审查。

官方的App审查永远无法抓到那些钻空子的恶意程序,所以需要另外一套高效的机制,来阻止恶意程序破坏整个操作系统的安全。

Read more »

iOS应用程序的生命周期,还有程序是运行在前台还是后台,应用程序各个状态的变换,这些对于开发者来说都是很重要的。iOS系统的资源是有限的,应用程序在前台和在后台的状态是不一样的。在后台时,程序会受到系统的很多限制,这样可以提高电池的使用和用户体验。

本文所要说到的生命周期,也不仅仅只是应用生命周期;还包括,视图生命周期。

Read more »

日语以东京音为标准音,其声调可以分为如下几种:0型,①型,②型,③型,④型,⑤型,⑥型和⑦型等。高声调表示重音,低声调表示轻音。

0型:表示只有第一拍低,其它各拍都高。

①型:表示只有第一拍高,以下其它各拍都低。

②型:表示只有第二拍高,第一拍和以下其它各拍都低。

③型:表示第二拍,第三拍高,第一拍和以下其它各拍都低。

④型:表示第二拍,第三拍,第四拍高,第一拍和以下其它各拍都低。

依此类推其它型。

Read more »

Sublime Text 是一个代码编辑器(Sublime Text 2是收费软件,但可以无限期试用),也是HTML和散文先进的文本编辑器。Sublime Text是由程序员Jon Skinner于2008年1月份所开发出来,它最初被设计为一个具有丰富扩展功能的Vim。

笔者整理了一些使用快捷方式,以及一些常用插件,分享一下。

Read more »

文章版权,这个词汇以前笔者以前是不怎么有体会的,认为在当今互联网的时代,随便网上Google一下很多地方的文章如出一辙,而作者也是千奇百怪,甚至都不清楚谁才是作者。这篇文章,笔者是遇见了真实的事件,现在很想说一说,看看大家是否也是一样,认为一个版权意识高的视界里,资源与时间都是高效的。不用在看一条,两条都是一样的,浪费时间和资源。

Read more »

笔试面试是程序员应聘绕不过的坎,想进大厂就一定要有知识储备量,而这个却是最佳的考察方式。笔者分享一些收集的iOS面试题,答案仅供参考,如有错误,还请指正。

Read more »

编写软件时,经常需要获取一个对象集合,并通过某些已经条件计算该集合的值。你需要保留符合某个条件的对象,删除那些不满足条件的对象,从而提供一些有意义的对象。

在使用软件iPhoto的过程中,经常会看到这种现象,如果通知iPhoto仅显示等级为三星级或三星级以上的图片,则指定的条件为“照片的等级必须为三星级或三星级以上”。这样,所有照片都需要经过该过滤器过滤。满足条件的对象通过了过滤器,而其他对象被筛除了。最后,iPhoto将显示出所有高质量的图片。

Cocoa提供了一个名为NSPredicate的类,它用于指定过滤器的条件。可以创建NSPredicate对象,通过该对象准确地描述所需的条件,对每个对象通过谓词进行筛选,判断它们是否与条件相匹配。这里的“谓词”通常用在数学和计算机科学概念中,表示计算真值或假值的函数。

Cocoa用NSPredicate描述查询的方式,原理类似于在数据库中进行查询。可以在数据库风格的API中使用NSPredicate类,例如Core Data和Spotlight。可以将NSPredicate看成另一种间接操作方式。例如,如果需要查询满足条件的机器人,可以使用谓词对象进行检查,而不必使用代码进行显示查询。通过交换谓词对象,可以使用通用代码对数据进行过滤,而不必对相关条件进行硬编码。

Read more »

助词,又称为语助词。文法术语,指的是一种词类,属于虚词,附着在其他词汇、词组,或是句子上,作为辅助之用。通常用于句子前、中、后,表示各种语气;或是用于语句中间,表示结构上的关系。

日语中的助词极为丰富,而每一个助词的使用场景也非常多,不得不承认这是一大难点,也是重点。

Read more »

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。
MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。

Read more »
0%