在项目开发中,大部分 Android 开发者都使用过 ButterKnife 这个通过注解简化代码的框架。部分 Android 开发者也使用过 xUtils 这种快速开发的框架。
两者均使用到了注解。在上一篇 Java注解、反射,安卓IOC(一) 中我们知道了注解及反射的用法。本篇会分别介绍下其实现机制。
运行时注解
首先我们自己简单实现类似 xUtils 这种运行时注解框架。
绑定 View 控件
创建注解:
```java
@Retention(RetentionPolicy.RUNTIME)//运行时注解
@Target(ElementType.FIELD)//Target为属性
public @interface
继续阅读 »
docker
docker 使用go语言开发,对进程进行封装隔离。
more
docker的三个基本概念
一、镜像(Image)
Docker中的文件系统(操作系统的完整root文件系统),提供容器运行时所需的程序,文件,资源,配置及配置参数(匿名卷,环境变量,用户),镜像不会包含任何动态数据,其中的内容在构建后不会发生任何的变化,Docker的镜像设计基于Union FS设计为分层存储的架构。镜像的构建一层一层前者是后者的基础,构建完成后不再发生变化。
二、容器(container)
容器是镜像的运行实体(实质为进程),容器运行时以镜像为基础层创建当前的容器存储层,容器存储层的生命周期与容器相同,保存于容器存储层
继续阅读 »
为什么 UIScrollView 的滚动会导致 NSTimer 失效?
定时器里面有个runoop mode,一般定时器是运行在Defaultmode上但是如果滑动了这个页面,主线程runloop会转到UITrackingRunLoopMode中,这时候就不能处理定时器了,造成定时器失效,原因就是runroop mode选错了。
解决办法有2个:
1:更改mode为NSRunLoopCommonModes(无论runloop运行在哪个mode,都能运行)
2:切换到主线程来更新UI界面的刷新
继续阅读 »
分析:此题根据如何来表示一条指令,有两种解法:一种是用一个整数(3位数)来表示,另一种用一个对象(含有3个成员,分别表示指令的3个位)来表示。前者的好处是存贮方便,但需要运行时“译码”;后者的好处是不需要运行时“译码”,但有额外的开销在对象的创建和复制上。根据网站的判题结果,二者的时间效率大体相当。more
继续阅读 »
CH41 Creating a Full Plugin
看到这里你可以停了,因为前面的姿势足够你完善自己的~/.vimrc脚本,去修复别人脚本的bug了,绝无讽刺的意思
往下学之前,建议先玩下Potion语言,这是个很小的语言,使用它的目的是为了辅助我们写vim script
CH42 Plugin Layout in the Dark Ages
~/.vim/colors/在这里的文件记录了vim的颜色主题,如果运行:color xxx就能看~/.vim/colors/xxx.vim的配色方案了,查看当前配色都有哪些用:hi
~/.vim/plugin/在这里的文件每次vim启动都会运行一次
~/.vim/ftdetect/这
继续阅读 »
网上有不少文档说明怎样在 linux sublime text 中输入中文的,比如这篇。本人操作系统是 manjaro linux,按照文档操作能在命令行运行能输入中文的sublime text,但要想在桌面上点击图标运行,就出问题了。
继续阅读 »
watch 定时监测
如同名字一样,watch就是监测一个命令的运行结果,省得自己不断的重复输入。
bash
watch -n 2 "nvidia-smi" 每两秒运行一次nvidia-smi
watch -n 2 -d "nvidia-smi" 同时高亮显示每次命令执行后变化的区域
继续阅读 »
在octavia中,实际的loadbalancer服务是由虚拟机提供,所以在虚拟机中需要运行服务与octavia通信,接收octavia发来的操作指令,配置网卡、路由以及haproxy和keepalived软件。
实际上,虚拟机里面会运行amphora-agent进程,对外提供REST API访问,如下所示:
继续阅读 »
编译型和解释型:
1.1 编译型语言写的程序执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件。
1.2 解释型语言的程序不需要编译,省了道工序,解释性语言在运行程序的时候才翻译。
动态语言和静态语言(对应变量而言):
2.1 动态语言:一种在执行期间才去发现数据类型的语言, 动态语言是指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除等在结构上的变化。pythton
2.2 静态语言:即一种在编译时,数据类型是固定的语言。大多数静态类型定义语言强制这一点,它要求你在使用所有变量之前要声明它们的数据类型。C、C++、Java
强类型定义语言和
继续阅读 »
第一章
第一章
1.Android系统架构
~~Linux内核层->系统运行库层:底层驱动
系统运行库层->应用框架层:C/C++库,虚拟机
应用框架层->应用层: API~~
继续阅读 »