Ryo's Blog

偶尔写一些技术相关的文章、笔记,或是写一些兴趣相关的文章。

如何手撕一个堆

如果哪一天你把编程语言的类库全忘光了,又遇到一题明知到要用堆的题目,咋办?对着一道自己明显会的题干着急,愣是想不起PriorityQueue的名字。这时候只能自己实现一个堆出来了。

如何手撕一个堆 写在前面 在参加如AtCoder等算法竞技,或是刷Leetcode等算法题时,我们总是不可避免地遇到堆这种数据结构。 当然,一般来说我们只要理解堆,知道堆的性质,知道怎么样用堆就足够了。在做题时只需要调用系统类库即可——在参加AtCoder时你甚至不会有时间去自己实现一个堆。 但是,如果哪一天你把编程语言的类库全忘光了,又遇到一题需要频繁求最值的题目——你明知这里要用...

设计模式之美读书笔记

以我的观点来总结一下设计模式之美这个专栏课的要点,给后人做个导读。

导读 02:如何评价代码好坏? 从7个方面评价代码的好坏: 易维护性:根本 可读性:最重要 易扩展性:对修改关闭,对扩展开放 灵活性 简洁性:KISS 可复用性:DRY 可测试性:TDD,单元测试,控制反转与依赖注入 03:编程方法论 设计模式之美这一课程不单止讲设计模式,而会讲包括设计模式在内的指导我们进行代码设计的方法论。包括以下5个方面: ...

排序算法

来讲讲我所理解的排序算法

序言 我们知道排序是算法入门基本功,排序算法有多重要想必也不需要我在这里说明了。因此这一篇就按着我的理解,聊一聊排序算法。 当然我不打算随便弄个什么十大排序算法或是经典排序总结之类响当当的名头,各个算法走马看花一样拉出来遛一遍,最后变得跟网上搜索到的其他讲排序的文章一样换汤不换药。你会发现这篇文章的结构跟在网上搜索到的任何讲排序的文章都有所不同: 在这篇文章里,你会发现你找不到冒泡排序...

Python字典的实现原理

逻辑结构与物理结构在Python3.6前后的不同

CPython从3.6开始,字典(dict)不再是无序的了——字典的修改了原先的底层实现,变得能按字典插入的顺序进行遍历。而Python从3.7开始将字典的有序性写入语言特性,不管是Jython、IronPython还是其他Python实现,从3.7开始大家的字典都是有序的了。 前言 以前参加Python相关的面试时,面试官经常都会问一个问题:Python里的字典(dict)是有...

C++中using关键字的使用

整理C++中using关键字的用法,重点整理C++11中声明别名时使用using与typedef的不同。

using的用法 using与命名空间 引入整个命名空间中的成员 不引入命名空间时,使用其中变量需要使用<命名空间名>::<变量名>的方式使用。 using namespace foo; 如此会将命名空间foo下所有的成员名称引入,可在直接以<变量名>的形式使用。但如此做有可能会使得命名空间foo中部分变量与当...

搭建博客的过程

记录这个博客搭建的过程,以及遇到的坑。

“Stop Trying to Reinvent the Wheel.” 博客构建 把仓库clone到本地 参考BruceZhao提供的中文翻译:README.zh.md,先将Huxpro提供的博客模板仓库fork出来,git clone到本地。 整个网站文件夹大致结构如下: ├── _config.yml | ├── _posts/ | ├── 2007-10-29-a...

Welcome to Ryo's Blog!

"Hello World, Hello Blog"

“Hello World!” 这是我的第一篇博文 自己盲人摸象折腾了一两天,终于利用GitHub Pages,把自己的博客搭好了。 感谢Huxpro提供的博客模板,以及BruceZhao编写的中文ReadMe。 这个博客的使用流程: 写作时利用Markdown语法书写,与日常编写GitHub上的文档相同。 使用Git Workflow进行博客的更新。 利用Git...