- 博客(65)
- 收藏
- 关注
翻译 【译】DartVM介绍之虚拟机如何运行你的代码
DartVM介绍原文地址:https://mrale.ph/dartvm/此文的书写目的此文章用来作为DartVM团队新成员、潜在的外部贡献者或仅仅是对VM内部有兴趣的任何人提供参考。本文对DartVM进行了高度的概括,并对各种内部组件的细节进行了一些描述。DartVM是用于在原生环境执行Dart代码的一系列组件的集合。其主要包含了一下内容:运行时系统对象模型垃圾回收快照核心库的native方法通过服务协议形成的众多开发体验组件,如调试、性能测量、热加载JIT和AOT编
2021-06-30 11:27:54
1978
原创 入海十年,难求静心
11年毕业,12年就因为一些技术问题的搜索关注到了CSDN,并且也注册加入。数年间,光阴似箭,21年竟悄然走到了眼前。入海回忆入海这十年,幸运的是赶上互联网的大潮,幸运的是有能力入门学以致用,幸运的是有机会陪伴的公司成为了如今的大厂。从懵懂,后知后觉,到现在仿佛是懂了些东西。沉稳但终归技术人,也许身体是懒惰的,但心却总是饥渴的。各种纷繁的技术在眼前,纵然走上了管理岗位,可是这些东西还是不能够不关注、不学习、不掌握的。曾经只是知晓Android,懂得开发几个Activity、接入几个SDK就觉得可以了
2021-03-22 14:35:36
286
1
原创 访问者设计模式Visitor
1 访问者设计模式VisitorCarElement是各种接口的实现轮子引擎整体框架最后——它是一辆车各个组件可对访问者暴露自己的细节访问者拿着细节去做不同的事情,这些事情是和组件本身可能并无紧密关联的以此做到具体操作和固有结构解耦意图将数据结构和数据操作分离解决问题数据结构和数据操作耦合的问题通常数据结构是稳定的但数据操作是易变的个人理...
2019-01-03 20:19:37
305
原创 Android应用开发:LoaderManager在Activity/Fragment中的使用分析
LoaderManager外部接口initLoader:起始 public D> LoaderD> initLoader(int id, Bundle args, LoaderManager.LoaderCallbacksD> callback) { if (mCreatingLoader) { throw new IllegalStateE
2014-10-17 09:44:42
7208
1
原创 Android应用开发:CardView的使用及兼容
引言在Google I/O 2014上,Google公布了Android L Preview版本,此版本的UI有了非常大的改变,很炫很给力!同时,Google也给出了两个可以向下兼容的控件放到了V7包中,分别是RecyclerView和CardView,这篇博文就说一下怎么使用CardView。CardView的包在哪?虽然说CardView整合到了V7中,但是
2014-09-26 23:23:07
100267
5
原创 Android应用开发:社会化平台登录接入
引言最近利用闲暇跑通了微博、QQ、G+在Android上的登录接入功能,虽然不至于说坎坷颇多,但是小麻烦也不少,特此记录一下。另,微信的接入是要花300大洋的,所以没有尝试。QQ登录接入开放平台地址:http://open.qq.com/Android接入文档:http://wiki.open.qq.com/wiki/Android_API%E8%B0%83
2014-09-21 10:57:40
4437
原创 Android应用开发:动画开发——XML动画
引言当今,Android、IOS二分天下,什么Tizen、COS blabla的均为蝼蚁,一看就知道是为打发领导或为花研发资金产出的产品,根本不是为了赢得市场,为的只是博得领导一笑而已,完全可以忽视。而Android开发又因为开发语言以Java为主,入门门槛极低导致基本上是个程序员,泡两天EOE,或Android Developer Training都可以过来说“哥会开发Android
2014-09-11 01:06:48
7556
1
原创 Android应用开发:网络工具——Volley(二)
本文从Volley源码角度来分析一下,一个网络请求在Volley中是如何运作的,也可以看作网络请求在Volley中的生命周期。
2014-09-03 16:31:21
7484
6
原创 Android应用开发:网络工具——Volley(一)
以Cloudant为例详细介绍Android网络请求工具Volley中StringRequest和JsonObjectRequest的使用方法。
2014-09-01 21:14:16
15753
原创 开发实用技巧:Git——介绍
Git分布式版本控制系统。2005 - 至今,创造者:Linus Torvalds。特点:快速、非线性、分支。为什么使用Git?1. 强大Git在开发伊始的目标就是管理Linux内核。目前为止,使用最久、最经典的Linux kernel v2.6版本的不完全统计代码量是592万行,如果这样的一个工程Git都可以信手拈来的话,除了强大我们还能说什么呢?
2014-09-01 00:19:38
2346
原创 Android应用开发:图形绘制之硬件加速
引言在Android3.0后,Android的2D渲染通道开始支持硬件加速,也就是说所有View的Canvas绘画动作都会使用GPU,同时也代表着应用程序会损耗更多的内存。而在Android4.0(API14)之后硬件加速功能就被默认开启了。如果你的应用程序是由各种标准View和Drawable组成的,那么硬件加速并不会引起任何不适。众所周知,使用硬件加速会调用到OpenGL,但是Op
2014-08-29 15:07:24
8571
原创 Android应用开发:Dialog使用123
完整、详尽的从设计到开发介绍了Android系统中关于Dialog的使用详情。本质上,Dialog的使用非常简单,更多的则是关于应用、产品质量与用户体验的追求。无论是移动互联网狂潮也好,还是传统企业也好,质量、用户体验都是需要与时俱进的。·
2014-08-28 00:30:57
5191
2
原创 Android应用开发:Fragment与大型数据缓存
引言在Android应用开发:Fragment的非中断保存setRetaineInstance一文中已经介绍过了如何让Fragment不随着Activity销毁从而保存数据的方法。在移动应用程序的架构设计中,界面与数据即不可分割又不可混淆。在绝大部分的开发经历中,我们都是使用Fragment来进行界面编程,即使保存数据基本上也只是界面相关控件的数据,很少做其他的数据保存,毕竟这样与开发
2014-08-18 23:31:10
7806
原创 Android应用开发:ImageLoader小陷阱——同一个URI
引言ImageLoader是一个被广泛使用的用于图片加载的开源项目,项目地址:https://github.com/nostra13/Android-Universal-Image-Loader关于ImageLoader的使用,作者的README写的已经非常详细了,我在这里就不再赘述。Android应用都是分别运行在各自的dalvik虚拟机中,而由于
2014-08-14 14:47:40
7893
1
原创 Android应用开发:Fragment的非中断保存setRetaineInstance
引言首先,要明确什么叫“非中断保存”。熟悉Fragment的开发人员都知道,Fragment是依附于Activity的。当Activity销毁时,Fragment会随之销毁。而当Activity配置发生改变(如屏幕旋转)时候,旧的Activity会被销毁,然后重新生成一个新屏幕旋转状态下的Activity,自然而然的Fragment也会随之销毁后重新生成,而新生成的Fragment中的各个
2014-08-14 13:47:04
9200
5
原创 Android应用开发:搞定带标签滑动界面
首先介绍需要用到的库库名来源android-support-v4Android SDKPagerSlidingTabStriphttps://github.com/astuetz/PagerSlidingTabStrip用v4是需要用到他的ViewPager以及Fragment,而PagerSlidingTabStri
2014-07-15 16:21:32
12963
1
翻译 V4L2文档翻译(十三)
http://linuxtv.org/downloads/v4l-dvb-apis/dmabuf.htmlI/O流 (DMA缓存引用)这是一个实验性接口,将来可能发生改变DMABUF框架提供了在多设备见共享缓存的通用方法,支持DMABUF的设备驱动可以将一个DMA缓存以文件句柄的方式输出到用户空间(输出者规则),以文件句柄的方式从用户空间获取一个DMA缓存,这个文件句柄是之前其
2014-05-05 14:17:03
5342
1
翻译 V4L2文档翻译(十二)
http://linuxtv.org/downloads/v4l-dvb-apis/io.html第三节:输入和输出V4L2 API定义了一些不同的方法来从设备读取或写入,所有需要与应用程序交换数据的驱动最少必须支持其中之一。在打开一个V4L2设备后会自动选择使用经典的I/O方法read()和write(),当驱动不支持写或读时会失败。其他的方法必须通过协商。应用程序通
2014-05-05 10:54:19
6541
翻译 V4L2文档翻译(十一)
http://linuxtv.org/downloads/v4l-dvb-apis/ch02s08.html压缩格式定义码描述V4L2_PIX_FMT_JPEG'JPEG'待定,见VIDIOC_G_JPEGCOMP VIDIOC_S_JPEGCOMPV4L2_PIX_FMT_MPEG'MPEG'MP
2014-05-05 10:53:34
3893
原创 初识Tesseract
因为组织上的需要,开始接触OCR技术。在问了Google大叔后,他告诉我去找Tesseract吧,开源界很好用的一个OCR软件。然后我就来了 :)其实最终是需要用在手机上,但是为了最快速的熟悉一下,决定现在PC(Ubuntu)上体验一下,跑通后再寻求手机上的应用实践。Tesseract介绍Tesseract是Ray Smith于1985到1995年间在惠普布里斯托实验室开发的一
2014-04-16 21:14:08
12793
1
原创 常见开源协议名词解释
常见开源协议名词解释1. Contributors和RecipientsContributors 指的是对某个开源软件或项目提供了代码(包括最初的或者修改过的)发布的人或者实体(团队、公司、组织等),Contributors 按照参与某个软件开源的时间先后,可以分为 an initial Contributor 和 subsequent Contributors。Recipie
2014-04-16 21:11:41
2033
原创 常用开源协议BSD/APACHE/GPL/LGPL/CPL/MIT概述
常见开源协议概述现今存在的开源协议很多,而经过Open Source Initiative组织通过批准的开源协议目前有58种http://www.opensource.org/licenses/alphabetical。 我们在常见的开源协议如BSD, GPL, LGPL,MIT等都是OSI批准的协议。如果要开源自己的代码,最好也是选择这些被批准的开源协议。BSD协议BSD开源
2014-04-16 21:10:33
4043
翻译 V4L2文档翻译(九)
RGB格式RGB组合格式名字RGB组合格式描述此格式用来匹配PC图形帧缓存。每个像素占据8,16,24或32个位,他们都是组合像素格式,其意为在内存中所有像素数据都是相邻排列的。当使用这些格式之一时,驱动应该上报颜色空间为V4L2_COLORSPACE_SRGB。表2.6 组合RGB图像格式定义码Byte 0Byte 1Byte
2014-04-16 21:07:27
9209
翻译 V4L2文档翻译(八)
http://linuxtv.org/downloads/v4l-dvb-apis/pixfmt.html第二节:图像格式V4L2 API首先是被设计成让设备与应用程序交换图像数据,struct v4l2_pix_format和v4l2_pix_format_mplane结构体定义了内存中图片的格式和布局。早期用作单平面API,后期就用作了多平面版本。图片格式通过VIDIOC_S_FM
2014-04-14 16:17:46
3033
翻译 V4L2文档翻译(七)
裁剪、组合及缩放的实验性API实验性接口将来也许会发生改变介绍一些视频捕捉设备可以对一张图片的取样部分进行任意尺寸的缩小或放大。然后,这些设备可以讲这个图片插入到更大的图片中。一些视频输出设备可以对输入图片进行部分裁剪,对其进行缩放以及将其插入到视频信号的任意扫描线和横向偏移中。对于这些能力,我们称之为裁剪、缩放和组合。对于视频捕捉设备来说,源是视频信号,由其裁剪目标决
2014-04-11 17:17:25
2519
翻译 V4L2文档翻译(六)
http://linuxtv.org/downloads/v4l-dvb-apis/crop.html图像裁剪、插入及缩放一些视频捕捉设备可以取一张图片的小部分,然后对图片进行任意尺寸的放大或缩小。我们将这些能力称之为裁剪和缩放。一些视频使出设备可以将图片放大或缩小,然后将其插入到视频信号的任意扫描线和横向偏移中。应用程序可以使用一下API来选择视频信号中的区域,查询默认区域以
2014-04-11 17:14:42
4648
1
翻译 V4L2文档翻译(五)
http://linuxtv.org/downloads/v4l-dvb-apis/format.html数据格式数据格式协商不同设备通过应用交换不同种类的数据。比如视频图像,raw或分割的VBI数据,RDS数据电报。甚至是一个种类不同格式也是有可能的,特别是丰富的图像格式。尽管驱动在设备关闭和重打开时提供了一个默认值和一些预置选项,在做数据交换前应用程序也应该协商数据格式。协商意
2014-04-11 17:12:10
2594
1
原创 为何gpio_to_irq不能静态使用?
之前在调试传感器模块的时候发现,在结构体声明的时候irq成员使用gpio_to_irq会报错,而动态使用的话就没有问题。就对gpio_to_irq为什么不能静态使用产生了疑问。恰巧最近又有朋友遇到了同样的问题,也就提醒了我,去找出原因。开始测试我写了一个简单的linux执行程序进行测试,因为在内核源码中发现不同平台对gpio_to_irq的定义不同,有的是宏定义,而更多的则直接是函
2014-04-10 10:52:24
5469
翻译 V4L2文档翻译(四)
扩展控制介绍控制机制原本是用于用户设置(如亮度,饱和度等)。但无论如何,它恰恰证明了对于复杂驱动他是个非常有用的模型,如每个驱动包含一个大型API的子模块。MPEG编码API就是在这样的设计理念下:MPEG标准十分庞大,当前支持MPEG编码的硬件只是声明了这个标准的一小部分。另外,许多关系到怎样将视频编码到MPEG流的参数是定义在MPEG编码芯片中,因为MPEG标准只定义了最终MP
2014-04-08 23:40:21
4178
翻译 V4L2文档翻译(三)
用户控制设备通常有一些用户可设置的控制器,如亮度和饱和度等等一些会展示在图形用户界面的东西。但不同设备会有不同的可用设置,而且此外其可设置值范围、默认值在不同设备上也不尽相同。控制ioctl提供创造一个良好用户界面的信息和机制,这会让这些控制器在任何设备上都能正确的工作。所有控制器都需通过ID值进行访问。V4L2定义了一些用于特殊目的的ID。驱动也可以使用V4L2CID
2014-04-08 23:39:23
3882
翻译 V4L2文档翻译(二)
视频标准视频设备通常支持一种或多种不同的视频标准或更多的标准衍生体。每一个视频输入和输出支持一组标准。这项设置由VIDIOC_ENUMINPUT和VIDIOC_ENUMOUTPUT ioctl返回的v4l2_input和v4l2_output结构体中的std成员体现。V4L2位每一种现今世界的模拟视频标准定义了一个位,且为驱动定义标准留出了一些位。比如,在PAL TV上观看NTSC
2014-04-08 23:25:57
4702
翻译 V4L2文档翻译(一)
相关资料https://www.kernel.org/doc/Documentation/zh_CN/video4linux/v4l2-framework.txthttp://linuxtv.org/downloads/v4l-dvb-apis/第一节:常见API原理打开和关闭设备设备命名相关设备多重打开共享数据流功能设备命名V4L2驱动以内核模块形式存在,
2014-04-08 23:22:00
8140
1
原创 MPU6050 I2C master模式调试记录
MPU6050这个芯片是可以最多外挂5个其他的sensor的(好强大!),所以在将MPU6050调通后也理应对这一部分进行调试,废话不多说,开始说我的调试过程。本文中对i2cset的使用简写,没有总线号和其他参数,读者请自行查阅,相信很好理解的。调试过程使能MPU6050。因为MPU6050上点后为sleep状态,所以要首先对其进行使能,让他开始正常工作。如果不这样,那么其他的
2014-04-04 16:50:26
13172
6
原创 关于HMC5883L驱动书写及调试的总结
刚刚结束对传感器HMC5883L的驱动书写及调试工作,虽然之前对相关的各种知识点都有接触,但是在真正从头书写驱动的时候还是遇到了很多不大不小的麻烦,在这里自行总结一下,也是作为以后驱动书写的一个经验教训,更是对以往所学内核驱动相关知识的复习和总结。事实证明,看了多少书,也不如亲自动手实践学的快,记得牢。关于I2C因为手头有几个传感器,都需要用到I2C接口,所以在之前就将I2C子系统复习并深
2014-03-31 11:33:19
17755
1
原创 Linux I2C设备驱动编写(三)-实例分析AM3359
TI-AM3359 I2C适配器实例分析I2C Spec简述特性:兼容飞利浦I2C 2.1版本规格支持标准模式(100K bits/s)和快速模式(400K bits/s)多路接收、发送模式支持7bit、10bit设备地址模式32字节FIFO缓冲区可编程时钟发生器双DMA通道,一条中断线三个I2C模块实例I2C0\I2C1\I2C2时钟信号能够达到最高48MHz,来自PRCM不
2014-03-18 15:11:11
19236
2
原创 Linux I2C设备驱动编写(二)
在(一)中简述了Linux I2C子系统的三个主要成员i2c_adapter、i2c_driver、i2c_client。三者的关系也在上一节进行了描述。应该已经算是对Linux I2C子系统有了初步的了解。下面再对他们之间的关系进行代码层的深入分析,我认为对他们的关系了解的越好,越有助于I2C设备的驱动开发及调试。带着问题去分析可能会更有帮助吧,通过对(一)的了解后,可能会产生以下的
2014-03-16 23:26:50
23835
3
原创 Linux I2C设备驱动编写(一)
在Linux驱动中I2C系统中主要包含以下几个成员:I2C adapter 即I2C适配器I2C driver 某个I2C设备的设备驱动,可以以driver理解。I2C client 某个I2C设备的设备声明,可以以device理解。I2C adapter是CPU集成或外接的I2C适配器,用来控制各种I2C从设备,其驱动需要完成对适配器的完整描述,最主要的工作是需要完成i2c
2014-03-16 23:24:20
45207
7
原创 Device Tree常用方法解析
Device Tree常用方法解析Device Tree在Linux内核驱动中的使用源于2011年3月17日Linus Torvalds在ARM Linux邮件列表中的一封邮件,他宣称“this whole ARM thing is a f*cking pain in the ass”,并提倡学习PowerPC等其他架构已经成熟使用的Device Tree技术。自此,Device Tree
2014-03-16 23:21:26
22935
6
原创 献给迷茫的自己
混混沌沌,应该可以形容现在自己工作、学习的状态。总是感觉这样下去要整个人都要不好了,作为技术人员,平时也多会记录一下自己的学习经历、技术心得等等。也经常混迹与CSDN的各种技术博文中,对各种大牛深感敬佩。一是敬佩大牛们的技术水平高超,再者就是敬佩大牛们的执着与坚持。 从大学毕业,在沈阳工作,再然后跳到北京从事喜欢的Android相关工作,积累了宝贵的Android知识和工作经验,
2014-03-11 00:00:31
2698
12
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人