后端学习
文章平均质量分 87
后端是在后台工作的,控制着前端的内容,主要负责程序设计架构思想,管理数据库等。后端更多的是与数据库进行交互以处理相应的业务逻辑,需要考虑的是如何实现功能、数据的存取、平台的稳定性与性能等,涉及动态语言如PHP、ASP、JSP等。
Onism_DreamBoat
这个作者很懒,什么都没留下…
展开
-
Redis内存策略
不过在其database结构体中,有两个Dict,一个记录key-value,另一个记录key-TTL。当key的TTL到期之后,再次访问key是返回的值为nil(空),说明这个key就已经不存在了,其对应的内存也得到了释放,从而起到了内存回收的目的。**惰性删除:**并不是在TTL到期后就立刻删除key,而是在访问一个key的时候,检查该key的存活时间,如果已经过期才执行删除。在Redis缓存中,可以通过expire命令为redis的key设置TTL(过期时间,或存活时间)。sed),最少最近使用。原创 2023-08-26 10:18:01 · 325 阅读 · 0 评论 -
Redis通信协议
因此,客户端发送命令好服务端响应结果的格式需要有一个规范(否则便无法正常通信),这个规范便是通信协议。’ ,与单行字符串格式一样,只是字符串是异常信息,例如:“-Error message\r\n”。’ ,后面跟上数字格式的字符串,以CRLF结尾。例如:“:10\r\n”。例如返回"OK": “+OK\r\n”。’ ,后面跟上单行字符串,以CRLF( “但目前默认使用的依旧是RESP2协议,错误(Errors):首字节是 ‘单行字符串:首字节是 ‘多行字符串:首字节是 ‘在Redis中采用的是。原创 2023-08-26 10:17:25 · 858 阅读 · 0 评论 -
Redis网络模型
异步IO的整个过程是非阻塞的(并不代表不阻塞就是异步),用户进程调用完异步API后就可以做其他事情,内核等待数据就绪并直接拷贝到用户空间后才会提交信号,通知用户进程。而在单线程情况下,只能依次处理IO事件,如果正在处理的IO事件恰好未就绪(数据不可读或不可写),线程就会被阻塞,所有IO事件都必须等待,性能自然会很差。IO是与内核建立SIGIO的信号关联并设置回调,当内核有FD就绪时,会发出SIGIO信号通知用户,期间用户应用可以执行其它业务,无需阻塞等待。虽然是非阻塞,但性能并没有得到提高。原创 2023-07-26 10:48:35 · 253 阅读 · 0 评论 -
Redis数据结构
每次执行新增、查询、修改、删除操作时,都检查一下dict.rehashidx是否大于-1,如果是则将dict.ht[0].table[rehashidx]的entry链表rehash到dict.ht[i],并且将rehashidx++。在rehash过程中,新增操作,则直接写入ht[1],查询、修改、删除则会在dict.ht[0]和dict.ht[1]依次查找并执行。Dict中的HashTable就是数组结合单向链表的实现,当集合中元素较多时,必然导致哈希冲突增多,链表过长,则查询效率会大大降低。原创 2023-07-26 10:33:01 · 124 阅读 · 0 评论 -
Redis多级缓存
传统的缓存策略一般是请求到达Tomcat后,先查询Redis,如果未命中则查询数据库,会存在以下问题:1.请求需要经过Tomcat处理,Tomcat的性能成为整个系统的瓶颈。2.Redis缓存失效时,会对数据库产生冲击。而多级缓存就是充分利用请求处理的每个环节,分别添加缓存,减轻Tomcat压力,提升服务性能。原创 2023-07-26 10:30:46 · 974 阅读 · 0 评论 -
分布式缓存
分布式缓存日常测试和学习的过程中,我们都习惯用Redis单节点来进行操作。但是单节点Redis往往会暴露出一些问题。所以在企业开发的过程中,通常使用的是Redis集群来构建,从而来保证Redis的高可用性和健全性。原创 2023-07-03 10:40:44 · 184 阅读 · 0 评论 -
缓存存在的问题
导致缓存击穿的原因是,当用户使用不存在的请求访问缓存的时候,因为缓存中不存在数据,则会将请求打到数据库,然后数据库也没有相关请求的数据,则只能给用户端报错或返回空值。:缓存雪崩是指在同一时间段大量的缓存key同时失效或者Redis服务宕机,导致大量请求到达数据库,带来巨大压力。:缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样的缓存永远不会生效,这些请求都会打到数据库。)人使用大量这种无效的请求访问时,则会全部打到数据库,导致数据库宕机,或者拖慢其他正确请求的访问。下面对其进行一一学习。原创 2023-05-21 11:16:08 · 681 阅读 · 0 评论 -
缓存更新策略
先操作数据库,再删除缓存(下图为异常情况,但更新数据库操作一定比写入缓存速度慢,则此情况发生的概率很低)先删除缓存,再操作数据库(下图为异常情况,导致数据不一致,发生概率高)如何保证缓存与数据库的操作同时成功或失败(事务一致性)?先操作缓存还是先操作数据库?删除缓存还是更新缓存?原创 2023-05-21 11:15:53 · 514 阅读 · 0 评论 -
Redis常用命令
Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。与Java中的TreeSet类似,但底层的数据结构差别很大。有序集合的成员是唯一的,但分数(score)却可以重复,其实现是一个跳表(SkipList)加Hash表。如需知道某个指令的具体使用方式,可以点击该指令(蓝色字体)超链接跳转至教程说明文档进行学习。该格式并非固定,也可以根据自己的需求来删除或添加词条。原创 2023-05-12 20:27:07 · 2391 阅读 · 0 评论 -
初始Redis
认识NoSQL,就不得不提到最熟悉不过的SQL(Structured Query Language)了,听过它的名字就可以知道,SQL是一种关系型数据库,存储的是结构化并且具有一定关联的数据,具备一套完整的命令语法。所以在以后的开发中,可以根据使用场景的不同来选择使用关系型数据库(SQL)或非关系型数据库(NOSQL),以及选择不同数据库类型。,泛指非关系型的数据库,NoSQL数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系型特性。这二者的关联与区别,通过下面一张表格进行对比。原创 2023-05-12 20:21:18 · 504 阅读 · 0 评论 -
SpringBoot
Spring Boot是由Pivotal团队提供的一套开源框架,可以简化spring应用的创建及部署。它提供了丰富的Spring模块化支持,可以帮助开发者更轻松快捷地构建出企业级应用。Spring Boot通过自动配置功能,降低了复杂性,同时支持基于JVM的多种开源框架,可以缩短开发时间,使开发更加简单和高效。原创 2023-04-08 21:24:11 · 95 阅读 · 0 评论 -
SpringMVC全解
MVC是一种软件架构的思想,将软件按照模型、视图、控制器来划分 M:Model,模型层,指工程中的JavaBean,作用是处理数据 JavaBean分为两类: V:View,视图层,指工程中的html或jsp等页面,作用是与用户进行交互,展示数据 C:Controller,控制层,指工程中的servlet,作用是接收请求和响应浏览器 MVC的工作流程:用户通过视图层发送请求到服务器,在服务器中请求被Controller接收,Controller调用相应的Model层处理请求,处理完毕将结果返回原创 2023-04-02 22:26:08 · 351 阅读 · 0 评论 -
AOP-面向切面
AOP (Aspect Oriented Programming)是一种设计思想, 是软件设计领域中的面向切面编程,它是面向对象编程的一种补充和完善,它以通过预编译方式和运行期动态代理方式实现,在不修改源代码的情况下,给程序动态统一添加额外功能的一种技术。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。原创 2023-03-29 15:41:44 · 95 阅读 · 0 评论 -
IoC容器
loC是Inversion of Control的简写,译为"控制反转"。它不是一门技术,而是一种设计思想,是一个重要的面向对象编程法则,能够指导我们如何设计出松耦合、更优良的程序。Spring通过来管理所有Java对象的实例化和初始化,控制对象与对象之间的依赖关系。我们将由loC容器管理的Java对象称为Spring Bean,它与使用关键字new创建的Java对象没有任何区别。loC容器是Spring框架中最重要的之一, 它贯穿了Spring从诞生到成长的整个过程。控制反转是一种思想。控制反转的目的是为原创 2023-03-29 15:28:51 · 300 阅读 · 0 评论 -
Spring入门简介
2022年11月,Spring6正式版本发布,标志着一个新的时代到来Spring框架是一款 主流的JavaEE的轻量级开源框架,为了解决企业应用开发的复杂性而出现。Spring框架的用途不仅仅限于服务器端的开发,从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。Spring框架凭借其强大的功能和优良的性能,在企业开发中被广泛应用。JavaEE(Java基础知识,特别是反射Java注解XMLMaven基础如果还有不太熟悉的可以点击跳转查漏补缺。原创 2023-03-29 15:09:15 · 57 阅读 · 0 评论 -
Maven基础篇
Maven的本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM:Project Object Model 项目对象模型)原创 2023-03-29 14:53:08 · 58 阅读 · 0 评论 -
Java基础之注解
定义新的Annotation类型使用@interface关键字自定义注解自动继承了java.lang.annotation.Annotation接口Annotation 的成员变量在Annotation定义中以无参数方法的形式来声明。其方法名和返回值定义了该成员的名字和类型。我们称为配置参数。类型只能是八种基本数据类型、String类型、Class类型、enum类型、Annotation类型、以上所有类型的数组。可以在定义 Annotation的成员变量时为其指定初始值,指定成员变量的初始值可使用。原创 2023-03-03 20:08:12 · 78 阅读 · 0 评论 -
反射之动态代理
动态代理是指客户通过代理类来调用其它对象的方法,并且是在程序运行时根据需要动态创建目标类的代理对象。原创 2023-03-03 19:56:38 · 52 阅读 · 0 评论 -
反射机制的概述
Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。原创 2023-03-03 19:52:04 · 74 阅读 · 0 评论 -
初识Tomcat
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。原创 2023-01-28 17:06:30 · 79 阅读 · 0 评论 -
初识jQuery
jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(框架)于2006年1月由John Resig发布。jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。jQuery的核心特性可以总结为:具有独特的链式语法和短小清晰的多功能接口;具有高效灵活的CSS原创 2023-01-26 21:08:15 · 87 阅读 · 0 评论 -
初识JavaScript
JavaScript(简称“JS”) 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。虽然它是作为开发Web页面的脚本语言而出名,但是它也被用到了很多非浏览器环境中,JavaScript 基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式、声明式、函数式编程范式。原创 2023-01-15 22:27:43 · 63 阅读 · 0 评论 -
初始HTML
Hyper Text Markup Language(超文本标记语言)简称:HTMLHTML通过标签来标记要显示的网页的各个部分。网页文件本身是一种文本文件,通过在文本文件中添加标记符,可以告诉浏览器如何显示其中的内容(如:文学如何处理,画面如何安排,图片如何显示等)原创 2023-01-15 22:18:43 · 65 阅读 · 0 评论 -
初识CSS
CSS是层叠式表单。是用于(增强)控制网页样式并允许将样式信息与网页内容分离的一种标记性语言。原创 2023-01-15 22:12:40 · 49 阅读 · 0 评论 -
手写实现数据库连接池
数据库连接是一种昂贵的资源,创建数据库连接是一个耗时的操作,在多线程并发条件下尤为突出,对数据库连接的高效管理能影响到程序的性能指标,数据库连接池正是针对这个问题提出来的。原创 2023-01-11 12:07:32 · 306 阅读 · 0 评论