自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 IDEA解决Git冲突详解

相信大家多多少少都有了解和使用过Git,作为Java程序员idea可谓是无敌的存在了,那么如何使用idea解决Git冲突呢?不瞒大家前段时间在公司把同事代码合没了,还好给找回来了,以此片文章来警示自己,同时希望对大家有所帮助。

2023-11-30 16:35:22 1058 7

原创 什么是分布式锁?Redis实现分布式锁详解

在分布式系统中,涉及多个主机访问同一块资源,此时就需要锁来做互斥控制,避免出现类似线程安全问题。而Java中的synchronized只是对当前进程中的线程有效,多个主机实际上是多个进程,那么它就无能为力了,此时就需要分布式锁。

2023-11-26 20:06:54 1657 7

原创 redis作为缓存详解

对于缓存的理解,缓存目的就是为了提供更快速的访问效率。一般会使用访问迅速的为访问较为缓慢的作为缓存。例如使用内存作为硬盘的缓存,硬盘作为网络的缓存。使用缓存可以减轻被缓存服务请求数量,一定程度上提供了系统高可用性能。

2023-11-22 16:26:32 831 4

原创 redis集群模式详解

redis集群模式初心是为了引入更多硬件资源,提供高可用的集群服务。只要是多个机器构成的分布式系统都可称之为服务器集群,而redis集群可以认为是狭义上的集群,主要是为了解决存储空间不足的问题。redis集群模式中,数据是存储在多个主节点上,每个主节点都会搭配多个从节点。每个主节点被称为分片。

2023-11-04 17:55:28 286 8

原创 redis哨兵模式详解

redis在主从模式下,主节点服务就显的尤为重要。为了保证redis集群的高可用,提出的哨兵模式。哨兵集群只负责监控主节点,如果主节点挂了,哨兵节点就可以在从节点中选取一个作为主节点,保证了redis集群服务的可靠性。哨兵机制是通过独立的进程体现的(redis-sentinel),和redis-server不是一个进程。redis-sentinel不负责存数据,只是对其他的resid-server起到监控的效果。通常哨兵节点也会搞一个集合,也是提供redis集群的高可用(防止哨兵节点挂了的情况)。

2023-10-22 18:06:41 887 6

原创 redis主从复制详解

redis为了保证高可用,它支持主从模式进行部署服务。可以引入更多硬件资源,提供高可用的服务器。主节点和从节点数据需要一致,那么在读数据就可以在服务器集群中任意选择一个节点进行读取。redis主从复制默认只能在主节点中修改数据,从节点是不可以修改的,也是为了保证主从节点数据的一致性。

2023-08-28 12:16:34 290 5

原创 redis持久化机制 & 事务详解

redis为了保证高可用引入了持久化机制,目的就是为了redis服务器重启时可以恢复原有的数据。redis提供了RDB,AOF和混合持久化三种机制,开发者可在不同的业务场景具体选择使用哪一个持久化机制。

2023-08-25 21:19:57 710 7

原创 redis常用五种数据类型详解

redis有多种数据类型,常用的有五种,其他都是在特定场景下使用的数据类型。具体需要使用时可以去redis官网中查阅。这篇文章将详细介绍常用五种数据类型。

2023-08-24 20:49:39 1170 7

原创 redis初识

redis作为当前主流的内存数据库(NoSQL),它是以键值对格式存储数据(key-value),相比于MySQL它具有更加快速访问数据的能力。同时redis在分布式系统中也有自己的一番作为,redis的主从复制,哨兵模式等等。redis也可以作为缓存解决数据库访问压力,等等一些用武之地。

2023-08-23 20:43:01 769 6

原创 SpringAOP详解

AOP(Aspect Oriented Programming)是思想(面向切面编程),对某一类事情的统一处理。Spring AOP是思想的具体实现框架。

2023-06-10 18:51:17 612 9

原创 SpringMVC

MVC 是 Model View Controller 的缩写,它是软件⼯程中的⼀种软件架构模式,它把软件系统分为模型、视图和控制器三个基本部分。1)Model(模型)是应用程序中用于处理应⽤程序数据逻辑的部分。通常模型对象负责在数据中存取数据。2)View(视图)是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。前端可以看见的页面。3)Controller(控制器)是应用程序中处理⽤户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。

2023-05-09 10:41:03 1222 20

原创 Spring Boot配置文件及日志信息

使用Spring Boot框架就是为了更加简单快速的使用Spring容器。Spring Boot就是Spring的脚手架,底层就是Spring容器。

2023-04-28 22:27:54 1854 13

原创 Spring Bean的作用域及生命周期

使用Spring框架时,我们需要清楚Spring托管Bean的作用域和生命周期,这样使用框架才会更加得心应手。

2023-04-27 20:00:22 1460 11

原创 Spring五大类注解 || Bean的更简单存储

使用Spring容器,为我们程序开发带来了很大的遍历。那么我们就需要学习Spring带来的一些机制,灵活的使用和理解这些机制,相信会有很多收获。

2023-04-23 15:40:51 647 10

原创 Spring核心设计思想

IoC: Inversion of Control(控制反转)。这是一种思想,控制权反转。这样的思想可以降低模块之间的耦合性。所谓耦合性就是代码之间的相关性,如果耦合太高,那么可能修改一处代码其他所依赖的代码都需要修改。降低耦合性,即代码之间的相关性也就降低了,模块和模块之间的区别也就更加明显了,开发效率也就提高了。就是依赖注入的意思。IoC是一种思想(控制权反转),Spring IoC是一个容器,包含了存储和获取对象的能力。获取对象就是程序在运行期间,动态的将对象注入到当前类中。

2023-04-11 11:10:39 829 11

原创 JVM探究

Java作为跨平台语言,正是由于JVM的存在使得Java程序可以一次编译,处处运行。不同的环境只要安装了虚拟机(Java Virtual Machine,简称 JVM)就可以运行Java程序。

2023-04-05 11:55:46 320 13

原创 基于Java+MySQL+Tomcat+Servlet+Maven+JQuery+jackson+开源Markdown编辑器实现前后端分离个人博客系统

项目中使用了Java ,MySQL ,Tomcat ,Servlet ,Maven ,JQuery ,jackson,开源MarkDown编辑器这些技术。共有五个页面:注册用户页,登录页,博客列表页,博客详情页,博客编辑页。所实现的功能有:设计实现数据库相关代码,实现博客列表页,实现博客详情页(按照md渲染),实现注册页,实现登录页,实现检测登录状态。显示用户信息,退出登录,发布博客,删除博客,统计博客数量。由于源码较多,我放在github上,大家可以查看。

2023-03-30 10:51:34 891 16

原创 Cookie和Session详解

Cookie之前博客有介绍过,就是服务器在用户这边搞的一个持久化存储机制。通过服务器这边set-cookie进行设置,用户发起请求通过cookie字段将cookie中的内容发送到服务器,服务器就知道客户端这边处于一个什么样的状态。Session是搭配Cookie使用的(也可以不搭配)。对于一个登录需求来说,通过用户的SessionId(存储在Cookie中),服务器这边就可以判断用户是否处于一个登录状态。

2023-03-20 18:08:41 2553 17

原创 使用Maven实现第一个Servlet程序

第一个Servlet程序实现客户端发起请求,服务端返回hello world。使用Maven进行项目管理,引入依赖,打包程序,目录管理等一些操作。Maven是一个项目管理工具,能更好的帮助我们进行开发。它可以规范目录结构,管理依赖(使用第三方库),构建,打包项目,测试等等一些功能。Maven项目创建完成后,这些目录就会自动创建。main目录中放业务代码。java目录中放java代码。resources目录中放程序依赖文件。test目录下放测试代码。pom.xml文件是Maven项目总的配置文件。

2023-03-14 22:26:38 1003 17

原创 Tomcat安装及使用

Tomcat作为使用比较广泛的http服务器(用java写的)。同时也为我们提供了一组接口(servlet)用于设置这个服务器。当我们向服务器发送http请求,它就会返回我们想要的响应(用servlet接口构造出来)。可执行的程序或脚本,启动和关闭tomcat就在这里。Windows操作系统下启动使用startup.bat,关闭使用shutdown.bat。Linux操作系统下启动使用startup.sh,关闭使用shutdown.sh。Tomcat的配置信息,用xml格式表示服务器的配置信息。

2023-03-12 17:14:18 487 2

原创 HTTPS协议之SSL/TLS详解(下)

在网络世界中,存在着运营商劫持和一些黑客的攻击。如果明文传输数据是很危险的操作,因为我们不清楚中间传输过程中就被哪个服务器偷梁换柱了。现在网络中大多数使用的都是HTTPS协议。HTTP协议没有加密的概念,就意味着将会进行明文传输,数据很容易就被劫持了。HTTPS协议是HTTP协议的加强版本(S就是SSL或者TLS),引入了证书的概念,很大程度上保证了数据的安全性。

2023-03-10 18:19:28 1216 17

原创 HTTP协议详解(上)

HTTP协议属于应用层的协议,称为超文本传输协议,以文本方式组织数据进行交互。当我们通过浏览器输入一个URL,它就会发送一个HTTP请求到服务器,服务器就会返回相应的一些数据,经过浏览器的运行,渲染最终得到我们所看到的画面。

2023-03-08 16:22:55 5048 22

原创 博客系统前端页面设计

使用HTML,CSS实现的前端页面设计。使用了jQuery库集成了开源的Markdown编辑器。这将会做一个前后端分离的博客系统。具体实现了:博客列表页,博客详情页,博客登录页,博客编辑页。下面进行效果展示。

2023-03-05 10:41:12 253 16

原创 IP协议详解

IP协议作为网络层知名协议。当数据经过传输层使用TCP或者UDP对数据进行封装,然后当数据到达网络层,基于TCP或UDP数据包继续进行封装。逐级向下封装直到物理层,通过网卡把数据发送出去。

2023-02-16 17:28:50 713 4

原创 TCP核心机制详解(三)

滑动窗口本质上就是降低了确认应答(批量发送,批量等待),等待ack的时间。对于基本的确认应答情况来说,每次发一个数据,都要等待ack。而滑动窗口的本质就是不等待的批量发送一组数据,然后使用一份时间来等待一组多个ack。这里把不需要等待就直接发送的数据称为“窗口大小”。

2023-02-15 14:46:06 1320 4

原创 TCP核心机制之连接管理详解(三次握手,四次挥手)

这里将中间两次通信的过程合并为了一次。是因为当接收方接收到SYN,需要返回应答报文ACK和连接请求SYN。由于这两步都是在内核中完成的,发送的时机一致,因此就将它们合并为一个报文发送了。也就是三次握手。

2023-02-14 15:01:14 1004 20

原创 TCP报头详解及TCP十种核心机制(一)

可靠传输是TCP的最核心部分。TCP的可靠传输就是通过 确认应答 + 超时重传 来体现的。确认应答描述的是传输顺利的情况,超时重传描述的是传输出现问题的情况。两种相互配合,共同体现TCP的可靠性。

2023-02-13 14:23:15 1185 13

原创 UDP协议详解

UDP和TCP作为传输层非常知名的两个协议,那么将数据从应用层到传输层数据是怎样进行打包的?具体都会增加一些什么样的报头,下面内容详细介绍。

2023-02-10 16:30:36 2440 10

原创 TCP实现回显服务器及客户端

上篇文章介绍了TCP的特点。由于TCP的特点是有连接,面向字节流,可靠传输等,我们就可以想象到TCP的代码和UDP会有一定的差异。TCP和UDP具体使用哪种协议需要根据实际业务需求来选择。

2023-02-01 19:59:24 1084 16

原创 网络编程套接字之UDP实现回显服务器及客户端

通过套接字Socket就可以是实现客户端发送请求,服务起接收请求,处理完成后就可以响应给客户端。这样的一套流程就实现了数据在网络上的传输。

2023-01-31 15:46:14 959 12

原创 网络原理初识

互联网可谓是当今世界非常普及的一个名词了。所谓互联网就是通过组网设备把很多台计算机连接在一块。形成一个庞大的局域网LAN或者说广域网WAN(两者是相对的概念)。在这些设备中可以通过有线或者无线进行数据传输。

2023-01-30 14:38:48 569 12

原创 文件操作详解

我们平时写的局部变量,数组之类的数据都是存储在内存中。内存中的数据只要电脑断电,数据就会丢失。而对于硬盘里的数据,只要硬盘不坏,数据就会一直保存。文件操作就是直接操作硬盘里的数据。

2023-01-19 15:48:36 1505 8

原创 多线程进阶(二)Callable接口,JUC下常见类使用及线程安全集合类

这篇文章主要介绍Callable接口,JUC包下一些常见类的使用,还有我们之前使用集合类在多线程环境下的使用。 可以使用Callable接口创建带有返回值的线程任务(和Runable类似)。这样的线程具有返回值,由于线程调度的随机性,我们不确定线程什么时候被调度,具体线程任务什么时候执行完毕。基于这样的问题采取FutureTask类对Callable进行包装。FutureTask就可以等待Callable的执行结果。

2023-01-11 21:35:44 638 17

原创 多线程进阶(一)锁策略,CAS及Synchronized原理

通过这篇文章可以更加深入理解锁内部的一些实现原理,以及怎样描述一把锁。还有典型的CAS问题。当代码执行到需要加锁的时候,先设置个标志位(偏向锁)。然后继续执行加锁的这块代码,如果在这个期间没有出现锁竞争,那么当这块代码执行完就只需要清空标志位。如果在这个期间出现了锁竞争,立即就由偏向锁升级为轻量级锁,其他线程就只能阻塞等待了。

2023-01-09 21:21:59 843 13

原创 多线程初阶(四)定时器及线程池

这篇文章同上一篇文章都是介绍多线程下的一些案例。我们可以通过这些案例更加深入的了解多线程编程。所谓定时器就是指定一些任务,在后面的某一时刻执行。这里先使用标准库中的定时器。标准库中用Timer类来表示定时器。使用schedule方法来提交任务和指定任务执行时间。

2023-01-07 15:06:29 1428 15

原创 多线程初阶(三)单例模式及阻塞队列

这篇主要介绍一些多线程的使用案例,使用多线程的编程方式解决一些实际问题。在多线程的代码编写里,一定要注意线程安全问题,及其一些其他内存可见性等问题。

2023-01-04 22:09:12 556 19

原创 多线程初阶(二)

针对上篇文章讲到的线程安全问题,我们需要保证一些指令的原子性,在代码中可以通过加锁实现。针对于加锁,这个是有一定的开销的,还有可能导致死锁问题。因此在加锁的时候要慎重考虑。

2022-12-04 21:27:43 593 16

原创 多线程初阶(一)

上篇文章讲解了并发和并行的区别,目的就是将硬件资源得到充分利用。线程实际在操作系统内核中调度是抢占式调度,随机执行的。每个线程在cpu里执行时,都是以指令的方式去执行一个线程的,一个线程会包含多条指令。

2022-11-30 16:53:00 529 9

原创 进程和线程详解

当一个程序运行起来时,操作系统要为之分配一些资源,这样的运行起来的程序称之为一个进程。为了有效解决并发编程,多进程会对于系统的开销比较大,由之提出了多线程。进程包含线程,一个进程可有多个线程。多个线程是共享一块资源的,这样就可以大量减少系统的开销。

2022-11-23 16:02:54 3205 13

原创 MySQL数据库JDBC编程

JDBC支持两种方式的风格。DriverManager和DataSource。DriverManager会利用反射的机制,并且它不支持重复连接,它会直接关闭物理连接。DataSource内置了数据库连接池,其中可以创建一定数量的数据库连接,并且支持重复连接,它只是回收了对象。这里介绍DataSource方式的风格。

2022-11-20 21:51:49 747 9

空空如也

空空如也

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

TA关注的人

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