自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ADT和OOP学习心得

java中的ADT和OOP学习

2022-06-17 20:48:11 222

原创 ConcurrentHashMap

目录1、ConcurrentHashMap2、ConcurrentMap3、ConcurrentHashMap1、ConcurrentHashMap在JDK1.4之前只有vector和HashTable是线程安全集合,在JDK 1.5时开始增加了安全的Map接口ConcurrentHashMap和线程安全的队列BlockingQueue通过继承关系图可知:ConcurrentHashMap是HashMap的安全版本2、ConcurrentMap也是键值对形式来..

2022-04-17 19:12:55 1575

原创 自定义Starter-4

目录1、starter的启动规范SpringBoot中starter是一个很重要的机制,能够抛弃以前繁杂的依赖和配置,将其统一集成到starter(场景启动器)。可以通过引入SpringBoot为我们提供的场景启动器,再进行少量的配置就能够得到相应的功能,会自动扫描并将要加载的信息启动相应的默认配置。1、starter的启动规范SpringBoot中提供了许多的starter,第三方也可以自定义starter,为了进行区分,starter从命名上进行了如下规范:spring官方提供的

2022-04-13 13:47:26 281

原创 SpringBoot自动装配原理-3

1、Application典型springBoot应用的启动,一般在项目的根路径下面,一般是XXXApplication的入口类,入口会有main方法,这个是一个标准的java程序的入口。package com.znn;import org.mybatis.spring.annotation.MapperScan;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoc..

2022-04-13 09:55:50 470

原创 SpringBoot和Mybatis的整合-2

使用数据库db0下面的表user进行测试。1、整合步骤1.1、引入mybatis的starter以及mysql依赖首先将mybatis的starter加入到maven管理,该依赖是mybatis提供的,引入该starter之后,会自动加载许多类。 <!--mybatis依赖--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <arti..

2022-04-12 11:19:13 709

原创 SpringBoot-1

目录1、学习内容3、SpringBoot快速入门3.1、第一步设置SpringBoot的parent3.2、导入SpringBoot对于web的支持3.3、编写SpringBoot应用3.4、编写启动类3.5、运行服务3.6、测试1、学习内容基于SpringBoot的爬虫项目2、了解SpringBootspringBoot是由spring框架延伸出来的,SpringBoot是一个快速开发框架,可以快速搭建出一个基于SpringBoot框架体系的应.

2022-04-12 10:23:00 257

原创 设计模式1

创建型模式特点和分类关注的问题:创建对象,将对象的创建和使用分离,这样的目的可以降低代码的偶尔度的问题单例模式、工厂模式、抽象工厂模式、建造者模式、原型模型单例模式(Singleton Pattern)单例介绍定义:单例模式(Singleton Pattern):保证一个类只有一个实例,并提供一个访问他的全局访问点单例类图:单例中包含的角色:单例类:包含一个实例且能自行创建这个实例类单例模式特点:1、单例类只有一个实例对象2、单例对象必须由单例..

2022-01-13 18:40:29 374

原创 设计模式2

目录1、创建型模式特点和分类2、单例模式(Singleton Pattern)2.1、单例介绍2.2、单例模式特点:2.3、代码演示—单例的实现有8种(1)饿汉式(静态常量)(2)饿汉式(静态代码块)(3)懒汉式(线程不安全)(4)懒汉式(线程安全,同步方法)(5)懒汉式(线程安全,同步代码块)(6)双重检查(7)静态内部类(8)枚举方式2.4、单例再探究①优点:②缺点:③适用场景:2.5、Java应用spring中的单例1、创

2021-12-10 11:24:38 413

原创 设计模式1

目录1、认识设计模式1.1、设计模式的概念1.2、优点:1.3、23种设计模式1.4、设计模式中重要原则1、认识设计模式1.1、设计模式的概念 是一套被反复使用,被多数人知晓,代码设计经验的总结。它是解决特定问题的一系列的套路。是前任代码设计的经验总结。目的是提高代码的可用性,代码的可读性和可靠性。1.2、优点:①代码复用:减少开发时间, 提高开发效率。②简洁易维护:便于代码的可读性和代码的维护。③设计模式使开发工程化,规范化。1.3、23...

2021-12-10 10:52:05 98

原创 Redis高可用介绍

目录1、Redis高可用介绍高可用基础-主从复制2、复制原理3、主从复制配置4、高可用方案-哨兵模式sentinel5、哨兵模式简介5.1、sentinel工作过程:5.2、关于sentinel的三个定时任务:5.3、哨兵原理5.5、sentinel.conf配置讲解6、哨兵模式配置7、哨兵模式的优点8、哨兵模式的缺点1、Redis高可用介绍高可用基础-主从复制Redis的复制功能是支持将多个数据库之间进行数据同步,主数据库可以进行读写操作

2021-12-01 22:58:19 995

原创 Redis缓存数据一致性及问题

目录1、高客户端连接服务端处理2、Redis缓存数据一致性及问题2.1、如何保证缓存和数据库数据一致性3、缓存问题3.1、缓存穿透-查不到3.2、缓存击穿-量太大,缓存过期3.3、缓存雪崩1、高客户端连接服务端处理 当客户端比较多,高并发时,服务端可能处理不过来,服务端可能会崩溃;所以在服务端采用集群方式处理,集群方式,即存在多个服务器;这个时候需要有一个管理者nginx,每当客户端请求时,由nginx根据ip进行哈希等来处理分配服务端,使得负载...

2021-12-01 22:40:28 4513

原创 Java连接Redis

目录1、Java连接Redis2、Jedis介绍:1、Java连接Redis在java的体系下,有三个常用的Redis的客户端:jedis、Redisson和Lettuce。Redis的客户端:1.1、Jedis:其API提高了比较全面的Redis命令的支持,暴露了Redis比较底层的Redis的API,和Redis的命令保持一致。1.2、Redisson:实现了分布式可可扩展的Java的数据结构,提供了分布式相关的操作。比如分布式锁、分布式集合,但是和jedis相比,不支持字符

2021-11-29 23:07:56 315

原创 Redis配置文件介绍

目录1、redis配置文件介绍2、包含3、NETWORK:网络4、GENERAL:通用4、SNAPSHOTTING 快照5、SECURITY 安全6、CLIENTS 客户连接限制7、MEMORY MANAGEMENT 内存管理8、APPEND ONLY MODE 模式 aof配置1、redis配置文件介绍启动的时候,就是通过读取配置文件来启动配置文件unit单位是对大小写不敏感2、包含3、NETWORK:网络bind 127.0.0.1 -

2021-11-29 22:43:14 776

原创 Redis内存淘汰策略

Redis内存淘汰策略

2021-11-29 22:40:04 131

原创 SSM整合(springMVC和Mybatis)

目录1、整合思路2、数据准备2.1、创建表user2.2、添加数据2.3、依赖Jar包3、开发dao层3.1、spring-mvc.xml3.2、mapper.java接口(UserMapper.java)3.3、Mapper.xml文件(UserMapper.xml)3.4、实体类(User.java)3.5、spring-core.xml3.6、Service层(UserService.java)3.7、Contrller层(UserControlle

2021-11-28 18:30:23 446

原创 处理器和映射器的配置

目录1、处理器和映射器的配置1.1、用户类:1.2、用户列表页面:jsp文件2、基于注解形式实现2.1、组件的配置文件,scources目录下的配置文件2.2、基于注解的Handler3、基于非注解形式实现3.1、在各组件的配置文件中,分析处理器适配器3.2、基于非注解形式的handler1、处理器和映射器的配置SpringMVC中对组件的配置形式主要有两种,注解形式和非注解形式给定需求:展示用户列表1.1、用户类:public class Us

2021-11-28 18:09:16 475

原创 Redis事务详述

1、Redis事务Redis事务可以一次执行多个命令;Redis事务就是一次性,顺序性,排他性的执行一个队列中的一系列的命令;Redis不保证原子性;Redis中,单条命令是原子执行的,但是事务不保证原子性,且没有回滚的概念。事务中任意命令执行失败,其余的 命令仍会执行。Redis事务是没有隔离级别的概念批量操作在发送exec命令前被放入队列,并不会实际执行,也就不存在事务内的查询要看到事务里的更新,事务外查询不能看到事务命令Redis的事务机制将批量操作的命..

2021-11-26 23:02:56 222

原创 Redis持久化介绍

1、Redis持久化数据安全性问题,将内存数据存储到磁盘当中,即持久化问题。redis持久化有两种方式,RDB和AOF。2、RDB:内存快照2.1、内存快照:就是指内存中数据在某一时刻的状态记录。RDB是Redis中默认的持久化方案。RDB持久化会将内存中的数据写入到磁盘中,在指定的目录下生产一个dump.rdb文件。Redis重启时会加载dump.rdb文件恢复数据。Redis中提供了两个命令生成RDB文件,分别save和bgsave.save:在主进程中执行,会导致阻塞。..

2021-11-26 21:40:20 178

原创 SpringMVC2(使用详述)

目录1、Spring MVC使用Demo创建SpringMVC项目2、SpringMVC依赖jar包3、添加web.xml配置文件配置前端控制器4、创建spring-mvc.xml配置文件5、编写controller层6、编写jsp页面7、部署服务启动服务器1、Spring MVC使用Demo按照项目创建步骤从零开始搭建一个SpringMVC项目创建SpringMVC项目打开Idea,选择new project创建maven管理的项目,如上操作。

2021-11-13 22:51:20 449

原创 SpringMVC1

目录1、SpringMVC介绍1.1、课程内容2、SpringMVC介绍3、Web服务演进过程4、Spring MVC的架构5、SpringMVC运行原理6、SpringMVC使用Demo1、SpringMVC介绍1.1、课程内容1、了解springMVC2、SpringMVC的运行原理3、了解SPringMVC中各个组件的作用4、SPringMVC使用demo5、组件的使用形式:通过XML配置或者注解形式6、SSM整合步骤7、SpringMV

2021-11-13 22:42:50 324

原创 Redis1开篇

目录1、Redis 介绍课程内容2、了解Redis2.1、Redis介绍2.2、Redis的优点:2.3、Redis的基本操作2.3.1、select2.3.2、dbsize2.3.3、keys2.3.4、flushdb flushall2.4、Redis的单线程的2.5、Redis的基本数据类型2.5.1、String:字符串①set②get③exists④append⑤strlen⑥incr decr1、Redis 介绍

2021-11-12 21:55:08 775

原创 AOP的使用及SSM框架整合

1、AOP的使用spring中整合AspectJ框架AspectJ本身是一个单独的AOP框架,基于Java实现的,不是Spring的一部分,和SPring一块实现AOP操作AOP的实现有两种形式:基于XML配置形式实现基于注解形式实现1.1、基于XML配置形式实现AOP1.1.1、引入依赖除了AOP依赖,还需要将基础核心依赖引入 <!--Spring的AOP jar包--> <dependency> &..

2021-11-09 17:51:46 763

原创 Spring中DI和AOP介绍

目录1、Spring中DI介绍1.1、基于配置文件形式注入依赖1.2、基于注解形式注入依赖2、Spring中AOP技术2.1、Java程序的执行流2.2、使用代理模式的Java程序执行流2.3、Spring AOP的工作原理2.4、AOP相关术语1、Spring中DI介绍DI(Dependency Injection):依赖注入bean对象中需要依赖一些其他组件或者对象,依赖关系由容器在运行时决定,简单理解DI就是给对象赋初值。两种方式处理依赖注入:①:基于配置形

2021-11-06 22:23:46 832

原创 JVM续篇—最精彩篇—终极篇

目录1、分代回收:2、内存的分配和回收3、空间分配担保机制:4、垃圾回收器4.1、Serial收集器4.2、ParNew收集器4.3、Parallel Scavenge收集器4.4、Serial Old收集器4.5、Parallel Old收集器4.6、CMS收集器4.7、G1收集器1、分代回收:我们从一个object1来说明其在分代垃圾回收算法中的回收轨迹。1.1、object1新建,出生于新生代的Eden区域。1.2、minor GC,ob

2021-11-05 21:07:57 129

原创 JVM垃圾回收

1、JVM垃圾回收1.1、GC 原理GC(Varbage Collection:垃圾回收):将堆内存中不再被使用的对象进行回收,GC中用于回收的方法称之为收集器。GC需要消耗一些资源和时间,对Java堆对象的生命周期特征进行分析,按照新生代、老年代的方式对对象进行回收,以尽可能缩短GC对应用造成的暂停。对于新生代的对象的收集称之为minor GC/Young GC对老年代的对象的收集称之为Full GC程序中主动调用System.gc(),强制执行GC为Full GC。不同的对象..

2021-11-04 15:16:56 92

原创 jvmCPU问题的排查

<一>试题1:某服务器CPU使用率达到99%,排查是哪个程序的哪个线程导致的高CPU。思路: 1.1、先找到耗CPU高的进程; 1.2、找到耗CPU高的线程; 1.3、找到耗CPU高的线程对应的业务代码; 操作: 1.1、执行“top -c”命令,显示进程运行信息列表,键入大写P,按CPU使用率降序排列: 1.2、获取到进程PID为10765的进程,使用CPU资源最高19.9%; 至此,已找到耗CPU最高的进程,进程PID为10765,后续命令中需要.

2021-11-04 14:29:40 949

原创 JVM配置参数续

目录1、jps:显示所有java进程pid2、jinfo:实时查看和调整虚拟机参数3、jstat:监控虚拟机各种运行状态信息4、option:5、jmap:生成堆转储快照6、jhat:Java堆分析工具7、jstack:堆栈跟踪工具8、线程状态9、JDK可视化工具jconclejvisualvm1、jps:显示所有java进程pidjps(Java Virtual Machine Process Status Tool)是JDK 1.5提供的一个显示

2021-11-04 14:11:31 219

原创 史上最全的JVM配置参数大全

1、JVM参数配置我们学习Java GC机制的目的是为了实用,也就是为了在JVM出现问题时分析原因并解决之,JVM监控与调优主要的着眼点在于如何配置、如何监控、如何优化3点上。在Java虚拟机的参数中,有3种表示方法标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容; 非标准参数(-X),默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容;非Stable参数(-XX),此类参数各个jvm实现会有所不同,将来可能会随时取消,需要慎重使用...

2021-11-04 14:04:13 21291 1

原创 Spring之IOC(Inversion Of Control)-控制反转

目录1、IOC是什么2、IOC能做什么3、Spring容器管理对象步骤1、maven管理依赖—直接复制即可2、给定容器的配置文件—直接复制即可3、IOC容器管理对象4、通过容器来获取对象—重新建一个类,里面内容如下4、总结:Spring IOC操作5、Spring中IOC中容器介绍6、Spring中Bean的实例化方式6.1、基于XML配置方式装配bean6.2、使用注解方式装配Bean1、IOC是什么IOC(Inversion of Contro

2021-11-01 22:42:38 4229 2

原创 Spring框架介绍

目录1、Spring的基础概述2、Spring的好处:3、Spring的体系结构4、核心容器5、数据访问/集成6、Web页面7、其他模块1、Spring的基础概述Spring 是最受欢迎的企业级 Java 应用程序开发框架,使用 Spring 框架来创建性能好、易于测试、可重用的代码。Spring 框架是一个开源的 Java 平台,Spring 是轻量级的框架,其基础版本只有 2 MB 左右的大小。Spring 框架的核心特性是可以用于开发任何 Java 应用程序

2021-11-01 22:11:42 431

原创 网络编程下篇—AIO

1、AIO模型介绍AIO(Asynchronous I/O) 异步非阻塞模型, 在java的jdk1.7版本开始支持AIO,AIO模型需要操作系统的支持。AIO最大的特性是异步能力,对socket和I/O起作用。异步IO模型类似的与NIO模型不同,读写操作为例,只需直接调用read和write的API即可,这方法都是异步的对于读操作:当有流可读时,系统会将可读的流传入到read方法的缓冲区,并通知应用程序读写都是异步的,完成之后会主动调用回调函数。在JDK 1.7中,..

2021-10-29 13:24:31 417

原创 搞懂select、poll、epoll

目录1、搞懂select、poll、epoll2、select调用过程缺点3、poll4、epollepoll使用步骤5、触发模式6、EPOLLET触发模式的意义优点7、总结1、搞懂select、poll、epollIO多路复用(IO Multiplexing) 是这么一种机制:程序注册一组socket文件描述符给操作系统,表示“我要监视这些fd(文件描述符)是否有IO事件发生,有了就告诉程序处理”。IO复用模型:很多操作系统都实现了select和

2021-10-29 10:52:26 581

原创 网络编程中篇续—NIO中重要组件—通道、Buffer、复用器

目录 NIO中重要组件1、channel:通道1.1、理解1.2、通道的使用1.3、channel主要实现类2、Buffer:缓存2.1、理解2.2、基本使用2.3、Buffer 的底层实现2.4、Buffer 类型:2.5、Buffer读写操作3、selector:复用器3.1、理解3.2、Selector的使用3.3、SelectableChannel抽象类介绍3.4、SelectionKey抽象类的介绍4...

2021-10-28 16:46:16 234

原创 JVM长篇

目录1、类加载的详细过程1.1、 分别介绍几个过程的功能:加载:1.2、举个使用类加载的例子:2、JVM的内存模型2.1、Java的内存布局2.2、程序计数器2.3、虚拟机栈2.4、本地方法栈2.5、堆2.6、方法区1、类加载的详细过程 类被加载到内存开始到写出内存,整个生命周期分为7个阶段:加载、验证、准备、解析、初始化、使用、卸载1.1、 分别介绍几个过程的功能:加载:在加载阶段,虚拟机需要完成3件事1....

2021-10-27 22:45:34 101

原创 动态SQL,持续更新中.......

1、输出映射输出类型:resultType和resultMap使用resultType,数据库的字段名和pojo类的属性名保持一致才能映射成功如果字段名和属性名完全不一致,没有创建出自定义对象如果字段名和属性名部分一致,会创建出自定义对象,对相同的字段和属性会完成映射使用resultMap可以显性指定字段名和属性名的映射关系不管输出是单个对象(selectOne)还是多个结果集(selectList),在mapper.xml中resultType或者resultMap的类型...

2021-10-24 21:12:09 2163 3

原创 Junit测试介绍及mybatis的接口绑定方法

目录1、junit的使用步骤2、Junit介绍3、mybatis的接口绑定方法3.1、XML方法的方法3.2、注解形式1、junit的使用步骤1.1、在pom.xml文件中添加Junit依赖可复制版:<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> .

2021-10-24 17:07:33 3795

原创 JVM长篇-—jvm基础知识

目录1、Java的跨平台性2、JVM概念3、JRE/JDK/JVM介绍4、JVM的生命周期5、JVM的工作过程5.1、Java代码如何执行的5.2、JVM工作过程6、类加载子系统7、运行时数据区域7.1、执行引擎8、类加载机制8.1、类加载时机8.2、类加载器1、Java的跨平台性JVM是用C/C++开发,生成机器码,不能跨平台,不同的平台需要安装不同的JVM。Java源代码编译会生成字节码.class文件,JVM负责将字节码文件翻译成

2021-10-22 21:47:49 160

原创 mybatis框架

目录1、mybatis框架1.1、JDBC编程及JDBC存在问题2、mybatis框架介绍3、mybatis的使用demo4、mybatis中的配置文件讲解4.1、全局配置文件4.2、mapper.xml配置文件解析4.3、编程详解1、mybatis框架①JDBC编程及JDBC编程存在问题②mybatis的介绍及框架原理③mybatis的使用demo④配置文件的介绍⑤mybatis的使用方式1.1、JDBC编程及JDBC存在问题存在..

2021-10-17 17:32:10 237

原创 数据库连接池

目录连接池连接池的使用1、连接池1.1连接池的作用 在JDBC请求MySQL数据库的SQL操作都要进行连接、释放的过程,在并发量大请情况下,频繁的连接和释放势必会消耗系统性能。可以使用连接复用的方式来让连接重复使用1.2连接池工作原理: 数据库连接池的基本思想为数据连接建立一个缓冲池,预先在池中放入一定数量的连接,当有数据库操作时,在池中获取一个空闲的连接来支持数据库操作,当当前的数据库操作完成之后,将连接放回池中,1.3连接池的优势:1.3....

2021-10-17 15:15:28 85

原创 SQL注入及解决方案

目录SQL注入问题及解决方案SQL注入问题解决方案:JDBC处理事务1、SQL注入问题及解决方案SQL注入:利用非法的SQL拼接来达到入侵数据库的目的以登录为例:/** * 登录方法 */ boolean doLogin(String name, String passwd) { boolean result = false; try { //1、加载数据库驱动 MySQL-》com.my

2021-10-14 16:02:04 3381

空空如也

空空如也

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

TA关注的人

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