程序员自由创业周记#2:前期准备

pexels-skylar-kang-6368836

本文是程序员进行独立开发创业的记录,会分享创业创业过程中的所思所想和收支明细,文末有往期历史文章。

感恩

上次公开了创业的决定后,得到了很多亲朋好友和陌生朋友的鼓励或支持,以不同的形式,感动之情溢于言表。这些都会记在心里,大恩不言谢~

阅读全文 »

程序员自由创业周记#1:做一场梦吧

pexels-sindre-fs-1106416

“自由”

为了做这一场梦,前前后后准备了4年,从19年接触 独立开发/数字游民/自由职业者 以后,总觉得这才是我一直追求的生活方式,没有职场的阿谀奉承,没有人强制你某个时间点必须坐到某个座位上,再也没有无休止的会,当然,也没有人再固定每个月往你银行卡打钱。然后可以自由的选择工作场所,自由的选择工作时间,自由的选择开发什么产品,自由的选择是否工作,自由的呼吸,自由的活。

阅读全文 »

设计模式-行为型

设计模式-行为型

行为型设计模式主要用于软件运行时复杂的流程控制。包含:模板方法模式、策略模式、命令模式、职责链模式、状态模式、观察者模式、中介者模式、迭代器模式、访问者模式、备忘录模式和解释器模式

阅读全文 »

设计模式-结构型

设计模式-结构型

结构型设计模式包含:代理模式、适配器模式、桥接模式、装饰模式、外观设计模式、享元模式、组合模式

阅读全文 »

设计模式-创建型

设计模式-创建型

创建型设计模式包含:单例模式、原型模式、工厂方法模式、抽象工厂模式、建造者模式

阅读全文 »

设计模式-软件设计的7个原则

设计模式-软件设计的7个原则

概述

在软件开发时为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,通常要遵守一定的设计原则:

  1. 开闭原则
  2. 里式替换原则
  3. 依赖倒置原则
  4. 单一职责原则
  5. 接口隔离原则
  6. 迪米特原则
  7. 合成复用原则
阅读全文 »

Git-合并两个不同的仓库

Git-合并两个不同的仓库

有时候我们需要合并两个不同地址的Git仓库,比如:其中一个仓库A我们在GitHub上部署,另外一个仓库B我们在国内的Coding上部署,两者为同一个工程,如果我们希望将仓库A的所有改动合并到仓库B上。

整个操作的思路是伪造伪造其中一个远程仓库作为另一个仓库的一个分支,然后进行分支合并。

阅读全文 »

MySQL - 基础语法

MySQL - 基础语法

SQL

Structured Query Language:结构化查询语言
定义了了操作所有关系型数据库的规则

SQL 通用语法

  1. SQL 语句可以单行或多行书写,以分号结尾
  2. 可使用空格和缩进来增强语句的可读性
  3. MySQL 数据库的SQL语句不区分大小写,关键字建议大写
  4. 注释:
    1. 单行注释:-- 注释内容 或 # 注释内容 (MySQL独有)
    2. 多行注释:/* 注释内容 */
阅读全文 »

iOS - Runtime 详解

iOS - Runtime 详解

0. 概述

Objective-C Runtime 使得C具有了面向对象的能力,在程序运行时创建,检查,修改类,对象和它们的方法。Runtime 是 C和汇编写的,这里http://www.opensource.apple.com/source/objc4/可以下载Apple维护的开源代码,GUN也有一个开源的Runtime版本,它们都努力保持一致。Apple官方的runtime编程指南

对于 C 语言,函数的调用会在编译期就已经决定好,在编译完成后直接顺序执行。但是 OC 是一门动态语言,函数调用变成了消息发送,在编译期不能知道调用哪个函数,Runtime 就是去解决如何在运行时期找到调用方法的问题。

阅读全文 »

iOS - 系统中的锁

多线程同时访问同一块资源会造成资源抢夺,容易引发数据错乱和数据安全问题,此时我们需要保证资源同时只有一个线程访问,加锁就是为了解决这个问题。

常用的加锁方式:(性能由差到好)

  • OSSpinLock 自旋锁,存在优先级反转问题,破坏了 spinLock,后来Apple推出 os_unfair_lock_t 解决优先级翻转问题
  • dispatch_semaphore 信号量
  • pthread_mutex 互斥锁 (C语言)
  • NSLock 对象锁
  • NSCondition 条件锁
  • NSRecursiveLock 递归锁
  • NSConditionLock 条件锁
  • @synchronized 性能最差
阅读全文 »