[置顶] 谈Fuzz技术挖掘Android漏洞

本文首发于《程序员》杂志,转载须注明出处谈Fuzz技术挖掘Android漏洞 Android系统服务即由Android提供的各种服务,比如WIFI,多媒体,短信等等,几乎所有的Android应用都要使用到系统服务。系统服务在为用户提供便利的同时,也存在着一些风险。比如,如果一个应用获取到了系统服务中的短信服务,那么他就可能会查看用户的短信信息,用户隐私就有可能暴露。此外,如果在使用系统...
阅读(1713) 评论(1)

[置顶] Android应用程序安装过程解析(源码解析)

Android应用程序安装过程解析1.程序安装的4大步骤(1) 拷贝apk文件到指定目录在Android系统中,apk安装文件是会被保存起来的,默认情况下,用户安装的apk首先会被拷贝到 /data/app 目录下。/data/app目录是用户有权限访问的目录,在安装apk的时候会自动选择该目录存放用户安装的文件,而系统出厂的apk文件则被放到了 /system 分区下,包括 /system/app...
阅读(2375) 评论(1)

[置顶] Android适配难题全面总结

支持多种屏幕Android 可在各种具有不同屏幕尺寸和密度的设备上运行。对于 应用,Android 系统在不同设备中提供一致的开发环境, 可以处理大多数工作,将每个应用的用户界面调整为适应其显示的 屏幕。同时,系统提供 API,可用于控制 应用适用于特定屏幕尺寸和密度的 UI,以针对 不同屏幕配置优化 UI 设计。例如,您可能想要不同于手机 UI 的 平板电脑 UI。虽然系统为使您的应用适用于不同的...
阅读(3766) 评论(0)

[置顶] Java泛型详解

泛型概述Java泛型(generics)是JDK 5中引入的一个新特性,允许在定义类和接口的时候使用类型参数(type parameter)。声明的类型参数在使用时用具体的类型来替换。优缺点从好的方面来说,泛型的引入可以解决之前的集合类框架在使用过程中通常会出现的运行时刻类型错误,因为编译器可以在编译时刻就发现很多明显的错误。而从不好的地方来说,为了保证与旧有版本的兼容性,Java泛型的实现上存在着...
阅读(3284) 评论(2)

[置顶] Android的oom详解

oom的定义OOM(out of memory)即内存泄露。一个程序中,已经不需要使用某个对象,但是因为仍然有引用指向它垃圾回收器就无法回收它,当该对象占用的内存无法被回收时,就容易造成内存泄露。Android的oom原因1.资源对象没关闭造成的内存泄露,try catch finally中将资源回收放到finally语句可以有效避免OOM。资源性对象比如:1-1,Cursor 1-2,调用reg...
阅读(3016) 评论(6)

[置顶] Android的ANR详解(原因和方案)

ANR的定义在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框。用户可以选择“等待”而让程序继续运行,也可以选择“强制关闭”。所以一个流畅的合理的应用程序中不能出现anr,而让用户每次都要处理这个对话框。因此,在程序里对响应性能的设计很重要,这样系统不会显示ANR给...
阅读(1384) 评论(0)

[置顶] Android Handler机制剖析

android的handler机制是android的线程通信的核心机制Android UI是线程不安全的,如果在子线程中尝试进行UI操作,程序就有可能会崩溃。Android中的实现了接收消息的“消息队列” ——【MessageQueue】阻塞式地从消息队列中接收消息并进行处理的“线程” ——【Thread+Looper】可发送的“消息的格式” ——【Message】“消息发送函数”——【Handle...
阅读(1491) 评论(0)

[置顶] [leetcode]经典算法题- String to Integer (atoi)

题目描述:把字符串转化为整数值原文描述:Implement atoi to convert a string to an integer.Hint:Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the pos...
阅读(1806) 评论(2)

[置顶] 经典面试题-约瑟夫环

题目描述:0, 1, …, n - 1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。输入:每组数据一行,包含2个整数n和m,分别表示0 到 n - 1 的序列和指定删除的第m个数字。输出:输出能保留到最后的那个数字。样例输入:5 3样例输出:3思路分析: 除了暴力破解其实还有一种方法就是找到n个数字和n-1个数字的之间的关系,利用动态规划的思想...
阅读(2199) 评论(3)

[置顶] 【65】Mybatis详解

Mybatis介绍MyBatis是一款一流的支持自定义SQL、存储过程和高级映射的持久化框架。MyBatis几乎消除了所有的JDBC代码,也基本不需要手工去设置参数和获取检索结果。MyBatis能够使用简单的XML格式或者注解进行来配置,能够映射基本数据元素、Map接口和POJOs(普通java对象)到数据库中的记录。MyBatis工作流程1)加载配置并初始化触发条件:加载配置文件 配置来源于两个...
阅读(4020) 评论(0)

[置顶] 【64】Spring mvc详解

Spring mvc框架Spring web MVC 框架提供了模型-视图-控制的体系结构和可以用来开发灵活、松散耦合的 web 应用程序的组件。MVC 模式导致了应用程序的不同方面(输入逻辑、业务逻辑和 UI 逻辑)的分离,同时提供了在这些元素之间的松散耦合模型封装了应用程序数据,并且通常它们由 POJO 组成。视图主要用于呈现模型数据,并且通常它生成客户端的浏览器可以解释的 HTML 输出。控制...
阅读(5117) 评论(1)

[置顶] 【57】android图片印刻,阳刻,素描图效果处理

介绍我参与开发的妙趣剪纸app使用的图片处理相关的技术关于妙趣剪纸,各大android商店都可以下载,下面贴出小米商店的链接妙趣剪纸下载软件效果截图 如何实现上面的图片处理效果呢1.初始化高斯矩阵ProcessFactory.IniGauss_2(ProcessFactory.gauss_radius); //初始化高斯矩阵2.转化为灰度图Bitmap bmpGrayscale=ProcessF...
阅读(5588) 评论(1)

[置顶] 【53】java的多线程同步剖析

synchronized关键字介绍:synchronized锁定的是对象,这个很重要例子:class Sync { public synchronized void test() { System.out.println("test开始.."); try { Thread.sleep(1000); }...
阅读(3688) 评论(1)

[置顶] 【52】java多线程剖析

线程的状态:线程共有下面4种状态:新建状态(New):新创建了一个线程对象,当你用new创建一个线程时,该线程尚未运行。就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权。运行状态(Running):就绪状态的线程获取了CPU,执行程序代码。阻塞状态(Blocked):阻塞状态是线程因为某种原因放...
阅读(3335) 评论(6)

[置顶] 【51】java设计模式-工厂设计模式剖析

工厂设计设计模式的分类:工厂模式在《Java与模式》中分为三类:1)简单工厂模式(Simple Factory):不利于产生系列产品;2)工厂方法模式(Factory Method):又称为多形性工厂;3)抽象工厂模式(Abstract Factory):又称为工具箱,产生产品族,但不利于产生新的产品;这三种模式从上到下逐步抽象,并且更具一般性。GOF在《设计模式》一书中将工厂模式分为两类:工厂方法...
阅读(3735) 评论(2)

[置顶] 【50】java 匿名内部类剖析

匿名内部类介绍:匿名内部类也就是没有名字的内部类正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口匿名内部类的声明格式如下:new ParentName(){ ...// 内部类的定义 }匿名内部类的使用场景:.只用到类的一个实例 。 ·类在定义后马上用到。 ·类非常小(SUN推荐是在4行代码以下) ·给类命名并不会...
阅读(3553) 评论(0)

[置顶] 【49】java内部类剖析

什么是内部类:定义在其他类(outer class)中的类被称作内部类。内部类可以有访问修饰服,甚至可以被标记为 abstract 或 final。 内部类与外部类实例有特殊的关系,这种关系允许内部类访问外部类的成员,也包括私有成员。内部类分为以下四种:内部类(inner class) 局部内部类 匿名内部类 静态嵌套类为什么要使用内部类:在《Think in Java》中有这样一句话:使用内...
阅读(3961) 评论(2)

[置顶] 【43】Activity的几种LaunchMode及使用场景

standard 模式这是默认模式,每次激活Activity时都会创建Activity实例,并放入任务栈中。使用场景:大多数Activity。singleTop 模式如果在任务的栈顶正好存在该Activity的实例,就重用该实例( 会调用实例的 onNewIntent() ),否则就会创建新的实例并放入栈顶,即使栈中已经存在该Activity的实例,只要不在栈顶,都会创建新的实例。使用场景如新闻类或...
阅读(5735) 评论(1)

[置顶] 【42】android Context深度剖析

android程序和java程序的区别Android程序不像Java程序一样,随便创建一个类,写个main()方法就能跑了,而是要有一个完整的Android工程环境,在这个环境下,我们有像Activity、Service、BroadcastReceiver等系统组件,而这些组件并不是像一个普通的Java对象new一下就能创建实例的了,而是要有它们各自的上下文环境,也就是我们这里讨论的Context。...
阅读(5765) 评论(0)

[置顶] 【39】FlexboxLayout使用介绍

FlexboxLayout介绍:Flexbox 也称为弹性盒子模型 或伸缩盒子模型,广泛用于前端开发,做过前端 web 的都知道Bootstrap 中有一套强大的 CSS Grid网格样式。Bootstrap 的出现 大大提高了前端开发的效率,并且引领了响应式布局、跨平台开发的潮流。FlexboxLayout 就是类似于 bootstrap 中的Grid栅格系统但又不相同的强大控件,其实更接近于前...
阅读(3931) 评论(0)

[置顶] 【38】java的集合框架(容器框架)

Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些 Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的“子接口”如List和Set。   所有实现C...
阅读(3221) 评论(0)

[置顶] 【36】按层打印二叉树

算法题目大都比较抽象,可以通过举例子来搞清楚具体的逻辑。题目:从上到下,按照从左往右打印二叉树每一层的结点。二叉树的结点:class BinaryTreeNode{ int mValue; BinaryTreeNode mLeft;; BinaryTreeNode mRight; }思路: 我们发现规律:先遍历的结点,它的子节点也会先被遍历到,...
阅读(3813) 评论(0)

[置顶] 【35】栈的压入弹出判断

题目:给定两个整数序列,第一个序列是栈的压入序列,判断第二个是不是栈的弹出序列?假设不重复,比如1,2,3,4,5和4,5,3,2,1思路: 如果下一个弹出的数字刚好是栈顶数字,那么弹出。不在栈顶,持续压入,知道弹出的数字和栈顶一样,如果压完,还没找到,那么返回false。 代码:boolean isPopOrder(int[] push,int[] pop,int length){ boo...
阅读(4245) 评论(0)

[置顶] 【34】包含min函数的stack

题目:实现一个包含min函数的栈,min和push,pop都是o(1)时间思路: 采用一个辅助的栈,来存储不同阶段的最小值 - 代码:push(int value){ //data是数据栈,min是辅助栈用来存储最小值 data.push(value); if(min.size() < 0 || value < min.top()){ min.push(v...
阅读(4133) 评论(2)

[置顶] 【22】-快速排序随机选择元素的优雅解法

关于常规解法,请参考上一篇博客,链接如下: 面试之路(19)-快速排序详解介绍一种优雅的解法public int partition(int data[],int length,int start,int end) throws Exception{ if(data == null || length <= 0||start = length){...
阅读(6305) 评论(0)

[置顶] 面试之路(21)-链表的倒序实现

链表的倒序实现思路分析: 改变链表的形状是不妥的,需要和面试官沟通 采用stack来存储遍历的节点,因为递归可以来实现stack的功能,也可以采用递归实现 java代码:stack实现:class ListNode{ int key; ListNode next; } void reverseStack(ListNode head){...
阅读(4017) 评论(0)

[置顶] 面试之路(20)-字符串中空格替换一类问题详解

题目描述实现一个函数,把字符串中的空格替换为%20,例如“we are happy”,转换为“we%20are%20happy”思路分析: 遍历的方法,时间复杂度是n×n 采用双指针,从后往前复制数组,遍历统计空格,每增加一个空格,数组长度增加2,设置联两个指针p1,p2,p1指向旧数组的末尾,p2指向新数组的末尾,根据末尾是否是空格分类复制 代码:public void replaceBlank(...
阅读(3883) 评论(1)

[置顶] 【19】-快速排序详解

快速排序定义由C. A. R. Hoare在1962年提出 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。步骤1)设置两个变量i、j,排序开始的时候:i=0,j=N-1; 2)以第一个数组元素作为关键数据,赋值给key,即key=A[0]; 3)...
阅读(8366) 评论(0)

[置顶] 面试之路(18)-java的函数参数传递类型之值传递还是引用传递

关于这个问题争论了很久,最近也是偶然发现这个问题 经典名言:O’Reilly’s Java in a Nutshell by David Flanagan (see Resources) puts it best: “Java manipulates objects ‘by reference,’ but it passes object references to methods ‘by val...
阅读(4266) 评论(3)

[置顶] 【17】-冒泡排序详解

冒泡排序定义它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。步骤 1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 3.针对所有的元素重复以上的步骤,除了最后一个。 4.持续每次对...
阅读(8831) 评论(1)

[置顶] 面试之路(16)-归并排序详解(MergeSort)递归和非递归实现

归并排序的概念及定义归并排序(Merge)是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两...
阅读(1491) 评论(0)

[置顶] 【15】-java实现二分查找

二分查找在面试中经常被遇到,这个方法十分优雅介绍二分查找可以解决(预排序数组的查找)问题:只要数组中包含T(即要查找的值),那么通过不断缩小包含T的范围,最终就可以找到它。一开始,范围覆盖整个数组。将数组的中间项与T进行比较,可以排除一半元素,范围缩小一半。就这样反复比较,反复缩小范围,最终就会在数组中找到T,或者确定原以为T所在的范围实际为空。对于包含N个元素的表,整个查找过程大约要经过log(2...
阅读(7427) 评论(4)

[置顶] 【14】-java的单例设计模式详解

预加载模式代码:public class Singleton { private volatile static Singleton singleton = new Singleton(); private Singleton() { } public static Singleton getInstance() { return singleto...
阅读(7062) 评论(6)

[置顶] 【11】-java递归和非递归二叉树前序中序后序遍历

二叉树的遍历对于二叉树来讲最主要、最基本的运算是遍历。 遍历二叉树 是指以一定的次序访问二叉树中的每个结点。所谓 访问结点 是指对结点进行各种操作的简称。例如,查询结点数据域的内容,或输出它的值,或找出结点位置,或是执行对结点的其他操作。遍历二叉树的过程实质是把二叉树的结点进行线性排列的过程。假设遍历二叉树时访问结点的操作就是输出结点数据域的值,那么遍历的结果得到一个线性序列。 从二叉树...
阅读(7922) 评论(0)

[置顶] LeetCode(69)-Reverse String

题目:Write a function that takes a string as input and returns the string reversed.Example: Given s = "hello", return "olleh".思路: 题意:反转字符串 不用考虑为空的情况,这种情况sb.toString()也是null,倒叙遍历,StringBuffer相加 代码:public...
阅读(2750) 评论(0)

[置顶] LeetCode(30)-Pascal's Triangle

题目:Given numRows, generate the first numRows of Pascal's triangle.For example, given numRows = 5, Return[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ]思路 题意是要用数组表示帕斯卡三角形 输入一个数值,显示相应行数的【...
阅读(4140) 评论(0)

[置顶] android的Binder通信机制java层浅谈-android学习之旅(88)

1.Service Manager的Java代理对象在Java层中,Service Manager的代理对象类型为ServiceManagerProxy。它继承并且实现了IServiceManager接口,其中四个成员函数和一个变量如下: getService、checkService:获取Java服务代理对象 addService:注册Java服务 listService:获取已经注册的ja...
阅读(2438) 评论(0)

[置顶] AndroidBinder进程间通信系统-android学习之旅(86)

目录前言及知识准备 Service组件结构 Clinet组件结构 与Binder驱动程序交互 总结 Binder进程间通信实例 问题本次主要介绍Android平台下Binder进程间通信库。所谓通信库,就是Adroid在应用程序框架层中将各种Binder驱动操作封装成一个Binder库,应用程序可以方便地调用库中提供的接口进行通信。这次将介绍Binder库的结构以及相关知识。在Binder库中,se...
阅读(2628) 评论(2)

[置顶] Android通过编译源代码提供系统服务-android学习之旅(85)

通过编译android4.1.2的源代码,添加一个FregServer的系统服务,以及一个服务代理FregClient具体分为三部分,client,common,server,common中规定了client和common的接口,和一些公共方法client部分代码#define LOG_TAG "FregTest"#include #include <binder/ISe...
阅读(1806) 评论(0)

[置顶] 从驱动层分析android的Binder机制-android学习之旅(83)

前言及知识准备Binder驱动程序Service组件的注册和启动Clinet应用获取服务本次主要介绍Android平台下Binder进程间机制。从机制的组成出发,将按照Binder驱动程序、Binder服务的注册和启动、Client应用获取服务三个方面来讲述。最后针对该模块提出了自己的问题以及思考首先介绍Binder机制的组成。第一部分就是Binder驱动程序,它存在于内核层,是服务提供者和服务使用...
阅读(1596) 评论(0)

[置顶] Android利用ViewPager仿微信主界面-android学习之旅(78)

首先是介绍ViewPager这个控件 ,这个控件需要pagerAdapter作为容器来提供数据,同时pagerAdapter的数据源是View数组效果图如下部分代码如下,实现如下的方法mPagerAdapter = new PagerAdapter(){ @Override public int getCount() {...
阅读(2078) 评论(0)

[置顶] Android万能适配器Adapter-android学习之旅(74)

万能适配器的代码的github地址是https://github.com/fengsehng/CommonAdapter万能适配器的代码的github地址是https://github.com/fengsehng/CommonAdapter万能适配器的代码的github地址是https://github.com/fengsehng/CommonAdapter!!!!!!!!!!!!!!!!!!!!!...
阅读(2520) 评论(0)

[置顶] Android ColorMatrix类图像颜色处理-黑白老照片、泛黄旧照片、高对比度等效果

在Android中,对图像进行颜色方面的处理,如黑白老照片、泛黄旧照片、高对比度、低饱和度等效果,都可以通过使用颜色矩阵(ColorMatrix)来实现。1.颜色矩阵(ColorMatrix)介绍  颜色矩阵M是一个5*4的矩阵,如图1所示。在Android中,颜色矩阵M是以一维数组m=[a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t]的方式进行存储的。 图1 颜色...
阅读(3097) 评论(4)

Android ListView常用属性解析

ListView常用属性解析下面的程序作为示例<ListView android:id="@id/list" android:layout_width="fill_parent" android:layout_height="fill_parent" android:cacheColorHint="#00000000" android:de...
阅读(306) 评论(3)

Android使用Firebase

Android使用Firebase图1. Android Studio中的助手工具窗口。Firebase是一个移动平台,可帮助您快速开发高品质的应用程序,增加用户群,并赚取更多的收益。 Firebase由互补的功能组成,可以混合搭配以满足您的需求,Google Analytics(分析)为Firebase的核心。 您可以使用图1所示的“助理”窗口,直接从Android Studio探索并整合您的应用...
阅读(315) 评论(1)

Android创建WebP图像

Android创建WebP图像创建WebP图像WebP是Google提供的有损压缩(如JPEG)以及透明度(如PNG)的图像文件格式,但可以提供比JPEG或PNG更好的压缩。 Android 4.0(API级别14)及更高版本支持有损WebP图像,Android 4.3(API级别18)及更高版本支持无损和透明的WebP图像。 此页面显示如何将图像转换为WebP格式以及如何将WebP图像转换为PNG...
阅读(369) 评论(1)

AndroidStudio基本配置

AndroidStudio基本配置1.配置文件Android Studio 通过 Help 菜单提供对两个配置文件的访问:studio.vmoptions:自定义 Studio Java 虚拟机 (JVM) 的选项,如堆内存和缓存大小。idea.properties:自定义 Android Studio 的属性,如插件文件夹路径或最大支持文件大小。2.配置文件位置Windows:%USERPROFI...
阅读(431) 评论(1)

《重构》一书总结(二)

《重构》一书总结(二)重构的重点,在于对那些代码进行重构,如果重构不当,反而适得其反。重构代码终结如下1.Duplicated Code 重复代码 2.Large Class 复杂的类 3.Long Parameter List 过长的参数列表 4.Divergent Change 发散式变化 5.Long Method 过长的函数 6.Shotgun Surgrny 霰弹式修改 7.D...
阅读(304) 评论(1)

《重构》一书经典总结(一)

《重构》一书经典总结(一)为何重构1.重构改进软件设计 2.重构使软件更容易理解 3.重构提交稿编程速度 4.重构帮助找到bug何时重构1.三次法则 第一次做某事的时候去做,第二次会产生反感,但还是会做,第三次就应该重构2.添加功能时候重构 3.修补错误时重构 4.复审代码时重构重构面临的难题1.数据库 2.修改接口 3.难以通过重构手法完成的设计改动 4.何时不该重构...
阅读(490) 评论(1)

《Effective Java》经典建议系列(3)

通用程序设计1.将局部变量的作用最小化 2.for-each循环优于传统的for循环 3.了解和使用类库 4.如果需要精确的答案请避免使用float和double 5.基本类型优于装箱基本类型 6.如果其他类型更合适,避免使用字符串 7.当心字符串连接的性能 8.通过接口引用对象 9.接口优先于反射机制 10.谨慎的使用本地方法 11.谨慎的进行优化 12.遵守普遍接受的命名惯...
阅读(280) 评论(1)

《 Effective Java》关于泛型,方法和枚举,注解的建议

泛型27.优先考虑泛型方法 28.利用有限制通配符来提高API的灵活性 29.优先考虑类型安全的异构容器枚举30.用enum代替int常量 31.用实例域代替序数 32.用EnumSet代替位域 33.EnumMap代替序数索引 34.用接口模拟可伸缩的枚举 35.注解优先于命令模式 36.坚持使用override注解 37.用标记接口定义类型方法类38.检查参数的有效性 39....
阅读(230) 评论(3)

从产品的角度看中国有嘻哈的火爆

本篇来自好朋友jj(张俊杰)2017年8月29日从产品的角度看中国有嘻哈的火爆“你有freestyle吗”,『中国有嘻哈』(以下简称『嘻哈』)里这句听烂了的话无疑反应了下半年异军突起的这款综艺节目的火爆程度。在看了这么多期后我突然思考起来,为什么这款节目能将一个不算主流的文化在大众中引爆。反复琢磨之后,发现它的确下了很多功夫,不只是吴亦凡而已。如果把这个节目当做一款产品的话,在不同的阶段它都比较好的...
阅读(219) 评论(1)

面向开发者的 Android 8.0 Oreo 详细介绍

面向开发者的 Android 8.0 Oreo 引言Posted By: Dave Burke, VP of Engineering翻译 by fengsehng(刘朋)经过一年多的开发和测试,开发人员和早期采用者(谢谢!),我们现在准备正式推出Android 8.0 Oreo到世界各地。 Android 8.0带来了许多伟大的功能,如图片,自动填充,集成即时应用程序,Google Play保护,...
阅读(759) 评论(5)

《Effective Java》的前26条建议

Think in Java的前26条建议1.考虑用静态工厂方法代替构造器2.遇到有多个构造器参数时要考虑使用构建器3.用私有构造器或者枚举类型强化Singleton模式4.通过私有构造器强化不可实例化的能力5.避免创建不必要的对象6.消除过期的对象引用7.避免使用终结方法8.覆盖equals()方法时遵守通用约定9.覆盖equals时总是要覆盖hashCode()方法10.始终要覆盖toString...
阅读(721) 评论(3)

Android -对图片Drawable进行变色

Android 图片DrawableCompat利用setTint()对图片Drawable进行变色1.利用color资源对Drawable变色Drawable对象的来源不限制,可以是从资源getResource().getDrawable(int resourceId)也可以是其他的方式得到的DrawableDrawable wrappedDrawable = DrawableCompat.wra...
阅读(450) 评论(1)

程序员业余时间赚钱的8大途径

1.提高自己的知名度,打造自己的品牌。这个过程需要程序员不断的提高自己的实力,不仅仅是技术实力,还有运营自己的能力。每个人都可以是一个品牌,对于一个程序员来说,我们的ID就是我们的品牌。而构成品牌的有多个要素: * 博客 * 知乎 * 微博 * github等平台通过在不同平台的运营,提高自己的影响力。连接各个平台的核心是我们的ID。我们需要在用户看到ID就和你联系起来,所以要起一个令人印象...
阅读(1164) 评论(1)

fecebook移动端AI实践方案

随着视频成为人们沟通的越来越受欢迎的方式,我们希望为大家提供最先进的创意工具来帮助用户表达自己。我们最近开始在Facebook应用程序中测试新的创意效果相机,帮助人们将视频转化为艺术品。这种技术被称为“风格转换”。它采用一种形象风格的艺术品质,就像梵高绘画的样式,并将其应用于其他图像和视频。直到现在,通常需要将内容发送到数据中心进行大型计算机服务器处理,这是一项技术难点。我们开发了一个新的移动深度学...
阅读(378) 评论(1)

Android TextView设置图片技巧

经常遇到要在textview旁边设置图片的需求,总结一下。布局中android:drawableRight="@drawable/rightdrawable"图片的显示和隐藏隐藏textView.setCompoundDrawables(null,null,null,null);显示Drawable drawable = MyApplication.getInstance().getResource...
阅读(513) 评论(1)

Facebook安卓Feed流的内存优化实践

引言大量的用户每天在Android设备上使用Facebook,滚动新闻Feed流页面,包括个人资料,活动,页面和组,与他们关心的人员和信息进行互动等一系列行为。 所有这些不同的Feed类型都由Android Feed Platform小组创建的平台提供支持,因此我们对Feed平台进行的任何优化都可能提高我们的应用程序的性能。 我们专注于页面的滚动性能,因为我们希望用户在滚动他们的Feed流页面时有一...
阅读(2471) 评论(1)

java必备技能-集合类的遍历删除和包含判断

集合类的遍历删除和包含判断这里用List举例循环删除1.常用的方式是for循环遍历删除这样的方式会有问题,因为删除的时候会改变元素的顺序,会发生前移,这样同一个坐标对应的元素会发生变化。2.推荐采用迭代的方式遍历删除代码如下:Iterator it = list.iterator(); while(it.hasNext()){ String x = it.next();...
阅读(247) 评论(1)

动态加载布局LayoutInflater.inflate()源代码解析

动态加载布局LayoutInflater.inflate()源代码解析如何获取LayoutInflater获得 LayoutInflater 实例的三种方式1.LayoutInflater inflater = getLayoutInflater(); //调用Activity的getLayoutInflater()2.LayoutInflater localinflater =(LayoutIn...
阅读(395) 评论(1)

量子计算机的现状和趋势

量子计算机的现状和趋势量子计算机概述计算机是一种新型的运算 它具有具有强大的并行处理数据的能力,可解决现有计算机难以运算的数学问题。因此,它成为世界各国战略竞争的焦点。量子计算机的优势量子计算机与现有的电子计算机以及正在研究的光计算机,生物计算机等的根本区别在于其信息单元不是比特。而是量子比特qubit,即是0和1两个状态的叠加。 因此单个量子cpu具有强的平行处理数据的能力。其运算能力随量子处理数...
阅读(781) 评论(1)

比特币入门之获取,消费和特点

如何获取比特币比特币通过公开的复杂算法 生成。任何人都可以下载软件制造 比特币,但需要极高的计算能力。 由于比特币特殊的算法,随着参与 制造比特币的人越来越多,对计算 能力的要求也在迅速提高。 2010 年 7 月,当比特币软件 发布 V0.3 版时,一篇报道宣称 : 能源使用的分析表明,比特币的市 场价值已经超过了产生它们所需 要的能量成本。在 2010 年 12 月, 对于一台普通的个人电脑...
阅读(986) 评论(1)
571条 共29页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:892840次
    • 积分:14715
    • 等级:
    • 排名:第820名
    • 原创:565篇
    • 转载:3篇
    • 译文:3篇
    • 评论:470条
    欢迎交流讨论
      个人微信号
      微信公众号:IT面试题汇总
    博客专栏
    文章分类