自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

卖猪肉的痴汉

多练,多记!

  • 博客(80)
  • 收藏
  • 关注

原创 2.6 MSYS2 简单使用

MSYS2是一款Windows下的开发工具链,提供原生Windows应用编译环境与类Unix开发体验。集成了MinGW-w64工具链支持32/64位应用开发,包含Pacman包管理系统(3300+预编译包)和多个子系统(MSYS2、MINGW32/64、UCRT64、CLANG64)。安装后可通过更换国内镜像源加速,常用Pacman命令包括软件安装(-S)、系统升级(-Syu)、清理缓存(-Sc)等。需手动安装MinGW64工具链(mingw-w64-x86_64-toolchain)和基础开发工具(bas

2025-06-11 11:12:05 602

原创 4.2 C/C++开发环境:VSCode+CMake+MSYS2

本文介绍了如何在VSCode中使用PowerShell终端配置MSYS2环境并构建CMake项目。主要内容包括:1) 通过init_project.ps1初始化项目目录结构;2) 使用set_env.ps1脚本配置MSYS2环境变量,使其能在PowerShell中使用;3) 提供手动和自动两种编译方式(通过build.ps1脚本)。文中重点说明了MSYS2的路径配置、子系统选择和环境变量继承设置,并给出了CMake项目的基本配置示例。该方案适用于未设置环境变量的MSYS2解压安装情况。

2025-06-10 00:55:02 382

原创 4.1 C/C++开发环境:VSCode+CMake+VS2017

本文介绍了如何在VSCode中使用CMake插件配置VS编译器并构建C++项目。首先详细说明了软件安装步骤,包括VS、VSCode和CMake的下载与配置。然后通过示例项目演示了从创建项目文件到编译的全过程,重点讲解了CMakeLists.txt的编写和VS编译器的选择配置。最后提供了两种构建方式:直接使用预设配置或重新生成配置后进行构建。文中还解释了CMake关键参数的含义,为开发者提供了从环境搭建到项目构建的完整指导。

2025-06-09 17:47:24 861

原创 3.2 判断.lib和.a是静态库 还是动态库的导入库

摘要: 区分静态库(.lib)与动态库导入库可通过三种方法:1) lib.exe工具(VS自带):静态库输出.obj文件列表,导入库显示.dll文件名;2) 文件解压(如7-Zip):静态库含大量.obj文件,导入库仅含符号表或.dll引用;3) 环境观察:静态库文件较大且独立,导入库较小且需配套.dll。推荐优先使用lib.exe官方工具验证。

2025-06-09 16:47:03 228

原创 3.1 查看动态库或程序的依赖库

本文介绍了分析软件依赖库的原理和工具。Windows通过PE文件导入表记录DLL依赖,Linux则通过ELF文件的.dynamic段记录.so依赖。推荐Windows使用Dependencies工具可视化分析依赖树,或dumpbin快速列出依赖;Linux常用ldd查看运行时依赖,objdump安全解析ELF结构。文章还对比了进程级分析工具如Process Explorer和pmap。最后总结强调:Windows依赖问题宜使用Dependencies调试,Linux推荐ldd结合objdump验证,缺失库需

2025-06-09 15:33:41 860

原创 2.5 MinGW简单使用

MinGW是一个Windows平台的轻量级GNU开发工具集,允许使用GCC编译器构建原生Windows应用。主要组件包括GCC编译器、Binutils工具链、MinGW运行时库等,支持32/64位架构,提供POSIX/win32线程模型和不同异常处理机制。MSYS2则提供一个类Unix开发环境,集成MinGW-w64工具链和Unix工具,支持原生Windows应用开发。安装时需注意选择适合的架构、线程模型等参数。MinGW编译方式与Linux下gcc类似,可编译程序和库。MSYS2建议不加入环境变量以避免冲

2025-06-09 13:41:49 815

原创 2.4 vcpkg 使用

Vcpkg包管理工具使用指南 本文介绍了Vcpkg C/C++包管理工具的基本使用和进阶操作。主要内容包括: 安装配置:通过PowerShell安装Vcpkg,设置代理环境变量,编译生成vcpkg.exe 基本命令:搜索、安装、列出、导出和卸载库文件的操作方法 进阶使用: 安装指定类型的库文件(动态/静态库、Debug/Release版本) 导出版本库的多种格式(7z、zip、raw等) 通过vcpkg.json文件管理特定版本库的安装 该指南提供了详细的命令行示例和配置说明,适合开发人员快速上手Vcpkg

2025-06-07 17:20:37 936

原创 2.3 VS2019 简单使用

本文介绍了VS2019开发环境的使用指南,包括项目结构解析、常用快捷键、添加源文件和第三方库的方法。重点讲解了静态库和动态库的编译过程,涉及项目类型修改、导出函数配置等关键步骤。还提供了VS与CMake结合的实践指导,列出不同VS版本的CMake生成器名称和架构选项,并给出指定生成器的命令行示例。全文通过图文并茂的方式,为开发者提供了清晰的操作指引,涵盖从基础配置到高级编译的实用技巧。

2025-06-07 10:45:12 583

原创 2.2 MSVC 简单使用

MSVC工具链是VS2019的核心开发组件,包含编译器(cl.exe)、链接器(link.exe)、调试工具和包管理等功能。通过命令行可编译C程序,先由cl.exe生成.obj文件,再用link.exe链接为.exe或.dll。静态库通过lib.exe打包.obj文件,动态库则需指定导出函数或使用DEF文件。MSVC支持多种C运行时库选项(/MT静态、/MD动态),不同的库命名规范需注意区分静态库和动态库导入库。整个编译流程与Linux的gcc类似,但Windows使用COFF/PE文件格式和"/

2025-06-07 00:50:28 796

原创 2.1 Windows编译环境介绍

Windows平台四大编译工具对比:MSVC是原生Windows编译套件;Cygwin通过cygwin1.dll模拟POSIX层,适合移植Linux软件;MinGW提供GCC移植但不依赖POSIX层;MSYS2结合MinGW和Cygwin优势。它们都能生成Windows程序,但Cygwin支持更多Linux特性。注意不同工具间的ABI兼容性问题,避免混用编译器导致链接错误。其中MinGW和MSVC生成原生Windows程序,Cygwin依赖模拟层,MSYS2则兼具两者特点。

2025-06-06 21:03:59 343

原创 1.4 编译库:静态库、动态库

本文介绍了Linux下静态库和动态库的编译、封装与使用方法。主要内容包括:静态库的编译流程(将.o文件打包成.a文件)、封装静态库(解压后重新打包);动态库的编译(生成位置无关代码)、显式调用(避免符号冲突)、以及将静态库封装为动态库的方法。此外,还讲解了如何混合使用静态库和动态库(通过-Wl参数指定链接方式),并强调了避免同一库同时静态和动态链接以防止冲突。文章提供了详细的命令行操作示例和注意事项,适合Linux开发者参考学习库的管理与使用。

2025-06-06 20:52:53 803

原创 1.3 编译程序:单个C文件和多个C文件

本文介绍了C程序的编译过程,分为单个文件和多文件两种情况。在单个文件编译中,演示了从hello.c源文件到可执行文件的完整过程,包括编译阶段(生成目标文件.o)和链接阶段(生成可执行文件)。重点说明了gcc命令参数的含义和目标文件的特点。在多文件编译案例中,展示了如何处理包含多个相互调用模块的程序,强调编译器在编译阶段不需要知道依赖函数的具体实现,只需在链接阶段将所有对象文件合并成最终可执行程序。文章通过具体命令和示意图,清晰地呈现了C程序的编译链接流程。

2025-06-06 17:25:17 436

原创 1.2 编译基础知识

I<路径>:指定头文件搜索的目录,优先级高于系统默认路径-isystem <路径>:指定系统头文件路径,优先级低于 -I 但高于标准路径环境变量:某些编译器会参考环境变量CPATH或(C 程序)或(C++ 程序)来查找头文件。-L<路径>:在链接时指定库文件的路径,优先级高于系统默认路径环境变量:链接器会参考环境变量指定的路径。使用-l<库名>指定要链接的库,链接器会自动在搜索路径中查找lib<库名>.a或lib<库名>.so-lm表示链接libm.so或libm.a(数学库)。

2025-06-06 16:10:36 389

原创 Git 切换到旧提交,同时保证当前修改不丢失

在 Git 中,可以通过以下几种方式切换到之前的提交,同时保留当前的修改。

2025-06-06 13:22:28 430

原创 1.1 安装编译环境

(GNU C++ 编译器)内核/驱动开发(需头文件)(GNU C 编译器)(C 标准库头文件)

2025-05-05 23:23:36 280

原创 查看Ubuntu版本

或(清晰且完整)。• 其他命令提供辅助信息(如内核版本、主机名等)。• 对于 LTS 版本,输出中会标注LTS(长期支持版本)。

2025-05-05 23:03:06 337

原创 C++智能指针unique_ptr

unique_ptr是现代 C++ 中管理动态内存的利器,它通过独占所有权和自动释放机制,简化了资源管理,同时保持高效和安全。无论是实现工厂模式、管理容器中的对象,还是处理动态数组,unique_ptr都能胜任。掌握它的核心操作(如releaseresetswap)和注意事项(如std::move的使用),能让您在编写代码时更加得心应手。

2025-03-08 10:09:24 1235

原创 C++智能指针weak_ptr

weak_ptr是一种“弱引用”智能指针,它不会增加所管理对象的引用计数。它的主要作用是用来观察或访问由shared_ptr管理的资源,而不拥有该资源的所有权。由于不拥有所有权,weak_ptr指向的对象可能在某些情况下已经被销毁,因此在使用时需要特别小心。用途weak_ptr主要用于观察资源或打破shared_ptr的循环引用。关键方法lock()获取shared_ptrexpired()检查有效性。典型场景:对象间存在潜在循环引用(如链表、树结构)时。

2025-03-07 18:58:05 1272

原创 C++智能指针shared_ptr

shared_ptr是C++标准库(<memory>头文件)中的一种智能指针,用于管理动态分配的内存。它通过引用计数机制,跟踪有多少个shared_ptr实例共享同一块内存。当最后一个shared_ptr被销毁或重置时,引用计数变为0,内存自动释放。这种“共享所有权”的特性使其非常适合多人共用资源的场景。优先使用:效率高且异常安全。避免重复使用裸指针:通过复制创建新实例。处理this时使用:确保计数一致。防范循环引用:结合weak_ptr使用。shared_ptr。

2025-03-06 20:22:14 1159

原创 RAII编程手法

RAII的核心思想是将资源的获取与对象的构造绑定,将资源的释放与对象的析构绑定,从而确保资源在使用完毕后能够被正确释放,即使发生异常也能保证资源不被遗漏。以下是对RAII的详细介绍:RAII的核心理念是:资源的生命周期与对象的生命周期绑定。

2025-03-06 16:55:36 653

原创 Git 代码回滚

【代码】Git 代码回滚。

2024-10-27 18:15:50 1039 1

原创 Git的.gitignore文件

gitignore文件只是ignore没有被。的文件,已被追踪的文件,要先。

2024-10-27 16:30:33 381

原创 Notepad++窗口置顶

2021-04-03 10:53:49 2202

原创 Git分支管理

指定分支git clone -b 分支名 仓库地址例:比如拉取nacos 指定1.1.4git clone -b 1.1.4 https://github.com/alibaba/nacos.git

2021-04-03 10:44:31 352

原创 Git设置终端代理

设置代理git config --global http.proxy http://127.0.0.1:1087git config --global https.proxy https://127.0.0.1:1087取消代理git config --global --unset http.proxygit config --global --unset https.proxy

2021-04-03 10:41:08 599

转载 Notepad++找回缓存的内容

场景:在使用Notepad++的时候,有一个非常方便的自动保存功能,也就是你在新建一个文档后,输入你的内容,在你没有手动保存前,Notepad++会帮你保存当前内容。当你没有保存就退出Notepad++,下次进来Notepad++会自动把你上次编辑的内容显示出来,以便你继续编辑。除非你手动关掉当前页面,这样Notepad++就会删除掉自动保存的内容。(低版本的Notepad++可能没有这个功能...

2020-04-15 00:06:40 770 1

原创 导出MySQL表结构到Excel(含备注)

一、查询表结构SELECT COLUMN_NAME 列名, COLUMN_TYPE 数据类型, DATA_TYPE 字段类型, CHARACTER_MAXIMUM_LENGTH 长度, IS_NULLABLE 是否为空, COLUMN_DEFAULT 默认值, COLUMN_COMMENT 备注 FROM INFORMATION_SCHEMA.COLUMNS...

2020-04-11 21:28:09 2329 1

原创 Java通过时间戳判断是否过期

通过时间戳判断是否过期:时间戳戳是1971年1月1日到现在经过的秒数可以将时间戳转换为字符串保存中数据库中,再转换为long判断。long generateTime = Long.valueOf(new Date().getTime()/1000);long currentTime = Long.valueOf(new Date().getTime()/1000);boolean val...

2020-02-28 16:37:39 2969 1

转载 Windows中杀死占用某个端口的进程

原文链接:https://blog.csdn.net/violet_echo_0908/article/details/50129679 最近写项目,总是出现端口被占用的问题,原来傻傻的把电脑重启一下,终于有一天受不了了,想要想办法解决。刚开始从网上找了好多教程,发现不行。开始自己尝试,终于,成功的将占用端口的进程杀掉。在此记录下过程(以8080端口为例):第一步,打开cmd命令窗口,输入命令...

2019-12-15 11:37:57 818

原创 scp 命令的使用

scp 命令的使用scp传输文件消耗资源比较少,不会提高多少系统的负荷,在小文件比较多的情况下,使用rsync进行复制文件会导致硬盘I/O非常高,而使用scp则基本不影响系统的正常使用。命令格式:scp [-参数] [要传输的文件路径] [SSH链接信息:存放文件的路径]常用参数:-B 使用批处理模式(传输过程中不询问传输口令或短语)-C 允许压缩。(将 - C 标志传递给 s...

2019-08-14 16:59:44 450

原创 知网caj转PDF

解决方法第一种方法http://app.xunjiepdf.com/caj2pdf这个网站可以提供在线caj转pdf的功能,但是如果不用vip只能转2MB以下的文件。较为不方便,如果文档超过2M可以先将文档分章下载,再批量转换,转换之后可以使用金山的批量合并word小工具将这些文档合并。第二种方法在海外版知网上大部分文章都有pdf版本(来源于https://github.com/Jez...

2019-07-06 10:08:54 6046

转载 详述 IntelliJ IDEA 中自动生成 serialVersionUID 的方法

原文:详述 IntelliJ IDEA 中自动生成 serialVersionUID 的方法 当我们用 IntelliJ IDEA 编写类并实现 Serializable(序列化)接口的时候,可能会遇到这样一个问题,那就是:无法自动生成serialVersionUID.而s...

2019-07-03 17:11:06 168

转载 Java构造方法的相互调用

原文:https://blog.csdn.net/lin353809836/article/details/70237477/ 在Java中,当给一个类创建了多个构造方法时,有时想在一个构造方法中调用另一个构造方法以减少代码量。这时可以使用this关键字来实现。 通常,当使用this关键字时,它意味着“这个对象”或者“当前对象”,并且它自身产生对当前对象的引用。在一个构造方法中,当给传递给它...

2019-06-09 10:59:55 1534

原创 13.注解

一、概述  注解(Annotation)其实是代码里的特殊标记 ,这些标记可以在编译、类加载河运行时被读取,并执行响应的处理,在JavaSE中,注解的使用目的比较简单,例如标记过时的功能,忽略警告等,在JavaEE中注解占据了更重要的角色,例如用例配置应用程序的任何切面,代替XML的配置。二、JDK内置的基本注解(3个)@Override:限定重写父类方法,改注解只能用于方法@Depr...

2019-06-04 17:39:45 159

原创 12.枚举类

概述枚举类:一个类中的对象是有限的、可数多个的。如果枚举类的对象只有一个,可以看做单例模式实现方式枚举类主要知识点:如何定义枚举类?1.自定义枚举类...

2019-06-04 13:49:13 175

原创 11.Java异常

概述错误ErrorError是Java虚拟机无法解决的严重问题,如:JVM系统内部错误,资源耗尽等严重情况。比如:StackOverflowError和OOM(OutOfMemoryError)。一般不编写针对性的代码进行处理。例:异常1.异常分类编译时异常:编译时就不通过,报出来的异常。运行时异常(RuntimeException):编译通过,运行时不通过,报出来的异常。...

2019-06-04 08:33:05 145

原创 10.内部类

笔记链接:内部类

2019-06-04 00:25:23 144

原创 8.面向对象(下) :static、final、接口

笔记链接:面向对象下

2019-06-04 00:13:59 106

原创 7.包装类

1.包装类将基本数据类型封装成一个类,让其具有类的属性。2.包装类的基本构成(以Integer为例):private final int value; #定义最终的一个包装类对应的基本数据类型#构造器public Integer(int value) { this.value = value;#int类型直赋值}public Integer(String s) thro...

2019-06-03 23:54:43 144

原创 Eclipse设置UTF-8编码

我的机器默认编码是GBK,在本机上中文显示正常,但换到其他的机器就显示乱码,为了解决这个问题,统一使用UTF-8编码。修改workspace编码windows-&amp;gt;preferences-&amp;gt;gengral-&amp;gt;workspace在下面编码选择other-&amp;gt;UTF-8应用。修改Content Types编码windows-&amp;gt;preferences-&amp;gt;gen..

2019-06-03 23:32:48 39843 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除