自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Yawn

“就像热爱漫无边际。”

  • 博客(310)
  • 资源 (12)
  • 收藏
  • 关注

原创 Android——小知识点总结

(1)stub什么是stub?如果一个接口有很多方法,如果要实现这个接口,就要实现所有的方法。一个类从业务来说,可能只需要其中一两个方法。如果直接去实现这个接口,除了实现所需的方法,还要实现其他所有的无关方法。而如果通过继承存根类就实现接口,就免去了这种麻烦。举个例子:接口类public interface IRepo { public void remove(String... sarr); public void add(String... sarr);

2021-11-01 16:30:16 1427

原创 Java——方法(leetcode)

1. 数组扩充长度1://digits 为原数组 digits = new int[digits.length + 1]; digits[0] = 1; return digits;2: int[] digits1 = Arrays.copyOf(digits, digits.length+1); digits1[0] = 1; return digits12. 复制数组public static void arraycopy(Object src, int src

2021-06-27 14:35:00 275

原创 计算机网络

1. TCP/IP模型TCP/IP协议模型(Transmission Control Protocol/Internet Protocol),包含了一系列构成互联网基础的网络协议,是Internet的核心协议。基于TCP/IP的参考模型将协议分成四个层次,它们分别是链路层、网络层、传输层和应用层。下图表示TCP/IP模型与OSI模型各层的对照关系。TCP/IP协议族按照层次由上到下,层层包装。最上面的是应用层,这里面有http,ftp,等等我们熟悉的协议。第二层则是传输层,著名的TCP和

2021-06-17 19:33:17 1377 6

原创 Kotlin学习笔记——归纳整理

目录一:基础语法1.1 特性1.2 变量1.2.1 可变变量的定义: var 关键字1.2.2不可变变量的定义: val 关键字1.2.3 常量1.2.4 字符串模板1.3 类与属性1.3.1 基础1.3.2 自定义访问器1.3.3 备用字段1.3.4 延迟初始化属性和变量1.4 函数1.4.1 函数基本方法1.4.2 主次构造函数1.4.3 函数调用1.5 控制流:if、when、for、while1.5.1 区间1.5.2 if表达式1.5.3 when表达式1.5.4 for 循环1.5.5 Whil

2021-05-07 16:05:22 468

原创 Android学习笔记——归纳整理

Android入门笔记——归纳总结

2021-04-21 20:40:22 8006

原创 JAVA_Android客户端_基础知识点总结

@[TOC#目录JAVA基础计算机网络操作系统Android#JAVA基础1.四大特性及其含义抽象:对现实世界的事物进行概括,抽象为在计算机虚拟世界中有意义的实体封装:将某事物的属性和行为包装到对象中,构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,并且尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系继承:子类继承父类,不仅可以有父类原有的方法和属...

2020-03-09 01:02:44 2122 1

原创 Android——定时器轮询

时间片轮询

2022-09-15 11:59:38 1323 1

原创 Android——protobuf的简单使用

android protobuf

2022-09-15 11:22:44 1168 1

原创 Android——应用进程和应用生命周期

1. 概述在大多数情况下,每个 Android 应用都在各自的 Linux 进程中运行。当需要运行应用的一些代码时,系统会为应用创建此进程,并使其保持运行,直到不再需要它且系统需要回收其内存以供其他应用使用。应用进程的生命周期并不由应用本身直接控制,而是由系统综合多种因素来确定的,比如系统所知道的正在运行的应用部分、这些内容对用户的重要程度,以及系统中可用的总内存量。这是 Android 非常独特的一个基本功能。一个不常见但很基础的Android特性是,一个应用进程的生命周期并不是由应用本身直接控制的

2021-12-24 15:37:18 1040 3

原创 Android——应用上下文Context

1. 简介Context是Android的一个总父类,启动四大组件,获取资源,获取类加载器等都是通过Context来完成,Activity,Service,Application也都是派生于Context。是应用程序环境的全局信息的接口。是一个抽象类,由Android系统提供。允许访问特定于应用程序的资源和类,以及调用应用程序级操作,如启动活动,广播和接收意图等。Context是维持Android程序各组件能够正常工作的一个核心功能类,而这个核心功能类相当于一个大的环境,只有在这个环境下,An

2021-12-21 17:20:57 764

原创 Android——SharedPreferences

1. 场景首先我们来看看,SharedPreferences在什么场景比较适用:SharedPreferences是一种轻量级的存储,数据会写在本地的一个xml文件中,以键值对的形式存在,如果程序卸载,此文件也跟着卸载以Map形式存放简单的配置参数可以保存的数据类型有:int、boolean、float、long、String、StringSet。保存位置:data/data/程序包名/share_prefs主要用途:1.保存应用的设置 例如:设置静音,下次进入还是静音2.判断是否是第

2021-12-09 16:44:17 6444 1

原创 Android——BroadcastReceiver里怎么执行耗时操作

一个进程如果正在执行BroadcastReceiver的 onReceive() 方法,就会被当做一个前台进程,不易被系统杀死。当 onReceive() 执行完毕,BroadcastReceiver 就不再活跃,其所在进程会被系统当做一个空进程,随时有可能被系统杀死。所以在 onReceive 方法中执行异步请求操作,很可能请求结果没有返回,BroadcastReceiver就被系统回收了。在BroadcastReceiver里执行耗时操作,一般有两种写法:(1)由当前BroadcastRece

2021-12-09 15:01:16 3861

原创 Android——BroadcastReceiver广播机制(自定义广播)

普通广播可见: Android——广播1. 概述Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器)。广播作为Android组件间的通信方式,可以使用的场景如下:1.同一app内部的同一组件内的消息通信(单个或多个线程之间);2.同一app内部的不同组件之间的消息通信(单个进程);3.同一app具有多个进程的不同组件之间的消息通信;4.不同app之间的组件之间消息通信;5.Android系统在特定情况下与Ap

2021-12-06 18:46:56 4652

原创 Leetcode——从英文中重建数字

1. 从英文中重建数字2 题解首先我们可以统计每个字母分别在哪些数字中出现:然后根据「英文单词中的字符唯一性」确定构建的顺序,最后再对答案进行排序即可。zero 中的 z 在其余所有单词中都没出现过,我们可以先统计 zero 的出现次数,并构建 0;然后观察剩余数字,其中 eight 中的 g 具有唯一性,构建 8;再发现 six 中的 x 具有唯一性,构建 6;发现 three 中的 h 具有唯一性(利用在此之前 eight 已经被删除干净,词频中仅存在 three 对应的 h),构建

2021-11-29 14:00:09 3413

原创 Android——ClipBoard(复制和粘贴)

1. ClipBoard 简介ClipBoard框架,会将数据放入一个剪贴对象中,然后将该剪贴对象放到系统级剪贴板中。剪贴对象可以采用以下三种形式之一:Text:文本字符串,您可以直接将字符串放入剪贴对象中,然后将剪贴对象放到剪贴板中。如需粘贴字符串,您需要从剪贴板获取剪贴对象,然后将字符串复制到应用的存储空间。URI:一Uri 对象,表示任何形式的 URI。它主要适用于从 Content Provider 复制复杂的数据。如需复制数据,您需要将一个 Uri 对象放入一个剪贴对象中,并将该剪贴对

2021-11-18 16:55:56 5457

原创 Android——使用Intent打开第三方应用

一个普通的应用默认会有一个入口 Activity与其 icon,在 AndroidManifest.xml 中:<application> <activity android:name=".MainActivity" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent

2021-11-12 15:13:21 4289 1

原创 Leetcode——最长定差子序列

1. 接雨水2(1)

2021-11-05 15:41:40 112

原创 Leetcode——路径交叉

1. 路径交叉(1)模拟时间复杂度:O(n)O(n)。空间复杂度:O(1)O(1)。不想交总共有三种情况:(1)外卷:dist[i] > dist[i-2] 就一直不会相遇(2)内卷:dist[i] < dist[i-2]就一直不会相遇外卷 卷 内卷:如下图所示,这种分情况讨论,只有出现下面这种情况才不会相交,而我们只要在外卷内卷交界处做一个特殊处理就可以转换成上面两种情况,即 dist[i] > dist[i-2] - dist[i-4] 时,从 i-1

2021-10-29 11:04:07 3506

原创 Leetcode——重新排序得到 2 的幂

1. 重新排序得到 2 的幂(1)DFS对 n 进行重排,然后检查重排后的数值是否属于 2 的幂。由于 2 的幂数固定,我们可以先通过「打表」将范围落在 [1, 1e9] 以内的 2 的幂预处理出来,这样我们可以在 O(1)的复杂度内判断某个数是否为 22 的幂。class Solution { static Set<Integer> set = new HashSet<>(); static { for (int i = 1; i <

2021-10-28 11:33:14 132

原创 Leetcode——最小操作次数使数组元素相等

1.最小操作次数使数组元素相等(1)朴素很重要的一点,n-1增加1,相当于剩下的那个减1。等价于使 n - 1 个元素增加 1,这个操作实际上可以等价于使1个元素减少1要保证数组中最小的元素不要再减小,对其他的元素使用这个操作,最终所有元素都减至最小值就可以结束了。进行两次遍历,第一次遍历找出最小值,第二次遍历求每个元素与最小值的差值,也就是操作次数,最后对操作次数求和就是我们的答案class Solution { public int minMoves(int[] nums) {

2021-10-20 13:09:47 306

原创 Leetcode——整数转换英文表示

1. 整数转换英文表示(1)字符串模拟英文中数字表示是每三位一组进行的,x>=100:此时首先需要表示成 ??? hundred,表示完后考虑更小的位数;x >= 20:此时需要表示成 ??? XXX-ty 的形式,表示完后考虑更小的位数;x < 20:直接描述成具体的单词。class Solution { private static int BILLION = (int)Math.pow(10, 9); private static int MILLION

2021-10-12 10:42:26 249

原创 Leetcode——将数据流变为多个不相交区间

1. 将数据流变为多个不相交区间(1)模拟假设当前第一次加入一个值为 val 的元素,那么只有四种情况:(1)数据流中已经被加入了 val - 1 和 val + 1 两个元素,但因为 val 第一次被加入,所以当前数据流的区间列表中,一定存在两个区间,一个以 val - 1 结尾,另一个以 val + 1 开头。那么,加入 val 后,这两个区间就可以被合并为一个区间。(2)数据流中已经被加入了 val - 1,但没有 val + 1。此时,区间列表中一定存在一个区间,以 val - 1 结尾

2021-10-09 11:30:54 103

原创 Leetcode——重复的DNA序列

1. 重复的DNA序列(1)滑动窗口 + 哈希表从左到右处理字符串 ss,使用滑动窗口得到每个以 s[i]为结尾且长度为 10 的子串,同时使用哈希表记录每个子串的出现次数,如果该子串出现次数超过一次,则加入答案。为了防止相同的子串被重复添加到答案,而又不使用常数较大的 Set 结构。我们可以规定:当且仅当该子串在之前出现过一次(加上本次,当前出现次数为两次)时,将子串加入答案class Solution { public List<String> findRepeated

2021-10-09 11:05:01 366

原创 Leetcode——栈的压入、弹出序列

1. 栈的压入、弹出序列(1)模拟给定一个压入序列 pushedpushed 和弹出序列 poppedpopped ,则压入 / 弹出操作的顺序(即排列)是 唯一确定 的。如下图所示,栈的数据操作具有 先入后出 的特性,因此某些弹出序列是无法实现的。考虑借用一个辅助栈 stack,模拟 压入 / 弹出操作的排列。根据是否模拟成功,即可得到结果。入栈操作: 按照压栈序列的顺序执行。出栈操作: 每次入栈后,循环判断 “栈顶元素 == 弹出序列的当前元素” 是否成立,将符合弹出序列顺序的栈顶元

2021-09-30 16:33:06 289

原创 Leetcode——正则表达式匹配

1. 正则表达式匹配(1)递归以字符串"aaa"和模式串"abac*a"为例:这里有两种匹配方式:(1)单个匹配,如果两个字符相同,或者模式串当前是万能字符.,则匹配成功,然后继续递归比较 s[i + 1:] 和p[i + 1:](2)如果模式串后面跟了"*",这又分为两种情况:1.如果s[i]和p[i]不等(比如aa和b*这种情况),则将b *忽略掉,也就是继续递归比较s和p[i + 2:]2.如果p[i]和s[i]相等(比如aa和a*这种情况),我们可以选择忽略a * ,也就是执行

2021-09-30 16:08:54 338

原创 Leetcode——扁平化多级双向链表

1. 扁平化多级双向链表多级双向链表中,除了指向下一个节点和前一个节点指针之外,它还有一个子链表指针,可能指向单独的双向链表。这些子列表也可能会有一个或多个自己的子项,依此类推,生成多级数据结构,如下面的示例所示。给你位于列表第一级的头节点,请你扁平化列表,使所有结点出现在单级双链表中。示例 1:输入:head = [1,2,3,4,5,6,null,null,null,7,8,9,10,null,null,11,12]输出:[1,2,3,7,8,11,12,9,10,4,5,6]解释:输

2021-09-26 16:09:54 114

原创 Leetcode——两整数之和

1. 两整数之和(1)位运算对于二进制的加法运算,若不考虑进位,与异或运算类似1+1=01+0=10+1=10+0=0再来考虑进位,不难发现,此方法与异或运算&类似,所以加法可用异或来实现,然后考虑进位0+0 进位为 01+0 进位为 10+1 进位为 01+1 进位为 1加法运算可以这样实现:异或替代不进位加法如果进位不为0, 说明有进位 , 结果 = 异或的结果 + 进位在异或前收集进位, 异或后判断是否要加进位先来看一个例子 7 + 1的过程:【

2021-09-26 14:53:27 190

原创 Leetcode——文本左右对齐

1. 文本左右对齐(1)暴力模拟如果当前行只有一个单词,特殊处理为左对齐;如果当前行为最后一行,特殊处理为左对齐;其余为一般情况,分别计算「当前行单词总长度」、「当前行空格总长度」和「往下取整后的单位空格长度」,然后依次进行拼接。当空格无法均分时,每次往靠左的间隙多添加一个空格,直到剩余的空格能够被后面的间隙所均分。class Solution { public List<String> fullJustify(String[] words, int maxWid

2021-09-16 17:24:06 214 1

原创 Leetcode——找到需要补充粉笔的学生编号

1. 找到需要补充粉笔的学生编号(1)暴力class Solution { public int chalkReplacer(int[] chalk, int k) { int len = chalk.length; for (int i = 0; i <= len; i++) { //到最后一个值,开启下一轮循环 if (i == len) { i = 0;

2021-09-16 16:30:06 110

原创 Leetcode——不含连续1的非负整数(数位DP,打家劫舍,理解不够深)

1. 不含连续1的非负整数(1)递归(参考打家劫舍)这道题其实有点类似 打家劫舍: 不能包含相邻的1class Solution { HashMap<Integer, Integer> dp = new HashMap<>(); public int findIntegers(int n) { // 特殊情况:0,1,10,11,100 if(n < 4) return n < 3 ? n

2021-09-15 16:41:09 104

原创 Leetcode——回旋镖

1. 回旋镖(1)Hash表class Solution { public int numberOfBoomerangs(int[][] points) { int n = points.length; int ans = 0; for (int i = 0; i < n; i++) { Map<Integer, Integer> map = new HashMap<>();

2021-09-13 20:37:49 133

原创 Leetcode—— IPO(最大化投资资金)

1. IPO(1)贪心 + 优先队列每完成一个任务都会使得总资金 w 增加或不变。因此对于所选的第 i 个任务而言,应该在所有未被选择且启动资金不超过 w 的所有任务里面选利润最大的。每次决策前,将启动资金不超过当前总资金的任务加入集合,再在里面取利润最大的任务取最大的过程可以使用优先队列(根据利润排序的大根堆),而将启动资金不超过当前总资金的任务加入集合的操作,可以利用总资金在整个处理过程递增,而先对所有任务进行预处理排序来实现。具体步骤1.根据 profits 和 capital

2021-09-08 15:34:27 205

原创 Leetcode——比较版本号

1. 比较版本号(1)字符串模拟对字符串进行分割,诸位比较「修订号」大小即可。对于缺省的修订号位置,使用 00 进行代指。时间复杂度:令 v1 长度为 n,v2 长度为 m。整体复杂度为O(max(n,m))空间复杂度:O(n + m)O(n+m)class Solution { //对字符串进行分割,诸位比较「修订号」大小即可。 //对于缺省的修订号位置,使用 00 进行代指。 public int compareVersion(String v1, String

2021-09-01 11:45:22 513

原创 Leetcode——矩阵置零

1. 矩阵置零(1)朴素(Set)思路:第一次循环,存储存在元素为0的行数和列数第二次循环,将存在元素0的行列全部置0时间复杂度O(m*n)空间复杂度O(m+n)class Solution { public void setZeroes(int[][] matrix) { Set<Integer> row = new HashSet<>(); Set<Integer> col = new HashSet<

2021-08-30 17:29:46 141

原创 Leetcode——检查数组对是否可以被 k 整除

1. 检查数组对是否可以被 k 整除(1)双指针(暴力超时)把数组中的元素每两个分为一组,总共分为n/2组,然后确保每组都能被k整除,这样结果才会返回true,否则返回false。每个元素都必须有另外一个元素与他相匹配才行,只要有一个不匹配就返回false其实这里面有个数学问题,假如有两组数据(a,b)和(c,d)他们都能被k整除,也就是说(a+b)%k=0,并且(c+d)%k=0;如果(a+c)%k=0,那么(b+d)%k=0肯定也是成立的。(这里的所有字母都是整数)举个例子,比如(3,5)

2021-08-30 11:55:14 441

原创 Leetcode——按权重随机选择

1. 按权重随机选择(1)朴素思路容易想到的思路就是将每个下标复制其权重份,然后随机选取一个:如上图所示,下标 0 处权重为 2,那么我们就往一个数组中存入 2 个值为 0(对应下标值) 的节点;同理,我们存入 1 个值为 1 的节点,和 4 个值为 2 的节点(2)前缀和优化但是,根据题目给出的数据范围,最坏情况下要存入109个节点,说明该解法是不行的!但是,我们可以参考这个暴力的思路,来进行一定的优化。上面思路的原理是,将数组分为 n 份,每份的权重为 w[i],如下图所示:那么,

2021-08-30 10:00:54 588

原创 Leetcode——完成任务的最少工作时间段(回溯)

1. 完成任务的最少工作时间段(1)回溯class Solution { int res; int maxSessionTime; int[] tasks; int[] sessions; public int minSessions(int[] tasks, int sessionTime) { this.res = tasks.length; this.maxSessionTime = sessionTime;

2021-08-29 15:17:12 667

原创 Leetcode——找出数组中的第 K 大整数(字符串中数字排序)

1. 找出数组中的第 K 大整数直接排序要不得,比如:2,21,12,1如使用Arrays.sort排序,会得到:1,12,2,21的序列,因为字符串按照第一位开始排序(1)转化为数字后排序可直接转为数字后再排序,但是如传入字符串数字过大,会报错class Solution { public String kthLargestNumber(String[] nums, int k) { int[] arr = new int[nums.length];

2021-08-29 11:31:22 200

原创 Leetcode——所有奇数长度子数组的和(前缀和)

1. 所有奇数长度子数组的和(1)暴力三重循环class Solution { public int sumOddLengthSubarrays(int[] arr) { int sum = 0; int len = arr.length; // i 用于控制子数组长度 for (int i = 1; i <= len; i+= 2) { //j用于控制子数组起点 for

2021-08-29 10:45:35 130

原创 Leetcode——区域和检索 - 数组不可变 / 二维区域和检索 - 矩阵不可变 (前缀和)

1. 区域和检索 - 数组不可变(1)前缀和由于涉及 -1 操作,为了减少一些边界处理,我们可以使前缀和数组下标从 1 开始记录,然后在进行答案计算的时候,根据源数组下标是否从 1 开始决定是否产生相应的偏移:class NumArray { int[] sum; public NumArray(int[] nums) { int n = nums.length; //前缀和数组下标从 1 开始,因此设定长度为 n + 1(模板部分)

2021-08-28 16:05:21 96

logfilter.7z

logfilter

2021-09-13

抓取systrace脚本.rar

抓取systrace脚本

2021-09-13

LeakTracer.zip

LeakTracer.zip

2021-06-23

毕业设计管理系统,毕业设计管理系统

使用Spring+SpringMVC+MyBatis整合框架作为后台开发框架,AmazeUI作为前端开发框架。 并使用Ehcache作为项目的缓存,druid作为项目的数据库连接池,使用FreeMarker实现word的导出,使用Shiro完成项目的登录认证

2020-03-13

基于Spring+Spring MVC+Mybatis(Maven方式构建):个人博客系统

个人博客系统 基于Spring+Spring MVC+Mybatis(Maven方式构建)

2020-03-13

超市进销存管理系统;

超市进销存管理系统

2020-03-13

超市管理系统源码,超市管理系统源码

超市管理系统源码

2020-03-13

日记、备忘、纪念日等功能的 Android App

一款具有打卡、日记、备忘、纪念日等功能的 APP

2020-03-13

Effective Java 3rd edition PDF 下载

Effective Java 3rd edition Effective Java 3rd edition Effective Java 3rd edition Effective Java 3rd edition

2020-03-12

Joshua Bloch-Effective Java(中文版第3版_俞黎敏译).rar

Effective Java包含大量的优秀Java编程实践,并对泛型和并发这两个充满陷阱的Java特性给出了充满洞察力的建议,以至于Java之父James Gosling为这本书作序:“我很希望10年前就拥有这本书。可能有人认为我不需要任何Java方面的书籍,但是我需要这本书。”

2020-03-12

JAVASCRIPT从入门到精通.pdf

JAVASCRIPT从入门到精通.pdf JAVASCRIPT从入门到精通.pdf JAVASCRIPT从入门到精通.pdf JAVASCRIPT从入门到精通.pdf

2017-09-11

空空如也

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

TA关注的人

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