自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

三驴蛋蛋的博客

初阶码农,请多指教!

  • 博客(26)
  • 收藏
  • 关注

原创 Android插件开发适配2022.3.1 Giraffe

基本都是gradle intellij plugin的锅,可以关注下这个插件的issue更新下版本。

2023-11-16 12:00:38 176

原创 Android 插件开发ClassNotFoundException: com.intellij.openapi.util.SystemInfoRt 问题解决

在开发Android Studio插件时出现如下问题:Caused by: java.lang.ClassNotFoundException: com.intellij.openapi.util.SystemInfoRt ,可以考虑升级gradle intellij plugin插件解决

2023-11-15 23:04:27 181

原创 一个小例子解释async和await的作用

当前协程被挂起(注意不是阻塞,只是当前的suspend方法停止在了这个地方,等待结果),如果此时有另一个挂起函数和testDeferred同级,会发现那个函数继续在运行。,直接向下进行,这里在子协程中进行耗时操作的处理,不阻塞当前作用域。在协程作用域中,使用async发起一个耗时操作,并返回一个结果。(子协程处理完毕),当前协程恢复,继续向下进行。之后等待这个结果,并使用这个结果。此时才会执行781行和783行。

2023-05-25 16:22:52 89

原创 Android JNI方法为什么要加上@Keep注解?

在Android中,为了确保应用程序的正确性和稳定性,我们需要在JNI方法上添加@Keep注解。注解是由ProGuard提供的,它告诉ProGuard不要混淆被注解的类、方法或字段。在Android中,当我们使用ProGuard来优化和混淆代码时,如果没有添加。因此,为了确保JNI方法的正确性和稳定性,我们需要在JNI方法上添加@Keep注解,以防止ProGuard混淆这些方法。在这个示例中,我们在myNativeMethod()方法上添加了@Keep注解,以确保ProGuard不会混淆这个方法。

2023-03-31 10:18:03 666

原创 指针,引用和智能指针

在C++中,指针、引用和智能指针是三种不同的机制,用于在程序中处理和传递内存地址

2023-03-17 18:42:06 414

原创 【LeetCode和牛客网刷题】#45 跳跃游戏

给你一个非负整数数组 nums ,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。假设你总是可以到达数组的最后一个位置。示例 1:输入: nums = [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。示例 2:输入: nums = [2,3,0,1,4]输出: 2来源:力扣(Lee

2021-08-14 13:14:34 138

原创 【Android】用AIDL实现Server端回调Client端方法(一)

背景在公司实习的过程中需要用到跨进程的通信,查看项目之前的代码发现是通过aidl绑定的两个进程,但是因为两个进程需要互相收发消息,所以A→B, B←A进行了两次绑定。本着能只绑定一次就不多浪费一次的原则,选择对这个通信方式进行改造。首先aidl这个东西就不再多赘述,是非常基础的多进程通信方法。其次通过一次aidl绑定后就可以调用Server端的服务,这一点也不多赘述,因为是aidl的平A用法。这里主要说明一下如何使用aidl实现反向调用客户端的方法用法通过查找其他博主的文章,发现统一使用了Rem

2021-07-30 22:11:08 1131

原创 【Kotlin入门】使用密封类优化代码

可以解决为了满足编译器的要求而编写无用条件分支的情况没有写密封类的时候interface Resultclass Success(val msg: String):Resultclass Failure(val error:Exception):Resultfun getResultMsg(result: Result) = when(result){ is Success -> result.msg is Failure -> result.error.mess.

2021-07-18 19:36:27 105 1

原创 【Kotlin入门】延迟初始化

没有延迟初始化的时候:priavte var adapter : MsgAdapter?=null //需要首先赋值为null//在接下来的方法中对其初始化override fun onCreate(){ adapter = MsgAdapter(msgList)}//即便已经初始化,在下面方法中仍然需要判空override fun onClick(){ adapter?.notifyItemInserted(msgList.size-1)}延迟初始化private late

2021-07-18 19:35:05 226

原创 【Kotlin入门】作用域函数

Withval result = with(obj){ //这里是obj的上下文,可以进行所有关于obj的操作 "value"//返回值,with函数的返回值}作用:可以是的连续调用同一个对象的多个方法的时候让代码变得更加简洁fun appendBuilder(){ val list = listOf("Apple", "Banana", "Orange", "Watermelon", "Peach", "Pear") var builder = StringBuil

2021-07-17 23:05:31 96 1

原创 【Kotlin入门】空指针检查

继承时构造函数的问题子类中有主构造函数,就会默认调用父类中的构造函数,所以冒号后面继承父类的时候需要加上() 。class Student (val sno:String, val grade:Int, name:String, age:Int): Person(name, age){ constructor(name: String, age: Int):this("",0,name, age) constructor():this("",0)}子类中没有主构造函数,就不会默认调

2021-07-17 23:02:57 68

原创 【Kotlin入门】面向对象相关

继承时构造函数的问题子类中有主构造函数,就会默认调用父类中的构造函数,所以冒号后面继承父类的时候需要加上() 。class Student (val sno:String, val grade:Int, name:String, age:Int): Person(name, age){ constructor(name: String, age: Int):this("",0,name, age) constructor():this("",0)}子类中没有主构造函数,就不会

2021-07-17 23:00:54 57

原创 一步到位安装R环境(R,Rattle,RStudio)

文章目录一步到位安装R环境(R,Rattle,RStudio)1 更换源1.1 更换sources.list的源2 安装R语言3. 安装Rattle3.1 针对第一个问题我还是通过尝试,勉强想到两个解决方案:3.2 针对第二个问题4 启动rattle5 安装RStudio一步到位安装R环境(R,Rattle,RStudio)本次使用的Ubuntu版本为20.04LTS,下载自MSDN,优点就是下载速度快,干净,官方原版,放心事情起因:学校开设的Data Mining课程需要安装R语言环境,包括R语

2021-02-21 18:04:23 1141 1

原创 【LeetCode和牛客网刷题】424替换后的最长重复子串

替换后的最长重复子串Genre: 滑动窗口link: https://leetcode-cn.com/problems/longest-repeating-character-replacement/一道很经典的滑动窗口问题:给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换 k 次。在执行上述操作后,找到包含重复字母的最长子串的长度。注意:字符串长度 和 k 不会超过 10^4。示例 1:输入:s = "ABAB", k = 2输出:4解

2021-02-03 09:25:04 326

原创 【LeetCode和牛客网刷题】组合综合(#39,#40,#216)

组合综合三连目录组合综合三连39.组合综合Ⅰ关键词:算法:代码:40.组合综合Ⅱ关键词:算法:代码:216. 组合综合Ⅲ关键字:代码:39.组合综合Ⅰ力扣给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。 示例 1:输入:candidates = [2,3,6

2021-01-23 17:47:07 175 1

原创 【Java从头开始】第四章【3】XML和JSON

第四章 XML和JSON1 XML1.1 简介可扩展标记语言(软件与软件交流时可用的语言)特性:xml具有平台无关性,是一门独立的标记语言(不论是系统平台的不同还是语言平台的不同)xml具有自我描述性1.2 学习XML的作用网络数据传输(结构化传输)数据存储配置文件1.3 XML的语法格式1. XML文档的声明:<?xml version="1.0" encoding="UTF-8"?> (展现了自我描述性)2. 标记(元素/标签/节点)<names

2021-01-12 13:07:47 128

原创 【Java从头开始】第四章【2】核心类库

第四章 Java核心类库目录第四章 Java核心类库4.1 泛型4.1.1 泛型类4.1.2 泛型接口4.1.3 泛型方法4.1.4 泛型限制类型4.1.5 泛型的通配符 ?4.1.6 去泛型化4.2 Objects类4.3 Math类4.4 Arrays类4.5 BigDecimal4.6 Date4.6 DateFormat4.7 Calendar4.8 System类4.9 String类4.9.1 内存分区4.9.1.1 方法区4.9.1.2 堆区(Heap)4.9.1.3 方法区的演变4.9.1

2021-01-09 20:15:48 82

原创 【Java从头开始】第四章 多线程相关(持续更新)

第四章 之多线程目录第四章 之多线程1 线程与进程1.1 线程调度1.2 同步与异步1.3 并发与并行1.4 使用多线程1.4.1 继承Thread1.4.2 实现Runnable接口1.4.3 实现Callable1.4.4 Thread类1.4.5 线程休眠sleep1.4.6 线程阻塞1.4.7 线程中断1.4.8 守护线程1.5 线程安全问题1.5.1 同步代码块1.5.1 同步方法1.6 锁的分类1.6.1 显式锁1.6.2 公平锁和非公平锁1.7 线程死锁1.8 多线程通信问题1.8.1 生产

2021-01-08 10:53:36 127

原创 【Leetcode和牛客网刷题】Leetcode #198 打家劫舍

198 打家劫舍一道入门的动态规划题,通过尝试法,尝试使用暴力递归完成题目,然后优化为动态规划算法你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3

2021-01-03 13:08:40 172 2

原创 【Leetcode和牛客网刷题】Leetcode #3 (牛客网NC41)无重复字符的最长子串(数组)

最长无重复子串Leetcode:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: s = "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注意,你的答案

2020-12-31 11:06:45 144

原创 【Java从头开始】第三章 面向对象

目录第三章 面向对象3.1 面向对象概述3.1.1 面向过程和面向对象有什么区别?3.1.2 面向对象使用的术语(三大思想)3.1.3 面向对象包括3大特征3.1.4 类和对象的概念3.1.5 类 = 属性 + 方法3.1.6 类的定义3.2 创建对象3.2.1 创建对象内存分析3.2.1.1 栈3.2.1.2 堆3.3 构造方法3.1.1 构造方法设计3.4 方法重载3.5 构造方法的重载3.6 匿名对象3.7 封装3.8 this关键字3.9 static 关键字3.10 包介绍3.11 代码块3.11

2020-12-26 10:37:42 159

原创 【补番】左神算法系列——哈希的相关问题

文章目录哈希函数和哈希表1 哈希函数1.1 大数据类型问题1.2 设计RandomPool结构2 布隆过滤器2.1 在一个32000bit长的数组中,如何将第30000个位置的bit置1?2.2 实际的布隆过滤器(判断Url是否在黑名单里)3 一致性哈希哈希函数和哈希表1 哈希函数性质:输入域:无穷大输出域:固定大小相同的输入必定会有相同的hashcode存在不同输入对应相同hashcode的情况hashcode具有离散型(而且和输入没有关系,可以打乱输入规律)如果hashcode是均匀

2020-12-20 10:03:23 143 1

原创 【补番】左神算法系列——二叉树的三种遍历六种方法

1 二叉树的遍历1.7.1 二叉树的递归遍历1.7.2 二叉树的非递归遍历栈:为什么用栈:栈是一个可以反向输出的结构,因为二叉树的遍历一定是从上往下遍历每一个节点,是单向的,但是在递归中,子节点遍历完后可以返回父节点,形成了反向的遍历,这时候选择栈结构比较合适。而且递归本身就是一个方法栈。先序遍历:算法:准备一个栈将头节点压进去弹出头节点,打印,如果有的话,将右节点压入,再将左节点压入如果最后一个元素弹出,且没有新的节点加入,说明遍历完成,栈已空public static voi

2020-12-03 16:41:47 287

原创 【补番】左神算法系列——链表类问题

链表类问题1.7 链表题目1.7.0 链表生成器1.7.1 找到链表中的相同节点1.7.2 判断一个链表是不是回文结构1.7.3 链表的荷兰国旗问题1.7.4 复制含有随机指针节点的链表1.7.5 两个链表相交的一系列问题1.7.6 判断一个单链表是否有环(若有环,将环的起点返回)1.7 链表题目1.7.0 链表生成器自己写了一个链表生成器,包括一个可以按照格式打印的链表结点类。【使用方法】调用链表生成器,传入一个数组,即可按照数组数据生成链表//可以根据一个数组生成对应数值的链表,并且可以根

2020-12-02 21:29:29 177

原创 Java数据结构与算法(韩顺平老师)自学笔记

数据类型1 数据类型介绍数据类型的分类(按照结构划分):线性结构和非线性结构线性结构

2020-04-25 17:58:33 3413 2

原创 【算法4】自学笔记 &1.2数据抽象

文章目录1.2 数据抽象1.2.1使用抽象数据类型1.2.1.1抽象数据类型的API1.2.1.2继承的方法1.2.1.3用例代码1.2.1.4对象1.2.1.5创建对象1.2.1.6调用实例方法1.2.1.7使用对象1.2.1.8赋值语句1.2.1.9将对象多为参数1.2 数据抽象数据类型:指的是一组值和对这些值的操作的集合。本节重点学习定义和使用数据类型,这个过程也被称为数据抽象...

2020-04-15 17:14:14 265

空空如也

空空如也

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

TA关注的人

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