![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
复习
tIAsHaN_
这个作者很懒,什么都没留下…
展开
-
网络分层(OSI七层模型、TCP/IC四层/五层模型)
转自:https://blog.csdn.net/yuiop123455/article/details/107486126一、OSI七层模型1、OSI七层模型概念OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型。把网络从逻辑上分为了7层. 每一层都有相关、相对应的物理设备。OSI七层网络模型最主要的功能使就是帮助不同类型的主机实现数据传输。2、OSI七层模型分别是第一层 (物理层): 是以0 101的二进制数据进行发转载 2020-09-23 11:19:55 · 8707 阅读 · 1 评论 -
synchronized解释用法及原理
转自:HollisChuang’s Blog在再有人问你Java内存模型是什么,就把这篇文章发给他。中我们曾经介绍过,Java语言为了解决并发编程中存在的原子性、可见性和有序性问题,提供了一系列和并发处理相关的关键字,比如synchronized、volatile、final、concurren包等。在《深入理解Java虚拟机》中,有这样一段话:synchronized关键字在需要原子性、可见性和有序性这三种特性的时候都可以作为其中一种解决方案,看起来是“万能”的。的确,大部分并发控制操作都能使用sy转载 2020-09-11 16:00:46 · 423 阅读 · 0 评论 -
寻找链表中环的入口
题:给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。思路:设置快慢指针, 都从链表头出发,快指针每次走两步,慢指针一次走一步,假如有环,一定相遇于环中某点。接着让两个指针分别从相遇点和链表头出发,两者都改为每次走一步,最终相遇于环入口。证明:设置快慢指针fast和slow,fast每次走两步,slow每次走一步。如果链种有环,两者一定会环内相遇(因为slow一旦进环,可看作 fast 在追赶 slow 的过程,因为快慢的问题,最后 fast 必然追上 slow)。设链表原创 2020-08-30 12:26:49 · 116 阅读 · 0 评论 -
反转链表
将下图所示链表进行反转:反转前:反转后:我们使用经典的三指针发进行链表的反转:先设置指针 pre = null ; next = null ;pre 指针指向的是 头节点的上一个节点next 指针指向的是头节点的下一个节点head 表示头伪代码: pre = null ; next = null; while(head!=null){ // pre始终指向当前head的前一个节点,这样可以反转节点 head.next = pre;原创 2020-08-28 18:41:19 · 111 阅读 · 0 评论 -
JVM垃圾回收器汇总
垃圾收集器Serial(串行)收集器ParNew(并行)收集器Parallel Scavenge收集器Serial Old收集器Parallel Old收集器CMS收集器G1收集器如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。虽然我们对各个收集器进行比较,但并非更挑选出一个最好的收集器。因为直到现在为止还没有最好的垃圾收集器出现,更加没有万能的垃圾收集器,我们能做的就是根据具体应用场景选择适合自己的垃圾收集器。试想一下:如果有一种四海之内、任何场量下都适用的完美收集器存在,那原创 2020-08-13 12:37:49 · 186 阅读 · 0 评论 -
JVM垃圾回收算法
JVM垃圾回收(GC)搜索算法-引用计数器算法(废弃)搜索算法-根搜索算法(使用)回收算法-标记—清除算法(Mark-Sweep)回收算法-标记—整理算法(Mark-Compact)回收算法-复制算法(Copying)回收算法-分代收集算法(Generational Collection)总结GC(Garbage Collector)在回收对象前首先必须发现那些无用的对象,如何去发现定位这些无用的对象?常用的搜索算法如下:搜索算法-引用计数器算法(废弃)引用计数器算法是给每个对象设置一个计数器, 当有原创 2020-08-13 11:14:31 · 116 阅读 · 2 评论 -
JVM类的加载、连接、初始化、双亲委派
类加载实现原理解析Java虛拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的加载机制。Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数,属性和方法等,Java允许用户借由这个Class相关的元信息对象间接调用Class对象的功能,这里就是我们经常能见到的Class类。...原创 2020-08-12 15:45:28 · 133 阅读 · 0 评论 -
JVM内存模型原理及常用方法
内存模型原理级常用方法运行时数据区域JDK1.8之前JDK1.8线程私有的 / 共享程序计数器Java虚拟机栈本地方法栈堆方法区方法区和永久代的关系常用参数为什么要将永久代(PermGen)替换为元空间(MetaSpace)呢?运行时常量池直接内存运行时数据区域Java虚拟机在执行Java程序的过程中会把它管理的内存划分成若干个不同的数据区域。JDK. 1.8和之前的版本略有不同,下面会介绍到。JDK1.8之前JDK1.8线程私有的 / 共享线程私有的程序计数器虚拟机栈本地方法栈原创 2020-08-06 14:29:06 · 158 阅读 · 0 评论 -
数据结构——Hash表、Hash冲突及解决
这里写目录标题哈希表概念搜索、插入元素冲突冲突-概念冲突-避免冲突-避免-哈希函数设计* 冲突-避免-负载因子调节冲突-解决-闭散列冲突-解决-开散列/哈希桶冲突严重时的解决办法性能分析Hash表和java类集的关系代码实现Hash表哈希表概念顺序结构以及平衡树中,元素关键码与其存储位置之间没有对应的关系,因此在查找一个元素时,必须要经过关键码的多次比较。顺序查找时间复杂度为0(N),平衡树中为树的高度,即O(log2N), 搜索的效率取决于搜索过程中元素的比较次数。搜索、插入元素理想的搜索方法:原创 2020-08-03 18:17:00 · 1674 阅读 · 0 评论 -
数据结构——红黑树
平衡二叉树(AVL树)平衡因子结点的平衡因子=左子树高度-右子树高度平衡二叉树或者是一颗空树,或者具有以下性质的二叉树:它的左子树和右子树的高度之差(平衡因子)的绝对值不超过1 ,且它的左子树和右子树都是一颗平衡二叉树。问题怎样让平衡二叉树在经过任意的插入和删除后,依然保持平衡?==>红黑树红黑树 R-B Tree (自平衡二叉查找树)红黑树也是二叉查找树,我们知道,二叉查找树这一数据结构并不难,而红黑树之所以难是难在它是自平衡的二叉查找树,在进行插入和删除等可能会破坏树的平衡的操作时原创 2020-08-03 16:39:51 · 173 阅读 · 0 评论 -
多线程(4)—— 线程协作:生产者、消费者问题、线程池
生产者、消费者问题解决方式1(管程法)解决方式2(信号灯法)线程池线程通信应用场景:生产者和消费者问题假设仓库中只能存放一件产品,生产者将生产出来的产品放入仓库,消费者将仓库中产品取走消费.如果仓库中没有产品,则生产者将产品放入仓库,否则停止生产并等待,直到仓库中的产品被消费者取走为止.如果仓库中放有产品,则消费者可以将产品取走消费,否则停止消费并等待,直到仓库中再次放入产品为止.线程通信——分析这是一个线程同步问题,生产者和消费者共享同-个资源,并且生产者和消费者之间相互依赖,互为条件原创 2020-06-30 18:49:54 · 450 阅读 · 0 评论 -
多线程(3)—— 并发、同步、三大安全因素、锁
并发: 两个或多个事件在同一时间间隔发生(同一个对象被多个线程同时操作)同步: 多个任务情况下,一个任务A执行结束,才可以执行另一个任务B。同一时间只存在一个线程并发、同步、锁线程同步三大线程不安全案例不安全的买票问题不安全的银行取款问题线程不安全的集合解决线程不安全问题synchronized关键字Lock (锁)synchronized与Lock的对比死锁线程同步处理多线程问题时,多个线程访问同一个对象,并且某些线程还想修改这个对象,这时候我们就需要线程同步,线程同步其实就是等待机制 ,多个需要原创 2020-06-30 17:47:15 · 220 阅读 · 0 评论 -
多线程(2)—— 线程的常用方法
常用方法停止线程线程休眠线程礼让Join(线程强制执行 )设置线程优先级守护(daemon)线程停止线程停止线程建议线程正常停止—>利用次数,不建议死循环。建议使用标志位—>设置一个标志位不要使用stop或者destroy等过时或者JDK不建议使用的方法package com.it//测试停止线程public class ThreadStop implements Runnable { //设置一个标志位 private boolean flag = tru原创 2020-06-30 15:46:55 · 165 阅读 · 0 评论 -
多线程(1)—— 理解和三种创建方式
多线程进程和线程普通方法和调用多线程方法线程的创建方式方式一:继承Thread类方式二:实现Runnable接口方式三:通过Callable和Future创建进程和线程进程说起进程,就不得不说下程序。程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念。进程则是执行程序的一次执行过程,它是一个动态的概念。是系统资源分配的单位。通常在一个进程中可以包含若干个线程,当然一个进程中至少有一个线程,不然没有存在的意义。线程是CPU调度和执行的的单位。注意: 很多多线程是模拟出来的,原创 2020-06-30 15:06:29 · 224 阅读 · 0 评论 -
复习——反射
反射静、动态语言反射是什么两种加载方式Java反射机制提供的功能Java反射优点和缺点反射相关的主要APIClass类Class类的常用方法获取Class类的实例获取Class类的实例——代码演示哪些类型可以有Class对象所有类型的Class——代码演示Java内存分析、类加载过程类的加载与ClassLoader的理解什么时候会发生类初始化通过反射获取运行时类的完整结构代码演示Classd对象创建类的对象Classd对象创建类的对象——代码演示反射操作泛型反射操作注解视频讲解可关注B站狂神说Java.原创 2020-06-27 19:45:21 · 225 阅读 · 0 评论