- 博客(28)
- 问答 (1)
- 收藏
- 关注
原创 排序算法-堆排序
堆排序是一种高效的排序算法,利用完全二叉树结构实现。它通过构建最大堆(父节点大于子节点)逐步将最大值移到数组末尾。算法分为两个阶段:先构建最大堆,然后反复交换堆顶与末尾元素并调整堆。时间复杂度为O(n log n),是原地排序算法。Go语言实现展示了基础版本、带步骤显示的版本以及完整的堆数据结构实现,包括插入、提取最大值和堆调整操作。堆排序特别适合需要部分排序或优先队列的场景。
2025-08-02 20:30:00
243
原创 排序算法-归并排序
归并排序是一种基于分治法的稳定排序算法,时间复杂度为O(n log n)。文章介绍了归并排序的基本原理:将数组不断二分直到子数组长度为1,然后递归合并有序子数组。提供了Go语言实现的三个版本:基础递归版本、原地归并版本(减少空间消耗)和带详细步骤显示的版本(便于理解算法执行过程)。代码示例展示了如何分解、排序和合并数组,其中原地版本通过临时数组实现原地合并,而步骤显示版本则直观呈现了算法每一步的操作细节。
2025-08-02 20:00:00
357
原创 排序算法-快速排序
快速排序摘要 快速排序是一种基于分治策略的高效排序算法,由Tony Hoare于1960年提出。其核心思想是:1)选择基准值;2)将数组划分为小于和大于基准值的两部分;3)递归排序子数组。Go语言实现展示了基础版本(时间复杂度O(n log n))和优化版本(采用随机基准、三路分区和小数组插入排序优化)。算法演示版本详细展示了排序过程的分区和递归步骤。快速排序在实际应用中性能优异,是常用的排序算法之一。
2025-08-02 16:49:21
264
原创 排序算法-冒泡排序
冒泡排序是最基础的排序算法之一,通过重复比较相邻元素并交换位置实现排序。其核心思想是每一轮将最大的元素"冒泡"到数组末尾。基础实现时间复杂度为O(n²),但优化版本可在数组已有序时提前终止。文章提供了Go语言实现的基础版和优化版代码,分析了算法的时间/空间复杂度,并指出其简单易懂但效率低下的特点。冒泡排序适合教学演示和小数据集排序,在实际开发中更多作为学习排序算法的入门案例而非生产环境使用。关键优势在于实现简单、空间占用小且稳定,但大数据集下性能较差。
2025-08-02 15:30:21
316
原创 XORM完全指南:Go语言数据库操作从入门到进阶
XORM完全指南:Go语言数据库操作摘要 XORM是Go语言中功能强大的ORM框架,支持MySQL、PostgreSQL等多种数据库,提供CRUD、复杂查询、事务处理等特性。本文介绍了XORM的基本使用: 环境配置:安装依赖并创建数据库连接 数据模型:定义结构体与表映射关系 基础操作: 表创建(Sync2) 数据插入(单条/批量Insert) 查询(Get、Find、条件Where) 更新(Update) 删除(Delete) 通过面向对象方式简化数据库操作,适合Go开发者快速实现数据持久化。示例代码完整,
2025-07-24 17:31:48
480
原创 Go基础教程 从零到英雄:30分钟掌握Go语言核心精髓
本文是一篇30分钟快速掌握Go语言的教程,涵盖从环境搭建到实战项目的完整学习路径。主要内容包括: 环境搭建(2分钟):提供Windows/Linux/macOS系统的多种安装方式,并验证第一个Go程序 基础语法(10分钟): 变量声明的3种方式 基本数据类型和复合类型 控制流程(if/for/switch) 数据结构(5分钟): 数组与切片操作 映射(Map)的创建和使用 结构体定义和方法 函数进阶(5分钟): 基础函数和多返回值 错误处理机制 教程采用代码示例驱动的方式,每个知识点都配有可运行的代码片段,
2025-07-24 15:54:42
280
原创 Go语言管道Channel通信教程
Go语言Channel通信教程摘要:本教程详细介绍了Go语言中Channel的基础概念、类型创建与操作方式。主要内容包括无缓冲/有缓冲Channel的区别、方向性Channel的使用、基本的发送接收操作、关闭Channel的注意事项,以及使用Select语句实现多路复用和超时控制。教程还展示了生产者-消费者模式等常见并发模式,通过代码示例演示了Channel在goroutine间通信的实际应用,体现了Go"通过通信共享内存"的核心并发哲学。
2025-07-24 15:45:29
780
原创 Go进阶高并发(多线程)处理教程
本教程深入讲解Go语言高并发编程的核心技术,涵盖以下内容: Goroutine机制:详解轻量级协程的创建、调度原理和生命周期管理 同步原语:包括WaitGroup、Mutex、RWMutex和Once的使用场景与最佳实践 并发模式:重点分析Worker Pool和扇入扇出模式,提供完整代码示例 性能优化:从调度器原理(M:N模型)到实际场景的性能调优技巧 实战案例:通过计数器、单例模式等示例展示并发编程的实际应用 教程采用理论+代码示例的方式,帮助开发者掌握Go语言高并发编程的核心技术要点,适用于中高级Go
2025-07-24 15:44:13
537
原创 芋道开源项目开放平台接入指南(实现客户端 client_credentials 模式)
本文介绍了芋道开源项目如何实现OAuth2 client_credentials模式的开放平台接入。核心实现包括OAuth2GrantServiceImpl中的grantClientCredentials方法,支持可选scope参数和权限验证,使用虚拟用户ID(-1)标识客户端令牌。项目提供完整的开放API接入方案,包含标准OAuth2认证、灵活scope权限控制、安全令牌机制。开发者可通过简单的curl命令获取访问令牌,并调用设备管理等相关API。文档还详细说明了各接口所需的权限范围和请求示例,为第三方开
2025-07-22 17:08:06
611
原创 Go语言高并发聊天室(三):性能优化与压力测试
本文介绍了Go语言高并发聊天室的性能优化与压力测试方案。通过基准测试发现初始版本存在内存使用高、GC频繁等问题。文章提出了三项核心优化技术:1)使用sync.Pool实现内存池复用对象,减少GC压力;2)采用分片锁和无锁数据结构优化连接管理;3)实现消息批处理机制提高吞吐量。优化后的系统支持10万并发连接,消息吞吐量提升至5000条/秒,同时降低内存和CPU使用率。文章还提供了详细的性能数据对比和生产环境部署建议,为构建高性能WebSocket服务提供了实用参考。
2025-07-17 18:00:31
529
1
原创 Go语言高并发聊天室(二):WebSocket服务器实现
在当今互联网时代,实时通信已成为各类应用的核心功能。从微信、QQ到各种在线协作工具,高并发聊天系统的需求无处不在。本系列文章将手把手教你使用Go语言搭建一个支持**10万并发连接**的聊天室系统。
2025-07-12 16:00:00
306
原创 Go语言高并发聊天室(一):架构设计与核心概念
在当今互联网时代,实时通信已成为各类应用的核心功能。从微信、QQ到各种在线协作工具,高并发聊天系统的需求无处不在。本系列文章将手把手教你使用Go语言搭建一个支持10万并发连接的聊天室系统。
2025-07-12 11:09:20
482
原创 从写代码到代码指挥官:AI时代的编程新范式
从写代码到成为代码指挥官,这不仅仅是工具的升级,更是思维方式的根本转变。拥抱变化:积极学习和使用AI工具提升认知:从实现者转变为设计者持续进化:跟上AI技术的发展步伐保持初心:技术始终是为了解决实际问题在AI时代,最成功的程序员不是那些写代码最快的人,而是那些能够最好地与AI协作,将创意转化为现实的"代码指挥官"。
2025-07-10 11:45:29
907
原创 AI时代还需要学习编程吗?深度思考与实践建议
随着ChatGPT、Claude、GitHub Copilot等AI工具的快速发展,编程领域正在经历前所未有的变革。许多人开始质疑:既然AI可以写代码,我们还需要学习编程吗?这个问题值得我们深入思考。
2025-07-08 17:01:02
816
原创 Beego Web框架完全指南:从入门到实战
《Beego Web框架完全指南》是一份全面的Beego框架学习资源,包含实战Demo项目。教程从环境搭建到高级特性,系统讲解了Beego的MVC架构、RESTful API开发、路由配置、ORM模型和模板引擎等核心功能。重点演示了用户管理系统的完整实现,涵盖注册/登录/退出、用户列表分页、删除等常见功能,并提供现代化响应式UI。通过学习本指南,开发者将掌握使用Beego构建高性能Web应用的技能,适用于Web开发、API服务和微服务架构等场景。附赠的可运行Demo项目(CSDN下载)让学习更加直观高效。
2025-07-08 16:05:40
1026
原创 Java和Go各方面对比:现代编程语言的深度分析
Java与Go语言深度对比分析:Java作为成熟的面向对象语言,在企业级开发中占据主导地位25年,强调"一次编写,到处运行"和稳定性;而Go以简洁性和并发编程为核心,编译速度快,适合云原生应用。Java在复杂业务系统、Android开发方面表现优异,Go则在微服务、网络编程领域更具优势。Java生态丰富但代码冗长,Go语法简单但IDE支持较弱。选择应基于项目需求:Java适合长期维护的复杂系统,Go适合快速开发的高并发服务。两者各有优势,在云原生时代可互补使用。
2025-07-08 14:49:20
916
原创 Linux(Ubuntu/Debian)系统搭建Go开发环境
本文详细介绍了在Ubuntu/Debian系统上搭建Go开发环境的两种方法:通过包管理器安装(适合新手)和手动安装最新版本(推荐)。内容包括下载安装Go、配置环境变量、创建工作空间、安装开发工具(Git、VS Code等)、创建第一个Go程序以及常用命令和故障排除。特别为中国大陆用户提供了代理设置建议,帮助解决下载模块慢的问题。最后还提供了Go官方学习资源的参考链接,适合不同层次的开发者快速搭建高效Go开发环境。
2025-07-08 14:40:40
1001
原创 MyBatis-Flex入门教程:轻量高效的MyBatis增强框架
MyBatis-Flex入门摘要 MyBatis-Flex是一个轻量高效的MyBatis增强框架,在保留MyBatis灵活性的同时,提供了更强大的查询构建器、动态表名和多租户支持等企业级特性。相比MyBatis-Plus,它具有性能卓越(执行效率提升5-10倍)、轻量无依赖、功能丰富等优势。 使用步骤包括:添加依赖、配置数据源、创建实体类与Mapper接口,支持基础CRUD和链式查询。进阶功能涵盖动态表名、逻辑删除、多表联查和字段权限控制。最佳实践建议使用代码生成器、优化批量操作和SQL监控。 对比MyBa
2025-07-08 14:25:17
697
原创 Nginx限制访问方式,禁用OPTIONS TRACE不安全方法
一、背景场景:jar包已经打包部署,项目源码不能修改,解决 curl -v -X TRACE 时200 漏洞解决方法, 从Nginx下手二、360安全要求,尽量用get和post的api的应用,禁用OPTIONS ,即对put,delete,tract等最不要使用,他们认为不安全。三、nginx中的配置: server {undefined listen 80; server_name localhost; #chars
2021-11-24 11:41:48
6341
原创 Mybatis-Puls(2)---配置日志、插入测试及雪花算法
一、配置日志现在我们的所有sql是不可见的,我们希望知道他是怎么执行的开发时这是我们必看的,上线时可以去掉,他是浪费时间的# 配置日志mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl再次运行就可查看了日志了.insert@Test public void testinsert(){ User user = new User(); user.se
2021-05-18 10:32:56
295
原创 Mybatis-Plus(1)----快速入门
一、特性官网:https://mp.baomidou.com/[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZvwdOxjT-1621304934753)(http://47.94.18.14:8080/sqalong/img/sqalongblog/mybatis-plus.jpg)]二、快速入门导入对应依赖研究依赖如何配置代码如何编写提高扩展技术能力步骤创建数据库,创建表,添加内容DROP TABLE IF EXISTS user;CREA
2021-05-18 10:31:02
170
原创 SpringBoot整合阿里云SMS短信服务 并实现发送短信验证码的功能 Redis Java 短信验证码
SpringBoot整合阿里云SMS短信服务 并实现发送短信验证码的功能 Redis Java 短信验证码目录SpringBoot整合阿里云SMS短信服务 并实现发送短信验证码的功能 Redis Java 短信验证码准备工作整合1.引入依赖2.接口+实现类(详细看注解)3.控制层(详细看注解)4.配置文件5.访问接口总完结撒花准备工作首先需要去 阿里云官网获取您的 AccessKey 和 AccessKey Secert教程: 获取AccessKey教程地址.1.打开阿里云控制台可以 先在
2021-03-08 14:49:34
472
1
原创 Error resolving template template might not exist or might not be accessible
在使用Spring Boot与thymeleaf模板时,开发模式下一切正常,执行jar包之后,它就会遇到这个错误。就是模板页不存在,但是实际上它能找到模板页,但是在使用th:include标签的时候才会出错.我们只需要在引用模板文件的时候不用”/”打头就可以了,通过类似相对路径的方式来引用...
2020-11-19 14:21:41
1019
原创 Cannot resolve symbol ‘mapper‘
Cannot resolve symbol 'mapper'这个异常…如果你也是查了很多没有查到原因,正好看到这:或许你应该看一看你的xml文件的后缀是否正确(IDEA)。
2020-11-09 17:12:16
1125
原创 谈论实习内训 之「任意门」提升认知、「任意门」自我介绍
1.题解「任意门」提升认知 2.打造「任意门」自我介绍1.1 后疫情时期就业形式1.2.1 我们面对的时代-黑天鹅和灰犀牛1.2.2我们面对的时代-VUCA1.3.1提升认知,应对风险2.1打造任意门自我介绍意义2.2自我介绍结构2.3.1自我个绍结构2.3.2自我个绍2.0版本结构拆解2.3.3自我介绍2.0版本拆解2.4 自我介绍正确打开方式2.5. 自我介绍检测方式1.1 后疫情时期就业形式近期职场高频词汇裁员、倒闭、待岗、破产、降薪、缩编供给端过剩,需求端萎靡总体较悲观,局部有机会1.
2020-05-20 20:33:29
8828
原创 初学Python爬虫之豆瓣电影数据爬取/XPath+PyMySql / Csv 超详解
爬取豆瓣电影TOP250信息,并存进数据库这里还有爬取更详细的内容,请点击这里技术用到的有requests,pymysql,lxml,xpath爬取内容首先查看网页源码,右键查看网页源代码我们可以发现每部电影的信息都在li标签中:这就表明我们不需要去抓包分析。思路很简单了:发送请求→获取网页源代码→xpath提取→保存信息。下面附上超详细的源码:????????????????import requestsfrom lxml import etreeimport pymysqldef
2020-05-15 14:39:23
1744
原创 2020年最新校园宿舍管理系统可预览附源码, MVC、mysql、servlet、jsp、Bootstrap、Jdbc
项目说明: 此系统是 MVC构架模式, MySql + Servlet + Jsp 加前端框架Bootstrap编写, 使用Eclipse开发,是新手练习的不二项目。 由三种角色登录,分别是系统管理员、楼宇管理员和学生,每种身份登录后功能不同, 系统管理员: 公寓管理、宿舍管理、管理员管理、学生管理、入住登记、寝室调换、迁出记录、缺勤记录、迁出记录、修改密码、退出登录 楼宇管理员: 学生管理、缺勤记录、修改密码、退出登录 学生: 我的缺勤记录、修改密码、退出登.
2020-05-13 17:15:17
2400
11
原创 记录数据库面试题及答案1~20
数据库面试题触发器的作用什么是存储过程,用什么调用索引作用,优缺点主键和索引的区别什么是内存泄漏维护数据库完整性,一致性,你会用那种方法什么是事务什么是锁什么是视图游标是什么SQL Server 中使用的数据库对象触发器的作用通过事件触发,维护数据库的完整性和一致性什么是存储过程,用什么调用为以后的使用而保存的一条或多条MySQL语句的集合。存储过程就是有业务逻辑和流程的集合, 可以在存储过程中创建表,更新数据, 删除等等。存储过程用create procedure 创建, 业务逻辑和sql写在b
2020-05-12 19:04:08
447
1
Beego Web Demo项目
2025-07-08
查询数据库做出二级联动的map集合
2021-09-25
TA创建的收藏夹 TA关注的收藏夹
TA关注的人