- 博客(33)
- 问答 (2)
- 收藏
- 关注
原创 丽江香格里拉(玉龙雪山)详细
如果你想进一步了解丽江周边具体哪条徒步路线更适合你的体力,或者想了解香格里拉的美食推荐,我可以再为你查找更详细的信息。根据你的原攻略链接,想游览冰川公园(大索道)、云杉坪(小索道)等主要景点。按照上述建议调整后,旅程会从容很多。这一天时间非常紧张,必须精确规划。总的来说,你行程的主要风险集中在。高铁返程(车程1.5h+换乘)挑战原计划(冰川+云杉坪)丽江-香格里拉行程关键决策点。高铁(最轻松,时间灵活)自驾(东环线,风景好)独克宗古城游览与午餐。自驾返程(约3小时)推荐方案(择一游览)
2025-12-21 13:07:26
760
原创 守护线程与非守护线程
摘要:守护线程并非守护程序不停止,而是守护JVM进程。当所有非守护线程结束时,JVM会强制终止守护线程并退出。守护线程是为非守护线程服务的辅助性线程,如垃圾回收监控、临时文件清理等。Spring Boot持续运行的关键在于其创建的非守护线程(如Web服务器线程),它们告诉JVM需要继续工作。正确理解守护线程的特性对合理设计多线程程序至关重要。
2025-12-09 20:24:05
362
原创 普通main方法 springboot项目main方法
Spring Boot应用在main方法执行后不停止运行的核心原因是其创建的Web服务器线程均为非守护线程。当main线程执行完SpringApplication.run()后,嵌入式服务器(如Tomcat)会启动监听端口和处理请求的非守护线程。根据JVM规则,只要存在非守护线程,程序就会继续运行。这些线程包括端口监听器、请求处理器等,它们会保持阻塞状态等待请求。应用需通过显式关闭或接收终止信号才会停止,这种机制确保了服务能持续运行。
2025-12-09 20:21:43
273
原创 git stash的使用
本文介绍了Git工作流中处理紧急BUG的标准流程:1)暂存当前feature分支的修改;2)切换到dev分支创建hotfix分支修复BUG;3)将修复合并到dev分支;4)返回原feature分支继续开发。提供了详细命令示例和注意事项,强调保持分支独立性的重要性。这种处理方法符合Git最佳实践,能有效维护代码整洁性和可追溯性,适用于团队协作环境。
2025-11-27 08:57:18
241
原创 git tag 出现BUG
本文介绍了两种规范的代码修复流程:1)为已发布版本创建热修复分支(推荐做法),通过新建分支修复后打补丁版本标签;2)在开发分支直接处理小问题。强调绝对不要删除已发布标签,应保留原始标签并创建新版本(遵循语义化版本规范)。核心原则是标签不可变,通过新建版本来标记修复状态,保持历史完整性。文末提供了安全漏洞修复的完整示例流程。
2025-11-26 08:50:18
203
原创 git tag 永远不会变
Git标签(tag)是固定在特定提交上的不可变指针,用于标记版本发布。与分支不同,标签创建后不会随新提交移动,始终保持指向原始提交。例如,在提交B创建的v1.0.0标签,即使后续开发到提交D,该标签仍指向B。这种特性确保了版本代码的稳定性和可重现性,适合标记发布版本。可通过git show和git checkout命令验证标签指向的提交状态。
2025-11-26 08:50:04
187
原创 git tag 的使用
Git标签(Tag)用于标记项目历史中的重要节点,分为轻量标签(仅指向提交)和附注标签(包含元数据)。常用操作包括:创建标签(git tag -a v1.0.0 -m "message")、查看标签(git show v1.0.0)、推送标签(git push origin v1.0.0)和删除标签(git tag -d v1.0.0)。附注标签是推荐做法,适合版本发布管理。标签推送后可用于触发CI/CD流程,但需注意默认不会自动推送。
2025-11-26 08:49:46
904
原创 git rebase的使用
本地开发:在feature分支上进行开发,可以随意使用rebase -i来整理你的本地提交历史。准备集成:当你准备将分支推送到远程并发起 Pull Request 时:# 1. 获取远程最新代码 git fetch origin # 2. 将你的特性分支变基到 origin/main 上,解决可能出现的冲突 git rebase origin/main # 3. (可选) 最后整理一下你的提交,使其逻辑清晰 git rebase -i HEAD~5 # 例如整理最近5次提交 # 4. 推送到远程。
2025-11-26 08:49:35
553
原创 git 预发布版本release分支
Release分支是Git Flow工作流中的核心分支,用于版本发布前的最后准备工作。它从develop分支创建,主要进行Bug修复、版本号更新等稳定化操作,而非功能开发。关键流程包括:从develop创建release分支,进行发布准备后合并到main分支并打标签,同时将修复同步回develop分支,最后删除release分支。这种工作流隔离了发布准备与日常开发,提供了稳定测试环境,规范化了发布流程。最佳实践包括保持分支生命周期短暂、及时团队沟通、区分hotfix分支等。Release分支作为开发与生产间
2025-11-26 08:49:17
1022
原创 生产环境出现BUG之git Hotfix分支使用
当生产环境代码出现BUG时,应使用Git Flow中的hotfix分支进行紧急修复。hotfix分支必须从main分支创建,修复后需同时合并回main和develop分支,并打上新版本标签。关键步骤包括:从生产版本创建hotfix分支、修复BUG、测试后合并到main并打标签、必须合并回develop、最后删除hotfix分支。hotfix应专注快速修复问题,遵循语义化版本控制,与release分支不同,hotfix用于紧急修复而非计划发布。这一流程确保生产问题快速解决,同时修复同步到开发主线。
2025-11-25 22:35:39
401
原创 git cherry-pick使用
git cherry-pick 是一个精准选择特定提交应用到当前分支的Git命令。它允许从其他分支或历史记录中挑选单个或多个提交(通过commit hash),在当前分支生成内容相同但hash不同的新提交。常用场景包括单独应用某个bug修复或特定功能。该命令支持处理连续/非连续提交范围,并提供-n(不自动提交)、-x(记录来源)等实用选项。使用时需注意可能产生的冲突,通过--continue或--abort处理。相比merge和rebase,它更适合选择性同步代码,但需谨慎用于公共分支以避免历史混乱。
2025-11-25 22:24:20
434
原创 git fixbug分支的使用
为每个Bug修复创建独立分支是高效开发的关键实践。具体流程为:1)从主分支创建命名规范的修复分支(如fixbug/xxx);2)在分支上修改并提交代码;3)通过Pull Request进行代码审查后合并到主分支;4)删除已合并的本地和远程分支。这种方法能隔离修改、支持并行开发、便于代码审查,并确保主分支稳定性。推荐使用Pull Request流程,在合并前进行团队代码审查,同时保持清晰的提交信息(如"fix:"前缀)和分支命名规范。
2025-11-25 22:14:00
390
原创 git feature分支的使用
Git Feature Branch 工作流是一种高效的团队协作开发模式。其核心思想是为每个新功能创建独立分支开发,完成后通过Pull Request合并回主分支。主要流程包括:从主分支创建功能分支、独立开发、定期同步主分支更新、推送功能分支、发起PR/MR代码审查、根据反馈修改、合并分支并清理。这种工作流具有隔离开发、保持主分支稳定、便于代码审查等优势。最佳实践包括保持分支短小、频繁提交、清晰描述、及时同步主分支变更等。在Gitee平台中,该流程通过Pull Request实现,提供多种合并方式选择,是团
2025-11-25 22:05:33
854
原创 git fastforward模式
Fast-Forward(快进)是 Git 合并分支时的一种特定情况。要合并的分支(例如 feature)的“指针”,直接领先于当前所在分支(例如 main)的“指针”,并且当前分支自分离后没有产生任何新的提交。简单来说,就是目标分支的提交历史是源分支的直接延续,中间没有分叉。特性Fast-Forward 合并 (git merge非 Fast-Forward 合并 (历史记录一条直线,隐藏了分支的存在。有明确的合并提交,保留了分支拓扑结构。可读性简洁干净。更清晰,能看出哪些提交是在分支上完成的。
2025-11-25 22:02:32
427
原创 MD5 正向输出 反向输入
当我们听到MD5被“破解”时,通常指的不是能够从哈希值反向计算出原始数据。碰撞攻击:找到两个不同的输入数据,但它们拥有相同的MD5哈希值。例子:黑客可以制造两个不同的程序文件,一个无害,一个恶意,但它们的MD5值相同。他可以用无害文件的MD5值让你相信恶意文件是安全的。现状:MD5的碰撞攻击已经被证明是可行且快速的,在普通电脑上几秒钟内就能完成。因此,MD5绝对不能再用于需要防碰撞的场景,如数字证书、文件完整性校验。彩虹表/暴力破解:这也不是真正的“反向”数学计算。彩虹表。
2025-10-17 09:07:11
827
原创 浏览器输入域名后都发生了啥
输入域名 -> DNS解析 -> TCP连接 -> SSL握手(HTTPS) -> 发送HTTP请求 -> 接收HTTP响应 -> 浏览器解析渲染 -> 显示网页这个过程涉及了计算机网络、DNS、HTTP协议、浏览器引擎等多个领域的知识,是现代互联网通信的基础。
2025-10-13 11:07:00
309
原创 运算符实现用户标签的CURD
摘要:本文介绍了使用Java位运算符实现高效用户标签系统的方法。通过将每个标签对应整数的一个二进制位,利用位运算进行标签的添加、移除和检查操作。文章展示了基本实现代码,包括标签常量定义、核心操作方法,以及高级用法如批量操作、枚举封装和数据库存储建议。这种方案适合标签数量固定且需要高性能的场景,最多支持32个标签(使用int),具有内存占用小、操作快速的特点,但需注意标签数量限制和位分配唯一性。
2025-06-17 13:27:33
286
原创 mac springboot com.spotify Docker 容器化部署
mac电脑使用com.spotify 构建springboot 项目成Docker镜像的注意事项
2024-03-12 09:00:24
936
1
原创 volatile可以使得long和double的赋值是原子的
关键字并不能解决所有的线程安全问题,对于更复杂的并发场景,还需要考虑其他并发控制手段,如锁、CAS(Compare and Swap)操作等。类型的变量可以确保它们的赋值操作是原子的,即要么完全成功,要么完全失败,不会出现中间状态。关键字仅保证对单个变量的读写操作的原子性,对于复合操作(例如递增、递减等)需要额外的同步措施来保证原子性。类型的变量的赋值操作是原子的。原子操作指的是在一次操作中完成,不会被其他线程中断或干扰。关键字修饰这些变量,其他线程在执行期间可能会看到变量的中间状态,导致不一致的结果。
2024-02-21 10:55:27
555
1
原创 Java运算符
按位与运算会将两个整数的二进制表示逐位比较,只有当相应位置上的位都为1时,结果的对应位才为1,否则为0。按位异或运算会将两个整数的二进制表示逐位比较,如果相应位置上的位不同,则结果的对应位为1,否则为0。这里,a和b的按位异或运算结果为6,因为它们的二进制表示的第二个位和第四个位不同,所以结果的第二个位和第四个位为1。另外,与逻辑与操作符不同,按位与操作符不具备短路特性,即无论第一个操作数的值是什么,都会对第二个操作数进行求值。这里,a和b的按位与运算结果为1,因为它们的二进制表示的第一个位都为1。
2024-02-20 21:57:47
257
原创 springboot之Docx4j操作pptx
文章目录springboot之Docx4j操作pptx一、引入依赖(清仔细阅读注释的部分 避免走弯路)二、两种方式获取pptx文件1、直接创建pptx文件2、从模版读取三、添加一段文字四、插入图片五、插入表格六、占位符替换七、pptx to xml八、页面删除九、在某个页面后面插入一个页面注意事项springboot之Docx4j操作pptx所有代码已经上传一、引入依赖(清仔细阅读注释的部分 避免走弯路)<dependencies> <dependency>
2023-10-17 10:26:59
1122
原创 picgo使用gitee做图床 出现 stateCode 403 Forbidden
picgo使用gitee做图床 出现 stateCode 403 Forbidden
2022-03-29 09:11:42
1127
1
原创 Redis的incr命令引发的反序列化异常和ERR value is not an integer or out of range异常
`Redis`的`incr`命令引发的反序列化异常和`ERR value is not an integer or out of range`异常
2022-03-28 16:39:45
10579
2
原创 org.springframework.data.repository 配合事物@Transactional的一个坑 在有事物的情况下
org.springframework.data.repository 配合事物@Transactional的一个坑
2021-12-29 11:18:25
760
转载 Springboot 整合druid+mybatisplus+jta分布式事务+多数据源aop注解动态切换
Springboot 整合druid+mybatisplus+jta分布式事务+多数据源aop注解动态切换引用的是一篇博主的文章非常详细引用的是一篇博主的文章非常详细文章地址:https://blog.youkuaiyun.com/qq_35387940/article/details/103474353我只是做了个demo,在博主的基础上稍微做了一些修改,demo已经发布到git上,有需要的朋友可以去看https://github.com/laoyouji1018/dynamicDataSource.git
2020-09-10 11:39:05
931
原创 xm-select中树形下拉框的使用
xm-select中树形下拉框的使用官网:https://maplemei.gitee.io/xm-select/#/component/install需要的js可以去官网下载效果图因为整体效果美观,所以选用了该插件完整代码如下实体类package com.kh.thunder.entity.vo;import lombok.Data;import java.util.List;@Datapublic class TreeResult { private String
2020-06-20 13:50:00
5111
3
原创 aspose使用合集java(Word、Excel、PPT转PDF)
aspose使用合集java(Word、Excel、PPT转PDF)aspose使用合集java(Word、Excel、PPT转PDF文档所需jar包Word转为PDF获取license简单的Word转为PDFWord转为PDF的同时往Word上填充数据Excel转为PDFPPT转为PDFaspose使用合集java(Word、Excel、PPT转PDFAspose.word for Java是一个类库,它使应用程序能够执行大量的文档处理任务。Aspose.word支持DOC、DOCX、RTF、HTML
2020-06-06 13:54:18
10203
7
原创 jackson gson fastjson三者的区别
1.使用fastjson对象中有一个有一个非null属性,其他都是null访问该方法的返回值如下:2:使用jackson对象中有一个有一个非null属性,其他都是null访问该方法的返回值如下:不管对象中有没有值,都将返回对象,及时为空3:使用gson对象中有一个有一个非null属性,其他都是null返回值同理和fastjson一样总结:结合实际情况使用,如果处于效率考虑,建...
2019-09-22 17:01:40
2836
1
原创 springboot项目 java heap space
application.yml文件设置响应头大小server: #tomcat: #max-http-post-size: -1 max-http-header-size: 404850000当访问页面时出现以下问题:出现以上问题的原因是响应头缓冲区超了这个设置后是固定大小 不足的补0.所以响应头缓冲区超了而且设置这个又会影响速度的,每次响应头缓冲区自动补零当出现以上问...
2019-09-22 14:55:08
4753
1
原创 springboot项目图片上传到项目中(使用base64上传及查看)
springboot图片上传byte[] byteImg = ImgTransition.base64ToByte(base64);//把前端传来的base64转成字节码 // 生成文件名(此处使用UUID生成)UUID uuid=UUID.randomUUID(); String files = uuid+ ".jpg"; //获取工程内部的文件夹路径(需要在你的项目中的webapp下...
2019-09-17 16:25:12
4345
空空如也
npm install ws 出现以下错误
2020-08-09
activiti中act_hi_varinst的TASK_ID_存储为null
2019-10-11
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅