- 博客(595)
- 资源 (51)
- 收藏
- 关注

原创 新手如何学好C语言?
作为一名资深码农,在软件行业也拼搏了十多年,这里跟想学习C语言的萌新童鞋分享下我的个人学习心得!!!在大学时代,我们大二才开始学习C语言(起步有点晚啊),第一次看到那本黄黄的谭浩强老师的《c语言教程》,哈哈哈,就是这本了,满满的回忆啊!开学拿到这本书后,心情很激动,因为以前总是羡慕那种黑客,好像很牛的样子, 抱着好奇的心理随便翻开了几页看了看,全程一脸懵逼, 因为以前从来没有接触过编程...
2020-04-27 13:59:47
2607
3

原创 一个普通的计算机专业专科生,毕业后想拿高薪,大学三年具体应该怎么做?
最近有一位大一的童鞋问我:黄老师, 我现在是一个普通院校的专科,学历含金量并不高,随大流选了一个计算机专业,很迷茫,不知道毕业后能干嘛,但我还是不想虚度大学三年,因为家境并不好,想通过自己努努力毕业能拿一份不错的薪水,能给点建议吗?其实也不是这一位同学向我咨询类似的问题,这几年其实蛮多的普通院校大学生都感到压力,因为没有名校背景,没有较高的学历,大学毕业后,只能进入普...
2020-04-24 16:45:34
4694

原创 全套C C++ 编程视频课程收录
【C语言】小白可以短时间很快入门的《从小白入门C语言视频课程》http://edu.csdn.net/course/detail/5895然后C语言中为核心知识点,附上指《C语言指针精讲视频课程》http://edu.csdn.net/course/detail/5896指针是重点《30分钟学会C语言指针视频课程》https://edu.csdn.net/cou...
2017-10-27 14:58:48
11297

原创 新手如何学好C++?
最近,很多学员都给我发邮件问我应该如何学习C++,如何学好C++?那么作为一个从C语言小白摸爬滚打、入坑无数到成长为如今的高级C++游戏开发工程师、高级C++服务端工程师、项目经理、技术总监、我想跟大家分享下我自己的学习心得与体会!Linus曾说过:“C++是一门很恐怖的语言,而比它更恐怖的是很多不合格的程序员在使用着它”,这个世界上最难的编程语言可能非C++莫属了,呵呵,虽然有点夸...
2017-10-10 09:32:28
21992
6
原创 Qt5 框架 CMake 探秘
首先在Qt5 的安装目录下,提供了 find_package()需要的脚本文件。这里主要就是循环查找每一个COMPONENTS组件,获取相关目标。然后我们注意看COMPONENTS ,也提供了相应的配置文件。功底深厚的朋友估计已经明白是怎么回事了。
2025-06-11 00:16:19
101
原创 CMake测试find_package()命令的相关原理
结果一目了然, 只要我提供XXXConfig.cmake文件 ,那么 XXX_FOUND就是1 ,表示找到了。find_package( COMPONENTS ) 在的脚本内 相关的参数都可以获取,我猜测可以再次 循环调用 find_package( )来查找COMPONENTS。AConfig.cmake (不提供AConfigVersion.cmake 版本文件)()命令,测试一下包和组件的原理!最近研究了 CMake的。
2025-06-11 00:04:53
269
原创 CMake 中 CTest 自动化测试
CTest发现并运行测试用例;输出测试结果;支持与 CDash 集成进行测试数据上报;支持并行执行测试;支持生成 XML 测试报告(JUnit 格式);支持设置超时、环境变量等高级选项。CTest 并不直接编写测试逻辑,而是通过调用可执行文件或脚本来运行测试任务。这些任务通常由add_test()命令定义在文件中。
2025-06-09 11:23:31
254
原创 CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 模块来实现自动下载、构建和链接第三方库。我们将以 fmt 这个流行的格式化库为例,演示如何:2. 编写 CMakeLists.txt3. 编写 main.cpp在 中编写如下代码:4. 构建项目进入 目录并运行:然后运行程序:输出应为:📦 其他常用第三方库示例你可以按照类似方式引入其他库:只需替换 中的 URL 和 TAG 即可。
2025-06-09 10:22:06
303
原创 QGraphicsView中鼠标点击与移动事件传递给MainWindow
在Qt图形应用程序开发中,和框架提供了强大的2D图形显示功能。然而,当我们需要在主窗口(MainWindow)中处理这些视图中的鼠标事件。
2025-06-08 00:42:31
136
原创 解决MySQL8.4报错ERROR 1524 (HY000): Plugin ‘mysql_native_password‘ is not loaded
使用如下的命令也报错问题分析:在MySQL 8.0版本中,默认的认证插件从变更为。这两个认证插件的主要区别在于它们提供的安全性和兼容性方面。
2025-06-07 19:32:25
187
原创 通俗解释Linux 动态库-fPIC的作用
你可以把“动态库”想象成一个工具箱,程序运行的时候需要用到它里面的工具(函数),但不是一开始就把它塞进程序里,而是等到需要的时候才去“借”。比如:你写了一个程序叫app,它要调用一个函数add(),这个函数放在一个叫libmath.so的动态库里。程序运行时才会去加载这个.so文件。是否使用-fPIC动态库是否灵活是否能共享是否影响性能不使用不灵活否有额外开销使用灵活是更高效。
2025-06-07 14:15:04
85
原创 Visual Studio 中的 MD、MTD、MDD、MT 选项详解
选项描述主要用途/MD动态链接到多线程运行时库生产环境,需考虑部署/MT静态链接到多线程运行时库独立部署,无需额外安装/MDd动态链接到调试版多线程运行时库开发调试,丰富调试信息/MTd静态链接到调试版多线程运行时库开发调试,避免外部依赖。
2025-06-06 23:41:16
410
1
原创 CMake 为 Debug 版本的库或可执行文件添加 d 后缀
如果你希望更灵活地控制输出文件名,比如根据编译配置动态改变输出名,可以使用条件判断。这种方式允许你分别为 Debug、Release 设置不同的输出名称。方法适用范围灵活性备注全局高推荐用于统一命名风格单个目标高更细粒度控制条件判断单个目标中适合简单修改宏/函数封装多目标高提高代码复用性可执行文件后缀设置EXECUTABLE高需要显式设置对于大多数项目,推荐使用第一种方法:设置。
2025-06-06 23:24:48
136
原创 使用 CMake 管理库版本号(VERSION 和 SOVERSION)
概念描述VERSION完整的版本号(主.次.补丁),用于标识具体构建版本SOVERSION主版本号,用于标识二进制兼容性,决定链接器行为推荐做法修改接口且不兼容时升级 SOVERSION,否则只升级 VERSION。
2025-06-06 15:23:48
334
原创 Linux 下生成动态库时 -fPIC的作用详解
fPIC-fPIC是构建 Linux 动态共享库的关键选项。它使生成的代码可以在任意内存地址加载并执行,避免了绝对地址引用的问题。在构建.so文件时,务必确保所有目标文件都使用-fPIC编译。推荐始终使用-fPIC而不是-fpic,以保证跨平台兼容性。忘记使用-fPIC可能导致链接失败或运行时错误。
2025-06-05 19:26:15
230
原创 使用 CMAKE_DEBUG_TARGET_PROPERTIES调试目标属性
在使用 CMake 构建项目时,有时我们需要深入了解某个目标(target)的编译选项、包含路径、链接库等。 是一个非常有用的调试工具。 是 CMake 中的一个内部变量,用于控制是否在配置阶段输出目标的详细属性信息。当你设置该变量为 时,CMake 在解析构建系统时会打印出更多关于目标(如可执行文件或库)的属性内容。你可以在你的 文件中启用该调试功能:一旦启用,CMake 将会在配置过程中输出类似以下信息(具体取决于你的项目结构):三、手动获取目标属性除了使用 ,我们还可以使用 函数来手
2025-06-05 16:38:47
196
原创 深入理解 shared_ptr 与 enable_shared_from_this
是一个模板类,用于协助派生类安全地生成指向自身的shared_ptr。这些函数返回一个指向当前对象的shared_ptr,前提是该对象已经被至少一个shared_ptr所管理。特性描述shared_ptr共享所有权的智能指针,自动管理对象生命周期协助类,提供方法优势安全地从对象内部获取shared_ptr,避免重复管理限制必须已被shared_ptr管理;不能在构造函数中调用应用场景异步回调、观察者模式、资源管理等。
2025-06-01 16:40:41
75
原创 OpenGL、GLUT、freeGLUT 与 GLFW 的区别
是一个跨平台的图形 API,用于执行 2D/3D 图形渲染。它是底层的绘图接口,不负责窗口管理或输入处理。OpenGL是图形渲染的核心,但不处理窗口或输入。是初学者友好的工具包,适合教学。GLFW更适合现代 OpenGL 开发,灵活性强。如果你刚开始学习图形编程,可以从 freeGLUT 上手,熟悉 OpenGL 的基本概念;当你准备深入时,再转向 GLFW 这样更灵活的库,逐步构建更复杂的图形应用。
2025-06-01 14:11:48
73
原创 使用 `\033` 方式设置终端字体颜色
ANSI 转义序列是一组特殊的字符序列,用于控制终端的显示属性,如颜色、光标位置等序列通常以\033[开始,后跟一个或多个参数,最后以m结束。
2025-05-30 22:44:54
536
原创 C语言中的指定初始化器
C99标准引入了一种更灵活、直观的初始化语法——指定初始化器(designated initializer), 可以在初始化列表中直接引用结构体或联合体成员名称的语法。通过这种方式,我们可以跳过某些不需要初始化的成员,并且可以以任意顺序对特定成员进行初始化。这对于维护和阅读代码特别有帮助,尤其是在处理复杂的结构体时。int x;int y;C++20中Designated initializers也是类似的指定的初始值设定项。
2025-05-15 17:22:55
159
原创 C++ Qt框架开发的程序添加自动更新功能
由于直接替换正在运行的程序文件本身是一个挑战(因为操作系统通常会锁定正在执行的文件),因此需要一些技巧来实现这一目标。多线程下载将一个大的文件分成多个小的块,每个块由一个线程负责下载。当所有线程都完成各自的下载任务后,再将这些小块文件合并成最终的文件。文件分割 :根据文件的大小,将其分割成多个分块(chunks),确定每个分块的起始和结束字节。下载并记录进度 :每个线程在下载时,需要记录当前已下载的字节数,以备后续的断点续传。文件合并 :所有分块下载完成后,需要将分块文件按照顺序合并成完整的文件。
2025-05-15 09:28:36
175
原创 Spring 中常见的属性注入方式(XML配置文件)
在 Spring 中,XML 配置属性注入。以下是几种常见的属性注入方式及其对应的简单示例代码。
2025-05-14 16:47:56
208
原创 Spring 中的 @Configuration @Bean注解
是 Spring 提供的一个注解,用于标记某个类为配置类。该类可以定义 Bean 的创建方式,并通过@Bean注解的方法来注册这些 Bean 到 Spring 容器中。特性说明注解名称所属包是否必须否,但在基于 Java 的配置中非常常见是否可被扫描是,但自身不是组件支持哪些功能Bean 定义、组件扫描、条件化配置、属性注入等是 Spring 框架中非常强大而灵活的注解之一,是现代 Spring 开发中推荐使用的配置方式。
2025-05-14 16:31:40
178
原创 Spring 中的 @ComponentScan注解详解
是 Spring 提供的一个用于启用组件扫描的注解。自动扫描指定包路径下的类。自动注册这些类为 Spring 容器中的 Bean。只有被特定注解标注的类才会被识别,例如@Component@Service等。@Component@Service@Autowired注解用途说明是否可被扫描@Component最基础的组件注解✅@Service用于服务层✅用于数据访问层✅用于控制器类✅标识配置类,常与搭配使用。
2025-05-14 16:19:33
129
原创 Qt5.14.2 链接 MySQL 8.4 遇到的问题
"Plugin caching_sha2_password could not be loaded: 找不到指定的模块。Library path is 'caching_sha2_password.dll' QMYSQL: Unable to connect"修改my.ini文件。
2025-05-12 23:50:33
406
原创 Qt解决自定义窗口样式不生效问题
方法三:重新实现QWidget的paintEvent函数时,使用QStylePainter绘制。将类继承QWidget 改成继承 QFrame。
2025-05-10 19:37:24
246
原创 Java、javax 和 Jakarta有什么区别?
2017 年,Oracle 将 Java EE 移交给 Eclipse 基金会管理,并将其更名为Jakarta EE。这是为了摆脱 Oracle 商标限制,并推动社区主导的企业级 Java 发展。因此,从开始,原本属于javax.*的包全部改名为jakarta.*。名称来源是否标准主要用途是否已过时java✅ 是Java SE 核心类库❌ 否javaxOracle✅ 是(曾是 Java EE 标准)Java 扩展类库,如 Servlet、Swing 等✅ 是(部分)jakarta。
2025-05-09 17:12:23
289
原创 Java 模板引擎 Thymeleaf JSP FreeMarker
模板引擎是一种用于将数据模型和视图分离的技术工具。将业务逻辑与页面展示解耦提高开发效率和可维护性支持多种输出格式(HTML、XML、JSON、文本等)引擎名称简介Thymeleaf现代化、支持自然模板,适合Spring项目JSPJava早期标准,内嵌Java代码,适用于传统Web应用FreeMarker高性能、灵活、独立于框架,适合复杂内容生成轻量级、跨平台、语法简洁VelocityApache项目,历史悠久,适合老系统迁移Pebble类似Twig的模板引擎,支持继承、过滤器等高级功能引擎名称。
2025-05-09 15:28:28
100
原创 Servlet、HttpServlet 和 DispatcherServlet 区别与关系
所属包作用:是所有 Servlet 的根接口,定义了 Servlet 生命周期的基本方法。特点与协议无关(可以用于任何协议,如 HTTP、FTP 等)。是一个底层接口,通常我们不会直接实现它,而是继承其子类(如所属包作用:专门用于处理 HTTP 协议的抽象类,是Servlet的扩展。特点只处理 HTTP 请求(GET、POST、PUT、DELETE 等)。提供了doGet()doPost()等方法,开发者只需重写这些方法即可。所属框架作用。
2025-05-09 15:23:41
553
原创 PyQt5 实现自定义滑块,效果还不错
最近,黄老师闲来无事,需要做一个 播放器的滑块,但是Qt官方的长这个样子,不太好看。功能可以点击,可以拖拽改变进度,和播放器的进度条一样。
2025-05-07 21:08:31
184
原创 Java中的Classpath 包含哪些目录?
Classpath是JVM用来搜索用户自定义类和包的路径列表。它由一系列目录、JAR文件或ZIP文件组成,这些位置存储了编译后的.class文件和需要的库文件。Classpath可以显式地通过命令行参数设置,也可以隐式地由IDE或构建工具自动管理。手动指定:除了上述默认目录外,你还可以通过命令行参数-cp或-classpath来指定额外的目录或JAR文件加入到classpath中。这对于快速测试或者执行特定任务非常有用。
2025-05-06 16:09:08
58
原创 JDBC 与 JdbcTemplate区别
在Java应用程序中,JDBC(Java Database Connectivity)是用于执行SQL语句的标准API。它允许Java程序与数据库进行交互。然而,直接使用JDBC可能会导致编写大量的样板代码,比如获取连接、创建语句对象、处理结果集以及关闭资源等。Spring框架提供的正是为了解决这些问题而设计的,简化了数据库操作。
2025-05-06 15:35:41
39
原创 AOP、IOC、DI 底层实现与代理技术详解
技术特点适用场景静态代理易于理解和实现,但冗余代码多小型项目或简单代理需求JDK 动态代理运行时动态生成代理类,只能代理接口需要代理接口的场景CGLIB 代理基于字节码操作,可代理类和接口需要代理具体类的场景IOC 容器解耦对象创建和使用,提高可测试性大中型项目,需要解耦的场景DI自动注入依赖对象,简化配置需要灵活管理依赖关系的场景AOP分离横切关注点,提高代码复用日志记录、事务管理、安全控制等。
2025-05-06 14:52:44
735
原创 Qt 的信号与槽机制依赖元对象系统(Meta-Object System)实现
在 Qt 中,信号和槽之间的连接主要通过 类及其相关的私有类进行管理。每个 实例都维护着一个指向其 的指针,该对象包含了有关类的所有元信息,包括信号、槽等。此外,还有一个关键的数据结构用于存储信号与槽之间的连接信息,即 结构体。 是 Qt 内部使用的一个结构体,用于表示单个信号到槽的连接。它通常包含以下字段:QMetaObject:包含类名、父类信息、属性列表、方法列表(包括信号和槽)、信号与槽的元信息等。它是 Qt 元对象系统的核心。QObjectPrivate: 类的私有部分,包含了一些对开发者
2025-04-30 11:29:27
125
openGL的实用工具包 GLUT库
2011-10-23
UGUI Super ScrollView 最新版2.3.2
2019-02-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人