- 博客(23)
- 收藏
- 关注
原创 计算机网络——TCP/IP协议
1.检验和如何检验数据是否正确(TCP是如何做的?/UDP是如何做的)UDP:1.在UDP用户数据报之前增加12个字节的伪首部2.把全零放入检验和字段,把伪首部以及UDP用户数据报看成是由许多16位的字串接起来的3.按二进制反码计算出这些16位字的和,将此和的二进制反码写入检验和字段后发送UDP用户数据报4.接收方把收到的UDP用户数据报连同伪首部一起,按二进制反码求这些16位字的和,无差...
2020-03-08 22:52:06
390
原创 Java多线程(7):ReentrantLock
ReentrantLockReentrantLock实现了lock接口,Lock接口提供了无条件/可轮询的/定时的/可中断的锁获取操作提供的方法:1)lock(); 用来获取锁,如果锁已经被其他线程获取,进行等待2)tryLock();用来获取锁,如果获取成功,则返回true,获取失败,则返回false3)tryLock(long time, TimeUnit unit); 这个方法拿不...
2020-02-28 23:33:35
126
原创 Java多线程(6):乐观锁和悲观锁
悲观锁、乐观锁悲观锁假设最坏的情况,每次去拿数据都会认为别的线程会去修改,所以每次拿数据之前先上锁,这样别的线程想拿这个数据就会阻塞直到拿到锁。synchronized实现是一个悲观锁存在的问题:1)多线程竞争下,加锁、解锁都会导致线程上下文切换和cpu调度延迟,性能问题存在2)一个线程持有锁会导致其他需要此锁的线程阻塞3)如果一个优先级高的线程等待优先级低的线程释放锁会导致优先级导...
2020-02-28 22:46:23
278
原创 Java多线程(5):volatile关键字
Volatilecpu cache模型cpu - 计算机的主内(RAM), cpu速度变快,主内存没有跟上cpu的步伐,最终导致cpu的处理速度和主内存的访问速度差距越来越大cpu cache的出现解决了以上问题,同时引入了缓存不一致的问题例:i++1)读取主内存i到cpu cache2)i+13) 将结果刷新到主内存中单线程不会出现任何,多线程情况下就会出现问题原因:每个线程都...
2020-02-28 21:29:50
115
原创 Java多线程(4):synchronized关键字
synchronized使用1)同步方法 返回值前加上该关键字2)同步代码块 synchronized(monitor lock)synchronized理解同步代码块:monitorenter 和 monitorexit两条字节码指令1)每一个对象都与一个monitor相关联,monitor lock某一时刻只能被一个线程同一时间获得如果别的线程获得monitor所有权时会发生如下...
2020-02-28 20:55:02
104
原创 Java多线程(3):线程同步机制
线程同步机制什么叫做线程同步?线程有自己的私有数据,比如栈和寄存器,当多个线程同时读写同一份共享资源的时候,会引起冲突,这时候需要引入线程同步机制使得各个线程排队一个一个对共享资源进行访问,而不是同时进行。相关基本概念1)同步:当对个线程同时访问一块资源,这些线程间就需要同步2)临界资源:同一时刻只允许一个线程访问的资源3) 临界区:访问临界资源的代码块4)临界区特点:临界区是一段供...
2020-02-28 20:09:29
215
原创 Java多线程(2):并发编程
什么是并发编程?并发编程是指为了提高程序的执行速度,在宏观上使得多个任务(线程)同时执行。并发编程中启动的线程越多效果一定越好吗?答案是否定的开发正确的高并发程序,需要注意的问题:程序的死锁:多个线程为了抢占某一资源造成的一种僵局状态例子:上下文切换:线程执行是cpu通过给每一个线程去分配时间片,只有拿到时间片才可去执行由于时间片很短,宏观上让人感觉线程是在并行操作线程不...
2020-02-28 18:22:01
101
原创 Java多线程(1):线程和进程的认识
什么是进程?什么是线程?进程指的是一段正在执行的程序,一个程序可以执行多个任务,通常,每一个任务称之为线程,线程也可被称之为轻量级的进程,线程是程序执行的最小单元,进程资源分配的最小单元。进程和线程有哪些区别?进程是资源分配的最小单位,线程是程序执行(CPU调度f)的最小单位。进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段。线...
2020-02-28 16:56:39
105
原创 Java--HashMap
HashMap的基本概念HashMap是基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。哈希表(散列表)哈希表存储的键值对(key:value),针对任意的key通过哈希算法转换为固定的位置(数组)key-位置关系并不是一对一,多对一的关系,所以会引发哈希冲突解决哈希冲突: 数组+链表 链地址法(第一种方式)...
2019-12-02 00:04:37
122
原创 Java链表
什么是链表?链表:链表是一种物理存储结构上非连续,非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。1.单链表及其特点1) 链表中每个元素包含一个称为节点的结构,节点与节点之间是通过引用域相连的2)节点 = 数据域 + 引用域3)链表是一种物理存储单元上非连续、非顺序的存储结构4)链表在插入元素可以达到O(1)的复杂度,相比顺序表更快5)查找或访问特定编号的节点...
2019-10-20 23:20:47
134
原创 Java递归
什么是递归?递归是在函数的定义中使用函数自身的方法,简单的说就是有递去有归来,去是指递归问题可以分解为若干个规模较小,与原问题形式相同的问题,这些子问题可以用相同的解题思路来解决;归就是说这些问题的演化过程是一个由大到小的过程,并且会有一个明确的终点,一旦达到这个临界点,就不用往更小、更远的地方走下去。最后,从这个临界点开始,原路返回到原点,原问题就得到了解决。在函数实现时,因为解决大的问题和解...
2019-10-13 22:44:46
86
原创 对类加载的理解
什么是类加载机制类加载机制就是指将描述类的数据信息从class文件中加载到内存,然后进行数据验证、解析和初始化。三种类加载器主要介绍一下 JDK 提供的三种类加载器,分别是 BootstrapClassLoader(启动类加载器),ExtClassLoader(扩展类加 载器),AppClassLoader(应用类加载器)。每一种类加载器都有其指定的类加载路径。(1) BootstrapC...
2019-10-05 15:33:39
146
原创 接口和抽象类的区别
谈谈接口和抽象类的区别?1)接口表示"含有"关系,抽象类表示"是"关系2)接口当中的方法都是只有方法的声明而没有方法体3)抽象类不能多继承 接口可以多继承4)一般来讲,抽象类的构造函数声明为protected,因为是子类可用5)接口当中成员变量public static final,成员方法都是public6)实现类必须重写接口的所有方法,反之,就将该实现类定义为一个抽象类7)接口不...
2019-09-28 23:39:09
77
原创 重写与重载
什么是重载和重写?重载:是在一个类中多态性的一种表现,是指在一个类中定义了多种同名的方法,但是他们有不同的参数个数或不同的参数类型。在编译时就可以确定到底调用哪个方法。重写:是指子类函数重写父类中的函数;重写是父类与子类之间多态性的表现,在运行时起作用。重载和重写的特点和区别重载:1)重载只能通过不同的方法参数来区分。例如不同的参数类型,不同的参数个数,不同的参数顺序。返回值类型可随意,...
2019-09-28 23:35:11
109
原创 Java多态的理解
什么是多态?多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。多态的实现原理有2种方式来实现多态,一种是静多态即编译时多态,由编译时期决定,另外一种是动多态即运行时多态,是说运行时期才知道调用哪种方法。编译时多态是通过方法的重载来实现的,运行时多态是通过方法的重写来实现的。...
2019-09-28 23:11:52
184
原创 JAVA学习基础
JAVA学习笔记(7)定义常量:private final static int INIT(大写)=10;函数重载:条件:(同一个类)1.函数名相同 2.参数列表不同(个数,类型)this关键字用法:1)this指向当前对象实例成员变量跟对象有关,有隐含的this引用。一个对象有一份实例变量2)this调用构造方法注意:(1)this()位于当前构造方法有效代码的第一行(2)构...
2019-06-30 13:45:51
132
原创 JAVA学习基础
JAVA学习笔记(6)一、类与对象1.类和对象的概念设计:name,age,high,weight…class People{ }类class People{//1.属性:字段,成员变量,实例变量String name;int age;//2.行为:函数,成员方法,实例方法void eat(){////////}}eg:class Airplane{ Str...
2019-06-30 13:34:32
99
原创 JAVA学习基础
JAVA学习笔记(5)顺时针打印矩阵1 2 3 45 6 7 89 10 11 1213 14 15 16public class TestDemo1 { public static void main(String[] args) { /** * 顺时针打印矩阵: */ ...
2019-06-17 21:27:00
149
原创 输入整数n,求1~n整数中数字1出现的次数
public static void main(String[] args) { int count = 0; Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); for(int i=1;i<=n;i++){// 11 ...
2019-06-17 21:20:40
1073
原创 JAVA学习基础
JAVA学习笔记(4)字符替换:1.一个空格替换成两个##eg:i am a studentpublic class HomeWork { public static int getCount(char[] ch){ int count = 0; for(int i=0;i<ch.length;i++){ if(ch[i...
2019-06-17 20:02:40
117
原创 JAVA学习基础
JAVA学习笔记(3)这次的笔记是接着上次的内容给出的例题1.arr:1 5 2 4 7删除元素2使用Arrays.toString(arr);使其变成:1 5 4 7public class Test { public static int search(int[] arr,int value){ for(int i=0;i<arr.length;i++...
2019-06-02 21:59:27
2576
3
原创 JAVA学习基础
JAVA学习笔记(2)ps:每次的笔记都要与上一篇笔记联系起来学习,会继续对每个知识点进行补充Part11.循环语句(续)1)while循环先进行条件判断再执行循环体格式如下:初始化;while(条件判断){迭代;}eg:int i =0; while(i<9){/// i++;}相当于for(int i=0;i<9;i++;){ }do…w...
2019-05-27 13:46:59
184
原创 JAVA学习基础
JAVA学习笔记(1)Part 1一、Java数据类型:Java基本数据类型整型:byte 1 short 2 int 4 long 8浮点型:float double(常用)字符型:char 2 Unicode字符集浮点型:boolean true/false 不能和整型数字进行转换二、打印(输出)System.out.printf(“%d”,10);//该方...
2019-05-19 23:30:50
270
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人