自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(100)
  • 资源 (2)
  • 收藏
  • 关注

原创 kafka 常见面试题

kafka 面试总结

2022-04-15 11:07:26 2745

原创 springSecurity 学习(三)Spring Security常见的拦截器

Spring Security常见的拦截器1 . org.springframework.security.web.context.SecurityContextPersistenceFilter 首当其冲的一个过滤器,作用之重要,自不必多言。 SecurityContextPersistenceFilter主要是使用SecurityContextRepository在session中保存或更新一个 SecurityContext,并将SecurityContext给以后的过...

2021-01-07 09:49:10 2490

原创 springSecurity 学习(二)表单认证

新建 MyWebSecurityConfig类 继承WebSecurityConfigurerAdapter,再给MyWebSecurityConfig 类上加注解@EnableWebSecurity,重写config方法1、默认表单验证@EnableWebSecuritypublic class MyWebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void c...

2021-01-04 14:56:56 288

原创 springSecurity 学习(一)创建springSecurity项目

创建springsecurity项目的方式有很多,最简单的是 使用Spring Initializr工具,点击下一步,输入项目基本信息,选择jdk版本再下一步,选择要使用的组件完成项目创建。项目目录如下打开pom文件,<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.o.

2020-12-31 14:49:20 920

原创 静态代码块、静态变量,构造代码块、实例变量的执行顺序

静态代码块、静态变量,构造代码块、实例变量的执行顺序1、父类和子类有同名同类型的属性时public class Test { public static void main(String[] args) { // 使用多态 Parent chidParent = new Child(); System.out.println("Parent:" + chidParent.getAge()); //40 System.out.prin

2020-11-02 10:15:56 155

原创 SpringBoot 开发中 HttpServletRequest获取得三种方式

得到HttpServletRequest的三种方式方式一:Controller方法参数在Controller的方法参数上写上HttpServletRequest,这样每次请求过来得到就是对应的HttpServletRequest。@GetMapping("/test")public void test(HttpServletRequest request) {}方式二:从RequestContextHolder上下文获取@GetMapping("/test")public voi

2020-09-28 16:04:32 16550 4

原创 Spring元数据Metadata

元数据元数据:数据的数据,比如Class就是一种元数据可以看到顶层接口有两个:ClassMetadata和AnnotatedTypeMetadata注解上的注解,Spring将其定义为元注解(meta-annotation),如@Component标注在@Service上,@Component就被称作为元注解。后面我们就将注解的注解称为元注解。ClassMetadata:对Class的抽象和适配此接口的所有方法,都是获取class上的元素public interfac...

2020-09-21 10:55:18 1593 1

原创 wps2016 对于doc文档 不识别<![CDATA[]]>bug

最近在开发下载word文档使用freemarker控制doc的xml,已实现模板+数据的方式,生成doc文档。偶然一次机会发现,发现wps 对doc文档,用<![CDATA[]]>包起来的特殊字符,wps无法正常显示如下面一哥doc文档<?xml version="1.0" encoding="UTF-8" standalone="yes"?><?mso-application progid="Word.Document"?><w:wordDocu

2020-09-16 14:37:28 556

原创 springBoot进行表单校验

一、前言在进行表单提交时,一般会对参数进行校验,及时返回给用户进行提示,使用户能够正确输入。二、所需依赖包这里用的是 SpringBoot 配置项目,本文讲解的重点是后端接口,导入 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</arti

2020-09-04 16:01:20 731

原创 Spring Cloud Alibaba(二)使用Nacos进行服务注册和发现和配置中心

使用Nacos服务注册和发现服务注册和发现是微服务治理的根基,服务注册和发现组件是整个微服务系统的灵魂,选择合适的服务注册和发现组件至关重要,目前主流的服务注册和发现组件有Consul、Eureka、Etcd等。 随着Eureka的闭源,Spring cloud netflix-oss组件大规模的进入到了维护期,不再提供新功能,spring cloud alibaba受到开源社区的大力拥护。1、新建一个Spring Boot项目,在pom文件如下<?xml version="1.0" e

2020-08-18 15:11:05 547

原创 Spring 中的事件

spring 中的事件说到事件,可能脑海中最先浮现的就是 “订阅-发布”模式。通俗点讲日常使用的各种 listener,listener去监听事件源,如果被监听的事件有变化就会通知listener,从而针对变化做相应的动作。Java中提供了基本的事件处理基类:EventObject:所有事件状态对象都将从其派生的根类; EventListener:所有事件侦听器接口必须扩展的标记接口;Spring 中的事件机制在 Spring 容器中通过ApplicationEvent类和Appl...

2020-08-11 16:32:52 432

原创 sharding-jdbc3.1.0整合SpringBoot 2.3.2数据分表

当数据量比较大的时候,比如单个表的数据量超过了1000W的数据,这时可以考虑将数据存储在不同的表中,比如将user表拆分为四个表user_0、user_1、 user_2、user_3装在四个表中。此时如图所示:数据库准备数据库类型 数据库 ip 主 readwrite 192.168.39.129 从 readwrite 192.168.39.130 从 readwrite 192.168.39.131 在主库初始化Mysql数.

2020-07-28 14:58:39 704

原创 springBoot 2.3.1整合mybatis-plus

1、pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd

2020-07-27 15:06:38 623

原创 Mysql数据库主从搭建

机器准备准备三台centos7机器,已安装mysql5.7三台机器的ip分别为:192.168.39.129 主 192.168.39.130 从 192.168.39.131 从安装可参考文章https://blog.csdn.net/hzau_itdog/article/details/107560301在三台机器上分别创建1个数据库readwrite,字符编码为utf8:CREATE DATABASE `readwrite` CHARACTER SET utf8 COLLA

2020-07-27 10:02:51 357

原创 CENTOS7安装Mysql 5.7

1、下载yum源 wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm下载成功!2、本地安装yum源3、检查 mysql 源是否安装成功 yum repolist enabled | grep "mysql.*-community.*"出现以下信息,说明安装成功:mysql-connectors-community/x86_64 MySQL Conne...

2020-07-24 15:36:48 241

原创 数据库MySQL经典面试题之SQL语句

学生表CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `student_name` varchar(255) DEFAULT NULL, `age` datetime DEFAULT NULL, `sex` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;

2020-07-20 15:41:00 1553 5

原创 centos7关闭防火墙

#停止firewallsystemctl stop firewalld.service#禁止firewall开机启动systemctl disable firewalld.service开机以命令模式启动,执行:systemctl set-default multi-user.target开机以图形界面启动,执行:systemctl set-default graphical.target...

2020-07-15 12:37:41 184

原创 mysql按字符串数字排序处理

公司不知是谁设计的表菜单排序字段竟然设置成了字符串。CREATE TABLE `s_menu` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `PARENT_ID` int(11) DEFAULT NULL, `ORDER` varchar(5) DEFAULT NULL, `MENU_NAME` varchar(255) DEFAULT NULL, `MENU_URL` varchar(255) DEFAULT NULL, `MENU_ICO

2020-07-14 10:30:27 458

原创 ReentrantReadWriteLock源码解析

什么是读写锁读写锁是一对(ReentrantReadWriteLock下的writeLock和readLock), 写锁是独占锁,读锁是公共锁,读读共存,只要有写就互斥。是否互斥读写读否是写是是类的继承体系ReentrantReadWriteLock中的三个主要内部类:(1)ReentrantReadWriteLock本身实现了ReadWriteLock接口,这个接口只提供了两个方法readLock()和writeLock();(2)同步器,包含一个继承

2020-07-13 16:53:49 124

原创 freemarker导出docx文档

导出原理docx是一个压缩包,我们新建一个docx文档,添加一些内容,后缀名改为.zip进行解压其中word下面结构如下其中document.xml主要就是文档内容。打开document.xml<?xml version="1.0" encoding="UTF-8" standalone="yes"?><w:document xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanv

2020-06-18 14:20:25 1320

原创 ReentrantLock源码解析

ReentrantLock继承体系Lock接口中主要定义了 获取锁、尝试获取锁、释放锁、条件锁等几个方法。构造方法//非公平锁public ReentrantLock() { sync = new NonfairSync();}//true公平锁,false非公平锁public ReentrantLock(boolean fair) { sync = fair ? new FairSync() : new NonfairSync();}主要内部类abstract s

2020-06-11 18:00:50 173

原创 各种锁的名词解释

1、公平锁/非公平锁公平锁,是按申请锁的先后顺序依次获取锁。非公平的锁,不是按照线程申请的顺序获取锁,可能发生后申请线程比先申请的线程先获得锁。ReentrantLock中可以通过构造方法指定是否为公平锁,默认为非公平锁,非公平锁的优点在于吞吐量大。synchronized一直都是非公平锁。2、可重入锁可重入锁,是指一个线程获取锁之后再尝试获取锁时会自动获取锁。ReentrantLock和synchronized都是可重入锁。3、独享锁/共享锁独享锁,也叫互斥锁,是指锁一次只能被一个线程持

2020-06-11 15:59:52 849

原创 AQS源码解析

简介 AQS的全称是AbstractQueuedSynchronizer,又叫队列同步器,是用来构建锁或者其他同步组件的基础框架。AQS使用int成员变量表示同步状态,通过内置的FIFO队列来完成资源获取,线程排队的工作。继承体系其父类AbstractOwnableSynchronizer重要的源码如下private transient Thread exclusiveOwnerThread;protected final void setExclusiveOwnerThread(Threa

2020-06-10 15:54:08 114

原创 volatile原理以及使用场景

volatile的特性volatile是一个特殊的修饰符,只有成员变量才能使用它。 当一个共享变量被volatile修饰时,它会保证修改的值会立即被更新到主存,当有其他线程需要读取时,它会去内存中读取新值。volatile特性一:内存可见性,即线程A对volatile变量的修改,其他线程获取的volatile变量都是最新的。volatile特性二:可以禁止指令重排序volatile关键字保证了操作的可见性,但是不能保证对变量的操作是原子性。volatile的原理加入volatile.

2020-06-08 16:52:56 2047

原创 Synchronized锁的升级

Java对象头Synchronized用的锁是存在java对象头里的。如果对象是数组,虚拟机则使用三个字宽(Word)存储对象头,如果是非数组类型则用2个字宽存储,在32位虚拟机 1个字宽=4个字节32位jvm java对象头的存储结构 锁状态 25bit 4bit 1bit 2bit 23bit 2bit 是否是偏向锁 锁标志位 无锁状态 对象的hashCode 对象分代年龄 0 01 偏向锁 线程ID.

2020-06-08 15:24:43 181

原创 sleep,yield,wait,join区别

sleep有两个重载方法sleep(long millis) 线程睡眠 millis 毫秒 sleep(long millis, int nanos)线程睡眠 millis 毫秒 + nanos 纳秒staticvoid sleep(longmillis) 在指定的毫秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响。 staticvoid sleep(longmillis, intnanos)...

2020-05-25 11:35:33 157

原创 从N个数中取出三个数,求有多少种三个数的和是0,代码以及算法分析

从N个数中取出三个数,求有多少种三个数的和是0?很容易想到如下代码public static int count (int[]a){ int count=0; int N=a.length; for(int i=0;i<N;i++){ for(int j=i+1;j<N;j++){ for(int k=j+1...

2020-04-26 14:12:54 817

原创 利用牛顿迭代公式开方

牛顿迭代公式牛顿迭代法(Newton's method)又称为牛顿-拉夫逊(拉弗森)方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。加入f(x)=0 的根为 r , 假设是 r的近似根,过(,f())做切线,与x轴交于(,0),则是比更接近r的近似值, 换项为,以此类推。。。为r的n...

2020-04-01 10:44:44 420

转载 判断一个数是否是素数

什么是素数?素数释义:曾称质数。一个大于1的正整数,如果除了1和它本身以外,不能被其他正整数整除,就叫素数。如2,3,5,7,11,13,17…。素数的性质...

2020-03-25 14:21:55 1401

原创 深入解析spring中用到的九种设计模式

深入解析spring中用到的九种设计模式第一种:单例模式spring容器中的bean默认是单例的,一般情况下用户不会自己创建Bean,而是交给容器去管理,spring不是通过私有化构造函数进行的单例模式控制。Spring框架对单例的支持是采用单例注册表的方式进行实现的。第二种:简单工厂简单又叫做静态工厂方法(StaticFactory Method)模式,传入对应的类型就可构建对应的对象...

2020-01-19 11:24:42 440

原创 java基础面试题

java基础面试题面试题1public class Test { public static void main(String[] args) { Parent p = new Child(); System.out.println("Parent:" + p.getAge()); //40 System.out.println("Par...

2020-01-17 11:15:55 490

原创 DispatcherServlet的url-pattern配置

背景由于搭建框架不是经常用到,一次搭建以后,会把代码copy来copy去,在最近学习spring源码时,搭建springmvc去配置化的测试工程时,对DispatcherServlet的url-pattern配置总是搞不清楚,所以写篇博客,以供自己参考DispatcherServlet常见的配置 <servlet> <servlet-name&...

2020-01-10 10:51:36 1011

原创 Spring5.1源码解析(二)spring整合springmvc去配置化的原理

springmvc与spring整合去除xml方式我们用xml方式整合spring与springMVC,通常用xml方式进行配置<web-app> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener...

2020-01-09 13:45:33 205

原创 Spring5.1源码解析(一)源码编译导入idea

一、编译前的准备介绍下环境jdk使用 jdk-11.0.5idea使用2019.2.4版本gradle使用gradle-5.6.3说明idea2019.3有bug,会造成源码构建失败1、下载gradle配置环境变量gradle下载地址gradle官网(https://gradle.org/releases/)在系统高级配置里配置环境变量我的gradl...

2019-12-27 12:26:25 813

原创 SpringMVC接收List型参数

前些时间给前端写了个接口,后端代码是这样的@RequestMapping(value="/sign/getSignList)public ResultVo getSignList(@RequestBody List<String> nameList){ return signService.getSignList(nameList);}我使用postman测试有结...

2019-09-23 17:22:58 546

原创 解决方案:Invalid character found in the request target. The valid characters are defined in RFC 7230

报错信息如下:从错误日志中看到Error parsing HTTP request header负责解析http请求的是org.apache.tomcat.util.http.parser.HttpParser,它对请求对URL中对字符做了限制,具体代码如下:IS_NOT_REQUEST_TARGET[]中定义了一堆not request target转换过来就是以下字符...

2019-09-03 15:02:36 4846 1

原创 Spring Cloud Alibaba(一)使用Nacos安装

Nacos的作用Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。安装Nacos下载地址:https://github.com/alibaba/nacos/releases本文版本:1.1.0安装Nacos之前确保已经有jdk8以上的环境并且配置了JAVA_HOME,否则启动会报...

2019-07-25 15:53:58 182

转载 excel2016设置单元格下拉选项工具类

/** * 单元格添加下拉菜单(不限制菜单可选项个数)<br/> * [注意:此方法会添加隐藏的sheet,可调用getDataSheetInDropMenuBook方法获取用户输入数据的未隐藏的sheet]<br/> * [待添加下拉菜单的单元格 -> 以下简称:目标单元格] * * @param @param workbook ...

2019-07-19 15:46:18 481

原创 jdk1.8集合框架源码解析(七)CopyOnWriteArrayList源码解析

一、简介CopyOnWriteArrayList是ArrayList的线程线程安全版本,其主要是通过volitle修饰数组本事保证写操作对其他线程可见性,写操作是使用ReentrantLock加锁,每次对数组的写操作,都完全拷贝一份新的数组来修改,修改完了再替换掉老数组,这样保证了只阻塞写操作,不阻塞读操作,实现读写分离。二、继承体系public class CopyOnWr...

2019-07-06 16:51:45 220

原创 js 中if(变量)的结果思考

js是一种弱类型的语言,if后面可以跟很多类型不用进行类型转换,如果不搞清楚状况对我们的使用,有非常大的障碍。1、nullvar a = null; if(a) { console.log("true") } else { console.log("false") };其结果为 false2、"null"var a = "null"; ...

2019-07-05 11:22:06 359

EditPlus5绿色版

EditPlus5 绿色版解压可用,命令行下输入a添加右键菜单,输入d删除右键菜单

2018-05-07

2018中级java工程师面试总结

2018年武汉java面试总结 内容从java基础数据库,框架几乎都包含进去

2018-03-30

空空如也

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

TA关注的人

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