自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(91)
  • 收藏
  • 关注

原创 预编译符与环境变量

设置预编译符号(DefineConstants)和使用环境变量(如 BUILD_ENV)都是配置和控制.NET应用行为的有效方法,但它们服务于不同的目的和场景。选择使用哪种方法取决于你的特定需求,包括你希望在什么阶段控制应用的行为,以及你的配置管理策略。

2024-05-21 08:59:28 378

原创 【C++】智能指针 std::shared_ptr 的创建方法

两种创建方法:第一种:std::make_shared 创建;第二种:new 方法创建。当使用 std::make_shared 创建一个 std::shared_ptr 时,C++ 的实现会在单个内存分配中同时为对象本身和与之相关的控制块(包括引用计数)分配内存。这种内存分配策略与直接使用 std::shared_ptr 的构造函数配合 new 操作符有显著的不同,后者通常涉及两个独立的内存分配:一个用于对象本身,另一个用于控制块。下面详细解释这两种方法的不同:使用 std::make_shared

2024-05-20 08:54:14 323

原创 【C++】const

在 C++ 中,const关键字用于定义常量值,这意味着一旦一个变量被声明为const,它的值就不能被改变。const的用途多样,它可以用来修饰变量、指针、类的成员函数等,以增强程序的安全性和可读性。const。

2024-05-20 08:20:02 339

原创 【C++】初始化列表

当创建一个类的实例时,类的构造函数会被调用来初始化该实例。构造函数可以通过其体(即大括号内的代码部分)或通过初始化列表来初始化成员变量。:使用初始化列表可以直接初始化成员变量,而不是先默认构造成员然后再赋值。:对于常量成员变量和引用成员,初始化列表是必需的,因为这些类型的成员一旦创建后就不能再被赋值。:如果一个类继承自基类,或者它包含其他类的对象作为成员,这些基类和成员对象只能通过初始化列表进行初始化。这种初始化方式确保了代码的效率和成员变量的正确设置,特别是在涉及复杂类型或类的资源管理时尤为重要。

2024-05-19 22:20:48 229

原创 【C++】智能指针 & 裸指针 & 悬挂指针

是创建的一个有效且安全的方法,它通过优化内存使用和增强异常安全性,为现代 C++ 应用提供了重要的工具。使用不仅可以简化代码,还可以提高程序的性能和可靠性。

2024-05-19 22:05:46 1037

原创 【C++】DLL 的加载方式

DLL 的使用提供了模块化和资源共享的强大能力,使得软件开发更加灵活和内存效率更高。通过隐式或显式链接,开发者可以选择最适合他们需求的加载方式,利用操作系统的能力来优化应用程序的性能和资源使用。同时,共享代码和资源的能力意味着应用程序可以在运行时共享和协调它们的行为,而不是冗余地加载相同的功能。隐式链接的优势在于简单和自动化,适用于依赖关系固定且稳定的场景。显式链接的优势在于灵活性和控制力,适用于需要运行时决策、减少初始化负担或处理可选功能的场景。

2024-05-15 09:06:07 617

原创 【C++】引用传递 & 常量引用

通过使用引用传递,你可以高效地传递对象,同时允许函数修改传入的参数。通过使用常量引用,你可以保护传入的参数不被修改,同时避免复制对象的成本,这对于处理大型对象或复杂类实例尤其重要。这两种方法在 API 设计和性能优化中都非常重要。

2024-05-11 11:38:37 369

原创 【C++】内联函数

下面是一个简单的示例,演示了如何在 C++ 中使用内联获取器和设置器。这种方式确保了数据的封装性和安全性,同时通过内联函数提供了快速的访问和更新能力。这在实现数据访问时既保持了效率,也保持了类的设计的整洁性和可维护性。通过这个例子,你可以看到内联函数如何减少运行时的开销,以及何时适合使用内联函数。内联函数的主要目的是减少函数调用的开销,特别是在函数体较小且频繁调用的情况下。在这种情况下,如果编译器决定内联这个函数,它将直接将 add(5, 3) 替换为 5 + 3,从而消除了函数调用的额外开销。

2024-05-11 11:03:11 355

原创 【C++】使用 virtual 和 = 0 来实现多态和抽象行为

这个语法实质上是在告诉编译器和其他开发者,任何派生自该类的类都必须实现这个函数,否则它们也会成为抽象类,不能实例化对象。当基类声明一个函数为虚函数时,C++ 运行时使用一种称为虚函数表(vtable)的机制来动态决定应调用哪个类的函数。这使得程序在运行时能够根据对象的实际类型来选择正确的函数版本,而不是编译时绑定的类型。的目的是允许通过基类指针或引用调用派生类的函数,这是多态的基础——即同一个函数调用可以表现出多种不同的行为。的函数将无法编译,迫使开发者检查并更新派生类以匹配新的基类接口。

2024-05-10 14:48:29 408

原创 【C++】防止头文件被重复包含

一旦头文件被包含,编译器会记住这个头文件,确保不会再次包含它,即使在复杂的包含和项目结构中也能有效工作。有时在非常大和复杂的项目中,开发者需要清楚哪些宏已经被定义过,以避免宏名称冲突。没有被定义过,这条指令就会定义它。这样做的目的是在文件的其余部分之前标记这个文件已经被包含,防止将来的重复包含。这样的头文件保护结构可以防止因头文件重复包含而导致的定义冲突或编译错误,是C++项目中常用的一个编程规范。因其简洁性和避免宏命名冲突的优点而越来越受到青睐,但在跨多个编译器或需要确保最大兼容性的环境中,传统的。

2024-05-09 13:52:16 280

原创 Cmake中 makefiles 的作用

Makefiles 定义了如何编译和链接程序,包括编译指令、源文件、目标文件、依赖关系和最终的可执行文件。Makefiles 是由 make 工具使用的,make 是一个构建自动化工具,用来控制和自动化编译过程。当你在命令行中输入 make 并按回车时,make 程序会查找名为 “Makefile” 的文件,并尝试执行它定义的第一个目标(在这个例子中是 program)。make 会检查所有的依赖项(如 .o 文件和 .cpp 文件),只重新编译那些自上次编译后已经被修改的文件,这样可以节省时间。

2024-05-08 17:53:44 449

原创 【Unix】FlatBuffers 在 C++ 项目中的使用教程

FlatBuffers

2024-05-08 16:31:24 995

原创 FlatBuffers 与 ProtocolBuffers 的区别

FlatBuffers 和 Protocol Buffers(通常简称 Protobuf)都是由 Google 开发的序列化协议,用于在不同的程序或网络间有效地传输和存储结构化数据。尽管它们的目标相似,但在设计和使用上有一些关键的区别。总的来说,选择哪种技术取决于具体的应用场景、性能需求以及开发团队的熟悉度。

2024-05-08 16:12:10 466

原创 WSL 与操作系统的关系

WSL

2024-05-07 16:46:19 720

原创 .NET 中解决方案(Solution)、项目(Project)、程序集(Assembly)傻傻分不清楚

一个解决方案文件(通常以.sln为扩展名)是用来组织和管理一个或多个相关项目的容器。解决方案可以包含多个项目,例如库、控制台应用程序、Web服务等,这些项目可以相互依赖。项目(通常在解决方案中定义)是构建一个特定软件组件(如库或应用程序)的配置和文件的集合。简单来说,一个解决方案可以包含多个项目,每个项目编译后生成一个或多个程序集。所以,虽然解决方案和项目组织了开发过程,程序集则是实际部署和执行的单位。一个项目在编译后生成一个或多个程序集。这些程序集包含编译后的代码、资源和关于如何执行代码的元数据。

2024-04-15 08:33:42 253

原创 Vue 与 React 的区别

与Vue类似,React本身只关注于视图层,但可以通过集成其他库来处理应用中的路由、状态管理等更复杂的需求。之所以称为"渐进式",是因为Vue的核心只关注视图层,但它也允许通过引入各种官方或第三方库来实现更为复杂的应用功能,如状态管理、路由等。它易于上手,也适合构建复杂的单页应用(SPA)。Vue和React都可以被看作是既有库的特性(提供丰富的功能和灵活性),也有框架的特性(有助于规范应用结构)。总的来说,Vue和React都是现代前端开发中非常流行的工具,广泛用于构建高效、动态的Web应用程序。

2024-03-26 22:44:33 594 2

原创 【Vue】实现的底层原理

在Vue的响应式系统中,数据对象的属性与其依赖之间的关系是通过依赖收集和派发更新机制建立的。通过这种机制,Vue实现了数据属性与依赖之间的自动同步,确保了当数据变化时,依赖于这些数据的界面能够自动更新。当组件在渲染过程中首次读取数据对象的属性时(通过getter),Vue会将当前组件(或更准确地说,当前组件的渲染函数)记为该属性的依赖。通过这种响应式系统和虚拟DOM技术,Vue能够实现数据与UI之间的自动同步,使得开发者能够更专注于数据本身和业务逻辑,而无需手动操作DOM或手动同步数据与UI。

2024-03-26 22:41:27 653

原创 【C++】堆创建对象和栈创建对象的区别

当在栈上创建对象时,对象的生命周期由其作用域决定。对象在其所在的代码块(通常是函数或控制结构)中创建,当代码块执行结束时,对象会自动销毁。这意味着栈上创建的对象的生命周期是自动管理的,您不需要手动释放内存。总之,栈上创建的对象的生命周期受其作用域限制,当作用域结束时,对象会自动销毁。而堆上创建的对象的生命周期不受作用域限制,需要手动管理内存。在选择创建对象的方式时,请根据您的需求和编程风格进行选择。这意味着您需要自己管理堆上创建的对象的生命周期。当在堆上创建对象时,对象的生命周期不受其作用域的限制。

2024-03-26 10:42:32 192

原创 Git扫盲

Git是一种分布式版本控制系统,说到分布式那么肯定有集中式,下来就说明一下他们之间的区别。

2023-08-06 17:01:08 200

原创 密码无误的情况下pgAdmin无法连接数据库解决办法

步骤:打开任务管理器,点击菜单栏中的服务,查看postgreSql服务是否启动。如果没有启动,右键点击postgreSql服务,选择打开服务,进入服务窗口,右键点击postgreSql服务,点击启动。如果已经启动,那就将其服务停止,重复上述没有启动时的操作。接下来重启pgAdmin,输入密码即可

2023-05-10 10:51:27 638 1

原创 C++正则表达式转义字符的用法

执行结果:

2023-02-13 12:54:21 349

原创 Azure DevOps服务之Wiki---绘图总结

绘图方法总结

2022-09-16 17:44:54 805

原创 在anaconda中升级numpy的详细过程(pip版本过低无法升级)

升级numpy打开Anaconda Prompt输入命令:pip install --upgrade numpy报错:明显是pip版本过低!先升级pip输入命令:python -m pip install --upgrade pip还是报错:更改命令:easy_install -U pip更新成功!!!再次更新numpy即可!!!...

2022-05-06 17:30:20 7503

原创 锁机制--------Synchronized

2022-05-06 17:29:07 119

原创 Inkscape裁剪图片(pdf,svg,png,jpg)

使用 Inkscape 打开需要编辑的图片文件;创建矩形为需要裁剪的大小;按住shift键,首先选中矩形,再选中目标图片;右键“设置裁剪”即可。点击"文件 - >文档属性 - >缩放页面到内容 - >缩放页面到内容或选区"另存为任何你想存的矢量图...

2022-03-29 16:29:19 9093 1

原创 有未经处理的异常: 0xC00000FD: Stack overflow

项目堆内存分配不够用的原因:打开“项目”—>“XXX属性”—>“链接器”—>“系统”—>“对保留大小”—>“编辑”填上一个比较大的数字就可以了,我设的是160000000

2022-03-27 22:28:33 2563

原创 2022-02-03 线程生命周期

概念生命周期可以通俗地理解为“从摇篮到坟墓”(Cradle-to-Grave)的整个过程。线程的生命周期包括从创建到终结的整个过程。我们在Thread类中发现了一个内部枚举类,这个State就可以表示一个线程的生命周期:public enum State {/**状态 描述【NEW】 这个状态主要是线程未被Thread.start()调用前的【RUNNABLE】 线程正在JVM中被执行,等待来自操作系统(如处【BLOCKED】 阻塞,因为某些原因不能立即执行需要挂起等待【WAITING】无

2022-02-03 18:53:28 302

原创 2022-02-03 守护线程

概念介绍Java提供两种类型的线程:用户线程 和守护程序线程 。守护线程旨在为用户线程提供服务,并且仅在用户线程运行时才需要。守护线程只在用户线程存在的期间运行,用户线程消失守护线程也就消失了!实例如下:运行结果:...

2022-02-03 18:09:41 293

原创 2022-1-29 线程调用详细过程

创建Thread类之后调用本来的run方法还是重写了的run方法如下图:

2022-01-29 21:59:02 356

原创 2022-1-27 c++中出现-nan(ind)的原因和辨别办法

nan: not a number 非数字1. 出现原因:(1)分母为“0”,如果分母为零,自然时不能得到一个确定的数字的。(2)对负数开平方、对负数求对数(log(-1.0))。注:0/0会产生操作异常;0.0/0.0不会产生操作异常,而是会得到nan。(3)有些编译器在对无穷大与无穷小的计算时也会出现此类情况。2. 辨别办法:isnan(): ture is nan, false otherwise...

2022-01-27 17:27:32 10114

原创 信息熵和互信息

信息熵为什么会有信息熵这个概念?因为当在一堆很有规律的数据中怎么预测未来可能出现的数据的信息呢?(注意是预测)就出现信息熵了,用它来预测未来数据的确定性的大小(也可以说用它来测量一个随机变量包含的信息的多少)比如下例:但是,当数据越混乱,数据的信息熵就越大,也就是第九条数据能被确定的概率越小,就说明次数据的信息熵越大,反之亦然。也就是数据的信息熵跟它的确定性成反比。规律计算方法如下例:互信息互信息(mutual information,MI)度量了两个变量之间互相依赖的程度。通

2021-12-27 10:42:21 741

原创 字节跳动面试(一面)(测试开发工程师)

1、自我介绍2、你做的东西具体怎么落地!3、为甚面试侧开?4、c++、Java、python语言各自的特点5、指针和引用有什么区别(这是面试小姐姐引导的答出来的)6、url输入网址到显示发生了什么7、域名解析的过程,用到的协议8、TCP、UDP的区别,在哪一层9、你了解noMysql吗?10、如果要测试一个视频播放,你会注意哪些问题?11、代码:给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。(多刷算法

2021-12-19 12:52:12 1543

原创 解决pandas中未解析引用Unresolved reference问题

问题如下:首先你要保证你的文件是存在的,并且文件中的函数是正确的!那么通过以下设置就可解决问题:完事!!!!

2021-12-14 22:10:52 5273

原创 python和anaconda的区别、为什么要用anaconda,怎么使用anaconda?

python和anaconda的区别:其实anaconda是包含python的。所以安装了anaconda就不用安装python了。要想跑python程序,要有解释器和编译器。解释器就是python2或python3.含有python.exe。就是将你编写的python语言编译成机器所认识的机器代码。编译器就是你写代码的环境,比如pycharm或者vscode。由于python3不兼容python2,也就是说python2语言写出来的代码没办法在python3的环境中运行。那在装了python3

2021-12-11 17:48:16 49246 6

原创 vscode中搭建Java环境

请访问此知乎vscode中搭建Java环境

2021-12-11 11:11:09 826

原创 当更新anaconda时遇到CondaHTTPError: HTTP 000 CONNECTION FAILED for url错误怎么解决

这是因为访问服务器打不开的原因,要更改一下配置文件。配置文件在哪呢?就是.condarc(找不到吗?)window系统下一般在C:\Users\用户文件下,打开后将以下配置改进去:如图:channels: - defaultsshow_channel_urls: truedefault_channels: - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main - http://mirrors.tuna.tsinghua.

2021-12-11 11:05:07 1840 1

原创 解决anaconda navigator打不开的问题

步骤:(1)用管理员身份打开anaconda prompt(2)更新navigator:输入命令conda update anaconda-navigator(忘了截图了,输入此命令就行,如果出现问题,我也暂时解决不了,我还没出现问题)(3)重置navigator:输入命令anaconda-navigator --reset(4)升级客户端:输入命令:conda update anaconda-client(5)升级安装依赖包,输入命令:conda update -f anaconda-

2021-12-09 21:51:56 12917 5

原创 2021-11-14 进程和线程(上下文切换)创建线程的方法

进程和线程一、进程一个正在执行中的程序就是一个进程,系统会为这个进程发配独立的【内存资源】。进程是程序的一次执行过程,它有自己独立的生命周期,它会在启动程序时产生,运行程序时存在,关闭程序时消亡。比如正在运行的QQ、IDEA、浏览器就是进程。其实,谈及计算机时,永远不能简单的避开计算机的发展史。最原始的计算机就是单进程的,同一时间只能执行一个进程,我们可以把现在的【计算器】当做最原始的计算机,同一时间只能执行一段代码。比如我们要计算一个账本的总账,只能一个数字一个数字的相加,而且,在这其中你还不能

2021-12-09 21:49:19 377

原创 python的安装,与anaconda的区别,怎么安装sklearn

配置环境变量:

2021-12-09 09:40:12 526

原创 视频流量分析特征选择的流程

清楚一下两个端进行信息传输是以流的方式传输的(多个包组成了流)那么一个信道上可能来自不同的传的包,那么怎么才能分辨出一个特定的两个端点之间的流呢?如下图所示:视频特征整体框架图:(得到这些流量的特征你就可以进行特征选择了)...

2021-11-28 11:52:47 1501

空空如也

空空如也

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

TA关注的人

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