- 博客(62)
- 收藏
- 关注
原创 重写WebMvcConfigurationSupport后SpringBoot自动配置失效
Bug实录 | 第一篇 :重写WebMvcConfigurationSupport后SpringBoot自动配置失效目录一、背景二、问题描述三、问题分析和猜想验证1. 问题分析附:SpringMVC请求处理流程(可略过)2. 猜想验证四、解决方案五、总结一、背景公司的项目前段时间发版上线后,测试反馈用户的批量删除功能报错。正常情况下看起来应该是个小BUG,可怪就怪在上个版本正常,且此次发版未涉及用户功能的改动。因为这个看似小BUG我了解到不少未知的东西,在这
2021-12-02 20:27:11
993
原创 mybatis plus使用报错:Caused by: java.sql.SQLException: sql injection violation, syntax error: syntax err
2021-11-16 10:24:14
657
原创 idea提交git失败
idea中,发布项目到gitee的Git中,当时按照这样的流程添加Git,然后push,提示:push to origin/master war rejected"。大概原因是:初始化项目时,远程仓库我建了README.md文件,而本地仓库与远程仓库尚未进行文件关联,因此需要将两个仓库的文件进行关联后提交。解决方案如下:1.切换到自己项目所在的目录,右键选择GIT BASH Here,Idea中可使用Alt+F122.在terminl窗口中依次输入命令:git pullgit pull orig
2021-10-24 09:20:02
2816
原创 push to origin/master was rejected错误解决方案
idea中,发布项目到OSChina的Git中,当时按照这样的流程添加Git,然后push,提示:push to origin/master war rejected"。大概原因是:初始化项目时,远程仓库我建了README.md文件,而本地仓库与远程仓库尚未进行文件关联,因此需要将两个仓库的文件进行关联后提交。解决方案如下:1.切换到自己项目所在的目录,右键选择GIT BASH Here,Idea中可使用Alt+F122.在terminl窗口中依次输入命令:git pullgit pull or
2021-10-10 20:30:46
291
原创 RESTful API接口设计标准及规范;
RESTful发展背景及简介网络应用程序,分为前端和后端两个部分。当前的发展趋势,就是前端设备层出不穷(手机、平板、桌面电脑、其他专用设备…)。因此,必须有一种统一的机制,方便不同的前端设备与后端进行通信。这导致API构架的流行,甚至出现"APIFirst"的设计思想。RESTful API是目前比较成熟的一套互联网应用程序的API设计理论。REST(Representational State Transfer)表述性状态转换,REST指的是一组架构约束条件和原则。 如果一个架构符合REST的约束条件
2021-10-09 16:15:30
1804
原创 人人开源renren-fast-vue
人人开源我的安装心得**renren-fast-vue**注意 node-sass问题首先npm install报错node-sass问题然后使用cnpm install完成npm run dev 时报错:Module build failed: Error: Node Sass does not yet support your current environment: Windows在vue项目中运行:npm i node-sass -D也报错npm install同样的问题最后使用:cnp
2021-09-29 21:04:30
390
原创 狂神RabbitMQ
RabbitMQ笔记一、中间件1、什么是中间件1、什么是中间件我国企业从20世纪80年代开始就逐渐进行信息化建设,由于方法和体系的不成熟,以及企业业务和市场需求的不断变化,一个企业可能同时运行着多个不同的业务系统,这些系统可能基于不同的操作系统、不同的数据库、异构的网络环境。现在的问题是,如何把这些信息系统结合成一个有机地协同工作的整体,真正实现企业跨平台、分布式应用。中间件便是解决之道,它用自己的复杂换取了企业应用的简单。中间件(Middleware)是处于操作系统和应用程序之间的软件,也有人认
2021-09-07 09:39:35
1539
原创 狂神Git笔记
Git笔记狂神聊Git学习git之前,我们需要先明白一个概念版本控制!1、什么是版本控制版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。实现跨区域多人协同开发追踪和记载一个或者多个文件的历史记录组织和保护你的源代码和文档统计工作量并行开发、提高开发效率跟踪记录整个软件的开发过程减轻开发人员的负担,节省时间,同时降低人为错误简单说就是用于管理多人协同开发项目
2021-09-07 09:38:26
1015
原创 狂神Javaweb笔记
javaweb一、基本概念1、前言web,网页的意思 , www.baidu.com静态Web:提供给所有人看数据不会发生变化!HTML,CSS动态Web:有数据交互,登录账号密码,网站访问人数等技术栈:Servlet/JSP,ASP,PHP在Java中,动态web资源开发的技术统称为JavaWeb;2、Web 应用程序Web 应用程序:可以提供浏览器访问的程序;这个统一的web资源会被放在同一个文件夹下,Web 应用程序 —> Tomcat:服务器一个 Web 应
2021-09-07 09:37:24
946
原创 尚硅谷Mycat笔记(自己整理)
Mycat一、Mycat入门概述1、是什么Mycat 是数据库中间件。数据库中间件中间件:是一类连接软件组件和应用的计算机软件,以便于软件各部件之间的沟通。例子:Tomcat,web中间件。数据库中间件:连接java应用程序和数据库为什么要用Mycat?Java与数据库紧耦合。高访问量高并发对数据库的压力。读写请求数据不一致[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-beIXOp3L-1630978519487)(C:\Users\DEL
2021-09-07 09:35:59
1097
2
原创 狂神Linux笔记
Linux笔记一、概述及环境搭建1、入门概述我们为什么要学习LinuxLinux诞生了这么多年,以前还喊着如何能取代windows系统,现在这个口号已经小多了,任何事物发展都有其局限性都有其天花板。就如同在国内再搞一个社交软件取代腾讯一样,想想而已基本不可能,因为用户已经习惯于使用微信交流,不是说技术上实现不了解而是老百姓已经习惯了,想让他们不用,即使他们自己不用亲戚朋友还是要用,没有办法的事情。用习惯了windows操作系统,再让大家切换到别的操作系统基本上是不可能的事情,改变一个人已经养成
2021-09-02 23:00:08
650
原创 狂神MyBatisPlus笔记
MyBatisPlus笔记学习MyBatis-Plus之前要先学MyBatis–>Spring—>SpringMVC为什么要学它?MyBatisPlus可以节省我们大量的时间,所有CRUD代码都可以自动完成JPA, tk-mapper ,MyBatisPlus偷懒用的!1、简介是什么?官网:https://baomidou.com/[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Eo4Jbhwt-1630594728907)(C:\Users\DEL
2021-09-02 22:59:26
309
原创 狂神Redis笔记
Redis笔记一、Nosql概述1、为什么使用Nosql单机Mysql时代90年代,一个网站的访问量一般不会太大,单个数据库完全够用。随着用户增多,网站出现以下问题数据量增加到一定程度,单机数据库就放不下了数据的索引(B+ Tree),一个机器内存也存放不下访问量变大后(读写混合),一台服务器承受不住。Memcached(缓存) + Mysql + 垂直拆分(读写分离)网站80%的情况都是在读,每次都要去查询数据库的话就十分的麻烦!所以说我们希望减轻数据库的压力,我们可以使用
2021-09-02 22:57:47
826
原创 @Cacheable注解的参数
在 @Cacheable 注解的使用中,共有 9 个属性供我们来使用,这 9 个属性分别是: value、 cacheNames、 key、 keyGenerator、 cacheManager、 cacheResolver、 condition、 unless、 sync。接下来我们就分别来介绍一下它的使用。1.value/cacheNames 属性如下图所示,这两个属性代表的意义相同,根据===@AliasFor==注解就能看出来了。这两个属性都是用来指定缓存组件的名称,即将方法的返回结果放在哪个缓
2021-09-01 10:17:10
3543
原创 狂神ShardingJdbc笔记
ShardingJdbc一、ShardingJdbc的概述1、概述官网:http://shardingsphere.apache.org/index_zh.html下载地址:https://shardingsphere.apache.org/document/current/cn/downloads/快速入门:https://shardingsphere.apache.org/document/current/cn/quick-start/shardingsphere-jdbc-quick-st
2021-08-31 07:10:09
4056
4
原创 一天一个面试题之——@Resource 和 @Autowire 的区别
@Resource 和 @Autowire 的区别1、@Resource 和 @Autowired 都可以用来装配 bean2、@Autowired 默认按类型装配,默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false。3、@Resource 如果指定了 name 或 type,则按指定的进行装配;如果都不指定,则优先按名称装配,当找不到与名称匹配的 bean 时才按照类型进行装配。...
2021-08-29 22:38:19
234
原创 一天一个面试题之——Spring 的事务隔离级别
Spring 的事务隔离级别Spring 的事务隔离级别底层其实是基于数据库的,Spring 并没有自己的一套隔离级别。DEFAULT:使用数据库的默认隔离级别。READ_UNCOMMITTED:读未提交,最低的隔离级别,会读取到其他事务还未提交的内容,存在脏读。READ_COMMITTED:读已提交,读取到的内容都是已经提交的,可以解决脏读,但是存在不可重复读。REPEATABLE_READ:可重复读,在一个事务中多次读取时看到相同的内容,可以解决不可重复读,但是存在幻读。SERIALIZAB
2021-08-23 21:50:25
467
原创 elasticsearch :term与match区别
elasticsearch 中term与match区别term是精确查询match是模糊查询term查询term是代表完全匹配,也就是精确查询,搜索前不会再对搜索词进行分词,所以我们的搜索词必须是文档分词集合中的一个。比如说我们要找标题为北京奥运的所有文档$curl -XGET http://localhost:9200/index/doc/_search?pretty -d '{ "query":{ "term":{ "title":"北京奥运" } }
2021-08-23 15:48:55
614
原创 一天一个面试题之——Spring 的事务传播行为
1、REQUIRED:Spring 默认的事务传播级别,如果上下文中已经存在事务,那么就加入到事务中执行,如果当前上下文中不存在事务,则新建事务执行。2)REQUIRES_NEW:每次都会新建一个事务,如果上下文中有事务,则将上下文的事务挂起,当新建事务执行完成以后,上下文事务再恢复执行。3)SUPPORTS:如果上下文存在事务,则加入到事务执行,如果没有事务,则使用非事务的方式执行。4)MANDATORY:上下文中必须要存在事务,否则就会抛出异常。5)NOT_SUPPORTED :如果上下文中存在
2021-08-21 23:01:51
312
原创 一天一个面试题之——Spring 的 AOP 是怎么实现的
本质是通过动态代理来实现的,主要有以下几个步骤。1、获取增强器,例如被 Aspect 注解修饰的类。2、在创建每一个 bean 时,会检查是否有增强器能应用于这个 bean,简单理解就是该 bean 是否在该增强器指定的 execution 表达式中。如果是,则将增强器作为拦截器参数,使用动态代理创建 bean 的代理对象实例。3、当我们调用被增强过的 bean 时,就会走到代理类中,从而可以触发增强器,本质跟拦截器类似。...
2021-08-19 22:04:08
209
原创 狂神Elasticsearch笔记
ElasticSearch笔记我们要讲解什么?SQL : like %狂神说% ,如果是的大数据,就十分慢!索引!ElasticSearch:搜索! (百度、github、 淘宝电商! )1、聊一个人2、货比三家3、安装4、生态圈.5、分词器ik6、RestFul操作 ES7、CRUD8、SpringBoot集成ElasticSearch (从原理分析! )9、爬虫爬取数据!10、 实战,模拟全文检索!以后你只要,需要用到搜索,就可以使用ES! (大数据量的情况下使用! )
2021-08-19 09:18:12
1352
原创 狂神Javaweb笔记
javaweb一、基本概念1、前言web,网页的意思 , www.baidu.com静态Web:提供给所有人看数据不会发生变化!HTML,CSS动态Web:有数据交互,登录账号密码,网站访问人数等技术栈:Servlet/JSP,ASP,PHP在Java中,动态web资源开发的技术统称为JavaWeb;2、Web 应用程序Web 应用程序:可以提供浏览器访问的程序;这个统一的web资源会被放在同一个文件夹下,Web 应用程序 —> Tomcat:服务器一个 Web 应
2021-08-19 09:17:32
214
原创 狂神MyBatisPlus笔记
MyBatisPlus笔记学习MyBatis-Plus之前要先学MyBatis–>Spring—>SpringMVC为什么要学它?MyBatisPlus可以节省我们大量的时间,所有CRUD代码都可以自动完成JPA, tk-mapper ,MyBatisPlus偷懒用的!1、简介是什么?官网:https://baomidou.com/[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FOBUhMRg-1629335764194)(C:\Users\DEL
2021-08-19 09:16:51
287
原创 狂神SpringCloud笔记
SpringCloud笔记这个阶段怎么学三层架构+MVC框架: spring IOC AOP 一、微服务架构面临的四个核心问题?服务很多,客户端应该如何访问? API网关这么多服务?服务之间如何通信? HTTP,RPC通信这么多服务?如何治理? 服务注册与发现服务挂了怎么办?熔断机制二、解决方案Spring Cloud生态SpringCloud NetFlix :一站式解决方案api网关,zuul组件通信: Feign ----HttpClin
2021-08-19 09:15:38
620
原创 一天一个面试题之——Spring bean 的生命周期
bean 的生命周期主要有以下几个阶段,深色底的5个是比较重要的阶段。BeanFactory:Spring 容器最核心也是最基础的接口,本质是个工厂类,用于管理 bean 的工厂,最核心的功能是加载 bean,也就是 getBean 方法,通常我们不会直接使用该接口,而是使用其子接口。FactoryBean:该接口以 bean 样式定义,但是它不是一种普通的 bean,它是个工厂 bean,实现该接口的类可以自己定义要创建的 bean 实例,只需要实现它的 getObject 方法即可。Factor
2021-08-18 21:39:59
427
原创 git报错! [rejected]master -> master (non-fast-forward)”的解决方法
在遇到上述错误自己无解决时,于是开始了网上大搜索:git push -u origin master 上面命令将本地的master分支推送到origin主机,同时指定origin为默认主机,后面就可以不加任何参数使用git push了首先尝试了 命令=git push -u origin master -f==,然后惊喜地出现了下面错误,不能强制推送到受保护的分支。(我的知道这里就提交上去了)随后就又找到了一个方法:先使用== git pull --rebase origin master==然
2021-08-17 17:20:18
3802
原创 一天一个面试题之——jsp九大内置对象
九大内置对象PageContext 存东西Request 存东西ResponseSession 存东西Application 【ServletContext】 存东西config 【ServletConfig】outpageexceptionrequest:客户端向服务器发送请求,产生的数据,用户看完就没用了,比如:新闻,用户看完没用的!session:客户端向服务器发送请求,产生的数据,用户用完一会还有用,比如:购物车;application
2021-08-16 21:38:06
133
原创 一天一个面试题之——BeanFactory 和 FactoryBean
BeanFactory:Spring 容器最核心也是最基础的接口,本质是个工厂类,用于管理 bean 的工厂,最核心的功能是加载 bean,也就是 getBean 方法,通常我们不会直接使用该接口,而是使用其子接口。FactoryBean:该接口以 bean 样式定义,但是它不是一种普通的 bean,它是个工厂 bean,实现该接口的类可以自己定义要创建的 bean 实例,只需要实现它的 getObject 方法即可。FactoryBean 被广泛应用于 Java 相关的中间件中,如果你看过一些中间件的
2021-08-13 22:42:31
270
原创 一天一个面试题之——Java虚拟机中的类加载器
启动类加载器(Bootstrap ClassLoader):这个类加载器负责将存放在<JAVA_HOME>\lib目录中的,或者被-Xbootclasspath参数所指定的路径中的,并且是虚拟机识别的(仅按照文件名识别,如rt.jar,名字不符合的类库即使放在lib目录中也不会被加载)类库加载到虚拟机内存中。扩展类加载器(Extension ClassLoader):这个加载器由sun.misc.Launcher$ExtClassLoader实现,它负责加载<JAVA_HOME>
2021-08-12 21:58:53
228
原创 一天一个面试题之——HashMap 和Hashtable
HashMap 和Hashtable 的区别HashMap 允许 key 和 value 为 null,Hashtable 不允许。HashMap 的默认初始容量为 16,Hashtable 为 11。HashMap 的扩容为原来的 2 倍,Hashtable 的扩容为原来的 2 倍加 1。HashMap 是非线程安全的,Hashtable是线程安全的。HashMap 的 hash 值重新计算过,Hashtable 直接使用 hashCode。HashMap 去掉了 Hashtable 中的 c
2021-08-11 22:19:45
155
原创 一天一个面试题之——HashMap 的底层数据结构
我们现在用的都是 JDK 1.8,底层是由“数组+链表+红黑树”组成,如下图,而在 JDK 1.8 之前是由“数组+链表”组成。为什么要改成“数组+链表+红黑树”?主要是为了提升在 hash 冲突严重时(链表过长)的查找性能,使用链表的查找性能是 O(n),而使用红黑树是 O(logn)。那在什么时候用链表?什么时候用红黑树?对于插入,默认情况下是使用链表节点。当同一个索引位置的节点在新增后超过8个(阈值8):如果此时数组长度大于等于 64,则会触发链表节点转红黑树节点(treeifyBin);而
2021-08-10 22:18:23
106
原创 一天一个面试题之——ArrayList 和 Vector 的区别
Vector 和 ArrayList 几乎一致,唯一的区别是 Vector 在方法上使用了 synchronized 来保证线程安全,因此在性能上 ArrayList 具有更好的表现。有类似关系的还有:StringBuilder 和 StringBuffer、HashMap 和 Hashtable。...
2021-08-09 21:50:49
133
原创 一天一个面试题之——ArrayList 和 LinkedList
ArrayList 底层基于动态数组实现,LinkedList 底层基于链表实现。对于按 index 索引数据(get/set方法):ArrayList 通过 index 直接定位到数组对应位置的节点,而 LinkedList需要从头结点或尾节点开始遍历,直到寻找到目标节点,因此在效率上 ArrayList 优于 LinkedList。对于随机插入和删除:ArrayList 需要移动目标节点后面的节点(使用System.arraycopy 方法移动节点),而 LinkedList 只需修改目标节点前后节
2021-08-08 21:34:53
224
原创 mycat的介绍及应用场景
mycat1、原理MyCAT主要是通过对SQL的拦截,然后经过一定规则的分片解析、路由分析、读写分离分析、缓存分析等,然后将SQL发给后端真实的数据块,并将返回的结果做适当处理返回给客户端。2、读写分离主从复制一主一从多主多从3、分库分表垂直拆分——分库水平拆分——分表4、使用场景单纯读写分离,此时配置最为简单,支持读写分离、主从切换分库分表,对记录超过1000万的表进行水平拆分,最大支持1000亿单表水平拆分多租户应用,每个应用一个数据库,但程序只需连接MyC
2021-08-08 17:18:18
401
原创 javascript之var,let,const的区别
var如果使用关键字 var 声明一个变量,那么这个变量就属于当前的函数作用域,如果声明是发生在任何函数外的顶层声明,那么这个变量就属于全局作用域。举例说明:var a = 1; //此处声明的变量a为全局变量function foo(){ var a = 2;//此处声明的变量a为函数foo的局部变量 console.log(a);//2}foo();console.log(a);//1如果在声明变量时,省略 var 的话,该变量就会变成全局变量,如全局作用域中存在该变量,就
2021-08-06 10:00:38
72
原创 一天一个面试题之——synchronized 和 Lock 的区别
synchronized 和 Lock 的区别1)Lock 是一个接口;synchronized 是 Java 中的关键字,synchronized 是内置的语言实现;2)Lock 在发生异常时,如果没有主动通过 unLock() 去释放锁,很可能会造成死锁现象,因此使用 Lock 时需要在 finally 块中释放锁;synchronized 不需要手动获取锁和释放锁,在发生异常时,会自动释放锁,因此不会导致死锁现象发生;3)Lock 的使用更加灵活,可以有响应中断、有超时时间等;而 synchro
2021-08-05 22:29:22
1679
原创 一天一个面试题之——sleep()和 yield() 方法、 join() 方法 start() 方法和run() 方法的区别
线程的 sleep() 方法和 yield() 方法有什么区别?线程执行 sleep() 方法后进入超时等待(TIMED_WAITING)状态,而执行 yield() 方法后进入就绪(READY)状态。sleep() 方法给其他线程运行机会时不考虑线程的优先级,因此会给低优先级的线程运行的机会;yield() 方法只会给相同优先级或更高优先级的线程以运行的机会。线程的 join() 方法是干啥用的?用于等待当前线程终止。如果一个线程A执行了 threadB.join() 语句,其含义是:当前线程A等
2021-08-04 21:35:46
132
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人