自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(100)
  • 收藏
  • 关注

原创 【Linux】高频指令及简单的vim使用(0基础带你快速入门)

默认情况下是“普通模式”(normal mode),是输入不了的,要想输入,需要进入“插入模式”(insert mode);删除目录,需要搭配-r选项,表示递归,也就是通过一个后序遍历,先将目录下的子目录一个一个删除,最后删掉当前目录;(如下图)输入y表示确认删除,n表示取消删除。rm -rf / 这个指令十分危险,/是整个Linux系统目录,其他所有目录和文件都在/下,所以这个命令相当于删除所有文件;如果觉得上述过程输入y/n麻烦,还可以搭配-r -f指令或者-rf,强制一次性删除(如下)

2022-11-30 10:42:32 330

原创 【Java】博客系统——详细解释+代码+详细注释(课设必过)

这里所要介绍的博客系统,是以个简单的网站程序,如果你能吃透这个博客系统,也是可以作为一个项目写到简历上的;想要前端HTML代码可以私信我哦~实际上大家也可以自己尝试一下,做一个大体的网页框架,本文已经详细给出了前后端交互的具体实现,希望可以帮助到你!

2022-11-28 19:11:33 316

原创 Cookie和Session的工作流程是什么样的?5min学懂:简易用户登录(前端+后端+数据库)

想要了解Cookie和Session的工作流程,首先需要来了解一下什么是Cookie,什么是Session?之后我将会用一个用户登录(附加:前端+后端 代码)的栗子,让你通透整个工作流程;sessionId是由服务器生成的一个“唯一性字符串”,也可以理解为一个身份表示,通过这个,服务器就可以识别对应的用户;从session机制的角度来看,这个唯一性字符串称为 “sessionId”,但在整个登录流程来看,也可以把这个唯一字符称为 “token”;

2022-11-23 21:10:47 375 1

原创 HttpServlet学习中的常见问题(个人珍藏笔记)

以上代码,body是响应正文,本来是String类型,但是由于jquery的特殊机制,将body自动转换成了js的对象数组了,如果没有jquery做这件事情,就需要使用JSON.parse来完成;可以把json格式的数据转换成java的对象,第一个参数是可以是字符串也可以是输入流,第二个参数是类对象,是要解析出的结果的对象的类;每次收到请求,就会调用service,service根据请求中不同的方法,调用不同的doXXX;,则会调用浏览器的success方法,而body就是服务器请求后返回的信息,但如果。

2022-11-22 17:36:08 228 1

原创 通过Tomcat / Small Tomcat,如何部署Servlet?(超详细)

以下将会通过七个步骤,以打印“hello”为例,对Servlet进行部署;以下将会通过七个步骤,以打印“hello”为例,对Servlet进行部署;使用工具(这是配套使用的方案!):idea2021或2020,jdk 8,Java Servlet API 3.1.0版本,Tomcat 8.5;

2022-11-19 18:38:41 361

原创 HTTPS的加密过程,你记住了吗?

接下来介绍的这套加密过程,不是HTTPS独有的,这套机制是属于一个专门的协议SSL/TLS,很多加密场景都会用到这个,接下来咱们就来讨论一下HTTPS = HTTP + SSL这个过程~

2022-11-17 14:50:37 541

原创 20min带你学习——HTTP协议、以及经典面试问题

URL就是我们实际输入的网址,也叫“唯一资源定位符”,他就像门牌号一样,通过他就可以在服务器中找到我们需要访问的资源;

2022-11-15 08:57:00 149

原创 各种构造HTTP请求的方法——最简洁,最易懂~

form表单构造的数据一定会出发页面跳转,时间慢,开销大,所以并不是一件好事,使用ajax就可以不触发跳转,达到“局部刷新”的效果;

2022-11-14 18:28:54 172

原创 路径总和III——对前缀和解法的解释

本文基于对学习前缀和遇到的问题和理解,总结下来;每个人的理解方式都有差异,希望可以帮到各位;一句话概括就是:从该节点到某一节点的路径上,所有结点的val之和;如下图(原题栗子):解释:例如10 -> 5 -> 3 这条路径各节点val之和就是结点3的前缀和;10 -> 5 -> 2 -> 1这条路径各结点val之和就是结点1的前缀和;

2022-11-12 13:12:46 238

原创 谈谈HTTP协议的方法里,GET和POST的区别?我来教你如何回答~

目录前言一、什么是GET、POST?1.1GET1.2POST二、如何轻松回答?第一步、直接盖棺定论:第二步、谈细节上的区别: 要想回答好这个问题,咱们先来了解以下什么是GET、POST方法,有哪些细节要注意; GET是HTTP请求最常用的方法,本质上就是浏览器通过GET方法,向服务器发起GET请求,从服务器拿到相应的数据;1.浏览器的地址栏中输入URL,就会触发GET;2.HTML里的link、a、img、script会触发GET请求;3.html中的form标签可以构造出GE

2022-11-09 18:31:41 339

原创 【JavaScript】基于querySelector / querySelectorAll对元素的操作,为你的DOM API基础扫盲~

浏览器提供的一个全局对象,类似于CSS中的选择器,可以精准的获取元素对象,这组API都来自于document下,document是浏览器提供的一个全局对象,表示当前页面DOM API基本都是documet对象的方法;

2022-11-04 16:23:24 885

原创 从浏览器输入网址(URL),到最终展示页面,都发生了什么?

从(如下图)到你按下回车,再到最后出现这个网页界面(如下图)中间到底发生了什么?接下来就带你一步步进行解析~

2022-11-01 17:14:16 491

原创 三握,四挥,滑动窗口会了吗?面试TCP/IP经典问题总是忘?快来这里~

如上图,丢失也不用管,主机A继续自顾自往下发,主机B会不停的向A索要1001,连续几次以后,A意识到了1001丢包,就会重传1001~2000,主机B收到后,因为前面的数据B都接收到了,所以B返回ACK的确定序号为7001,A就知道什么意思了(表示7001以前的数据都收到了);把UDP报文的每一个字节都进行累加,加和放到两个字节的空间中(就算溢出也无所谓),最终的结果就是校验和,发送时,就先计算一个校验和,接收方按照相同规则在计算一遍,比较和发送方的校验和是否一致,若一致说明数据没有问题,不一致则有问题;

2022-10-20 22:56:26 572

原创 基于TCP的socket API,让你拥有另一套自己的服务器~

可行是可行,但是一旦需要频繁创建销毁线程,高并发的情况下,负担还是很重的,所以通过线程池来服务多个客户端;clientSocket在循环中,每来一个客户端就会为他分配一个,对象会反复被new出实例,每创建一个,都要消耗一个文件描述符,因此就要把不需要的clientSocket释放掉;4.全双工:一个通道,双向通信(同时上传和下载),为何一个通道可以双向通信?这一个通道里不止一个网线,例如有8根,那么就会分成两组:4进4出;(全双工的对立面是——单双杠:一个通道,单向通信);问题2:为什么要用线程池?

2022-10-16 22:44:07 1020

原创 基于UDP的socket API,让你拥有一套自己的服务端~

这一个通道里不止一个网线,例如有8根,那么就会分成两组:4进4出;(全双工的对立面是——单双杠:一个通道,单向通信);因为服务器是程序员自己掌控的,具有可控性,而客户端时用户自己的电脑,具有不可控性,很可能用户自己乱装的东西就把端口给占了;A给B传输信息,A可以知道B是否接收到(复杂的网络环境不能保证百分百B能接收到数据)数据;想要手动指定客户端端口不是不行,是不好,因为不缺定你绑定的这个端口是否空闲;客户端不需要手动绑定,操作系统会自动分配一个空闲的端口;问题:不需要手动绑定客户端的端口吗?

2022-10-14 11:57:56 145

原创 实际开发中,TCP / IP五层网络模型是如何工作的?

想要了解TCP / IP五层网络模型如何工作,首先要知道,这五层网络是什么?往下走此处省略中间传输过程,假设数据到达了接收端主机B;

2022-10-11 23:13:02 153

原创 线程死锁的成因?如何查找并定位死锁,解决死锁?这里教你几招~

死锁就是指线程t1要使用的资源被线程t2占用,线程t2想使用的资源被线程 t1占用,这就像两股绳子拧在一起,解不开了;

2022-09-27 00:30:30 247 1

原创 谈谈synchronized 和 ReentrantLock 的区别?

synchronized和ReentrantLock都是Java中的可重入锁;

2022-09-26 22:49:22 217

原创 经典面试问题:HashMap、HashTable、ConcurrentHashMap的区别?

ConcurrentHashMap相对于HashTable做出了一些优化和改进:对读方式没有加锁(但使用了volatile保证从内存中读取数据),只对写操作使用synchronized进行加锁,但不是对整个对象进行加锁,而是对每个哈希桶进行加锁;扩容的时候,旧数组和新数组会同时存在一段时间,每次操作哈希表的时候都会把旧内存的一些元素搬运到新数组中,直到全部搬运完才释放旧数组的空间(查询元素时,旧和新一起查;put元素时,发现负载因子超过阈值,就会触发扩容——申请一个更大的数组,然后讲旧数据搬运到新数组上;

2022-09-26 19:52:46 525 1

原创 深入理解synchronized背后的原理

synchronized产生的效果实际上就是加锁,并且当两个线程对相同对象加锁的时候,就会出现锁竞争,那对锁的线程就会对其进行加锁,没拿到锁的对象就会进行阻塞等待,直到拿到锁的线程释放锁;若当前程序,锁竞争十分激烈,那么 synchronized就是以重量级锁的状态来进行工作的,也就是挂起等待,涉及到用户态与内核态的切换,但是节省了CPU的开销;总结:没有竞争的时候——偏向锁;若当前程序,锁竞争不激烈,那么synchronized就是以轻量级锁的状态来工作的,也就是纯用户态的“自旋”,可以第一时间拿到锁;

2022-09-25 22:32:14 132

原创 面试常问CAS和ABA问题,你懂了吗?

CAS(Compare-and-Swap)顾名思义,叫做比较和交换,大概执行过程是什么样呢?假设现有两个寄存器A、B和一个内存M,通过对寄存器A中的值与内存M的值进行比较是否相同,来决定寄存器B中的值是否与内存中M的值进行交换,若不相同则不会发生什么,若相同则将寄存器B的值与内存M的值进行交换;总结:CAS是CPU的一条指令,原子性完成的,线程安全,效率也很高;

2022-09-25 21:32:57 513

原创 理解这些常见锁策略,恭喜你,又进阶了~

具体介绍,上面已经很清楚了,忘了的话,记得往上翻翻;问道为什么要使用自旋策略,实际上就是再问你,自旋锁的优点是什么,最好把缺点也说一下,面试官一天要面试很多人,而面试官实际上和你是站在一方的,就是一个让你展现自我的地方,所以,面试官自然是希望多说点你了解的。

2022-09-21 20:14:00 839 3

原创 信我,ThreadPoolExecutor经典面试问题就在这~

了解线程池之前,你有哪些熟知的线程池有哪些呢?String(字符串常量池),MySQL JDBC,数据库连接池(DataSource);通过对他们的了解,大概知道了出现池的主要目的——减少不必要的开销,提高效率;为什么出现了线程池呢?线程出现的目的是因为进程太重量级了,导致创建线程或者销毁进程效率很低,而线程就是为了资源共享,新的线程复用之前的资源,就提高了效率,但是如果线程创建/销毁 的速率非常高,那么线程的创建/销毁带来的开销就是不可忽略的;线程池的基本原理是什么?

2022-09-20 17:26:15 201 1

原创 【多线程】详解——模拟设计Timer(结尾附码源)

在服务器开放中,客户端向服务器发送请求,等待服务器响应,但若因为某个故障,导致程序一直无响应,怎么办?这时总不可能让客户端一直都没有响应,一直等下去,很有可能程序就卡死了,所以为了应对此种情况,程序员就设置了一个定时器,若到在定时器规定的时间没有完成任务,会执行某一个动作,响应客户端;

2022-09-19 14:18:18 158 1

原创 【多线程】深入理解,单例模式:饿汉模式和懒汉模式(附常考面试题)

是一种给常见的设计模式,先来他谈谈何为设计模式,在代码领域里,很多程序员的水平参差不齐,于是就有大佬们根据一些常见的需求,整理出来的一些应对办法;那么单例就是指单个实例(对象),也就是说一个类只能有一个实例,例如,在中国,一个男人只能娶一个老婆是一个道理;单例模式,本质上就是借助变成语言的语法特性,强制限制某个类,不能创建多个实例。在Java中有些东西是天然的单例,例如static,他可以修饰成员/属性,也就是我们口中熟知的类成员/类属性,实际上这种叫法,也是有一定原因的,也就是这个类特有的成员和属性。

2022-09-16 11:12:11 186

原创 一文带你深入理解——锁的可重入性

简而言之,一个线程,连续针对一把锁,连续加锁两次或以上,就有可能出现两种情况,一种是产生死锁,这样的锁叫做“不可重入锁”,另一种是不会产生死锁,这个锁叫做“可重入锁”;一个有趣的比方,假如,你是八路军~ 的一个秘密的电报员,在入敌深处,建立了一个隐蔽的房间专门给组织发送机密电报;这次你又发现了重要敌情,准备给组织发送情报,那么这么重要的事肯定不能敞开天窗大门来干,于是呢,你关上大门,为了防止闲杂人等误入,你就给门上了锁...发送完情报,忽然发现门外有很多日军在闲逛!!!

2022-09-08 23:47:29 153

原创 引发线程安全的原因是什么?怎么解决?程序员一定要掌握的东西

本篇围绕理解引发线程安全的原因以及如何解决;

2022-09-07 10:56:01 1686

原创 【Python】基于OpenCv的智能人脸识别,教你轻松拿下Python项目之首(附源码+仓库地址)

基于OpenCv的智能人脸识别教程,今天就带大家一起开实现一下~

2022-08-28 15:29:37 1081 2

原创 【Python】学生管理系统——详细解释+代码+详细注释(课设必过)

很多学生在学校学习完Python,就要做一个课设考验你对知识的掌握程度,这次就教大家如何来用Python来实现一个学生管理系统

2022-08-27 21:52:29 3847

原创 【Python】手把手教你——如何生成属于自己的二维码 ~

通过Python教你如何创建一个属于自己的二维码,五分钟学会~

2022-08-27 18:31:56 487

原创 面试考频最高(没有之一)——“谈谈进程和线程的区别?”我来教你如何回答~

谈到操作系统,进程线程的概念和区别,就是出场频率最高的面试问题(没有之一)!首先来看看面试官会如何引出这样一个问题~

2022-08-26 17:23:11 142

原创 《剑指Offer》二叉树全题——一套妙解,保证让你轻松掌握二叉树~

JZ55二叉树的深度,JZ27二叉树的镜像,JZ26树的子结构,JZ79判断是不是平衡二叉树,JZ28对称的二叉树,JZ32从上往下打印二叉树,JZ68二叉搜索树的最近公共祖先,JZ36二叉搜索树与双向链表,JZ86在二叉树中找到两个节点的最近公共祖先,JZ33二叉搜索树的后序遍历序列,JZ77按之字形顺序打印二叉树,JZ7重建二叉树,JZ54二叉搜索树的第k个节点,JZ34二叉树中和为某一值的路径(二),JZ84二叉树中和为某一值的路径(三),JZ78把二叉树打..................

2022-08-25 20:58:30 145

原创 《剑指Offer》二叉搜索树的第k个节点——真没你想象中那么难,一招教你秒杀它~

真的很简单,保证让你5秒看懂~

2022-08-25 17:23:19 29

原创 进程调度的基本过程——请各位不要当渣男~

注意:本文引用事例,请不要践行!

2022-08-25 13:39:21 125

原创 《剑指Offer》按之字形顺序打印二叉树——最容易理解的思路,两分钟学会~

最容易理解的思路,两分钟学会~

2022-08-24 20:24:39 33

原创 《剑指Offer》搜索算法题篇——更易理解的思路~

本篇若要说难点,就是时间复杂度的把控,还有什么样的解法容易让大家看懂理解

2022-08-22 20:06:29 106

原创 环境装好了,我们来学JDBC编程;数据库连接了,我来教操作~

这里基于JCBC写的代码本质上是一个MySQL客户端,未来工作中大部分的数据库操作,都是通过代码来完成的;实际开发中,很少会直接使用JDBC,代码比较啰嗦,实际开发中会用到一些库/框架 简化这里的数据库操作(MyBatis),各种库和框架本质上又是对JDBC进行的封装;

2022-08-22 14:41:30 193

原创 《剑指Offer》栈&队列全题——妙解思路,难度由浅入深

《剑指Offer》中所有关于栈&队列的题都在这里啦~巧妙解题思路,快速学会

2022-08-21 16:57:46 94

原创 “谈谈如何理解索引?谈谈如何理解事物?”我来带你模拟面试~

如何解决这些高频面试题?大致回答思路如下:谈谈如何理解索引?索引是干什么的(解决了什么问题)索引付出的代价索引背后的数据结构

2022-08-21 14:11:25 158

原创 面试:“索引背后的数据结构是什么样的?”,五分钟带你了解“B树,B+树”

索引背后的数据结构是什么样的?是哈希表吗?会是二叉搜索树、AVL树、红黑树吗?

2022-08-20 14:12:47 195

空空如也

空空如也

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

TA关注的人

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