- 博客(69)
- 问答 (1)
- 收藏
- 关注
原创 MySQL(2)索引篇
由于数据库的索引是保存到磁盘上的,因此当我们通过索引查找某行数据的时候,就需要先从磁盘读取索引到内存,再通过索引从磁盘中找到某行数据,然后读入到内存,也就是说查询过程中会发生多次磁盘 I/O,而磁盘 I/O 次数越多,所消耗的时间也就越大。所谓的存储引擎,说白了就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法,存储引擎就是一个方法库。MySQL的数据是持久化的,即数据(索引+记录)是保存到磁盘上的,因为这样即使设备断电了,数据也不会丢失。
2025-02-20 17:04:35
451
原创 MySQL(1)基础篇
MySQL 存储的行为是由存储引擎实现的,MySQL支持多种存储引擎,不同的存储引擎保存文件的方式自然也不同。数据库表中的记录都是按行(row)进行存放的,每行记录根据不同的行格式,有不同的存储结构。,也就是说,当需要读一条记录的时候,并不是将这个行记录从磁盘读出来,而是以页为单位,将其整体读入内存。如果我们输入的 SQL语句语法不对,就会在解析器这个阶段报错。,意味着数据库每次读写都是以 16KB 为单位的,一次最少从磁盘中读取 16K 的内容到内存中,一次最少把内存中的 16K 内容刷新到磁盘中。
2025-02-19 21:44:35
850
原创 计算机网络(4)TCP断开
可能有人觉得网线都被拔掉了,那说明物理层被断开了,那在上层的传输层理应也会断开,所以原本的 TCP 连接就不会存在的了。就好像,我们拨打有线电话的时候,如果某一方的电话线被拔了,那么本次通话就彻底断了。实际上,TCP 连接在 Linux 内核中是一个名为 struct socket 的结构体,该结构体的内容包含 TCP 连接的状态等信息。上面这个逻辑问题在于,错误的认为拔掉网线这个动作会影响传输层,事实上并不会影响。4、拔掉网线后, 原本的 TCP 连接还存在吗?,断开连接后主机中的「资源」将被释放。
2025-02-17 21:06:34
339
原创 计算机网络(3)TCP格式/连接
在传输层中,需要通过端口进行寻址,来识别同一计算机中同时通信的不同应用程序。首先,传输层的「端口号」的作用,是为了区分同一个主机上不同应用程序的数据包。传输层有两个传输协议分别是 TCP 和 UDP,在内核中是两个完全独立的软件模块,所以互不影响。TCP四元组:源地址、源端口、目的地址、目的端口。3、有一个 IP 的服务端监听了一个端口,它的 TCP 的最大连接数是多少?8、为什么每次建立 TCP 连接时,初始化的序列号都要求不一样呢?1、TCP三大特点:面向连接、可靠、基于字节流。7、为什么是三次握手?
2025-02-17 15:24:19
760
原创 计算机网络(2)HTTP
目录1 HTTP状态码2 HTTP常见字段3 GET和POST4 HTTP缓存5 HTTP特性6 HTTP与HTTPS7 HTTP/2、HTTP/38 HTTP和RPC9 HTTP和WebSocketHTTP常见面试题3.1 HTTP 常见面试题 | 小林codingHTTP 是超文本传输协议,也就是HyperText Transfer Protocol。2.1请求行字段2.2响应头字段RFC即Request for Comments对于一些具有重复性的 HTTP 请求,比如每次请求得到的响应数据都一样的,
2025-02-14 14:28:08
899
1
原创 计算机网络(1)基础篇
这些新增的头部和尾部,都有各自的作用,也都是按照特定的协议格式填充,这每一层都增加了各自的协议头,那自然网络包的大小就增大了,但物理链路并不能传输任意大小的数据包,所以在以太网中,规定了最大传输单元(MTU)是 1500 字节,也就是规定了单次传输的最大IP 包大小。当网络包超过 MTU 的大小,就会在网络层分片,以确保分片后的 IP 包不会超过 MTU 大小,如果 MTU越小,需要的分包就越多,那么网络吞吐能力就越差,相反的,如果 MTU 越大,需要的分包就越少,那么网络吞吐能力就越好。
2025-02-13 15:00:02
1076
原创 《小型支付商城系统》项目(一)DDD架构入门
越来越多的内容被填充到工程中,这个时候你细心的查看架构,就会发现原本的 MVC 结构其实已经变的非常混乱了。一个 Service 中为了实现自己的功能,要引入一堆的东西,这些原子的功能与 Service 自身的服务耦合在一块。在领域驱动设计(Domain-Driven Design, DDD)中,充血模型(Rich Domain Model) 是一种面向对象设计的思想,强调将数据和行为封装到同一个领域对象中,使得领域对象不仅仅是数据的载体,更是业务逻辑的核心。架构的目的:让不同的职责分配到不同的区域内。
2025-01-02 16:01:00
1377
1
原创 黑马点评——基于Redis
在实际开发中,可以结合空值缓存、布隆过滤器和限流防刷三种方法来防止缓存穿透。,导致大量请求直接打到数据库,瞬间使数据库承受巨大压力,甚至可能导致系统崩溃。,导致请求每次都直接打到数据库上,造成数据库负载过大,甚至可能导致系统崩溃。是指在使用缓存(例如 Redis、Memcached)时,缓存作用:降低后端负载;提高读写的效率,降低响应时间。缓存就是数据交换的缓冲区,是存储数据的临时地方,Cookie:存储在客户端浏览器中。Session:存储在服务器端。
2024-12-25 09:29:01
879
原创 精通Redis
NoSQL与SQL的区别就在于SQL是结构化的、关联的、有通用SQL查询语句、满足ACID的;结构化的意思是SQL关系型数据库每张表格都有固定的结构(建表语句),一旦建立不建议修改,结构化Structured的S就是SQL的S;Redis诞生于2009年全称是Remote Dictionary Server,远程词典服务器,是一个基于内存的键值型NoSQL数据库。SpringData是Spring中数据操作的模块,包含对各种数据库的集成,其中对Redis的集成模块就叫做SpringDataRedis。
2024-12-20 16:06:55
866
原创 SpringCloud微服务开发(六)ElasticSearch/RESTful风格
对于一个电商项目来说,商品的搜索肯定是访问频率最高的页面之一。目前搜索功能是基于数据库的模糊搜索来实现的,底层原理是B+树索引,存在很多问题。,查询效率较低。由于数据库模糊查询不走索引,在数据量较大的时候,查询性能很差。需要注意的是,数据库模糊查询随着表数据量的增多,查询性能的下降会非常明显,而搜索引擎的性能则不会随着数据增多而下降太多。,功能单一。数据库的模糊搜索功能单一,匹配条件非常苛刻,必须恰好包含用户搜索的关键字。而在搜索引擎中,用户输入出现个别错字,或者用拼音搜索、同义词搜索都能正确匹配到数据。
2024-12-19 15:50:06
1352
原创 SpringCloud微服务开发(五)MQ——异步通讯组件
首先要知道异步通讯和同步通讯,两种方式各有优劣,打电话可以立即得到响应,但是你却不能跟多个人同时通话。发微信可以同时与多个人收发微信,但是往往响应会有延迟。所以,如果我们的业务需要实时得到服务提供方的响应,则应该选择同步通讯(同步调用)。而如果我们追求更高的效率,并且不需要实时响应,则应该选择异步通讯(异步调用)。同步调用的方式我们已经学过了,之前的OpenFeign调用就是,那么现在要学习的就是异步调用及其组件MQ,MessageQuery。
2024-12-18 16:49:00
376
原创 SpringCloud微服务开发(四)服务保护
级联失败(雪崩问题):在后端开发中当系统中的一个组件或服务出现故障时,导致大量请求或服务连锁反应地失败,从而引发全系统的崩溃或性能大幅下降。这种现象像雪崩一样,逐渐扩大并迅速影响整个系统的可用性和稳定性。这些方案或多或少都会导致服务的体验上略有下降,比如请求限流,降低了并发上限;线程隔离,降低了可用资源数量;服务熔断,降低了服务的完整度,部分服务变的不可用或弱可用。因此这些方案都属于服务的方案。但通过这些方案,服务的健壮性得到了提升。
2024-12-17 16:12:20
748
原创 SpringCloud微服务开发(三)网关
顾明思议,网关就是网络的关口。数据在网络间传输,从一个网络传输到另一网络时就需要经过网关来做数据的路由和转发以及数据安全的校验。更通俗的来讲,网关就像是以前园区传达室的大爷。现在,微服务网关就起到同样的作用。请求路由 (Routing):网关的核心职责是将客户端请求转发到后端的服务登录校验:集成 OAuth、JWT、API Key 等认证机制,在请求转发前验证用户身份和权限负载均衡:将流量均匀分配到后端服务节点,提高系统可靠性和性能那么,该如何实现一个网关过滤器呢?
2024-12-12 17:37:25
1048
原创 SpringCloud微服务开发(二)Nacos+OpenFeign
利用RestTemplate实现了服务的远程调用的方式太麻烦了,而且这种调用方式,与原本的本地方法调用差异太大,编程时的体验也不统一,一会儿远程调用,一会儿本地调用。服务治理包括服务注册和服务发现,导入的依赖是相同的,这个依赖中同时包含了服务注册和发现的功能。因为任何一个微服务都可以调用别人,也可以被别人调用,即可以是调用者,也可以是提供者。服务调用者去订阅服务时,由于有多个实例,而真正发起调用时只需要知道一个实例的地址,因此,服务调用者必须利用负载均衡的算法,从多个实例中挑选一个去访问。
2024-12-11 16:40:45
1002
原创 SpringCloud微服务开发(一)MP+SpringCloud
微服务是一种软件架构风格(还有接口风格restful),它是以专注于单一职责的很多小型项目为基础,组合出复杂的大型应用,比如业务有UserService、adminService拆分在不同的项目里。
2024-12-10 10:43:39
1152
原创 技术栈6:Docker入门 & Linux入门指令
想象一个场景,公司的开发和运维是两个环境,所以对于开发人员电脑上运行得很好的程序可能到了运维人员手中就运行不了了,要重新配置环境和端口;配置环境是十分费时费力的,所以如果能发布一个项目,jar包+(Redis、MySQL、jdk...)一起上线就会方便很多,也就是项目带着环境安装打包,以上问题的解决方案就是Docker!Docker的思想来自于集装箱,Docker的核心思想就是隔离,不同开发环境(集装箱)相互隔离java——打包成apk——应用商店——手机下载apk——安装使用。
2024-12-04 21:45:58
946
原创 技术栈5:Dubbo+Zookeeper
分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。分布式系统的出现是为了用廉价的、普通的机器完成单个计算机无法完成的计算、存储任务。其目的是利用更多的机器,处理更多的数据。分布式系统(distributed system)是建立在网络之上的软件系统。当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时,用于提高业务复用及整合的分布式服务框架(RPC)是关键。
2024-12-03 21:59:57
936
原创 技术栈4:SpringSecurity
Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。由于它是Spring生态系统中的一员,因此它伴随着整个Spring生态系统不断修正、升级,在spring boot项目中加入spring security更是十分简单,使用Spring Security 减少了为企业系统安全控制编写大量重复代码的工作对于安全控制,我们仅需要引入spring-boot-starter-security模块,进行少量的配置,即可实。
2024-12-03 21:10:17
975
原创 微服务springboot详细解析(一)
Spring是一个开源框架,2003 年兴起的一个轻量级的Java 开发框架目的:Spring是为了解决企业级应用开发的复杂性而创建的,简化开发那么Spring是如何简化Java开发的?基于POJO的轻量级和最小侵入性编程通过IOC、DI和面向接口实现松耦合基于切面(AOP)和惯例进行声明式编程通过切面和模版减少样式代码学过javaweb的就知道,开发一个web应用,从最初开始接触Servlet结合Tomcat,在前端跑出一个Hello Wolrld程序,是要经历特别多的步骤;
2024-12-03 13:47:22
1187
原创 Java八股(一)
目录1.JVM、JRE、JDK之间的关系2.static关键字作用(通俗版)3.面向对象、面向过程4.私有方法5.Java代码执行与编译6.IOC1.JVM、JRE、JDK之间的关系Java一次编写到处运行,可移植性好,保证这一点的就是iava虚拟机JVMJRE是运行环境,不能创建新程序。他是包括JVM的JDK是功能最齐全的,包括编译器和各种工具,我们写代码就需要这个了2.static关键字作用(通俗版)这就要提到new对象,只有new对象之后,数据存
2024-11-26 21:03:58
973
原创 JavaWeb后端开发知识储备2
在spring boot项目中,使用缓存技术只需在项目中导入相关缓存技术的依赖包,并在启动类上使用@EnableCaching开启缓存支持即可。Spring Cache 是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。简单来说,HttpClient可以通过编码的方式在Java中发送Http请求。微信小程序的开发本质上是前端开发,对于后端程序员来说了解即可。
2024-11-22 15:46:13
1046
原创 (十八)JavaWeb后端开发案例——会话/yml/过滤器/拦截器
PageHelper分页插件P142但是目前的项目在未登录情况下,也可以直接访问部门管理、员工管理等功能,所以就需要登录校验,如果没登录则直接跳转到登录界面,我们知道http协议是无状态的,也就是本次操作不会携带上一次的操作信心,两次请求之间是独立的,所以无法判断是否登录了,所以为了实现登录校验的功能,就需要一个登录标记。
2024-11-20 15:59:50
788
原创 技术栈3:Redis数据库入门
Redis是一个基于内存的 key-value 结构数据库,与MySQL的区别在于前者是将数据存在内存中的结构型数据库(键值对),后者存在电脑磁盘文件中的关系型数据库(二维表)keyvalueid1nametianmingpassword123456基于内存存储,读写性能高适合存储访问量较大的热点数据(热点商品秒杀、资讯、新闻)企业应用广泛启动服务:在redis文件夹下进入cmd输入:redis-server.exe redis.windows.conf(tab键补全)
2024-11-19 15:49:46
710
原创 (十七)JavaWeb后端开发——文件上传(阿里云OSS)
文件上传,是指将本地图片、视频、音频等文件上传到服务器,供其他用户浏览或下载的过程文件上传在项目中应用非常广泛,我们经常发微博、发微信朋友圈都用到了文件上传功能文件上传涉及到前端和服务端两个方面。
2024-11-15 16:21:05
443
原创 JavaWeb后端开发知识储备1
具体来说,MVC(Model-View-Controller)是一种常见的软件架构模式,用于将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller)。VO 即 Value Object-——值对象,VO 通常在表示层(如前端)使用,表示一个具体的业务场景中的数据结构,可能是多个领域对象或实体对象的组合。PO 即 Persistent Object——持久化对象,PO 是与数据库表结构一一对应的 Java 对象,用于表示数据库中的一行记录。
2024-11-14 16:00:40
1284
原创 (十六)JavaWeb后端开发——Spring框架常见注解
它可以用于类级别和方法级别,标识一个方法或类与特定的 HTTP 请求(如 GET、POST、PUT、DELETE)映射关系,从而让 Spring 框架能够将 HTTP 请求路由到对应的处理方法。是 Spring 框架中的一个注解,主要用于定义控制器类(Controller),是 Spring MVC 模式的核心组件之一。是 Spring 框架中的一个注解,主要用于将 HTTP 请求的请求体(request body)映射为方法的参数。的快捷方式,适用于常见的 HTTP 请求方法,减少了代码的冗余。
2024-11-13 13:11:22
1197
原创 JavaWeb后端开发案例——苍穹外卖
2.前后端联调时,前端登录没反应,application.yml中默认用的8080端口被占用,就改用了8081端口,修改的时候需要改两个地方,一个是application.yml,一个是nginx.conf。明明前端请求地址和后端的接口地址不匹配,为什么能请求响应呢?答案是因为使用了nginx反向代理,所以说前端发送的动态请求是给nginx再由nginx转发到后端服务器的。1.前端界面打不开,把nginx.conf文件中localhost:80改成81即可。
2024-11-12 21:07:44
557
原创 技术栈2:Git分布式版本控制工具
Git是一个分布式版本控制系统,用于跟踪代码、文档等文件的更改。它可以记录文件的每次修改,方便开发者管理项目版本,并且可以在团队合作中协调多人开发。分布式Git是分布式的,每个开发者的本地都拥有完整的项目历史记录和版本库,不依赖中央服务器。这使得在本地进行操作(如查看历史、切换版本等)非常快,而且允许在没有网络的情况下工作。版本管理Git会记录文件的每次更改,生成一个“快照”并赋予唯一的哈希值(commit ID),通过这些快照,可以随时查看、恢复或比较项目在不同时间点的状态。分支与合并。
2024-11-12 14:05:39
916
原创 技术栈1:nginx基础入门
Nginx (engine x)是一个,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、网易、腾讯、淘宝等Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率。
2024-11-11 21:05:34
1195
原创 (十五)JavaWeb后端开发——异常处理/AOP面向切面编程
面向切面编程、面向方面编程),其实就是面向特定方法编程,是一种编程思想,作用:在不惊动原始设计的基础(不改源代码)上为其进行功能增强(与代理类似)Spring思想:无入侵式/无侵入式编程AOP的典型应用场景还有:记录操作日志(谁在什么时候操作了代码)、权限控制、事务管理AOP的优势:代码无侵入、减少重复代码、提高开发效率、维护方便。
2024-11-08 16:11:33
871
原创 (十四)JavaWeb后端开发——MyBatis
MyBatis是一款优秀的框架,用于简化JDBC的开发,和数据库打交道。它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作比如说如果想要查询所有用户的数据,普通SQL语句是select * from users;而MyBatis就是通过java语句操作数据库查询。
2024-11-06 16:16:57
1069
原创 (十三)JavaWeb后端开发——MySQL2
但是目前上述的两张表,在数据库层面,并未建立关联,所以是无法保证数据的一致性和完整性,比如说我在部门表中把“教研部”删除,员工表中教研部的员工依然存在,这显然是不合理的,所以就需要“在上面的代码中,删除部门成功了,但是删除该部门下的员工失败了,就是因为这两个操作分属两个事务,解决办法是把这两个操作控制在一个事务内。例:先査询入职时间在'2015-01-01'(包含)以前的员工,并对结果根据职位(job)分组 ,获取员工数量大于等于2的职位。首先需要知道一个知识点:聚合函数,就是对某一列的数据所作的操作。
2024-11-05 21:31:30
1341
1
原创 (十二)JavaWeb后端开发——MySQL数据库
数据库:DataBase(DB),是存储和管理数据的仓库数据库管理系统:DataBase ManagementSystem(DBMS),操纵和管理数据库的大型软件SQL:Strutured Query Language,操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准数据库设计:MySOL概述、数据库设计DDL、多表设计数据库操作:数据库操作DML、数据库操作DQL、事务、多表查询数据库优化:索引。
2024-11-04 21:52:39
749
原创 (十一)JavaWeb后端开发——分层解耦
比如说在上面的代码中,修改service层中EmpServiceB的名称,controller层中的new EmpServiceB()也得跟着修改,这就是两层之间耦合了,那么怎么解除耦合呢?下面代码存在问题,就是把不同功能的代码写在一个类里面,但是根据开发过程中的“单一职责原则”,一个类最好只负责一个功能,这样可以使接口可读性更高,复杂度更低,拓展性更好,也更利于后期维护。:DependencyInjection,简称DI,容器为应用程序提供运行时,所依赖的资源,称之为依赖注入。
2024-11-04 10:12:09
1110
1
原创 (十)JavaWeb后端开发——SpringBoot
Spring公司提供了若干个子项目,每个项目用于完成特定的功能,比如SpringBoot、SpringData、SpringCloud,其中最基础的就是Spring Framework。
2024-11-03 19:07:28
813
原创 (九)JavaWeb后端开发——Servlet/JSP
所以说编程人员需要去自定义一个类实现,Servlet接口,并重写其中的方法浏览器请求服务器的信息的时候,有静态资源和动态资源,动态资源在不同用户访问时的表现不同,其中的逻辑由Java代码规定,所以需要一个Java类,而这个Jave类依赖于服务器(tomcat)才能运行,那么tomcat如何识别这个Java类呢?一定是需要一些规则,也就是接口(在Java中规则就是接口),所以Servlet接口应运而生。
2024-11-01 16:56:12
853
原创 (七)JavaWeb后端开发——Maven
maven是一款管理和构建java项目的工具2.统一项目结构:由于eclipse、IDEA这些IDE都有着自己的项目结构,不好管理,使用Maven后就有统一的项目结构3.项目构建:Maven有compile(编译)和package(打包)指令,然后生成之后放在target目录下(存放了编译之后的字节码class文件)如下图所示,jar包就是项目打包后的文件,然后可以在不同的系统上运作。
2024-10-31 16:32:45
673
原创 (五)Web前端开发进阶2——AJAX
AJAX 是异步的 JavaScript和XML(Asynchronous JavaScript And XML)。简单点说,就是使用XMLHttpRequest 对象与服务器通信。它可以使用 JSON,XML,HTML 和 text 文本等格式发送和接收数据。AJAX最吸引人的就是它的“异步”特性,也就是说它可以在不重新刷新页面的情况下与服务器通信,交换数据,或更新页面。简单来说,AJAX 是浏览器与服务器进行数据通信的技术。
2024-10-30 16:06:51
1319
原创 (四)JavaWeb开发——Vue
框架:是一个半成品软件,是一套可重用的、通用的、软件基础代码模型。基于框架进行开发,更加快捷、更加高效Vue 是一套前端框架,免除原生JavaScript中的DOM操作,简化书写。基于MVVM(Model-View-ViewModel)思想,实现数据的双向绑定,将编程的关注点放在数据上,View是视图层,Model是模型,最新的Vue是Vue3,但是目前大多数企业开发用的还是Vue2Vue的入门程序-- 新建html页面,引入vue.js文件 -->
2024-10-29 16:34:48
305
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人