自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 我理解的算法 - 53.最大子数组和(超经典多种解法:分治法)

这边我们可以想像一下,一个横跨了我们mid的子数组,其和要最大的话,那么是不是就等于mid往左找组合出来的连续数组中最大和的值以及mid往右找组合出来的连续数组中最大和的值,把这两个值加起来,即为横跨mid的最大的值了,比如-2,1这个结点,我们的mid是-2,那么mid往左看即和为-2(左边带上mid值计算),所以mid左边最大和是-2,右边为1,左右相加得到-1,所以其。分治法的核心思想是把大的问题分解成小的问题,把小的问题分成最小的问题来解决,所以分是关键思路,治是重要手段,分而治之,可解也。...

2022-08-01 09:33:52 1117 9

原创 我理解的算法 - 53.最大子数组和(超经典多种解法:强推、动态规划、Kadane算法)

题目:给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。从暴力解法开始,然后以推算来演算出规律,再以动态规划以及Kadane算法来解释这道题目...

2022-07-28 09:05:09 283

原创 实现OCR语言识别Demo(二)- 图片及识别内容的展现和交互

最后,我们要实现我们的OcrImageView,我们定义了一个自定义控件OcrImageView,其继承自AppCompatImageView,其主要功能是根据我们的OCR识别内容进行在图片上识别内容的绘制以及一些点击的交互行为,首先我们先来进行自定义控件OcrImageView的实现。属性根据控件高度的改变来达到了我们使其内部自动的进行了图片的缩放来达到的这个效果,并且是按比例进行缩放的,只有这样按比例进行操作,我们在后续才能进行精确的比例关系的映射来定位我们的识别内容。上一篇文章中(想要回顾的可以看。.

2022-07-25 10:02:47 898

原创 实现OCR语言识别Demo(一)- BottomSheet实现

正如你们看到的,这个Demo的功能是我们可以从手机里或者是拍照的方式获取到某张图片,然后经过OCR识别文字后,将识别出来的文字在图片上全部都框选出来,并且在底部以扩展界面的方式可以查看识别内容的列表,点击列表里的某一项识别项就会在图片上选中这一项识别项,反过来点击图片上的框选的识别项也会在列表中进行这一对应项的选中。想要实现上面的这种效果,我们需要解决这几个技术点让我们一步一步来实现并且一步步的解决这些问题首先我们为应用创建一个带BottomSheet的布局,实现main页面布局activity_main.

2022-07-18 13:46:41 417 2

原创 我理解的算法 - 2104.子数组范围和(单调栈的扩展使用)

给你一个整数数组 nums 。nums 中,子数组的 范围 是子数组中最大元素和最小元素的差值。返回 nums 中 所有 子数组范围的 和 。子数组是数组中一个连续 非空 的元素序列。来源:力扣(LeetCode)链接:https://leetcode.cn/problems/sum-of-subarray-ranges这道题目与【我理解的算法 - 907.子数组的最小值之和(单调栈经典例题)】的题目主题思路是一样的,但是比上面的题目更难一些,其实就是不仅要求最小值之和还要求最大值之和,下面我们会说明为什

2022-07-11 11:46:45 175 1

原创 Material Design组件 - 使用BottomSheet展现扩展内容(二)

上篇文章中我们使用在XML中配置bottom_sheet_behavior的方式实现了简单的BottomSheet,并说明了在XML中能够去配置的一些参数做了详细的说明,这篇文章我们会说明一下如何在代码中动态的去设置BottomSheet的一些行为我们先来想一下,如果我们要实现一开始BottomSheet就是展开的状态,而不是折叠状态,那我们要怎么做呢?我们可以在代码中实现这个需求,代码很简单,如下我们使用BottomSheetBehavior类的from方法从我们页面上获取到我们的BottomSheet

2022-07-04 09:48:13 258

原创 Material Design组件 - 使用BottomSheet展现扩展内容(一)

BottomSheetBehavior最早是在Android的Design支持库中出现的,这个库中提供了许多Material Design 组件,BottomSheetBehavior即是对Material Design中Sheets: bottom即底部扩展菜单的一种实现,是对Material Design的支持,正如Material Design里面的Sheets: bottom中写的那样,其可以在屏幕的底部为整个画面提供一个补充视图增强用户体验性BottomSheet的实现首次出现是在com.andr

2022-06-28 14:26:46 2417

原创 我理解的算法 - 907.子数组的最小值之和(单调栈经典例题)

子数组的最小值之和,从暴力解法到找规律再到单调栈的运用,最后进行优化,达到更好的执行效率,说明了为什么使用单调栈以及单调栈怎么结合题目使用,是一道经典的单调栈的运用

2022-06-02 10:37:12 337 8

原创 我理解的算法 - 1423.可获得的最大点数(前后缀和+滑动窗口)

我理解的算法 - 1423.可获得的最大点数(前后缀和+滑动窗口)题目前缀和+后缀和不断优化滑动窗口题目几张卡牌 排成一行,每张卡牌都有一个对应的点数。点数由整数数组 cardPoints 给出。每次行动,你可以从行的开头或者末尾拿一张卡牌,最终你必须正好拿 k 张卡牌。你的点数就是你拿到手中的所有卡牌的点数之和。给你一个整数数组 cardPoints 和整数 k,请你返回可以获得的最大点数。示例 1:输入:cardPoints = [1,2,3,4,5,6,1], k = 3输出:12

2022-05-26 12:52:42 157 12

原创 边实验边分析 - 破解Java参数传递的奥秘(值传递?引用传递?)

边实验边分析 - 破解Java参数传递的奥秘(值传递?引用传递?)对于Java的这个知识点,我觉得大家可能会有时候会模糊,我在之前就因为对这个知识点的理解不到位,导致了在开发测试过程中的偏差,感觉自己的水平被同事误判了的,所以定下心来研究了下这个知识点,自己总结了一下,不过这个知识点其实没有一个标准的答案,全都在于自己的理解,理解到位了,则不会有大问题,理解不到位,可能就会出现看起来很低级的错误。所以本篇文章也不是要说明到底是哪一种,只是分享一下我对这个问题的理解,方便大家对这个问题的理解,因为深究这个

2022-05-18 14:33:14 128 13

原创 我理解的算法 - 2121.相同元素的间隔之和及1685.有序数组中差绝对值之和

我理解的算法 - 2121.相同元素的间隔之和及1685.有序数组中差绝对值之和2121.相同元素的间隔之和1685.有序数组中差绝对值之和这两道题都是leetcode的中等题型,我们可以尝试使用不同解法去做做看,题目大家自行查看:2121.相同元素的间隔之和,1685.有序数组中差绝对值之和之所以把这两道题目放在一起,是因为这两道题目的解题思路是一样的,大家之后遇到这种间隔和啊,差绝对值和啊都可以试试这种解题思路,那么我们先来看一下leetcode21212121.相同元素的间隔之和首先,最简单的

2022-05-03 00:00:31 290 40

原创 我理解的算法 - 四数之和

我理解的算法 - 四数之和LeetCode 18.四数之和LeetCode 18.四数之和这道题的题目大家自行查看:链接在这其解法和思路与两数之和和三数之和都是一样的,还不熟悉的小朋友们可以看这里:两数之和,三数之和那么这道题目的难点在哪里呢?其实这道题目的难点就在于要求的和变成了四个数,比三个数还多一个数,所以我们要想办法尽量把多余的一些处理给它优化掉,这样才能提高其效率,我们来看一下吧四数之和的思路和三数之和是一样的,我们还是可以使用双指针来做,只不过这边我们需要固定2个元素即固定a和b来移动

2022-04-27 15:43:42 125 1

原创 我理解的算法 - 三数之和及两数、三数之和扩展题

我理解的算法 - 经典题目三数之和及两数之和扩展题

2022-04-18 09:22:34 536

原创 我理解的算法 - 经典题目两数之和

我理解的算法 - 经典题目两数之和这道题目是乐扣的第一题,非常的经典呢,想必大家要入算法,肯定会先做这道题目,题目内容大家自行查看:链接在这 ,需要从数组中找出2个数的和与目标数字相等的结果,返回2个数在数组中的下标这道题目有多种解法,最先能想到的暴力法比较简单,嵌套两个for循环搞定,时间复杂度O(n2)O(n^{2})O(n2),public int[] twoSum(int[] nums, int target) { int[] result = new int[2]; for(

2022-04-13 18:05:41 934

原创 Android NDK使用CMake编译OBJECT库引发的错误(produces multiple outputs)

在使用CMake进行构建的时候,CMakeLists配置如下OBJECT库,并指定最小版本为3.14cmake_minimum_required(VERSION 3.14)# ogg库add_library(aiengine_ogg OBJECT third/ogg/bitwise.c third/ogg/framing.c)不指定构建的ABI,即编译4个系统平台,x86,x86_64,arm64-v8a,armeabi-v7a指定CMake版本为3.18.1,即模块级Gr

2022-04-06 10:14:24 515 2

原创 边实验边分析-NDK篇-abiFilters配置分析

默認情況下,cmake會構建x86_64,x86,arm64-v8a,armeabi-v7a四個架構的ABI(应用程序二进制接口),我們可以通過在defaultConfig.externalNativeBuild.cmake 块中添加abiFilters标记,来告诉ndk,我们真正需要构建的ABIdefaultConfig { externalNativeBuild { cmake { abiFilters 'x86_64',

2022-03-28 10:50:40 4436

原创 边实验边分析 - Gradle如何处理多个库依赖了不同版本的库之间的冲突

边实验边分析 - Gradle如何处理多个库依赖了某个相同的第三方库的不同版本间的冲突比如我们有两个库,一个是dialog-lib它依赖于okhttp 4.9.0的版本另一个vox-sdk版本为3.10.0的okhttp如果我们把这两个库都引入同一个项目中,会发生什么呢?在gradle中添加dependencies { ... implementation 'io.github.xiaozeiqwe8:vox-sdk:0.9.4' implementation 'io.gi

2022-03-24 09:48:48 2426

原创 边实验边分析-NDK篇-JNI使用RegisterNatives进行显式方法注册

什么是JNIJNI指的是Java Native Interface,即JAVA原生接口,它的作用是定义了JAVA代码与C/C++的代码进行互动的方式,从而使得Java能够调用c/c++代码,也可以使得c/c++能够调用java的方法(回调),方便原生开发,严格来说,其实是使用 Java 或 Kotlin 编程语言编写的字节码与原生代码的互动,所以Kotlin也是完全支持的JNI在Android中的使用方式配置c/c++编译环境由于本文并不是主要说明如何配置Native的开发环境,且官网说明也比较详细

2022-02-28 10:28:32 2743 1

原创 边实验边分析-Maven默认选择JDK规则以及如何使用指定JDK版本进行编译

边实验边分析-Maven默认选择JDK规则以及如何使用指定JDK版本进行编译说明了Maven的选择本地环境的JDK规则以及JDK版本的指定配置

2022-02-16 14:26:12 2145 1

原创 Android使用自签证书利用Okhttp进行HTTPS接口的安全连接

在上一篇文章中,我们自己生成了证书,创建了最简单的接口,实现了让浏览器信任了我们的证书,那么,在Android上要怎么做呢?在android中,其实也是差不多的概念,android的app都会默认使用系统的受信任证书列表,我们可以参考android官网https://developer.android.com/training/articles/security-config?hl=zh-cn#certificates里面的说明来学习,这个受信任列表是可以切换的,并且都有默认值

2022-02-11 09:44:45 5591 1

原创 使用自签证书利用浏览器进行HTTPS接口的安全访问

HTTPS的基本工作原理想必对于许多开发者来说是非常熟悉的了,还不是太熟悉的同学一起先看一下HTTP常见的八股文中的描述以及如何让浏览器信任我们的自签证书,实现https安全连接

2022-02-08 10:41:24 7010 10

原创 Gradle Maven-Publish插件如何配置发布带有依赖的库

Gradle Maven-Publish插件如何配置第三方库依赖

2021-09-23 14:20:50 2857

原创 边实验边分析-NDK篇-Android Studio执行原生构建的时候是如何选择NDK,CMake,Ninja版本的(避免常见的Ninja错误)

边实验边分析-NDK篇-Android Studio如何选择NDK,CMake,Ninja的版本

2021-09-09 13:48:36 3070

原创 邊實驗邊分析 - Kotlin中对内存泄漏的一点优化

邊實驗邊分析 - Kotlin中对内存泄漏的优化

2021-06-25 11:01:50 737

原创 发布Android Lib库(Jar、AAR、SO)到Maven Central

本文主要以Gradle Maven Publish插件的方式进行发布到Maven Central的流程进行说明,附带了手动发布的流程、so库的发布流程、不上传源码和doc的发布流程,并提及说明了发布Jar包和发布aar包的不同方式、Java与Kotlin版本的不同打包方式。

2021-05-29 15:35:14 4225 41

原创 边实验边分析 - 非静态内部类引发的内存泄漏问题

邊實驗邊分析 - 使用AIDL引起的内存泄露問題

2021-05-14 17:21:36 608

原创 邊實驗邊分析 - Android Foreground Service的使用

Android Foreground Serviceadb shell ps | grep com.karl.android.foregroundservicecat proc/31291/oom_adjframeworks/base/services/java/com/android/server/am/ActivityManagerService.java updateOomAdjLocked(void)dumpsys meminfo 查看到所有的進程分類利用cat proc/29421/

2020-08-10 17:48:05 2038

原创 邊實驗邊分析 - Android LowMemoryKiller 介紹

邊實驗邊分析 - Android LowMemoryKiller 介紹一、簡述二、Process 分類三、Android 7.0以下及7.0以上的區別四、ADJ查看方式五、總結一、簡述在Linux中,存在著一個OOM 终结者(Out Of Memory killer),他會在内存過低的情況下,殺掉你的進程,來釋放空閑的内存維持正常的運作。Android中也不一例外的存在者一個殺手,但是他不叫OOM殺手,而叫做LMK殺手(Android LowMemoryKiller),具體的原理不在這裏闡述,想知道的朋

2020-07-20 12:11:55 230 1

空空如也

空空如也

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

TA关注的人

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