- 博客(28)
- 资源 (3)
- 问答 (1)
- 收藏
- 关注
转载 理解 Android 的 Binder 机制
可以说 Binder 是 Android 底层系统的一个特色了,它很好地解决了进程间通讯的问题。其实网上有很多介绍 Binder 的文章,那么本文还是想将 Binder 这部分内容细化一下,更适合于初学者阅读。Binder 产生的背景首先我们说说为什么会出现 Binder 这个东西。作为 iOS 开发者,我还是情不自禁地想去谈谈 iOS app,事实上,iOS 的每一个 app 都是一个独立的
2017-11-30 15:49:56 340
转载 你真的理解AIDL中的in,out,inout么?
前言这其实是一个很小的知识点,大部分人在使用AIDL的过程中也基本没有因为这个出现过错误,正因为它小,所以在大部分的网上关于AIDL的文章中,它都被忽视了——或者并没有,但所占篇幅甚小,且基本上都是官方文档的译文,译者读者其实都不知其然。这几天在研究AIDL,偏偏我又是个执拗的性子,遇着不清不楚的东西就是想把它捋清楚,就下了些功夫研究了下AIDL中的定向tag,研究了下它的 in , ou
2017-11-30 15:37:53 461
转载 Android:学习AIDL,这一篇文章就够了(上)
前言在决定用这个标题之前甚是忐忑,主要是担心自己对AIDL的理解不够深入,到时候大家看了之后说——你这是什么玩意儿,就这么点东西就敢说够了?简直是坐井观天不知所谓——那样就很尴尬了。不过又转念一想,我辈年轻人自当有一种一往无前的锐气,标题大气一点岂不更好?并且大家都是文明人,总归更多的是理解与补充而不是侮辱与谩骂?所以最终还是厚颜用了这么一个不怎么有耻的标题。好了,接下来进入正题,
2017-11-30 15:18:26 324
原创 AIDL 和binder 原理
文章中提到的 IBookManager 和 getBookList 是下面代码中的 IMyAidlInterface 和 sum(**)函数GIT: https://github.com/whtchl/AidlTemplateBinder的原理 要想了解AIDL就需要先了解Binder的原理,所以这里先说一下Binder原理,Binder的原理大概是这样:服务器端:当我们在服务端创建好了一个B
2017-11-30 14:49:04 355
转载 Android中AIDL的工作原理
IPC在这之前我们先简单说一下IPC,IPC是Inter-Process Communication的缩写,是进程间通信或者跨进程通信的意思,既然说到进程,大家要区分一下进程和线程,进程一般指的是一个执行单元,它拥有独立的地址空间,也就是一个应用或者一个程序。线程是CPU调度的最小单元,是进程中的一个执行部分或者说是执行体,两者之间是包含与被包含的关系。因为进程间的资源不能共享的,所以每个系统都
2017-11-30 14:06:11 3216
原创 Android中AIDL的使用详解
AIDL用来做什么AIDL是Android中IPC(Inter-Process Communication)方式中的一种,AIDL是Android Interface definition language的缩写,对于小白来说,AIDL的作用是让你可以在自己的APP里绑定一个其他APP的service,这样你的APP可以和其他APP交互。AIDL的使用在android studio 2.0里
2017-11-30 13:43:12 422
转载 Android进程间通信的几种方式
定义多进程Android应用中使用多进程只有一个办法(用NDK的fork来做除外),就是在AndroidManifest.xml中声明组件时,用android:process属性来指定。不知定process属性,则默认运行在主进程中,主进程名字为包名。android:process = package:remote,将运行在package:remote进程中,属于全局进程,
2017-11-29 16:31:15 278
转载 FutureTask 实现预加载数据 在线看电子书、浏览器浏览网页等
FutureTask 有点类似Runnable,都可以通过Thread来启动,不过FutureTask可以返回执行完毕的数据,并且FutureTask的get方法支持阻塞。由于:FutureTask可以返回执行完毕的数据,并且FutureTask的get方法支持阻塞这两个特性,我们可以用来预先加载一些可能用到资源,然后要用的时候,调用get方法获取(如果资源加载完,直接返回;否则继续等待其
2017-11-29 14:40:40 276
转载 Callable和Future
接着上一篇继续并发包的学习,本篇说明的是Callable和Future,它俩很有意思的,一个产生结果,一个拿到结果。 Callable接口类似于Runnable,从名字就可以看出来了,但是Runnable不会返回结果,并且无法抛出返回结果的异常,而Callable功能更强大一些,被线程执行后,可以返回值,这个返回值可以被Future拿到,也就是说,Future可以拿到异步执行任务
2017-11-29 11:24:58 139
转载 Java 并发专题 : Semaphore 实现 互斥 与 连接池
继续并发方面的知识。今天介绍Semaphore,同样在java.util.concurrent包下。本来准备通过例子,从自己实现到最后使用并发工具实现,但是貌似效果并不是很好,有点太啰嗦的感觉,所有准备直入主题。介绍:Semaphore中管理着一组虚拟的许可,许可的初始数量可通过构造函数来指定【new Semaphore(1);】,执行操作时可以首先获得许可【semaphore.a
2017-11-28 11:18:05 321
转载 Java并发专题 带返回结果的批量任务执行 CompletionService ExecutorService.invokeAll
一般情况下,我们使用Runnable作为基本的任务表示形式,但是Runnable是一种有很大局限的抽象,run方法中只能记录日志,打印,或者把数据汇总入某个容器(一方面内存消耗大,另一方面需要控制同步,效率很大的限制),总之不能返回执行的结果;比如同时1000个任务去网络上抓取数据,然后将抓取到的数据进行处理(处理方式不定),我觉得最好的方式就是提供回调接口,把处理的方式最为回调传进去;但是现在我
2017-11-22 17:02:43 246
转载 Java ExecutorService四种线程池的例子与说明
1、new Thread的弊端执行一个异步任务你还只是如下new Thread吗?new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub }}).start();那你就out太多了,new Thre
2017-11-22 14:35:54 173
转载 Timer的缺陷 用ScheduledExecutorService替代
继续并发,上篇博客对于ScheduledThreadPoolExecutor没有进行介绍,说过会和Timer一直单独写一篇Blog.1、Timer管理延时任务的缺陷a、以前在项目中也经常使用定时器,比如每隔一段时间清理项目中的一些垃圾文件,每个一段时间进行数据清洗;然而Timer是存在一些缺陷的,因为Timer在执行定时任务时只会创建一个线程,所以如果存在多个任务,且任务时间过长,
2017-11-22 13:51:25 177
转载 c3p0如何配置多数据源的解决方法
c3p0如何配置多数据源的解决方法一、问题描述: 项目开发时,用c3p0管理数据连接。但是项目需要动态连接两个以上的数据库,如何用c3p0配置多数据源。二、解决方法: 使用c3p0结合spring提供的数据源路由(DataSource Routing)对象,该对象构造了一个存储多数据源的Map,可以根据指定的key动态的查找对应的数据源。具体实现
2017-11-22 10:06:11 4250 1
转载 c3p0如何配置多数据源的解决方法
c3p0如何配置多数据源的解决方法一、问题描述: 项目开发时,用c3p0管理数据连接。但是项目需要动态连接两个以上的数据库,如何用c3p0配置多数据源。二、解决方法: 使用c3p0结合spring提供的数据源路由(DataSource Routing)对象,该对象构造了一个存储多数据源的Map,可以根据指定的key动态的查找对应的数据源。具体实现
2017-11-22 10:05:53 1011
转载 Spring transaction事务之roll back回滚: rollback-for
试验方法: 写一个单元测试,调用一个service层方法(发生对数据库进行写操作的方法--insert、update、delete)即可. applicationContext.xml 样子(如何设置rollback-for) spring事务管理 方法一--> bean id="transactionMana
2017-11-21 17:22:56 792 1
原创 通过ApplicationContextAware加载Spring上下文环境
项目用到了ApplicationContextAware,通过它Spring容器会自动把上下文环境对象调用ApplicationContextAware接口中的setApplicationContext方法。我们在ApplicationContextAware的实现类中,就可以通过这个上下文环境对象得到Spring容器中的Bean。使用方法如下:1.实现Applicatio
2017-11-17 16:24:02 389
原创 Spring 定时任务之 @Scheduled cron表达式
首先在配置文件头部的必须要有:xmlns:task="http://www.springframework.org/schema/task"1其次xsi:schemaLocation必须为其添加:http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-
2017-11-17 16:11:36 14284
转载 Android:dagger2让你爱不释手-基础依赖注入框架篇
前言dagger2的大名我想大家都已经很熟了,它是解决Android或java中依赖注入的一个类库(DI类库)。当我看到一些开源的项目在使用dagger2时,我也有种匆匆欲动的感觉,因此就立马想一探它的究竟,到底能给我带来怎样的好处。在学习使用dagger2的过程中,我遇到了以下的一些困惑:dagger2中的Inject,Component,Module,Provides等等都是什么东东,有
2017-11-15 17:29:42 248
原创 java用eclipse怎么把main快点打出来
首先在新建类的时候,下面有个选项,只要是选中状态, 类建好只好就会自动包括main方法。其次就是输入“main”,然后按住”Alt+/“,这样就会补全。还有就是你可以打开window-preferences,然后搜索输入assist,可以设置java代码的两项,只要在相应的地方把所有字母字符都输入进去,然后还可以选择延迟时间,到时候你输入的时候,就会自动提示联想内容。
2017-11-13 16:43:37 3693
转载 对称加密和非对称加密介绍和区别
什么是对称加密技术? 对称加密采用了对称密码编码技术,它的特点是文件加密和解密使用相同的密钥,即加密密钥也可以用作解密密钥,这种方法在密码学中叫做对称加密算法,对称加密算法使用起来简单快捷,密钥较短,且破译困难,除了数据加密标准(DES),另一个对称密钥加密系统是国际数据加密算法(IDEA),它比DES的加密性好,而且对计算机功能要求也没有那么高。IDEA加密标准由PGP(Pretty
2017-11-13 11:42:18 3321
转载 Java 加密解密 对称加密算法 非对称加密算法 MD5 BASE64 AES RSA
【最简单的加密】1.简单的概念明文:加密前的信息密文:机密后的信息算法:加密或解密的算法密钥:算法使用的钥匙(读作miyao,正确应该是miyue,但是大家都读miyao)2.简单的例子将123456每位数字都加1后得到234567,其中123456就是明文,234567就是密文,加密密钥就是1,加密算法是每位加
2017-11-13 11:40:52 229
转载 DES/3DES/AES区别
DES/3DES/AES区别公元前400年,古希腊人发明了置换密码。1881年世界上的第一个电话保密专利出现。在第二次世界大战期间,德国军方启用“恩尼格玛”密码机,密码学在战争中起着非常重要的作用。 DES 1977年1月,美国政府颁布:采纳IBM公司设计的方案作为非机密数据的正式数据加密标准(DESData Encryption Standard) 。 目前在国
2017-11-13 11:20:29 527
原创 POS机系统 秘钥体系
Pos系统分为后端服务器收单系统和前端App。--收单系统用32个F,3Des加密一个随机数生成的明文,加密后生成密文。明文(主秘钥)存储在数据库中。--收单系统生成PIN 明文和Track明文(这两个都是随机数),存储在数据库中。然后用主秘钥明文 3DES加密,生成PIN和Track的密文。--银行卡密码明文+银行卡卡号+PIN明文加密 生成银行卡密码密文。 这个密文可以在服务端解
2017-11-13 10:58:57 1880
转载 POS主密钥与工作密钥关联详解
以下是针对POS的卡交易的一种密钥逻辑记录:一、密钥介绍交易主密钥:加载到Pos机中,用于验证工作密钥是否合法等;工作密钥:包括PIN密钥、MAC密钥、磁道密钥,用于加密密码、MAC、磁道信息。在信息上送到服务端前加密。加载的顺序是,先加载主密钥,再加载工作密钥。如果二者不匹配,在加载过程中会报错。二、主密钥加载逻辑我们要加载两部分的密钥到POS机中
2017-11-07 16:28:44 1311
原创 对称加密----AES和DES加密、解密
目前主流的加密方式有:(对称加密)AES、DES (非对称加密)RSA、DSA调用AES/DES加密算法包最精要的就是下面两句话:Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");cipher.init(Cipher.ENCRYPT_MODE, key, zeroIv);CBC是工作模
2017-11-07 10:33:34 326
原创 Rxjava Demo
Git:https://github.com/whtchl/RxjavaDemo/tree/master转换操作符中FlatMap比较有用:/** * 解决多层嵌套的问题。 * 例如网络请求时,第二个请求时基于第一个网络请求的结果进行操作。 */private void flatMap() { Observable.just(1, 2, 3, 4,
2017-11-02 16:48:36 181
BAE部署java tomcat异常
2015-06-22
TA创建的收藏夹 TA关注的收藏夹
TA关注的人