自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小乔不掉发的博客

爱编码 爱生活

  • 博客(86)
  • 收藏
  • 关注

原创 PostgreSQL的基本使用整理

数据库操作、表操作、Schema、备份数据库、用户操作、常用命令

2022-04-26 23:11:21 4976

原创 css入门学习笔记

我是目录标题一、css 语法规范:二、css基础选择器:1、标签选择器:2、类选择器:3、id 选择器:4、通配符选择器:三、CSS 字体属性:1、文本字体:2、字体大小:3、字体粗细:4、文本样式:四、css 文本属性:1、文本颜色:2、文本对齐方式:3、装饰文本:4、文本缩进:5、背景:6、行间距:五、外部样式表:六、CSS复合选择器:(重要)1、后代选择器:2、子选择器:3、并集选择器:4、focues伪类选择器:七、元素显示模式转换:八、盒子模型:1、组成:2、边框:3、内边距:4、外边距:一、c

2022-04-06 19:37:01 564 1

原创 HTML入门学习笔记

我是目录:1、标题、段落标签2、文本格式化标签3、布局标签(div、span)4、图像标签5、相对路径、绝对路径6、链接标签、锚点标签7、表格标签:显示数据8、列表标签:布局页面9、表单标签:为了收集用户信息1、标题、段落标签 <h1>标题标签</h1> <p>段落标签</p> <br/>换行标签2、文本格式化标签 我是<strong>加粗</strong>的文字

2022-03-26 16:09:15 401 2

原创 面试了这么多场,“ 进程间的通信 ” 真是从不缺席,小伙伴们赶快重视起来!!

进程间通信:1、管道:2、消息队列:3、共享内存:4、信号量:5、信号:6、Socket(套接字):每个进程的用户地址空间都是独立的,一般而言是不能互相访问的,但内核空间是每个进程都共享的,所以进程之间要通信必须通过内核。在内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把数据读走,内核提供的这种机制称为 进程间通信。1、管道:匿名管道:管道是单向的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道。只能用于父子进程或者兄弟进程之间(具有亲缘关系的

2021-08-03 14:29:02 260 1

原创 实现一个在线抽奖系统,就算是个小白看了也能做出来(附源码)

1、数据库设计:业务上一对一设置表:拓展业务 ,一个用户进来设置,当多个用户进来设置的时候(多个用户属于同一公司),如果是只有用户表的话,及无法支撑业务,用户表关联学校,设置表在关联学校tool:mybatias数据库的生成工具...

2021-06-06 16:45:38 21868 64

原创 JavaEE:Spring 面试总结一览

面试问 AOP,回答哪些内容?1、概念:AOP(Aspect-Oriented Programming):面向切面编程。对 多个业务代码(系统的业务) 横切来实现统一的业务管理,而不用侵入 业务代码 本身。这样面向切面的编程思想就是AOP。2、使用场景:日志记录,事务管理,性能统计,安全控制,异常处理等3、优点:代码解耦,统一业务功能对具体业务无侵入性,这样可扩展性更好,灵活性更高4、spring aop 的 实现方式:SpringAOP是采取动态代理的方式,具体是基于 JDK 和 CGLIB

2021-05-29 16:56:26 334 4

原创 JVM 的 垃圾回收(GC)超全解析,面试官看了直呼内行!!还不快收藏起来

我是目录:1、垃圾回收的时机:2、垃圾回收机制 ------ 如何判断对象已死?Garbage Collection(GC),Java进程在 启动后 会 创建垃圾回收线程,来对 内存中无用的对象 进行 回收1、垃圾回收的时机:(1)System.gc()显示的调用 System.gc():此方法的调用是 建议 JVM进行 FGC(Full GC),虽然只是建议而非一定,但很多情况下它会触发 FGC,从而增加FGC的频率。一般不使用此方法,让虚拟机自己去管理它的内存。(2)JVM 垃圾回收机制决定

2021-05-14 17:01:02 548 2

原创 JVM 类加载机制全面解析,一篇完整彻底搞懂

我是目录:1、概述:2、类的生命周期:3、类加载器:4、类加载机制 — — 双亲委派机制1、概述:2、类的生命周期:包括7个阶段: 加载、验证、准备、解析、初始化、使用 和 卸载。(其中验证、准备、解析3个部分统称为连接(Linking))解析阶段 在某些情况下可以在初始化阶段之后再开始,这是为了支持Java语言的运行时绑定(也称为动态绑定或晚期绑定)。加载:通过一个类的全限定名来获取定义此类的二进制字节流。将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。(方法区:JD

2021-05-06 22:19:13 570

原创 Java 内存模型(JMM),一看就懂 清晰明了

一、线程私有的内存区域:1、程序计数器: 当前线程所执行的字节码的行号指示器(字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,它是程序控制流的指示器)2、虚拟机栈:线程调用 Java 方法时,每个方法每次调用都会生成一个栈帧此区域一共会产生以下两种异常:(1)如果线程请求的栈深度大于虚拟机所允许的深度(-Xss设置栈容量),将会抛出StackOverFlowError异常。(2)虚拟机在动态扩展时无法申请到足够的内存,会抛出OOM(OutOfMemoryE..

2021-05-06 22:18:04 226 3

原创 基于 AQS 的并发编程: CountDownLatch 和 semaphore

1、CountDownLatch1、谈谈 CountDownLatch:CountDownLatch 是 JDK 提供的一个同步工具,它可以让一个或多个线程等待,一直等到其他线程中执行完成一组操作2、CountDownLatch有哪些常用的方法?有 countDown 方法和 await 方法,CountDownLatch在初始化时,需要指定用给定一个整数作为计数器。当调用 countDown 方法时,计数器会被减1;当调用 await 方法时,如果计数器大于0时,线程会被阻塞,一直

2021-04-25 22:21:35 120

原创 HashMap 有的,我也有,HashMap做不到的,我能,我就是 ConcurrentHashMap

概念:高性能 并发的线程安全的 Map,基于安全失败的迭代器特性: 读操作(get),是没有加锁,基于 volatile 保证线程安全 - - - > 读读、读写并发提升效率:jdk1.7 和 1.8 都满足分段加锁(1.7是一段一段多个节点加锁,1.8是一个节点加锁)1、jdk 1.7:1、底层数据结构:数组 + 链表(HashEntry 为链表的结点)2、采取了 segment 分段锁技术,在多线程并发更新操作时,对同一个 segmen 进行同步加锁,保证数据的安全。这样就可

2021-04-25 09:29:05 138

原创 当面试中问到关于多线程安全问题时,你还不知道怎么回答嘛?快点进来,我带你多维度、深层次来解决这个问题

保证线程安全:1、synchronized:(1)作用:(2)语法 / 使用:(3)原理 / 底层实现:(4)JVM 对 synchronized 的优化:2、Lock体系:(1)为什么会有Lock体系(是为了死锁的解决)(2)简介:(3)AQS(4)Reentrantlock:可重入锁,实现Lock(5)ReentrantReadWriteLock:读写锁1、synchronized:synchronized 关键字:线程安全用的,同步关键字(1)作用:对象头加锁,同一个对象加锁的线程 同步互斥

2021-04-24 16:53:00 312 1

原创 这年头,连“锁”都开始有情绪了。。乐观锁 VS 悲观锁(CAS)

使用场景: 提高效率(多个任务且任务量、多个任务且会阻塞)线程状态:谈Java线程状态(熟悉掌握线程状态转化图)线程安全原因:多个线程对共享变量的操作(代码层面)原子性、可见性、有序性(底层原因 )解决方式:共享变量加锁(synchronized加锁 、 Lock体系)多线程提高效率 - - 保证安全的前提下,尽可能的提高效率(方式:加锁细粒度化)2、多线程高阶知识:...

2021-04-23 22:50:43 141

原创 真的太重要了,面试出现的概率达到了 99%!!!对于哈希表的知识(建议收藏)

衣柜的容量是有限的,而衣服是无限的,总会出现哈希冲突的

2021-04-20 23:37:27 4318 8

原创 Map 和 Set 使用的区别和联系(建议收藏)

二叉搜索树:二叉树 && 每个节点中保存关键字(key) && 关键字需要具备比较的能力 && 每个节点遵守:左子树的所有 key < 其 key,右子树的所有 key > 其 key(所有节点都是 大于左子树,小于右子树)(二叉树搜索树中不会出现相等的 key)中序 : 1 2 3 4 5 6 7 8 9 10二叉搜索树的中序遍历一定是有序的...

2021-04-20 09:14:37 5225 1

原创 二叉搜索树的概念 及 功能代码实现

1、概念:二叉搜索树 又称 二叉排序树特点:二叉树 每个节点中保存关键字(key)(关键字需要具备 比较 的能力)每个节点 都是 大于左子树,小于右子树二叉树搜索树中 不会出现 相等的 key中序遍历 一定是 有序的时间复杂度:最好和平均:O(log(n)) 最坏:O(n)通过平衡树,解决搜索树最坏情况:二叉搜索树的平衡树(AVL树 + 红黑树)AVL树:前提是,二叉搜索树,要求 每个结点 的 左右子树高度差 的绝对值 不超过1AVL 的查找操作等同于普通搜索树的查找AVL

2021-04-19 22:34:16 244

原创 七大排序算法详解,动图展示 +代码实现,老奶奶看了都直呼内行

我是标题:1、直接插入排序:2、希尔排序:3、选择排序:4、堆排序:5、冒泡排序:6、快速排序:7、归并排序排序总结:1、直接插入排序:1、[ 有序区间(黄色区间),无序区间(蓝色区间) ]每次操作:1、抓无序区间(右侧蓝区)的第一张牌(红色牌)2、依次和有序区间(左侧黄区)的牌比较(绿色为正在比较的牌)3、选择适合的位置插入代码实现:public static void insertSort(long[] array) { for (int i = 0; i &lt

2021-04-11 18:13:31 2422 8

转载 数据结构中的堆,一篇文章带你看懂他

数据结构中的堆:(heap)1、在一个集合的数据中,找出最大值(大堆)或者 最小值(小堆)堆 逻辑上是完全二叉树,实质上使用数组保存重要操作:向下调整:(前提:只有需要调整的位置不清楚,但其他位置已经满足堆的性质和了)小堆不一定是有序的,但有序一定是小堆...

2021-04-07 10:57:14 502

原创 二叉树的四种遍历 以及代码实现,看这一篇就够了

★ 前言:二叉树的遍历,是我们数据结构 重点中的重点 ,90% 的笔试题都是二叉树遍历的变形但是呢,有很多小伙伴对它的遍历方式还是有些模糊那么,接下来我就为大家详细介绍各种遍历方式的区别:二叉树的遍历:1、DFS(Depth First Search):深度优先遍历(1)前序遍历:(2)中序遍历:(3)后序遍历:2、BFS(Broadcast First Search):广度优先遍历(1)层次遍历:何为 遍历 :就是把二叉树中的每个结点,一个不落的都走一遍。。1、DFS(Depth First

2021-04-04 17:20:11 3366 2

原创 二叉树类型的常考选择题知识储备(二叉树的性质)

1、若规定 根节点的层数为 1,则 一个非空二叉树的 第 i 层 上最多有 2i-1 (i > 0)个结点2、若规定只有根节点的二叉树的深度为1,则 深度为 K 的二叉树的 最大结点数是 2k - 1(k >= 0)3、对于任意一个二叉树,如果其 叶子个数为 n0,度为 2 的非叶子结点个数为 n2 ,则有 n0 = n2 + 14、具有 n个结点的 完全二叉树 的 深度 k 为 log2n+1log_2^ {n+1}log2n+1​ 向上取整5、对于具有 n ..

2021-03-31 20:55:54 345

原创 关于 栈 和 队列,你还在犯迷糊吗?

栈 和 队列:队列:是一种线性结构,有一定的约束(只能从头尾插入和删除,并且遵循先进先出(FIFO)的规则)有两个接口:Queue:队列Deque:双向队列常见方法:返回类型方法解释booleanadd(E e)将指定元素插入到队列中;若违反容量限制,则抛出异常Eelement()检索,但不删除,这个队列的头Eremove()检索,并删除,此队列的头booleanoffer(E e)将指定的元素插入到此队列中Epeek()检

2021-03-31 17:04:34 237

原创 Java 中对象的大小比较

我是目录:1、equals2、对象大小的比较:(1)实现 Comparable 接口(2)构造比较器(Comparator)1、equals所有的类都具备的能力(比较两个对象代表的是不是同一个实际事物)需要覆写 equals 方法才能实现public class EqualsDemo { public static void main(String[] args) { Student t1 = new Student("s1"); Student t2 = n

2021-03-28 11:13:17 1152 3

原创 HTTPS 协议

我是目录:1、HTTPS 前置知识:(1)为什么需要 HTTPS:(2)如何解决:2、SSL(HTTPS)协议的握手过程HTTP 是明文传输的,不安全HTTPS 是基于 HTTP + SSL / TSL 来实现的,发送的数据需要加密,接收到的数据需要解密比 HTTP 安全,传输效率比 HTTP 低1、HTTPS 前置知识:(1)为什么需要 HTTPS:如果采用 HTTP 明文传输数据,很有可能会被某些钓鱼网站捕获到用户的请求,从而以用户的身份去请求服务端,给用户可能会造成财产安全和信息泄露

2021-03-25 20:02:38 162 1

原创 应用层 - DNS协议 / NAT协议

我是目录:1、DNS 协议:(1)工作原理:(2)DNS 域名解析过程:2、NAT 技术:(1)背景:(2)NAT IP转换过程:(3)NAPT:1、DNS 协议:(1)工作原理:域名 转 IP地址DNS是应用层协议DNS底层使用UDP进行解析浏览器会缓存DNS结果(2)DNS 域名解析过程:① 递归查询:(主机向本地域名服务器的查询)② 迭代查询:(本地域名服务器向根服务器的查询)2、NAT 技术:(1)背景:IPv4协议中, IP地址数量不充足的问题:NAT技术当前解

2021-03-25 17:43:49 480

原创 数据链路层 - MTU 、ARP协议

我是目录:1、认识 MTU:(1)MTU 对 IP协议 的影响(2)MTU 对 UDP协议 的影响(3)MTU 对 TCP协议 的影响2、ARP 协议:(1)ARP协议的作用:(2)ARP协议的工作过程:1、认识 MTU:MTU相当于发快递时对包裹尺寸的限制. 这个限制是不同的数据链路对应的物理层, 产生的限制.以太网帧中的数据长度规定最小46字节,最大1500字节,ARP数据包的长度不够46字节,要在后面补填充位;最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU;

2021-03-25 17:08:02 604

原创 网络层: IP 协议

我是目录:1、协议头格式:2、网段划分:(1)IP地址:(2)IP 、MAC 的区别3、IP地址数量限制:在复杂的网络环境中确定一个合适的路径1、协议头格式:4位版本号: 指定IP协议的版本, 对于 IPv4 来说, 就是48位服务类型 : 3位优先权字段(已经弃用), 4位TOS字段, 和1位保留字段(必须置为0). 4位 TOS分别表示: 最小延时, 最大吞吐量, 最高可靠性, 最小成本. 这四者相互冲突, 只能选择一个. 对于ssh/telnet这样的应用程序, 最小延时比较重要;

2021-03-25 16:37:31 98

原创 手把手带你做项目3:做一个属于自己的服务器(附源码)

类似 Tomcat 简易服务器:1、项目介绍:2、项目准备:3、开发流程:1、项目介绍:实现一个类似于 Tomcat 的简易服务器HTTP协议层面:1、只支持 HTTP 1.0 协议(短连接 - - 一条TCP 只能处理一次请求-响应周期)2、只支持 get 方法3、字符集编码,固定成 utf-8Servlet 标准层面:实现了一个最小的子集功能2、项目准备:项目全部源码(项目配置) GitHub 链接:https://github.com/JACK-QBS/Project

2021-03-19 22:30:44 923

原创 传输层 - TCP / UDP 协议详解

我是目录:1、UDP协议:2、TCP协议:(1)TCP协议段格式:(2)确认应答(ACK)机制(3)超时重传机制:(4)连接管理机制(三次握手、四次挥手)1)建立连接(三次握手)2)关闭连接(四次挥手)网络传输:设计协议要考虑两个因素(效率,安全)1、UDP协议:UDP协议端格式:UDP的特性:(1)无连接:没有建立连接就发数据(2)不可靠:没有类似TCP保证数据传输的机制(连接管理机制、确认应答机制、超时机制)(效率更高)(3)面向数据报:只能一次接收(系统级别的操作:调用系统函数)(

2021-03-18 09:42:26 479

原创 网络传输数据基本流程 详解

我是目录:1、网络传输流程图:2、数据包的封装分用:3、不同网络环境中,网络数据传输流程(1)网络互联:(2)局域网:(3)广域网:1、网络传输流程图:2、两台计算机通过 TCP/IP 协议通讯的过程如下所示:2、数据包的封装分用:3、不同网络环境中,网络数据传输流程(1)网络互联:① ARP 缓存表中 可以找到 目的主机MAC1、主机1查找本机ARP缓存表,根据ARP协议,找到MAC2、数据报由主机1,发送到集线器(数据报中:源MAC(主机1),目的MAC(主机3))(真实的数

2021-03-03 21:18:45 17044 3

原创 计算机网络的体系结构

我是目录:1、网络分层:(1)OSI 七层模型(2)TCP / IP 五层模型2、封装分用3、不同网络环境中,网络传输流程(1)网络互联:(使用交换机)(2)局域网:(3)广域网:4、IP 、MAC1、网络分层:(1)OSI 七层模型提出者:(ISO)国际标准化组织一种网络分层的设计方法论(比较复杂且不实用,落地时几乎都是TCP/IP五层模型)层数功能数据传输单元7应用层面向用户,应用程序6表示层处理在两个通信系统中交换信息的表示方法5会话层通过

2021-03-03 17:17:25 125

原创 Linux 常用指令大全

我是目录:1、指令格式:2、Windows 和 Linux 通用内容:3、路径的命令:4、文件夹 / 文件的指令:1、指令格式:输入指令/命令/程序,可以跟参数,参数值指令 -参数1[参数值] -参数2[参数值]([ ]内容可有可无)可以多个参数,没有参数值时,可以合并多个参数:-参数1参数22、Windows 和 Linux 通用内容:路径 : Linux根路径是 /,Linux区分大小写,路径间隔敏感(只能使用 /,不能使用 \)绝对路径:以 / 开头,都是绝对路径相对路径:非 /

2021-02-25 11:24:34 300

原创 手把手带你做项目2:搜索引擎(附源码)

Java API 文档搜索引擎:1、项目介绍:(1)认识搜索引擎:(2)搜索的核心思想:(3)项目的目标:2、项目准备:(1)需要的资源:(2)创建web项目:3、开发步骤:(1)4、测试:1、项目介绍:(1)认识搜索引擎:比如火狐浏览器的搜索引擎就包括:百度、谷歌先观察,百度搜索引擎的搜索结果页中,包含了若干条结果,每一个结果中,又包含了图标,标题,描述,展示url,时间,子链,图片等。搜索引擎的本质:输入一个查询词,得到若干搜索结果,每个搜索结果包含了标题、描述、展示url和点击url

2021-02-23 14:46:50 2809 1

原创 JavaWeb 相关问题汇总:

我是目录1、输入 URL 后发生了什么事情(如何定位服务资源)2、如何接收 HTTP 请求数据:3、ajax有什么作用?4、Filter:(过滤器)5、tomcat:1、输入 URL 后发生了什么事情(如何定位服务资源)通过IP找到主机,通过端口号定位应用程序(进程),通过应用上下文找到对应的项目,从而定位资源文件http://ip:port/应用上下文路径/服务路径图解:注意:通过服务路径查找资源:Tomcat通过服务 uri 路径,查找匹配的 Servlet 对象Tomcat接收

2021-01-27 17:39:47 146

原创 前端三剑客 - - HTML、CSS、JavaScript

我是目录:1、HTML:2、CSS:3、JavaScript1、HTML:(1)简介:html 属于 xml 的一种,遵循 xml 格式:html是网页文件,可以通过html提供页面元素(dom元素)html整体结构是一个树形结构,也叫dom树(多字数)学习html就是学习页面元素(dom、标签)(2)常见元素 标签:① h 标签:标题② 段落标签:③ 换行标签:(html中,内容中使用换行符不会让网页展示的内容换行)④ 链接标签:⑤ 图片:⑥ 列表:⑦ 表格

2021-01-25 13:45:13 2997

原创 Java IO详解

目录一、基础 IO二、文件操作:一、基础 IO1、IO 包括:(1)BIO:同步阻塞 IO(2)NIO:同步非阻塞 IO(3)AIO:异步非阻塞 IO2、IO 的读写方式:(IO 的本质就是对数据的读写操作)(1)本地文件 IO(2)网络 IO3、IO 的特性:(1)本质上是属于数据传输(2)涉及两个设备间数据的传输方向(只关注自己写的java程序)(3)数据流(数据在不同设备间流转)(4)java进程的 IO操作,对进程影响:① 阻塞 IO会导致进程在

2021-01-24 15:06:51 206 1

原创 谈谈你对 多线程 的理解........

目录1、认识线程:2、Thread类及常见方法:1、认识线程:概念:进程:系统 分配资源 的最小单位线程:系统 调度 的最小单位一个进程内的线程之间时可以共享资源的。每个进程至少有一个线程的存在(即主线程)线程创建: //方式1: Runnable r = new Runnable() { @Override //线程运行态时,执行 public void run() {

2021-01-18 12:03:29 1428

原创 操作系统

1、冯诺依曼体系结构:我们常见的计算机(笔记本),不常见的计算机(服务器)大部分都遵循冯诺依曼体系:输入设备:接收某个动作,转变成执行指令(从某设备传输数据到内存),如 鼠标、键盘输出设备:数据输出到某个设备,如 显示器存储器: 这里的存储器指的是 内存(所有设备都只能和内存打交道)CPU:执行指令的设备(只能是内存的指令),可以执行 运算操作、数据操作、逻辑操作(1)控制器:(相当于老板)(2)运算器:(相当于员工)数据的读写效率:2、操作系统(Operator System):

2021-01-10 17:22:30 164

原创 一个 Web 项目的创建及配置(完整版)

打开你的idea:1、新建一个Maven项目:下面这两种情况任选其一:然后再弹出的窗口中先选择 Maven,在点 next:选择你项目所要存储的位置,以及项目名:(点击 Finish)2、配置 pom.xml:在弹出的 pom.xml 中新增:<!-- 1、打包方式 --> <packaging>war</packaging> <!-- 2、项目的基本信息 --> <properties>

2021-01-05 21:09:50 1599 3

原创 易错总结:String 定义的那些字符串之间的比较

你是不是经常在做题的时候,会遇到这种类型的题:String s1 = “hello”;String s2 = “hel” + “lo”;Assert.assertTrue(s1 == s2);但是你又对 String 的定义不是那么的清晰小伙伴们,你们的福利来了,下面我将为你详细叙述:1、字符串在内存中的分配:2、代码中见实效:// true:都是常量池中的字面量 @Test public void test1(){// 测试通过 String s1 =

2021-01-03 16:24:02 175

原创 易错总结:int 和 Integer 的缠绵

你是不是经常在做题的时候,会遇到这种类型的题:int i1 = 128;Integer i2 = 128;Assert.assertTrue(i1 == i2);但是你又对 int 和 Integer 的区别不是那么的清晰小伙伴们,你们的福利来了,下面我将为你详细叙述两者的区别:1、int 和 Integer 在内存中的分配:1、int 类型 赋一个整数值,不管大小,都是在常量池中查找;如果有,返回引用,如果没有,创建再返回引用。2、Integer 类型 赋一个整数值,-128到12

2021-01-03 16:02:29 182 2

空空如也

空空如也

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

TA关注的人

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