自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 资源 (1)
  • 收藏
  • 关注

原创 Shiro

源代码:链接:https://pan.baidu.com/s/1Xl5ue5pPv1WQf1yucjUt_A提取码:ka40Shiro 默认的登录认证是不带加密的,如果想要实现加密认证需要自定义登录认证,自定义 Realm。1、自定义登录认证//自定义的登录认证方法,Shiro 的 login 方法底层会调用该类的认证方法完成登录认证//需要配置自定义的 realm 生效,在 ini 文件中配置,或 Springboot 中配置。

2024-01-21 17:19:34 857

原创 ElasticSearch

ElasticSearch(简称为es)是一个开源的高扩展的分布式全文检索引擎,它可以近乎 实时存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别(大数据时代)的数据。es是使用java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的REST-ful的API来隐藏Lucene的复杂性,从而让全文搜索变得简单。在前面的学习中,我们已经掌握了es是什么,同时也把es的服务已经安装启动,那么es是如何去存储数据,数据结构是什么,又是如何实现搜索的呢?

2023-12-30 00:23:41 1094

原创 剖析jvm

自定义类加载器只需要继承 java.lang.ClassLoader 类,该类有两个核心方法,一个是loadClass(String, boolean),实现了双亲委派机制,还有一个方法是findClass,默认实现是空方法,所以我们自定义类加载器主要是重写findClass方法。47 }818 }1921 try {23 //defineClass将一个字节数组转为Class对象,这个字节数组是class文件读取后最终的字节数组。28 }29 }30。

2023-10-14 23:06:30 75

原创 Java面试-MySQL数据库

第一范式(1NF):字段(或属性)是不可分割的最小单元,即不会有重复的列,体现原子性第二范式(2NF):满足 1NF 前提下,存在一个候选码,非主属性全部依赖该候选码,即存在主键,体现唯一性,专业术语则是消除部分函数依赖第三范式(3NF):满足 2NF 前提下,非主属性必须互不依赖,消除传递依赖ref:如何理解关系型数据库的常见设计范式?除了三大范式外,还有BC范式和第四范式,但其规范过于严苛,在生产中往往使用不到。范式是符合某一种级别的关系模式的集合。构造数据库必须遵循一定的规则。

2023-08-01 23:57:30 270

原创 Java面试-并发编程

Java Concurrency API 中的 Lock 接口(Lock interface)是什么?对比同步它有什么优势?Lock 接口比同步方法和同步块提供了更具扩展性的锁操作。他们允许更灵活的结构,可以具有完全不同的性质,并且可以支持多个相关类的条件对象。它的优势有:(1)可以使锁更公平(2)可以使线程在等待锁的时候响应中断(3)可以让线程尝试获取锁,并在无法获取锁的时候立即返回或者等待一段时间(4)可以在不同的范围,以不同的顺序获取和释放锁。

2023-07-17 23:51:48 151

原创 Java面试——集合容器

Hash,一般翻译为“散列”,也有直接音译为“哈希”的,这就是把任意长度的输入通过散列算法,变换成固定长度的输出,该输出就是散列值(哈希值);这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。所有散列函数都有如下一个基本特性**:根据同一散列函数计算出的散列值如果不同,那么输入值肯定也不同。

2023-07-13 22:52:20 107

原创 Java面试题——基础

优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,能是最重要的因素。缺点:没有面向对象易维护、易复用、易扩展在Java中,可以将一个类的定义放在另外一个类的定义内部,这就是内部类。内 部类本身就是类的一个属性,与其他属性定义方式一致。hashCode() 的作用是获取哈希码,也称为散列码;它实际上是返回一个int整 数。这个哈希码的作用是确定该对象在哈希表中的索引位置。

2023-07-13 21:44:54 129

原创 @Mapper、@MapperScan、@Repository详解

加了@MapperScan就相当于给包中的接口都加上了@Mapper,同时@Repository还有消除“注入”的错误提示的作用。它可以在编译之后自动生成相应的接口实现类,不用再写如下图所示的mapper映射文件;,然后包下面的所有接口在编译之后都会生成相应的实现类,实现批量添加@Mapper注解。如果需要让多个接口都变成实现类,用@Mapper一个个添加太麻烦,这时我们。用@Mapper直接在接口中写 ,编译时自动生成实现类,具体写法见下图。@Repository是spring提供的注解,放在。

2023-05-07 20:04:14 1997

转载 Cookie与Session

学习Cookie和Session,最难的并不是如何使用,毕竟底层操作都已经封装好了,调用API即可。最难的还是对于【会话】这个概念的理解。我刚开始学的时候就挺晕。会话一词,指聚谈、对话。最早出现在欧阳修 《与吴正肃公书》一文中:“前约临行少留会话,终不克遂,至今为恨。”基本可以理解为就是一次对话。那么在计算机的世界中,会话又是什么?大家可能早就听过这句话:从打开一个浏览器访问某个站点,到关闭这个浏览器的整个过程,称为一次会话。这句话固然精辟,但是很明显不是说给初学者听的。

2023-05-02 11:13:45 66

原创 swagger详细讲解

Swagger是个优秀的工具,现在国内已经有很多的中小型互联网公司都在使用它,相较于传统的要先出Word接口文档再测试的方式,显然这样也更符合现在的快速迭代开发行情。相较于传统的Postman或Curl方式测试接口,使用swagger简直就是傻瓜式操作,不需要额外说明文档(写得好本身就是文档)而且更不容易出错,只需要录入数据然后点击Execute,如果再配合自动化框架,可以说基本就不需要人为操作了。1、默认的 访问 http://localhost:8080/swagger-ui.html。

2023-04-28 16:02:52 428

转载 RedisTemplate用法

RedisTemplate 是 Spring Boot 访问 Redis 的核心组件,底层通过 RedisConnectionFactory 对多种 Redis 驱动进行集成,上层通过 XXXOperations 提供丰富的 API ,并结合 Spring4 基于泛型的 bean 注入,极大的提供了便利,成为日常开发的一大利器。

2023-04-16 21:04:42 216

原创 MyBatis-Plus从入门到精通

当通用Mapper无法满足我们的需求时,我们可以自定义基于Mapper接口的xml文件,并在xml文件中配置SQL语句在UserMapper接口中定义如下方法UserService中添加接口方法/*** 查询 : 根据年龄查询用户列表,分页显示* @param page 分页对象,xml中可以从里面进行取值,传递参数 Page 即自动分页,必须放在第一位* @param age 年龄* @return 分页对象

2023-03-06 23:27:23 304

原创 单元测试讲解

清代杰出思想家章学诚有一句名言:“学必求其心得,业必贵其专精。意思是:学习上一定要追求心得体会,事业上一定要贵以专注精深。做技术就是这样,一件事如果做到了极致,就必然会有所心得体会。作者最近在一个项目上,追求单元测试覆盖率到极致,所以才有了这篇心得体会。在编写单元测试时,首先需要定义被测对象,或直接初始化、或通过Spy包装……其实,就是把被测试服务类进行实例化。1 直接构建对象直接构建一个对象,总是简单又直接。2 利用Mockito.spy方法。

2023-02-01 23:33:03 443

原创 函数式编程从入门到精通(上部:入门)

能够看懂公司里的代码大数量下处理集合效率高代码可读性高消灭嵌套地狱//查询未成年作家的评分在70以上的书籍 由于洋流影响所以作家和书籍可能出现重复,需要进行去重 List < Book > bookList = new ArrayList < >();​ Lambda是JDK8中一个语法糖。他可以对某些匿名内部类的写法进行简化。它是函数式编程思想的一个重要体现。让我们不用关注是什么对象。而是更关注我们对数据进行了什么操作。

2023-01-31 20:38:38 80

原创 多线程从入门到精通(上部:入门)

现实中太多这样同时做多件事情的例子了,看起来是多个任务都在做,其实本质上我们的大脑在同一时间依旧只做了一件事情。**多个线程操作同一个资源 **

2023-01-30 15:59:48 99

原创 springmvc从入门到精通(上部:入门)

Model(模型):数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型或JavaBean组件(包含数据和行为),不过现在一般都分离开来:Value Object(数据Dao) 和 服务层(行为Service)。也就是模型提供了模型数据查询和模型数据的状态更新等功能,包括数据和业务。View(视图):负责进行模型的展示,一般就是我们见到的用户界面,客户想看到的东西。Controller(控制器):接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回给视图,由视图负责展示

2023-01-10 13:48:49 188

原创 Spring从入门到精通(上部:入门)

spring从使用到源码(上部:使用)

2022-12-26 18:02:28 228

原创 MyBatis从使用到源码(上部:使用)

1、什么是缓存 [ Cache ]?存在内存中的临时数据。将用户经常查询的数据放在缓存(内存)中,用户去查询数据就不用从磁盘上(关系型数据库数据文件)查询,从缓存中查询,从而提高查询效率,解决了高并发系统的性能问题。2、为什么使用缓存?减少和数据库的交互次数,减少系统开销,提高系统效率。3、什么样的数据能使用缓存?经常查询并且不经常改变的数据。

2022-12-14 13:32:50 130

原创 kafka技术

消息中间件kafka

2022-10-25 22:46:10 2699

原创 设计模式之单例模式

通俗易懂讲解单例模式

2022-04-26 22:16:05 146

原创 设计模式之工厂公式

赤脚大仙通俗易懂讲解工厂模式

2022-04-20 23:41:22 90

原创 大仙教学 Spring Security

Spring Security 骨灰级教学1. SpringSecurity 框架简介1.1 概要Spring 是非常流行和成功的 Java 应用开发框架,Spring Security 正是 Spring 家族中的成员。Spring Security 基于 Spring 框架,提供了一套 Web 应用安全性的完整解决方案。正如你可能知道的关于安全方面的两个主要区域是“认证”和“授权”(或者访问控制),一般来说,Web 应用的安全性包括用户认证(Authentication)和用户授权(Au

2022-04-17 17:36:27 316

原创 线程基础、线程之间共享与协作

基础概念CPU核心数和线程数的关系核心数:线程数=1:1 ;使用了超线程技术后---> 1:2CPU时间片轮转机制又称RR调度,会导致上下文切换什么是进程和线程进程:程序运行资源分配的最小单位,进程内部有多个线程,会共享这个进程的资源线程:CPU调度的最小单位,必须依赖进程而存在。澄清并行和并发并行:同一时刻,可以同时处理事情的能力并发:与单位时间相关,在单位时间内可以处理事情的能力高并发编程的意义、好处和注意事项好处:充分利用cpu的资源、加快用...

2020-11-11 23:16:37 67

转载 Java之lambda表达式

添加链接描述

2020-11-10 19:20:01 62

原创 netty真正从入门到精通

一、Java网络编程基础1、计算机网络体系结构2、OSI七层模型各层的作用 层名 作用 应用层 网络服务与最终用户的一个接口 表示层 把应用层提供的信息变换为能够共同理解的形式 会话层 建立、管理、终止会话。 传输层 定义传输数据的协议端口号,以及流控和差错校验。 网络层 .

2020-09-08 23:53:16 780 1

空空如也

空空如也

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

TA关注的人

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