自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 资源 (7)
  • 收藏
  • 关注

原创 深入浅出Docker 1-6章 学习笔记

docker深入浅出docker概览略docker安装启动Hyper-V和容器特性开始菜单-设置-搜索并选择“启用或关闭windows功能”-勾选Hyper-V和容器没有的话参考这个blog去官网下载安装,结束以后重启如果提示WSL2有问题,去这里下载更新输入docker verison,如果有类似消息Client: Cloud integration: v1.0.22 Version: 20.10.12 API version: 1.41 G

2022-02-06 15:47:35 1121

原创 C++ 核心准则边译边学 哲学篇.13: Use support libraries as appropriate 酌情使用支持库

源网址:CppCoreGuidelines原因使用设计良好、文档齐全且支持良好的库可以节省时间和精力;如果你必须将大部分时间花在实现上,那么它的质量和文档可能会比你所能做的更好。库的成本(时间、精力、金钱等)可以由许多用户分担。与单个应用程序相比,广泛使用的库更有可能保持时效性和新系统可移植性。了解广泛使用的库可以节省其他/未来项目的时间。因此,如果的的应用程序领域存在合适的库,请使用它。例子std::sort(begin(v), end(v), std::greater<>());

2021-12-14 14:59:35 278

原创 C++ 核心准则边译边学 哲学篇.12: Use supporting tools as appropriate 酌情使用辅助工具

源网址:CppCoreGuidelines原因很多事情“通过机器”可以做的更好。计算机不会对重复的工作感到疲惫或者无聊。我们通常有更好的东西去重复做常规工作。例子运行静态分析工具取验证你的代码遵守你希望的准则。注意参考(PS:这里工具没有链接,可能还没有添加上)静态分析工具并发工具测试工具还有许多其他类型的工具,例如源代码存储库、构建工具等,但这些超出了这些指南的范围。注意小心不要依赖过度精心设计或过度专业化的工具链。这些可以使你的代码不可移植。...

2021-12-14 14:41:47 357

原创 C++ 核心准则边译边学 哲学篇.11: Encapsulate messy constructs, rather than spreading... 封装复杂结构而非代码中传播

源网址:CppCoreGuidelines原因混乱代码更难开发且容易隐藏bug。一个好的接口应该能够简单安全的使用。混乱低级的代码会导致更多这样的代码。例子int sz = 100;int* p = (int*) malloc(sizeof(int) * sz);int count = 0;// ...for (;;) { // ... read an int into x, exit loop if end of file is reached ... // ... che

2021-12-14 14:27:02 616

原创 C++ 核心准则边译边学 哲学篇.10: Prefer immutable data to mutable data 优先使用常量而非变量

源网址:CppCoreGuidelines原因推理常量比变量更简单。常量不可能发生不可预期的改变。常量可以进行更好的优化。你不能在常量上进行数据争夺。参考常量篇:常量和不变性

2021-12-14 14:00:10 597

原创 C++ 核心准则边译边学 哲学篇.9: Don’t waste time or space 不要浪费时间和空间

原因因为这是C++!注意为了实现目标(例如开发速度,资源安全或者简化测试)花费的时间和空间不算浪费。“追求效率的另一个好处是,这个过程会迫使你更深入地理解问题。” -Alex Stepanov(PS:STL之父)反例struct X { char ch; int i; string s; char ch2; X& operator=(const X& a); X(const X&);};X waste(const ch

2021-12-14 13:54:27 612

原创 C++ 核心准则边译边学 哲学篇.8: Don’t leak any resources 不要泄漏任何资源

原因随着时间推移,即使缓慢的资源增长也会耗尽可用资源。这对长时间运行的程序尤其重要,而且是负责任的编程行为很重要的一部分。反例void f(char* name){ FILE* input = fopen(name, "r"); // ... if (something) return; // bad: if something == true, a file handle is leaked // ... fclose(input);}最好使用RA

2021-12-13 17:27:24 209

原创 C++ 核心准则边译边学 哲学篇.7:Catch run-time errors early 尽早捕获运行期错误

原因避免“神秘的”崩溃,避免错误导致(可能无法识别的)错误结果。例子void increment1(int* p, int n) // bad: error-prone{ for (int i = 0; i < n; ++i) ++p[i];}void use1(int m){ const int n = 10; int a[n] = {}; // ... increment1(a, m); // maybe typo, maybe m

2021-12-13 16:37:31 65

原创 C++ 核心准则边译边学 哲学篇.6:What cannot be checked at compile time... 运行期检查编译期不能检查的内容

源网址:CppCoreGuidelines原因在程序中留下难以检测的错误会导致崩溃和错误结果。注意理想情况下,我们在编译期和运行期捕获程序的所有错误(除了程序的逻辑错误)。在编译期捕获所有错误是不可能的,但是运行期捕获所有遗留的错误通常是难以承受的。但是在资源充足的条件下(分析程序、运行时检查、机器资源、时间),我们应该努力编写原则上可以检查的程序。反例// separately compiled, possibly dynamically loadedextern void f(int* p

2021-12-10 16:17:56 263

原创 C++ 核心准则边译边学 哲学篇.5: Prefer compile-time checking to run-time checking 尽可能编译器检查而不是运行期检查

源网址:CppCoreGuidelines原因代码清晰和高效。你不需要对编译期捕获的错误写异常处理。例子// Int is an alias used for integersint bits = 0; // don't: avoidable codefor (Int i = 1; i; i <<= 1) ++bits;if (bits < 32) cerr << "Int too small\n";这个例子不能实现它想要的功能

2021-12-09 15:21:22 252

原创 C++ 核心准则边译边学 哲学篇.4: Ideally, a program should be statically type safe理想情况下,程序应当是静态类型安全的

源网址:CppCoreGuidelines原因理想情况下,一个程序应当是完全静态(编译期)类型安全的。不幸的是,这不可能,问题区:联合体类型转化数组退化范围错误缩小(截断)转换注意这些区域是一系列问题之源(例如崩溃和安全违规)。我们尝试提供替换技术。补充我们可以根据个别程序的需要和可行性,单独禁止、限制或者检测个别问题。通常的建议是替换,例如:联合体:使用variant(c++17)转换:尽可能不使用,用模板数组退化:使用span(来自GSL)范围错误:使用span缩小

2021-12-09 15:06:14 313

原创 C++ 核心准则边译边学 哲学篇.3: Express intent 表达意图

源网址:CppCoreGuidelines原因除非表明了代码的意图(通过命名和注释),否则很有必要告知代码是否做了它计划做的事例子gsl::index i = 0;while (i < v.size()) { // ... do something with v[i] ...}这里没有表达只是循环v中元素的意图。下标的执行细节是暴露的(所以可能被误用),而且i的生命周期超过了循环作用域,这可能是也可能不是本意,读者不能从这段代码中推断出来。更好的表达:for (const

2021-12-09 09:17:55 87

原创 C++ 核心准则边译边学 哲学篇.2: Write in ISO Standard C++ 按照ISOC++标准开发

源网址:CppCoreGuidelines原因这是一组编写ISO标准C++的准则。注意有些环境使用拓展是必需的,例如访问系统资源。在这种场景下,定位必要拓展并且按照非核心准则控制他们的使用。可能的话,构建接口将这些拓展封装,以便在不支持这些拓展的系统上不编译或者关闭掉。拓展通常没有严格定义语义。甚至因为没有严格的标准定义,通用的拓展在不同的编译环境下可能有轻微的不同行为和边界条件处理。注意使用有效的ISO C++并不能保证可移植性(更别说准确性)。避免依赖于未定义的行为(例如未定义的求值顺序)

2021-12-09 08:33:17 91

原创 C++核心准则边译边学 哲学篇.1: Express ideas directly in code 直接在代码中表达想法

源网址:CppCoreGuidelines简介(我自己写的,其他是翻译的)c++核心准则是C++之父Bjarne Stroustrup针对现代C++(C++11\14\17)开发制定的一套,旨在提高程序质量的实时更新准则,在github社区维护。这套准则针对代码安全性、可读性、兼容性、并发及效率等提出了一系列启发性的建议和可行的改进措施。我认为是提升代码质量的一套非常有价值的建议,希望可以坚持翻译下去。原因编译器和大多数程序员不会阅读注释和设计文档,但是在代码中表达的语义可以通过编译器和其他工具检查

2021-12-08 16:27:37 240

原创 C++ for循环效率优化

C++ for循环效率优化背景今天看到同事的代码,commit message说要提高循环效率,但是看起来非常浪费时间,我就想试一下for循环怎么写运行最快,发现还是非常有意思的。首先是编译选项,在X86系统编译Release,优化等级-O3,关闭gdbSET(CMAKE_BUILD_TYPE "Release")SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall") 这个循环非常简单,遍历一个结构体的vector,读一下数据执行一些操作

2021-11-04 10:48:38 6069 2

原创 windows 10 自带linux子系统开启,ubuntu安装和文件资源管理器访问linux子系统

windows 10 自带了linux子系统,相比于其他虚拟机,可以确定微软自带的linux子系统会具备更好的安全性和兼容性,这篇文章总结一下怎么开启linux子系统,在子系统安装Ubuntu操作系统和在访问linux子系统文件。1. 开启win 10 自带linux子系统首先开启开发者模式:设置→搜索选择“开发者选项”→打开开发人员模式。然后打开linux子系统:控制面板→程序→启用或关闭windows功能→勾选“适用于linux的windows子系统”。这样Windows自带li

2021-04-12 23:10:10 1887

原创 git快速入门和常用命令总结

Git简介虽然大家都知道git是什么,但是还是简单介绍一下。git是一个分布式版本控制系统,主要用来管理文本文件,包括各种代码,配置文件,文本文档等,git可以建立远程仓库和本地仓库,对每次提交(commit)的内容进行记录,方便快速查看更改以及版本切换,并且可以进行多分支管理,方便进行团队开发和不同版本修改。当然,git也有缺点,主要是没有代码保密性。放在前面,非常推荐一个图形化git学习网站所有的git操作都能够直观显示,而且可以像游戏一样进行闯关模式,完成指定的git操作即可通关!!!Gi

2020-07-25 17:01:44 123

原创 C++的懒汉式单例模式和magic static单例模式

最近要公司开发一个机器人分布式调度器,刚刚毕业的我瑟瑟发抖,准备用单例模式向机器人提供调度算法接口,赶紧补习下知识。什么是单例模式单例模式是一种常用的设计模式,主要指在程序运行过程中,一个类有且仅有一个实例,并且向外提供获取该实例的接口。实现单例模式有三个要点:类只能有一个实例;类自行创建这个实例;类自行向整个系统提供这个实例。简单的懒汉式实现最简单的懒汉式实现单例模式:class Singleton{private: Singleton() { std::cout <<

2020-07-18 16:10:52 1731

原创 tmux安装及常用命令总结

tmux简介tmux是一个终端复用软件,特点在于通过一个终端远程登陆主机之后,不需要开启多个终端,而且可以分离终端,这样当终端因为网络问题断开时,可以重新连接之前的终端,避免进程因为网络问题断开。tmux安装和使用在ubuntu下执行sudo apt-get install tmux即可完成安装,centos使用yum install tmux即可。tmux使用命令行控制,主要命令可以分为四类,会话管理、系统操作、窗口操作和面板操作,tmux的命令前缀符是Ctrl+B,所有窗口中的命令都需要先使用

2020-07-12 16:16:02 533

原创 markdown使用入门

markdown简介markdown是一种轻量级标记语言,后缀名为.md或.markdown,它可以简单快速创建各种格式,并且以纯文本格式编辑,可以在各种平台上拓展,支持git管理,并可以导出为HTML、Word、PDF、图像等多种格式(安装相应插件即可)。因此markdown非常适合作为一种可用资源较少的情况下的文本格式。目前CSDN支持markdown格式的博客,也有一些GitHub上的项目使用.md格式的说明文档。markdown标题markdown常用#号创建标题,也可以使用=号。使用

2020-06-14 20:45:31 225 1

原创 MATLAB BP神经网络用法的总结(试用于初学者)

BP(back propagation,反向传播)神经网络功能及其MATLAB实现。反向传播指误差函数会由输出端向前反向传播,隐含层借此调整权值来缩小误差。结构图:W为权值,b为阈值。1.      数据输入:数据输入时需先使用传递函数进行变化,变换方法包括阈值(阶跃)函数、分段线性变换、归一化函数(mapminmax)、对数S形变换(logsig)、正切S形变换(ta

2016-08-30 15:19:16 14833

2016年美赛特等奖O奖论文

2016年美国大学生数学建模竞赛特等奖O奖官方原版论文,这是当年参赛前通过其他渠道购买的,之前定价比较高,调整价格需要超过50字,所以说这些废话。

2017-01-15

2015年美赛O奖特等奖官方原版论文

2015年美国大学生数学建模竞赛特等奖O奖官方原版论文,这是当年参赛前通过其他渠道购买的,之前定价比较高,调整价格需要超过50字,所以说这些废话。

2017-01-15

2014年美赛特等奖O奖论文

2014年美国大学生数学建模竞赛官方原版特等奖论文,共19篇,欢迎下载,这是当年参赛前通过其他渠道购买的,之前定价比较高,调整价格需要超过50字,所以说这些废话。

2017-01-11

2013年美赛O奖原版论文

2013年美国大学生数学建模竞赛官方原版特等奖论文,共17篇,这是当年参赛前通过其他渠道购买的,之前定价比较高,调整价格需要超过50字,所以说这些废话。

2017-01-11

2012美赛O奖原版论文

美国大学生数学建模竞赛官方原版论文,共28篇,这是当年参赛前通过其他渠道购买的,之前定价比较高,调整价格需要超过50字,所以说这些废话。

2017-01-11

2011美赛O奖原版论文

官方原版美赛特等奖论文,共15篇,这是当年参赛前通过其他渠道购买的,之前定价比较高,调整价格需要超过50字,所以说这些废话。

2017-01-11

FERET_80_80-人脸数据库

人脸识别数据库,200人*7张不同表情角度80*80像素tif图片

2016-10-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除