自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 字符串的排列

3.如果有多个相同的字符,排列可能出现重复排列的情况,因此我们可以先将数组进行排序,将相同的字符放在一起,这样如果下一个遇到的字符和上一个相同,那么我们就可以直接跳过去.因为它们两个交换不会产生新的排列.1.我们可以先固定第一个字符,求剩下n-1个字符的排列情况.求剩下n-1字符的排列情况,就变成了一个子问题,最终我们可以分解成求1个字符的排列情况.这里我们可以利用栈的思路逐级向下递归.空间复杂度:O(n),递归栈的最大深度为字符串长度n,临时字符串temp的空间也为O(n),res属于返回必要空间。

2024-06-03 00:08:43 360

原创 二叉搜索树的后序遍历序列

二叉搜素树的递归深度

2024-05-26 18:56:03 819

原创 数组中只出现一次的两个数字

因为两数的最低为都是一样的,&1之后还是1,还是无法区分,那么我们看到最低的第二位0011是1,0101是0,很明显这两位就不一样,那么我们就可以将这两数&0010呀,不就能够区分出来了吗?所以,我们要想对两者进行分组操作,就是需要找到两者中的那一位不同的二进制,然后得到分组的与值(去&的那个值),问题不就解决了吗?刷到此题的时候,只写出了最普通的解法,最后看了二进制解法,叹为观止,不禁感叹到它的巧妙,因此记录一下,共勉。但是,我们想一下,&1的操作,归根到底,是按照二进制最低位的不同来分组的,

2024-02-29 20:01:53 977

原创 算法-数学-约瑟夫环(孩子们的游戏)

n-3,n-2的最终剩余的数.重新编号前的数列也是一个单独的题目,题目为求m%n,(m+1)%n,(m+2)%n,(m+3)%n,……m-3,m-2的最终剩余的数的位置得出了结果,那求n个数最终剩余数字的位置不也是这个结果吗。从这里我们很容易看出,n=3的子问题,0,2最后得出的位置和n=2的问题,0,1,最后求得的位置一定是一样的.因为这时候是两个问题的n都是2,m都是2,所以最后的位置一定是一样的.所以我们只要利用(m+x)%n=(2+0)%3=2,就得出了n=3的时候剩余的位置在在2这个数字的位置.

2024-01-19 20:22:50 1357

原创 Android中的anr定位指导与建议

如何快速定位安卓的anr问题

2024-01-15 01:31:22 3608

原创 动态规划-构建乘积数组

状态转移方程肯定就是三角下一行的值等于上一行的值乘以A数组上一行对应下标的值,也就是dp数组第i行的值等dp数组第i-1行的值乘上A数组第i-1的下标的值。转换成代码形式就是。

2023-11-10 19:31:30 385

原创 动态规划-丑数

状态转移方程是这个题目的难点,我们需要知道如何通过状态转移方程来实现下一个丑数的定位,我们通过分析函数dp[i]=2x3y5z(其中i是第i个丑数的下标存储位置)可知,我们只要分别增大幂x,y,z,(x,y,z都从0开始增大)然后进行比较,我们就能找到我们想要的下一个丑数。比如dp[0]=1,那么dp[1]的值,就是需要比较213050,203150,203051这三个值的大小,得出dp[1]=213050= 2因为213050。

2023-11-06 23:11:54 276

原创 反编译之崩溃定位

最后我们只需要找到169行,即可找到崩溃具体的位置,这里我们需要注意一下左边的行数,一定要点击左侧tab并确定行数切换到了从方法开始计算行数的模式,因为崩溃信息中(SourceFile:169)169所指的行数表示的是从崩溃所在的方法开始计数的行数,且必须是源文件中的行数。由于jadx显示的是反编译过后的文件代码(目的是方便我们阅读),且它已经帮我们标记好了反编译前的行号,因此我们只需要在onBindViewHolder中找到反编译前的行号就能找到崩溃的位置。主要就是一个再常见不过的空指针的崩溃,

2023-09-22 20:15:22 377

原创 安卓渐变的背景框实现

安卓渐变的背景框实现

2023-03-13 20:28:50 4851

原创 算法之动态规划

动态规划算法

2023-03-03 20:13:11 258

原创 Dart中const修饰变量和创建变量的区别

dart中const放在左边和右边的区别

2022-10-25 13:28:04 203

原创 (基于Nordic)Android 蓝牙mesh协议栈问题修复之-AppKey解密问题修复

背景问题分析修改内容背景首先贴上官方github地址https://github.com/NordicSemiconductor/Android-nRF-Mesh-Library本次修改基于官方SDK 2.4.1版本.阅读此文章之前,我们默认您对蓝牙mesh协议已经有了一定了解.本次修复了一个问题,该问题是关于在收到蓝牙数据包的时候寻找appkey去解密数据包的时候发生的一个错误.问题分析出现此问题的时候,是一个很偶然的情况下,发现配网不成功,并且,一旦不成功,此设备将永远不成.

2021-10-15 15:24:54 808

原创 Android Studio运行插件化项目拉起主宿舍App方法

前言思路配置方法前言本文主要是针对在运行插件化子项目时候,每次编译完成都需要手动重启app而做的优化工作,从而达到还原一键运行app的效果。思路实现思想其实很简单,就是在执行编译插件的task之后,立马执行一个启动app的脚本即可。配置方法1.修改下面的shell命令(.main.MainActivity为我的启动页类名,你可以修改为自己的)windows版adb shell am force-stop 这里填上包名adb shell am start -n "包名/.main.

2020-11-04 17:02:28 313

原创 (基于Nordic)Android 蓝牙mesh协议栈问题修复之-节点并发问题处理

背景1.节点数据库读写的并发问题问题分析修改内容2.消息收发序列的问题问题分析修改内容背景首先贴上官方github地址https://github.com/NordicSemiconductor/Android-nRF-Mesh-Library本次修改基于官方SDK 2.4.1版本.阅读此文章之前,我们默认您对蓝牙mesh协议已经有了一定了解.本次修复了两个问题,一个是节点对于数据库读写的并发问题,另一个问题是对于蓝牙包的单播消息序列对应的问题.1.节点数据库读写.

2020-11-04 15:33:56 703

原创 (基于Nordic)Android 蓝牙mesh协议栈问题修复之-节点扫描唯一性判断优化

背景问题分析修改内容背景首先贴上官方github地址https://github.com/NordicSemiconductor/Android-nRF-Mesh-Library本次修改基于官方SDK 2.4.1版本.阅读此文章之前,我们默认您对蓝牙mesh协议已经有了一定了解.本次修复了一个问题,该问题是关于设备节点扫描唯一性进行判断的一个优化.问题分析此问题的根源是发现设备偶尔不能控制发现的问题,进过一系列排查,发现最后导出来的mesh json节点数据中uuid并不是我们配网.

2020-11-04 13:28:51 596

原创 (基于Nordic)Android 蓝牙mesh协议栈问题修复之-未知model解析问题修复

背景问题分析修改内容背景首先贴上官方github地址https://github.com/NordicSemiconductor/Android-nRF-Mesh-Library本次修改基于官方SDK 2.4.1版本.阅读此文章之前,我们默认您对蓝牙mesh协议已经有了一定了解.本次修复了一个问题,是关于Nordic Android SDK解析未知model时候出错的问题.1.未知model解析问题问题分析问题的根源是从SDK的导入导出发现的,从 Nordic SDK中导出来me.

2020-11-04 11:01:14 778

原创 (基于Nordic)Android蓝牙mesh协议栈问题修复之-分片问题

背景1.组播分片导致crash问题问题分析修改内容2.分片重发导致片段丢失的问题问题分析修改内容背景首先贴上官方github地址https://github.com/NordicSemiconductor/Android-nRF-Mesh-Library本次修改基于官方SDK 2.4.1版本本次修复了两个问题 ,一个是组播分片导致的crash问题,另一个是分片重发导致片段丢失的问题. 下面会详细描述.1.组播分片导致程序crash问题问题分析我们在使用SDK的时.

2020-11-03 19:18:39 496

原创 Android手机日志,各大厂商打开方法(待更新)

以下列出各大厂商手机打开日志收集方法华为1.进入拨号界面bai输入:##2846579##;2. 依次选择ProjectMenu—后台设置----LOG设置—LOG开关 点击打开,3. 如果有log级别,在LOG级别选VERBOSE;重新启动手机即可。...

2020-08-14 11:01:59 5124

原创 IndicatorSeekBar实现indicator不同刻度对应不同文本

背景实现方式使用方式背景在使用IndicatorSeekbar的时候,发现它不能根据刻度值,实现自定义的文本.类似的需求如下:实现方式1.首先我们需要将IndicatorSeekbar源码fork下来2.增加一个OnIndicatorTextChangeListener类,来监听Indicator文本的设置public interface OnIndicatorTextChangeListener { /** * 增加一个可以格式化指示器的方法。用于在显示指示器的时候.

2020-06-28 18:11:00 884

原创 仿IOS SwitchButton开关滑动效果,给你丝滑般的体验

背景效果使用方法原理解析背景由于开发中经常会用到滑动开关,但是Android自带的滑动开发滑动效果太难看,所以这里模仿了IOS的滑动效果自制了一个滑动开关.效果使用方法1.style.xml中引入自定义标签 <declare-styleable name="SwitchButton"> <attr name="sb_shadow_radius" format="reference|dimension" /> <attr name="sb_shadow.

2020-06-15 17:39:09 704

原创 Android扫地机器人自定义View

SweeperMap之前项目制作的扫地机器人自定义View,现在开源给大家.思路以及实现都比较简单,希望能给大家提供一些参考.扫地机器人地图的自定义View,支持类似于百度地图的手势缩放功能。源码大家可以到我的github上下载:https://github.com/stramChen/SweeperMap实现效果:##使用方式引入XML布局<com.xxx.xxx.AreaRoomView android:id="@+id/area_view" android:

2020-06-05 15:03:36 1277

原创 Android studio下的git reset --soft --mixed --hard --merge --keep五种模式详解

前言正文前言本篇文章主要是基于Android Studio(ide)下研究git版本回退的五个参数的使用方法,当然其它职业的开发着也可以进行部分借鉴.正文2.1.1 背景知识 一 三个工作区域  当我们用git不小心提交了一次错误的内容的时候,我们就可能会想到要进行版本回退.这时候我们就会使用到git reset命令.  在说git reset命令之前,我们先需要了解一下git的三个工作区域.那分别是Working Tree 当前的工作区域Index/Stage 暂存区域,和gi.

2020-06-01 14:20:41 5200 1

原创 简单的属性动画解决折叠窗(抽屉)动画问题

背景解决方案背景最近有个需求要实现折叠窗的问题,效果如下在网上找的方案基本上都是自定义View,这里自己做了一个属性动画的工具类,让你很灵活的实现上述效果.解决方案现在提供工具类代码如果任何疑问,请联系邮箱:569133338@qq.com...

2020-05-24 21:43:19 395

原创 Android项目实战常见内存泄露整理

背景案例背景  众所周知,Android内存泄漏的排查一直是Android性能优化重要的组成部分.只要稍有不慎,直接或者间接地持有了Activity的引用,都会难以避免地引发内存泄漏.很多偶现的BUG,奇怪的Crash,或者是出现了OOM,可能它的罪魁祸首,都是内存泄漏.  最近一直在给公司app做性能优化工作,中途遇到了很多内存泄漏的问题.现在将其整理出来,希望能给大家一个参考.常见案例1.静态类,静态变量持有Activity的引用可能大家都知道静态变量,静态类一定会导致Activity.

2020-05-16 21:26:54 320

原创 利用反射优雅的实现两个JavaBean的合并

使用场景代码解析使用场景设想我们有两个JavaBean A和B,JavaBean里面有几个成员变量,现象我们想把B对象里面的变量覆盖到A里面.同时我们需要考虑如果B里面的部分成员变量如果是空,那我们就保留A里面的对象.那么我们可以利用Java反射的特性对Class进度get,set操作.它将支持以下特性:1.假设有A,B两个对象,会将B对象覆盖到A对象里面,如果B对象的某些成员变量为...

2020-04-29 18:38:55 1898 2

原创 AWS IOT通过https获取Shadow的签名过程

AWS IOT通过https获取Shadow的签名过程背景:由于公司之前的项目获取iot shadow的时候是通过mqtt获取,需要先订阅才能获得数据,实时性并不高,研究了一下aws的官方文档发现还可以通过https的途径获取shadow信息,但是前提是需要对url进行签名,签名的过程比较繁琐,而且官方文档提供的信息太少,所以这里提供一下通过iam认证签名过程的源码,供大家参考。以下提供pyt...

2019-07-11 10:29:48 1019

原创 MPAndroidChart实现曲线阴影效果

MPAndroidChart实现曲线阴影效果背景:最近公司项目UI出现一个填充+阴影效果的曲线。效果如图所示。但是发现MPAndroidChart只能实现填充,无法实现阴影的效果。所以fork下来源码阅读了一下,并新增了一个drawShadowColor()方法。使用方式:dataSet.setDrawShadow(true);dataSet.setShadowColor(color);...

2019-05-06 10:19:48 2702

转载 在linux(RedHat)下部署mysql的方法

安装环境:RedHat6.4第一步:下载下载MySQL5.7:https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.21-1.el6.x86_64.rpm-bundle.tar第二步:安装安装前检查服务器是否已安装MySQL,如已安装则将其卸载:[root@worker1 tmp]# rpm -qa|grep mysql...

2018-02-08 20:54:26 1757

原创 Tomcat关闭后,应用进程无法退出的解决方案

前奏: 最近在Linux部署tomcat应用的时候发现停止tomcat后,自己的进程还在,必须要用kill命令强行杀掉进程,每次这样做感觉很不妥,所以现在我来找一下出现这个问题的根本原因并给出解决方案。背景:有一天我发现公司的Ubantu服务器内存不够用了……,32G内存!而且这台服务器只部署了我一个服务。what?神马情况,一脸萌币。让我静静…………。好了,安静了,现在开始分析原因。首先我执行了

2017-10-11 11:50:38 7113

原创 从业务方面浅谈Gson的使用方法

Tips:.本文主要从开发业务方面探讨Gson的使用方法。个人愚见,希望所有帮助。首先附上官方的API文档,所有的博客都是起到辅助理解的作用,想要深入,最好学好英语看官方API。 http://www.javadoc.io/doc/com.google.code.gson/gson/2.8.01.业务上常用且最基本对象转json字符串,json字符串转对象。a.对象转jsonGson gson =

2017-03-06 21:14:54 515

空空如也

空空如也

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

TA关注的人

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