Sunday, 24 of October 2043
12°C
Saturday, 25 of October 2043
18°C
Monday, 26 of October 2043
25°C
Wednesday, 28 of October 2043
10°C
Tuesday, 27 of October 2043
20°C

Sorry, but your browser does not support WebGL!

二叉树遍历

常用算法与数据结构模板系列(十二)

写在前面 二叉树是一种基本的数据结构,学好它对于深刻理解递归、二分法以及后续学习图帮助很大; 而且,树形结构也是开发中经常用到的结构。对于二叉树来说,最基本的操作就是遍历, 通过遍历每一个结点,有时候就可以解决很多的问题。遍历分为两种:广度优先搜索(BFS) 和深度优先搜索(DFS)。其中广度优先搜索一般利用队列以迭代法进行,一般又叫做层次遍历, 顾名思义,它是从根结点一层一层向下遍历;深...

语言的宗教信仰问题

正确认识人与工具的关系

写在前面 昨天发现一个很严重的问题。那就是我看轮子哥在博客上骂 Go 语言的时候,竟然变得很情绪化。不过好在我非常理性地 捕获了这一感情变化,然后马上抛出了问题,我为什么会这样?很显然,因为 Go 是我的第一语言,我跟它产生了共情。 这不就说明了,我也在语言上面搞宗教信仰吗?实在是太愚蠢了。于是我想了一个办法纠正我的错误思想。 正确认识人与工具的关系 人类未必是一个很伟大的造物(反正争...

软件工程随感

一些基本概念与问题

写在前面 程序设计和软件工程上有一些经常碰到的问题。这一领域里存在着一些口口相传的就像是什么武林秘籍一样的东西, 当你在论坛之类的地方交流的时候总会有一些似乎经验更丰富的开发者试图用这些秘籍来教育新手, 诸如 “一件东西只做一件事”,“越简单越有效”,“代码越短质量越高”。今天就来深入探讨一下这些问题。 代码的长短与软件的质量的关系 他们之间当然没有必然的关系。如果非要讨论他们之间的关...

编程语言中的引用与值

引用类型与值类型,引用传递与值传递

写在前面 我以前一直都分不清引用与值的区别,尤其是在之前初学 C 语言时,C 语言原始的语言设计让我对 它们两的理解雪上加霜。学了 Java 之后情况其实也没有多大的变化,主要是我当时以为看别人的博客 就是最好的学习方法。结果是 CSDN 上的很多人水平并不高,不加思考地接受他们的“二手知识” 是很有害的。还有一些人以复制粘贴别人的博客为乐,虽然注明了转载,没有版权问题;但是如果你转载 的...

谈质疑权威

新年随感

从马克思主义基本原理出发,我们知道,认识事物要实事求是,一切从实际出发。所以,在生活中,对于我们碰到的人说的话,我们一定要联 系他说话的背景,认清他当时的身份与地位,然后考虑我们自己所处的情况来看待他的言论。别人给出的建议可能是基于他当时的情况,别人 对自己和周围事物的认识可能是不全面的。总而言之,我们要带着思考看别人的每一句话,结合实际来思考问题。既不能因为别人是老师,专家, 人生导师等就...

Go并发程序设计

CSP模型下并发程序的设计模式

导论 并发程序的设计问题,自从操作系统被提出以来就存在了。在操作系统的实现当中,对并发一般都是采用共享内存模型,使用的同步工具通常包括 锁、信号量等。在很多语言,比如 Java 中对操作系统提供的系统调用进行简单封装之后就提供给用户使用。而后来发展的一些并发模型,则在此基础上进行进一步抽象。其目的就是要在保证并发安全性基础上,提高开发效率,进一步解放开发者,让他们能专注于业务逻辑的设计上。...

保证代码整洁的一般方法

《编写可读代码的艺术》读书笔记

前言 保持代码的简洁,干净,清爽毫无疑问是重要的,同时也是不容易做到的。我们可以通过遵循一些编程规范来编写可读代码, 如通过《Google Java 编程规范》等来确保 Java 代码相对整洁。但是如果换一种语言,又会有不同的规范要求;同时, 规范一般只在局部的细节上通过参考,我们难以借此了解更广视角上保证程序设计整洁的方法。所以,有必要接触一些讲解 编写整洁代码的一般方法的书。比如,我这...

gcc降级操作

CUDA使用中的问题

问题导入 使用 CUDA nvcc 编译时报出了 #error – unsupported GNU version! gcc versions later than 6 are not supported! 这样的错误,是因为 gcc 版本太高,不兼容。查看一下自己的 gcc 版本: $ gcc –version gcc (Ubuntu 7.4.0-1ubuntu1~1...

gitignore的语法

git深入了解

前言 已经偷懒有两个月没有写新博客了,今天更新一篇有关git使用的博客,也是从简书转载的,我重新编辑了一下文章结构。 正文(全文转载) 在使用Git的过程中,我们喜欢有的文件比如日志,临时文件,编译的中间文件等不要提交到代码仓库,这时就要设置相应的忽略规则,来忽略这些文件的提交。简单来说一个场景:在你使用 git add . 的时候,遇到了把你不想提交的文件也添加到了缓存中去的情况,比...

cuBLAS入门

CUDA入坑

前言 我现在入CUDA的大坑啦,大概看了一下CUDA并行计算的基本编程方法,现在开始 学习CUDA的基本线性代数库cuBLAS。因为我刚开始学,所以不要期待有太多干货。 本文其实主要是库文档的内容,只不过官方文档没有中文版,这个就当做是学习笔记吧。 cuBLAS使用 从版本4.0开始,除了现有的旧版API外,cuBLAS库还提供了新的更新的API。 通过包含头文件“ cublas_v2...