2015-2016年度简记

在校的日子,大量时间自由分配,很多随时的起意都能一一去践行。

工作的日子,新的节奏迫切需要建立新的平衡。得到了很多,失去了很多,一切起于变化,止于新的变化。

博客从wordpress迁移Hexo

因为对hexo的喜爱,决定把博客从wordpress迁移到hexo来。
迁移过程,因为需要对以往的文章重新排版,可能有些觉得没什么营养的就直接删掉了。
即便如此,迁移过程中也有很多不尽如人意的地方,所以耗费了大量时间调整排版。

一些变化

书写方式由Html标签改为Markdown。
不再需要数据库,所有网页均在本地生成为Html。
使用Git管理内容,博客代码均放在Github。
主题基于Yilia改造。

接下来

将自己在业余时间探索的内容沉淀下来,觉得是干货的都会写下来。
目前兴趣主要是移动互联网,所以近期可能更多的会和移动互联网相关。

Life Record

采用一系列词语(记录)来描述每一天,或许记录会有点奇怪,嘿嘿。

详情见该页面: 传送门

管理系统后台采用PHP-CI 3.0框架,管理系统前端基于Bootstarp的管理模板。

Android拓展控件(自定义视图)的方法

方案一

从某个控件派生,拓展其功能。使用该类时,在Layout XML中直接使用类名即可。

优点

方便替换,在需要父控件的,通常可以换成子控件。
方便提供风格控制。

缺点

继承方式的通病,View往往职责很多,在不了解内部机制的情况下往往难以控制,甚至不能控制。
持续拓展时,随着多次继承,职责将越来越混乱。

TitleBaseActivity组件封装整理笔记

TitleBaseActivity布局的方法一

单独制作title_layout.xml,然后在派生的Activity布局开头使用include标签引入该布局,TitleBaseActivity实现提供对Title的控制方法。此时的title_layout.xml是被动的,由引入该布局的Layout XML决定显示它的位置。

优点

预览Layout XML时看到的是完整的布局。

缺陷

所有派生Activity的Layout XML都与title_layout.xml有较强的耦合,实现对用户不透明,用户替换基类需要修改Layout XML。

TitleBaseActivity布局的方法二

单独制作title_layout.xml,然后重写TitleBaseActivitysetContentView,在该方法中分别填充title_layout.xml和参数指定的布局,接着将两个布局合并返回。此时的title_layout.xml可以是主动的,也可以是被动的。如果想将title_layout.xml设计成主动的,设计title_layout.xml时放置具名布局,而此时合并两个布局的方法是将参数指定的布局作为子视图添加到title_layout.xml的具名布局中。如果想将title_layout.xml设计成被动的,设计title_layout.xml则只包含title相关内容,而此时合并两个布局的方法是新建一个布局,将两个布局分别作为子视图添加到新建的布局中。

优点

title_layout.xml将只与TitleBaseActivity有较弱耦合,实现对用户透明,用户替换基类不需要修改Layout XML。

缺陷

预览Layout XML时看到的是部分布局。

总结

通常,看起来用方案二解决问题更优雅一些。

styles.xml中命名空间的问题

背景

因为最近决定重构下自己的代码,所以除了拓展基本UI控件的功能外,补充了UI新增属性的xml配置方式。首先是在attrs.xml中配置的属性,在layout.xml中能以命名空间的方式去访问,接着试图给自己的控件添加几种style。但是问题就是在style.xml中想像在layout一样用命名空间访问属性,却在编译时收到了Error。

状况描述

在styles.xml中使用带有自定义命名空间的属性被报告Error.

《Java核心技术:卷1—基础篇》二次阅读笔记

第一日

  1. strictfp对函数约定使用精准浮点运算,要求运算过程中都截取,已保证在不同机器上结果一致
  2. 类型转换规则与c++不同,详情见反思录
  3. subString之类的函数实际上返回的都是新建的String(其实想想也知道,毕竟String不可修改)
  4. Scanner接受的文件可能不存在,PrintWriter接受的文件或文件名可能也不存在,java将报告一个异常
  5. Scanner直接接受一个字符串作为参数,将会将字符串解析为输入的内容,而不是文件名
  6. breakcontinue都有带标签版本
  7. 如果启动java程序的环境支持控制台,则可以使用System.console
  8. java的启动参数没有文件名,args就是第一个参数