![](https://img-blog.csdnimg.cn/9bc4adc96366492ea3d50da3e9c79104.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
java
文章平均质量分 90
主要是个人学习的笔记和总结
互联网底层民工
吾等采石之人,当心怀建造大教堂之愿景。
展开
-
Mybatis-Plus详解
Mybatis-Plus是一个Mybatis(opens new window)的增强工具,在Mybatis的基础上只做增强不做改变,为简化开发。无侵入:只做增强不做改变,引入它不会对现有工程产生影响。损耗小:启动即会自动注入基本CURD,性能基本无损耗,直接面向对象操作。强大的CRUD操作:内置通用Mapper、通用Service,仅仅通过少量配置即可实现单表大部分CRUD操作,更有强大的条件构造器,满足各类使用需求。支持Lambda形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需原创 2023-07-15 11:34:07 · 60872 阅读 · 5 评论 -
SpringMVC详解
SpringMVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级web框架,通过把Model,View,Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分。简化开发,减少出错,方便组内开发人员之间的配合。他通过一套注解,让一个简单的Java类成为处理请求的控制器,而无需实现任何接口。同时它还支持Restful编程风格的请求。原创 2023-07-14 09:50:45 · 10555 阅读 · 0 评论 -
Spring详解(学习总结)
Spring是一个分层的java SE/EE full-stack(一站式)轻量级开源框架,以IOC(控制反转)和AOP(面向切面编程)为内核。在java三层架构当中分别提供了相应的技术:表现层(web层):SpringMVC框架业务层(service层):Bean管理(IOC容器)持久层(dao层):jdbcTemplate模板对象以及提供了ORM模块整合其他优秀的持久层技术。方便解耦,简化开发:Spring就是一个工厂,可以管理所有对象的创建和依赖关系维护,交给Spring管理。原创 2023-07-11 13:58:56 · 30673 阅读 · 4 评论 -
Spring常用注解
当有多个类型匹配时,使用要注入的对象变量名称作为 bean 的id,在 spring 容器查找,找到了也可以注入成功。使用注解进行开发时,需要在applicationContext.xml中配置组件扫描,作用是指定哪个包及其子包下的Bean需要进行扫描一便识别使用注解配置的类、字段和方法。使用Autowired或者@Autowired+@Qulifier或者@Resource进行userDao的注入。使用@Component或@Repository标识UserDaoImpl需要Spring进行实例化。原创 2023-07-08 11:42:52 · 169 阅读 · 0 评论 -
SpringAOP机制详解
AOP面向切面编程是一种编程思想,是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各个部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。AOP为Aspect Oriented Programming的缩写,意思为面向切面编程,是通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。通知的类型:前置通知,后置通知,异常通知,最终通知,环绕通知。包名与类名之间一个点。原创 2023-07-07 16:58:33 · 358 阅读 · 0 评论 -
Spring依赖注入DI
它是SpringBoot框架核心IOC的具体实现。组件之间的依赖关系由容器在应用系统运行期来决定,也就是由动态地将某种依赖关系的目标对象实例注入到应用系统中的各个关联的组件之中。原创 2023-07-06 11:46:08 · 614 阅读 · 0 评论 -
SpringIOC机制详解
所谓Bean的作用域其实就是指Spring给我们创建出的对象的存活范围,在配置文件中通过bean的scope属性指定取值范围说明singleton默认值,单例的prototype多例的requestWEB 项目中,Spring 创建一个 Bean 的对象,将对象存入到 request 域中sessionWEB 项目中,Spring 创建一个 Bean 的对象,将对象存入到 session 域中。原创 2023-06-30 09:00:00 · 6075 阅读 · 1 评论 -
Lambda
Lambda表达式是java对函数接口实现类对象的一种简化形式,本质是一个值(必须使用变量存储之后才能存在),在java中主要是体现在对特殊的匿名内部类对象的一种表示(就是对匿名内部类对函数式接口实现的简化),代表都是函数式接口的匿名内部类的对象。简单理解:Lambda表达式是对接口匿名内部类格式的一种简化,但是本质不一样。都是匿名内部类对象,但是匿名内部类对象是一个进行单独编译,创建的对象,Lambda表达式不会单独编译,本质是值。值表示了匿名内部类的对象。原创 2023-06-29 08:48:53 · 137 阅读 · 0 评论 -
Java反射
每个类加载器都是如此,只有在父类加载器在自己的搜索范围内找不到指定类时,子类加载器才会尝试自己去加载。想获取和操作类中的内容,首先要获取类的字节码对象(Class类对象),每一个正在运行的类,都有对应的字节码对象,获取了类的字节码对象,就可以使用这个对象的所有方法,这些方法都定义在Class类型中。ClassLoader叫做类加载器,虚拟机设计团队把类加载阶段,加载字节文件,这个动作放到java虚拟机外部去实现,以便让应用自己决定去如何获取所需的类,实现这个动作的模块称之为“类加载器”。原创 2023-06-28 14:01:59 · 112 阅读 · 0 评论 -
JAVA线程
虽然我们可以理解同步代码块和同步方法的锁对象问题,但是我们并没有直接看到在哪里加上了锁,在哪里释放了锁,为了更清晰的表达如何加锁和释放锁,JDK5以后提供了一个新的锁对象Lock,Lock是接口不能直接实例化,这里采用它的实现类ReentrantLock来实例化。原创 2023-06-26 16:59:16 · 9172 阅读 · 2 评论 -
Nginx
一、Nginx的介绍和安装一、Nginx的介绍和安装(一)Nginx的概述Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。原创 2023-06-25 11:39:51 · 144 阅读 · 0 评论 -
Zookeeper
Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目。它是一种集中式服务,用于维护配置信息,命名,提供分布式同步和提供组服务。所有这些类型的服务都以分布式应用程序的某种形式使用。每次实施它们都需要做很多工作来修复不可避免的错误和竞争条件。由于难以实现这些类型的服务,应用程序最初通常会吝啬它们,这使得它们在变化的情况下变得脆弱并且难以管理。即使正确完成,这些服务的不同实现也会在部署应用程序时导致管理复杂性。原创 2023-06-06 15:21:46 · 289 阅读 · 0 评论 -
Redis面试题
什么是Redis?Redis的优缺点Redis的数据类型Redis有几种数据“过期”策略;Redis有几种数据”淘汰“策略;redis的应用场景;Redis的持久化;Redis事务特性;Redis的集群、主从、哨兵;Redis分布式问题;Redis缓存问题(缓存雪崩,缓存击穿,缓存穿透);Redis并发竞争key问题如何解决;Redis为什么效率高;为什么要用Redis(从高性能和高并发两点来看);如果有大量的key需要设置同一时间过期,一般需要注意什么?原创 2023-02-28 09:08:44 · 135 阅读 · 0 评论 -
Redis基础
存盘可以有意无意的对数据进行写操作。分布式缓存:在应用服务器的数据量非常庞大,及时只缓存一小部分,需要的内存空间也不是单机能承受的,所以除了本地缓存,还需要分布式缓存,将数据缓存在一个专门的分布式缓存集群中,应用程序通过网络通信访问数据。缓存是改善软件性能的第一手段,缓存意在减少系统对数据库的过多访问,通过减少对数据库访问次数,改用访问内存的方式,提升系统的性能。【增量】AOF持久化,以日志的形式记录服务器所处理的每一个写、删除操作,查询操作不会记录,以文本的方式记录,可以打开文件看到详细的操作记录。原创 2023-02-25 11:56:46 · 408 阅读 · 0 评论 -
Mybatis面试题
Mybatis比如调用a.getB().getName()方法,进入拦截器的invoke(...)方法,发现 a.getB() 需要延迟加载时,那么就会单独发送事先保存好的查询关联 B 对象的 SQL ,把 B 查询上来,然 后调用 a.setB(b) 方法,于是 a 对象 b 属性就有值了,接着完成 a.getB().getName() 方法的调用。默认情况下,延迟加载的功能是关闭的。在插件的拦截方法内,拦截待执行的SQL,然后重写SQL,根据dialect(方言),添加对应的物理分页语句和物理分页参数。原创 2023-01-31 16:06:38 · 274 阅读 · 0 评论 -
Git详解
一、Git概述一、Git概述(1)什么是GitGit是一个开源的分布式版本控制系统(Distributed Version Control System,简称DVCS)。可以有效、高速地处理从很小到非常大的项目版本管理。(2)什么是版本控制系统版本控制系统能追踪项目,从开始到结束的整个过程。对编程人员而言,版本控制技术是团队协作开发的桥梁,助力于多人协作同步进行大型项目开发。软件版本控制系统的核心任务:查阅项目历史操作记录,实现协同开发。(3)常见的版本控制系统1、集中式版本控制工具svn。原创 2023-01-01 08:00:00 · 2325 阅读 · 0 评论 -
HashMap底层原理
HashMap的底层原理。当我们的HashMap中存在大量数据时,加入我们mougebucket下对应的链表有n个元素,那么遍历时间复杂度就为0(n),为了针对这个问题,JDK1.8在HashMap中新增加了红黑树的数据结构,进一步使得遍历复杂度降低至0(logn);原创 2022-12-27 15:27:33 · 315 阅读 · 0 评论 -
Mybatis从入门到放弃(三)
缓存是存在于内存中的临时数据,使用缓存的目的是减少和数据库的交互次数,提高执行效率。像大多数的持久化框架一样,Mybatis也提供了缓存策略,通过缓存策略来减少数据库的查询次数,从而提高性能。Mybatis中缓存分为一级缓存、二级缓存。mybatis一级缓存是一种session级别的,针对同一会话SqlSession中,执行多次条件完全相同的同一个sql,那么会共享这一缓存。原创 2022-11-18 14:46:11 · 323 阅读 · 0 评论 -
Mybatis从入门到放弃(二)
动态sql语句与多表联查。一对一查询、一对多查询、多对多查询。延时策略 1、什么是延迟加载? 延时加载(lazy load)是关联关系对象默认的加载方式,延迟加载机制是为了避免一些无谓的性能开销而提出来的,所谓延时加载就是当在真正需要数据的时候,才真正执行数据加载操作。 延时加载可以简单地理解为只有在使用的时候,才会发出sql语句进行查询。 2、为什么要使用延迟加载? 减少访问数据库的频率。我们要访问的数据量过大时,明显用缓存不太适合,原创 2022-11-16 16:20:00 · 312 阅读 · 0 评论 -
Mybatis从入门到放弃(一)
Mybatis是一个优秀的基于java的持久化框架,它内部封装了jdbc,是开发者只需要关注sql语句本身,而不需要话费精力去处理加载驱动、创建连接、创建statement等繁琐过程。mybatis通过XML或注解的方式将要执行的各种statement配置起来,并通过java对象和statement中sql的动态参数进行映射生成最终地sql语句,最后由mybatis框架执行sql并将结果映射为java对象返回。原创 2022-11-16 15:48:37 · 511 阅读 · 0 评论 -
ECMAScript6详解
ECMAScript 也是一门脚本语言,缩写为ES,通常看做JavaScript的标准化规范ECMAScript6.0是JavaScript语言的下一代标准,它的目标是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言。原创 2022-11-03 15:58:43 · 989 阅读 · 0 评论 -
JSON入门
JSON(JavaScript Object Notation,JS对象标记)是一种轻量级的数据交换格式。它是基于ECMAScript的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简介和清晰的层次结构使得JSON成为理想的数据交换语言。原创 2022-11-02 10:20:42 · 486 阅读 · 0 评论 -
Ajax入门
.ajax()是jQuery的第一次封装,使用时稍显麻烦,但是功能强大,覆盖了get和poat请求,有错误调试能力,写法顺序可以改变。jQuery是一个优秀的js框架,自然对JS原生的AJAX进行了封装,封装后的Ajax的操作方法更简洁,功能更强大。发送一个请求,需要等待响应返回,然后才能发送下一个请求,如果该请求没有响应,不能发送下一个请求,客户端会处于一直等待过程中。在用户注册页面,输入用户名,当用户名输入框失去焦点时,发送异步请求,将输入框的用户名传递给服务器进行是否存在的校验。原创 2022-11-01 08:00:00 · 115 阅读 · 0 评论 -
监听器Listener
(1) 实现了特定接口的类为监听器,用来监听另一个java类的方法调用或者属性改变; (2)当被监听的对象发生了方法调用或者属性改变后,监听器的对应方法就会立即执行。 监听器涉及到以下几个组成部分: 1、事件源:被监听的对象,即:request、session、servletContext三大域对象。 2、监听器:监听事件源对象,事件源对象状态的变化都会触发监听器 3、注册原创 2022-10-28 11:57:09 · 1761 阅读 · 0 评论 -
Filter过滤器
过滤器是一个服务器端的组件,它可以截取客户端的请求和服务端的响应信息,并对这些信息进行过滤。原创 2022-10-26 21:22:00 · 519 阅读 · 0 评论