Gitnoter 项目弃就一个坑

做一件事中是得要有始有终对不, 虽然我的标题是弃就一个坑, 单这不妨碍我对这个项目做一个称重的总结, 对就是挺沉重的

Read More

Jenkins iOS 打包并上传至蒲公英

CI/CD with Jenkins 折腾良久用于还是给我搞掂了, 下面就来说说我到底是怎么淌过这些坑的(真心就是不停的淌坑, 简直毫无乐趣可言, 不过淌完后还是很畅快的:-D)

Read More

更改 android apk 包名 达到双开甚至多开的目的

起因是那狗日的乐视电视有些app没法安装, 至于为什么不能安装我就懒得说了, 总之就是一个话 Fuck
当然这个难不倒我们程序员们, 用脚指头都能想到是通过包名进行的判断, 那么我们改掉包名不就搞定了, 对吧

Read More

TypeScript 基本语法

TypeScript 是微软开发的 JavaScript 的超集,TypeScript 兼容 JavaScript,可以载入 JavaScript 代码然后运行。TypeScript 与 JavaScript 相比进步的地方 包括:加入注释,让编译器理解所支持的对象和函数,编译器会移除注释,不会增加开销;增加一个完整的类结构,使之更新是传统的面向对象语言。

TypeScript 微软官方网站 http://www.typescriptlang.org/
TypeScript 源码 http://typescript.codeplex.com

Read More

C++ 中的 STD 指的是什么

std 的由来

在标准 C++ 以前,都是用 #include<iostream.h> 这样的写法的,因为要包含进来的头文件名就是 iostream.h
标准 C++ 引入了名字空间的概念,并把 iostream 等标准库中的东东封装到了 std 名字空间中,
同时为了不与原来的头文件混淆,规定标准 C++ 使用一套新的头文件,这套头文件的文件名后不加. h 扩展名,如 iostreamstring 等等,
并且把原来 C 标准库的头文件也重新命名,如原来的 string.h 就改成 cstring(就是把.h 去掉,前面加上字母 c),所以头文件包含的写法也就变成了 #include <iostream>
并不是写了 #include<iostream> 就必须用 using namespace std; 我们通常这样的写的原因是为了一下子把 std 名字空间的东东全部暴露到全局域中(就像是直接包含了 iostream.h 这种没有名字空间的头文件一样),使标准 C++ 库用起来与传统的 iostream.h 一样方便。
如果不用 using namespace std, 使用标准库时就得时时带上名字空间的全名,如 std::cout << "hello" << std::endl;

#include "iostream"#include<iostream> 的区别

前者先在当前目录找 iostream 文件,找不到再去系统头文件路径找,后者反之。
因此,做为一个良好的习惯,在包含系统头文件时尽量用 <>,而在包含自己的工程中的头文件时用 ""
<iostream><iostream.h> 文件是不一样(前者没有后缀),实际上,在编译器 #include 文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码是不一样的。
后缀为.h 的头文件 C++ 标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带 .h 后缀的头文件里,c++ 标准为了和 C 区别开,也为了正确使用命名空间,规定头文件不使用后缀 .h
因此,当使用 <iostream.h> 时,相当于在 C 中调用库函数,使用的是全局命名空间,也就是早期的 C++ 实现;
当使用 <iostream> 的时候,该头文件没有定义全局命名空间,必须使用 namespace std;这样才能正确使用 cout

Read More

Sqlite3 单表级联删除数据

最近在写一个网络相关的 iOS 库, 遇到一个需要级联删除数据的地方, 本来想用外键约束的级联删除来解决
后来发现, 在外键约束时 插入数据是有条件限制的, 在某些情况下插入数据会失败, 不过蛋疼之余还是给我想到解决方案了, 嘻嘻

Read More

iOS Storyboard 和 UIColor 创建出来的颜色显示效果不同

路漫漫其修远兮,吾将上下而求索。
真是绝了,这个问题从我开始搞 iOS 开发时就一直困扰这我了,虽然那时候我也尝试这找解决方案,但是一直都没能找到怎么解决,只是大概知道是配色文件到诊的,但是要如果更改正确却无从下手了。
现在看来,我找不到解决方案也是理所应当的了,至于原因接着往下看。(提示:我搞 iOS 开发那会还是 iOS8 时代)。

Read More

如何计算算法的空间复杂度

类似于时间复杂度的讨论,一个算法的空间复杂度 (Space Complexity)S(n) 定义为该算法所耗费的存储空间,它也是问题规模 n 的函数。渐近空间复杂度也常常简称为空间复杂度。

Read More

如何计算算法的时间复杂度

算法的时间复杂度定义为:

在进行算法分析时,语句总的执行次数 T(n) 是关于问题规模 n 的函数,进而分析 T(n) 随 n 的变化情况并确定 T(n) 的数量级。算法的时间复杂度,也就是算法的时间量度,记作:T(n}=0(f(n))。它表示随问题规模 n 的增大,算法执行时间的埔长率和 f(n) 的埔长率相同,称作算法的渐近时间复杂度,简称为时间复杂度。其中 f( n) 是问题规横 n 的某个函数。

Read More

A dumb UI is a good UI: Using MVP in iOS with swift

前几天面试了一家公司, 问了我一些关于 iOS 开发中的概念性问题, 比如通知和代理的区别, MVVM, MVP, MVC 这些设计模式分别是如何实现的, 虽然平常开发中经常听到这些概念, 但是完全没有刻意去记下它们之间的区别和实现.
主要是我个人认为任何设计模式都是和不能独立于业务逻辑而存在的, 适合什么用什么并不需要刻意去记下这些东西, 需要用到的时候查下资料就好了.
那么话说回来为什么要写这篇博文呢?
自问自答一下吧: 我想证明一个道理, 只要你不是一个咸鱼程序员任何概念性的问题, 只需要一小时就可以搞明白

Read More