自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++基础 | 线程`std::thread`

是C++11中引入的一个类,用于表示和管理线程。通过,我们可以创建一个新的线程来执行指定的任务。线程是操作系统调度的基本单位,多个线程可以并发执行,从而提高程序的效率。要创建一个线程,只需实例化一个对象,并传入一个可调用对象(如函数、Lambda表达式或函数对象)作为参数。在这个示例中,我们创建了一个线程,它执行函数。方法用于等待线程执行完毕。我们也可以使用Lambda表达式来创建线程。带参数的线程函数线程函数可以接受参数,只需在创建线程时传递相应的参数即可。线程的管理与:等待线程执行完毕

2025-02-11 22:15:37 676

原创 C++基础 | Algorithm库

非修改序列操作:对序列进行遍历、查找、计数等操作,但不修改序列中的元素。修改序列操作:对序列中的元素进行复制、替换、删除、旋转等操作。排序和相关操作:对序列进行排序、合并、二分查找等操作。数值操作:对序列中的元素进行数值计算,如累加、内积等。我们可以通过传递自定义的比较函数来对序列进行自定义排序。// 降序排序// 输出:5 4 3 2 1return 0;

2025-02-09 16:20:21 334

原创 C++基础 | Type Traits

Type Traits是C++标准库中的一部分,定义在头文件中。它们提供了一种在编译时查询和操作类型信息的方式。Type Traits通常以模板类和模板变量的形式出现,用于检查类型的属性、转换类型或生成新的类型。

2025-02-09 14:55:45 200

原创 C++基础 | decltype

在C++11标准中,引入了decltype关键字,用于推导表达式的类型。decltype不仅可以帮助我们编写更通用的代码,还能在模板编程和类型推导中发挥重要作用。

2025-02-08 22:11:30 468

原创 C++基础 |常量表达式与`constexpr`关键字

在C++11标准中,引入了constexpr关键字,用于定义常量表达式。常量表达式是指在编译时就能计算出结果的表达式,它们可以用于数组大小、模板参数、枚举值等需要在编译时确定值的场景。本文将详细介绍常量表达式的概念、constexpr关键字的用法以及它们在实际编程中的应用。

2025-02-08 21:20:16 302

原创 C++基础 |右值引用、移动语义与完美转发

C++11 引入了右值引用、移动语义和完美转发等特性,这些特性极大地提升了 C++ 的性能和表达能力。本文将详细介绍这些概念,并探讨它们之间的联系。

2025-02-08 20:36:33 862

原创 C++基础 | Lambda表达式

Lambda表达式是C++11引入的一项重要特性,它简化了函数对象的定义和使用,使得代码更加简洁和灵活。通过理解Lambda表达式的语法、使用场景及其背后的原理,我们可以更好地利用这一特性编写高效的C++代码。希望本文能帮助你深入理解C++中的Lambda表达式,并在实际编程中灵活运用。如果你有任何问题或建议,欢迎在评论区留言讨论!

2025-02-07 19:03:06 683

原创 C++基础 | 函数绑定和封装

通用的函数封装器,适用于存储和调用任何可调用对象。std::bind:函数绑定工具,支持参数绑定和占位符,适合延迟调用和回调机制。:成员函数绑定工具,语法简洁,适合封装成员函数。

2025-02-04 17:06:55 376

原创 C++基础 | 函数指针

函数指针是指向函数的指针变量。与普通指针不同,函数指针存储的是函数的地址,而不是数据。通过函数指针,我们可以间接调用函数,甚至可以将函数作为参数传递给其他函数。

2025-02-02 16:24:45 488

原创 C++基础 | 类型转换

主要用于在继承体系中进行安全的向下转型(downcasting),即将基类指针或引用转换为派生类指针或引用。它会在运行时检查类型是否合法,如果转换不合法,则返回nullptr(对于指针)或抛出异常(对于引用)。是 C++ 中最常用的类型转换操作符,用于编译时的类型转换。它可以用于基本类型之间的转换、指针类型之间的转换(如将void*转换为其他指针类型),以及在继承体系中的向上转型(upcasting)。所有的隐式转换都可以使用静态转换来替代。// 隐式转换const_cast用于添加或移除变量的。

2025-02-01 23:57:12 983

原创 C++基础 | new 和 delete

全局变量在整个程序中可见,而静态变量仅在声明它们的文件或函数中可见。栈内存由编译器自动管理,分配和释放速度快,但空间有限。malloc函数如果分配成功,则返回指向被分配内存的指针,如果分配失败则返回空指针NULL。堆内存空间较大,但分配和释放速度较慢,且需要手动管理以避免内存泄漏。内也不用写数组中元素个数,保持空着,系统有办法知道这个数组大小,写了数字也会被系统忽略。成对使用,用于从堆空间中分配和释放内存。,否则回收的内存就是第一个数组元素空间而不是整个数组,,成对使用,用于从堆空间中分配和释放内存。

2025-01-23 19:32:16 300

原创 C++基础 | 引用

区别在于,通过const声明的变量不能修改其引用的临时量内存,右值引用的方式可以修改其引用的临时量内存。如图所示,我们定义了一个a变量,定义了一个指向a的p指针,又定义了一个a的引用b,定义指针p和引用b的汇编指令一模一样。但使用引用来指向数组,新定义的引用变量和原本的数组变量指向同一块内存,就是原名与别名的关系,都可以得到原数组的大小。如图所示,我们为变量a起了一个别名为b,a和b共用同一块内存,修改b的值,a的值也随之一起改变。指针本身是一个变量,存储的是一个地址值,指向另一个变量的内存位置;

2025-01-12 22:32:20 398

原创 C++基础 | const用法

const关键字指定变量的值是常量并通知编译器防止程序员对其进行修改。**const**修饰的变量不能够再作为左值!!!初始化完成后,值不能被修改!!!

2025-01-09 16:58:01 377

原创 C++基础 | inline内联函数

内联函数是C++为提高程序运行速度所做的一项改进。常规函数和内联函数的主要区别不在于编写方式而在于C++编译器如何将它们组合到程序中。内联函数使用inline关键字进行修饰,编译时C++编译器会在调用内联函数的地方展开,可以避免函数调用的额外开销,如保存和恢复现场、传递参数等。

2025-01-08 11:06:20 1077

原创 C++基础 | 形参带默认值的函数

/ 正确。// 声明处给默认值...// 正确。void fun2(int a = 5){ // 定义处给默认值...同一作用域下,不管是定义处给,还是声明处给,形参默认值只能出现一次。// 错误。定义处和声明处对同一参数都给了默认值。...不同作用域下,允许分别为形参提供不同的形参默认值。// func使用局部形参默认值形参默认值可以是初始化表达式,也可以是函数调用。

2025-01-07 15:10:58 247

原创 C++11新特性简单实现线程池

futuredecltypelambda表达式std::bindlambdaatmoicmove。

2024-12-12 14:31:58 1015

原创 C++ 实现定时器系统

并增加了一个回调函数。为了完成对定时器节点的排序,我们对定时器对比较运算符进行重载,用于比较两个定时器节点,首先比较到期时间,如果相同则比较id。是Linux下的一种高效的I/O事件通知机制,我们将其与定时器系统结合,以实现非阻塞的事件处理)和一个。:与系统时间相关的时钟,与墙上时钟(wall clock)时间一致,可以调整(向前或者向后)。:这种时钟的运行速度是稳定的,不会因为系统时间的调整而改变。库中,时钟是一个核心概念,用于测量时间。定时器节点是定时器系统的核心数据结构,包含了到期时间和回调函数。

2024-12-10 22:18:55 928

原创 Eigen快速入门

Eigen 快速入门

2023-06-12 01:44:16 1254

原创 C++动态链接库 & 隐式调用动态库 & 显示调用动态库

C++ 动态链接库 隐式调用 显式调用

2023-05-27 23:40:17 2755

原创 Java中的位运算符号详解(&、|、^、~、<<、>>、>>>)

详细讲解了Java中的位运算符号详解(&、|、^、~、、>>>)

2022-06-11 01:46:36 12794 1

原创 Java8 Stream流处理 详细使用讲解

一、stream概要与使用场景首先,Java8中的stream与InputStream和OutputStream是完全不同的概念,stream是用于对集合迭代器的增强,使之能够完成更高效的聚合操作(过滤、排序、统计分组)或大批量数据操作,使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。此外,stream与lambda表达式结合后编码效率大大提高,并且可读性更强。首先来看一个例子:创建一个学生列表,填入不同的数据进行模拟,实际的业务中肯定要比这

2022-01-14 00:38:08 4493

原创 JSR-303数据校验 以及 分组校验

一、关于JSRJSR是Java Specification Requests的缩写,意思是Java 规范提案。是指向JCP(Java Community Process)提出新增一个标准化技术规范的正式请求。任何人都可以提交JSR,以向Java平台增添新的API和服务。JSR已成为Java界的一个重要标准。二、关于 JSR-303JSR-303 用于对 Java Bean 中的字段的值进行验证;JSR-303 是JAVA EE 6 中的一项子规范,叫做Bean Validation;JSR-

2022-01-13 01:47:59 846

原创 网址为 http://localhost:xxxx/的网页可能暂时无法连接,或者它已永久性地移动到了新网址。

一、问题概述提示信息为:无法访问此网站网址为 http://localhost:6666/的网页可能暂时无法连接,或者它已永久性地移动到了新网址。ERR_UNSAFE_PORT本地服务已启动,使用Postman可以访问,使用浏览器无法访问。

2022-01-11 00:40:30 15134 1

原创 Ubuntu修改主机名、IP

修改主机名vi /etc/hostname修改IPvi /etc/netplan/50-cloud-init.yaml修改如下:network: ethernets: ens33: addresses: [192.168.159.135/24] dhcp4: false gateway4: 192.168.159.2 nameservers:

2021-03-27 15:16:01 269

转载 Java报错:“Error: Could not create the Java Virtual Machine.“

用java -v或java -V查看版本号报如下错:Error: Could not create the Java Virtual Machine.Error: A fatal exception has occurred. Program will exit.其实吧,问题不大。检查一下自己的jdk版本,jdk1.7版本是可以使用java -V或java -version检查版本的,但是在1.8版本之后,就只可以使用java -version查看版本号了。更多的指令可以使用java -h查看。

2021-02-17 18:54:34 5694

原创 Typora+Picgo+Gitee打造便捷图床

一、前言目前的一些博客平台,如优快云、简书等都已支持Markdown编辑模式,而使用Markdown语言编辑文档最大的问题就是图片链接问题。我们在本地文档中引用的是本地图片的绝对路径,直接将Markdown代码粘贴到网络平台肯定是不行的,需要将每一张图片单独上传至网络图床,并修改中图片的链接。如果图片的数量较多,一个一个修改这无疑是一件痛苦的事情。不久前Typora官网发布了v0.9.86版本,新增图片上传功能,可以将本地Markdown文档中的图片同步到网络图床中,很好的帮我们解决了问这个问题。

2021-02-16 19:20:57 336

原创 安装指定版本Kubernetes

概述本次安装采用 Ubuntu Server X64 18.04 LTS 版本安装 kubernetes 集群环境,集群节点为 1 主 2 从模式,此次对虚拟机会有些基本要求,如下:OS:Ubuntu Server X64 18.04 LTS(16.04 版本步骤相同,再之前则不同)CPU:最低要求,1 CPU 2 核内存:最低要求,2 GB磁盘:最低要求,20 GB节点配置主机名IP角色系统CPU/内存磁盘kubernetes-master192.168.1

2021-02-16 19:13:40 761

原创 在Ubuntu上安装Docker Engine

前提条件操作系统要求要安装Docker Engine,您需要以下Ubuntu版本之一的64位版本:Ubuntu Eoan 19.10Ubuntu Bionic 18.04(LTS)Ubuntu Xenial 16.04(LTS)Docker引擎都支持x86_64(或amd64)armhf,arm64,s390x (IBM Z),和ppc64le(IBM的Power)架构。卸载旧版本Docker的旧版本被称为docker,docker.io或docker-engine。如果已安装,请卸载它

2021-02-16 19:11:05 353

原创 魔改合成大西瓜,从源码到部署,步骤详细

现在有一款火爆全网的小游戏《合成大西瓜》,据官方数据显示,目前参与合成西瓜的游玩人次已经多达六千多万,可见广大网友已经不仅仅满足于在娱乐圈吃瓜了,现在更喜欢自己创造大西瓜,哈哈哈。前一段时间看朋友圈里有好多人晒合成西瓜的高分截图,于是我索性就百度了各种资料,拷贝了一份合成大西瓜的游戏源码,探索一下如何能让这个游戏变得更加有趣(以及通过“技术手段”获得更高的分数)。那就,开始吧!一、下载源码以及运行环境搭建项目源码github地址:https://github.com/ScottDemo/Synthe

2021-02-16 19:03:15 3642 5

原创 VMware安装Ubuntu-18.04.3 Server版本

准备工作1. VMware-workstation-15.0.4链接:https://pan.baidu.com/s/1s_t5uHzuPetfl4D89bb2Mw提取码:d07q2. ubuntu-18.04.3-live-server-amd64链接:https://pan.baidu.com/s/1ZNz9-GJ4EJRB1ehwa_OWEQ提取码:dbu7打开VMWare一、 创建虚拟机1. 创建新的虚拟机2. 选择自定义3. 选择Workstation 50.x,

2021-02-15 22:47:55 557

空空如也

空空如也

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

TA关注的人

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