自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JS和Java中的JSON

的储存和交换文本信息的语法,用于各种配置文件,以及网络(主要是网络)上的文本信息交换。是一个可选的用于转换结果的函数,JSON中的每一个成员都将作为参数调用这个函数。都是可选的,前者是用于转换结果的函数或数组,后者为文本添加缩进,空格和换行符。实际上你甚至可以拼接字符串来硬写,就是可能会比较不优雅且低效。的解析工具,就算没有,手动实现一个简单的。你可以在上面的链接中找到最新版本。),你需要使用第三方库,比如。对象,这时候可以考虑使用。的值,通常为对象或数组。是必须的,是一个有效的。解析器也是不太难的。

2023-09-09 14:05:11 171

原创 IDEA中的Maven工程

能够自动完成包括但不限于下载并配置第三方包以及编译和打包项目的任务。默认的不设置此项的情况下,的”生命周期“以及”插件“。,但是由于未指定主类,并不能运行。甚至能自动化完成编译,测试,再到部署的整个过程。描述一个项目的基本信息以及依赖项,同时也包括了对。这一段应该是自动生成的,主要是指定项目所使用的。的”新建项目“对话框中,可以选择构建系统为。本身的编译,运行以及调试都能正常运作。将会尝试自动下载并配置项目的各个依赖项。只会打包你的代码,并不会包含依赖。同时还支持插件,在插件的帮助下,

2023-09-07 17:08:25 249

原创 从Dockerfile创建镜像

第一个 Docker 镜像来自于 Docker 官方提供的基础镜像,称为 “scratch”。在 Dockerfile 中使用 “scratch” 作为基础镜像,意味着你将从一个空白的镜像开始构建,然后逐步添加你所需的文件和配置。Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。有两种方式,一种是很简单的手动修改。可以看出实际上就是指令的堆砌。从上文可以看出,要构建一个。只能从已有的镜像上构建。镜像通常就得通过编写。

2023-09-07 15:58:39 134

原创 Docker Compose的基本使用

在大多数实际项目中,我们往往需要多个(许多个)容器同时运行并且相互交互。于是我们需要一种工具能够便捷的部署和管理所有容器。对于某些强依赖启动顺序的情景,你可以通过为服务设置。命令启动你的所有容器。最后,volume的储存位置是可以更改的,可以尝试修改。你可能已经注意到了,可以给一个容器应用多个网络。如果你实在找不到,可以尝试从。需要注意的是,在这之后你可能需要手动迁移数据。通常是分离的,你可能需要单独安装它们。另外,本文默认你没有配置。进行配置,同时可以使用。即可启动整个应用程序。定义应用程序的环境。

2023-09-07 15:45:11 108

原创 VSCode Remote-SSH公钥登录

默认情况下,每次使用vscode的remote-ssh插件登录到远程服务器都需要重新输入密钥(甚至是切换路径时)。显然这太麻烦了。不同于传统密码,SSH使用基于RSA算法的密钥对作为凭证来实现自动登录。和传统密码相比该方案显著提高了安全性。SSH的安全真的很重要!RSA密钥对分为公钥私钥。本地机保留自己的的私钥,然后将自己的公钥复制给远程机即可。

2023-09-07 15:17:41 971

原创 Rust生成随机数

Rust标准库中并没有随机数生成器,想要实现此类功能,你需要自行设计(纯Rust或FFI到C),或者使用第三方包。一个常见的解决方案是使用rand包,该项目基于。

2023-05-14 18:01:15 945

原创 使用模板递归的检查类型是否相同

这段代码使用了C++20的Concepts特性,结合constexpr以及type_traits在编译期递归地检查所给类型中是否有重复,即检测任意个类型中是否有相同。这段代码中的Concepts部分是我和一位朋友,以及chatGPT所共同讨论出的结果,虽然我们似乎都不太明白递归部分是怎么工作的。似乎在做一些根据参数类型进行的跳转时还是有一定用处的,虽然牺牲了二进制大小以及编译时间,仅仅换来了一点微小的性能提升。

2023-03-26 23:20:06 87

原创 使用std::variant在编译期根据参数类型确定返回值类型

由于lambda获取的参数value的类型无法直接确定(可能带有引用,数组,const等等),我们使用std::decay_t获取其底层类型(underlying type),即移除其可能存在的引用,数组,const等修饰,获得其底层的类型。这个函数完全是依靠std::variant和lambda实现的,前者类似于Union,以不同的类型解析自身内存,其大小由支持的类型中的最大者决定,后者则简化了代码,将std::variant直接交由std::visit,以访问其中的值。

2023-03-26 22:58:46 230

原创 Windows11/10家庭版强制开启Hyper-V及其恢复

网上找得到启用Hyper-V的文章,却少有人给出恢复的方法,所以写了这篇文章。

2023-02-14 10:05:17 1037

原创 C语言按位读写二进制

C语言中可以使用union完成二进制的划分,但这种方法最多只能精确到1Byte,而非1bit。在许多场景下,直接对二进制进行位精度的操作效率要远远高于其他算法,本文主要介绍了C语言中简单实现按位读写二进制的方法及其原理。

2022-11-16 22:23:49 1624

原创 使用STM32CubeMX + Visual Studio Code + OpenOCD + PlatformIO搭建一个现代化且跨平台的STM32开发环境

其实这套工具链(除开STM32CubeMX)不仅STM32能用,还能给8051,ESP32,Arduino等芯片使用,只要你所使用的烧录工具以及芯片本身被PlatformIO支持。在本文介绍的这套工具链中,Visual Studio Code为文本编辑器,gcc-arm-none-eabi为编译器,STM32CubeMX用于创建基础代码,而PlatformIO则将上述内容组合到一起,形成了一个强大的IDE。

2022-11-07 23:20:39 4138 2

原创 快速入门正则表达式

本文简单介绍了PCRE2正则表达式语法,然后简单介绍并提供了在Python与C++标准库中正则表达式的使用例。正则表达式(Regular Expression,可简写为regex或re),正则表达式一般使用单个字符串来描述、匹配一系列符合某个语法规则的字符串,通常被用来检索、替换那些符合某个模式(规则)的文本。正则表达式通常用于从某一文本中提取特定的字符串,或者检验字符串的格式等。需要注意的是,由于其实现原理,即便进行了预编译,正则表达式通常仍是缓慢的。

2022-11-03 00:26:08 608

原创 基于C++实现的用于OpenAL的 .wav音频加载器

近日学习OpenAL,想从最简单的.wav格式入手,但苦于找不到合适的解析库,最终写下此文。另,该库已开源。

2022-10-28 11:36:07 1603

原创 const type 和 const type* const

你可能在C++中见过关于const简单地说,前者可以读作:常量int的指针 A而后者可以读作:常量int的常量指针 Bconst int*可以“重定向”,而不行。具体请看下文。

2022-10-20 19:53:32 390

原创 C语言位运算的常见应用

使该64bit数据的每一位都表示一个标签的真假,一共可以表示64个不同的标签,再用按位或操作即可将多个标签混合到一个值,具体如下表所示。术业有专攻,这种专门乘2的算法理应是要比传统的万用乘法运算符要快的,我们可以通过一个简单的C程序验证这个猜测。可以看出C++标准库的做法是将每一个“标签“用一个64bit(即8byte)整数。不难看出,亦不难证出一个二进制数按位左移1位即能使其乘以2。确实有所提升,事实上,大多数编译器启用代码优化后都会尝试将。同样的,大多编译器也会在开启代码优化时尝试将。

2022-10-19 23:25:58 381

原创 计数排序算法

拿空间换时间的典型算法。以新构建的数组的下标标识原数组的某个数,以新构建的数组中该下标所对应的值记录原数组中该值出现的次数,然后构建新的数组以实现排序。该算法未进行任何数值比较,相比冒泡等基于比较的算法有明显优势。该算法不稳定,若要实现稳定性,需要格外编写代码。该算法使用格外空间以换取更少的时间消耗。

2022-10-11 18:55:29 144

原创 选择排序算法

选择排序是不稳定的,这一点主要体现在无法区分相同值的前后顺序,例如有一序列:{5,8,5,2,9},选择排序无法保证两个5在排序后依然按照之前的顺序排列。这是选择排序的一种优化方案,使用了格外的内存,节约了部分的交换耗时。这是传统的选择排序,不使用格外内存,就地交换值进行排序。多次遍历,依次选出每次的最大/小项进行排列。,但交换次数比冒泡排序少,所以效率更高。选择排序的时间复杂度和冒泡排序一样为。先说结论:比冒泡快,不稳定。

2022-10-08 00:00:00 343

原创 猴子排序算法

该定理内容大致为:给一只猴子一台打印机,虽然这只猴子根本不识字,但会乱按,经过一段时间后,在它乱按出来的单词里总能找到一些至少看起来是有意义的部分,比如一两个简短的单词,由此可以推出:只要给它足够长的时间,猴子甚至能完整地写出一本莎士比亚全集。千百年来,衔尾蛇被赋予了数不清的意义,其中就包括较易理解的“循环”,“无限”,以及偏向神学概念的“生死循环”与“轮回”,还有现代科学意义上的“熵增”,甚至惊天动地的“宇宙真理”。猴子算法的意义更多的是理论上的而非应用上,它打破了排序算法时间复杂度的极限,在。

2022-10-05 17:05:48 3577 2

原创 快慢指针算法解环形链表问题

又叫Floyd判圈法(弗洛伊德判圈法),简单地说就是在表的头部放置两个前进速度不同的指针,使他们同时出发,如果该表不是线性表,则前进速度快的指针会率先进入”循环圈“,慢指针紧随其后,使快指针追击慢指针。由于有速度差异,只要该”循环圈“存在,快指针在”循环圈“内运行若干周期后,总会追上慢指针,所以只要指针和慢指针相遇,我们就能认定该链表是环形链表。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。可以说是惨不忍睹了,虽知哈希表以空间换时间,但全盘皆输,着实令人大跌眼镜。

2022-09-28 18:38:16 187

原创 记忆化递归和动态规划

记录爬梯问题的记忆化递归解法

2022-09-24 22:11:59 268

原创 哈希算法和哈希表

这篇文章将会简单介绍几种常见的哈希算法,然后是C++或Java的标准库中哈希函数与哈希表的基本使用,最后将会提供一个使用C语言手搓FNV-1a算法的示例,以及使用它实现的哈希表。这篇文章虽然内容不多,但前前后后,也是删删改改了好多天了,虽然内容还是不尽人意,但希望此文能为你提供一点帮助,不说理解哈希,至少能够使用吧。不知道某位大佬会不会来看这篇文章,关于哈希表的部分我不是很拿得准,如果理解有误,请帮我指出。

2022-09-16 23:55:03 2073

原创 如何看懂时间复杂度的big-O表达式

正如前例,big-O表达式使用一个简单的式子来从大体上形容一种耗时的概念,通过big-O表达式,我们能一眼看出操作大体上的时间复杂度,即耗时与数据量的大体关系。(假设捡起两个P点的操作之间没有间隔,k为捡起一个P点的用时),那么就有 t = kx,由此我们可以说:这个操作的时间复杂度可以表示为 O(n),其中的O是一个函数,定义为T[n] = O(f(n)),它不仅可以表示时间的复杂度,还能表示空间的复杂度。拿第一个例子来说,像这样的,以捡起所有P点为例,这个操作所需要耗费的时间。P,请你挨个拾取它们。

2022-09-08 00:10:08 841

原创 C++中的重载运算符

学习编程之初我们就接触过一些运算符,比如这样int * a;* a = 1;}这里的 * ,+ ,== ,[ ],都是运算符,你可曾想过,在C++中,我们可以使用一个函数来重载他们?你可能听不懂我在说什么,也搞不懂重载他们有什么用,我给你看一段代码// C++ // 我最近写的一个加载.png文件的类,就叫Image // 我截取了工程中的部分代码,这是没有重载运算符时,它的使用操作 Image img("a.png");这是重载[]运算符后的效果。...

2022-08-31 18:39:23 880

原创 C语言中pthread或Windows API在多线程编程中的基本应用

现代操作系统通常以进程(process)作为CPU资源调度的最小单位,其实际上是线程的容器,而线程则是程序指令以及其资源的容器,从这样的角度,我们可以这样说:线程即是“程序”。我们为什么要使用多线程?原因是多种多样的,扯远一点,由于摩尔定律的失效(CPU单核性能在短期内无法取得决定性的进步),红蓝两家都在往CPU上堆核心,广大程序员无法享用单核红利。而着眼于手边,你可能会为了实现一个好看的读条界面而转向超线程,或者可能是为了在读取文件的同时输出日志,或者仅仅是想给自己的CPU来一次压力测试…......

2022-08-29 02:43:00 1989

原创 EasyX二三事

写了一些关于EasyX库的内容。

2022-08-23 15:17:05 5424 4

原创 关于math.h的笔记

闲话少叙,直接来吧。

2022-08-19 02:15:21 2154

原创 C中格式化输出时忽略浮点数多余的0

说出来你可能不信,我当时甚至想拿union来搞位操作判断是几位小数。昨日刷题,居然被这破玩意儿难住了,搞了半个多小时弄了个神必算法。后来发现只要用%g就可以忽略浮点数多余的0不输出了。...

2022-08-16 23:42:31 2888 2

原创 关于string.h的笔记

其实就是个无符号整数(具体类型与编译器实现相关)。同时也是sizeof关键字所返回的类型。不用再解释了吧。返回 str 所指向的内存中前 n 个字节里第一次出现的(无符号)字符 c 的指针。

2022-08-15 12:13:13 1363 1

空空如也

空空如也

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

TA关注的人

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