
技术类
文章平均质量分 73
sky1203850702
所有的好走的路都是下坡
展开
-
java线程池ThreadPoolExecutor类使用详解
转自:https://www.cnblogs.com/dafanjoy/p/9729358.html在《阿里巴巴java开发手册》中指出了线程资源必须通过线程池提供,不允许在应用中自行显示的创建线程,这样一方面是线程的创建更加规范,可以合理控制开辟线程的数量;另一方面线程的细节管理交给线程池处理,优化了资源的开销。而线程池不允许使用Executors去创建,而要通过ThreadPoolExec...转载 2019-08-20 15:55:49 · 949 阅读 · 0 评论 -
HashMap、Hashtable、ConcurrentHashMap的原理与区别
转自:https://www.cnblogs.com/heyonggang/p/9112731.html下面直接来干货,先说这三个Map的区别:HashTable底层数组+链表实现,无论key还是value都不能为null,线程安全,实现线程安全的方式是在修改数据时锁住整个HashTable,效率低,ConcurrentHashMap做了相关优化 初始size为11,扩容:newsi...转载 2019-04-08 20:11:28 · 206 阅读 · 0 评论 -
Android中用到的MVP模式
转自:https://blog.youkuaiyun.com/weixin_28774815/article/details/80960779MVP:View不直接与Model进行交互,而是通过presenter来与Model交互,来达成的一种间接交互。presenter与View的交互是通过接口来进行的,更有利于添加单元测试通常View与Precenter是一对一的,但是复杂的view可以绑定多...转载 2019-04-08 18:09:07 · 253 阅读 · 0 评论 -
Android 设计模式之MVC,从一个实例中来理解MVC
转自:https://blog.youkuaiyun.com/qq_36510659/article/details/79073021MVC的介绍MVC是Model-View-Controller的简称Model:模型层,负责处理数据的加载或者存储View:视图层,负责界面数据的展示,与用户进行交互Controller:控制器层,负责逻辑业务的处理那我们为什么要用到MVC模式呢?1...转载 2019-04-08 17:45:19 · 409 阅读 · 0 评论 -
基于Proxy思想的Android插件框架
转自:http://www.cnblogs.com/yxwkf/p/5196235.html意义研究插件框架的意义在于下面几点:减小安装包的体积,通过网络选择性地进行插件下发 模块化升级。减小网络流量 静默升级,用户无感知情况下进行升级 解决低版本号机型方法数超限导致无法安装的问题 代码解耦现状Android中关于插件框架的技术已经有过不少讨论和实现。插件通常打包成apk...转载 2019-04-04 18:42:51 · 244 阅读 · 0 评论 -
Android应用架构之MVVM模式
转自:https://blog.youkuaiyun.com/u012317510/article/details/80247756早期的Android应用开发中,Activity/Fragment承担了过多的职责,它们不仅负责了应用界面的显示,而且负责了业务逻辑的处理。这样一来,Activity/Fragment很容易就变得臃肿、复杂,造成应用难以测试、维护和扩展。随着Android应用开发技术的不断发...转载 2019-04-04 16:40:09 · 413 阅读 · 0 评论 -
Android开发之MVVM新姿势探索
转自:https://github.com/linyongsheng/android-arch-mvvm1、同一个世界,同一个轮回网上有不少关于Android架构的讨论,如MVC, MVP,MVVM。本质上都是一种代码架构思想,并没有明显的孰优孰劣,关键看应用的场景以及实现的细节。或许你跟我一样,写过很多代码,也重构过很多次。项目代码往往起初是混沌状态,再渐至清晰明朗,又随着业务发展及程序...转载 2019-04-04 16:09:37 · 495 阅读 · 0 评论 -
Android之内存管理及优化
转自 https://www.kotlintc.com/articles/2311?fr=sidebar一、Android内存基础物理内存与进程内存物理内存即移动设备上的RAM,当启动一个Android程序时,会启动一个Dalvik VM进程,系统会给它分配固定的内存空间(16M,32M不定),这块内存空间会映射到RAM上某个区域。然后这个Android程序就会运转载 2018-01-05 17:18:38 · 2279 阅读 · 0 评论 -
Android应用程序activity启动流程简介
无论是通过点击应用程序图标来启动Activity,还是通过Activity内部调用startActivity接口来启动新的Activity,都要借助于应用程序框架层的ActivityManagerService服务进程。Service也是由ActivityManagerService进程来启动的。在Android应用程序框架层中,ActivityManagerService是一个非常重要的接口,它原创 2017-08-05 17:14:49 · 578 阅读 · 0 评论 -
EventBus 3.0使用详解
转自:https://www.jianshu.com/p/f9ae5691e1bb01 前言当我们进行项目开发的时候,往往是需要应用程序的各组件、组件与后台线程间进行通信,比如在子线程中进行请求数据,当数据请求完毕后通过Handler或者是广播通知UI,而两个Fragment之家可以通过Listener进行通信等等。当我们的项目越来越复杂,使用Intent、Handler、Broadca...转载 2019-04-29 18:22:25 · 203 阅读 · 0 评论 -
EventBus源码详解
转自:https://www.jianshu.com/p/6da03454f75a在进入主题之前,我们先保持着这样几个疑问,EventBus的使用三要素里,我们为什么要去定义事件方法,并且用到了@subscribe()注解? EventBus.getDefault().register(Object)这行代码到底干了什么?发送事件的时候又做了哪些操作?为什么要在onDestory()做解除绑定...转载 2019-04-29 20:17:59 · 310 阅读 · 0 评论 -
Android: Camera相机开发详解(上) —— 知识储备
转自:https://www.jianshu.com/p/f8d0d1467584前言 上一篇文章介绍了如何调用系统相机进行拍照裁剪等功能,一般情况下这些已经能满足我们的需求了。但是在有些场景和特殊需求下,比如要进行人脸检测、要不间断地抓取多张照片等等,那就需要使用原生Camera来进行开发啦 这里并不打算讲如何用代码去实现,而是先给小伙们介绍相关的知识点,等对这些知识有了大致...转载 2019-05-31 10:10:13 · 1206 阅读 · 0 评论 -
Android中关于屏幕的三个小众知识(宽屏适配、禁止截屏和保持屏幕常亮)
转自:https://www.jb51.net/article/129633.htm前言宽屏适配、禁止截屏和保持屏幕常亮,这三个与屏幕有关的 Android 开发小众知识,说不定什么时候就派上用场。宽屏适配Android的屏幕适配一直以来都在折磨着我们Android开发者,越来越多的手机厂商趋向于全面屏设计,比如今年出厂的 18.5:9 屏幕比例的三星 Galaxy S8 手机,前...转载 2019-07-11 10:11:36 · 408 阅读 · 0 评论 -
android eventbust使用详解
转自:https://www.jianshu.com/p/e7d5c7bda7831、EventBus 简介EventBus是一种用于Android的事件发布-订阅总线,由GreenRobot开发,Gihub地址是:EventBus。它简化了应用程序内各个组件之间进行通信的复杂度,尤其是碎片之间进行通信的问题,可以避免由于使用广播通信而带来的诸多不便。1.1 三个角色Event:事...转载 2019-06-21 14:21:26 · 304 阅读 · 0 评论 -
Android 匿名共享内存C接口分析
转自:https://blog.youkuaiyun.com/yangwen123/article/details/11757487在Android 匿名共享内存驱动源码分析中详细分析了匿名共享内存在Linux内核空间的实现,虽然内核空间实现了匿名共享内存,但仍然需要在用户空间为用户使用匿名共享内存提供访问接口。Android系统在用户空间,C++应用程序框架层,Java层分别提供了访问接口本文首...转载 2019-05-31 16:23:54 · 482 阅读 · 0 评论 -
Android 匿名共享内存C++接口分析
转自:https://blog.youkuaiyun.com/yangwen123/article/details/11768329在上一篇Android 匿名共享内存C接口分析中介绍了Android系统的匿名共享内存C语言访问接口,本文在前文的基础上继续介绍Android系统的匿名共享内存提供的C++访问接口。在C++层通过引入Binder进程间通信机制可以实现跨进程访问匿名共享内存。我们知道Andro...转载 2019-05-31 16:04:56 · 469 阅读 · 0 评论 -
Android 匿名共享内存Java接口分析
转自:https://blog.youkuaiyun.com/yangwen123/article/details/9319773在Android 匿名共享内存驱动源码分析中介绍了匿名共享内存的驱动实现过程,本文在Android匿名共享内存驱动基础上,介绍Android匿名共享内存对外Android系统的匿名共享内存子系统的主体是以驱动程序的形式实现在内核空间的,同时在应用程序框架层提供了Java调用接口...转载 2019-05-31 15:19:51 · 296 阅读 · 0 评论 -
android 共享内存(ShareMemory)的实现
转自:https://www.jianshu.com/p/ed87b12dfe0dAndroid 几种进程通信方式跨进程通信要求把方法调用及其数据分解至操作系统可以识别的程度,并将其从本地进程和地址空间传输至远程进程和地址空间,然后在远程进程中重新组装并执行该调用。然后,返回值将沿相反方向传输回来。Android 为我们提供了以下几种进程通信机制(供开发者使用的进程通信 API)对...转载 2019-05-31 14:45:39 · 4867 阅读 · 0 评论 -
Android匿名共享内存(Ashmem)原理
转自:https://www.jianshu.com/p/d9bc9c668ba6阅读之前,不妨先思考一个问题,在Android系统中,APP端View视图的数据是如何传递SurfaceFlinger服务的呢?View绘制的数据最终是按照一帧一帧显示到屏幕的,而每一帧都会占用一定的存储空间,在APP端执行draw的时候,数据很明显是要绘制到APP的进程空间,但是视图窗口要经过SurfaceFl...转载 2019-05-31 11:16:23 · 878 阅读 · 0 评论 -
Android:Camera2开发详解(上):实现预览、拍照、保存照片等功能
转自:https://www.jianshu.com/p/0ea5e201260f前言在前几篇文章中介绍了如何调用系统相机拍照和使用Camera1的实现自定义相机拍照、人脸检测等功能文章传送门:Android:调用系统相机实现拍照+裁切(兼容7.0以上系统) Android: Camera相机开发详解(上) —— 知识储备 Android: Camera相机开发详解(中) ——...转载 2019-05-31 10:12:30 · 7434 阅读 · 0 评论 -
C语言之尾队列tailq
转载链接: http://blog.youkuaiyun.com/gujing001/article/details/18667485queue和list的结构定义和操作都在'sys/queue.h'中完成, 主要定义了下面四种数据结构:单向列表(single-linked lists)单向尾队列(single-linked tail queue)列表(lists)尾队列(tail转载 2016-12-19 15:25:00 · 2100 阅读 · 0 评论 -
Android Fingerprint -- HAL层的初始化工作
转自: http://www.cnblogs.com/happy-leon/p/5655614.html http://blog.youkuaiyun.com/liuxd3000/article/details/42424179序文:如何调用Hal层库文件每个Hal层库文件有一个入口,即HAL_MODULE_INFO_SYM,上层在调用hal层库文件时会在/system/lib/hw/下面转载 2016-12-16 16:13:27 · 8069 阅读 · 0 评论 -
Hadoop技术内幕:深入解析MapReduce架构设计与实现原理
这里帮宣传下,董西城的书, Hadoop技术内幕:深入解析MapReduce架构设计与实现原理 http://item.jd.com/11226135.html 大致看下目录,就可以系统的了解hadoop的学习思路了。这里把目录贴在这里。 前言第一部分 基础篇第1章 阅读源代码前的准备1.1 准备源代转载 2015-08-21 09:17:02 · 1758 阅读 · 0 评论 -
Hadoop分布式文件系统:架构和设计要点
Hadoop分布式文件系统:架构和设计要点一、前提和设计目标1、硬件错误是常态,而非异常情况,HDFS可能是有成百上千的server组成,任何一个组件都有可能一直失效,因此错误检测和快速、自动的恢复是HDFS的核心架构目标。2、跑在HDFS上的应用与一般的应用不同,它们主要是以流式读为主,做批量处理;比之关注数据访问的低延迟问题,更关键的在于数据访问的高吞吐量。3、HDFS以支转载 2015-08-20 14:41:44 · 575 阅读 · 0 评论 -
Thinking in BigData(一)前序
本文转自: http://blog.youkuaiyun.com/yczws1/article/details/18709003谁也无法说服他人改变,因为我们每一个人都守着一扇只能从内开启的改变之门,不论动之以情或说之以理,我们都不能替别人开门。 ——弗格森 BigData这一名词,第一次蹦出脑袋应转载 2015-08-21 14:40:56 · 721 阅读 · 0 评论 -
Hadoop简介(分布式系统基础架构)
Hadoop求助编辑百科名片 Hadoop示意图一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有着高容错性的特点,并且设转载 2015-08-21 09:47:13 · 1316 阅读 · 0 评论 -
世界沉醉在数据里
作者:郭安琪,唯品会美国研发中心2015年6月9-11日,我在美国加州硅谷参加了第八届全球Hadoop技术峰会(Hadoop Summit 2015)。在短短的3天时间里我既见识到了Hortonwork, Cloudera, SAP, IBM,惠普,雅虎等25+数据服务技术提供商围绕大数据设计开发的产品,也聆听了Schlumberger(能源巨头),verizon(通信巨头),转载 2015-08-20 09:30:58 · 631 阅读 · 0 评论 -
Hadoop导航:版本、生态圈及MapReduce模型
Hadoop版本和生态圈1. Hadoop版本(1) Apache Hadoop版本介绍Apache的开源项目开发流程:主干分支:新功能都是在主干分支(trunk)上开发。特性独有分支:很多新特性稳定性很差,或者不完善,在这些分支的独有特定很完善之后,该分支就会并入主干分支。候选分支:定期从主干分支剥离,一般候选分支发布,该分支就会停止更新新功能,如转载 2015-08-19 09:28:10 · 610 阅读 · 0 评论 -
大数据核心技术ETL简介
前几篇文章都是根据自己所见所知,在前人的基础上加以整合,对大数据概念有了初步的了解。接下来的四篇文章,抛开大数据的概念与基本知识,进入核心。我们从:数据采集、数据存储、数据管理、数据分析与挖掘,四个方面讨论大数据在实际应用中涉及的技术与知识点。核心技术架构挑战:1、对现有数据库管理技术的挑战。2、经典数据库技术并没有考虑数据的多类别(variety)、SQL(结构化转载 2015-08-25 14:53:12 · 11170 阅读 · 0 评论 -
Thinking in BigData(二)大数据时代下的变革
大数据时代的思维变革 A Revolution That Will Transform How We Live, Work, and Think. 不期而遇的一本《大数据时代》将我引进大数据的领域。这个浪里淘沙的时代,我们都站在这个时代改革的前沿,而作为互联网最具爆发力的一种媒介,它给我传递着什么资讯?如果说我们错过了2000年左右的互联网浪潮,错过电商竞转载 2015-08-22 09:34:23 · 2001 阅读 · 0 评论 -
alpha版、beta版、rc版的意思
很多软件在正式发布前都会发布一些预览版或者测试版,一般都叫“beta版”或者 “rc版”,特别是开源软件,甚至有“alpha版”,下面来解释一下各个版本的意思。alpha版:内部测试版。α是希腊字母的第一个,表示最早的版本,一般用户不要下载这个版本,这个版本包含很多BUG,功能也不全,主要是给开发人员和 测试人员测试和找BUG用的。beta版:公开测试版。β是希腊字母的第二个,顾名转载 2016-10-09 10:27:58 · 449 阅读 · 0 评论 -
C语言remove()函数:删除文件或目录
头文件:#include remove()函数用于删除指定的文件,其原型如下: int remove(char * filename);【参数】filename为要删除的文件名,可以为一目录。如果参数filename 为一文件,则调用unlink()处理;若参数filename 为一目录,则调用rmdir()来处理。【返回值】成功则返回0,失败则返回-1,错误原因转载 2016-10-10 15:25:46 · 23397 阅读 · 0 评论 -
C语言的fopen函数(文件操作/读写)
头文件:#include fopen()是一个常用的函数,用来以指定的方式打开文件,其原型为: FILE * fopen(const char * path, const char * mode);【参数】path为包含了路径的文件名,mode为文件打开方式。mode有以下几种方式:打开方式说明r以只读方式打开文转载 2016-10-10 15:32:25 · 30634 阅读 · 0 评论 -
Android 密钥库系统
利用 Android 密钥库系统,您可以在容器中存储加密密钥,从而提高从设备中提取密钥的难度。在密钥进入密钥库后,可以将它们用于加密操作,而密钥材料仍不可导出。此外,它提供了密钥使用的时间和方式限制措施,例如要求进行用户身份验证才能使用密钥,或者限制为只能在某些加密模式中使用。如需了解详细信息,请参阅安全功能部分。密钥库系统由 KeyChain API 以及在 Android 4.3(API转载 2016-12-02 15:14:12 · 5860 阅读 · 1 评论 -
java动态代理机制
动态代理其实就是java.lang.reflect.Proxy类动态的根据您指定的所有接口生成一个class byte,该class会继承Proxy类,并实现所有你指定的接口(您在参数中传入的接口数组);然后再利用您指定的classloader将 class byte加载进系统,最后生成这样一个类的对象,并初始化该对象的一些值,如invocationHandler,以即所有的接口对应的Method转载 2016-10-08 15:57:57 · 384 阅读 · 0 评论 -
Android Fingerprint -- Enroll流程
Enroll流程主要的工作是在hal层以下完成的。对于应用层和framwork层的流程就不做详细分析了。一、preEnroll点击设置中的添加指纹,setting就会调到fingerprintd的preEnroll接口。preEnroll会在指纹TA中生成并保存一个64位的随机数。这个随机数有两个用途:返回给上层,用于填充enroll中的authenticated to转载 2016-10-18 15:01:01 · 7542 阅读 · 2 评论 -
Android反射机制实现与原理
本文介绍Android反射机制实现与原理,在介绍之前,要和Java进行比较,所以先看下Java中的反射相关知识:一、反射的概念及在Java中的类反射 反射主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。在计算机科学领域,反射是一类应用,它们能够自描述和自控制。这类应用通过某种机制来实现对自己行为的描述和检测,并能根据自身行为的状态和结果,调整或修改应用所描述行为的转载 2016-09-30 11:18:23 · 596 阅读 · 0 评论 -
C语言opendir()函数:打开目录函数
相关函数:open, readdir, closedir, rewinddir, seekdir, telldir, scandir头文件:#include #include 定义函数:DIR * opendir(const char * name);函数说明:opendir()用来打开参数name 指定的目录, 并返回DIR*形态的目录流, 和open()类似, 接转载 2016-10-10 16:22:29 · 20434 阅读 · 0 评论 -
snprintf()函数使用方法
众所周知,sprintf不能检查目标字符串的长度,可能造成众多安全问题,所以都会推荐使用snprintf.自从snprintf代替了sprintf,相信大家对snprintf的使用都不会少,函数定义如下:int snprintf(char*str, size_t size,constchar*format, ...);函数说明:最多从源串中拷转载 2016-10-10 16:18:53 · 72197 阅读 · 2 评论 -
C语言fread()函数:读文件函数(从文件流读取数据)
相关函数:fopen, fwrite, fseek, fscanf头文件:#include 定义函数:size_t fread(void * ptr, size_t size, size_t nmemb, FILE * stream);函数说明:fread()用来从文件流中读取数据. 参数stream 为已打开的文件指针, 参数ptr 指向欲存放读取进来的数据空间,转载 2016-10-10 15:43:37 · 17501 阅读 · 0 评论