C++运算符优先级与结合性

C++ 运算符 类型转换

最近总是由于不清楚运算符优先级不小心写错代码,每次都去查cppreference。现在把cppreference内容拷贝至此,方便查询。 这里面最值得注意的是<<(移位)优先级低于+/-(加减),!(逻辑非)++/--(自增/自减)+/-(正负)优先级低于->运算符。

C++模板的偏特化与全特化

C++ 模板 特化 编译

模板机制为C++提供了泛型编程的方式,在减少代码冗余的同时仍然可以提供类型安全。特化必须在同一命名空间下进行,可以特化类模板也可以特化函数模板,但类模板可以偏特化和全特化,而函数模板只能全特化。模板实例化时会优先匹配"模板参数"最相符的那个特化版本。

用Grub Rescue手动引导来启动内核

Bash GNU Grub Linux Ubuntu Windows 操作系统

Wikipedia: GNU Grub是一个来自GNU项目的启动引导程序。GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。 GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。

几乎所有人的Linux都是一个双系统,所以Grub也是几乎所有Linux用户熟知的东西。 但很多原因都可以导致Linux无法启动,比如安装了不合适的驱动程序、由于安装Windows重写了MBR、安装内核时参数搞错了等。

这时我们通常会用一个启动盘来重置MBR,并重新配置硬盘上的Grub。但很多情况下我们并不需要这样一个启动盘,Grub无法启动内核时会提供Grub Rescue终端。 在这里可以手动引导来启动内核,然后重新安装和配置Grub。本文便来记录这一过程。

Grub的手册在这里: https://www.gnu.org/software/grub/manual/

原生 JavaScript 的 DOM 操作汇总

JavaScript DOM HTML jQuery innerHTML

经常有人讲在 IDE 中写 C#、Java 会越来越手残,那么经常用 jQuery 也会让我们忘记 JavaScript 是如何操作 DOM 的。 JavaScript的DOM操作也是面试中的常见问题,尤其是当你需要回答jQuery的性能问题时,便需要再次回到JavaScript DOM API。 本文便总结一下常见的 JavaScript DOM 操作方法,关于 JavaScript DOM 事件可以参考另一篇文章:DOM Level 2 Event 与 jQuery 源码:捕获与冒泡

用C++实现一个简单的哈希表

C++ 封装 数组 算法 链表 二叉树 哈希表 智能指针

Wikipedia: 散列表(Hash table,也叫哈希表),是根据关键字(Key value)而直接访问在内存存储位置的数据结构。 也就是说,它通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,这加快了查找速度。 这个映射函数称做散列函数,存放记录的数组称做散列表

哈希表、二叉树、链表是最常见的数据结构,涵盖了程序员面试和笔试中几乎所有的数据结构相关问题。 本文中用C++来实现一个简单的哈希表,帮助理解哈希表是怎样运作的。为了简化代码并突出逻辑,采用简单的除余数作为散列函数,用线性探测来处理碰撞

冒泡排序和插入排序

C++ STL 排序 数组 算法 快速排序 插入排序 冒泡排序

插入排序和冒泡排序在平均和最坏情况下的时间复杂度都是 O(n^2),最好情况下都是 O(n),空间复杂度是 O(1)。

上一页 下一页