自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

wwwwwww31311的博客

csdn认证博客专家

  • 博客(195)
  • 收藏
  • 关注

原创 知识点大纲

学习、整理笔记过程中,顺便整理出一个以问题为模版的大纲,到时候对着问题,就像是在和面试官讲解那样,相当于升级版的费曼学习法除了看博客,问gpt外,亲自实验也是获取知识及加深印象的关键点很久没有复习的知识,不要上来就去读一遍,而是先从大脑中过一遍,想不起来的,或者想错的,就是之前没有掌握扎实的内容,尽快巩固一下。

2024-07-21 16:57:57 522

原创 草稿111

本质是欠条,三要素是额度,利息,到期时间。

2024-04-11 11:11:03 324

原创 git区域与对象

2 git write -tree是生成暂存区的对象tree同时提交到版本库中(存储到objects下),我们可以不断的向暂存区进行增删改直到自己满意再进行提交,git对象代表文件的一次次版本,tree对象代表项目的一次次版本,这就是暂存区的作用,因为objects本来就有一个关于test.txt的git对象,后来又接收了一个从缓存区提交上来的test.txt的tree对象,所以有两个对象类型;②将本地文件的内容做快照并保存到Git 的对象库,实际上就是一个包含文件索引的目录树,像是一个虚拟的工作区。

2024-03-13 14:17:13 1079

原创 redis中setnx命令的底层原理是什么

该命令的含义是set if not exists,Redis是单线程的,所有的命令都是串行执行的。而且Redis的SETNX操作是原子的,即使有大量的线程同时发送SETNX命令,Redis也会一个接一个地执行这些命令。锁的超时问题,setnx用作锁的时候,必须要设置一个过期时间,防止这个锁无法及时释放造成死锁,且要注意setnx和expired必须是原子性的,如果不能保证原子性,那可能由于线程调度问题expired没有生效,依然会有死锁风险,过期时间设置也要结合实际线上情况,太短会出现问题。

2024-03-13 14:03:43 1008

原创 过滤器中捕获报错 Broken pipe

因为接口执行时间过长,已经超过三十秒,所以服务器段和客户浏览器端的连接因为超时的原因就断开了,而且我还特意去找前端同事去确认了下,发现确实是和浏览器有关,也就是接口请求超过一定时间,浏览器会主动关闭这个连接,不同的浏览器的连接最大保持时间不同,常见的谷歌浏览器应该是可以保持30秒,所以接口将数据返回给前端的时候,会在服务器tomcat/undertow进行网络通信将返回值响应回前端时层抛出Broken pipe异常,而后被过滤器层捕获并打印报错。这个错误通常出现在网络通信中,这个错误的常见原因有。

2023-12-02 08:53:01 853

原创 java: 警告: 源发行版 17 需要目标发行版 17

这个大家很熟悉,是maven项目中指定jdk编译版本的,现在主流框架用的都是springboot,也就是说我们自己的项目maven的父依赖都是这个,点进去查看spring-boot-starter-parent的pom文件。因为我此时设置的jdk版本是1.8,但我在pom文件中指定的maven编译版本java.version是17,不一致,所以报的这个错,解决方案就是在idea中选择jdk17版本。本地jdk开发环境,可以在idea中的project structrue中设置jdk的开发版本。

2023-12-02 07:58:09 813

原创 ClassNotFoundException与NoClassDefFoundError

查资料发现是springcloud的依赖版本和springboot的依赖版本不兼容,顺藤摸瓜找到springcloud jar包中调用org.springframework.boot.context.properties.ConfigurationPropertiesBean的位置上,发现果然,当前项目中所引入的springbootboot jar包版本并没有这个类。所以明显是当前springboot版本不适配springcloud,调整版本即解决报错。

2023-10-01 12:58:24 296

原创 An attempt was made to call the method xxx.jedis but it does not exist

在公司项目中做配置迁移的时候,服务启动时报错报错信息这种问题一看就是maven引入第三方依赖相关问题,该问题导致这个springboot服务启动报错,其实这种报错还是看上去比较舒服的,这个报错提示是非常到位,咱们试着理解下这个报错提示。

2023-10-01 12:18:06 570

原创 Postman返回了一个html页面

调用公司的测试环境接口,从浏览器控制台接口处cCopy as cURL(cmd),获取完整的请求内容,然后导入postman发起请求。2、问题定位到Postman,验证方法时把完整请求体给同事,同事的电脑是可以跑通的,于是把问题确实是Postman抽风导致的…1、请求体的HEADER中的标识浏览器信息的相关字段,于是把浏览器升级到最新,再从中Copy as URL,还是同样的报错。postman可能在转义请求内容时可能出了问题,导致公司网关处理时请求体时不适配,换一个api工具即恢复正常。

2023-08-20 11:19:12 5662 3

原创 There is no getter for property named ‘xxx‘ in ‘class java.lang.String

后续的版本,应该是mybatis 3.5或3.6以上的版本中,不必再强制对mapper接口入参加@Param注解了,但个人觉得最好还是加上,这样代码更规范一些。我这里用的mybatis-spring-boot-starter的2.1.3版本,那么这个依赖中包含的3.4.6的mybatis依赖。而这一版本中,mapper层中的接口入参,必须要遵守规范,通过@Param注解对入参做一个标识,如下。如果没有@Param注解,就会报该错误。检查mybatis相关依赖。

2023-06-03 21:44:50 174

原创 springboot 启动后,调用接口时报错404问题汇总(层层推进、超全面)

看到这条日志才能判定项目是启动成功的。

2023-05-16 14:15:49 13031 2

原创 class path resource [db.properties] cannot be opened because it does not exist

但还要注意,resources中的文件可能不会一起被生成到target,我们可以手动复制到target,这样就不会影响本地开发了,resource下的文件,是直接存放到target文件夹下的。也就是默认情况下会顺手输出到默认的SpringWang的out文件夹下,推荐这里修改下,使其输出到各个子maven的target文件夹下面,如下。首先看你项目中编译后的项目生成的位置,这个默认情况下会输出到公共文件夹SpringWang的out文件下,如下。然后再看各个子项目的默认的字节码文件输出地址。

2023-04-22 13:33:54 1095

原创 找不到org.apache.commons.pool.impl.GenericObjectPool.Config的解决方法

经测试commons-pool1.5x版本会报这个问题,但点开commons-pool1.5x版本依赖包也是能看到这个类的,类中确实包含内部类Config。有点超出我的理解,解决方案是使用1.6或更高级的commons-pool版本。后续等我搞明白后会再次更新。

2023-04-11 10:49:06 609

原创 一个案例彻底搞明白多态(向上与向下转型)

【代码】一个案例彻底搞明白多态(向上与向下转型)

2023-03-30 10:09:59 101

原创 mysql索引与sql优化面试题(建议收藏)

备注:一开始粗心了,有效接待字段搞错了,导致数据对不上(把sessionHumanValidRecep和sessionHumanSelfValidRecep搞混了),追代码中字段sessionHumanValidRecep​,,看看有没有字段或者后续的查询,弄了半天发现是字段选错了...

2023-03-26 22:35:39 503

原创 一百字讲明白instanceOf关键字

instanceof 是 Java 的保留关键字,它的作用是测试它左边的对象是否是它右边的类的实例,返回 boolean 的数据类型,需要注意的是,该关键字用的是它左边对象的实际类型去判断的,而不是用的它的引用类型,例如对象obj的引用类型是A,但它的实际类型是D。

2023-03-15 08:58:59 110

原创 java泛型(360°无死角讲解)

java泛型

2022-10-07 08:01:27 549

原创 git撤销操作(git后悔药)

1、撤销工作目录vim a.txt #修改工作目录文件git status #此时会提醒Changes not staged for commitgit checkout -- a.txt #执行完这条命令,发现原理是把这个文件恢复到暂存区注意,经过测试发现其原理是把当前文件恢复同步成暂存区的样子2、 撤销暂存区的修改vim a.txtgit add a.txt............

2022-08-14 13:53:52 1276

原创 BeanUtils.copyProperties的用法(超详细,建议收藏)

用法org.springframework.beans.BeanUtils,它提供了对java反射和自省API的包装。它里面还有很多工具类,这里我们介绍一下copyProperties。我们如果有两个具有很多相同属性的JavaBean对象a和b,想把a中的属性赋值到b,比如接口中将接收到的前端请求参数封装为reqVo,dan@Datapublic class User { private String id; private String name; private Stri

2022-05-25 08:29:51 51184 3

原创 JAVA构造器、静态上下文的执行时机与代码执行顺序详解

java代码执行顺序详解5,1,10,6,9,3,2,9,87,9,3,2,9,87,1、类加载时机,一个类要创建实例前要先加载并初始化这个类mian方法运行时会先加载并初始main方法所在的类2、如果这个类有父类,那么要先加载并初始这个类的父类3、一个类的初始化就是执行clinit方法clinit方法由静态代码块、静态变量、静态方法组成clinit方法只执行一次clinit方法按顺序执行,也就是静态的代码块、变量、方法这三者谁在代码中位置靠前谁先执行也就是如果仅初始化类,不进行

2022-05-11 21:06:20 2157

原创 push操作前,git commit与git pull(fetch+merge)的先后顺序问题详解

1、流程对比pull->commit->push #在本地修改与远程代码无冲突的情况下,优先使用commit->pull->push #在本地修改与远程代码有冲突的情况下,优先使用2、怎么去确定是否有冲突呢?一般我们在合作开发一个项目的过程中,都会有分工有时会两个人同时修改一个类,那你俩就大概率会在这个类里面产生冲突;有时整个类都是你自己在开发。如果都是自己在开发的类自然无论如何都没有冲突,但也有特殊情况,比如你在test分支上修改了User.java然后push到远

2022-04-30 13:15:59 2057

原创 @Repository详解

不多废话,直接看源码@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented@Componentpublic @interface Repository { @AliasFor( annotation = Component.class ) String value() default "";}分析如下@Component代表@Repository可以把一个类

2022-04-21 09:13:03 12535 4

原创 HashMap由浅入深(jdk8)

基础结构JDK 1.8 之前是由“数组+链表”组成,JDK 1.8,底层是由“数组+链表+红黑树”组成/*表在第一次使用时初始化(懒汉模式),并根据需要调整大小。当分配时,长度总是2的幂我们还允许一些操作的长度为0,以允许当前不需要的引导机制;这是hashmap的主体结构*/transient Node<K,V>[] table;transient int size;/*HashMap的基本数据结构,链表,数组中存储的是链表的地址*/static class Node&l

2022-04-19 17:11:07 399

原创 深入理解Java main方法

在Java中,main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的方法有很大的不同,例如方法的名字必须是main方法必须是public static void 类型的方法必须接收一个字符串数组的参数。案例// Java中的main()方法详解public class HelloWorld { public static void main(String args[]) { System.out

2022-04-15 07:53:16 2265

原创 Java中==和equals、equals和hashCode的关系详解

==运算符在java中==是运算符,用于比较两个变量是否相等基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean, 他们之间的比较,应用双等号(==),比较的是他们的值。复合数据类型(类) ,当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象他们的比较后的才能得到为true的结果,否则比较后结果均为falseequals(java.lang.Obejct)官网文档指示其他对象

2022-04-05 16:43:24 1358

原创 git远程仓库

github创建一个远程仓库echo "# sobot-chat" >> README.mdgit initgit add README.mdgit commit -m "first commit"git branch -M main #更改分支名#添加一个新的远程 Git 仓库,这一步不需要做验证,提交时需要进行权限验证,同时指定一个你可以轻松引用的简写,这里是origingit remote add origin https://github.com/wang692/

2022-02-11 09:26:33 748

原创 git分支

HEAD分支本质上是个活动的指针,固定指向你当前的最新提交对象,HEAD默认是master,可切换,非HEAD分支会停留在创建该分支是的提交版本里面,这样HEAD每次都是指向最新的提交对象,其它分支停留在了其它时间点的提交对象中,当你这个HEAD分支代码写烂掉了可以直接切换到原来的版本中去HEAD文件:记录当前所在的分支,比如masterrefs:存储当前git的指针git branch test...

2022-02-01 10:51:54 1257

原创 Maven史上最全总结

maven基础概念参考文章:https://blog.csdn.net/wwwwwww31311/article/details/114323704一 maven的安装配置安装配置参考:https://daniel.blog.csdn.net/article/details/100545928补充:这篇文章对maven的安装配置做了详细说明,唯一需要注意点的是,在配置maven的settings.xml文件,设置localRepository个人本地maven仓库路径时要和idea保持一致,避免后续

2022-01-09 20:52:08 838

原创 nginx总结(面试必看)

一、nginx的产生一个公司的项目刚刚上线的时候,并发量小,用户使用的少,所以在低并发的情况下,一个jar包启动应用就够了,然后内部tomcat返回内容给用户慢慢的,使用平台的用户越来越多了,并发量慢慢增大了,我们会想办法升级服务器的配置,比如提高 CPU 执行频率,加大内存等提高机 器的物理性能来解决此问题这时候一台服务器满足不了我们的需求了,但后续硬件的性能提升已经不能 满足日益提升的需求了于是我们横向扩展,又增加了服务器。这个时候几个项目启动在不同的服务器上,比如公司线上项目的支付业务模块分

2022-01-08 07:40:37 646 2

原创 502 Bad Gateway 常见解决思路

1 最通用的思维:502错误说明服务器没有响应,也就是我们的web服务器没有接到有效的信息导致的。产生错误的原因主要是连接超时,我们向(代理)服务器发送请求由于(代理)服务器当前链接太多,导致服务器方面无法给于正常的响应,产生此类报错。...

2022-01-07 20:46:39 5438

原创 SpringBoot自动配置原理

SpringBoot特点是通过父项目做依赖管理,如下依赖管理 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.4.RELEASE</version></parent>

2022-01-03 17:32:03 1009

原创 Cannot resolve xxxx(依赖名):unknown

这个错误是:无法解析xxx(依赖名) 未知情况一:没有指定版本号,比如我这个子项目引入lombok报错原因就是父项目的父项目中dependencyManagement也没有做相关版本号声明,maven无法获取你的依赖版本号所以报的这个错误我们可以在父项目的dependencyManagement中声明版本也可以直接在子项目中声明情况二:这个情况复杂些即你的依赖版本号声明的没问题还是报了这个错误,那你直接去去本地的Maven仓库去检查,如果是这样的就是.jar后面有个.lastUpdated后

2022-01-03 14:41:32 9444

原创 git本地安装配置与基础概念

史上最详细安装教程以上教程是作为扩展学习,其实完全按默认安装就可以了;我们详解配置过程配置git环境:git config --globalconfig:参数是用来配置git环境的global:长命令表示配置整个git环境初次使用git需要设置你的用户名以及邮箱,这将作为当前机器git的标识,如果你用它来下载远程仓库一些需要登录权限的仓库会要求登录,git默认使用配置邮箱以及用户名登入但会要求你手动输入密码,用户每次提交代码都会记录用户名和邮箱用户配置user代表用户.name代表配置

2021-12-26 13:03:04 1311 1

原创 git对比svn

git与github大名鼎鼎的github用的就是git系统来管理它们的网站,这里需要区分一下,github和git是两个东西,github是一个社区,git是一个服务系统,github只支持git分布式系统,所以故名成为github。集中式与分布式的区别除了git还有svn、cvs这样的版本控制系统,它们的区别在于一个是分布式一个是集中式集中式就是svn和csv这样的版本控制系统,分布式是git区别在于集中式的版本控制系统每次在写代码时都需要从服务器中拉取一份下来,并且如果服务器丢失了,那么所有

2021-12-26 10:53:11 513 1

原创 SVN。。

环境安装与配置大纲补充:idea中svn回退到指定版本

2021-12-12 20:03:45 286

原创 索引的数据结构

前言Mysql数据库中的常见索引结构有多种,常用Hash,B-树,B+树等数据结构来进行数据存储。树的深度加深一层,意味着多一次查询,对于数据库磁盘而言,就是多一次IO操作,导致查询效率低下。二叉搜索树了解下二叉搜索树有助于我们理解B-树、B+树,二叉搜索树的特点是:所有非叶子结点至多拥有两个儿子(Left和Right);所有结点存储一个关键字;非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树。avl之所以不适合做索引是因为在mysql实际开发过程钟很容易出现右边这种

2021-09-13 21:30:17 2287 2

原创 GET和POST史上最全总结

参考文章GET和POST区别以下是个人三点补充(后续可能还会继续补充)1 POST只是用来做修改,GET只能用来做查询?其实这种思维是很死板的,只能说对post,get,put…不同类型请求的应用最好符合http协议规范,http协议推荐我们使用get做资源获取操作,post做资源添加操作,但并不是说非这样不可。举例:用get做资源添加操作GET请求http://127.0.0.1:8011/demo4/test7?id=1&name=wzh&age=10请求如下接口(demo4是我

2021-09-07 09:08:56 519

原创 ES读写为何速度那么快(史上最全面总结)

前言:我们整个es的学习全程都在拿es和mysql做对比,今天我们再比较下二者的速度,为啥es比数据库mysql查询快那么多?首先ES是一个基于Lucene构建的开源、分布式、RESTful接口的全文搜索引擎,而正巧,mysql最不擅长的就是全文检索,分析如下从es读数据的流程在处理读取请求时,协调结点在每次请求的时候都会通过轮询所有的副本分片来达到负载均衡。在文档被检索时,已经被索引的文档可能已经存在于主分片上但是还没有复制到副本分片。 在这种情况下,副本分片可能会报告文档不存在,但是主分片可能成

2021-09-01 10:57:13 5434

原创 ES基础概念和集群概念

前言ES基础概念和ES的基础命令一样,我们都会参考mysql的概念,但es集群其实和kafka非常相似,我们会参考kafka来进行对比ES基础概念:Elasticsearch(ES)是一个基于Lucene构建的开源、分布式、RESTful接口的全文搜索引擎。Elasticsearch还是一个分布式文档数据库,其中每个字段均可被索引,而且每个字段的数据均可被搜索,ES能够横向扩展至数以百计的服务器存储以及处理PB级的数据。可以在极短的时间内存储、搜索和分析大量的数据。通常作为具有复杂搜索场景情况下的

2021-08-31 15:16:07 1848

原创 ES基础命令(参照mysql)

一 基础ES命令1、http://localhost:9200 先当于查看mysql数据库本地连接信息2、向ES 服务器发 PUT 请求 http://127.0.0.1:9200/shopping;幂等性意味着不会重复发送,我们可以把一个索引shopping抽象成一个数据库中唯一的一张表IndexTable;这里相当于做创建数据库的操作3、向 ES 服务器发 GET 请求 : http://127.0.0.1:9200/_cat/indices?v 查看索引下所有请求,相当于mysql下查看一个

2021-08-31 09:56:50 1863 1

空空如也

空空如也

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

TA关注的人

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