Albert World


  • 首页

  • 归档

  • 标签

  • 分类

  • 工具

  • 关于

  • 搜索

.bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息

发表于 2021-10-16 | 更新于 2021-10-17 | 分类于 bat |
热度 ℃
  |   字数统计: 1,830(字)   |   阅读时长: 8(分)

前言

又是实际开发中的问题,想要截取一个文件路径中的盘符、文件名等信息,第一反应是正则表达式?或者是 split 函数?这些往往都是“高级”语言中才会有的实现方法,对于批处理来说有点“带不动”啊,那么在bat批处理中要怎样处理类似的请求呢?最近找到了两种方法,接下来会逐一展示一下,不过在展示具体的写法前,我们先来看一下 %~dp0的含义。

阅读全文 »

C++11中的std::atomic保证的原子性是什么

发表于 2021-10-13 | 更新于 2021-10-13 | 分类于 C/C++ |
热度 ℃
  |   字数统计: 1,964(字)   |   阅读时长: 8(分)

前言

提到atomic这个词,你首先想到的是什么呢?作为一个长时间混迹于编程世界的菜鸟,我首先想到的一个词是“原子性”,接着飞入脑海的是 “ACID” 这个缩写词组,既然提到了 ACID 我们就来简单的复习一下。

ACID 是指事务管理的4个特性,常见于数据库操作管理中,它们分别是:原子性,一致性,隔离性和持久性。

阅读全文 »

Dijkstra——通过不断松弛来解决单源最短路径问题的算法

发表于 2021-09-11 | 更新于 2021-09-12 | 分类于 C/C++ |
热度 ℃
  |   字数统计: 1,839(字)   |   阅读时长: 7(分)

前言

Dijkstra算法又称迪杰斯特拉算法,它采用的是一种贪心的策略,使用广度优先搜索的方式解决带权有向图或者无向图的单源最短路径问题,需要注意的是它不能处理带负边权的情况,核心思想就是“守住现有阵地不断攻占底盘”,这一点可以在后面代码实现中慢慢体会,接下来梳理一下算法思路。

阅读全文 »

Floyd-Warshall——仅用4行代码就能解决多源最短路径问题的算法

发表于 2021-09-05 | 更新于 2021-09-07 | 分类于 C/C++ |
热度 ℃
  |   字数统计: 1,127(字)   |   阅读时长: 4(分)

前言

Floyd-Warshall算法简记Floyd算法,又称弗洛伊德算法,是解决任意两点间的最短路径问题的一种常用算法,核心思想就是“不断利用第三者影响原配关系”,这一点在4行核心代码中表现的淋漓尽致,接下来梳理一下算法思路。

阅读全文 »

从一个小题中的应用来体会下std::tie的便利之处

发表于 2021-08-15 | 更新于 2021-08-15 | 分类于 C/C++ |
热度 ℃
  |   字数统计: 1,746(字)   |   阅读时长: 7(分)

前言

今天主要学习一下 std::tie 函数的使用方法,之前看到 tie 函数是和 IO 绑定的,最近发现它是和 std::tuple 绑定的,查询资料后发现两个函数虽然名字相同,但是在不同的作用域下,今天学一下和 tuple 有关的这个 tie 函数,不过在学习之前先看一道小题。

阅读全文 »

C++中使用std::sort自定义排序规则时要注意的崩溃问题

发表于 2021-08-07 | 更新于 2021-08-08 | 分类于 C/C++ |
热度 ℃
  |   字数统计: 4,396(字)   |   阅读时长: 21(分)

前言

看到这个标题应该会有很多人一下子就懂了,也会有些人感到迷惑,简简单单排序怎么会奔溃呢?我第一次接触这个问题还是很久以前刚刚参加工作的时候,当时也是写出了导致程序崩溃的代码,通过上网查询解决了问题,至此以后就对这个 sort 函数警惕了一些,一直记得就是在sort的自定义函数中判断条件不要加等号,至于本质的原因一直没有去探究,正好最近又改了一个相关的问题,所以决定从源码和定义的角度来看看为什么会出现这个问题。

阅读全文 »

使用box2dweb做一个下落的小球,宝宝玩的不亦乐乎

发表于 2021-07-21 | 更新于 2021-08-08 | 分类于 Game |
热度 ℃
  |   字数统计: 2,041(字)   |   阅读时长: 8(分)

前言

红球球~ 蓝球球~

家里的宝宝就喜欢玩球球,特别是蓝色的,而最近正好找到了一个优秀的物理引擎,就拿它来做了一个下落的小球,宝宝玩的不亦乐乎~

起初我是想模拟一个小球在不同曲线上的运动状态,一直在找一个简易的重力引擎,找了一段时间没有什么收获,也想过自己写个重力系统,可是仔细想想觉得有点太麻烦,后来玩了一些flash游戏,发现这类依靠重力的作为主要玩法的游戏还真不少,肯定有一个好的引擎可以直接拿来用,然后就发现了 Box2D 这个物理引擎,不但带有重力系统,还支持碰撞。

阅读全文 »

C/C++中的数据类型转换static_cast/dynamic_cast/const_cast/reinterpret_cast

发表于 2021-07-10 | 更新于 2021-07-12 | 分类于 C/C++ |
热度 ℃
  |   字数统计: 3,506(字)   |   阅读时长: 14(分)

前言

C/C++属于静态语言,也就是在编译时变量的数据类型即可确定的强类型语言。当不同的数据类型在一起运算或者相互赋值的时候,就需要进行数据类型转换。不同数据类型占用的内存空间不同,而各种数据类型的转换时有规则的,一种通用的规则就是“小转大”自动进行,“大转小”需要强制执行。这里的“大”和“小”指的是数据范围。

阅读全文 »

换个角度来看看C++中的左值、右值、左值引用、右值引用

发表于 2021-07-04 | 更新于 2021-07-05 | 分类于 C/C++ |
热度 ℃
  |   字数统计: 2,612(字)   |   阅读时长: 10(分)

前言

对于左值和右值有一个不太严谨的定义——在赋值表达式 = 左侧是的左值,而在 = 右侧的是右值。通过不断学习和尝试,最近我发现一个新的说法更加贴切,那就是“左值是容器,右值是东西”。对于这个定义我们可以类比一下水杯和水,通过水杯可以操作水杯中的水,操作过程中的中间结果如果想要进一步操作,可以将其放入其他的水杯,如果没有水杯就无法找到曾经操作过的水了,也就无法继续操作了。

1
2
3
int a = 2;
int b = 6;
int c = a + b;

在这个例子中,变量 a,b, c 都是水杯,而 2、6、a + b 都是被用来操作的水,只有把这些“水”放到“水杯”中才能被找到,才可以进行下一步操作。

阅读全文 »

C++11中std::move和std::forward到底干了啥

发表于 2021-07-04 | 更新于 2021-07-21 | 分类于 C/C++ |
热度 ℃
  |   字数统计: 2,641(字)   |   阅读时长: 11(分)

前言

C++11中的右值引用的出现,在特定情况下减少了对象的拷贝,提升了C++程序的效率,伴随而来的 std::move 和 std::forward 也大量出现在程序代码中,但是这两个函数究竟干了啥呢?其实他们的本质都是转换函数,也就是完成左值和右值之间的转换,需要注意的是左值可以转换成右值,但是右值无法转换成左值。

阅读全文 »
1…131415…28
Albert Shi

Albert Shi

阳光总在风雨后,大雨过后是冰雹

273 日志
44 分类
694 标签
RSS
GitHub 简书 StackOverflow CSDN 知乎 墨天轮
Links
  • Web前端导航
  • 文字编码导航
  • 在线代码编译
  • 在线工具集合
  • 在线教程集合
© 2018 - 2024 Albert Shi
Hexo 强力驱动
主题 - NexT.Mist
Unless otherwise specified, this blog is licensed under a CC BY-NC-ND 4.0 International License.