自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 StreamAPI

文章目录Stream定义定义流的操作类型stream 管道(pipeline)延迟调用/懒操作:Stream 创建创建空Stream通过集合(Collection)创建 Stream通过数组(Array)创建 Stream通过原子类型创建 Stream通过文件创建 Stream通过Stream静态方法StreamAPIStreams API(I)stream中间方法使用forEach()filter()distinct()sorted()map()flatMap()Streams API(II)reduce

2021-06-27 10:11:43 896

原创 lambda表达式的使用

文章目录lambda表达式使用结合集合类使用Collection中的新方法forEach()removeIf()replaceAll()sort()spliterator()stream()和parallelStream()forEach()getOrDefault()putIfAbsent()remove()replace()replaceAll()merge()compute()computeIfAbsent()computeIfPresent()结合StreamAPI使用lambda表达式使用参考

2021-06-27 09:54:05 497 1

原创 Java中Lambda表达式与方法引用

文章目录内部类内部类匿名内部类Lambda表达式:实现函数式接口Lambda 表达式的结函数式接口匹配Lambda表达式Lambda表达式 vs 匿名接口实现Lambda类型推断Lambda参数无参数一个参数多个参数指定参数类型Lambda表达式主体Lambda表达式返回值Lambdas作为对象Lambda方法引用静态方法引用参数方法引用: 引用第一个参数的方法,其余参数作为方法入参传入实例方法引用构造方法引用Java8四大内置函数式接口1、Consumer 消费性接口:void accept(T t);2

2021-06-27 09:50:55 1102 1

原创 Java枚举类详解

文章目录枚举类定义枚举实现原理常见方法编译器生成的Values方法与ValueOf方法枚举的进阶用法向enum类添加方法与自定义构造函数enum类中定义抽象方法enum类与接口枚举与单例模式枚举类实现单例模式:实现方式一:枚举类本身就是单例对象,内部可实现单例对象具体方法逻辑实现方式二:枚举类作为单例对象内部类参考文献枚举类定义//枚举类型,使用关键字enumenum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDA

2021-06-27 09:21:50 1052 1

原创 主从复制与读写分离

文章目录主从复制一、主从复制定义二、主从复制的作用三、主从复制原理四、主从同步模式五、支持的复制类型/日志格式七、主从复制架构读写分离一、读写分离定义二、读写分离实现方式主从复制一、主从复制定义主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库;主数据库一般是准实时的业务数据库。二、主从复制的作用1、做数据的热备,作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作,避免数据丢失。2、架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低

2021-06-20 12:40:14 722

原创 Redis五大数据类型及其落地应用

Redis五大数据类型及其落地应用keyRedis的五大数据类型String(字符串)ListSet(集合)HashZset(有序集合)key在redis中无论什么数据类型,在数据库中都是以key-value形式保存,通过进行对Redis-key的操作,来完成对数据库中数据的操作。常见命令:exists key:判断键是否存在del key:删除键值对move key db:将键值对移动到指定数据库expire key second:设置键值对的过期时间type key:查看value的数据

2021-06-01 14:08:56 120

原创 try、catch、finally语句中有return 的各类情况

try、catch、finally语句中有return 的各类情况1、 try-catch-finally中均无return,仅4中有return注意2、try 和 catch 中都带有 return ,finally无return总结在 Java 的异常处理中,try、catch 和 finally 是按顺序执行的。如果 try 中没有异常,则顺序为 try→finally,如果 try 中有异常,则顺序为 try→catch→finally。但是当 try、catch、finally 中加入 retu

2021-05-31 21:44:30 2362

原创 Spring Boot 中直接映射静态资源

SSM 中的配置先回到 SSM 环境搭建中,一般来说,我们可以通过 <mvc:resources /> 节点来配置不拦截静态资源,如下:<mvc:resources mapping="/js/**" location="/js/"/><mvc:resources mapping="/css/**" location="/css/"/><mvc:resources mapping="/html/**" location="/html/"/>由于这是一

2021-03-04 20:16:38 289 1

原创 Springboot开启Restful风格请求

Restful风格简单介绍Rest风格支持(使用HTTP请求方式动词来表示对资源的操作)以前:/getUser 获取用户 /deleteUser 删除用户 /editUser 修改用户 /saveUser 保存用户现在: /user GET-获取用户 DELETE-删除用户 PUT-修改用户 POST-保存用户核心Filter:HiddenHttpMethodFilter用法: 表单method=post,隐藏域 _method=pu

2021-03-04 19:07:38 960 1

转载 Spring boot自动配置原理

https://zhuanlan.zhihu.com/p/342921759

2021-03-04 16:21:51 78 1

原创 拦截器及源码分析

文章目录拦截器配置文件中注册并配置自定义拦截器Filter和拦截器的使用时机:拦截器运行原理:源码分析拦截器Spring MVC也可以使用拦截器对请求进行拦截处理,用户可以自定义拦截器来实现特定的功能,自定义的拦截器必须实现HandlerInterceptor接口preHandle():这个方法在业务处理器处理请求之前被调用,在该方法中对用户请求 request 进行处理。如果程序员决定该拦截器对请求进行拦截处理后还要调用其他的拦截器,或者是业务处理器去进行处理,则返回true;如果程序员决定不需要

2021-03-04 15:22:22 733

原创 Ajax请求与HttpMessageConverter

文章目录Ajax请求页面发起Ajax请求Ajax同步异步工作模式HttpMessageConverterAjax请求页面发起Ajax请求JQuery 的 Ajax 请求(重点****)四个 Ajax 请求方法$.ajax 方法$.get 方法$.post 方法$.getJSON 方法Ajax同步异步工作模式异步:同步模式HttpMessageConverterHttpMessageConverter 是 Spring3.0 新添加的一个接口,负责将请求信息转换为

2021-03-04 11:23:57 79 1

原创 数据绑定:数据转换、数据格式化、数据校验

文章目录数据绑定原因数据绑定流程数据转换数据格式化日期格式化:数值格式化:数据校验数据绑定原因数据绑定流程Spring MVC 主框架将 ServletRequest 对象及目标方法的入参实例传递给 WebDataBinderFactory 实例,以创建 DataBinder 实例对象DataBinder 调用装配在 Spring MVC 上下文中的 ConversionService 组件进行数据类型转换、数据格式化工作。将 Servlet 中的请求信息填充到入参对象中调用 Valida

2021-03-04 10:48:00 216 1

原创 视图解析器及其原理

文章目录ModelAndView视图对象:View 负责页面的具体渲染:转发、重定向等。render方法完成视图解析器:解析ModelView并得到具体的视图对象View视图解析器配置:指出拼串的前缀和后缀关于重定向视图解析原理ModelAndView请求处理方法执行完成后,最终返回一个 ModelAndView 对象。对于那些返回 String,View 或 ModeMap 等类型的处理方法,Spring MVC 也会在内部将它们装配成一个 ModelAndView 对象,它包含了逻辑名和模型对象

2021-03-04 09:25:39 828 3

原创 Spring MVC如何输出数据给页面

文章目录简述方式一:原生API之域对象方法二:传入map model modelmap三个接口做入参。最终会存放在请求域中隐含模型源码方法三:ModelAndView。作为控制器返回值,由视图解析器解析,放在request域中方法四:@SeesionAttribute方法五:@ModelAttibute简述Spring MVC除了在方法上将Servlet API当作入参外,还能怎样将数据带给页面呢?在传统Servlet中,要想把数据带给页面,我们可以通过:request域、Session域、Servl

2021-03-04 08:25:10 401 1

原创 请求、响应乱码问题的解决

文章目录普通Servlet中解决方式在Spring MVC中,乱码解决方式总结普通Servlet中解决方式在Spring MVC中,乱码解决方式请求乱码:GET请求:仍然更改服务器的server,xml配置文件Post请求:可以设置一个Filter:characterEncodingFilter用来解决其请求参数乱码问题:Filter的配置应该是在Web项目的xml配置文件中配置响应乱码:仍然response.setcontenttype来解决。也可以在解决Post请求乱码设置Filt

2021-03-04 07:30:46 197 1

原创 映射请求参数(偏向使用)

文章目录简述默认绑定同名参数使用 @RequestParam 绑定请求参数值使用 @RequestHeader 绑定请求报头的属性值使用 @CookieValue 绑定请求中的 Cookie 值封装请求参数为POJO:传入Servlet原生API作为参数。简述Spring MVC 通过分析处理方法的签名,将 HTTP 请求信息绑定到处理方法的相应人参中。Spring MVC 对控制器处理方法签名的限制是很宽松的,几乎可以按喜欢的任何方式对方法进行签名。必要时可以对方法及方法入参标注相应的注解( @

2021-03-03 23:10:40 274 1

原创 REST风格

REST风格REST:即 Representational State Transfer。(资源)表现层状态转化。是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用资源(Resources):网络上的一个实体,或者说是网络上的一个具体信息。它可以是一段文本、一张图片、一首歌曲、一种服务,总之就是一个具体的存在。可以用一个URI(统一资源定位符)指向它,每种资源对应一个特定的 URI 。要获取这个资源,访问它的URI就可以,因此 URI 即为每一个资

2021-03-03 22:02:23 116 1

原创 Spring MVC架构简介及helloword

MVC架构Spring MVC总体框架

2021-03-03 21:19:38 119 1

原创 Spring声明式事务管理

文章目录事务概念手动管理事务Spring进行事务管理总结事务概念手动管理事务Spring进行事务管理总结环境搭建:导入相关依赖:数据源、数据库驱动、Spring-jdbc模块配置数据源、JdbcTemplate(Spring提供简化数据库操作的工具)操作数给方法上标注@Transactional注解表示当前的方法是一个事务方@EnableTransactionManagement 开启基于注解的事务管理功能;配置事务管理器来控制事务(必须要有这一步)//注册事

2021-03-03 20:53:02 66 1

原创 AOP及其原理

文章目录定义AOP术语使用总结定义AOP术语使用总结AOP:【动态代理】能在程序运行期间动态的将某段代码片段切入到指定的方法指定位置进行运行的编程方式;导入aop模块,Spring AOP:(spring-aspects)定义一个业务逻辑类(MathCalculator),在业务逻辑运行的时候将日志进行打印(方法之前、方法运行结束、包括方法出现异常等等)定义一个日志切面类(LogAspects):切面类里面的方法需要动态感知MathCalculator.div运行到

2021-03-03 20:25:59 180 1

原创 @Autowired注解标注的位置

文章目录简介及源码标注在方法上标注在构造器上标注在参数上直接标注在属性上总结简介及源码@Autowired注解的三种方式如下,第一种是直接在属性名上加注解,这样就可以不用在写set方法进行注入,这种方式与set方式作用一样;第二种是在set方法上加注解;第三种是在构造器上加注解我们从@Autowired这个注解点进去看一下源码:我们可以发现这个注解可以标注的位置有:构造器,参数,方法,属性;都是从容器中来获取参数组件的值。@Target({ElementType.CONSTRUCTOR, Elem

2021-03-03 19:55:20 1823 1

原创 注入属性

文章目录基于XML方式的属性注入XML自动装配基于注解的自动装配属性赋值-@Value赋值,注入基本类型@PropertySource加载外部配置文件自动装配-@Autowired&@Qualifier&@Primary自动装配-@Resource&@Inject基于XML方式的属性注入XML自动装配基于注解的自动装配属性赋值-@Value赋值,注入基本类型使用@Value赋值基本的数值可以写SpEL: #{}可以写${}:取出配置文件中的值(在运行环境变量

2021-03-03 19:29:46 110 1

原创 Bean管理-生命周期管理

文章目录七步生命周期及演示初始化、销毁方法方式一方式二方式三:后置处理器总结七步生命周期及演示初始化、销毁方法指定初始化和销毁方法的方式:方式一:在类中写好initmethod和destroymethod,我们可以通过@Bean(initMethod = “init”,destroyMethod = “destroy”)来指定初始化方法和销毁方法方式二:待创建类继承并实现实现InitializingBean接口(定义初始化逻辑) DisposableBean接口(定义销毁逻辑)方式

2021-03-03 16:55:41 149 1

原创 IOC容器及其原理

文章目录1、什么是IOC2、IOC底层原理3、IOC容器接口4、IOC的Bean管理5、基于XML配置方式管理Bean1、IOC基于XML方式注册组件2、工厂Bean3、IOC对Bean的生命周期管理4、IOC属性注入自动装配6、基于注解方式管理Bean1、基于注解实现组件注册2、基于注解实现属性自动注入1、什么是IOC(1)控制反转,把对象创建和对象之间的调用过程,交给 Spring进行管理(2〉使用IOC目的:为了耦合度降低(3)做入门案例就是IOC 实现2、IOC底层原理(1)xml解析、

2021-03-03 11:01:11 1042 1

原创 组件注册-@Conditional-按照条件注册bean

文章目录注解源码使用举例@Condition派生注解注解源码@Conditional注解源码@Target({ElementType.TYPE, ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface Conditional { /** * All {@link Condition}s that must {@linkplain Condition#matches

2021-03-03 09:19:59 117

原创 注册组件

文章目录方式一:@Componentscan方式二:@Bean导入第三方包组件配置文件方式导入第三方包或者本工程下的类@Bean注解@Lazy-bean懒加载组件注册-@Conditional-按照条件注册bean组件注册-@Import-给容器中快速导入一个组件使用举例源码组件注册-@Import-使用ImportSelector组件注册- @Import-使用ImportBeanDefinitionRegistrar组件注册-使用FactoryBean注册组件,工厂模式的应用总结方式一:@Compon

2021-03-02 22:34:00 203

原创 主配置类@Configuration、组件扫描@ComponentScan

文章目录主配置xml文件配置的方式注解的方式:主配置类@Configuration@Configuration源码组件扫描:@ComponentScanXML配置文件方式@ComponentScan注解方式@ComponentScan源码:includeFilters指定规则扫描组件过滤规则自定义匹配规则FilterType.CUSTOM总结注解用法获取IoC容器的方法:主配置xml文件配置的方式先按照我们以前配置的方式来使用Spring,给出主配置XML:首先有一个Person类:public

2021-03-02 21:30:01 2774

原创 MySQL锁机制

文章目录定义锁的分类表锁(偏读)案例案例结论行锁(偏写)事务事务(Transaction)及其ACID属性并发事务处理带来的问题事务四大隔离级别行锁案例行锁定基本演示无索引行锁升级为表锁间隙锁危害面试题:常考查询如何锁定一行案例结论优化建议定义锁是计算机协调多个进程并发访问某一资源的机制。锁的分类从对数据操作的类型(读/写)分读锁(共享锁):针对同一份数据,多个读操作可以同时进行而不会互相影响。写锁(排它锁):当前写操作没有完成前,它会阻断其他写锁和读锁。从对数据操作的粒度分

2021-03-02 10:33:43 73

原创 慢查询日志

文章目录定义使用方法说明:对性能会带来一定影响查看是否开启及如何开启开启了慢查询日志后,什么样的SQL才会记录到慢查询日志里面呢使用案例定义MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阈值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值是10,意思是运行10秒以上的语句。由它来查看哪些SQL超出了我们的最大忍耐时间值,比如一条sql执行超过5秒钟,我们就算慢SQL,希望

2021-03-02 09:42:04 233

原创 查询优化(MySQL优化查询)

文章目录SQL性能下降的原因找出慢SQL语句:慢查询日志MySQL优化几大步骤优化手段:explain+慢SQL分析后进行优化时使用索引优化:建立索引,使用索引快速查询永远小表驱动大表: 类似嵌套循环Nested LoopORDER BY关键字优化GROUP BY关键字优化SQL性能下降的原因查询语句本身写的烂索引失效单值索引复合索引覆盖索引关联查询太多join(设计缺陷或不得已的需求)数据库服务器调优及各个参数设置不适当(缓冲、线程数等)找出慢SQL语句:慢查询日志MySQL

2021-03-02 09:34:28 103

原创 索引优化(索引失效)

文章目录索引优化单表两表三表索引失效索引优化单表建立表两表建立表总结:左连接建右表,右连接建左表。理由:以左连接为例,左表的信息全都有,所以右表需要查找,所以建立右表index。三表建表SQL总结:Join语句的优化尽可能减少Join语句中的NestedLoop的循环总次数:“永远用小结果集驱动大的结果集”。优先优化NestedLoop的内层循环。保证Join语句中被驱动表上Join条件字段已经被索引。当无法保证被驱动表的Join条件字段被索引且内存资源充足的

2021-03-01 23:24:29 225

原创 Explain优化分析

文章目录MySQL查询优化器Explain:查看执行计划用途使用方法执行计划包含的信息MySQL查询优化器当你写入一个select查询语句,Mysql底层会有查询优化器来对你的拆线呢语句给出Mysq自己的理解。人的理解与机器的理解存在偏差,从而造成查询性能变慢这一重大影响。为了让人能够迎合机器的理解去更好的书写sql查询语句,我们需要对已存在的sql语句进行分析,看存在哪些问题才使得机器难以快速执行。而分析的手段就是Explain计划分析。Explain:查看执行计划使用EXPLAIN关键字可以模

2021-03-01 22:39:16 64

原创 MySql索引

文章目录联合查询:7种索引定义索引两大用途:查询、排序缺点mysql索引分类创建语法mysql索引底层数据结构需要创建索引的主要情况哪些情况不需要创建索引Query Optimizer:查询优化器联合查询:7种索引定义索引(Index)是帮助MySQL高效获取数据的数据结构。可以得到索引的本质:索引是数据结构。你可以简单理解为“排好序的快速查找数据结构”。数据本身之外,数据库还维护着一个满足特定查找算法的数据结构,这些数据结构以某种方式指向数据,这样就可以在这些数据结构的基础上

2021-03-01 21:52:05 91

原创 mysql架构介绍

Mysql架构介绍和其它数据库相比,MySQL有点与众不同,它的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎的架构上,插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取相分离。这种架构可以根据业务的需求和时机需要选择合适的存储引擎。从上到下,连接层,服务层,引擎层,存储层mysql两大主要存储引擎查看命令看你的mysql现在已提供什么存储引擎:show engines;看你的mysql当前默认的存储引擎:show variables like ‘%stor

2021-03-01 20:03:32 57

原创 类的三大特性

文章目录面向对象的三大特征封装性封装方式一:Java Bean:封装方式二:权限修饰符二、继承多态面向对象的三大特征封装(Encapsulation)继承(Inheritance)多态(Polymorphism)封装性隐藏对象内部的复杂性,只对外公开简单的接口。便于外界调用,从而提高系统的可扩展性、可维护性。通俗的说,把该隐藏的隐藏起来,该暴露的暴露出来。这就是封装性的设计思想。封装方式一:Java Bean:Java中通过将数据(成员变量)声明为私有的(private),再提供公共的(

2021-03-01 15:54:54 284

原创 代码块

注意:静态代码块的执行时机:类的加载过程非静态代码块执行时机:创建类对象时

2021-03-01 15:35:07 73

原创 Set、HashSet、LinkedHashSet源码分析及底层原理

文章目录SetHashSet底层原理HashSet的实现原理总结源码分析LinkedHashSetLinkedHashSet底层原理源码分析SetSet用于存储不重复的元素集合,它主要提供以下几个实例方法:将元素添加进Set:boolean add(E e)将元素从Set删除:boolean remove(Object e)判断是否包含元素:boolean contains(Object e)Set特点Set实际上相当于只存储key、不存储value的Map。我们经常用Set用于去除重复

2021-03-01 13:45:59 206

原创 Java字符串大小比较——compareTo()方法

方法介绍compareTo()方法用于判断一个字符串是大于、等于还是小于另一个字符串。判断字符串大小的依据是根据它们在字典中的顺序决定的。语法:str1.compareTo(str2);compareTo()的返回值是int,它是先比较对应字符的大小(ASCII码顺序)如果字符串相等返回值0如果第一个字符和参数的第一个字符不等,结束比较,返回他们之间的差值(ascii码值)(负值前字符串的值小于后字符串,正值前字符串大于后字符串)如果第一个字符和参数的第一个字符相等,则以第二个字符和参数的第

2021-03-01 13:43:20 5261

原创 HashTable源码分析及底层原理

文章目录HashTabled概述源码分析成员变量构造函数get方法put方法总结HashTabled概述Hashtable是个古老的Map实现类,JDK1.0就提供了。不同于HashMap,Hashtable是线程安全的。Hashtable实现原理和HashMap相同,功能相同。底层都使用数组+链表结构,查询速度快,很多情况下可以互用。与HashMap不同,Hashtable不允许使用null作为key和 value与HashMap一样,Hashtable 也不能保证其中 Key-Value对的

2021-02-07 22:31:42 529 1

空空如也

空空如也

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

TA关注的人

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