- 博客(175)
- 收藏
- 关注
原创 java.lang.NullPointerException: Cannot read field “next“ because “<local2>“ is null报错解决
文章摘要: 在链表遍历时,使用while(fast!=null||fast.next!=null)会导致空指针异常,因为||会继续判断右条件。正确写法应为while(fast!=null&&fast.next!=null),利用&&的短路特性避免空指针:当fast为null时不再检查fast.next。连续访问对象属性时,必须用&&确保外层非空才能访问内层属性,这是防止空指针的关键编程原则。
2025-11-13 17:30:08
783
原创 Redis启动方式
本文系统介绍了Redis在不同环境下的启动方式,重点对比了Linux物理机和Docker容器中的差异。在Linux环境中,Redis可通过前台模式、配置文件后台模式或systemctl服务方式启动;而在Docker容器内,由于缺乏systemd支持,应采用配置文件后台启动等替代方案。文章详细说明了安装编译流程、三种启动模式的特点及适用场景,并提供了验证Redis服务状态的方法(包括redis-cli测试、进程查看和端口监听检查)。这些指导能帮助开发者根据实际环境选择正确的Redis启动方式,确保服务稳定运行
2025-11-13 17:28:26
1165
原创 为什么 Java 要“先让父类加载器尝试”,而不是自己直接加载。(双亲委派机制)
双亲委派模型是Java类加载的核心机制,其核心目的是确保安全性和稳定性,而非加载速度。该模型要求类加载器在加载类时先委托父类加载器处理,只有当父类无法完成时才自行加载。这种设计可防止核心类库被篡改(如自定义java.lang.String),避免类冲突和内存浪费,保证JVM中类的唯一性。虽然部分框架(如Tomcat、SPI)会打破该机制实现特殊需求,但通常需要严格控制加载边界。双亲委派通过层级加载机制,既保护了核心类库安全,又优化了内存使用,是Java生态稳定运行的重要保障。
2025-10-17 15:19:06
1397
原创 hashmap扩容时需要注意的地方
HashMap扩容机制摘要:当元素数量超过容量*负载因子(默认0.75)时触发扩容。扩容时容量翻倍,通过(e.hash&oldCap)算法高效迁移元素:结果为0则留在原位置,结果为1则移到新位置(原索引+oldCap)。链表/红黑树会被拆分成两部分,无需重新计算hash。链表转红黑树阈值为8是基于泊松分布极低概率(0.00000006),而转回阈值为6可避免频繁转换的资源消耗。这种设计在空间利用和哈希冲突间取得平衡,保证了高效扩容。
2025-10-17 15:17:32
1593
原创 Concurrent Modification Exception异常解决及原理
文章摘要: ConcurrentModificationException(CME)是Java集合遍历时常见的运行时异常,由集合结构被非迭代器方式修改引发。其核心机制是通过modCount计数器检测修改冲突。解决方案包括:使用迭代器的remove()方法、改用线程安全集合(如CopyOnWriteArrayList)、遍历后统一修改或索引遍历。单/多线程场景均可能触发,本质是快速失败(fail-fast)机制的保护行为。 (字数:99)
2025-10-11 10:46:10
1706
原创 为什么 HashMap 的容量一定是2的幂次方?对数组长度取模定位数组下标,这块有没有优化策略?
摘要:HashMap采用2的幂次方作为数组长度,通过(n-1)&hash位运算替代取模运算来提升性能。这种设计确保了哈希分布均匀性,避免数据倾斜。当n为2的幂次方时,(n-1)的二进制全为1,使得所有低位参与计算。扩容时只需判断新增最高位,0则位置不变,1则新位置=旧位置+原容量,极大提升了扩容效率。若非2的幂次方会导致哈希分布不均,增加冲突概率。
2025-10-11 10:45:52
1656
原创 ArrayList 在序列化时的重写重写了 writeObject()特殊处理的原因
ArrayList通过自定义序列化机制优化存储空间:将内部数组elementData声明为transient避免序列化多余空位,重写writeObject()/readObject()方法实现精确序列化。实际序列化时仅写入有效元素数量(size)和对应数据,跳过未使用的null位置,既节省存储空间又提升传输效率,同时保持扩容能力。这种设计体现了Java集合框架在性能与功能间的平衡考量。
2025-10-07 20:28:31
1620
原创 java里增强for循环的原理分析
Java增强for循环(for-each)是Java5引入的语法糖,用于简化数组和集合的遍历。对于集合,编译器会转换为Iterator实现;对于数组,则转为普通for循环。其优点是代码简洁,但存在限制:不能修改集合结构、无法获取下标、无法直接修改数组元素。该循环仅适用于实现了Iterable接口的集合类,而数组虽支持但实现机制不同。集合框架中所有Collection子类都通过继承Iterable接口获得迭代能力。
2025-10-07 20:07:52
2239
原创 LangChain4j 新版本的核心升级点 —— @AiService 声明式接口
LangChain4j的@AiService注解提供声明式AI接口开发方式,类似FeignClient。通过简单注解即可自动完成: 扫描接口并创建代理 绑定指定大模型(如OpenAI) 注册为Spring Bean 支持两种绑定模式(AUTOMATIC/EXPLICIT),相比传统手动配置方式更简洁高效,适用于快速集成AI服务场景。只需定义模型Bean和接口,即可在Controller中直接注入使用,显著减少样板代码。
2025-10-05 19:07:47
2416
原创 LangChain4j的AiServices 工具类创建代理对象的相关问题
LangChain4j的AiServices是一个工厂类,通过动态代理技术自动生成AI服务代理对象。开发者只需定义接口(如ConsultantService),无需编写实现类,AiServices就能创建代理对象,将方法调用转换为对AI模型的请求(如OpenAI)。这类似于SpringCloud的FeignClient,但用于AI服务调用。底层采用JDK动态代理拦截方法调用,将方法名和参数转换为提示词,调用AI模型并返回结果,实现了"像调用普通方法一样调用AI模型"的便捷开发体验。
2025-10-05 18:52:45
1644
原创 error:1366, “Incorrect string value: ‘\\xF0\\x9D\\x91\\x80\\xE8\\xA1...‘ for column ‘...‘ at row 1“
摘要测试报告显示, MySQL 数据库在处理上传的 CSV 文件时出现状1366错误,部分数据插入失败。问题根源在于 UTF-8 编码的 4字节字符(如 Emoji 表情)超出了 MySQL UTF8 编码3字节的限制, MySQL 的 UTF8 编码, MySQL 的 UTF8 编码最多支持3个字节。提供两种解决方案:1)手动替换4字节字符;2)将数据库、表和连接字符集改为 utf8mb4 以支持4字节编码。建议采用第二种方法,同时在 Python 连接数据库时也修改相应的字符集属性。
2025-10-01 21:35:57
1404
原创 windows上Redis Desktop Manager链接服务器docker内Redis方法
本文介绍了如何通过SSH隧道连接容器内的Redis服务。首先确认Redis监听0.0.0.0:6379,若不是需修改配置。然后在FinalShell中设置本地端口转发规则(如本地16379转发到容器6379),重启SSH生效。Windows客户端连接127.0.0.1:16379即可访问Redis,可通过redis-cli或GUI工具测试。原理是SSH建立加密隧道,将本地请求转发到容器内部。该方法适用于容器内服务访问,若SSH连接宿主机则需修改目标地址为容器IP。
2025-09-16 20:32:35
2357
原创 Redis以`后台`方式启动方法
本文介绍了如何配置Redis以守护进程方式启动。首先需要备份并修改redis.conf配置文件:将bind设为0.0.0.0允许远程访问,daemonize设为yes开启后台运行,并设置requirepass密码为123321。其他常见配置包括端口6379、工作目录、单数据库、最大内存512MB和日志文件等。最后,进入Redis安装目录执行redis-server redis.conf即可启动服务。注意生产环境应避免使用0.0.0.0绑定地址以确保安全。
2025-09-16 20:30:54
1840
原创 RuntimeError: CUDA error: out of memory CUDA kernel errors might be 问题解决
在开头加上这个就可以限制只在第一张卡上运行了,然后果然利用率上去了,也没有爆内存。
2025-04-27 16:48:26
1788
原创 ImportError: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29‘ not found 问题解决
吐槽两句,Ubuntu 18.04 LTS附带的glibc是2.27,这个版本至少还是一个很常用的版本,conda的glibc是自己提供的,非得干新版本,不知道是想做什么。同样的版本,pip就使用了旧版的glibc库,tokenizers 0.10.1对应的transformers版本是4.11.3。tokenizers 0.10.2开始就需要glibc2.29。关于这个糟糕的体验,在。上有详细的讨论(吐槽)
2025-04-27 16:47:26
2473
原创 navicat数据表筛选删除空白行
这种方法适用于查看和手动删除空白行。如果需要批量删除,建议使用 SQL 语句。在 Navicat 中,可以使用筛选功能来找出表中空白行。
2025-04-24 16:12:27
2086
原创 packaging.version.InvalidVersion: Invalid version: ‘0.10.1,<0.11‘问题解决
【代码】packaging.version.InvalidVersion: Invalid version: '0.10.1,<0.11'问题解决。
2025-04-24 16:11:29
1657
1
原创 UserWarning: Plan failed with a cudnnException: CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR报错解决
在运行深度模型时,遇到了下面有关cuDNN的警告,不过好像不影响模型训练,查询网上的资料和前辈们踩过的坑,整理出一下几个解决方法,其中方法三是最根本的原因和解决方法。查看自己的pytorch 版本是不是2.3.0, 在 pytorch 2.3.0 版本中,即使没有抛出异常,它也会打印这个不需要的警告:可以参阅。禁用cudnn计算,报错消失,但是运行速度会变得很慢。减小batchsize大小。
2025-04-16 15:33:47
2222
原创 苍穹外卖菜品图片保存本地代码修改
1.先在server文件夹中的\src\main\resources中创建一个存放图片的upload文件夹,你也可以存放在别的地方,只要修改路径即可。3.修改CommonController,直接把下面代码全部复制替换掉原来的。修改server文件夹中的WebMvcConfiguration文件里的。upload文件夹里可以看到上传的图片,且使用uuid重新命名了。2.修改WebMvcConfiguration里的。测试:添加后可以立即回显,无需开通阿里云。方法,路径改为自己的绝对路径即可。
2025-04-16 15:21:29
5277
31
原创 AttributeError: module ‘backend_interagg‘ has no attribute ‘FigureCanvas’问题解决
从源码中,我们可以看到,matplotlib.pylot 的默认 backend 是设置成。从问题中可以看到 :module 是设置成 backend_interagg 即。
2025-03-11 15:23:52
4680
原创 IDEA中链接使用mysql数据库
找到mysql,点击驱动程序文件下面的加号,点击提供的驱动程序,选择mysql驱动程序(mysql connector/J),然后选择驱动版本。如果安装的mysql是5版本,下载哪个都可以,如果安装的8版本就下载8版本的驱动程序。3. 驱动程序下载完成之后选择类,5版本mysql就选择图中的类com.mysql.jdbc.Driver。如果mysql是8版本就下载8版本驱动程序,选择图中com.mysql.cj.jdbc.Driver.连接失败的话检查输入的信息,看看mysql版本和驱动程序版本是否兼容。
2025-03-11 15:22:55
5621
原创 bat脚本执行cmd命令
意思是在路径E:\environment\ELK\logstash-6.5.4\bin执行logstash -f logstash.conf命令。路径、命令用&&隔开,命令之间也用&&隔开。2、编辑好之后,可以另存为bat文件,或者直接把txt后缀改为bat。新建一个txt文本文档。windows 电脑上直接新建 .bat文件。/k 执行完命令不关闭cmd命令窗口。/c 执行完命令关闭cmd命令窗口。bat 脚本运行cmd文件。
2025-03-06 10:48:44
2501
原创 IMPORTANT: You may need to close and restart your shell after running ‘conda init‘
在finalshell 的linux服务器里执行conda activate env切换环境,发现切换不了,搜索之后找到解决方法。然后再执行conda activate env。直接使用activate env。,切换的base环境。
2025-03-06 10:48:14
1603
原创 django的项目创建与mysql数据库的建立
Django学习一:创建Django框架,介绍Django的项目结构和开发逻辑。创建应用,编写主包和应用中的helloworld-CSDN博客Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。_django mysql-CSDN博客
2024-09-12 16:52:41
1528
原创 django+vue跨域问题:Access to XMLHttpRequest at No ‘Access-Control-Allow-Origin‘ header is present on the
跨域问题牵涉到浏览器的同源策略,为什么浏览器要同源,究其原因是因为浏览器的一种安全机制同源策略这种安全机制要求网页中的JavaScript代码只能与加载该网页的同一个源(协议、域名和端口号都相同)进行交互,比如在没有设置可跨域的情况下,vue3.x项目默认本机访问url是http://127.0.0.1:5173,而假设使用网络请求服务端接口地址是http://127.0.0.1:8080这样就出现了跨域问题,为什么呢请往下看?
2024-09-12 16:52:17
1917
原创 vue-admin-template右上角头像及退出功能部分更改
右上角部分的代码在这个文件中:~\src\layout\components\Navbar.vue ,可以在下面这段代码里修改右上角退出及跳转的功能以及链接。可以看到上面的代码里有头像的来源,我们需要做的就是在这个路径的文件~\src\store\modules\user.js中给avatar设置默认照片地址,
2024-08-30 10:45:30
612
原创 vue-admin-template pan版使用方法
首先下载vue-admin-template-master文件,将其复制进项目的前端文件夹,在命令行中切换到前端目录,执行npm install。django-admin startproject 后端名称。之后执行npm run dev。
2024-08-27 11:15:47
1877
原创 Fatal error in launcher: Unable to create process using ‘“D:\environment\conda\envs\py36\python.exe“
最终没找到问题出在哪。只能 尝试直接运行Django命令。这种方法会确保Django命令使用的是当前虚拟环境中的Python解释器。不一致,这可能导致系统无法正确找到并启动 Python 解释器来执行。错误提示中显示 Python 解释器的路径可能存在问题。近期创建django项目遇到了这个问题,执行。
2024-08-27 10:44:18
2289
原创 Cannot resolve symbol ‘log`
在插件市场页面,您会看到一个包含多个分类的侧边栏,如 IntelliJ Platform Plugins、Language Plugins、Build Tools 等。点击分类可查看相应类别下的插件列表。可以直接在顶部的搜索框中输入关键词进行搜索。例如,要安装“lombok”插件,只需输入“lombok”并按下回车键。此界面展示了已安装的插件列表以及访问插件市场的入口。IDE将会自动下载并安装插件。安装lombok插件即可。安装完应用,重启软件就好了。确认要安装的插件后,点击详情页右下角的。
2024-07-05 16:46:02
2407
原创 torchtext安装后仍无法使用
会发现它在下2.1.0的torch,说明它是和2.1.0的torch对应的,不匹配,为了防止新torch与环境不适配,按ctrl C中断掉。在这种安装方式,如果你的pytorch版本与python版本不兼容时,会自动更新并安装pytorch+cpu版本,慎用。
2024-07-05 16:39:51
2018
原创 JS新语法let
首先看到个有意思的问题,为什么let要叫let//语法在react中let几乎可以看为var。//这是两个不同的变量let甚至影响不到内部的{}注意:在switch语句中反而因为只有一个块,可能会写出错误。需要在每个case中创建新的块,就是{}括起来。
2024-04-28 22:53:15
1823
原创 vue中隐藏元素的方法
当使用v-if="false" ,该元素在DOM中根本就没有被渲染。当使用v-show="false" ,该元素在DOM中被渲染,然而,Vue应用了内联样式display: none ,完全隐藏了该元素。另外,如果你想要更多的可见性定制,不要忘记强大的:class 绑定。要隐藏元素但保持其空间,使用:class="{ invisible:!value }" 来指定invisible 类(该类有visibility: hidden 样式应用于它)。
2024-04-26 23:24:15
3944
原创 什么是AIGC技术
总的来说,AIGC技术在未来具有巨大的发展潜力,有望为个人和社会带来更多的便利和创新,但也需要认真应对其可能带来的挑战和风险,确保其健康发展并造福人类社会。为了规范和管理AIGC技术的应用,应采取一系列的监管措施和政策建议,包括加强数据隐私保护、防止算法偏见、明确责任主体和范围,以及促进就业和社会稳定等方面的措施。,如提高生产效率、降低成本、优化资源分配等。伦理与风险挑战:AIGC技术的应用可能引发一系列的伦理和风险问题,包括数据隐私、算法偏见、责任问题等,需要加强监管和规范,确保其健康发展和社会责任。
2024-04-26 23:21:55
2120
原创 vue前端实现下载文件功能
点击下载后一直显示无法下载,更换浏览器也不行,后来找到了错误所在。错误原因就是我把路径写在与我存图片的路径目录下面了 src/assets/... ,这样是不对的,应该把你需要下载的文件放在跟src同级的目录下或者放在publice目录里面,就是与你的网页图标文件favicon.ico以及index.html 这两个文件同级就好了,由于public目录下的文件可以直接通过 URL 访问,您可以简单地指定该文件的 URL,例如:// public 目录下的文件的 URL。
2024-04-24 16:53:04
4109
原创 朴素贝叶斯分类方法的优点
对小样本数据表现良好:在数据量较小的情况下,朴素贝叶斯算法依然能够取得较好的分类效果,这是由于其基于概率模型的分类方式能够有效地利用有限的训练样本。总的来说,朴素贝叶斯算法具有简单高效、适用性广泛、对小样本数据和高维数据表现良好等优点,因此在实际应用中得到了广泛的应用和认可。对于高维数据表现良好:朴素贝叶斯算法在高维度数据上表现良好,即使在特征空间维度远大于样本量的情况下,仍然能够有效地进行分类。2)对小规模的数据表现很好,能处理多分类任务,适合增量式训练,尤其是数据量超出内存时,可以一批批的去增量训练。
2024-04-24 16:52:14
1963
原创 vue-element-admin vue设置动态路由 刷新页面后出现跳转404页面Bug 解决方法
在使用的过程中,加入权限模块后,刷新后权限控制的页面就默认跳转到404页面了,原因是权限控制的路由模块是动态添加进去的,而我的404监听路由是在默认路由里面的,优先级比动态路由要高,所以刷新后默认先被404接管了,改一下,把404监听路由注释掉需要手动在动态路由加载后,再把通配路由加上去,所以有了解决方法二。这个bug的具体情况是:设置了动态路由之后,不同的用户登录之后显示了不同的侧边栏,在侧边栏点击菜单,渲染对应路由页面没有任何问题,但是在。(这种情况只出现在动态路由上,静态路由刷新没问题)。
2024-04-22 20:16:08
5720
2
原创 分布式技术在文本摘要生成中的应用
自然语言处理任务如文本分类、问答、关系抽取、文本摘要生成等,在各个领域都有着广泛的应用,但随着互联网上文本数据量的激增,以及海量数据中表现出的文本数据的复杂性和多样性,传统的自然语言处理技术面对海量的数据很难进行高效的任务处理,大数据和分布式技术的产生及运用,使得高效处理海量数据变为了可能,它们将许多原本需要人工来完成的文本任务交由机器完成,能够实现文本信息的高效处理。文档自动摘要算法是现在自然语言处理中发展迅速的算法,它可以从文本信息中自动的给出文章的概括,将文本的主要内容呈现在用户面前。
2024-04-22 20:14:34
2172
原创 解决过拟合的几种方法
5.数据增强:通过随机旋转、裁剪、平移、缩放等方式,生成更多、更丰富的数据,以扩大训练集的规模,对数据进行标准化、归一化等预处理操作,可以提高模型的稳定性和泛化能力。4.Dropout: Dropout是指在神经网络中随机选择一些节点,在训练时将其输出置为0,以减少节点之间的依赖关系,从而避免过拟合。2.特征选择,使用更少的特征,减少特征维度,通过特征选择方法,去除冗余特征和噪声特征,以提高模型的泛化能力。1.增加数据集,增加数据量可以降低模型对训练集数据的依赖程度,从而减少过拟合的风险。
2024-04-02 15:10:07
3558
原创 vue-element-template 设置权限管理配置文件 \ vue用户权限管理
generateRoutes函数来控制你设置的每个用户的判断操作,如果有超过两个的用户就继续添加ifelse。把需要权限的加在 asyncRoutes 里面 ,相应权限就用roles: ['admin']放不同的用户类型来控制。经过上面的配置,应该就可以完成权限管理了。如果有问题的话留言评论。constantRoutes里面放静态路由,所有人可见。
2024-04-02 15:06:01
1416
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅