自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 收藏
  • 关注

原创 Android UI加载绘制流程总结

UI绘制流程总结

2022-07-15 16:53:51 483 1

原创 内存分析常用命令和总结

top、dumpsys常用命令解析总结

2022-07-06 17:46:30 1399

原创 自定义流式布局的代码实现

自定义流式布局具体流程:自定义属性:声明、设置、解析获取自定义值attr.xml中声明<resources> <declare-styleable name="FlowLayout"> <attr name="android:gravity"/> <attr name="android:horizontalSpacing" format="dimension|reference"/> </d

2022-02-22 20:20:06 310

原创 Android ClassLoader类加载机制

Android ClassLoader类加载机制概述我们知道Java中的 ClassLoader可以加载 jar 文件和Class文件。在Android中,它们加载的是dex文件。Android中的ClassLoader类型分别是系统类加载器和自定义加载器。其中系统类加载器主要包括3种,分别是 BootClassLoader 、PathClassLoader 和 DexClassLoader 。BootClassLoaderAndroid 系统启动时会使用 BootClassLoader来预加载

2022-02-13 15:26:15 1613

转载 Android源码解析------深入解析OkHttp源码

深入解析OkHttp 源码1 - OkHttp 3.7源码分析(一)——整体架构简介: OkHttp是一个处理网络请求的开源项目,是Android端最火热的轻量级框架,由移动支付Square公司贡献用于替代HttpUrlConnection和Apache HttpClient。随着OkHttp的不断成熟,越来越多的Android开发者使用OkHttp作为网络框架。OkHttp3.7源码分析文章列表如下:· OkHttp源码分析——整体架构· OkHttp源码分析——拦截器·

2022-01-20 13:47:24 384

转载 全网最详细Retrofit源码解析

最详细Retrofit原理、源码解析---------------------------------------------

2022-01-18 16:35:47 1698

原创 onResume中是否可以度量宽高?

onResume中度量宽高是否可以?不确定,需要看onResume在什么时候执行。viewRootImpl需要在执行了requestLayout()之后才会执行onResume方法;而没用执行requestLayout()方法的话就不会调用WindowManager的updateViewLayout()方法,就不会继续执行ViewRootImpl中的setLayoutParams、scheduleTraversals、doTraversals以及Session的relayout、WMS中的relayo

2021-12-08 20:02:27 674

原创 Android Camera音量键连拍shutter动画消失

SDCard存储下,音量键连拍shutter动画消失且不可再点击。原因:SDCard模式下没有设计连拍需求,正常弹出提示语不可进行连拍。然而动画设置有问题,只有shutter消失的动画,没有shutter复原的动画。方法:BaseModuleUi模块中重写onKeyUp和onKeyDown方法:@Overridepublic boolean onKeyUp(int keyCode,KeyEvent event){ switch(keyCode){ case KeyEvent

2021-12-07 14:23:04 161

原创 Camera项目问题--第三方调用点击intent多次弹出问题

前提:短信首次调用相机短信调用相机录像录像后两次点击播放键查看响应:弹出两个选择播放器的弹框期望结果:播放器选择的弹框只弹出一个解决方法:方法一 :保证同一按钮在1秒内只会响应一次点击事件public abstract class OnMultiClickListener implements View.OnClickListener{ // 两次点击按钮之间的点击间隔不能少于1000毫秒 private static final int MIN_CLICK_DELAY_T

2021-12-07 14:21:29 97

原创 Android Camera2对焦框和对焦

预览界面顶部布局,添加点击对焦功能以及相应UIcase R.id.flashOffButton: mCameraHelper.openFlash(); //mCameraHelper.closeFlash(); break;public void openFlash() { // try { // mCameraManager.setTorchMode(mCameraId,true); // } cat

2021-11-23 15:20:33 1996 3

原创 Camera2闪光灯相关

闪光灯相关在Android Camrea2中与Flash有关的只有两个字段:CaptureRequest.FLAH_MODE和CaptureRequest.CONTROL_AE_MODE所有在使用闪光灯时,必须先保证CaptureRequest.CONTROL_MODE为ATUO,而且必须保证CameraCharacteristics.FLASH_INFO_AVAILABLE == trueCaptureRequest.FLAH_MODE这个字段由用户控制的:OFF:this catpure 闪

2021-11-23 15:19:02 729

原创 camera缩略图功能--new

缩略图查询获取图片存在延迟大的问题,通过自定义anysctask实现其doInBackground并在其onPostExecute方法中回调设置缩略图实现异步更新缩略图功能。private class MyTask extends AsyncTask<Object, Integer, Bitmap> { public final Uri uriImage = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; public final

2021-11-23 15:17:36 365

原创 Camera2缩略图预览功能的实现

第一代缩略图打开预览功能,通过自定义实现缩略图的打开展示。通过继承ViewSwitcher.ViewFactory接口实现其makeView方法获取view。具体方法如下:@Overridepublic View makeView() { cursorImage = getContentResolver().query(EXT_CONTENT_URI, PROJECTION_IMAGE, null, nu

2021-11-23 15:15:12 1521

原创 android camera拍照录像切换功能

滑动选择拍照或录像组件实现相关通过自定义view组件实现滑动切换的效果,继承重写view的构造方法进行相关初始化:public HorizontalSelectedView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); this.context = context; setWillNotDraw(false);

2021-11-23 15:10:42 1099 1

原创 Camera2录像功能的实现

录像主要功能在VideoHelper方法中实现录像功能大体流程:创建MedioRecorder实例,以及用于显示预览图像信息的Surface的实例,并调用CaptureRequestBuilder.addTarget()方法,将MedioRecorder和Surface的实例,作为显示层添加到该请求的目标列表中。调用CameraDevice.CreateRequest(CameraDevice.TEMPLATE_RECORED)方法,为新的捕获请求创建一个CaptureRequest.Bui

2021-11-23 15:08:50 1383

原创 android相机预览拍照功能实现

代码目录结构LAUNCHER activity:CameraActivity :onCreate()方法中创建Camera工具类CameraHelper的实例并初始化:mCameraHelper = new CameraHelper(mActivity, textureView, btnImagePreview);重写onClick方法监听拍照点击事件:mCameraHelper.takePicture();CameraHelper类中实现相机的预览与拍照,流程如下:大致流程如下:

2021-11-23 15:05:41 4080 2

原创 Handler、Thread、HandlerThread相关总结

Handler、Thread、HandlerThreadHandler:在android中负责发送和处理消息,通过它可以实现其他支线线程与主线程之间的消息通讯。Thread:Java进程中执行运算的最小单位,亦即执行处理机调度的基本单位。某一进程中一路单独运行的程序。HandlerThread:一个继承自Thread的类HandlerThread,Android中没有对Java中的Thread进行任何封装,而是提供了一个继承自Thread的类HandlerThread类,这个类对Java的Thread

2021-11-23 15:01:40 1097

原创 Activity源码学习总结

Activity源码解析lunchMode相关:https://zhuanlan.zhihu.com/p/265946165activity的启动过程根activity普通activity以下启动过程基于根activity:ActivityManagerService负责四大组件的启动、切换、调度和进程的管理,是android的核心服务,参与了所有应用程序的启动管理。Activity的启动流程围绕AMS,可以大致分为3个部分:Launcher请求AMS的过程AMS到Applicatio

2021-11-23 15:00:10 443

原创 ANR原理分析

ANR原理分析造成ANR原因:InputDispatching Timeout:5秒内无法响应屏幕触摸事件或键盘输入事件BroadcastQueue Timeout :在执行前台广播(BroadcastReceiver)的onReceive()函数时10秒没有处理完成,后台为60秒。Service Timeout :前台服务20秒内,后台服务在200秒内没有执行完毕。ContentProvider Timeout :ContentProvider的publish在10s内没进行完。避免尽量不

2021-11-23 14:55:04 1821

原创 Spring学习笔记

spring底层原理:XML、工厂模式和反射。spring两大核心:IOC和AOPIOC(Inversion of Control)思想基于IOC容器完成,IOC容器底层就是对象工厂。spring提供IOC容器的两种实现方式:1.beanFactory:这是IOC基本实现,是spring的内部的使用接口—类似于懒汉式加载2.ApplicaitonContext:这是beanFactory的子接口,功能更强大,开发用—类似于饿汉式加载ApplicaitonContext的实现类:1.ClassP

2020-08-17 14:38:11 102

原创 常用的七大查找算法以及二分查护和插值查找的改进

目录顺序查找二分查找插值查找二分查找和插值查找的改进斐波那契查找树表查找顺序查找思想: 从线性表的一端开始逐个扫描比对,如果和目标值相等就返回。属于无序查找算法。适用于线性表或者链表的存储结构。代码:public static int search(int n, int[] nums){ for (int i = 0; i < nums.length; i++) { if (nums[i] == n){ return i

2020-08-14 12:22:06 220

原创 Nginx---总结

nginx基本概念反向代理负载均衡动静分离nginx常用命令和设置常用命令配置文件nginx分配策略一个master多个worker的好处注意点nginx基本概念nginx是一个高性能HTTP和反向代理web服务器,提供邮件功能;占用内存少。为性能优化而开发,效率高。支持热部署,稳定性高反向代理正向代理:局域网内客户访问外网服务器,需要访问外网的服务器;访问需要经过一个代理服务器,这就是正向代理。反向代理:只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器后再返回客户端。暴露.

2020-08-06 09:52:05 96

原创 Java面试总结---JUC

JUCvolatileJMM-java memory modelCAS原子类AtomicInteger的ABA问题,原子更新引用?集合不安全各种锁--可重入锁(递归锁)、乐观锁、自旋锁、独占锁/共享锁、读写锁阻塞队列synchronized和lock的区别线程池死锁编码及定位分析volatilevolatile是Java虚拟机提供的轻量级的同步机制。它保证可见性,不保证原子性,禁止指令重排序。如何保证原子性:用AtomicInteger代替int,不用syncJMM-java memory mode

2020-08-02 18:54:45 280

原创 Java面试总结----2

目录SpringMVC工作流程Mybatis中当实体类中的属性名和表中的字段名不一样,怎么办?git命令Redis持久化MySQL什么时候适合建立索引?JVM垃圾回收机制,GC发生在JVM哪部分,有几种GC,他们的算法是什么Redis在项目中使用的场景Elasticsearch和solr的区别单点登录购物车实现过程SpringMVC工作流程Mybatis中当实体类中的属性名和表中的字段名不一样,怎么办?三种解决方案:写SQL语句时起别名,比如:select last_name lastName

2020-07-30 12:01:58 211

原创 Java面试题总结(1)

Java面试总结自增运算编写一个Singleton实例类初始化考点方法的参数传递机制:递归算法和迭代算法成员变量作用域问题Bean的作用域事务的传播属性SpringMVC解决请求乱码问题自增运算public static void main(String[] args) { int i = 1; i = i++;//i先赋值,再加一,最后结果还是1 int j = i++;//j=1,然后i+1---》j=1,i=2 int k = i +

2020-07-29 22:12:23 146

原创 Ribbion的负载均衡机制----Load Balance

Ribbion的七种负载均衡轮询 RoundRobinRule随机 RandomRule重试 RetryRule加权响应 WeightedResponseTimeRule最佳可用 BestAvailableRuleAvailabilityFilteringRuleZoneAvoidanceRuleRibbion通过IRule接口调用AbstractLoadBalanceRule抽象类,这个抽象类实现了Ribbion的各种负载均衡的算法轮询 RoundRobinRule方法:rest接口第几次请求数 %

2020-07-27 15:12:47 959

原创 消息队列问题

消息队列常见应用场景解耦异步流量削峰几种MQ的对比消息队列的缺点缺点 1:系统可用性降低缺点2: 系统复杂性提高缺点3: 一致性问题消息队列:一种“先进先出”的数据结构。常见应用场景解耦系统耦合性越高,容错性越低;任何一个子系统出问题都会导致大量系统不能用。使用消息队列解耦合。用户提交的请求都放在消息队列中。假设其中某个用户请求的系统发生了故障,需要几分钟才能修复;再这段修复的时间内,消息被缓存在消息队列中。当故障的系统恢复后,再去消息队列去取出用户的请求进行处理即可。且用户感受不到故障的存在,

2020-07-23 20:51:53 137

原创 非比较类排序算法----java版(基数排序,计数排序,桶排序)

计数排序、桶排序、基数排序计数排序思想代码时间和空间复杂度桶排序思想代码时间和空间复杂度基数排序思想代码时间和空间复杂度计数排序思想作为非比较类排序算法。计数排序必须要求输入的数据必须是有确定范围的整数。要求知道数组的范围的目的是创建一个长度为这个范围的数组,数组的内容保存的是这个对应下标数字出现的位置。主要过程如下:1.找到待排序序列最小和最大的元素。开辟一个新数组A长度就为max-min2.统计数组中每个值为i的元素出现的次数,存入A的第i项。3.累加完之后反向填充到目标数组中:把每个元素

2020-07-23 17:08:14 276

原创 比较类排序算法---java版

排序算法冒泡排序(交换排序)描述代码时间复杂度和空间复杂的快速排序(交换排序)描述代码:时间和空间复杂度简单插入排序描述代码时间和空间复杂度希尔排序描述代码时间和空间复杂度冒泡排序(交换排序)描述冒泡排序是一种简单的比较类排序算法。排序的时候重复的走访过要排序的数列,一次比较两个元素,如果他们的顺序错误,那么就交换回来,走访过一遍后再来一遍,直到数列有序。具体划分为四步:1–比较相邻的元素,如果第一个比第二个大,交换2–从头至尾的重复1的步骤,这样最后一个元素就是最大的3–针对所有的元素重复以

2020-07-22 20:35:49 263

原创 leetcode443-475中的简单题

leetcode443-443. 字符串压缩447. 回旋镖的数量448. 找到所有数组中消失的数字443. 字符串压缩题目:给定一组字符,使用原地算法将其压缩。压缩后的长度必须始终小于或等于原数组长度。数组的每个元素应该是长度为1 的字符(不是 int 整数类型)。在完成原地修改输入数组后,返回数组的新长度。思路:设置两个标志,一个标识字母第一次出现的位置,另一个计算此字母出现的次数;用返回值作为char[]的索引并进行字母和数字的插入。代码:class Solution {

2020-07-13 22:22:10 240

原创 leetcode387-441简单题

leetcode383. 赎金信383. 赎金信题目:给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串ransom能不能由第二个字符串magazines里面的字符构成。如果可以构成,返回 true ;否则返回 false。(题目说明:为了不暴露赎金信字迹,要从杂志上搜索各个需要的字母,组成单词来表达意思。)思路:用一个长度26的vector...

2020-07-03 20:52:34 184

原创 Pycharm导入anaconda环境后import包出错问题

解决pycharm在导入anaconda环境后仍然无法加载anaconda里面的包的问题解决办法:将anaconda环境变量加入系统环境变量path中。以我的电脑为例:我的anaconda装在了D:\anaconda,则需要在path中添加:再重启pycharm,就可以正常使用anaconda的环境了!...

2020-05-06 14:28:52 1579

原创 隐马尔可夫模型(HMM)初探

HMM模型前提假设与模型表示模型求解**HMM的三个问题**EvaluationLearning隐马尔可夫模型是一种重要的概率图模型。作为一种著名的有向图模型,HMM广泛应用于语音识别和序列预测等领域。前提假设与模型表示两个假设:齐次马尔可夫假设:假设隐藏的马尔科夫链在任意时刻t的状态只依赖于其前一时刻的状态,与其他时刻的状态及观测无关,也与时刻t无关。状态独立假设:某一时刻的观测变量只...

2019-11-05 20:30:07 223

原创 leetcode292-274简单题

leetcode292 Nim 游戏292 Nim 游戏题目 :你和你的朋友,两个人一起玩 Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。代码:class Solution {public: bool canWi...

2019-09-27 21:25:11 165

原创 决策树(decision tree)算法--ID3,C4.5详细介绍

决策树ID3C4.5决策树是一种常用的分类和回归方法,其规则类似于IF-THEN形式。决策树学习通常包括三个步骤:特征选择、决策树生成和决策树修剪。代表性的算法:ID3,C4.5,CART决策树学习本质上是从训练数据集中归纳出一组分类的规则,找到一个和训练数据矛盾较小的决策树。决策树学习用损失函数表示目标,通常情况下其损失函数是正则化的极大似然函数,我们的目的就是将损失函数最小化。重要概...

2019-09-24 17:26:04 521

原创 朴素贝叶斯补充

朴素贝叶斯贝叶斯定理朴素贝叶斯贝叶斯分类是统计学的经典分类方法。而贝叶斯分类来自于贝叶斯定理。经过研究发现朴素贝叶斯的分类效果可以和决策树和经过选择的神经网络相媲美。朴素贝叶斯法是基于贝叶斯定理和特征条件独立性假设的分类方法。而为什么叫朴素也是由于其条件独立性假设得出的,也就是所有的变量都是相互独立的。贝叶斯定理公式:P(H∣X)=P(X∣H)P(H)P(X)P(H|X)=\frac{P(...

2019-09-23 20:35:56 301

原创 LeetCode笔记235-290中的简单题

235-...235 二叉搜索树的最近公共祖先237 删除链表中的节点242 有效的字母异位词235 二叉搜索树的最近公共祖先题目:给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。思路:自己想!!!都是二叉搜索树了,左边大往右跑;右边大,往左跑。。。代码:class Solution {public: TreeNode* lowestCommonAnces...

2019-09-13 19:11:17 94

原创 LeetCode笔记204-234中的简单题

刷题笔记204 计算质数205 同构字符串204 计算质数题目:统计所有小于非负整数 n 的质数的数量。思路:1.最简单的方法:暴力破解。利用双层循环,外层遍历所有数字,内层取小于外层的所有数字,用外层的除以内层的数字,如果余数为0,不是质数。2.改进的暴力破解:遇到偶数直接跳过,奇数才进行计算。根据规则,只需要计算n的平方根的取余。3.厄拉多塞代码://1.暴力破解class ...

2019-09-03 17:16:39 175

原创 概率图--贝叶斯网络、马尔可夫网络

概率图引:贝叶斯网络引:概率图模型中,概率指的是对数据的一个抽象,图代表的是各种结构。概率图模型关注的是高维的随机变量P(xi,...,xp),P(x_i,...,x_p),P(xi​,...,xp​),的求解,一般对概率图模型,可以求得其边缘概率P(xi)P(x_i)P(xi​)或者是条件概率P(xj∣xi)P(x_j|x_i)P(xj​∣xi​)概率图模型的求解准则:加法准则P(x1...

2019-09-03 13:04:09 1091

原创 Leetcode笔记189-203中的简单题

leetcode笔记easy189 旋转数组easy189 旋转数组给定一个数组,将数组中的元素向右移动k个位置,其中k是非负数。示例:思路:1.一个个数据进行移位交换。2.新创建一个数组。长度和给定的数组相同;将原数组中每个元素都放到新的数组中正确的位置,也就是将原数组中第i个元素放到第i+k个位置;最后把新数组覆盖原数组。代码:class Solution {public...

2019-09-02 20:10:00 1399

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除