- 博客(375)
- 资源 (29)
- 问答 (8)
- 收藏
- 关注
原创 9千字长文带你了解SpringBoot启动过程--史上最详细 SpringBoot启动流程-图文并茂
SpringBoot springboot是依赖于spring的,bi'qi
2021-06-14 13:49:32
11808
23
原创 Spring MVC执行流程及原理
面试找虐博主之前每次去面试必问的问题:“讲一下spring mvc的执行流程以及常用组件的作用”;记得第一次和面试官说了大概的流程是这样的:“服务器收到一个请求后会先去HandlerMapping中匹配url,找到url之后用HandlerAdapter 适配器去执行这个控制器(controller层),执行完之后返回一个modelAndView,然后通过视图解析器ViewResolver解析后得到一个view对象,这个view就是渲染好的jsp页面,返回给前端页面”;(等了一会看着我)面试官:
2021-05-24 23:22:11
6887
21
原创 Spring IOC详解 以及 Bean生命周期详细过程 可以硬刚面试官的文章
面试题来自面试官发自灵魂深处的拷问:谈谈你对spring的理解;一脸懵逼的求职者的内心活动:啥? 具体的问题是什么?现在的面试都不按套路出牌了吗? 抛出一个这么大的问题,你让我怎么回答?一脸懵逼的求职者的回答:额~ ~ ~ 这个。。。。 额~ ~ ~ 那个。。。。额~ ~ ~ 不知道唉。。。为什么面试官要问这种问题? 不可否认,现在的大多数的面试出题方式都是这样的,惊人的相似,就是面试官喜欢抛出一个问题,看你能讲多深,考的就是你对这项技术的深度和广度,深度就是你对技...
2021-05-23 20:01:46
10035
32
原创 设计模式 -- 原型模式 图解java对象克隆 引用拷贝、浅拷贝、深拷贝、序列化拷贝
什么是原型模式原型模式是一个创建型的模式。原型二字表明了改模式应该有一个样板实例,用户从这个样板对象中复制一个内部属性一致的对象,这个过程也就是我们称的“克隆”。被复制的实例就是我们所称的“原型”,这个原型是可定制的。原型模式多用于创建复杂的或者构造耗时的实例,因为这种情况下,复制一个已经存在的实例可使程序运行更高效。关键就是两个字:克隆对象克隆简介对象克隆,说白了,就是将已实例化的对象复制一个出来,有个别同学就要问了,字节new 出来或者用反射创建一个实例出来不就好了吗? 干嘛要克隆?..
2021-05-10 23:54:56
1457
15
翻译 JavaFX 2.0中文文档
有两种方式来创建用户界面,一种是通过XML文件来定义,另外一种则是直接通过java代码来创建. 这两种方式你都可以在网上搜到. 我们这里将使用XML的方式来创建大部分的界面。因为这种方式将会更好的将你的业务逻辑和你的界面开来,以保持代码的简洁。导入教程部分的源代码到你的 IDE(它是一个 Eclipse 项目,但是你可以稍作修改后使用其它的 IDE 例如 NetBeans 这样的)。新建和编辑的动作有点工作:我们需要一个自定义带表单的对话框(例如:新的Stage),询问用户关于人员的详情。
2025-12-22 10:44:40
2
原创 使用spring ai搭建sse通讯模式的mcp server服务
定义接口类, ToolComponent.java,这是mcp服务的接口入口,当有相关问题时,大模型就会调用这个接口获取想要的数据;大模型会自动调用 mcp 服务接口,并返回结果;创建父项目 mcp_demo,项目内只需要一个maven文件即可。运行后会调用 mcp_server 服务,返回以下信息表示成功;创建客户端,用来模拟大模型,先引入sse客户端依赖。最重要的一步,将刚刚的接口工具注册到spring。运行启动类,看到以下信息表示成功;看到右边的绿色点表示已连接成功;测试 mcp 服务是否联通。
2025-12-10 16:10:23
348
原创 windows安装kubectl.exe 并安装环境变量
将其存放某一目录下(本人路径为D:\java\k8s_client\kubectl.exe),并添加环境变量, 将所在目录加入到 Path 环境变量即可。打开命令行窗口,输入kubectl命令测试一下是否正常工作,看结果一切正常;通过以下命令测试下, 打印出图中的内容就表示成功。
2025-11-26 09:56:42
188
原创 springboot 解决过滤器 HttpServletRequest body IO流只能读取一次的问题
老手都知道过滤器的作用,但是如果想要打印请求的参数就有点难度了, url 上拼接的参数可以轻而易举的得到,调用方法就可以拿到;但是要拿body 体就没这么简单了,request 里面有个,这个流 是一次性的, 如果你在这里读出来,那么在控制层就拿不到body参数了;
2025-11-24 16:26:07
81
1
转载 JetBrain Intellij IDEA使用JAVA进行插件开发流程(基于2022、2023版本)
最近想接触idea插件开发相关的内容,但发现网上很多文章都比较过时了,并不适用于高版本的idea和jdk,踩了一些坑后,写一篇文章总结一下高版本idea开发插件的步骤吧。软件版本:JetBrain IDEA 2023.01JDK版本:JDK17需要注意的是,从IDEA2022.2开始,就要求用户必须要有Java17及以上的版本才可以进行插件的开发。IDEA版本和JDK版本的对应关系,需要注意的是,如果只是做普通开发的话,那么并没有对idea的版本要求,按实际项目来就行。
2025-09-18 10:03:23
194
原创 spring 使用三级缓存解决循环依赖详解
在spring 2.6之前的版本中,默认都是支持循环依赖的,也就不会报错,在2.6版本之后默认禁用了循环依赖;可通过以下方式开启循环依赖。
2025-07-29 17:04:59
463
原创 maven 打包报错 process terminated
出现这种问题一般都是直接使用 idea 自带的maven工具打包导致的报错,这种报错且没有报错内容,只显示。
2025-07-28 17:09:39
518
原创 解决 multiple definition of `main‘ 多重定义
经过以上报错信息可以解析出: main.cpp 的第15行已经有一个main函数了,在 CMakeCXXCompilerId.cpp 的第831 行还有一个main函数,其中 CMakeCXXCompilerId.cpp 是有cmake生成的;,在cmake编译中,使用GLOB_RECURSE宏,会递归遍历所有符合条件的文件,cmake编译生成的文件也会被搜索纳入文件名集合中,导致main重复定义问题。解决方法1:去掉GLOB_RECURSE,改为 GLOB。出现该问题是因为使用了cmake指令。
2025-07-28 17:09:01
530
原创 解决c++指针传递导致的重复释放问题
执行结果如下, 可以看到 2个指针地址是不同的,这也就证明了,在传参的过程中是发生了拷贝的;不信是吧,我们来做个实验,在main函数和release函数都打印下 pPointer 对象的地址,代码如下。先看这段代码,有多个地方都会释放 pPointer 的对象空间,但是为了防止重复释放,在第二次释放时做了判空处理;执行结果如下, 报错了,告诉我执行了2次free函数,也就是重复释放了;再次执行后,就不会报错了, 且main函数和release函数的 pPointer 对象地址也是相同的。
2025-07-28 17:08:24
465
原创 idea通过git筛选某个用户提交记录进行代码对比
每次需求开发都要先经过代码评审后才能上线,项目经理要求我们梳理出自己修改了哪些文件,而我们又是多个人在同一个分支开发,所以一个分支下就会有很多个提交;当我们通过右键项目 -> Git -> Show History 查看提交记录时就会发现有多个提交,进行分支对比的时候会将其他的人对比也展现出来;那没有一种方法,虽然是多人在同一分支开发,但是只查看我自己的提交记录呢?答案是有的,而且idea就能做到;
2025-07-28 17:07:52
883
原创 解决访问 nginx 首页报错 404
这种情况一般都是 nginx root目录(根目录)未配置好导致的,那我们只要保证根目录下有html,或者指定一个有html的根目录就行啦!然后,我们进入到 nginx的根目录,创建一个html目录,在html目录下创建一个 index.html 文件。应该是能进入到nginx 的欢迎首页的;但是当访问后却显示了404页面,在 nginx.conf 配置文件中,在。正常情况下,启动nginx后访问地址。命令查看到,nginx 的根目录是。,那我们就把根目录指定为。然后再次启动就可以访问了。
2025-07-28 17:07:21
10226
原创 C/C++ 调用lua脚本,lua脚本调用另一个lua脚本
Main.lua , 被c/c++调用的luamodule.lua , 被lua调用的lua模块main.c , c语言入口。
2025-07-28 17:06:50
427
原创 解决 Clion idea远程开发代码报错 ‘xxx.h‘ file not found 但却可以编译运行的问题
今天使用 c 调用 lua,在linux安装了lua开发环境,但是开发的时候却找不到 lua.h 头文件;在linux 运行以下命令, 显示 LUA 5.3.0 版本,证明LUA的安装是没问题的;但是在 CLion idea 却显示然而,更奇怪的是,点绿色小三角运行的时候却是可以正常运行的;这个情况让我了解到,肯定是idea的问题,代码是没问题的;
2025-07-28 17:06:18
481
原创 解决 c++ 调用 c 函数报错: undefined reference to ‘xxx‘ 的问题
至于为什么不能这么干,这篇文章说的很清楚, 有兴趣的请戳: https://blog.youkuaiyun.com/challenglistic/article/details/130223118。以上代码中只有main.cpp 是c++文件,其他文件都是c语言的;在所有的.h文件头尾加上以下代码即可, 注意,只加头文件即可。文件默认使用的是 c 编译器,实际在编译的过程中,东西太多,我们只需要关注这一行,意思是找不到。文件默认使用的是 c++编译器, 而。加完后运行如下图,可以正常运行了。文件中的函数就会出错.
2025-07-28 17:05:33
526
原创 解决 clion 导入别人的项目 报错:Cannot generate into xxx It is already used for project xxx
在 clion idea中依次选择 Tools -> CMake -> Reset Cache And Reload Project。
2025-07-28 17:04:58
289
原创 MinGW-w64的安装详细步骤 c/c++的编译器gcc、g++的windows版,win10、win11
MinGW(Minimalist GNU for Windows) 是一个用于 Windows 平台的开发工具集,它提供了一组 GNU 工具和库,可以用于编译和构建本地的 Windows 应用程序。MinGW 的目标是在 Windows 环境下提供类似于 Unix/Linux 环境下的开发工具,使开发者能够轻松地在 Windows 上编写和编译 C、C++ 等程序。gcc或者g++是c/c++的编译器,但是通常在 Linux 上才能用。如果要在windows上用,我们要借助MinGW使用它。
2025-07-28 17:03:29
749
原创 记录c++的一个天坑,模版的声明(接口)和定义(实现)必须放一起
之前写c语言,习惯了将声明和定义分开存放在不同的文件中,其中,声明放在头文件中,定义放在cpp文件中,这样一来方便后期维护,也算是一种规范,众所周知,c语言里面是没有模版这个概念的;发现在写模版类的时候,将声明和定义分开了,编译死活过不去;很明显,如果按照普通函数一样,将模板函数的声明与定义的分开,声明放在头文件,定义放在cpp文件实现,你会发现,编译没问题,但是在链接阶段会报”undefined references“。删掉即可,,然后将声明和定义都放在头文件即可;以下的Clion idea的报错。
2025-07-28 17:02:54
273
原创 解决c++运行时提示:first defined here (重复定义问题)
的38行也有个main函数,一个项目中不能同时有2个main函数,属于是重复定义了;想要解决这个问题很简单,只需要注释掉其中一个main函数即可,删掉也行。然后点击main.cpp里面的绿色三角形;文件的106行里面有个main函数,而。经过查看,确实是有2个main函数,我们主要看这一行即可。构建过程中也没有报错。
2025-07-28 17:02:20
698
原创 解决c++静态成员编译报错:‘xxx‘ is not a member of ‘xxx‘ 问题
今天自己用c++写了一个静态的工具类,用来处理字符串切割用的,发现写好之后,出现一个很奇葩的问题,死活编译不过去,就是一个劲地报错;但我看了代码这样写是没问题的;之后在运行,一切又正常了。
2025-07-28 17:01:45
393
原创 idea编译java代码时提示 java: 非法字符: ‘\‘、‘\ue104‘ 解决方案
网上有很多说是File > Setting > File Encoding,将IDE Encoding和Project Encoding 都设置为UTF-8就行,可是我试了不行;后来看到另外一个解答,File > Setting >Java Compiler,在 Additional comman line parameters(附加参数)中添加参数。最近编码完成后总是报非法字符,项目启动不起来,出现以下报错。
2025-07-28 17:01:15
853
原创 windows clion远程连接ubuntu运行调试nginx-1.22.1版本
但是这种方法只能一个个改,如果我们需要修改整个项目的编码格式,这种方式是不可取的,最好的解决方案就是直接在linux 系统上 clone 代码,而不是在 windwos 上 clone。在服务器上,ubuntu系统中,先使用vi命令打开脚本,然后通过以下命令即可查询到编码格式,如果为dos,那么我们需要修改编码格式,如果格式是unix,那么不要需要修改。一般出现这种情况,是操作系统编码格式不同导致的,在windows中是CRLF,在linux系统是LF,在macos是LR;
2025-07-28 17:00:44
535
原创 dataGrip以insert sql方式导出查询结果
除此之外也可以直接在表上右键 -> import/Export -> Export Data to file。然后选择sql Inserts 后点击 Export to file 即可导出。然后在选中全部,在复制后粘贴,这些数据就变成了sql格式了,是不是很神奇;当我选中全部复制后,在粘贴,结果是这样的,是csv格式的。这时候我们想要这些数据的 sql 格式,该怎么做呢?在弹出的窗口中选择 SQL Insert。默认情况下,查询到的结果是这样的。首先,点击右边的这个CSV。
2025-07-28 17:00:22
435
原创 idea编译报错 java: 非法字符: ‘\ufeff‘ 解决方案
在UTF-8编码中,BOM由3个字节组成(0xEF, 0xBB, 0xBF),用于表示文件采用UTF-8编码。然而,有些应用程序可能不支持带BOM的文件,或者BOM可能会被错误地解释为文件内容的一部分,因此在某些情况下,使用带BOM的编码方式可能会带来一些问题。出现这样的问题来源于这个BOM,一般在编写时候会给你默认添加这样的一个BOM头,是隐藏起来的,编译时候就会给出现编码混乱问题;然后用Notepad++ 打开文件,点击编码后发现,当前的编码是 UTF-8 带 BOM的,所以我们只需要点击下面。
2025-07-28 16:56:50
674
原创 wrk 压力测试工具使用教程
综合来看,这份结果表明在当前的测试条件下,系统平均每秒能够处理约 32796.50 个请求,延迟较低,但存在部分请求的延迟较高。“Socket errors: connect 0, read 0, write 0, timeout 8”:显示了在测试期间发生的套接字错误,包括连接错误、读取错误、写入错误和超时错误的次数。举例,以下使用了2个线程、并发数为100,运行30秒,线程超时时间为30秒,全局超时时间为40秒,来测试。“Latency”:延迟,这里显示的是请求的延迟数据。
2025-07-28 16:56:19
1147
原创 解决ubuntu linux debug时报错: Cannot insert breakpoint xxx. Cannot access memory at address xxx
老版本的 GDB 在找不到 /proc/PID/mem 文件时,会转而使用 ptrace,而新版本的 GDB 则禁用了 ptrace,默认 /proc/PID/mem 是存在的。发现问题后,马上进行各种搜素引擎查找问题以及解决方案,终于发现这是gdb的一个bug,因为我用的linux系统是windows子系统 wsl,而 WSL 中没有对 /proc/PID/mem 提供支持。一开始以为是idea的问题,遂转到linux下使用gdb来调试,发现是另一个错误,执行run指令后,提示找不到。
2025-07-28 16:55:46
350
原创 解决 xshell 无法连接win10 、win11的linux子系统
正常情况下,在微软的软件商店安装好ubuntu后,第一次进入系统都会让你先设置一个账号,而这个账号权限是有限的,假如我们想要管理员权限的话,就必须用root方式登陆,那么我们就可以用以下方式来达到用root登陆的目的;在windows的应用商店下载了ubuntu 22.04.2 版本,但是在使用的过程中发现windows主机和子系统的ubuntu的网络是不通的,也就无法通过xshell连接;因为xshell连接的是22端口,所以一定要先开放,每个系统开放端口的方式都不一样,以下是使用ufw工具。
2025-07-28 16:55:13
551
原创 GDB高级技巧—反向调试,让代码回退的方法
反向调试是一种高级调试技术,可以让程序已经执行了一段时间后,回退到过去的状态并重新执行。这意味着你可以回到程序执行中的任何点,查看变量的值、堆栈跟踪以及程序执行路径。反向调试可以让我们快速、准确地定位出程序中的错误或异常的根本原因。简单来说,就是一种可以让程序逻辑逆序执行的调试技术。通过它,你可以随时中断程序的正常执行,然后逆序执行,让程序回到过去,并可以查看任意时间点的任意信息。
2025-07-28 16:54:42
633
原创 手把手教你实现简单时间轮算法
如果想定期执行一个操作,只需要起一个定时器,设置时间间隔,然后时间达到之后就执行任务,一个定时器对应一个任务,如果任务很少的情况下这样做没什么问题,但是任务有成千上万个的时候,就得起很多的定时器,不断轮询,这对系统的内存和cpu都产生了很大的压力,程序还没开始跑呢,定时器已经满天飞了…以下是纯手写的简单定时器代码,用死循环执行,因为一个定时器只针对一个任务,所以开销巨大,不建议使用sleep(延时N秒);... 执行任务。
2025-07-28 16:54:09
536
原创 定时任务 cron表达式 ? 和 * 的区别
1、【日期】与【星期几】两者为互斥的,不能同时设置。这个比较容易理解,假设日期设置为1,星期几也设置为1,那含义是什么:每月1日且为周一时触发,可能一年之中没用任何天能满足上述条件,更重要的是什么人能有这种xx的需求呢?正常的用法为 x/y,x表示触发的起始数值,y表示后续间隔,如 秒数中设置 5/20,则表示从第5秒开始触发,然后每隔20秒再循环触发(25、45,下次循环5、25、45…表示列表项目的分割,如 秒数中设置 1,3,17,则表示秒数为1,3,17时满足触发条件。表示任意值都满足触发条件。
2025-07-28 16:53:39
453
原创 git rebase使用教程 以及和merge的区别
rebase 和 merge 相似,但又不完全相同,本质上都是用来合并分支的命令,区别如下merge合并分支会多出一条merge commit记录,而rebase不会merge的提交树是非线性的,会有分叉,而rebase的提交树是线性的(通过重写提交历史),它是一条直线;rebase可以将多个commit合并,而merge不支持这个功能merge合并操作很友好,因为它没有破坏性。
2025-07-28 16:53:01
782
1
原创 解决clion 2023 远程开发remote模式 - 头文件提示 : file not found(找不到Linux头文件)
最近在用远程开发,就是在windows系统上开发linux程序,但是用最新版的clion报错了,在clion找不到Linux中的库文件,所以就没有代码补全,但是编译是正常的。最后,在菜单栏依次点击 Tool -> Resync with remote hosts,,然后右边打上勾,因为里面内容有点多,可以直接输入remote来搜索这一条;鼠标移上去会提示: file not found。首先双击 Shift 键,打开搜索栏,接着输入。是linux系统支持的;是windows支持的,而。
2025-07-28 16:52:28
519
原创 linux守护进程的作用和原理、创建守护进程的三种方式
守护进程(Daemon)是在操作系统中运行的一种特殊类型的后台进程。它在系统启动时启动,并在系统关闭时终止,与用户交互的终端会话无关。守护进程通常在后台运行,不会与用户进行直接的交互,也不会被用户终止。守护进程通常用于执行一些系统级的任务和服务,比如网络服务、数据库服务、日志记录、定时任务等。它们在系统运行时一直保持活动状态,为其他应用程序或用户提供服务。
2025-07-28 16:51:56
902
原创 使用Valgrind查找内存泄露和程序崩溃
Valgrind是一个GPL的软件,用于Linux(For x86, amd64 and ppc32)程序的内存调试和代码剖析。你可以在它的环境中运行你的程序来监视内存的使用情况,比如C 语言中的malloc和free或者 C++中的new和 delete。使用Valgrind的工具包,你可以自动的检测许多内存管理和线程的bug,避免花费太多的时间在bug寻找上,使得你的程序更加稳固。
2025-07-28 16:51:26
447
opencv训练级联分类器训练数据,车头车尾图,包含正样本和负样本图片,192张正样本和2000张负样本
2024-07-03
nginx利用redis实现session会话共享-tomcat8版本专用
2018-09-11
自定义注释的mybatis-generator-core-1.3.6.jar
2018-07-22
mysql-connector-java-5.0.8-bin 连接mysql数据库的驱动jar包
2018-07-20
mybatis-generator-core-1.3.2(含有源码--生成注释、自定义sql)
2018-07-23
mybatis-generator-core-1.3.2(含有源码--生成注释、自定义sql)第二版本
2018-07-23
Mybatis-Generator自动生成Dao、Model、Mapping相关文件,不依赖maven,直接生成
2018-10-24
Jenkins2.215安装包和常用插件包.zip
2020-01-20
cas-server-webapp-4.0.0.war--cas server去掉https验证
2018-07-24
nodejs-webpack进阶教程-逐步加入vue、HtmlWebpackPlugin、css压缩、热部署
2018-11-30
redis服务端以及java程序和教程
2018-04-28
ThreadLocal 的key是弱引用,为啥gc无法回收?
2025-07-27
c语言 *(char **) 是啥意思?
2023-10-22
c/c++ 如何判断一个指针是否已分配内存空间?
2023-05-30
c/c++ 宏定义的问题
2023-05-18
c++直接返回指针有问题吗?
2023-05-10
c++子类继承父类时为啥析构函数执行了2次
2023-04-12
const在函数的前、中、后有什么区别?
2023-03-21
c++野指针是什么?
2023-03-14
clion写c++头文件提示找不到函数实现
2023-03-19
c++对指针运算++和+=1是一样的吗?
2023-03-18
c++ int i 和new int有什么区别?
2023-03-14
C++未赋值的变量为啥是个随机数?
2023-03-14
c++这样写为什么会报错?
2023-03-13
高并发情况下,要保证数据库一致性,除了加锁,还有哪些方式?
2022-05-24
熔断和降级的区别是什么
2021-08-30
服务熔断和降级的区别是什么?
2021-08-17
微服务高并发情况下会产生哪些问题
2021-08-24
面试题:mysql海量数据如何将A表的数据更新到B表
2021-08-04
myisam写数据的时候会把表锁住吗?
2021-07-27
请问原力计划的表情是怎么加上去的?
2021-07-04
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅