2 Find Our Way

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 5w+

LinkedHashMap浅谈

在大多数情况下,只要不涉及线程安全问题,Map基本上都使用HashMap,不过HashMap有一个问题,就是HashMap内部是无序的,在查找时有时候需要耗费很大的性能LinkedHashMap继承自HashMap,在HashMap的基础上,通过维护一条双向链表,解决了HashMap不能随时保持遍历顺序和插入顺序一致的问题。在实现上,LinkedHashMap很多方法都直接继承自HashMap,仅为维护双向链表重写了部分方法LinkedHashMap底层源码分析LinkedHashMap继承自Hash

2020-09-17 19:50:36

反射及JDK代理

反射首先我们先理解反射机制Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性,这种动态获取信息以及动态调用对象方法的功能称为Java语言的反射机制Java反射提供的功能在运行时判断任何一个对象所属的类在运行时构造任何一个类的对象在运行时判断任何一个类所具有的成员变量和方法在运行时调用任何一个对象的成员变量和方法生成动态代理深入理解反射机制反射中包含了“反”,那么就先知道什么是正射一般情况下,我们使用某个类

2020-09-14 17:57:15

排序算法

冒泡算法冒泡算法的基本思想是:比较相邻的元素,如果第一个比第二个大,就交换他们两个对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这一步做完后,最后的元素会是最大的数针对所有的元素重复以上的步骤,除了最后一个冒泡排序代码:class Solution {public: vector<int> bubblingSort(vector<int> nums) { for (int i = 0; i < nums.size() - 1; i++)

2020-09-11 22:53:35

可重入的独占锁——ReentrantLock

ReentrantLock是Java.util.concurrent.locks包中的一个类,是独占锁,它是基于AQS实现的ReentrantLock与synchronized的区别Synchronized由编译器去保证加锁和释放锁,ReentrantLock需要手动加锁和释放锁ReentrantLock可以指定是公平锁还是非公平锁,synchronized只能是非公平锁ReentrantLock提供了一个Condition类,用来实现唤醒特定的线程,synchronized要么随机唤醒一个线程,

2020-09-11 18:10:11

建造者模式

建造者模式,又名生成器模式,是一种对象构建模式,它可以将复杂对象的建造过程抽象出来。建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节建造者模式主要包含四个角色:Product(产品角色):一个具体的产品对象Builder(抽象建造者):创建一个Product对象的各个部件指定的抽象接口ConcreteBuilder(具体建造者):实现抽象接口,构建和装配 各个部件Director(指挥者):构建一个使用Builder

2020-09-07 11:34:10

工厂模式

工厂模式是Java最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式在工厂模式中,我们创建对象时不会对客户端暴露创建逻辑,工厂模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂模式使一个类的实例化延迟到其子类一、简单工厂模式实例化对象的时候不再使用new Object()形式,可以根据用户的选择条件来实例化相关类。对于客户端来说,去除了具体的类的依赖,只需要给出具体实例的描述给工厂,工厂就会自动返回具体的实例对象二、工厂模式对于简单工厂模式,如果需要

2020-09-06 21:50:03

HTTP常用方法及状态码

1.HTTP常用方法1.1 GET:获取资源GET本质就是发送一个请求来获取服务器上的某一资源。资源通过HTTP头部和呈现数据返回给客户端1.2 HEAD:获取报文首部HEAD和GET本质是一样的,区别在于HEAD不含呈现数据,而仅仅是HTTP头部信息,一般常用于确认URL的有效性及资源更新的日期时间1.3 POST:传输实体主题POST向服务器提交数据补充:GET和POST的区别:GET提交的数据会放在URL之后,以?分割URL和数据,参数之间以&相连,POST方法是把提交的数据

2020-09-05 12:45:46

MVCC相关

1.MVCC概念MVCC指的是多版本控制,指的是一种提高并发的技术,在多版本控制中,只有写写之间相互阻塞,其他三种操作都可以并发执行,这样大幅度提高了InnoDB的并发度。在内部实现中,InnoDB通过undo log保存每条数据的多个版本,并能够找回数据历史版本提供给用户读MYSQL的InnoDB存储引擎默认事务隔离级别是RR(可重复读),是通过“行级锁+MVCC”一起实现的,正常读的时候不加锁,写的时候加锁,而MVCC的实现依赖:隐藏字段、Read View、Undo log1.1.隐藏字段In

2020-09-04 12:52:15

如何让多线程按顺序执行

方法一:在子线程中通过join()方法指定顺序通过join()方法使当前线程“阻塞”,等待指定线程执行完毕后继续执行,比如在线程thread2中,加上一句thread1.join(),其意义在于,当前线程2运行到此行代码时会进入阻塞状态,直到线程thread1执行完毕后,线程thread2才会继续运行,这就保证了线程thread1与线程thread2的运行顺序方法二:在主线程中通过join()方法指定顺序上面我们是在子线程中指定join()方法,我们还可以在主线程中通过join()方法让主线程阻塞等待

2020-09-03 16:27:25

浏览器中输入一个网址后全部的执行过程

过程包括:域名解析->建立TCP连接(三次握手)->发起http请求->服务器响应http请求,浏览器得到html代码->浏览器解析html代码,并请求html代码中的资源->浏览器对页面进行渲染呈现给用户域名解析浏览器先检查自身缓存中有没有被解析过的这个域名对应的ip地址,如果有且没有过期,则解析到此结束如果浏览器自身的缓存中没有找到对应的条目,那么浏览器会搜索操作系统的DNS缓存,,如果找到且没有过期则停止搜索解析到此结束如果操作系统的DNS缓存也没有找到,那么

2020-08-27 23:57:54

操作系统

1.用户态和内核态内核态:操作系统管理程序运行的状态,执行的是特权指令(特权指令是只只能由操作系统执行的指令,包括启动I/O设备、设置时钟、控制中断屏蔽位、清内存等)用户态:用户程序运行时的状态,处于第三级特权,执行的是非特权指令用户态到内核态的转换主要是通过:系统调用,异常,中断内核态到用户态的转换主要是通过:设置程序状态字(程序状态字又称PSW,主要用来控制指令执行顺序并保留和指示与程序有关的系统状态,实现程序状态的保护和恢复)2.中断中断是指CPU对系统中或系统外发生异步事件的响应,异

2020-08-27 23:02:39

并发编程基础

1.并发编程的优缺点优点充分利用了多核CPU的计算能力:通过并发编程的形式可以将多核CPU的计算能力发挥到了极致(因为在一个线程中,还有等待输入等操作),性能得到提升缺点并发编程的目的就是为了提高程序的执行效率,提高程序运行速度,但是并发编程并不总是能提高程序运行速度的,而且并发编程可能会遇到比如:内存泄漏、上下文切换、线程安全、死锁等问题2.并发编程的三要素是什么并发编程的三要素:原子性:原子性指的是要么一个或多个操作全部执行成功,要么全部执行失败,是一个不可分割的整体,具体到计算机,就是

2020-08-26 20:45:07

浅谈ConCurrentHashMap

在JDK1.7中:ConCurrentHashMap的底层采用的是segments+HashEntry数组,segment继承了ReentrantLock,每个数组都有一个锁,叫做锁分段在JDK1.8中:ConCurrentHashMap的底层是:散列表+红黑树,与hashMap是一样的它支持高并发的访问和更新,它是线程安全的检索操作不用加锁,get方法是非阻塞的key和value都不允许为nullConcurrentHashMap的底层实现重要的成员变量private transi

2020-08-22 17:39:19

操作系统——同步问题

1.进程中线程同步的四种常用方式临界区:一种代码段,在其中可能发生多个线程共同改变变量、读写文件等操作,如果有多个线程试图访问公共资源,那么在有一个线程进入后,其他视图访问公共资源的线程将被挂起,并一直等到进入临界区的线程离开,临界区在被释放后,其他线程才可以抢占,临界区调度原则:同一时间临界区内仅有一个线程执行,如果有若干线程请求进入空闲临界区,一次 仅允许一个线程进入进入临界区的线程必须在有限时间内退出,以保证其他线程能进入该临界区如果线程不能进入临界区,应让出CPU,避免出现忙等现象从线

2020-08-22 16:10:08

计算机网络——什么是半连接队列

服务器第一次收到客户端的SYN之后,就会处于SYN_RCVD(同步已接收)状态,此时双方还没有完全建立连接,服务器会把此种状态下请求连接放在一个队列里,我们把这种队列称为半连接队列。SYN-ACK重传次数服务器发送完SYN-ACK包,如果未收到客户端确认包,服务器进行首次重传,等待一段时间仍未收到客户端确认包,进行第二次重传,如果重传次数超过系统规定的最大重传次数,系统将该连接信息从半连接队列中删除。每次重传等待的时间不一定相同...

2020-08-21 19:34:48

AQS浅谈

AQS是抽象同步队列AbstractQueueSynchronizer的简称,AQS定义了一套多线程访问共享资源的同步框架,AQS并不实现任何同步接口,它提供了一些可以被具体实现类直接调用的一些原子操作方法,AQS同时提供了互斥模式和共享模式两种不同的同步逻辑,一般情况下,子类只需要根据需求实现其中一种模式,当然也有同时实现两种模式的同步类,许多类都依赖于它,如reentrantLock等AQS的工作机制:AQS的等待队列是基于链表实现的FIFO的等待队列,队列每个节点只关心其前驱节点的状态,线程唤醒时只

2020-08-21 18:14:06

HTTP和HTTPS

1.HTTP和HTTPS1.1 HTTPHTTP:HTTP称为超文本传输协议,是互联网上应用最广泛的一种网络协议。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。HTTP协议是以明文方式发送信息的,如果截取了Web浏览器和服务器之间的传输报文,就可以直接获得其中的信息HTTP原理:客户端的浏览器首先要通过网络与服务器建立连接,该连接是通过TCP来完成的,建立连接后,客户机发送一个请求给服务器,该请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息,包括请求修

2020-08-17 23:53:37

计算机网络——域名系统

1.因特网有了IP地址,为什么还需要域名我们知道,在电话网上使用的一连串的电话数字号码不好记,而具体的单位名称或姓名就容易记,同样,用点分十进制的方法表示一个IP地址确实也不好记,因此设计用名字来代替点分十进制的数字会更加符合我们实际2.域名系统DNS因特网的域名系统DNS是一个分布式数据库联机系统,采用客户机/服务器应用模式,客户机可以通过域名服务程序将域名解析到特定的IP地址,域名服务程序在专设的节点上运行,常将该节点称为域名服务器(DNS)2.1域名结构TCP/IP采用层次型命名的方法,域名

2020-08-17 00:44:56

ArrayList底层原理

ArrayList是抽象类AbstractList的子类,实现了List接口、RandomAccess(随机访问)等接口ArrayList的底层主体就是一个Object数组,对ArrayList的所有底层操作就是基于数组实现的1.ArrayList的线程安全性对ArrayList进行添加操作的时候是分两个步骤进行的,即第一步先在object[size]的位置上存放需要添加的元素,第二步就是将size的值增加1,由于这个过程在多线程的环境下是不能保证具有原子性的,因此ArrayList在多线程的环境

2020-08-16 16:51:03

MySQL面试题——存储引擎

存储引擎其实就是一套文件系统,关于如何实现存储数据,如何为存储的数据建立索引以及支持增删改查操作可以使用show engines;命令来查看MySQL支持的存储引擎使用==show variables like ‘%storage_engine’==来查看默认的存储引擎,可以看到目前MySQL支持的默认存储引擎是InnoDB1.MyISAMMyISAM存储引擎是MySQL5.5版本之前的默认存储引擎MyISAM类型的表支持三种不同的存储结构:静态型、动态型、压缩型静态型(fixed):就是

2020-08-16 14:26:36

查看更多

勋章 我的勋章
  • 阅读者勋章Lv3
    阅读者勋章Lv3
    授予在CSDN APP累计阅读博文达到30天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。