java
文章平均质量分 80
火山石
架构师,技术Leader
展开
-
【数据结构与算法可视化网站】
网上有很多这类数据结构与算法可视化的网站,能够自己输入数据,然后看对应的数据结构/算法的动图,能够很好地帮助我们理解数据结构与算法。所以,今天我就把自己在学数据结构与算法时,用到可视化网站分享出来。Structure Visualization我之前那篇文章就是在 Data Structure Visualization 网站做的动图,这个网站支持很多种数据结构的动图演示。地址如下:https://www.cs.usfca.edu/~galles/visualization/因为网站是国原创 2022-02-04 16:12:20 · 1379 阅读 · 0 评论 -
Android Native 崩溃日志收集
android和iOS平台的崩溃捕获和收集通过崩溃捕获和收集,可以收集到已发布应用(游戏)的异常,以便开发人员发现和修改bug,对于提高软件质量有着极大的帮助。本文介绍了iOS和android平台下崩溃捕获和收集的原理及步骤,不过如果是个人开发应用或者没有特殊限制的话,就不用往下看了,直接把友盟sdk(一个统计分析sdk)加入到工程中就万事大吉了,其中的错误日志功能完全能够满足需求,而且不需要额外...转载 2018-05-26 22:55:50 · 2021 阅读 · 0 评论 -
常用加密解密算法【RSA、AES、DES、MD5】介绍和使用
为了防止我们的数据泄露,我们往往会对数据进行加密,特别是敏感数据,我们要求的安全性更高。下面将介绍几种常用的加密算法使用。这些算法的加密对象都是基于二进制数据,如果要加密字符串就使用统一编码(如:utf8)进行编码后加密。1.摘要算法常用的摘要算法有MD5,SHA1。摘要算法是一个不可逆过程,就是无论多大数据,经过算法运算后都是生成固定长度的数据,一般结果使用16进制进行显示。 MD...转载 2018-05-15 09:51:57 · 1626 阅读 · 0 评论 -
详解synchronized与Lock的区别与使用
昨天在学习别人分享的面试经验时,看到Lock的使用。想起自己在上次面试也遇到了synchronized与Lock的区别与使用。于是,我整理了两者的区别和使用情况,同时,对synchronized的使用过程一些常见问题的总结,最后是参照源码和说明文档,对Lock的使用写了几个简单的Demo。请大家批评指正。技术点:1、线程与进程:在开始之前先把进程与线程进行区分一下,一个程序最少需要一个进程,而一个...转载 2018-05-11 17:35:40 · 17043 阅读 · 6 评论 -
HTTP1.0、HTTP 1.1、HTTP 2.0之间的主要区别
HTTP1.0与HTTP 1.1的主要区别 长连接节约带宽HOST域HTTP1.1与HTTP 2.0的主要区别 多路复用二进制分帧首部压缩服务器推送一、HTTP1.0与HTTP 1.1的主要区别长连接HTTP 1.0需要使用keep-alive参数来告知服务器端要建立一个长连接,而HTTP1.1默认支持长连接。HTTP是基于TCP/IP协议的,创建一个TCP连接是需要经过三次握手的,有一定的开销,...转载 2018-05-17 20:11:32 · 7482 阅读 · 4 评论 -
JNI 深入讲解
Android上层的Application和ApplicationFramework都是使用Java编写,底层包括系统和使用众多的LIiraries都是C/C++编写的。所以上层Java要调用底层的C/C++函数库必须通过Java的JNI来实现。实际上我们不鼓励使用JNI,除非必须使用。因为一旦使用JNI,JAVA程序就丧失了JAVA平台的两个优点:1、程序不再跨平台。要想跨平台,必须在不同的系统...转载 2018-05-01 22:24:13 · 1090 阅读 · 0 评论 -
Android6.0动态权限整理和分组
6.0权限的基本知识,以下是需要单独申请的权限,共分为9组,每组只要有一个权限申请成功了,就默认整组权限都可以使用了。 group:android.permission-group.CONTACTS permission:android.permission.WRITE_CONTACTS permission:android.permission.GET_ACCOUN...原创 2018-04-17 10:58:52 · 941 阅读 · 1 评论 -
Activity的底层生命周期的回调
转载原文地址:http://blog.csdn.net/yalinfendou/article/details/46909173【yalinfendou的博客】需要了解的几点概念和知识点:Instrumentation是执行application instrumentation代码的基类,这个类在任何application code之前实例化,让你可以监听所有的system与application...转载 2018-05-24 18:27:22 · 718 阅读 · 0 评论 -
FFmpeg的使用和开发
最近因为要音频处理的研究,音频开发,但是有一个难题就是怎么解析与提取音频的数据,于是就找到了FFmpeg。基本上只要做视频音频开发都离不开ffmpeg1.什么是ffmpeg引用wiki百科的解析.FFmpeg是一个自由软件,可以运行音频和视频多种格式的录影、转换、流功能1,包含了libavcodec ─这是一个用于多个项目中音频和视频的解码器库,以及libavformat——一个音频...转载 2018-07-12 15:04:07 · 2875 阅读 · 0 评论 -
ActiveMQ
ActiveMQActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。外文名ActiveMQ支持语言Java,C,C++,C#,Python,Ruby,Perl应用...转载 2018-07-29 19:06:33 · 328 阅读 · 0 评论 -
Android App新手指引开源控件——开源整理
一个App第一次与用户接触或者发生大版本更新时,常常会用户进行新手引导,而一个好的新手指引,往往能够方便新用户快速了解操作你的应用功能。新手指引的重要性,不言而喻。本文搜集整理了Github上一些效果不错的新手指引开源控件,帮助你的应用在用户面前有更好的效果展示。当然,如果你有精力,也可以自己开发维护一套新手指引效果。GuideViewhttps://github.com/binIote...转载 2018-09-18 10:20:33 · 1158 阅读 · 1 评论 -
线程和线程池
在Android中,几乎完全采用了Java中的线程机制。线程是最小的调度单位,在很多情况下为了使APP更加流程地运行,我们不可能将很多事情都放在主线程上执行,这样会造成严重卡顿(ANR),那么这些事情应该交给子线程去做,但对于一个系统而言,创建、销毁、调度线程的过程是需要开销的,所以我们并不能无限量地开启线程,那么对线程的了解就变得尤为重要了。Thread/Runnable/Callable...转载 2018-11-16 10:06:25 · 260 阅读 · 0 评论 -
Android内存优化
避免因不正确使用内存 & 缺乏管理,从而出现 内存泄露(ML)、内存溢出(OOM)、内存空间占用过大 等问题,最终导致应用程序崩溃(Crash)示意图下面,将针对回收 进程、对象 、变量的内存分配 & 回收进行详细讲解2、 针对进程的内存策略a. 内存分配策略由 ActivityManagerService 集中管理 所有进程的内存分配b. ...原创 2018-11-21 10:20:53 · 297 阅读 · 0 评论 -
AOP编程思想
AOP(Aspect-Oriented Programming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当我们需要为分散的对象引入公共行为的时候,OOP则显得无能为力。也就是说,OOP允许你定义从上到下的关系,但并不适合定义从左到右的...转载 2018-12-07 20:35:33 · 764 阅读 · 0 评论 -
Android JNI回调的三种方法
第一种方法在当前函数(同一个线程)里面回调,直接用findClass或者GetObjectClass,进行回调(国内各大博客介绍的普遍方法):java 层代码:/** * Created by jiong103 on 2017/3/23. */public class Sdk { private Sdk() { } //单例 private ...转载 2018-12-25 21:41:02 · 1544 阅读 · 0 评论 -
Android:远程服务Service(含AIDL & IPC讲解)
1. 远程服务与本地服务的区别远程服务与本地服务最大的区别是:远程Service与调用者不在同一个进程里(即远程Service是运行在另外一个进程);而本地服务则是与调用者运行在同一个进程里 二者区别的详细区别如下图:按运行地点分类2. 使用场景多个应用程序共享同一个后台服务(远程服务)即一个远程Service与多个应用程序的组件(四大组件)进行跨进程通信...转载 2019-05-02 14:36:41 · 775 阅读 · 0 评论 -
android动画示例
1.Side-Menu.Android分类侧滑菜单,Yalantis 出品。项目地址:https://github.com/Yalantis/Side-Menu.Android2.Context-Menu.Android可以方便快速集成漂亮带有动画效果的上下文菜单,Yalantis出品。项目地址:https://github.com/Yalantis/Context-Menu.Android3.P...转载 2018-03-21 18:06:30 · 591 阅读 · 0 评论 -
关于View转化成bitmap保存成图片
要转化的view 大致长这样 view_photo.xml[html] view plain copy<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="...转载 2018-03-16 11:34:41 · 4001 阅读 · 0 评论 -
android 序列化与反序列化总结(Serializable和Parcelable)
序列化是指将对象的状态信息转换为可以存储或传输的形式的过程。在Java中创建的对象,只要没有被回收就可以被复用,但是,创建的这些对象都是存在于JVM的堆内存中,JVM处于运行状态时候,这些对象可以复用,但是一旦JVM停止,这些对象的状态也就丢失了。在实际生活中,需要将对象持久化,需要的时候再重新读取出来,通过对象序列化,可以将对象的状态保存为字节数组,需要的时候再将字节数组反序列化为对象。对象序列原创 2017-06-02 17:49:02 · 2555 阅读 · 0 评论 -
Java中的深拷贝(深复制)和浅拷贝(浅复制)
深拷贝(深复制)和浅拷贝(浅复制)是两个比较通用的概念。虽然java自动管理对象的回收,但对于深拷贝(深复制)和浅拷贝(浅复制),我们还是要给予足够的重视,因为有时这两个概念往往会给我们带来不小的困惑。 浅拷贝是指拷贝对象时仅仅拷贝对象本身(包括对象中的基本变量),而不拷贝对象包含的引用指向的对象。深拷贝不仅拷贝对象本身,而且拷贝对象包含的引用指向的所有对象。举例来说更加清楚:对象A1中原创 2017-06-07 18:09:04 · 425 阅读 · 0 评论 -
android滑动冲突的解决方案
Android 中解决滑动的方案有2种:外部拦截法 和内部拦截法。滑动冲突也存在2种场景: 横竖滑动冲突、同向滑动冲突。所以我就写了4个例子来学习如何解决滑动冲突的,这四个例子分别为: 外部拦截法解决横竖冲突、外部拦截法解决同向冲突、内部拦截法解决横竖冲突、内部拦截法解决同向冲突。先上效果图:二、实战1、外部拦截法,解决横竖冲突思路是,重写父控件的onInterceptTouchEvent方法,然原创 2017-06-08 00:03:40 · 760 阅读 · 0 评论 -
常用算法
本文整理了一些算法实例,例如快速排序、二叉树查找等等。1.String/Array/Matrix在Java中,String是一个包含char数组和其它字段、方法的类。常用Api如下:toCharArray() //get char array of a StringArrays.sort() //sort an arrayArrays.toString(char[] a) //convert原创 2017-06-08 00:12:39 · 449 阅读 · 0 评论 -
Android颜色透明度百分比和十六进制对应关系
颜色值(#AARRGGBB)透明度百分比和十六进制对应关系一张表格,基本都概括,方便查找和使用透明度十六进制100%FF99%FC98%FA97%F796%F595%F294%F093%ED92%EB91%E890%E689%E388%E087%DE86%DB85%D984%D683%D482%D181%CF80%CC79%C978%C777%C476%C275%BF74%BD73%BA72%B8原创 2017-10-31 10:02:54 · 33683 阅读 · 0 评论 -
OSGi的思想
正确的理解和认识OSGI技术我们从外文资料上或者从翻译过来的资料上看到OSGi解释和定义,都是直译过来的,但是OSGI的真实意义未必是中文直译过来的意思。OSGI的解释就是Open Service Gateway Initiative,直译过来就是“开放的服务入口(网关)的初始化”,听起来非常费解,什么是服务入口初始化?所以我们不去直译这个OSGI,我们换一种说法来描述OSGI技术。我们来回到我们原创 2017-10-15 21:25:08 · 622 阅读 · 0 评论 -
Java开发中的23种设计模式详解(转)
设计模式(Design Patterns) ——可复用面向对象软件的基础设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模转载 2017-11-25 19:46:36 · 349 阅读 · 0 评论 -
AOP (面向切面编程)
AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。Aspect Oriented Programming(AOP)是较为热门的一个话题。AOP,国内大致译作“面向切面编程”。“面向切面编程”,这样的名字并不是非常原创 2017-11-27 10:59:02 · 330 阅读 · 0 评论 -
Google MultiDex配置方法数超过 64K 的应用
关于 64K 引用限制Android 应用 (APK) 文件包含 Dalvik Executable (DEX) 文件形式的可执行字节码文件,其中包含用来运行您的应用的已编译代码。Dalvik Executable 规范将可在单个 DEX 文件内可引用的方法总数限制在 65,536,其中包括 Android 框架方法、库方法以及您自己代码中的方法。在计算机科学领域内,术语千(简称 K)表示 102原创 2018-01-12 15:44:14 · 318 阅读 · 0 评论 -
十年Java架构师分享
1.源码分析专题详细介绍源码中所用到的经典设计思想,看看大牛是如何写代码的,提升技术审美、提高核心竞争力。帮助大家寻找分析源码的切入点,在思想上来一次巨大的升华。知其然,并知其所以然。把知识变成自己的2.分布式架构互联网时代,系统架构如何迎接高并发流量的挑战。而作为技术开发者,如何去应对技术变革带来的技能危机。基于传统架构到分布式架构演变过程所带来的技术变革进行全面深入讲解。在技术深度和技术广度上...转载 2018-01-21 22:23:36 · 4953 阅读 · 5 评论 -
程序员
链接:https://www.zhihu.com/question/22937279/answer/34409824来源:知乎都说35岁是人生的一道坎,立在「三十而立」和「四十不惑」之间。在国内,过了35岁,对编程还有热情的程序员真心不多了。编程就像登山一样,越往上爬人越少。35岁之后,除了转管理,仍坚持写代码的都是这个行业的中坚力量,必将大有可为。因为,编程不是青春饭,技术才是硬通货。编程绝对是转载 2018-01-16 13:11:21 · 428 阅读 · 0 评论 -
Gradle多渠道打包(动态设定App名称,应用图标,替换常量,更改包名,变更渠道)
最近有个需求一次要打包多个类型的App,而且常量和String.xml都有变量。虽然之前也是一直存在变量,但是每次也仅仅只打包一个。这让我每次改变量,打包9个。要是以后每次都打包9次,我得疯了。根据之前的了解,gradle 应该是可以解决这个问题的。所以就仔细研究了一番。gradle.properties:// build_tools版本号ANDROID_BUILD_TOOLS_VERSION=...转载 2018-02-13 14:11:24 · 1806 阅读 · 0 评论 -
Java虚拟机的类加载器ClassLoader详解
JAVA类装载方式,有两种:1.隐式装载, 程序在运行过程中当碰到通过new 等方式生成对象时,隐式调用类装载器加载对应的类到jvm中。 2.显式装载, 通过class.forname()等方法,显式加载需要的类类加载的动态性体现:一个应用程序总是由n多个类组成,Java程序启动时,并不是一次把所有的类全部加载后再运行,它总是先把保证程序运行的基础类一次性加载到jvm中,其它类等到jvm用到的时候...原创 2018-02-22 14:39:37 · 510 阅读 · 0 评论 -
HashMap的实现原理和底层数据结构
看了下JAVA里面有HashMap、Hashtable、HashSet三种hash集合的实现源码,这里总结下,理解错误的地方还望指正HashMap和Hashtable的区别HashSet和HashMap、Hashtable的区别HashMap和Hashtable的实现原理HashMap的简化实现MyHashMap HashMap和Hashtable的区别两者最主要的区别在于Hashtable是线程...转载 2018-02-22 15:15:02 · 4371 阅读 · 0 评论 -
HashMap的数据结构
1. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难,插入和删除容易。哈希表那么我们能不能综...转载 2018-02-22 15:58:02 · 548 阅读 · 0 评论 -
在网络上摘录的技术点
一、阿里巴巴面试第一个:阿里面试都问什么? :(55分钟)1、开发中Java用了比较多的数据结构有哪些?2、谈谈你对HashMap的理解,底层原理的基本实现,HashMap怎么解决碰撞问题的?这些数据结构中是线程安全的吗?假如你回答HashMap是线程安全的,接着问你有没有线程安全的map,接下来问了conurren包。3、对JVM熟不熟悉?简单说说类加载过程,里面执行的哪些操作?问了GC和内存管...转载 2018-01-21 22:43:41 · 466 阅读 · 0 评论 -
Android实现截屏方式
本文介绍了Android 实现截屏方式整理,分享给大家。希望对大家有帮助可能的需求:截自己的屏截所有的屏带导航栏截屏不带导航栏截屏截屏并编辑选取一部分自动截取某个空间或者布局截取长图在后台去截屏1.只截取自己应用内部界面1.1 截取除了导航栏之外的屏幕?12345678910111213141516171819View dView = getWindow().getDecorView();dVie...转载 2018-03-16 11:33:29 · 18254 阅读 · 6 评论 -
Java的自动装箱与拆箱(Autoboxing and Unboxing)
什么是自动装箱拆箱基本数据类型的自动装箱(autoboxing)、拆箱(unboxing)是自J2SE 5.0开始提供的功能。 一般我们要创建一个类的对象实例的时候,我们会这样: Class a = new Class(parameter); 当我们创建一个Integer对象时,却可以这样: Integer i = 100; (注意:不是 int i = 100; )实际上,执行上面那句代码的时候原创 2017-06-02 17:34:49 · 701 阅读 · 0 评论