自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android 在设置界面停留久了Service被杀掉的问题

这个貌似没有办法避免,所以我的解决方法是在activity的onResume()方法加上service的检测要是被杀掉了就重新启动。发现用于维护即时通信的WebSocketService在设置界面停留一分半左右会被杀掉。

2024-06-11 13:39:13 177

原创 android14 录屏权限改动

记录一个坑,项目安装在android14的设备上出错,查了官方文档才发现:

2024-02-19 13:11:29 815

原创 网络层重点协--IP协议

因此, 除了最后一个报文之外,其他报文的长度必须是8的整数倍(否则报文就不连续了)。我们发送UDP/TCP协议时,将本机IP(提前携带)和目标IP(Socket写好)发送,这两个IP的直接连线是长期目标,然后我们就开始寻找一个个短期目标(通过主机内部维护着的路由表完成)4位头部长度(headerlength):IP头部的长度是多少个32bit,也就是 length * 4 的字节数。16位标识(id):唯一的标识主机发送的报文。4位版本号(version):指定IP协议的版本,对于IPv4来说,就是4。..

2022-08-13 15:45:54 672

原创 TCP协议

在Header中,我们会保存payload中第一个字节的数据(SN编号),这样编号就变得可用了,在我们发送的时候,发送这个字节数据即可,segent会承担payload的长度。滑动窗口存在于发送缓冲区,我们应用层会把所有需要发送的数据放入缓冲区,然后我们滑动窗口就是在这个数据中的一个窗口,但大小由接收缓冲区的window决定,会实时变化。此处的检验和不光 包含TCP首部,也包含TCP数据部分。我们讲的广义上的流量控制,是通过对方的接收能力和网络承载能力来动态的调节自己的发送流量,以此来提高到达率。...

2022-08-11 17:42:19 396

原创 网络中的一些基本概念

协议,网络协议的简称,网络协议是网络通信(即网络数据传输)经过的所有网络设备都必须共同遵从 的一组约定、规则。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互 通信交流。语法:即数据与控制信息的结构或格式;类似打电话时,双方要使用同样的语言:普通话语义:即需要发出何种控制信息,完成何种动作以及做出何种响应;语义主要用来说明通信双方应当怎么做。用于协调与差错处理的控制信息。类似打电话时,说话的内容。一方道:你瞅啥?另一方就得有对应的响应:瞅你咋的!...

2022-08-06 21:31:42 448

原创 File 类的用法和 InputStream, OutputStream 的用法

可以用绝对路径和相对路径对文件树结构的修改方法创建新文件创建目录会创建该路径下所有不存在的目录删除文件方法移动节点(重命名)现有这个改名前.txt文件现执行这样一段代码:可以发现文件名称就修改了:判断文件存在&&是文件夹判断文件存在&&是普通文件获取文件标准路径返回文件的一般绝对路径返回文件的标准绝对路径针对目录获取文件名方法得到父类文件名得到该文件最后一次修改的时间得到文件的所有孩子按照名称删除普通文件现有这些文件执行代码后,输

2022-08-06 18:58:13 773

原创 IO、存储、硬盘、文件系统

随着文件越来越多,对文件的系统管理也被提上了日程,如何进行文件的组织呢,一种合乎自然的想法出现了,就是按照层级结构进行组织 —— 也就是我们数据结构中学习过的树形结构。我们可以把计算机的存储结构比作一个金字塔,塔尖的传播速度最快,但是容量较小,反之则越来越慢,但是塔底的容量最大。我们可以简单认为硬盘有数据存储的就是一个整体的存储结构,而没有数据存储的是可用空间。“我们”指的就是进程的当前工作目录,一般一个进程的启动目录就是当前的工作目录。对于文件树的操作,可以分为,判断是否是目录,创建,删除,重命名。...

2022-08-05 23:57:39 151

原创 Java--锁策略,cas和synchronized优化过程

CAS全名:Compare and Swap : 比较交换,是乐观锁的实现方式之一,这种实现不会阻塞线程,而是不断尝试更新。一个CAS涉及到以下操作:我们假设内存中的原数据V,旧的预期值A,需要修改的新值B。...

2022-08-05 21:51:14 154

原创 线程死锁的成因以及解决方案

线程死锁描述的是:多个线程同时被阻塞,他们中的一个或多个都在等待某个资源被释放,由于线程被无期限地阻塞,因此程序不可能正常终止。System . out . println("先工作再玩");System . out . println("忙完了,上号!");} } } } , "工作");System . out . println("玩够了再工作");System . out . println("开始工作");} } } } , "上号");} }...

2022-08-04 17:09:49 4179

原创 UDP协议介绍

UDP协议的相关介绍

2022-07-24 17:04:48 1444

原创 数据结构----优先级队列(最小堆,最大堆)

一 . 最大堆1. 定义2 . 添加元素3.在最大堆中取出最大值二 . 堆化 ---- heapify1 . 概念2 . 原地堆排序(O(n))三 . 最大堆的代码实现四 . 基于最大堆的优先级队列五 . 最小堆六 . 基于最小堆的优先级队列一 . 最大堆1. 定义1.首先是一颗完全二叉树,使用数组来存储2.父子节点之间通过下标来表示,此时树中某个节点的索引为x时: 父节点 :(x - 1) /2左孩子节点 :2x + 1右孩子节点 :2x + 23.堆中树根节点值 >= 子树中.

2022-05-26 11:08:03 799

原创 数据结构--二叉树的概念及遍历方法

二叉树一 . 概念一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵别称为左子树和右子树的二叉 树组成。二叉树的特点:每个结点最多有两棵子树,即二叉树不存在度大于 2 的结点。二叉树的子树有左右之分,其子树的次序不能颠倒,因此二叉树是有序树。二 . 二叉树的性质若规定根节点的层数为1,则一棵非空二叉树的第i层上最多有 (i>0)个结点若规定只有根节点的二叉树的深度为1,则深度为K的二叉树的最大结点数是 (k>=0)对任何一棵二叉树, 如果其叶

2022-05-25 16:37:37 402

原创 数据结构——栈和队列

一 . 栈(Stack)1.1 概念栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据在栈顶1.2 实现利用顺序表实现,即使用尾插 + 尾删的方式实现利用链表实现,则头尾皆可相对来说,顺序表的实现上要更为简单一些,所以我们优先用顺序表实现栈。

2022-05-20 23:50:02 132 1

原创 String类--创建字符串以及字符串的相关操作

String类的介绍String类是字符串操作类,String对象由0或多个包含在""下的字符组成,Java中把String类用final声明即创建后就不可修改。创建字符串方式一:直接赋值String str = "abc";方式二:通过构造方法产生对象String str1 = new String("abc");方式三:通过字符数组产生对象 char[] data = new char[]{'a','b','c'}; String str2 = new Stri

2022-05-17 17:27:28 2255

原创 面向对象编程

封装使用private将属性进行封装(这个属性只在当前类的内部可见,对外部隐藏)。使用public作用在方法上,提供调用的入口。封装有两大特性:保护性和易用性保护性创建一个Person类,假设他的money属性是public(公共的),那么所有的人类对象都可以调用,也就是说你的钱任何人都可以花,这合理吗?public class Person { public String name; public double money ;}class person { pub

2022-05-03 17:31:42 163

原创 奶奶看完都说简单的链表讲解

线性表线性表是n个具有相同特性的数据元素的有限序列,就是多个相同数据类型元素逻辑上呈直线排列,逻辑上连续,我们把这种结构称为线性表。(顺序表)(逻辑连续,物理不连续,代表就是单链表)单链表单向链表:每个节点只保存了下一个节点的地址,只能从头节点开始向后遍历,这种链表结构称为单向链表,简称单链表。单链表类似于火车,火车不同车厢之间都是通过一个挂钩连接的,当这两个车厢脱钩后这两个车厢就没关系了。这就是一个链表对象:public class SingleLinedList { //

2022-04-28 17:00:27 119

原创 动态数组(增删改查)

一.包的创建1.创建包包名称使用全小写,多个单词使用下划线分隔表示当前的MyArray类是在seqlist这个包下。包(文件夹)最大的意义在于类可以重名。文件的全名称:路径+文件名称+文件后缀类的全名称:包名.类名 (seqlist.MyArray)2.包的访问权限就是权限啥也没写,默认就是包访问权限对于包访问权限来说,只有当前包的内部可见,子包,子文件夹都不可见。(对于不同文件夹有多个重名的类,这个时候使用import导入类,import只能导入某个包中的某个类,不能直接导入一

2022-04-19 10:10:58 339

原创 冒泡排序(升序)

给定一个整型数组, 实现冒泡排序(升序排序)冒牌排序原理如下:转化为代码:import java.util.Arrays;public class BubbleSort { public static void main(String[] args) { int[] nums = new int[]{2,6,4,8,9,4,5}; BubbleSort(nums); System.out.println(Arrays.toString(num

2022-04-16 17:02:36 63

原创 数组所有元素之和

实现一个方法 sum, 以数组为参数, 求数组所有元素之和.代码如下:public class sum { public static void main(String[] args) { int[] nums = new int[]{2,6,8,4,2}; System.out.println(sum(nums)); } //实现一个方法 sum, 以数组为参数, 求数组所有元素之和 public static int sum(int[]

2022-04-16 16:47:04 841

原创 求数组的平均值

实现一个方法 avg, 以数组为参数, 求数组中所有元素的平均值(注意方法的返回值类型)代码如下:public class avg { public static void main(String[] args) { int[] nums = new int[]{1,3,5,6}; System.out.println(avg(nums)); } public static double avg(int[] arr){ double

2022-04-16 16:41:06 2369

空空如也

android读取u盘

2024-02-19

android WebRTC

2023-09-04

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

TA关注的人

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