自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 tcp

TCP保证可靠性的机制校验和序列号(按序到达)确认应答超时重传连接管理流量控制拥塞控制提高性能的机制滑动窗口快速重传延迟应答捎带应答

2020-07-27 14:48:45 75

原创 HashMap略详解

哈希表:主干就是数组;数组若通过指定的下标进行查找,查找速度快,时间复杂度为O(1),所以不考虑哈希冲突,哈希表也利用了这一点,仅需一次定位即可完成,时间复杂度为O(1)。当新增或查找某个元素时,把当前元素的关键字,通过某个函数映射到数组的某个位置,通过数组下标一次定位即可完成。即存储位置=f(关键字)。哈希冲突:通过哈希函数得到的实际地址,发现已经被其他元素占用。注意: 再好的哈希函数都 有可能 会发生哈希冲突。解决方法:1-开放定址法(发生冲突,继续寻找下一块未被占用的存储地址)

2020-07-13 19:41:55 94

转载 http/https协议/okhttp详解

Http协议详解Https协议详解OkHttp使用方法OkHttp解析图片来源于:一次Http请求过程

2020-07-11 21:11:15 369

原创 activity启动流程

app 冷启动是说从桌面启动 app ,此时我们的应用是没有进程的,需要创建。Activity 启动 Activity,指的是进程内启动新的页面,此时应用进程是存在的。系统桌面也是一个 Activity ,名叫 Launch ,所以 app 冷启动和 Activity 启动 Activity 差不多,走的都是 Activity 内部的方法,区别就是先启动应用进程的事,这样说大家就对这两种启动 Activity 的情况心里有数了这块必须清楚,因为面试时很多时候会问的,有的面试官会问你2者的关联,区别,简单的

2020-09-22 17:43:32 216 1

原创 android 进程间通信

Android中有哪些进程间通信方式?

2020-09-22 17:40:39 102

原创 final解析

1、修饰变量只能进行一次赋值操作,可以先声明再赋值。2、修饰方法参数public class FinalTest { /* ... */ public void finalFunc(final int i, final Value value) { // i = 5; 不能改变i的值 // v = new Value(); 不能改变v的值 value.v = 5; // 可以改变引用对象的值 }}3、final修饰方法方法前面加上final关键字,代表这个方法不可以被子类的方法重

2020-09-22 17:27:51 148

原创 排序方式

一、快速排序 public static int[] quickSort2(int[] a) { qSort(a, 0, a.length - 1); return a; } public static void qSort(int[] sequence, int low, int high) { int pivot = sequence[low]; // 取首元素的为基准 int left = low, right = high; if (lo.

2020-09-22 17:25:49 138

转载 二分查找

递归public static int recursionBinarySearch(int[] arr,int key,int low,int high){ if(key < arr[low] || key > arr[high] || low > high){ return -1; } int middle = (low + high) / 2; //初始中间位置 if(arr[middle] > key){ //比关键字大则关

2020-09-22 17:12:37 69

转载 http各版本

转载部分内容:https://blog.csdn.net/qq_22238021/article/details/81197157HTTP/0.9HTTP协议的最初版本,功能简陋,仅支持请求方式GET,并且仅能请求访问HTML格式的资源。HTTP/1.0请求行必须在尾部添加协议版本字段(http/1.0);必须包含头消息在0.9版本上做了进步,增加了请求方式POST和HEAD;不再局限于0.9版本的HTML格式,根据Content-Type可以支持多种数据格式,即MIME多用途互联网邮件扩展,例如

2020-09-21 21:53:07 245

转载 动画

https://blog.csdn.net/qq475703980/article/details/93243968

2020-09-18 17:27:02 65

转载 接口抽象类区别

转载:https://blog.csdn.net/fenglibing/article/details/2745123接口和抽象类有什么区别你选择使用接口和抽象类的依据是什么?接口和抽象类的概念不一样。接口是对动作的抽象,抽象类是对根源的抽象。抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么。比如,男人,女人,这两个类(如果是类的话……),他们的抽象类是人。说明,他们都是人。人可以吃东西,狗也可以吃东西,你可以把“吃东西”定义成一个接口,然后让这些类去实现它.所以,在高级语言上,一

2020-09-14 20:45:22 94

转载 线程池

本文包含知识点线程池的使用场景分析线程池的创建及重要参数1.线程池使用场景?java中经常需要用到多线程来处理一些业务,我们非常不建议单纯使用继承Thread或者实现Runnable接口的方式来创建线程,那样势必有创建及销毁线程耗费资源、线程上下文切换问题。同时创建过多的线程也可能引发资源耗尽的风险,这个时候引入线程池比较合理,方便线程任务的管理。java中涉及到线程池的相关类均在jdk1.5开始的java.util.concurrent包中,涉及到的几个核心类及接口包括:Executor、Ex

2020-09-06 22:34:57 406

转载 【Java】四种引用

四种引用:强引用软引用弱引用虚引用Java中提供这四种引用类型主要有两个目的:1、第一是可以让程序员通过代码的方式决定某些对象的生命周期;2、第二是有利于JVM进行垃圾回收。强引用指创建一个对象并把对象赋给一个引用变量。JVM宁愿OutOfMemory也不会回收这种对象软引用(SoftReference)如果一个对象具有软引用,内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。软引用可用来实现内存敏

2020-09-06 14:16:12 74

原创 【狂神】线程通信

线程协作生产者消费者模式Java提供了几个方法解决线程之间的通信问题wait(): 表示线程会一直等待,直到其他线程通知,与sleep不同,会释放锁;wait(long timeout)notify():唤醒一个处于等待状态的线程;notifyAll():唤醒同一个对象上所有调用wait()方法的线程,优先级别高的线程优先调度...

2020-09-01 17:48:51 89

原创 【狂神】线程-4

死锁:产生死锁的四个必要条件:1、互斥:一个资源每次只能被一个进程使用;2、请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放;3、不剥夺条件:进程已获得的资源,在未使用完之前,不能强行剥夺;4、循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。public class DeadLock { public static void main(String[] args) { MakeUp g1 = new MakeUp(0, "或姑娘");

2020-09-01 17:48:28 59

原创 【狂神】线程-3

线程同步多个线程访问同一对象,并且某些线程还想修改这个对象,此时就需要线程同步。线程同步就是一种等待机制,多个需要同时访问此对象的线程进入此对象的等待池形成队列,等前面的线程使用完毕,下一个线程再使用。队列和锁synchronized为了保证数据在方法中被访问时的正确性,在访问时加入锁机制synchronized,当一个线程获得对象的互斥锁,独占资源,其他线程必须等待,使用后释放锁即可。但会存在以下问题:一个线程持有锁会导致其他所有需要此锁的线程挂起;在多线程竞争下,加锁,释放锁会导致比较

2020-09-01 17:48:15 96

原创 【狂神】线程-2

aa

2020-08-28 16:22:55 59

原创 【狂神】线程-1

线程:线程就是独立的执行路径;在程序运行时,即使自己没有创建线程,后台也会有多个线程,如主线程、GC线程;main()称之为主线程,为系统的入口,用于执行整个程序;在一个进程中,如果开辟了多个线程,线程的运行由调度器安排调度,不一定立刻执行,调度器是与操作系统紧密相关的,前后顺序是不能人为干预的;对同一份资源操作时,会存在资源抢夺问题,需要加入并发控制;线程会带来额外的开销,如cpu调度时间,并发控制开销;每个线程在自己的工作内存交互,内存控制不当会造成数据不一致;三种创建方式:继承

2020-08-27 19:36:09 130

原创 【Android】四大组件-Broadcast

参考博客: Android BroadcastBroadcastAndroid通过广播来实现不同进程间的通信对应于广播(broadcast)还有一个广播接收器(broadcast receiver)每个广播指定了对应的action、type等信息,每个接收器根据这些信息来过滤是否自己要接收的广播。一、发送广播的方式上面已经介绍了系统中两种不同的Broadcast,而根据Broadcast传播的方式,Context提供了不同的方法来发布它们:sendBroadcast():发送普通广播。send

2020-08-23 15:15:47 105

原创 【Android】四大组件-Service

参考博客:郭霖大神——Android Service完全解析,关于服务你所需知道的一切(上)imxiangzi——Android Service两种启动方式详解(总结版)ServiceService分为本地服务(LocalService)和远程服务(RemoteService)一、分类1.1、本地服务运行在主线程,一定程度节省了资源,不需要什么IPC、AIDL,直接bindService就成。但是如果在Service中处理耗时的逻辑,就会导致ANR1.2、远程服务在使用时,在Manifes

2020-08-21 19:01:42 157

原创 【Android】四大组件-Activity

一、Activity

2020-08-21 15:40:43 81

原创 leetcode-55跳跃游戏

给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3步到达最后一个位置。示例 2:输入: [3,2,1,0,4]输出: false解释: 无论怎样,你总会到达索引为 3 的位置。但该位置的最大跳跃长度是 0 ,所以你永远不可能到达最后一个位置。//从后往前遍历数

2020-08-10 20:02:16 164

原创 leetcode-148.排序链表

/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public ListNode sortList(ListNode head) { if (head == null || head.next ==

2020-08-10 16:42:45 64

转载 四种引用

1、强引用如果一个对象具有强引用,它就不会被垃圾回收器回收。即使当前内存空间不足,JVM也不会回收它,而是抛出 OutOfMemoryError 错误,使程序异常终止。如果想中断强引用和某个对象之间的关联,可以显式地将引用赋值为null,这样一来的话,JVM在合适的时间就会回收该对象。String str = "hello"; // 强引用str = null; // 取消强引用2、软引用在使用软引用时,如果内存的空间足够,软引用就能继续被使用,而不会被垃圾回收器

2020-07-14 15:55:13 101

原创 双亲委派模型

什么是类加载器?类加载器是jre的一部分,负责动态将类添加到Java虚拟机。类加载分类1、启动类加载器 bootstrap classloader :加载jre/lib/rt.jar2、扩展类加载器 extension classloader :加载jre/lib/ext/*.jar3、应用程序类加载器 application classloader:加载classpath上指定的类库双亲委派机制双亲委派机制是指当一个类加载器收到一个类加载请求时,该类加载器首先会把请求委派给父类加载器。每个类

2020-07-14 15:41:55 48

原创 Java内存机制

运行时数据区域1、虚拟机栈线程私有,所以生命周期和线程相同每个方法在执行时都会进栈,在执行的同时创建一个栈帧,用于存储局部变量表、操作数栈、动态链接、方法出口等信息。也就是每个方法从调用到执行完成,对应着一个栈帧在虚拟机栈中的入栈到出栈的过程;局部变量表:存放编译期可知的各种基本数据类型、对象引用(不等同于对象本身)、returnAddress类型 (后两个不懂)。long和double类型占两个局部变量空间(Slot),因为他俩是64位的,其他的都占1个局部变量空间。当进入一个方法,这个方

2020-07-13 21:24:14 96

原创 线程安全/不安全

线程安全: 就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能访问,直到该线程访问结束。线程不安全: 多个线程先后更改数据,有时可能甚至抛出异常,或者得到脏数据。HashMap:线程不安全------可以用ConcurrentHashMap,ArrayList也有concurrent…HashTable:线程安全,给每个方法都加上了synchronnized关键字。和ConcurrentHashMap的区别是加锁粒度不同,不是很懂。===========.

2020-07-13 17:35:37 87

转载 常量池

(不是很懂,别看这篇,懂了再重写,先记一下)常量池分类编译时常量池: 没懂,懂了再更新运行时常量池: class文件被加载进内存之后,常量池保存在方法区中。栗子:String a = "abc";String b = new String("abc");System.out.println(a == b);----*----结果:false...

2020-07-13 15:44:53 115

转载 深入理解static

深入理解static

2020-07-13 14:19:41 373

转载 matplot绘图优化

python matplotlib绘图优化

2020-07-13 10:53:38 168

转载 handler详解

1、简述Handler机制2、Handler是怎么实现切换线程的?3、handler.sendMessage()与handler.post()的区别3、Handler为什么会引起内存泄漏,解决方式是什么4、Looper是怎么取消息的?5、MessageQueue是怎么增删消息的?6、一个线程可以有几个Handler?几个Looper?几个MessageQueue?7、A Handler发送的消息为什么不会跑到B Handler的handleMessage()方法中?A Handler发送的消

2020-07-11 15:01:17 306

空空如也

空空如也

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

TA关注的人

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