自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

旧时光っ

半醒半醉日复日,花落花开年复年

  • 博客(42)
  • 资源 (1)
  • 收藏
  • 关注

原创 只出现一次的数字

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。示例 1:输入: [2,2,1]输出: 1

2022-08-31 16:38:31 252

原创 Android TabLayout setupWithViewPager()方法绑定Viewpager不显示文字

setupWithViewPager() 做了什么事情~TabLayout tabLayout = findViewById(R.id.tabLayout);ViewPager viewPager= findViewById(R.id.viewPager);List<Fragment> fragments = new ArrayList<>();···tabLayout.addTab(tabLayout.newTab().setText("tab1"));tabL..

2022-01-09 01:46:15 3608

原创 Android studio提示Warning: debug info can be unavailable. Please close other application using解决办法

Android studio debug时出现重启Android studio手机 > 设置 > 开发者选项 > USB调试重新打开启动和关闭adb服务 adb kill-server adb start-server上面三种试过了没啥用。。。最后发现是手机的问题,电脑连了两台测试手机。连一台就OK了,不会提示。2021年12月29日16:52...

2021-12-29 16:52:10 2723

原创 九九乘法表(c++)

1x1=11x2=2 2x2=41x3=3 2x3=6 3x3=91x4=4 2x4=8 3x4=12 4x4=16···分行与列考虑:一共9行9列,x控制行,y控制列#include <iostream>using namespace std;int main() { //外层for循环控制行 for (int x = 1; x <= 9; x++) { //内层for循环控制列 for (i...

2021-12-19 21:40:54 1156

原创 ConstraintLayout 水平比例布局 1:1:1

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_pa..

2021-11-30 23:31:39 3079

原创 Android Andfix热修复原理

正常开发流程热修复开发流程当线上的项目出现问题了,需要重新发布版本解决bug,重新发新版本apk;但是随着技术不断的更新,线上项目出现bug,可以通过热修复,在不需要发布新版本的情况下进行bug的修复。Andfix采用native底层替换Android代码中的每个method在art虚拟机中都有一个ArtMethod结构体指针与之对应。ArtMethod结构体中包含java方法的所有信息:执行入口、访问权限、所属类和代码执行地址等等。也就是说虚拟机就是通过ArtMethod结构体来操作Ja

2021-10-31 22:13:52 2047

原创 Android NDK开发入门——第一个NDK程序

什么是NDK?NDK(Native Development Kit)是 Android的一个工具开发包可以让开发者在 Android 应用中使用 C 和 C++ 代码的工具。Android中,NDK是一系列工具的集合,主要用于扩展Android SDKNDK提供了一系列的工具可以帮助开发者快速的开发C或C++的动态库,并能自动将so和Java应用一起打包成apk。通过NDK在Android中使用JNI与本地代码(如C、C++)交互。什么是JNI?全称为Java Native Inte

2021-09-24 11:02:15 390

原创 Android Studio删除安装插件

win 系统进入:C:\Users\Administrator\AppData\Roaming\Google\AndroidStudio4.1Administrator为当前计算机用户找到plugins文件夹:删除插件即可。

2021-09-18 18:06:56 2249

原创 Android Studio修改Edit Custom VM Options导致无法启动

当我们修改edit custom VM options的时候,因为配置错误参数的时候,可能导致Android studio打开失败。我的电脑Android Studio版本为4.1,其它版本会有对应的文件目录切换到C:\Users\Administrator\AppData\Roaming\Google\AndroidStudio4.1Administrator为当前计算机名字找到studio64.exe.vmoptions文件,删除即可。重启Android Studio正常..

2021-08-09 10:57:52 3029 2

原创 无题

六月将尽,七月将至,一年已过半。愿所有的美好,如期而至;所有的不好,随风飘散。

2021-06-30 20:10:25 117

原创 两数之和 Two Sum

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。...

2021-05-12 11:27:05 148

原创 jsoup根据标签class属性和id属性查询

Document document = Jsoup.connect(“https://xxx”).get();class查询Elements elements = document.select(“div[class=xxx]”);id查询Elements elements = document.select(“div[id=xxx]”);

2021-05-10 10:41:07 2330

原创 给定一个单链表,判断链表中是否有环

思路 :定义 两个指针, 一个快指针fast, 一个慢指针slow, 快指针一次走两步,慢指针一次走一步.如果 两个指针相遇了, 则说明链表是有环的.如果 fast 都走到null了, 还没有相遇则说明没有环.代码实现 :public class Solution { public boolean hasCycle(ListNode head) { ListNode fast = head; ListNode slow = head;

2021-04-22 14:56:48 338

原创 给定一个整数数组,找出其中两个数相加等于目标值

给出一个整数数组,请在数组中找出两个加起来等于目标值的数, 你给出的函数twoSum 需要返回这两个数字的下标(index1,index2),需要满足 index1 小于index2.。 注意:下标是从1开始的假设给出的数组中只存在唯一解 例如:给出的数组为 {20, 70, 110, 150},目标值为90 输出 index1=1, index2=2 思路:map里面放 键为target-每个数的结果 值为下标每次放入的时候看是否包含 当前值有的话说明当前值和...

2021-04-09 17:03:44 1390

原创 Flutter加载本地图片报错Unable to load asset:xx.png

在Flutter项目根目录创建存放图片的文件夹,例如:images在项目pubspec.yaml文件里,flutter节点下,添加如下: assets: - images/logo.png加载图片: 使用Image部件加载本地图片assets:前面所留的空格要和其它配置属性对齐 比如 uses-material-design: true这样才能正确加载出图片希望能帮助遇到相同问题的你。...

2021-03-11 16:54:46 1220

原创 Android Studio搭建Flutter环境

Flutter环境搭建下载Flutter SDKhttps://flutter.dev/docs/get-started/install以Windows为例:下载完成后解压文件,配置环境变量Android Studio安装插件

2021-03-09 14:55:11 732 1

原创 无题

星光不问赶路人,时光不负有心人。

2021-01-31 18:07:02 154

原创 斐波那契数列

题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。 n≤39

2020-12-07 13:45:12 545

原创 反转字符串(双指针)

题目描述写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串。输入 :cba返回值 :abc我们最容易想到:逆向遍历字符串实现反转实现: public static String solve(String str) { if (null == str || str.length() == 0 || str.length() == 1) { return str; } StringBuilder strBuil.

2020-11-26 16:50:53 500

原创 Android点击返回键跳转到系统桌面

重写Activity的onKeyDown方法 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { Intent mIntent = new Intent(Intent.ACTION_MAIN); mIntent.setFlags(Intent.FLAG_ACTIVITY_CL.

2020-11-02 18:22:14 1130

原创 Activity启动源码分析

在Android系统中,有两种操作会引发Activity的启动,一种用户点击应用程序图标时,Launcher会启动应用的主Activity;应用程序的默认Activity启动起来后,又可以通过调用startActvity启动新的Activity,每一个Activity都可以在内部启动新的Activity,从而完成应用程序的功能。本文来Activity的启动流程,一般我们都是通过startActivity或startActivityForResult来启动目标activity,那么我们就由此出发探究系统是如

2020-10-24 18:24:05 488

原创 Handler的一些思考

为什么不能在子线程创建Handler为什么主线程创建 Handler()不会报错为什么只能在主线程中操作UI?为什么子线程中TextView setText不报错?

2020-10-24 17:50:45 508

原创 无题~

如今最好,别说来日方长; 时光难留,只有一去不返。

2020-10-22 13:50:37 131

原创 LruCache源码分析

LruCache(Least Recently Used)核心思想是:当缓存快满的时候,会移除较早使用的缓存对象,然后添加新的缓存对象 public LruCache(int maxSize) { if (maxSize <= 0) { throw new IllegalArgumentException("maxSize <= 0"); } this.maxSize = maxSize; this.map

2020-09-27 15:38:49 193

原创 Android使用指纹识别功能

指纹识别是在Android 6.0以后新增的功能,在使用的时候需要先判断手机的系统版本是否支持指纹识别。FingerprintManager : 指纹管理类验证手机是否支持指纹功能FingerprintManager.AuthenticationCallback :使用验证的时候传入该接口,通过该接口进行验证结果回调...

2020-08-06 18:52:36 3848

原创 AndroidStudio4.0显示工具栏前进、倒退按钮

昨天把一台电脑的AndroidStudio升级了之前用的版本,点击菜单栏的View > ToolBar勾选上就可以显示工具栏了升级Android studio后,发现工具栏隐藏了,原来升级后把ToolBar移到Appearance选项里面了将View > Appearance > Toolbar勾选上就好了记录一下,希望能帮助有需要的同学。...

2020-07-27 09:55:13 3922 1

原创 Android屏幕适配之修改系统density

今日头条屏幕适配思路Android中xml布局文件中写的是什么单位最终会转化成pxandroid.util.TypedValue#applyDimensionpublic static float applyDimension(int unit, float value, DisplayMetrics metrics) { switch (unit) { case COMPLEX_UN

2020-07-19 19:02:50 2875

原创 Android使用Thread.UncaughtExceptionHandler捕获/分析异常信息

Thread中提供了一个UncaughtExceptionHandler接口能够获取应用的crash信息该方法设置系统的默认异常处理器,发生crash的时候,系统就会回调UncaughtExceptionHandler的uncaughtException(Thread t, Throwable e)我们可以在uncaughtException方法中获取到crash信息,也可以选择把异常信息存储到本地以及上传到服务器提供给开发人员分析。public class CrashHandler implemen

2020-07-03 14:46:22 3292 1

原创 经典逻辑笔试题

假设有一个池塘,里面有无穷多的水。现有 2 个空水壶,容积分别为5升和 6 升。如何只用这2个水壶从池塘里取得 3 升的水?answer:第一步:先取6L水,倒进5升的水壶里,即得到6L壶里余下的1L水第二步:把5L壶倒掉,把取到的1L水放进5L的水壶里,然后再取6L水,倒进5L的壶里,6L的桶得到的是2L水,把5L壶倒掉,存放这2L水第三步:5L壶有2L水.取6L水,倒进5L水壶里,获得6L壶剩下的3L水你让工人为你工作7天,给工人的回报是一根金条。金条平分成相连的7段,你必须在每.

2020-06-20 11:20:04 1522 1

原创 解决AndroidStudio升级到3.6出现中文注释乱码的问题

之前把AndroidStudio升级了,然后注释的时候出现了乱码直接打开:File > Settings > Editor > File Encodings把编码改成UTF-8打开文件添加:-Dfile.encoding=UTF-8好像不怎么管用,最后发现是编辑器的问题解决办法在左上角File > Settings > Appearence&Behavior > Appearence > Antialiasing把IDE和Editor都

2020-06-14 06:52:49 512

原创 java算法-二分查找

二分查找二分查找又称折半查找适用顺序存储结构且按有序排列算法原理将数组中间位置元素和目标元素进行比较,如果相同,则查找成功如果不相等,那么查找的元素一定前半部分或后半部分如果目标元素大于中间元素,则查找后半部分,否则查找前半部分重复上面的过程,直到找到满足要求的元素,查找成功如果还没有找到,则此元素不在数组里面有一个数组:2,6,10,14,18,22,使用二分查找算法找出arrr数组中8的位置代码实现...

2020-06-13 18:49:16 179

原创 java算法-选择排序

算法原理从索引0开始,依次和后面的元素比较,小的往前放,第一次比较完毕,最小值出现在最前面第一次是从索引0开始与后面元素比较第二次是从索引1开始与后面元素比较…有一个数组:5,3,6,2,1,7,4,希望从小到大排序第一次排序后:[1, 5, 6, 3, 2, 7, 4]第二次排序后:[1, 2, 6, 5, 3, 7, 4]后续 跟上面一样 …代码实现选择排序public static void main(String args[]) { int arr[]

2020-06-11 14:44:31 161

原创 java算法-冒泡排序

算法原理例如我们有一个数组,我们如果需要把较大的元素排在后面,把小的元素排在前面,那么需要从头部到尾开始比较操作:依次比较相邻的两个数,如果第一个比第二个大,就交换他们两个往后对每个相邻的元素都做这样的比较,交换操作,这样到数组尾部时,最后一个元素会成为最大的元素重新从头部开始第 1、2 步的操作,除了在这之前尾部已经排好的元素继续对越来越少的数据进行比较和交换操作,直到没有可比较的数据为止,排序完成有一个数组:5,3,6,2,1,7,4,希望从小到大排序。按照冒泡排序的思想,我们要把相邻的

2020-06-10 12:03:02 307 2

原创 LinkedList源码分析

LinkedList概述LinkedList 与 ArrayList 一样实现 List 接口,从名字可以看出它们内部的数据结构有着不同只是 ArrayList 是 List 接口的大小可变数组的实现,LinkedList 是 List 接口链表的实现。LinkedList 是基于链表实现的(通过名字也能区分开来),所以它的插入和删除操作比 ArrayList 更加高效...

2020-06-07 00:16:39 158

原创 ArrayList源码分析

ArrayList概述ArrayList 是一种变长的集合类,基于数组实现由于 ArrayList 底层基于数组实现,非常适用于对元素进行查找,效率非常高ArrayList 允许空值和重复元素,当往 ArrayList 中添加的元素数量大于其底层数组容量时,会通过扩容机制重新生成一个更大的数组ArrayList 是非线程安全类,并发环境下多个线程同时操作 ArrayList,会引发不可预知的错误继承体系源码分析/** // 序列化id private static final long

2020-06-02 01:09:45 352

原创 OkHttp源码分析

https://github.com/square/okhttp一,OKHttp介绍okhttp是一个第三方类库,用于android中请求网络。 这是一个开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司贡献(该公司还贡献了Picasso和LeakCanary) 。用于替代HttpUrlConnection和Apache HttpClient(android API23...

2020-06-01 09:41:40 666

原创 Android .class文件手动生成dex文件

使用Android Sdk里面的dx.bat转换class文件为dex文件找到Android SDK 目录下的build-tools配置dx环境变量(自行配置)打开cmd 运行命令:dx --dex --output 生成dex的目录和名称 class文件所在的目录比如我要在桌面生成一个test.dexdx --dex --output C:\Users\Ad...

2020-04-29 18:48:16 697

原创 HandlerThread源码分析

一、 HandlerThread是什么?HandlerThread本质上是一个Thread,继承Thread;HandlerThread内部有自己的Looper对象,可以进行looper循环;通过获取HandlerThread的Looper对象传递给Handler对象,可以在handleMessage方法中执行异步任务优点是不会有堵塞,减少对性能消耗,缺点是不能同时进行多任务的处理,需要...

2019-11-23 01:16:42 431

原创 Android Handler原理解析

之前对Android消息机制没有认真了解,今天看了下源码受益颇大! 进入正题: android的消息处理有三个核心类:Looper,Handler和Message MessageQueue(消息队列)封装到Looper里面了,我们不会直接与MessageQueue打交道。1、Looper Looper主要是prepare()、loop()这个两个方法public static vo

2019-11-13 23:32:07 157

原创 Android Studio项目正常运行,源码报错的问题

在AS上开发时,遇到这个问题,打开所有的java源文件,右侧一路标红色,找不到类,到不到方法,因为不能点击跳转,开发时纠结了好久,试了clean、rebuild等各种方法都不起作用,又去网上找大牛们支的招,可能对我不起作用。又有同事只招说换一个AS安装,觉得没必要,太麻烦。后研究参考网上的各种方法,现将自己亲身体验并解决过的一个小技巧附上,以免在遇到此类的问题时慌乱,找错了问题解决的方向。

2018-06-24 15:07:21 1655

AndFixDemo.zip

andfix热修复

2021-10-31

空空如也

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

TA关注的人

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