作者 :刘丰恺
作者博客:若梦浮生
转载需征得作者本人同意
计算机科学的内容包罗万象,其中的经典的课程也是不胜枚举。但是在这其中SICP(Structure and Interpretation of Computer Programs)绝对是其中的经典和翘楚,在2008年以前SICP的MIT6.001课程历来是CS相关专业必修入门课程。
SICP的核心内容是什么呢?众说纷云,有人说是一本有关Lisp/Scheme的书主要讲函数式编程的思想,有的说是一本有关解释器构造的入门书籍,和我们学过的龙书挂钩,但就我个人而言,SICP作为一本入门书更多的不是担负起介绍某一方面具体的知识的重任,而
继续阅读 »
学伴的最新版中为了减少因为Bug导致的应用崩溃,也跟随潮流使用了Tinker作为程序热修复的工具库。
这里记录一下使用Tinker第三方应用平台的简单配置,以飨后人。
Project Gradle
groovy
buildscript {
repositories {
jcenter()
}
dependencies {
// TinkerPatch 插件
classpath "com.tinkerpatch.sdk:tinkerpatch-gradle-plugin:1.1.3"
}
}
Module
继续阅读 »
之前看了一点《C++模版元编程》,今天突然想起来,打算试一下元编程技巧能不能在OJ中使用。
选择了一道简单的有固定范围的题,比较便于用元编程算出所有的解:
题目描述 Description
有一个数n,求小于等于它的所有质数
输入描述 Input Description
n
输出描述 Output Description
一行,每两个质数中有一个空格
样例输入 Sample Input
5
样例输出 Sample Output
2 3 5
数据范围及提示 Data Size & Hint
数据很小(计算客的算素数的题的范围是1000)
由于递归次数不能超过256我在中间按照200为一
继续阅读 »
AppCode 中添加了直接对CocoaPods的关联:
但是直接关联 Ruby SDK 和 CocoaPods 的时候会发现提示错误:
ruby
Usage of the constant `Pod::SourcesManager` is deprecated, use `Pod::Config.instance.sources_manager` instead (called from /Applications/AppCode.app/Contents/bin/cocoapods_common.rb:4:in `init_master_repo') Usage of the co
继续阅读 »
EventBus 是人们在日常开发中经常会用到的开源库,即使是不直接用的人,也多少借鉴过事件总线的用法。而且EventBus的代码其实是非常简单的,可以试着阅读一下。
源码阅读系列不采用对功能进行归类的方法进行阅读,而是采用一个刚开始阅读源码的视角,从我们平时的API调用,一步步的去理解设计意图和实现原理。
从这里开始
从这里开始吧,我们最常用的地方就是给一个函数添加上注解,我们先抛开apt生成的table,只看这个运行时版本的订阅设定。
``` java
// eventbus/Subscribe
@Documented
@Retention(RetentionPolicy.RUNT
继续阅读 »
Swift之初见
let常量值
let 表示定义好的常量值,并不一定在编译期确定但是的确只能被初始化一次。
swift
let lfkdsk = 1000 // 直接初始化
let lfkdsk : Int // 没有直接初始化要提供类型推倒
lfkdsk = 100
let lfkdsk = 100 + String(1000) // 类型转化要使用显示转换
let apple = 1000
let lfkdsk = "lfkdsk have \(apple) apples" // 类比Ruby的${}
字典和元组
swift
var shoppingList = ["fuck
继续阅读 »
Effective CPP 学习笔记
1.Cpp 是一个语言联邦
2.以const,enum,inline替换 #define
预处理器会带来诸多问题,但还是有很大的用途,所以这条仅适用于能用以上三种的情况。
3.尽可能使用const
high-level const :从右至左的第一个const (* 右边 指针自身是const)
low-level const :从右向左看的第二个const(* 左边 指针所指对象是const)
const成员函数:const的成员函数中是不能对类本身进行改变的所以说是bitwish的,mutable可解决这个问题。
使用const成员函
继续阅读 »
第二章
转义序列: \ + 1,2,3位的8进制数 或 \x + 全部的16进制数
指定字面量的类型:L'a' wchar_t , u8'hi!' utf-8 字符串字面量
变量:变量是具名的,可供程序操作的存储空间。
const:
多文件之间传递const 对象 要在初始化和定义部分都用 extern 标记
const 不允许常量引用(对常量的引用)但const能绑定非量,const能绑定const
``` c++
double dval = 3.14;
const int &ri = dval;
//被转化为
const int temp = dval;
const int &ri
继续阅读 »
Handler - Message - Looper 说起来也就是这么一回事,Looper实现在Thread中负责不断的循环监听处理Message,要不然Thread运行完就自己关了。当你不需要的时候就可以把Looper关了,线程就自动运行完了。
Message
实现了序列化接口,what区分类型,arg的参数使用简单的整形,obj存储对象,data存储一个bundle,target是一个Handler。剩下的就是搞了个对象池回收Message,所以才会推荐用Message.obtain()来新建,其实就是从回收池里拿东西。
总之没什么好说的。
Looper
``` java
继续阅读 »
作者 :刘丰恺
作者博客:若梦浮生
转载需征得作者本人同意
之前试着在Android平台封装了一个轻量级的游戏开发框架JustWeEngine ,因为是轻量级的所以也没想太多,很多地方的处理都不太够,比如关于碰撞事件的处理,就是一个简单的On2的遍历,前一阵还被吐槽了233333。
其实优化On2碰撞的思路是一而贯之的,就是不去处理根本不可能撞在一起的对象。所以就文章讨论一下我了解的在游戏开发中经常被使用的碰撞机制。
示例图
图示是使用了四叉树进行碰撞判断的一个图示,变成紫色的是从四叉树中拿取的离我最近的可能碰撞对象,这里我们只需要处理最近的四个对象就可以了,这个demo感谢F
继续阅读 »