自定义博客皮肤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)
  • 收藏
  • 关注

原创 Token和Session的区别

1.Session的生成方式浏览器第一次访问服务器时,服务器创建一个session,同时生成一个唯一的会话key,即sessionID。接着sessionID及session分别作为key和value保存到缓存中,也可以保存到数据库中,然后服务器把sessionID以cookie的形式发送给浏览器,浏览器下次访问服务器时直接携带上cookie中的sessionID,服务器再根据sessionI...

2019-09-05 16:24:43 252

原创 HTTPS协议的数据传输过程

1.客户端向服务器端发起HTTPS请求,连接到服务器端的443端口上2.服务器端有一个秘钥对,即公钥和私钥,是用来进行非对称加密使用的,服务器端保存着私钥,将公钥发送给客户端3.客户端收到服务器端的公钥之后,对公钥进行检查,验证其合法性,如果发现公钥有问题,那么HTTPS传输无法继续;如果合格,那么客户端会生成一个随机值,这个随机值就是用于进行对称加密的秘钥,即客户端秘钥,然后用服务器端的...

2019-09-05 15:06:14 1033

原创 索引相关总结

目录1.索引的优点2.索引的缺点3.哪些情况需要加索引4.哪些情况不需要加索引5.聚集索引和非聚集索引6.MyIsAm和InnoDB的区别7.MyIsAm和InnoDB的索引实现8.数据库中的表连接9.count(1)、count(*)、count(列名)的区别1.索引的优点避免全表扫描去查询数据,提升检索效率 通过创建唯一索引,可以保证数据库表中的每...

2019-09-02 18:57:53 133

原创 操作系统总结

目录1.操作系统的四大特征2.操作系统的主要功能3.分时技术4.进程的状态和转换5.进程和程序的区别、进程和作业的区别、进程与线程的区别6.进程通信的方式7.线程同步的方式8.进程调度算法9.用户态和内核态的区别10.死锁的概念、导致死锁的原因、死锁的必要条件11.处理死锁的方式12.内存连续分配方式采用的几种算法及各自优劣13.分页和分段的区别...

2019-09-01 22:44:38 737

转载 详解Cookie,Session、Token

https://juejin.im/post/5d01f82cf265da1b67210869

2019-08-27 15:32:40 84

原创 五种IO模型及其比较

1.阻塞式IO使用系统调用,并一直阻塞知道内核将数据准备好,之后再由内核缓冲区复制到用户态,在等待内核准备的这段时间什么也干不了 特点:在I/O执行的两个阶段都被阻塞了--阻塞等待数据,阻塞拷贝数据 如图 2.非阻塞式IO内核在没有准备好数据的时候会返回错误码,而调用程序不会休眠,而是不断轮询询问内核数据是否准备好 特点:在I/O执行的第一个阶段不会阻...

2019-08-21 11:47:06 674

转载 浏览器如何实现缓存?

浏览器实现缓存机制:强制缓存、协商缓存以及浏览器缓存存放在哪里?https://juejin.im/entry/5ad86c16f265da505a77dca4

2019-08-20 16:38:57 1748

原创 事务隔离是怎么实现的?有哪些锁?分别介绍下

事务隔离是基于锁实现的在DBMS中,可以按照锁的粒度把数据库锁分为行级锁、表级锁和页级锁行级锁:是mysql中锁定粒度最小的一种锁,表示只针对当前操作的行进行加锁。行级锁能大大减少数据库操作的冲突。其加锁粒度最小,但开锁的开销也最大。行级锁分为共享锁和排它锁。特点:开销大、加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。表级锁:是mysql中锁定粒度最大的一种...

2019-08-19 16:28:07 254

原创 CyclicBarrier和CountDownLatch区别

两个类都在java.util.concurrent包下,都可以用来表示代码运行在某个点上,二者的区别在于:1)CyclicBarrier的某个线程运行在某个点上之后,该线程即停止运行,直到所有的线程都达到了这个点,所有线程才重新运行;CountDownLatch则不是,某县城运行在某个点上之后,只是给某个数值-1而已,该线程继续运行。2)CyclicBarrier只能唤起一个任务,Co...

2019-08-18 22:40:50 128

原创 生产者消费者模式

生产者消费者模式是一个非常经典的多线程并发协作的模式1.什么是生产者消费者问题答:生产者消费者模式是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列里取,阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力。所谓生产者-...

2019-08-17 22:39:00 99

原创 为什么线程的操作方法(wait()、notify()、notifyAll())要定义在Object类中呢?

如果对象调用了wait方法就会使持有该对象的线程把该对象的控制权交出去,然后处于等待状态(执行该方法之前,必须先获得锁;执行该方法后,会释放锁,使线程等待,进入阻塞队列)如果对象调用了notify方法就会通知某个正在等待这个对象的控制权的线程可以继续运行如果对象调用了notifyAll方法就会通知所有等待这个对象控制权的线程继续运行对于该问题,因为这些方法在操作同步线程时,都必须...

2019-08-17 19:08:09 1472

原创 AOP

AOP:面向切面的编程把程序逻辑分成不同的部分称为所谓的关注点。跨一个应用程序的多个点的功能称为横切关注点。AOP是一种程序设计范型,该范型以一种称为切面的语言构造为基础,切面是一种新的模块化机制,用来描述分散在对象、类或方法中的横切关注点。“横切关注”是会影响到整个应用程序的关注功能,它跟正常的业务逻辑是正交的,没有必然的联系,但是几乎所有的业务逻辑都会涉及到这些关注功能。通常,事务、日志、...

2019-08-05 22:10:29 92

原创 IOC 和 DI

IOC:控制反转把传统上由程序代码直接操作的对象的调用权交给容器,通过容器来实现对象组件的装配和管理。也就是说对组件对象控制权的转移,从程序代码本身转移到了外部容器,由容器来创建对象并管理对象之间的依赖关系。“谁控制了谁” :IOC容器控制了对象;“控制了什么”:主要是控制了外部资源的获取;“为啥是反转”:因为容器帮我们查找以及注入依赖对象,对象只是被动接受依赖对象,所以是反转了。DI...

2019-08-05 21:21:59 99

原创 Bash比较运算

算术运算比较运算符:-eq等于-ne不等于-lt小于-le小于或等于-gt大于-ge大于或等于Bash文件的开头标志是 #!目录/文件的满权限的形式:drwxrwxrwx-rwxrwxrwx其中:(r:读取,w:写,x:执行)数字对应:(r:4,w:2,x:1), 命令行中的三个数字对应的授权角色为owner, group, others1. 通过数字修改...

2019-08-05 20:05:14 458

原创 HashTable的相关知识

HashTable 继承自Dictionary类,实现了三个接口,分别是Map,Cloneable和java.io.Serializable。1.HashTable是同步的2.HashTable不允许键值对为null3.HashMap的迭代器(Iterator)是fail-fast迭代器,但是HashTable的迭代器(enumerator)不是fail-fase的。默认情况下,H...

2019-08-05 20:04:54 142

原创 ConcurrentHashMap原理

ConcurrentHashMap类中包含两个静态内部类HashEntry和Segment。HashEntry用来封装映射表的键值对;segment用来充当锁的角色,每个segment对象守护整个散列映射表的若干个桶,每个桶是由若干个HashEntry对象链接起来的链表。一个ConcurrentHashMap实例中包含由若干个Segment对象组成的数组。HashEntry用来封装散列映射的表中的...

2019-08-05 15:06:35 188

原创 HashMap的实现原理

数据结构:JDK1.8之前,数据结构存储是由数组+链表的方式;JDK1.8,数据结构存储变为数组+链表+红黑树的方式HashMap基于Map接口实现,特点:1.元素以键值对的方式存储,并且允许使用null键和null值,因为key不允许重复,因此只能有一个key为null。2.HashMap不能保证放入元素的顺序,它是无序的,和放入的顺序并不相同3.HashMap是线程不安全的...

2019-08-05 13:09:18 214 1

原创 TCP的拥塞控制

拥塞控制与流量控制的区别:1.拥塞控制:作用于网络,它是防止过多的数据注入到网络中,避免出现网络负载过大2.流量控制:作用于接收者,它是控制发送者的发送速度从而使接收者来得及接收,防止分组丢失拥塞控制是一个全局性的过程,而流量控制是点对点通信量的控制。常用的方法有:1.慢开始与拥塞避免首先发送方维持一个叫做拥塞窗口cwnd的状态变量。拥塞窗口的大小取决于网络的拥塞程度,并且...

2019-08-03 21:16:05 114

原创 JVM

JVM就是Java Virtual Machine(java虚拟机)的缩写,是在现有的平台上,运行一个软件,虚拟出一台接口统一的计算机,因此实现java语言的跨平台特性。虚拟机本质就是一个进程。模拟平台操作的一个进程。任何一台计算机,都能部署好jvm,不需要额外购买硬件设施,所以不是什么硬件技术。JVM是在计算机硬件系统上用软件实现的一台假想机。Java程序在执行时,JVM把字节码解释...

2019-08-03 17:42:12 178

原创 设计模式---单例模式

设计模式定义:保证一个类仅有一个实例,并提供一个该实例的全局访问点。应用场景:在软件系统中,经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例,才能确保它们的逻辑正确性、以及良好的效率。 数据库链接、Socket创建链接实现方式:...

2019-08-03 13:05:00 76

空空如也

空空如也

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

TA关注的人

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