自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Request请求转发与Respones请求重定向有什么区别?

请求转发即内部资源跳转,重定向即内部外部资源均可跳转。请求转发是浏览器发送请求给服务器,服务器中对应的资源A接收到请求,资源A处理完请求后将请求发给资源B,资源B处理完后将结果响应给浏览器。浏览器发送请求给服务器,服务器中对应的资源A接收到请求,资源A现在无法处理该请求,就会给浏览器响应一个302的状态码+location的一个访问资源B的路径,浏览器接收到响应状态码为302就会重新发送请求到location对应的访问地址去访问资源B,资源B接收到请求后进行处理并最终给浏览器响应结果,这整个过程就叫重定向。

2022-12-02 09:34:21 142 8

原创 浅谈对数据库(MySQL、Oracle、SQL Server)的认识

浅谈对数据库(MySQL、Oracle、SQL Server)的认识:数据库又分为了关系型数据库和非关系型数据库。其中关系型数据库有:MySQL,Oracle、SQL Server和SQLite等等

2022-12-01 09:51:54 66 15

原创 猿如意|IntelliJ IDEA Community下载安装以及基础开发设置和快捷键设置的详细教程

IDEA是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超常的。另外,猿如意这个辅助开发工具箱也是非常不错的,本人已经使用多时,感觉nice,非常推荐大家使用。猿如意不仅具有效率工具、开发工具下载模块,而且还有教程文档,代码片段搜索以及全网搜索等功能模块,很强大。

2022-11-30 22:51:47 541 1

原创 猿如意开发工具|Sublime Text(4126)

使用猿如意下载安装Sublime Text非常方便,不管是下载各种开发工具,还是安装其他的效率工具都是非常方便的。

2022-11-30 13:12:03 597 9

原创 猿如意开发工具|python3.7

猿如意是一款面向开发者的辅助开发工具箱,包含了效率工具、开发工具下载,教程文档,代码片段搜索,全网搜索等功能模块。帮助开发者提升开发效率,帮你从“问题”找到“答案”,可以说完全是咱们程序猿的如意兵器。

2022-11-29 16:10:02 554 21

原创 在IDEA中配置MySQL数据库连接以及在使用mybatis时设置sql语句的代码提示功能

在IDEA中配置MySQL数据库连接以及在使用mybatis时设置sql语句的代码提示功能

2022-11-29 09:25:21 536 5

原创 JVM的垃圾回收机制(GC)

JVM的垃圾回收机制(GC):一、什么是垃圾回收?二、java的垃圾回收,要回收的内存是哪些?三、回收堆上的内存,具体是回收什么?四、垃圾回收到底是怎么回收的?五、如何判定垃圾?1.引用计数2.可达性分析(java)六、已经知道哪些对象是垃圾了,具体怎么去回收呢?1.标记-清除2.复制算法3.标记整理4.分代回收

2022-11-27 09:48:57 704 27

原创 JVM类加载(类加载过程、双亲委派模型)

JVM类加载(类加载过程、双亲委派模型):一、类加载过程二、关于类加载的典型试题三、双亲委派模型

2022-11-25 09:42:04 467 19

原创 JVM的内存区域划分

JVM的内存区域划分:一、本地方法栈(线程私有)二、程序计数器(线程私有)三、Java虚拟机栈(线程私有)四、堆(线程共享)五、方法区(元数据区)

2022-11-23 09:11:15 333 27

原创 多进程编程

Java多进程编程:Java对操作系统提供的多进程编程接口这些操作进行了限制,最终给用户只提供了两个操作:进程创建(Process process = runtime.exec())和进程等待(int exitCode = process.waitFor();)。

2022-11-21 08:42:29 506 31

原创 多进程编程 VS 多线程编程

创建线程/销毁线程比创建进程/销毁进程更加高效和轻量。所以,一般情况下,会使用多线程来进行开发。但是,多进程也有它自己独特的优势,进程的“独立性”更好。进程要比线程来的更加稳定一点。虽然进程没有线程那么高效,但是它的独立性带来的稳定是非常关键的,在某些场景下必须使用多进程编程。

2022-11-19 09:48:45 440 25

原创 搭建java部署环境以及部署Web项目到Linux

一、搭建java部署环境 1.yum 2.JDK 3.Maven 4.Tomcat 5.MySQL二、部署Web项目到Linux1.数据库建表2.构建项目并打包,将打好的包拷贝到Tomcat中3.访问项目链接

2022-11-17 09:19:35 750 40

原创 Linux权限

一、用户操作二、三种角色三、文件类型和访问权限四、修改文件权限

2022-11-15 09:01:19 414 32

原创 Linux常用命令详解

Linux常用命令: ls、pwd、cd、touch、cat、mkdir、rm、cp、mv、man、less、head、tail、vim、grep、ps、netstat......

2022-11-13 09:32:08 2874 40

原创 Linux 环境搭建以及xshell远程连接

一、如何获得云服务器?二、如何使用终端软件连接到Linux?(xshell)

2022-11-11 08:56:58 991 34

原创 Java之IO流

InputStream和FileInputStream是用来读取数据的,即输入;OutputStream和FileOutputStream是用来写入数据的,即输出。FileInputStream和FileOutputStream是专门用来操作文件的,他们是一个类,分别实现了InputStream和OutputStream的接口;Reader和FileReader是用来读取的,即输入的;Writer和FileWriter是用来写入的,即输出的。

2022-11-09 08:35:15 473 27

原创 浅析哈希源码

解析源码之前的几个疑问?1.HashMap在什么时候开辟的内存?2.不带参数的构造方法,默认哈希表的数组大小是多少?3.HashMap map = new HashMap(19);此时分配的内存是多少?4.一般地,哈希表示数组+链表的方法进行存储,在满足什么条件的时候链表会变成树?5.当HashMap扩容的时候需要注意什么?6.hashcode与equals的区别?

2022-11-07 09:46:53 483 28

原创 数据结构之哈希表

虽然哈希冲突是必然的,但是冲突率是不高的,哈希表复杂度是O(1) 。 java 中利用哈希表实现的 HashMap 和 HashSet。java 中使用的是哈希桶方式解决冲突的。java 会在冲突链表长度大于一定阈值后,将链表转变为搜索树(红黑树)。 java 中计算哈希值实际上是调用的类的 hashCode 方法,进行 key 的相等性比较是调用 key 的 equals 方法,自定义类作为 HashMap 的 key 或者 HashSet 的值,必须重写hashCode 和 equals 方法。

2022-11-05 08:52:39 334 34

原创 数据结构之Map&Set

Map和set是一种专门用来进行搜索的容器或者数据结构,Map和Set是一种适合动态查找的集合容器。其中TreeMap和TreeSet集合背后的数据结构就是搜索树,红黑树。其中TreeSet底层就是一个TreeMap。一般把搜索的数据称为关键字(Key),和关键字对应的称为值(Value),将其称之为Key-value的键值对,所以模型会有两种:1. 纯 key 模型2. Key-Value 模型而Map中存储的就是key-value的键值对,Set中只存储了Key。

2022-11-03 08:38:54 758 37

原创 数据结构之二叉搜索树

数据结构之二叉搜索树:一、概念二、查找操作三、插入操作四、删除操作五、自实现六、性能分析

2022-11-01 08:55:04 284 31

原创 常见八大排序算法

八大常见排序算法:一、直接插入排序二、希尔排序三、选择排序四、堆排序五、冒泡排序六、快速排序1.递归实现2.非递归实现七、归并排序1.递归实现2.非递归实现八、计数排序目前上述几种排序算法,只有直接插入排序、冒泡排序、归并排序和计数排序是稳定的。

2022-10-30 10:15:07 408 49

原创 八大常见排序算法

八大常见排序算法:一、直接插入排序二、希尔排序三、选择排序四、堆排序五、冒泡排序六、快速排序1.递归实现2.非递归实现七、归并排序1.递归实现2.非递归实现八、计数排序

2022-10-28 08:58:36 102 16

原创 数据结构之堆的应用

JDK1.8中的PriorityQueue底层使用了堆的数据结构,用堆作为底层结构封装了优先级队列。一、Top-k问题 1.前K个最小数(第k个最小数) 2.前K个最大数(第K个最大数)二、堆排序1.从小到大排序(建大根堆)2.从大到小排序(建小跟堆)

2022-10-26 08:30:44 486 35

原创 数据结构之堆

PriorityQueue底层使用了堆的数据结构,而堆实际就是在完全二叉树的基础之上进行了一些元素的调整。一、堆是什么?二、堆的存储方式是什么?三、堆是怎么创建的?四、建堆的时间复杂度是多少?五、堆是怎么进行插入和删除元素的?六、用堆模拟实现优先级队列

2022-10-24 08:19:20 510 43

原创 数据结构之PriorityQueue源码及特性分析 (大小根堆转换、扩容)

PriorityQueue源码分析: 1. 小跟堆源码分析 2.PriorityQueue默认是小堆,如何变成大根堆呢? 3. Integer数据类型是如何变成大根堆的?(自实现比较器) 4. PriorityQueue扩容的源码分析Java集合框架中提供了PriorityQueue和PriorityBlockingQueue两种类型的优先级队列,PriorityQueue是线程不安全的,PriorityBlockingQueue是线程安全的。

2022-10-22 08:59:58 715 42

原创 表白墙服务器版【交互接口、服务器端代码、前端代码、数据存入文件/数据库】

表白墙服务器版【交互接口、服务器端代码、前端代码、数据存入文件/数据库】:一、准备工作二、约定前后端交互接口三、实现服务器端代码四、调整前端页面代码五、数据存入文件六、数据存入数据库

2022-10-19 09:31:53 3184 49

原创 Cookie与Session是如何联动的?

Cookie是由服务器产生的,通过HTTP响应的Set-Cookie字段来进行设置,并返回给浏览器。Cookie是在浏览器这边进行储存的,浏览器会根据域名/地址来分别储存Cookie。在浏览器的下次请求中Cookie会被自动添加到请求中,发送给服务器。Session叫做“会话”,在服务器端进行储存的。Cookie 是客户端的机制,Session 是服务器端的机制。Cookie 和 Session 经常会在网页开发中一起配合使用。Cookie与Session的区别以及他们是如何联动的。

2022-10-16 08:55:46 1638 49

原创 Servlet API 详解(HttpServlet、HttpServletRequest、HttpServletResponse)

我们写 Servlet 代码的时候, 首先第一步就是先创建类, 继承自 HttpServlet, 并重写其中的某些方法。当 Tomcat 通过 Socket API 读取 HTTP 请求(字符串), 并且按照 HTTP 协议的格式把字符串解析成HttpServletRequest 对象。Servlet 中的 doXXX 方法的目的就是根据请求计算得到相应, 然后把响应的数据设置到HttpServletResponse 对象中,按照 HTTP 协议的格式, 转成一个字符串, 并通过 Socket 写回给浏览器

2022-10-14 09:14:24 671 32

原创 Servlet 的运行原理

一、Tomcat在Servlet运行中的定位1.接收请求:2.根据请求计算响应3.返回响应二、Tomcat 是如何初始化/处理请求的? 1.Tomcat 初始化 2.Tomcat 处理请求 3.Servlet 的 service 方法

2022-10-11 10:49:58 180 33

原创 如何创建一个Servlet项目(Maven)?

Servlet 是一种实现动态页面的技术,是一组 Tomcat 提供给程序猿的 API, 帮助程序猿简单高效的开发一个 web app。创建Servlet项目(Maven)的步骤:1.创建Maven项目 2.引入依赖 3.创建目录 4.编写代码 5.打包程序 6.部署程序 7.验证程序 。因为IDEA社区版是没有自带Tomcat的部署功能的,这就需要使用smart tomcat插件来完成。

2022-10-09 08:50:56 1470 40

原创 Tomcat下载、安装及使用介绍

我们使用Tomcat主要的目的就是为了能够部署一个webapp网站。Tomcat 是一个 HTTP 服务器。HTTP 协议就是 HTTP 客户端和 HTTP 服务器之间的交互数据的格式。可以通过 ajax 和 Java Socket 构造HTTP 客户端。HTTP 服务器也可以通过 Java Socket 来实现。而 Tomcat 就是基于 Java 实现的一个开源免费的 HTTP 服务器。

2022-10-06 07:56:51 840 39

原创 数据结构之二叉树

一、二叉树相关概念二、二叉树的性质三、二叉树的基本操作 1.前序遍历 2.中序遍历 3.后序遍历 4.层序遍历 5.获取树中节点的个数 6.获取叶子节点的个数 7.获取第K层节点的个数 8.获取二叉树的高度 9.检测值为value的元素是否存在 10.判断一棵树是不是完全二叉树

2022-10-04 08:26:40 678 41

原创 数据结构之队列

队列只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出的特点,进行插入操作的一端称为队尾,进行删除操作的一端称为队头 。Queue是个接口,在实例化时必须实例化LinkedList的对象,因为LinkedList实现了Queue接口。在Java中,Queue是个接口,底层是通过双向链表实现的。使用单链表模拟实现队列、用数组模拟实现循环队列。

2022-10-02 09:21:33 1053 41

原创 数据结构之链表(LinkedList详解)

LinkedList实现了List接口;LinkedList的底层使用了双向链表;LinkedList没有实现RandomAccess接口,因此LinkedList不支持随机访问; LinkedList的任意位置插入和删除元素时效率比较高,时间复杂度为O(1);ArrayList实质是顺序表,底层是一个数组。LinkedList实质是一个链表。ArrayList顺序表在物理上和逻辑上都是连续的,但是在扩容的时候,可能会造成空间的浪费。而LinkedList在物理上不一定是连续的,在逻辑上是连续的。

2022-09-29 08:07:24 756 36

原创 ArrayList详解及扩容源码分析

ArrayList在调用不带参数的构造方法时,第一次add的时候,默认容量才是10。而且是按照1.5倍的速度进行扩容。ArrayList底层是使用数组来存储元素的,由于其底层是一段连续空间,当在ArrayList任意位置插入或者删除元素时,就需要将后序元素整体往前或者往后搬移,时间复杂度为O(n),效率比较低,因此ArrayList不适合做任意位置插入和删除比较多的场景。而且,在扩容之后,可能会带来空间的浪费。ArrayList适合在给定了下标位置的情况下进行查找元素,此时时间复杂度可以达到O(1)。

2022-09-27 08:11:55 1298 31

原创 包装类详解(装箱(包)、拆箱(包)、Integer类型缓存)

在Java中,由于基本类型不是继承自Object,为了在泛型代码中可以支持基本类型,Java给每个基本类型都对应了一个包装类型。Integer类型把[-128~127]的数据缓存了,这个范围的数据直接取出,不需要新new对象。

2022-09-25 08:40:38 1078 23

原创 对集合、复杂度以及泛型的认识

Java 集合框架 Java Collection Framework ,又被称为容器 container ,是定义在 java.util 包下的一组接口 interfaces 和其实现类 classes 。从两个维度评价一个算法的好坏。时间复杂度:估算程序指令的执行次数(执行时间);空间复杂度:估算所需占用的存储空间。我们一般用大O表示法来描述复杂度。泛型是在JDK1.5引入的新的语法,通俗讲,泛型就是适用于许多许多类型。从代码上讲,就是对类型实现了参数化。

2022-09-22 08:38:27 1019 52

原创 网页中F5刷新与ctrl + F5强制刷新的区别?

F5只是刷新一次当前页面的资源,使用F5刷新,浏览器仍然会重复利用之前的缓存数据。使用ctrl+F5进行刷新,这个时候浏览器就不会重复利用之前已经缓存的数据了,而是去清空缓存,把所有的资源进行重新下载,使网页与本机储存的网页时间标记相同。总结:F5刷新只是请求本地资源重新加载。那么在这个时候,如果在某些业务场景的服务器资源发生了改变,那么这边的本地用户可能某些功能或产品访问不到;​​​​​​​ctrl + F5 是直接请求服务器的资源,让当前页面的资源重新全部从服务器上下载下来,这样就全部更新了。

2022-09-20 08:32:45 1051 27

原创 HTTPS 的传输过程

HTTPS传输过程:1.客户端先从服务器获取到证书,证书中包含了公钥。2.客户端对证书进行校验。3.客户端生成一个对称秘钥,使用公钥对对称秘钥加密并发送给服务器。4.服务器收到这个请求之后,使用私钥解密,得到对称秘钥。5.客户端发出后续请求,后续请求都是用对称秘钥加密。6.服务器收到的数据也是用对称秘钥进行解密。

2022-09-17 07:47:46 4420 63

原创 如何使用代码来构造HTTP请求?

网页前端构造HTTP请求:直接在浏览器输入URL(构造GET);使用form表单(可以构造GET和POST);使用ajax(可以构造各种请求)1.原生ajax构造请求 2.浏览器和服务器交互过程(引入 ajax 后) 3.JS中是如何安装引入第三库的呢?封装好的ajax构造请求如何通过 Java 代码构造 HTTP 请求: "发送 HTTP 请求", 本质上就是按照 HTTP 的格式往 TCP Socket 中写入一个字符串。"接受 HTTP 响应", 本质上就是从 TCP Socke中读取一个字符串。

2022-09-15 08:14:13 452 36

空空如也

空空如也

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

TA关注的人

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