13 ithiker

尚未进行身份认证

我要认证

"All problems in computer science can be solved by another level of indirection."

等级
TA的排名 2w+

我编程20年的指导原则

My guiding principles after 20 years of programmingI’ve been programming since 1999 and this year I’ve officially coded for 20+ years. I started with Basic but soon jumped into Pascal and C and then ...

2020-03-07 21:08:52

使用python生成模拟花朵生长的gif动图(Simulate flower grow process with python)

使用python生成模拟花朵生长的gif动图(Simulate flower grow process with python)在网上读到刘大可的文章《关于“植物身上的黄金分割”的叫你恍然大悟的文章》,里面的动图非常有趣,本文是自己尝试用python语言生成这些动图的过程。原理首先要理解花瓣的生长过程,上面的文章中有一段话:图1: 图片来源:https://card.weibo.com/...

2019-10-18 15:51:16

Modern Microprocessors A 90-Minute Guide

译者的话文章标题说是一篇90分钟的简介,在我看来,90分钟不一定能够读完,但是内容相当的精彩,完全值得读上180分钟:在提高单核的性能上:作者从处理器的频率出发,分析处理器为什么要引入流水线,为什么会出现超标量流水器,为什么需要乱序执行,为什么需要分支预测,流水线的深度是否越深越好,处理器的发射宽度是否越宽越好,是否乱序执行一定比顺序执行要好,业界主流CPU厂商是如何做的?继而分析了为什么单核...

2019-07-21 22:56:42

C++智能指针使用须知

我在《C++ 智能指针(shared_ptr/weak_ptr)源码分析》已经介绍了智能指针的一些使用注意点,本文在此基础上,基于C++11中的语法特性,介绍一些智能指针的使用须知。std::unique_ptr如果不需要共享,同时需要防止内存泄漏, std::unique_ptr是替代raw pointer(裸指针)的第一选择:它的大小和raw pointer一样,解引用的速度也和raw ...

2019-04-30 23:43:44

When to use checkbox, when to use radio button

做UI或者GUI界面开发的人对checkbox和radio button都非常熟悉,本文简要介绍二者的区别和各自适用的使用场景。参考文章:https://www.justinmind.com/blog/checkboxes-or-radio-buttons-let-the-ui-design-battle-commence/...

2019-03-30 11:35:45

Tutorial: When to Write Which Special Member(编写C++特殊成员的指导原则)

C++中的特殊成员,即编译器可能会自动生成的成员函数或操作符,即默认构造函数、析构函数、拷贝构造函数、移动构造函数,拷贝赋值操作符,移动赋值操作符当给人解释这些特殊成员的使用规则以及什么时候需要自己手动编写其中的某个时,人们总会提起下面的这幅图。但是,我不认为这个图是特别有用的。它覆盖了所有的组合,有些组合其实是不太合理的。在这篇文章中,我们主要介绍你实际应该知道的关于特殊成员的知识以及什么时...

2019-03-21 22:15:45

catch2:一个好用的C++单元测试框架

文章目录为什么需要catch简单易用命令行选项SectionsBDD-styleAssertion MacrosFloating point comparisonsExceptionsMatchersString matchersVector matchersFloating point matchersCustom matchers最近发现一个简单易用的C++开源测试开源库:Catch2(C+...

2019-02-24 23:17:08

Undefining the C++ Pre-processor(取消C++中的预处理器)

取消C++中的预处理器There are only two kinds of languages: the ones people complain about and the ones nobody uses (世界上只有两类编程语言:一类是被人们抱怨的,一类是没人使用的)— Bjarne Stroustrup我喜欢上面这句话。它能说明JavaScript and Haskell被人抱...

2019-02-20 13:59:48

NVIDIA CUDA nbody problem源码分析

N体问题(n-body problem)是一个非常著名物理问题,大刘的《三体》的开篇中就有一篇以三个太阳(三体)为背景展开过。具体的,是指已知N个物体的初始位置、速度和质量,在经典力学情况下它们的后续运动情形,包括预测它们的轨迹等等。目前N>=3的N体问题是没有解析解的。给定N个物体,以及每个物体的位置xix_ixi​和初始速度viv_ivi​ (1≤i≤N1 \leq i \leq N1...

2019-02-02 22:44:16

C++对象计数

有时简单的事情看起来非常简单,但是他们却是非常微妙的。例如,你有一个Widget类,你想知道一共在运行时一共创建了多少个Widget对象。一个简单可行的方法是在Widget内部创建一个static counter,当对象创建时增加计数器的值,当对象销毁时减少计数器的值。同时,也要创建一个static类型的成员函数howMany,用来返回当前有多少个Widgets对象存在。如果Widget类只有简单...

2019-01-26 12:25:33

NVIDIA CUDA原理和基础知识

为什么使用GPU为什么现在使用GPU(Graphics Processing Unit)编程越来越多,主要是因为GPU相对于CPU的运算速度,内存带宽均有较大的优势,下面是摘自《CUDA C PROGRAMMING GUIDE》中的图片:浮点数运算速度:内存带宽:GPU为什么性能高这是因为GPU中硬件更多的用于data processing而不是data caching 或 flow...

2019-01-21 17:45:08

记一次解决ubuntu18.04无法进入图形用户界面(GUI)的过程

最近尝试使用一个比较好用的Markdown软件vnote,由于其release版本貌似托管在aws上,国内下载非常不方便.虽然提供了百度网盘的下载地址,但是在Linux系统上又无法使用百度网盘客户端,于是尝试使用代码构建appimage,发现代码目录下有一个.travis_linux.sh的脚本,看了下像是用来生成appimage,于是自己尝试运行该脚本,然后噩梦就开始了.重启系统后Lin...

2019-01-05 19:32:43

CUDA Hello World 程序

@[TOC]CUDA Hello world 程序CUDA(Compute Unified Device Architecture)是NVIDIA(英伟达)公司基于其生产的图形处理器GPU(Graphics Processing Unit)开发的一个并行计算平台和编程模型。基于CPU编程,程序都是运行在CPU上的;基于GPU编写的程序,程序可以运行在CPU上,也可以运行在GPU上。这样,通过增...

2018-12-26 11:20:08

Move Semantics and Perfect Forwarding in C++11

原文链接:Move Semantics and Perfect Forwarding in C++11

2018-10-13 22:14:44

C++ 11中的一些典型概念与分析

相比传统的C++98与C++03, C++11中新提出了很多新的概念,本文根据C++布道师Scott Meyers 在Youtube上的培训视频展开,介绍C++11中的一些典型概念,并进行分析。1. 左值(lvalue)与右值(rvalue)C++11之前已经有左值与右值的概念,但由于其只是简单的概念,并无太多应用,关注的不多;C++11中则贯穿了左值和右值的相关应用,比如类型推断等。判断左右...

2018-10-03 17:58:33

How to split a string in C++

Java has String.split(), Python has string.split(), Perl has split. There is no simple string-splitting method in C++, but there are plenty of ways of doing it. Here are some methods:Put it in a st...

2018-02-22 11:38:09

改进的point in polygon problem算法介绍

背景知识点和多边形的位置问题(point-in-polygon (PIP) problem), 一般指的是给定二维平面上的一个点Q以及一个多边形P,怎样判断点Q是位于多边形P内部还是外部。该算法在计算机图形学,地理空间信息学等方面有广泛的应用。目前有两种通用的算法实现: Ray casting algorithm(又称even-odd算法)和Winding number algorithm:

2018-01-20 17:28:24

类模板以及其中的traits技术和type classification技术

1. 类模板相关概念类模板用来描述一系列具有相同行为的类。一般有如下的形式: template<class T, class U>class A{public: A(){ cout<<"Primary template\n";}private: T t; U u; };如上所示的类模板我们一般称之为主类模板。 实例化后...

2017-07-31 14:22:39

QT中的d-pointer模式分析

类中的数据有多种组织方式,通常存放在类本身中,有时,为了方便管理,也会将数据部分分离出来,放在另外一个结构体或类中。如下图所示:

2017-05-31 23:53:22

Using astyle to format code

As you know, we had our coding style which everyone should follow, and also we had the cpplint tool to check if we had followed the rule, but we do not have a tool to check and transfer our code to th

2017-03-05 20:51:30

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。