技术博客
  • 归档
  • 分类
  • 标签
  •   
Code talks.

JNI 笔记

最近在看《深入理解 Android: 卷 I》,Framework 层要和 Native 层打交道,一开始肯定得介绍 JNI; 13 年项目中用到 WebP 的时候虽然接触过 JNI,但没有系统学习过,所以这里算是做个笔记。 JNI方法注册:静态注册: 对所有声明了 native 方法的 Java 类,运行 javah -o output packageName.className 生成 .h

2015-03-24
编程
JNI

Swift 初探:集 C++/Golang/Haskell/Rust 众多特性于一身

去年 WWDC 2014 苹果推出了全新的编程语言 Swift,不仅让全球 iOS 开发者为之兴奋,甚至让很多其他阵营的开发者都跃跃欲试。 Objective-C 确实很老了,感觉它就和 C++ 一样,历史包袱太重:本来就要兼容 C,还要不断添加新特性,支持各种编程范式,积重难返。 虽然作为一门新的语言 Swift 还需要逐步完善,一些 API 可能还有变动的可能,但毕竟大势所趋,未来它肯定是

2015-01-23
编程
Golang Rust Haskell C++ Swift

C++11/C++14 中的 Lambda 与 Objective-C 中的 Block

当年上大学我们专业分 C++ (包括 .NET ) 和 Java 两个方向,而我原本是 C++ 方向的,后来阴差阳错走上了 Java -> J2EE -> Android 这条“不归路”,以至于不少当年的同学都以为我一开始是 Java 方向的。 不过当年因为课程设置的原因,《面向对象程序设计( C++ )》和《面向对象程序设计( Java )》是相对应的,都过分强调面向对象那一块,除此

2014-11-15
编程
Objective-C C++ Lambda

Haskell 中的递归思维

之前对于函数式编程语言一直没有系统学习过,只是在 C# 、Objective-C 等语言中接触过闭包等概念,但这些只是函数式编程的一点皮毛。当然这也正说明了函数式编程语言对传统面向过程/面向对象编程语言的深刻影响。 与 Scala 仍然兼容面向过程/面向对象不同,Haskell 是一种纯粹的函数式编程语言。 最近一段时间对 Haskell 的学习,几乎颠覆了以往面向过程、面向对

2014-09-27
编程
算法 Haskell

基本数据结构和算法的 Golang 实现

记得大一上《数据结构》的时候,老师一开始就跟我们讲: 程序 = 数据结构 + 算法 虽然知道这个很重要,但说实话这几年在项目中确实也没怎么用到过真正意义上的数据结构和算法。 当然这可能跟 Java / C# 等偏应用层的语言做了高度封装有关,像链表、哈希表等都帮你实现好了。 但是,一直觉得作为一个有追求的程序员,绝对不能仅仅满足于会用,还要“知其所以然”。

2014-08-30
编程
Golang 算法

Rust 浅尝辄止

大概是今年初的时候第一次听说 Mozilla 发布的新编程语言 Rust ,作者是 JavaScript 之父。 但由于个人一直对 JavaScript / HTML5 这些 Web 前端的东西不感冒(现在也就写 blog 用下 MarkDown / HTML ),所以当时也没怎么去深入了解。 后来偶然了解到,Rust 和 Golang 一样标榜的是高并发、系统编程语言,于是

2014-07-19
编程
Rust

在 Golang 中操作 MongoDB

除了 Redis,MongoDB 也是广泛使用的 NoSQL 数据库,甚至有人认为它会全面取代 MySQL。 与 Redis 面向键值存储不同,MongoDB 是面向 BSON 文档的。 虽然在操作方式上和传统 SQL 有些区别,但基本概念还是相似的,而且基于 JSON 的数据操作令开发者很舒服。 MongoDB 官方驱动还没有提供 Golang 支持,mgo 是目前几个开源项目中最出色的。 它

2014-06-13
编程
Golang MongoDB

在 Golang 中操作 Redis

最开始是去年在上家公司通过《Go 语言编程》这本书接触到的 Golang,据说是作者、七牛 CEO 许式伟送给公司的。 虽然个人感觉这书的内容过于蜻蜓点水,不过至少还是通过大致翻看让我对 Golang 这门语言产生了浓厚兴趣。

2014-06-07
编程
Golang Redis

iOS 中 NSUserDefaults 的默认值初始化问题

iOS 中的 SettingsBundle 可以很方便的实现应用设置界面,你甚至都不用像 Android 中一样去自己写 PreferenceActivity ;然后通过 NSNSUserDefaults 就可以像 Android 中的 SharedPreferences 一样存取信息。 而且,与 Android 只能在读取时设置默认值不同;对于 iOS ,你可以在创建 SettingsBun

2014-05-23
编程
iOS Objective-C

iOS / Objective-C 在 API 层面与 Android / Java 的类比

其实在 11 年学 Android 开发之前,本来是准备学 iOS 的。后来因为某些原因([之前文章](/blog/2013/06/25/dev/)有提到过),不得不作罢。 去年入手了 Macbook Pro ,但那时候还纠结于”App or Game”的路线问题,今年初才正式将学习 iOS 提上日程。

2014-05-16
编程
Android Java iOS Objective-C

adb connect 连接 Android 设备的相关问题

最近在公司参与了一个 Android 机顶盒 App 开发,因为设备接口和驱动等原因,不像 Android 手机那样能方便地直接通过 USB 进行调试,只能通过 adb connect 以 TCP / IP 协议通信。 首先让 IT 给机顶盒分配了一个内网 IP ,并和 PC 接入同一局域网,然后在 PC 端运行 adb connect 192.168.xxx.xxx ,很快就连上了,跟

2014-04-10
编程
Android ADB

Java 中 String 的坑:从源码分析 replace 与 replaceAll 的异同

最近快播出了个云帆搜索,公司的项目要用到它的视频搜索 API。 它返回的链接并不能直接调用 QVOD 插件播放,而是先 redirect 到另一个 HTML 页面,然后根据一堆关键字以及 index 从页面或者隐藏的一个 JS 文件中抓取 qvod:// 协议的 URL。 这看起来真的很像是写 Web Spider 了,还好 Java 的 String 类封装了一大堆方法,不然如果用 C 语言连个

2014-02-23
编程
Java

Android 中 Dialog 的 Context 暗藏玄机

今天在开发中遇到了一个关于 Dialog 的 Context 的诡异问题。 原本定义了一个 Dialog 的派生类 BaseDialog ,并调用其重载的构造方法设置了 Theme 。 然后还定义了一个继承 BaseDialog 的 MyDialog ,由于在一个 private 方法中需要用到 Context 的方法,不得已在前面直接声明了一个 Context 对象。 但是在后面调用时发现,由于

2014-01-14
编程
Android

解决 Android 4.0 新的 GC 机制导致的 JNI 异常

今天更新了 Android SDK ,然后在维护 AND-WebP 项目的时候报了一个 JNI 异常: JNI ERROR (app bug): accessed stale local reference 0xe7b00025 (index 9 in a table of size 8) 之前版本的 Android ,虽然使用的是直接指针,但是 GC 不会随便回收对象,因此一般不会出问题。当

2014-01-07
编程
JNI

Hello, Golang!

早就听说 “Golang 是下一代 C “、”Golang 是为云端而生的语言”,前段时间有空学了下语法,确实为其精妙的设计感到叹服: 首先它确实很多地方借鉴了 C 语言,比如 printf 函数、结构体、指针(单凭这个就可见其性能)等,让人感到很亲切; 然后就是升级版的数组 – Slice,这个确实很强大;Java 的 subString() 和这个比都弱爆了,它可是支持任意类型数组,而且

2013-12-14
编程
Golang
1234
© 2013 - 2025 | 署名-相同方式共享