Java游戏修炼手册:2023 最新学习线路图
前言
有没有一种令人兴奋的学习方法?当然有!绝对有!而且我要告诉你,学习的快乐可以媲美游戏的刺激。
小学时代,我曾深陷于一款名为"八百万勇士的梦"的游戏。每当放学,我总是迫不及待地打开电脑,沉浸在那五彩斑斓的虚拟世界中。每解锁一个新的技能,每打败强大的敌人,都让我感到无比的满足。那时,我便思考,学习为何不能如此吸引人呢?如果我们能够像对待游戏中的每一个关卡那样对待学习的每一个难题,那么,我们是否能够更加享受学习过程,并从中获得更多的乐趣和成就感呢?这正是我想与你分享的:一种将学习与游戏的乐趣相结合的方法,让你在攻克知识的同时,也能体验到游戏中的快乐。
写在开头
本篇文章是为那些渴望探索计算机编程、希望掌握Java语言的朋友们准备的。无论你是已经对编程有所了解,还是一个完完全全的新手,这里都有适合你的内容。
学习编程,尤其是Java,绝不仅仅是看看书、听听课就可以的。学习任何编程语言都需要动手实战。对于刚刚入门的你,首先建议安装和配置好JDK环境,选择一个你觉得舒适的IDE,例如Eclipse、IntelliJ IDEA等。
而且,学习很多时候可能会觉得有些枯燥,特别是一个人面对屏幕和代码。如果你觉得孤单或者遇到了瓶颈,为何不拉上一两个小伙伴一同学习呢?结伴而行不仅可以互相鼓励,还可以在遇到问题时互相帮助、探讨,使学习过程更加充实和有趣。
本文是基于游戏化思维的一个练级攻略。那么,什么是游戏化思维呢?游戏化思维是一种将游戏的元素、设计技巧和思维方式应用到非游戏环境中的方法,旨在激发人们的兴趣,增强参与感,使得原本可能枯燥的学习过程变得充满乐趣和挑战。这样的方法能够帮助你更高效地吸收知识,更有动力地攻克每一个难题。我们将按照这样的思维方式,将编程的学习过程划分为不同的“关卡”和“任务”,让你在完成每一个挑战的同时,也能体验到成长的快乐。
记住,最重要的是:要动手敲代码。只有实际编写代码,才能真正理解和掌握它。遇到问题不要灰心,编程的路上总会遇到各种挑战,但正是这些挑战,帮助我们不断成长。希望你能在这次的学习旅程中,找到编程的乐趣,探索更深的技术海洋!
这个游戏如何属性加点?
- 逻辑思维能力:编写、理解和优化算法的基础,它能帮助人们分析问题、设计解决方案。
- 抽象思维能力:能够看到问题的本质,而不仅仅是表面的细节。这有助于他们创建通用的、可重用的解决方案。
- 求知心:对新问题和技术保持好奇,总是渴望学习和探索。
- 持久性和毅力:面对难题时,不轻易放弃。通过不断的尝试和迭代,他们最终会找到解决方案。
- 沟通能力:有效地与他人沟通自己的思路和解决方案是非常重要!,特别是在团队工作中。
- 创造力:在寻找新的或优化现有解决方案时,创造力是非常宝贵的。
- 系统思维:了解整个系统如何协同工作也是非常重要的。技术永远都是服务于业务, 拥有完整全局的业务视角, 做任何事情都有plan BCDEF
系统提示:你现在一个虚拟现实的世界, 这个世界有多个职业。你选择转职为超级架构师。本职业共发布十个主线任务;前面的主线任务是后面主线的充分不必要条件。前面的主线任务掌握的越牢固,基础属性就越多。耐力值不足的小伙伴可以直接跳到第二个主线任务。
下面再为你介绍完整的主线任务,通关者!请仔细阅读:
- 初出茅庐 - 开启Java之旅,学习Java基础并向面向对象编程深入。
- 基石之路 - 掌握编程的基础知识,进入算法与数据结构的世界。
- 效率为王 - 了解并掌握开发者常用的工具,提高开发效率。
- Web之门 - 探索JavaEE,了解Web服务器和构建网站的基础。
- 数据守护者 - 深入数据库领域,学习关系型、非关系型数据库的设计与优化。
- 深入秘林 - 探索Java的高级概念,了解并发编程及JVM的内部机制。
- 高屋建瓴 - 学习流行的开发框架,掌握现代应用的构建与设计。
- 知识的瞭望塔 - 探索搜索引擎技术与高并发系统设计。
- 远古遗迹 - 探索高可用性设计、分布式系统的基础。
- 新大陆探险 - 深入微服务领域,了解其设计、部署与优化。
一、初出茅庐:Java冒险的开始
🎊 经过了编程的基石之路,你已经做好了准备,准备迈向更专业、更具挑战性的领域。Java,这个世界上最受欢迎的编程语言之一,等你来探索!在Java的世界中,你不仅会遇到更复杂、更强大的工具和技术,还会发现编程背后的哲学和深远的思考。而面向对象编程,更是如同一扇打开新世界之门的钥匙,它将引领你进入一个充满无限可能和创意的宇宙。
📜 任务发布: 新手,开始你的超级架构师之旅吧!首先,你需要掌握Java的基础语法和面向对象编程。同时,关注Java8的新特性,并持续留意Java11、17、21LTS版本的更新。每一个版本都有其独特之处,你准备好深入探索了吗?
进度条: ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ (1%)
📚 推荐资源:
- 《Java核心技术卷》 - 为你深入解析Java的各个角落,为你的编程之旅提供宝贵的知识。
- 《Head First Java》 - 通过创意的方式帮你深入理解Java,并为你在其他语言上的学习打下基础。
- Oracle’s Java Documentation - 直接从Java的官方来源获取最新版本的特性和变更。
🎖 成就: 完成这些学习任务后,你将获得 “Java新手” 徽章,这是你架构师旅程中的第一个里程碑!
主线任务:
- 掌握Java基础语法。
- 理解并应用面向对象编程。
- 深入学习Java8的新特性,并对Java11、17、21等后续版本保持持续关注。
支线任务:
- 编写一个简单的Java加密工具,探索数据的加密和解密技术。
- 研究开源Java项目,看看那些人是如何使用Java的。
- 在Java社区中参与版本更新的讨论,了解社区的反馈和看法。如果可以,请你发布一篇文章让更多的人看到。
进阶任务:
- 列举Java的主要特性,并与其他主流语言(如Python、C++、JavaScript等)进行对比。
- 思考:为什么Java需要这些新的特性?它们是如何帮助你成为更好的架构师的?
代码是时代的见证,而技术的进步是你前行的动力。跟上Java的步伐,走在架构师世界的前列。
二、基石之路:编程的进阶之旅
算法不仅是入职顶尖大厂的敲门砖,也往往是许多人感到困难并最容易放弃的一块。特别是对于CS专业的大学生,我强烈建议你在校期间系统地学习并精通它。不仅如此,多参与编程和算法竞赛不仅可以帮助你锻炼实际技能,还能大大提升你的竞争力,为将来的职业生涯奠定坚实的基础。
🎊 欢迎来到计算机编程的世界!每位程序员,都是从这里开始的。在这条道路上,你不仅会学到如何“说”计算机语言,更会学到如何用逻辑和策略去解决问题。
📜 任务发布: 新的冒险者,编程的世界并不只是代码和机器,它更是关于思维、策略和解决问题的艺术。开始你的修炼吧!首先,你需要理解编程的基础知识,进一步深入算法与数据结构的入门探索。你准备好接受这挑战了吗?
进度条: ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ (9%)
📚 推荐资源:
-
《算法》 - 通过这本书,你将了解算法的核心思想和它在计算机世界中的应用。
-
LeetCode官方网站 - 一个专为程序员提供算法与数据结构挑战的平台,让你在实战中提升自己。
推荐学习该课程:图解算法数据结构
- GitHub - 代码托管平台,有不少开源的优质项目。
推荐项目:
labuladong的算法开源项目
可视化算法
- 推荐网站 Data Structure Visualizations
🎖 成就: 完成这些学习任务后,你将获得 “编程初学者” 徽章,标记你在编程大陆的第一个脚印!
主线任务:
- 培养兴趣、快速上手,能运行和编写简单的 Java 程序。
- 熟悉编程的基础概念,如变量、控制结构和基本的数据类型。
- 掌握基本的算法概念,如排序和查找。
- 了解常见的数据结构,如数组、链表和树。
支线任务:
5. 尝试写出你的第一个程序,它可以是一个简单的计算器或一个小游戏。
6. 在LeetCode上完成5个入门级别的算法题。
7. 参加一个线上编程工作坊或研讨会,感受编程社区的热情。
进阶任务:
8. 深入研究一种排序算法,了解其背后的思想和工作原理。
9. 思考:为什么需要数据结构和算法?它们如何在实际应用中帮助我们优化解决问题?
编程不仅仅是一种技能,更是一种思维方式。在这条基石之路上,每一步都将为你的未来铺设坚实的基础。继续前行,编程的宇宙等你探索!
三、 效率为王:开发工具的掌握
🎊 现在,你已经对编程有了基本的掌握,并在Java的大门被你成功推开。但在这片广阔的土地上,要想更快、更好地创建和优化,你需要一些得力的助手。工具和IDE将成为你的得力助手,它们将助你一臂之力,提高你的开发效率,让你在编程的海洋中畅游无阻。
为什么要学习工具思维?
- 效率至上:在当今这个高度信息化的时代,工具是提高效率的关键。使用适当的工具,可以使你以更低的代价完成更多的工作。
- 扩展能力:掌握各种工具,不仅可以帮助你解决现有的问题,还可以让你发掘和拓展自己的能力,成为更全面的程序员。
- 创新思维:了解并熟悉各种工具,可以激发你的创新思维,使你在面对新的挑战时,能够有更多的解决方案。
为何本章为第三章?
- 在学习编程的早期,掌握核心编程思想和基本技能是至关重要的。但随着你的深入,你会发现,单靠基础技能,你很难在编程世界中迅速推进。因此,在掌握了基本的编程知识后,接下来,你需要学会如何利用各种工具来提高你的开发效率和能力,这也是为什么我们将此章设为第三章。
进度条: ⬛⬜⬜⬜⬜⬜⬜⬜⬜⬜ (19%)
📜 任务发布:
- Git - 学习Git的基本操作、分支管理及合并。当你能够流畅地在版本之间穿梭,你就真正掌握了这一工具。
- Docker - 探索容器的奥秘,学会使用Docker创建、管理和部署容器。当每一个应用都可以轻松打包、运输和部署,你就站在了巨人的肩膀上。
- Maven & Gradle - 熟悉这两大构建工具,掌握项目依赖的管理。当你能够自如地构建和管理项目,你的代码世界将无往不利。
- IDEA - 深入IntelliJ IDEA,使其成为你编码的得力助手。一款强大的IDE,将为你打开一个全新的视界。
📚 推荐资源:
-
Git官方文档:深入了解Git的各种操作和最佳实践。git-scm-doc
Learn Git Branching
-
Docker官方教程:从零开始,步步深入Docker的世界。
-
Maven官方文档 & Gradle User Guide:掌握构建工具的艺术。
-
IntelliJ IDEA官方文档:发掘IDEA的无尽潜力。
官方往往是最具权威,你可以从官网获取最新的消息。但是,大多数的网站都是英文,需要一定的门槛。
🎖 成就:
- 完成所有任务后,你将获得“工具达人”徽章!
- 如果你能写下一篇关于你如何掌握这些工具的文章,你将获得“工具大师”徽章!
进阶任务:
- 除了上述工具外,尝试探索和学习更多的开发工具,如Jenkins、SonarQube等。记住,多一件工具就多一份能力!
嘿,触发了伙计!工具箱已经摆在你面前,你将如何使用它们,全部取决于你。赋予它们生命,让它们为你而工作,展现你的实力!
四、Web入门:连接世界的桥梁
🎊 拥有了得力的工具,你已经可以高效地编写程序。但现在,是时候让这些程序为更多的人服务,与全球连接起来。Web开发,将是你打开通往互联网无限宇宙的大门,让你的创意飞翔,触达数亿人心灵。
时间设定:约3周
段位晋升:由"Java初级工程师"晋升为"Web应用工程师"
进度条: ⬛⬛⬛⬜⬜⬜⬜⬜⬜⬜ (30%)
📚 推荐资源:
- JavaEE官方教程
- Tomcat官方文档
- Nginx官方指南
- 《Web安全深度剖析》
- 《高性能MySQL》
主线任务:
- 深入JavaEE:开始你的JavaEE学习,理解Servlet以及其他JavaEE核心技术。通过这些技术,你将了解如何构建一个Web应用,并了解其背后的工作原理。
- 掌握Web服务器:学习并实践使用Tomcat和Nginx,这两个是当前最热门的Web服务器。你需要了解它们的配置、部署以及如何处理请求。
支线任务:
- Web安全探索:研究Web应用中常见的安全漏洞,如SQL注入、XSS等,并学习如何防范。
- 性能优化探索:研究如何优化Web应用的性能,包括服务器端优化、数据库查询优化等。
进阶任务:
- 微服务架构:深入理解微服务架构的原理和优势,研究如何利用JavaEE技术实现微服务。
- 负载均衡与高可用性:研究如何使用Nginx进行负载均衡,确保Web应用的高可用性。
- 容器化部署:结合之前的工具,学习如何使用Docker将Web应用容器化,达到“一次打包,到处运行”的目标。
- 深度学习Web安全:研究Web安全的深层次原理,如CSRF、WebSockets安全等。
你现在正站在Web的大门前,前方是一个新的世界,充满了机会和挑战。装备好自己,学会这些核心技能,然后去探索、去发现、去征服这个世界!当你完成这一章的任务时,你将迈出成为Web黑客的决定性一步。记住,黑客不仅仅是代码,更多的是对技术的理解和应用。现在,出发吧!
五、数据的守护者:深入数据库的核心
🎊 在Web的世界中,信息如同心脏一般的跳动,为这个网络世界提供源源不断的能量。而你,将学习如何保护和管理这些数据,确保它们的安全和高效运作,就如同一个守护神。数据库的知识,将带你进入数据的神秘宫殿,深入其每一个角落。
时间设定:约4周
段位晋升:由"初级Web应用工程师"晋升为"中级Web应用工程师"
进度条: ⬛⬛⬛⬛⬜⬜⬜⬜⬜⬜ (40%)
📚 推荐资源:
- 《MySQL必知必会》
- 《Redis设计与实现》
- 《MongoDB权威指南》
- 《高性能MySQL》
- 《数据库系统实现》
主线任务:
- 理解数据库的本质:研究关系型数据库和非关系型数据库的基本原理,掌握如何选择适当的数据库。
- 深入Mysql:从基础使用开始,逐步理解其查询优化、事务处理、备份与恢复等高级技巧。
- 探索NoSQL世界:学习并实践如Redis和MongoDB等非关系型数据库,理解它们的特点和应用场景。
支线任务:
- 数据模型设计:掌握如何设计高效、扩展性好的数据库模型,使之满足实际业务需求。
- 数据安全:研究数据库的安全机制,如何防止SQL注入等常见攻击。
进阶任务:
- 数据库调优专家:深入学习数据库性能调优,掌握各种数据库性能监控工具,成为真正的性能调优专家。
- 分布式数据库:研究如何搭建和维护分布式数据库系统,理解其背后的原理和挑战。
- 数据库复制与备份策略:探索如何实现数据库的高可用性,包括复制、备份和故障转移策略。
伙计,你现在正站在数据的宝藏前,无论是关系型的古老宝藏还是NoSQL的新型宝藏,都需要你去深入挖掘。每一个数据背后都隐藏着一个故事,等着你去发现。而你,要做的不仅仅是收集这些宝藏,更要学会如何保护它们。为了那些追求极致、想要深入了解每一个细节的黑客,进阶任务等待你的挑战。数据守护者,你准备好挑战自己,守护这些宝藏了吗?
六、深入秘林:Java的深度之旅
🎊 你已经是数据的守护者,现在,是时候更深入Java的核心,探索它的秘密。深入其内部机制,了解并发和JVM,这是每个Java大师都必须经历的修行。如同在神秘的丛林中冒险,每一次的探索都将是一个新的挑战。
时间设定:约4周
段位晋升:无段位晋升,内功有所增长,发现看问题角度与排查问题的速度越来越快了!
进度条: ⬛⬛⬛⬛⬛⬛⬜⬜⬜⬜ (60%)
📚 推荐资源:
- 《Java并发编程实践》:这是关于Java并发编程的经典之作,深入浅出,从基础到高级都有详尽的解释。
- JVM官方规范:为真正的Java黑客提供的,里面包含了所有关于JVM的细节和原理。
任务一:并发编程
- 子任务:理解Java的线程和并发概念
- 子任务:掌握
synchronized
、volatile
等关键字 - 子任务:使用
java.util.concurrent
中的高级并发工具 - 进阶任务:设计一个高并发的小程序,并对其进行压力测试
任务二:JVM内部
- 子任务:探索JVM的内存模型
- 子任务:理解垃圾回收的工作原理和不同的垃圾收集器
- 子任务:JVM调优及性能监控
- 进阶任务:手写一个小型的垃圾回收器或模拟JVM内存分配与回收
黑客候选人!你已经进入了Java的深处,接下来的道路会越来越艰难,但是请你咬咬牙, 为黑客打下坚实的技术素养!
七、高屋建瓴:框架应用与设计
🎊 在Java的深处,你已收获了丰富的知识和技能。现在,你将要学习如何搭建高大的建筑,如何用框架为你的应用提供坚固的基石。掌握现代开发框架,你将站在巨人的肩膀上,俯瞰技术的全景。
时间设定:约4周
段位晋升:由"中级Web应用工程师"晋升为"高级Java工程师"
进度条: ⬛⬛⬛⬛⬛⬛⬛⬜⬜⬜ (70%)
📚 推荐资源:
- Spring官方文档:详尽的文档,为你提供所有关于Spring的知识。
- Spring Boot官方文档:手把手教你如何使用SpringBoot。
- Netty官方文档:深入浅出,让你快速上手Netty。
任务一:Spring框架
- 子任务:探索Spring的核心容器与依赖注入
- 子任务:了解Spring的各种模块,如AOP、MVC和Data
- 进阶任务:创建一个小型的Spring应用,并对其进行性能调优
任务二:SpringBoot
- 子任务:理解SpringBoot的核心概念与自动配置
- 子任务:使用SpringBoot快速构建微服务应用
- 进阶任务:结合Docker,实现SpringBoot应用的容器化部署
任务三:Netty
- 子任务:掌握Netty的基础概念,如Channel和Handler
- 子任务:创建一个基于Netty的聊天应用
- 进阶任务:研究Netty的源码,深入理解其网络通信模型
完成这些任务后,你就能够熟练掌握这些框架的“魔法”,轻松创建、部署和维护各种应用。
嘿,黑客候选人!魔法书屋中充满了各种强大的魔法和技能,希望你能够好好利用这些资源,继续深化你的黑客之旅!
八、知识的瞭望塔:搜索引擎与高并发
🎊 *站在高处,你不仅能看到现有的技术景观,还能探索和预见未来的方向。搜索引擎与高并发技术,让你能够快速寻找信息,处理海量的请求,站在技术的前沿,感受风的方向。
*
时间设定:约2周
段位晋升:由"高级Java工程师"晋升为"架构师"
成就:
- 获得“并发与搜索专家”徽章
- 写一篇探索ElasticSearch的高级特性或分享你的高并发实践经验,你将解锁“知识探险家”特别徽章。
进度条: ⬛⬛⬛⬛⬛⬛⬛⬛⬜⬜ (80%)
📚 推荐资源:
- ElasticSearch官方文档:这本指南将引导你深入了解ElasticSearch的奥秘,无论你是初学者还是经验丰富的开发者。
任务一:现代搜索引擎技术
- 子任务:理解ElasticSearch的基础结构和工作原理
- 子任务:实践创建索引、插入数据和进行基本的查询
- 进阶任务:探究ElasticSearch的高级特性,如全文搜索、排名和聚合
任务二:高并发实践
- 子任务:理解并发和并行的基础概念
- 子任务:熟悉常用的高并发解决方案,如线程池、分布式缓存和负载均衡
- 进阶任务:构建一个高并发应用,并进行性能调优与压力测试
完成上述任务,你不仅能够快速准确地从海量数据中找到所需信息,还可以确保你的应用在高并发环境中稳定运行。
站在这瞭望塔上,你将拥有检索和处理海量数据的能力。准备好深入搜索引擎的核心和探索高并发的世界吗?这一站,我们再次出发!
九、远古遗迹:高可用与分布式系统
🎊 从瞭望塔上,你已经看到了技术的高峰,但同时,也看到了古老的遗迹,那些为现代技术打下基础的古老智慧。高可用和分布式系统,如同古代的石碑,为你传达着远古时代的智慧,指引你前进的方向。
时间设定:约2周
段位晋升:由"架构师"晋升为"资深架构师"
成就:获得“系统架构师”徽章
📌 写一篇关于你设计的高可用策略或分布式应用实践的文章,你将解锁“古代建筑大师”特别徽章。
进度条: ⬛⬛⬛⬛⬛⬛⬛⬛⬛⬜ (90%)
任务一:高可用设计
- 子任务:理解高可用的概念及重要性
- 子任务:学习高可用的设计原则,如冗余、故障转移和负载均衡
- 进阶任务:分析常见的故障场景,并为其设计应对策略
任务二:分布式系统基础
- 子任务:熟悉分布式系统的特点和挑战
- 子任务:学习分布式协调技术,如ZooKeeper
- 进阶任务:搭建一个小型的分布式应用,并进行故障模拟与恢复
只有当你掌握了这些关键技术,你的应用才能在任何条件下都保持稳定运行,不受任何外部因素影响。
📚 推荐资源:
- 《分布式系统常见问题及解决方案》: 这本书将带你探索分布式系统的各种问题和相应的解决方案。
- Apache ZooKeeper官方文档: 深入了解ZooKeeper,这个为分布式应用提供协调服务的工具。
嘿,黑客候选人!探索这些远古遗迹,学会如何建设坚固、稳定的系统,是你成为顶尖黑客的关键一步。准备好挑战自己,迎接更高的境界了吗?出发吧!
十、新大陆探险:微服务
🎊 *你已经走过了长长的技术之路,但冒险永远不会结束。微服务,如同一个新大陆,等你去探索和发现。在这片新土地上,你将再次感受到创新和挑战,为你的技术之旅 *
时间设定:约5周
段位晋升:由"资深架构师"晋升为"前瞻资深架构师"
成就:
- 获得“微服务领导者”徽章
- 当你构建并部署了一个微服务应用,并总结了你的实践经验,你将解锁“微服务建筑师”特别徽章。
进度条: ⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛ (99%)
📚 推荐资源:
- Spring Cloud官方文档: 从这里你可以深入了解如何使用Spring Cloud来构建微服务应用。
任务一:微服务设计
- 子任务:了解微服务的核心概念及其与传统架构的区别
- 子任务:学习如何设计微服务,包括服务拆分、通信和数据管理
- 进阶任务:深入理解领域驱动设计(DDD)在微服务中的应用
任务二:微服务部署与优化
- 子任务:熟悉常见的微服务部署策略,如蓝绿部署、金丝雀发布等
- 子任务:学习微服务的监控、日志管理和故障排查
- 进阶任务:优化微服务的性能,包括缓存策略、数据同步和服务治理
这是一片广袤的新大陆,但只有真正探索并实践,你才能够体会到微服务的魅力所在。
黑客候选人,这片新大陆虽然充满了挑战,但也孕育着无尽的机遇。只有那些真正敢于探险的人,才能够在这里找到自己的立足之地。你准备好了吗?让我们一起开启这次微服务的探险之旅!
总结
亲爱的读者,恭喜你走完了这条Java黑客进阶之路。从编程的初心者到架构的大师,你已经涉猎了广阔的技术领域,探索了Java及其周边的深奥领域。你已经装备了打开技术大门的钥匙,但真正的旅程才刚刚开始。
每一个阶段都是你技能树的一个关键节点,你在这条路上投入的每一分努力,都为你在技术世界中打下了坚实的基石。希望你继续保持好奇心,继续追求卓越,继续为梦想努力。
当你回头看这条路时,你会发现自己已经走得很远,但技术的世界永远都是新奇和有趣的。祝愿你在接下来的技术之路上走得更远,达到更高的峰巅!永远空杯,永远在路上
相关文章:

Java游戏修炼手册:2023 最新学习线路图
前言 有没有一种令人兴奋的学习方法?当然有!绝对有!而且我要告诉你,学习的快乐可以媲美游戏的刺激。 小学时代,我曾深陷于一款名为"八百万勇士的梦"的游戏。每当放学,我总是迫不及待地打开电脑&a…...

前端访问geoserver服务发生跨域的解决办法,以及利用html2canvas下载绘制的地图
我的业务场景: 需要利用html2canvas下载Openlayers绘制的地图。 预期:可以下载成图片甚至其他格式(svg)文件。 结果:下载下来是个空白图片。 排查错误:请求数据正常回显到页面上,利用html2canvas截取的时候会发生跨域,导致无法绘制。 首先处理tomcat跨域问题 第一步…...

Word docx转html和markdown
Pypandoc使用pandoc来进行各种文本格式的转换。 安装 # 不带pandoc执行库 pip install pypandoc# 自带pandoc pip install pypandoc_binary使用 import pypandoc# convert all markdown files in a chapters/ subdirectory. pypandoc.convert_file(chapters/*.md, docx, out…...

API商品数据接口调用爬虫实战
随着互联网的发展,越来越多的商家开始将自己的商品数据通过API接口对外开放,以供其他开发者使用。这些API接口可以提供丰富的商品数据,包括商品名称、价格、库存、图片等信息。对于爬虫开发者来说,通过调用这些API接口,…...

【Python机器学习】零基础掌握GaussianProcessClassifier高斯过程
如何准确预测股票走势,从而在股市中获取更高的收益? 股市波动无常,预测股票走势对于投资者来说总是一个巨大的挑战。通常,人们会使用各种各样的方法和工具,但准确性始终是个问题。那么,有没有一种算法可以帮助解决这个问题呢? “高斯过程分类器(Gaussian Process Cla…...

SQL-正则表达式和约束
文章目录 主要内容一.正则表达式1.操作1代码如下(示例): 2.操作2代码如下(示例): 3.操作3代码如下(示例): 4.操作4代码如下(示例): 二.约束1.主键约束 2.自增长约束3.非空约束4.唯一…...

“人类高质量数据”如何训练计算机视觉模型?
人类的视觉系统可以复制吗? 答案是肯定的。 计算机视觉 (Computer Vision) 技术的不断普及,让机器识别和处理图像就像人的大脑一样,且速度更快、更准确。 机器像人类一样去“思考” 计算机视觉 (Computer Vision) 是近年来人工智能增长最快…...

ListenableFuture和countdownlatch使用example
ListenableFuture可以允许你注册回调方法(callbacks),在运算(多线程执行)完成的时候进行调用, 或者在运算(多线程执行)完成后立即执行 import com.google.common.util.concurrent.*;import java.util.concurrent.Call…...

C- strtok() strtok_r()
strtok() strtok 是 C 语言库中的一个函数,用于在字符串上执行分词操作。这意味着它可以用于将字符串分解成多个标记或段,这些标记之间由指定的分隔符分隔。 以下是 strtok 函数的原型: char *strtok(char *str, const char *delim);参数&…...

order by数据过多引起的cpu飙升
测试环境 1.目前数据库类型为pg数据库2.目前数据库业务为共享数据库,为减少其他业务对本次测试的影响,故选在业务空闲时间执行3.服务器性能为8C 32GB 500GB硬盘 原程序测试结果 优化后程序结果 出现原因 当数据量大时,order by排序操作会消耗大量的CPU资源&#…...

namespace命名空间
namespace命名空间 什么是命名空间? namespace命名空间 同一个名称在不同的命名空间中所指向的对象是不同的 为什么要使用命名空间? 防止标识符的命名发生冲突 你写的代码中定义了个fun()函数 所使用的类库中也包含了一个fun()函数 当你的代码中调用fun()函数时 程序:?…...

golang中如何配置 sql.DB 以获得更好的性能
有很多很好的教程讨论 Go 的sql.DB类型以及如何使用它来执行 SQL 数据库查询和语句。但它们中的大多数都掩盖了SetMaxOpenConns()、SetMaxIdleConns()和SetConnMaxLifetime()方法——您可以使用它们来配置 的行为sql.DB并改变其性能。 在这篇文章中,我想准确解释这…...

JAVA同城服务智慧养老小程序怎么开发?
随着人口老龄化的加剧,智慧养老成为了社会关注的焦点。智慧养老小程序作为一种便捷、高效的服务工具,为老年人提供了更全面、个性化的服务。本文将介绍如何使用JAVA编程语言开发一款同城服务智慧养老小程序。 一、设计思路 界面设计:小程序…...

Linux防火墙:Firewalld 常用命令
Linux防火墙:Firewalld 常用命令 CentOS 和 Fedora 中默认的防火墙是 Firewalld 查看防火墙状态 firewall-cmd --state 启动防火墙 systemctl start firewalld 重启防火墙 systemctl restart firewalld 暂时关闭防火墙 systemctl stop firewalld 永久关闭防火墙…...

Java BigInteger比Long更大的整数自增转字符串存储
文章目录 前言BigInteger自增BigInteger转化为StringBigInteger阶乘 前言 BigInteger类在Java中可以表示任意大小的整数,没有固定的范围限制。它使用内部的数组来存储整数的位数,并提供了各种方法来执行算术运算和其他操作。 BigInteger类的大小只受限…...

BigDecimal应用——计算费用场景中用到Integer,Double,BigDecimal三种类型出现的意外情况 结合BigDecimal源码分析
引出 在一个计算费用的场景中,用到了Integer,Double,BigDecimal三种类型,在转换为bigdecimal的时候遇到的问题,结合源码进行了分析。 1.在new bigdecimal的时候,最好传入的是字符串;2.double类…...

数据抓取可以应用到哪些行业
随着互联网的发展,数据已经成为人们生活中不可或缺的一部分。数据抓取作为获取数据的重要手段之一,也被广泛应用于各个行业。本文将探讨数据抓取在各个行业中的应用。 首先,让我们来了解一下数据抓取的基本概念。数据抓取是指通过一定的技术…...

目标检测YOLO实战应用案例100讲-面向小目标检测的多尺度特征融合(续)
目录 3.3 实验结果及分析 3.3.1 实验设置 3.3.2 消融实验 3.3.3 在PASCAL VOC2007上的结果...

如何选择适合的美颜SDK?
美摄美颜SDK是一款专门为企业提供美颜技术支持的SDK,可以帮助企业开发出具有高品质美颜效果的移动应用。本文将介绍美摄美颜SDK的技术特点和面向企业提供的技术支持。 一、技术特点 美摄美颜SDK采用了先进的图像处理技术和人工智能算法,能够快速准确地…...

Spring-底层架构核心概念
Spring底层核心组件 BeanDefinition BeanDefinition表示Bean定义,有很多属性用来描述Bean的特点: class,表示Bean类型 scope,表示Bean作用域,单例或原型等 lazyInit:表示Bean是否是懒加载 initMethod…...

RabbitMQ初入门
1、RabbitMQ是什么 RabbitMQ是“实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均…...

电脑定时关机
电脑定时关机 1.右键 管理 2. 3. 4. 5. shutdown.exe/s /f /t 06.点击完成就好了 7.这里面可以 看到定时任务和启动 右键有运行 结束 禁用...

【算法】滑动窗口题单——4.不定长滑动窗口(求子数组个数)
文章目录 前言2799. 统计完全子数组的数目解法1——枚举右端点,移动左端点解法2——枚举左端点,扩展右端点 713. 乘积小于 K 的子数组1358. 包含所有三种字符的子字符串数目2302. 统计得分小于 K 的子数组数目2537. 统计好子数组的数目2762. 不间断子数组…...

CMake aux_source_directory 学习
如下,prj是空文件夹; add.h; #include <iostream>using namespace std;int add1(int a, int b); num.h; int num1100; int num2301; add.cpp; #include "add.h"int add1(int i, int j) {return i j; } main.cpp&#x…...

Mybatis中延迟加载~
延迟加载: 等一会加载,在多表关联查询操作的时候可以使用到的一种方案,如果是单表操作就完全没有延迟加载的概念。 多表查询例如,查询用户和部门信息,如果我们仅仅只是需要用户的信息,而不需要用户对应的…...

【C语言】memmove()函数(拷贝重叠内存块函数详解)
🦄个人主页:修修修也 🎏所属专栏:C语言 ⚙️操作环境:Visual Studio 2022 目录 一.memmove()函数简介 1.函数功能 2.函数参数 1>.void * destination 2>.onst void * source 3>.size_t num 3.函数返回值 4.函数头文件 二.memmove()函数…...

04-流媒体-ffmpeg.c源码分析
ffmpeg.c是一个使用ffmpeg库的参考代码,实现了视频格式转换的功能,类似于我们常用的格式工产,源代码的的目录是: ffmpeg-4.2.2/fftools/ffmpeg.c 和前面的ffplay一样,我们分析其源代码,主要只是为了让读者了解ffmpeg.c此文件的大概流程,并且熟悉常用的ffmpeg库的API。 下…...

迭代器 Iterator
迭代器是一种设计模式,它用于遍历集合或容器中的元素,能够访问集合的元素而无需关心集合的内部结构: 特点: 封装集合访问:迭代器封装了对集合元素的访问,通过迭代器访问集合中的元素,而无需了…...

掌握CSS Flexbox,打造完美响应式布局,适配各种设备!
🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 ⭐ 专栏简介 📘 文章引言 基…...

FlutterUnit 周边 | 收录排序算法可视化
theme: cyanosis 1. FlutterUnit 更新:排序算法可视化 排序算法可视化是用视图层表现出算法执行过程中排序的过程,感谢 编程的平行世界 在 《十几种排序算法的可视化效果,快来看看!👀》》 一文中提供的算法支持。我进行…...