资源:2021年 GitHub上很火的c/c++项目


前言

分享几款我收藏的适合初学者的c/c++方面的开源项目,比如相关的基础知识、数据结构、算法、设计模式,还有涉及到工具和具体实践项目的。

项目

1.C

地址:https://github.com/TheAlgorithms/C

没错,就单单一个C字,相当的简介明了。该存储库是用 C 实现的各种算法的开源实现的集合,并在GPLv3 许可下获得许可。这些算法涵盖了计算机科学、数学和统计学、数据科学、机器学习、工程等各种主题。实现及其相关文档旨在为教育工作者和学生提供学习资源。因此,人们可能会发现针对同一目标但使用不同算法策略和优化的不止一种实现。

2.libhv

地址:https://github.com/ithewei/libhv

提供具有非阻塞 IO 和计时器的事件循环,但更简单的 api 和更丰富的协议。有点类似于libeventlibevlibuv,但是基于libhv可以快速驱动Web服务端和客户端。

3.CPlusPlusThings

地址:https://github.com/Light-City/CPlusPlusThings

这个项目是一个适合C++初学者的学习型仓库,其中包括基础和进阶教程、源码解析、工具推荐、实战练习等等。

4.design-patterns-cpp

地址:https://github.com/JakubVojvoda/design-patterns-cpp

软件设计模式是针对在面向对象设计环境中反复出现的问题的通用可重用解决方案。它不是一个可以直接转化为源代码的完成设计,而是如何解决问题的模板。我们可以按目的将它们分类为创建(抽象实例化过程)、结构(类和对象如何组合以形成更大的结构)和行为模式(对象之间的职责分配)。

5.tmux

地址:https://github.com/tmux/tmux

tmux 是一个终端多路复用器:它可以在一个屏幕上创建、访问和控制多个终端。tmux 可能会从屏幕上分离并继续在后台运行,然后再重新连接。

6.netdata

地址:https://github.com/netdata/netdata

Netdata 的分布式实时监控代理以零配置从系统、硬件、容器和应用程序收集数千个指标。它在您所有的物理/虚拟服务器、容器、云部署和边缘/物联网设备上永久运行,并且可以完全安全地安装在您的系统中,无需任何准备。


TensorFlow: 环境安装(win+python+TensorFlow+CUDA+CUDNN)


需求

在家呆的时间打算学习一下AI,在网上查了挺多机器学习的,最后选择了TensorFlow。主要目的是给自己生成一套神经网络,留着以后用。

基础

本身电脑Win10 1660显卡一张。

环境

Python: 3.8.1
TensorFlow-GPU: 2.6.0
CUDA: 11.4.1
CUDNN: 11.4

环境安装过程

  1. Python

python是开发人员的必备品,已经安装过了,这里就不做介绍了,自行百度。

  1. TensorFlow-GPU

开源的计算机学习平台,安装比较简单,python下的pip可直接安装:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade tensorflow-gpu

命令解析:

pip python包管理器
install 安装
-i 临时指定安装源,这里选的是清华的源,要不下载太慢
--upgrade 顺带更新
tensorflow-gpu 软件包名称

微信图片_20210905193133.png
微信图片_20210905193204.png

然后尝试使用tensorflow,python命令行模式下引入此库。

import tensorflow as tf

没有安装CUDA和CUDNN的情况下会出现报错,如下图:
微信图片_20210905193427.png

  1. 安装CUDA
    进入英伟达开发者中心下载:CUDA Toolkit Archive阿里云盘

下载后点击会先把安装文件解压到指定目录,之后才会真正的安装。

安装图示:
微信图片_20210905193821.png
微信图片_20210905193826.png

  1. 安装CUDNN
    进入英伟达开发者中心下载:cuDNN Archive

下载后需要解压到CUDA的安装目录中。
微信图片编辑_20210905194212.jpg

  1. 环境变量配置
    右键此电脑-》高级系统设置(右边小字)-》高级-》环境变量-》系统变量Path

微信图片编辑_20210905195206.jpg

检查变量

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.4\bin
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.4\libnvvp
C:\Program Files\NVIDIA Corporation\Nsight Compute 2021.2.1\
// C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.4\lib\x64

头三个是安装完CUDA时候自动添加,最后一个需要手动添加
微信图片编辑_20210905195350.jpg

最后所有环境处理完毕,入门就是Hello World

代码:

import tensorflow.compat.v1 as tf   #解决 module ‘tensorflow’ has no attribute ‘Session’
#import tensorflow as tf

tf.compat.v1.disable_eager_execution()  #解决报错:runtimeerror: the session graph is empty. add operations to the graph before calling run()
hello = tf.constant('Hello world')

sess = tf.Session()

with tf.Session() as sess:
    print(sess.run(hello).decode())

sess.close()

微信图片编辑_20210905201356.jpg


Python:解决pip安装时速度慢的问题


国内源:

新版ubuntu要求使用https源,要注意。

清华:https://pypi.tuna.tsinghua.edu.cn/simple
阿里云:http://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
华中理工大学:http://pypi.hustunique.com/
山东理工大学:http://pypi.sdutlinux.org/
豆瓣:http://pypi.douban.com/simple/

临时使用:

可以在使用pip的时候加参数-i https://pypi.tuna.tsinghua.edu.cn/simple

例如:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade tensorflow-gpu,这样就会从清华这边的镜像去安装tensorflow-gpu。

永久修改:

Linux下,修改 ~/.pip/pip.conf (没有就创建一个文件夹及文件。文件夹要加“.”,表示是隐藏文件夹)

内容如下:

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host=mirrors.aliyun.com
windows下,直接在user目录中创建一个pip目录,如:C:Usersxxpip,新建文件pip.ini。内容同上。


console.log 输出字体颜色


在正常模式下,一般只能向console 控制台输出简单的文字信息。但为了把信息输出得更优雅更便于阅读,除了cosole.log()方法外还可以调用 cosole.warn() 来输出警告信息

在输出信息前面会有一个带感叹号的黄色三角警告符号。似乎比一般的console信息要友好得多了。虽然图标是黄色的,但输出的文字仍然是黑色。

另外经常用到的是输出错误信息。可以通过调用console.erro() 来实现。

信息前面会出现一个带叉的红色圆形图标。

这个效果要比警告信息更友好了,字体颜色成红色了。

要更牛叉莫过于对文字应用样式。而现在这一特性已经在谷歌浏览器里实现了。

在Chrome的开发者工具里,console 可以加样式,可以显示缤纷的颜色,甚至图片。简直爽翻了。

具体来说,是可以对输出到console控制台的文字进行CSS控制。

格式如下:

console.log()    // 打印日志
console.debug()  // 打印调试
console.error()  // 打印错误
console.info()   // 打印信息
console.warn()   // 打印警告
console.assert() // 打印断言
console.clear()  // 清空
%c表示css样式
console.log('%cHello', 'color: #43bb88;font-size: 24px;font-weight: bold;text-decoration: underline;');

%d表示数字
console.log('%d', 123);

%i表示整型数字
console.log('%i', 123);

%o表示DOM元素
console.log('%o', document.body);

%O表示javascript对象
console.log('%O', new Date());

IKBC poker 键盘说明书


编程说明

  1. 按 PMode(FN + 右 CTRL) 进入编程模式 (空格右灯闪烁)
  2. 按想要对其编程的键 (空格右灯长亮)
  3. 键入编程内容然后按 PN (空格右灯再次闪烁) 【如果发现没有闪烁,可能是键盘后面第四个开关没有变为off】【如果输入着输入着发现空格爆闪,那就是说明超过了14个按键】
  4. 重复步骤 2 和步骤 3 可编程其他键
  5. 按 PMode(FN + 右 CTRL) 退出编程模式 (空格右灯熄灭)

备注:

• 支持 FN 层编程,在选键状态时可以对 FN 组合键(例如: FN + A)编程
• 在选键状态(步骤 1)打开文书软件(比如.txt 型文本文档)并按 PN + 任意键可自动分层显示其编程内容
• 可以加延时,每按 15ms 键(FN + F) 一次延时 15ms,每按 0.1s 键(FN + G) 一次延时 0.1s,每按 0.5s 键(FN + H) 一次延时 0.5s, 连续多次延时只计一个按键但时间累加
• 每个键最多可以编程 14 个按键
• 在编程模式 15 秒内没按任何按键会自动退出

编程使用

按 PN + 已编好程的键,或者
先按 Toggle(FN+右 SHIFT)让空格左灯亮起,再直接按已编程好的键,此时若按 PN + 已编好程的键会输出原来的键码

  1. 编程示例
    把A编为123:FN+右CTRL,A,1,2,3,PN

继续把FN+A编为456:FN+A,4,5,6,PN
继续把 B 编为 CTRL+C: B, CTRL(不放手), 再按 C, 放开 CTRL 和 C, PN
继续把 C 编为在 WIN7 下调用 CMD.EXE: WIN, C,FN+G,M,FN+G,D,FN+H,ENTER, PN
结束:FN+右CTRL
使用已编程的A键:PN+A =>输出123
使用已编程的FN+A键:PN+FN+A =>输出456
使用已编程的 C 键: PN + C => CMD.EXE 程序调用

切换编程直接表达层:
Toggle(FN + 右 SHIFT) => 右 FN 灯亮起
(1)使用已编程的B键:B =>输出CTRL+C的码(注:等如复制)
(2)使用已编程的 FN + A 键: FN+ A => 输出 456(注: 不需要再按 PN 键)
(3)使用已编程的 C 键: C=>调用 CMD.EXE 程序
(4)如果要输出 A 键(此时直接按 A 是输出 123): PN + A => A
返回出厂设定
按住 FN + R, 三秒后 Toggle 灯开始闪烁,继续按住 FN + R 直至空格左灯闪了 9 次便会回复出厂设定

原厂说明书