自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 台式机和笔记本对比?

2. 处理性能:台式电脑的处理器、显卡和内存通常比同价位的笔记本电脑更强大。因为台式电脑的主板比笔记本更大,所以可以容纳更多的硬件组件,并且配有更好的散热系统。1. 大小和移动性:台式电脑通常比笔记本电脑更大、更笨重、更不易携带,它们需要更大的桌面空间和固定的电源连接,不方便携带,而笔记本电脑则相对便携,可以随身携带并使用电池。3. 价格和可升级性:通常来说,同样价位的台式电脑通常比同等水平的笔记本电脑更强大。另外,用户可以自行升级台式电脑的硬件,而笔记本电脑基本上只能更换硬盘和内存等部件。

2023-05-18 14:06:41 738

原创 品牌机和组装机对比?

如果是游戏发烧友,或者是运行比较大型的软件的人群,建议选择组装机,找一家电脑店把你的需求说给工作人员,让工作人员给你搭配,一般来说只要硬件搭配合理,组装机的稳定也是非常高的,而且有电脑店给你承担售后服务,也不必担心。、品牌电脑的可扩展性不如组装电脑,一般的品牌都是订制好的,比如机箱,主板都是自己设计的,功能相对来说已经定死了,如果想加入扩展卡,或者其他一些主机没有的接口,就必须要找售后。组装机是根据自己的需求,按需搭配的,兼容性就会差些,有些时候电脑新手搭配的电脑还会出现硬件不合的问题。

2023-05-18 14:06:41 425

原创 台式机的主要配件有哪些,各有什么功能?

声卡是组成多媒体电脑必不可少的一个硬件设备,其作用是当发出播放命令后,声卡将电脑中的声音数字信号转换成模拟信号送到音箱上发出声音。和芯片组成,特点是体积小,速度快,有电可存,无电清空,即电脑在开机状态时内存中可存储数据,关机后将自动清空其中的所有数据。硬盘属于外部存储器,由金属磁片制成,而磁片有记功能,所以储到磁片上的数据,不论在开机,还是并机,都不会丢失。直流电,其性能的好坏,直接影响到其他设备工作的稳定性,进而会影响整机的稳定性。即中央处理器,其功能是执行算,逻辑运算,数据处理,传四舍五入,输入。

2023-05-18 14:06:10 531

原创 读写分离的设计模式?

因此读操作加锁和写操作总加锁的逻辑是存在区别的,设计一个读写分离的锁时很有必要的。// 存在正在运行的写线程 || 写优先级高,存在正在等待写锁的写线程。// 存在正在运行的写线程/读线程。

2023-05-18 14:05:25 91

原创 什么是常量池?其实现原理是什么?

文件中常量池的内容才能进入方法区运行时常量池,运行期间也可能将新的常量放入池中,这种特性被开发人员利用比较多的就是。常量池是为了避免频繁的创建和销毁对象而影响系统性能,其实现了对象的共享。)节省内存空间:常量池中所有相同的字符串常量被合并,只占用一个空间。例如字符串常量池,在编译阶段就把所有的字符串文字放到一个常量池中。中,我们常说的常量池,就是指方法区中的运行时常量池。语言层面常量的概念,如文本字符串,声明为。文件中的常量池载入到内存中,并保存在。文件中的常量池不仅仅包含字符串。

2023-05-18 14:05:01 151

原创 什么是参数一致原则?

其中ProceedingJoinPoint,JoinPoint是AOP特殊类型(内置对象),不需要遵循参数一致原则。除了增强方法中的JointPoint和ProceedingJoinPoint。注意:在软接口类中定义注解参数,区分redis中不同的数据集合。注解类型参数使用@annotation来声明参数一致。增强方法的参数数量、类型、位置,需要和切点保持一致。普通类型参数使用args来声明参数一致。

2023-05-18 14:03:50 81

原创 自定义注解的实现方式?

注解(Annotation)也叫元数据,用于对代码进行说明,可以对包、类、接口、字段、方法参数、局部变量等进行注解。我们在实际开发的时候,会使用到很多的注解,特别是使用Spring或者Spring家族时,会大量的使用注解,那我们有没有想过Spring的这些注解都是怎么实现的呢?元注解,元注解是用于定义注解的注解,包括@Retention(标明注解被保留的阶段)、@Target(标明注解使用的范围)、@Inherited(标明注解可继承)、@Documented(标明是否生成javadoc文档)。

2023-05-18 14:03:43 714

原创 增强功能的切入方式有哪些?

3.Around 环绕增强:环绕增强是在调用业务方法之前和调用业务方法之后都可以执行响应的增强语法,也就是说:一个前置增强和一个后置增强相当于是组成了一个环绕增强;不同的是,在前置增强和后置增强中,在AOP中前置增强和后置增强只能拿到JoinPoint类,而在环绕增强中,可以拿到ProceedingJoinPoint类;2、After 后置增强:程序在运行时,先调用了前置增强,然后执行业务方法,后面再执行了后置增强。

2023-05-18 14:03:20 29

原创 AOP增强方法有哪些 ?

前面的5种增强方式相信很多人都是已经应用过的,使用代码进行演示,新建一个SpringBoot工程方便演示。4、AfterReturning 最终增强。6、DeclareParents 引入增强。5、AfterThrowing 异常增强。创建服务类CustomerService。1、Before 前置增强。3、Around 环绕增强。2、After 后置增强。

2023-05-18 14:01:30 46

原创 SpringBoot集成AOP过程?

面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术,AOP是OOP的延续。简单的说它就是把我们程序重复的代码抽取出来,在需要执行的时候,使用动态代理技术,在不修改源码的基础上,对我们已有的方法进行增强。在spring 中,2.0默认采用CGLIB代理,如果需要基于接口的动态代理(JDK基于接口的动态代理) ,需要设置spring.aop.proxy-target-class属性为false。通知的类型:前置通知,后置通知,异常通知,最终通知,环绕通知。当前方法是一个异常通知。

2023-05-18 14:00:39 37

原创 SpringBoot“约定大于配置”的设计理念?

总的来说,上面两条都遵循了推荐默认配置的思想。当存在特殊需求的时候,自定义配置即可。这样可以大大的减少配置工作,这就是所谓的。),也称作按约定编程,是一种软件设计范式,旨在减少软件开发人员需做决定的数量,获得简单的好处,而又不失灵活性。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。开发人员仅需规定应用中不符合约定的部分在没有规定配置的地方,采用默认配置,以力求最简配置为核心思想。采用约定大约配置的方式,大量的减少了配置文件的使用。默认的配置文件必须是,也只能是。

2023-05-17 17:31:52 160

原创 数据库的ACID原则是什么?

事务是一个一致和可靠计算的基本单元,由作为原子单元执行的一系列数据库操作组成。一个事务的所有系列操作步骤被看成一个动作,所有的步骤要么全部完成,要么一个也不会完成。如果在事务过程中发生错误,则会回滚到事务开始前的状态,将要被改变的数据库记录不会被改变。原因是当数据库保存强一致性时,很难保证系统具有横向扩展和可用性的优势,因此针对分布式数据存储管理只提供了弱一致性的保障,即。一致性是指在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏,即数据库事务不能破坏关系数据的完整性及业务逻辑上的一致性。

2023-05-17 17:30:09 690

原创 数据库的常用锁机制是什么?

虽说数据库会自动加锁,但是如果设计数据库的时候可以考虑到这些,相信可以减少脏数据的产生。1 前言数据库大并发操作要考虑死锁和锁的性能问题。看到网上大多语焉不详(尤其更新锁),所以这里做个简明解释,为下面描述方便,这里用T1代表一个数据库执行请求,T2代表另一个请求,也可以理解为T1为一个线程,T2 为另一个线程。T3,T4以此类推。下面以SQL Server(2005)为例。2. 锁的种类 共享锁(Shared lock)。3. 何时加锁?如何加锁,何时加锁,加什么锁,你可以通过hint手

2023-05-17 17:29:11 50

原创 传播七种行为

支持当前事务,如果当前没有事务,就新建一个事务。以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。支持当前事务,如果当前没有事务,就以非事务方式执行。以非事务方式执行,如果当前存在事务,则抛出异常。支持当前事务,如果当前没有事务,就抛出异常。新建事务,如果当前存在事务,把当前事务挂起。指定当前的方法必须在事务的环境下执行;指定当前的方法必须在事务的环境下执行;如果当前运行的方法,已经存在事务,如果当前有事物,我就用当前事物。事务的隔离级别,数据库的默认。事务的超时时间不限制。就会加入当前的事务;

2023-05-17 17:27:58 35

原创 什么是事务?代码如何实现?

例如我们在使用JDBC操作数据库时,在提交事务方法后,提示用户事务操作完成,当我们程序执行完成直到看到提示后,就可以认定事务以及正确提交,即使这时候数据库出现了问题,也必须要将我们的事务完全执行完成,否则就会造成我们看到提示事务处理完毕,但是数据库因为故障而没有执行事务的重大错误。隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。关于事务的隔离性数据库提供了多种隔离级别,稍后会介绍到。当执行父类的方法时候应用事务。

2023-05-17 17:26:27 89

原创 RedisTemplate的API方法解析?

不过使用此策略,编程将会有些难度,而且效率最低;如果你的数据需要被第三方工具解析,那么数据应该使用。是目前最常用的序列化策略。类型,因此此策略封装起来稍微复杂。工具在序列化和反序列化时,需要明确指定。之间的转换能力,目前可用的三方支持包括。连接池自动管理,提供了一个高度封装的。是最轻量级和高效的策略。,然后进行一系列的操作而无须。将事务操作封装,由容器控制。为字符串的场景,根据指定的。,提供了多种可选择策略。对数据的字节序列编码成。之间的转换能力,可以将。对象的存取场景,使用。进行序列化操作,最终。

2023-05-17 17:24:06 46

原创 SpringBoot集成Redis过程?

开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。协议的、支持网络、可基于内存、分布式、可选择持久性的键值对存储数据库,并提供多语言的。位,下载完成后,解压后,文件夹下面包含许多子文件,打开。,其值可以是字符串、哈希、列表、集合以及有序集合。操作都是原子操作,这确保了两个客户端并发访问,订阅),应用程序中的任何短期数据。支持分布式,理论上可以无限扩展。存储系统,是跨平台的非。基于内存运行,性能高效。

2023-05-17 17:23:34 34

原创 什么是Redis持久化技术?

其中RDB持久化是在指定的时间间隔内生成数据集的时间点快照。而AOF持久化记录的是服务器执行的所有写操作命令,在服务器启动的时候,通过重新执行这些命令来还原数据集的。AOF文件中的命令全部以Redis协议的格式来保存,新的命令会被追加到文件的末尾。Redis还可以在后台对AOF文件进行重写,使得AOF文件的体积不会超出保存数据集状态所需要的实际大小。对持久化的支持主要是通过RDB和AOF文件来进行持久化的。

2023-05-17 17:20:25 30

原创 对比关系型和非关系型数据库?

在了解雪崩溃之前,我们先了解什么是缓存雪崩现象,假设A系统每秒需要处理5000个请求,但数据库每秒只能处理4000个请求,某一天,缓存机器出现了宕机,挂了,这时候所有的请求一下子全部落在数据库上,数据库肯定扛不住,报警挂掉了,这时候如果没有采取缓存设施,数据库又急着用,重新重启数据库,刚重启完成(有可能没启动完),请求又来,数据库立马挂掉。缓存穿透是指缓存和数据库中都没有的数据,用户(黑客)不断发起请求,导致请求直接查询数据库,这种恶意行为攻击场景的会直接导致数据库挂掉,数据流程如下图所示。

2023-05-17 17:19:47 59

原创 对比MySQL和Oracle数据库

数据库的应用场景:大都集中于一些大型企业,一些传统行业的数据化业务中,比如:银行、金融这一类,对于可用性,安全性,健壮性,实时性要求极高的业务。:大型数据库软件,收费,支撑体系完善,强大,安全性高(适用于服务器比较强大的单节点或者集群环境)数据库的应用场景:大都集中于互联网方向,因为免费,安装使用简便快捷,深受广大互联网公司的喜爱。是一个自动增长的数据类型,插入数据时候,不需要管理,它自己会自动增长。属于轻量级数据库,小巧,免费(开源的),使用方便。,但这种方法不能使用索引,速度不快。占用很大的内存空间)

2023-05-17 17:18:00 265

原创 HTML基本结构

和和表示行的开始和结束,而和表示单元格的开始和结束。记住,学习HTML时,只管结构就行了,学习CSS时,再考虑样式。td,指的是table data cell(表格单元格)。在表格中,有多少组“

2023-04-12 08:07:14 62

原创 表格简介1

在早些年的Web 1.0时代,表格常用于网页布局。但是在Web 2.0中,这种方式已经被抛弃了,网页布局都是使用CSS来实现的(学了CSS就会知道)。但是这并没有说明表格就一无是处了,表格在实际开发中用得非常多,因为使用表格可以更清晰地排列数据,如下图所示。

2023-04-12 08:05:32 40

原创 HTML语义化

正是这种错误的思维,导致很多人在学习HTML时,没有认真地把每一个标签的语义理解清楚,糊里糊涂就学过去了。能用某一个学过的标签来代替,我就懒得认真学新的标签,这就是HTML学习中最大的误区。在HTML中,大部分标签都有它自身的语义,例如p标签,表示的是paragraph,标记的是一个段落;我们学习HTML的目的并不是记住所有的标签,更重要的是在你需要的地方使用正确的语义化标签。前面我们学习了不少标签,很多人由于不熟悉标签的语义,常常用某一个标签来代替另一个标签,从而实现相同的效果。

2023-04-12 08:03:58 31

原创 HTML定义列表

标记和

2023-04-12 08:00:45 926

原创 有序列表简介

开始,到结束。有序列表的列表项是有先后顺序的,一般采用数字或字母作为顺序,默认是采用数字顺序。语法: 列表项 列表项 列表项 说明:ol,即ordered list(有序列表);li,即list(列表项)。理解标签的语义更有利于你记忆。在该语法中,和和

2023-04-12 07:59:58 1461

原创 无序列表简介

无序列表,很好理解,有序列表的列表项是有一定顺序的,而无序列表的列表项是没有顺序的。注意,ul标签和li标签也是配合一起使用,不可以单独使用,而且ul标签的子标签也只能是li标签,不能是其他标签。在该语法中,使用标签表示一个无序列表的开始和结束,表示这是一个列表项。跟有序列表一样,对于无序列表的列表项符号,等学了CSS之后,我们可以放弃type属性,而使用list-style-type属性。上面代码是错误的,因为ul元素的子元素只能是li元素,不能是其他元素。

2023-04-12 07:58:50 2218

原创 常用前端技术有哪些?

外部样式表存储为 .css 文件,可用于通过单个文件定义整个网站的外观,而不是将额外的 CSS 代码实例添加到必须修改的每个 HTML 元素中。这意味着当页面上的一小部分内容需要一些更改时,用户的网络浏览器不必重新加载整个网页,例如,您不必重新加载整个电子商务产品页面来应用额外的过滤器搜索结果。然而,有一些显着的特点。浏览器扫描文件并将文本解释为可见的形式,并且在最好的情况下,按照设计者的计划呈现页面。在前端社区中的讨论并不那么普遍,因为异步网页渲染在我们上面讨论的所有主要前端框架中都是开箱即用的。

2023-04-12 07:58:18 2824

原创 解读Element-UI 和 VUE 技术

是一种前端框架,免除JavaScript中的dom操作,简化书写,实现数据双向绑定。ElementUI提供了很多优美的组件,表单,表格,按钮什么的。是一种前端框架,免除JavaScript中的dom操作,简化书写,实现数据双向绑定。ElementUI提供了很多优美的组件,表单,表格,按钮什么的。是一种前端框架,免除JavaScript中的dom操作,简化书写,实现数据双向绑定。ElementUI提供了很多优美的组件,表单,表格,按钮什么的。

2023-04-12 07:58:02 462

原创 前端技术的发展流程

进行页面模板填充和事件绑定,而是通过dom衍生描述语法(这为什么称为DOM衍生描述语法,通常我们通过html来描述的,但是目前一些框架是通过非标准的html方式描述的,定义的一套迎合自己框架的方式,其实使用html也是可以的,这里的虚拟DOM应该就是向vue里面通过$refs调用DOM一样,应该也包含把DOM的改变转化为数据的改变)解析生成虚拟DOM,页面交互编程了修改虚拟DOM,然后将虚拟DOM的改变反映到htmlView层上。*前端MVC,*前端通过Ajax得到数据,因此也有了处理数据的需求。

2023-04-12 07:55:05 26

原创 Shiro的过滤链设计机制

当请求进入系统时,会首先进入我们自定义的JwtFilter的preHandle方法中,我们交给父类去执行,super.preHandle(request, response),可以看到他的父类就是PathMatchingFilter,上面那几个报错判断我们忽略,我们看重点的addToChain方法,这里有2个这个方法,上面一个是全局过滤器对过滤路径进行处理,下面那个是自定义过滤器对过滤路径进行的处理,自定义的会覆盖全局的,我们进入这个方法中,-- 过滤链定义,从上向下顺序执行,一般将/**放在最为下边。

2023-04-12 07:54:35 282

原创 JDBCRealm和自定义Realm

自定义Realm,可以注入给securityManager更加灵活的安全数据源(例如,JDBCRealm中表和字段都限定了)通过实现Realm接口,或根据需求继承他的相应子类即可1) 在数据库中建立userInfo表注意:数据库中只能保存一条数据,否则会出现后面的数据覆盖的现象2) jar文件同上[main]#配置Realm#注入4) Realm类@Overridetry {}finally{if(rs!= null){

2023-04-11 14:06:28 62

原创 环境搭建实现简单认证

2. 密码错误会报异常IncorrectCredentialsException。

2023-04-11 14:05:42 82

原创 Shiro配置文件详解

shiro.ini文件放在classpath下,shiro会自动查找。其中格式是key/value键值对配置。INI配置文件一般适用于用户少且不需要在运行时动态创建的情景下使用。ini文件中主要配置有四大类:main,users,roles,urls----[main]main主要配置shiro的一些对象,例如:securityManager ,Realm,authenticator,authcStrategy----[users][users]允许配置一组静态的用户,包含用户名,密码,角色,一个用户可以有

2023-04-11 14:05:12 539

原创 Shiro架构

一般散列算法需要提供一个salt(盐)与原始内容生成摘要信息,这样做的目的是为了安全性,比如:111111的md5值是:96e79218965eb72c92a549dd5a330112,拿着“96e79218965eb72c92a549dd5a330112”去md5破解网站很容易进行破解,如果要是对111111和salt(盐,一个随机数)进行散列,这样虽然密码都是111111加不同的盐会生成不同的散列值。散列算法一般用于生成一段文本的摘要信息,散列算法不可逆,将内容可以生成摘要,无法将摘要转成原始内容。

2023-04-11 14:04:41 81

原创 Shiro权限管理框架

对于细颗粒度的权限管理不建议做成系统架构级别的功能,因为对数据级别的控制是系统的业务需求,随着业务需求的变更业务功能变化的可能性很大,建议对数据级别的权限控制在业务层个性化开发,比如:用户只允许修改自己创建的商品信息可以在service接口添加校验实现,service接口需要传入当前操作人的标识,与商品信息创建人标识对比,不一致则不允许修改商品信息。对资源类型的管理称为粗颗粒度权限管理,即只控制到菜单、按钮、方法,粗粒度的例子比如:用户具有用户管理的权限,具有导出订单明细的权限。

2023-04-11 14:01:08 1035

原创 Shiro的授权机制

最常用的简单身份认证方式是系统通过核对用户输入的用户名和口令,看其是否与系统中存储的该用户的用户名和口令一致,来判断用户身份是否正确。授权,即访问控制,控制谁能访问哪些资源。缺点:以角色进行访问控制粒度较粗,如果上图中查询工资所需要的角色变化为总经理和部门经理,此时就需要修改判断逻辑为“基本上涉及到用户参与的系统都要权限管理,权限管理属于系统安全的范畴,权限管理实现对用户访问系统的控制,对于需要访问控制的资源用户首先经过身份认证,认证通过后用户具有该资源的访问权限方可访问。RBAC基于资源的访问控制(

2023-04-11 14:00:12 26

原创 Shiro的验证机制

Shiro认证就是验证用户身份的过程。在认证过程中,用户需要提交实体信息(Principals)和凭据信息(Credentials)以检验用户是否合法。最常见的“实体/凭证”组合便是“用户名/密码”组合。

2023-04-11 13:58:37 142

原创 Shiro主配置文件分析

Apache Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能。对于任何一个应用程序,Shiro都可以提供全面的安全管理服务。其不仅可以用在JavaSE环境,也可以用在JavaEE环境。2. Shiro架构图:---从外部来看Shiro,即从应用程序角度来观察如何使用Shiro完成工作----从Shiro内部看Shiro的架构。

2023-04-11 13:57:50 34

原创 Subject主体的作用

Subject:主体,代表了当前“用户”,这个用户不一定是一个具体的人,与当前应用交互的任何东西都是Subject,如爬虫、机器人等;我认为:就比如applictionCode是学校学生,开学了,然后必须e通过我去打开学校大门,这样他们才能进来,而我就是这个主体subject,而shiro就是学校里面的大门,大门里面有小门,小门就是学校里面的各种门,这些小门的钥匙在subject手里面,如果要开小门,需要到subject那里要。即所有与安全有关的操作都会与SecurityManager交互;

2023-04-11 13:56:59 56

原创 Cryptography加密和Realm领域的作用

当一个Subject需要进行身份验证时,它会调用SecurityManager中的authenticate方法,该方法会委托给所有配置的Realm来进行身份验证。当一个Subject需要进行授权操作时,它会调用SecurityManager中的authorize方法,该方法会委托给所有配置的Realm来进行授权操作。Realm会返回一个AuthorizationInfo对象,其中包含了该Subject的所有权限信息(如角色、权限等),这些信息会被用于控制Subject在应用程序中的访问权限。

2023-04-11 13:56:22 30

空空如也

空空如也

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

TA关注的人

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