C++过去的这一年
作者 | Bartek
译者 | 苏本如,责编 | 屠敏
出品 | CSDN(ID:CSDNnews)
【导读】本文旨在让我们回顾 C++ 2019年里的变化和发展!我们将重点关注本年度里 C++ 上发生的重大事件,标准的发展,工具的变化等等……
以下为译文:
免责声明:本文提出的观点仅代表个人立场,并不代表整个ISO C++标准委员会的意见。
简介
以下是本年度最让我关注的三大方面:
C++ 20即将发布。
开发工具。
C++在开发者中的稳定位置。
请继续阅读以获得对以上三大方面的全面了解。
重大事件时间表
下表按日期顺序列出了本年度C++发生的重大事件:
对C++11/14的编译器支持
为了保持完整性,笔者在这里先提醒一下:Clang(从版本3.4开始),GCC(从版本5开始)和Intel C++ Compiler(从版本15开始)已经完全支持C++ 11/14。
Visual Studio团队宣布Visual Studio 2017 15.7版完全支持C++ 17,这也意味着它对C++ 11/14的支持。现在,你可以构建复杂的代码库,如boost::hana或range v3。
既然C++ 11/14在所有主流编译器中都得到了支持,那么就不存在任何理由不使用现代C++了。
对C++ 17的编译器支持
C++17作为ISO/IEC 14882标准:2017 编程语言–C++发布于2019年12月。
你可以在这里下载一个免费的官方文档的最终版:N4700, 2017-10-16, PDF。
支持C++的编译器的一份完整列表可以参考这里:C++17 编译器支持。
你也可以阅读我的博客文章:C++17特性(https://www.bfilipek.com/2017/01/cpp17features.html)。
关于C++17的语言特性:
从Clang版本5.0、 GCC版本8.0、 Visual Studio版本15.7和Intel C++ Compiler版本19.0.1开始,所有编译器都支持C++17的语言特性。
标准库上还有更多的工作需要完成,特别是针对并行算法和文件系统等重要问题的工作。
对于std :: filesystem的支持,你需要GCC版本8.1(或者支持更好的版本9.1)、Clang版本3.9(或者支持更好的版本7.0)和Visual Studio 2017版本15.7。
并行算法的更新最早在Visual Studio 2017 15.7中提供,但是随着之后的更新,MSVC团队又添加了更多算法。
接下来可以使用的是Intel PSTL实现,它也被添加到GCC版本9.1中。你需要Intel线程构建块(TBB - Threading Building Block) 作为后端实现(欲知详情,请参考下面这篇文章):
在Linux和macOS上使用GCC 9.1和Intel TBB实现C++ 17 STL并行算法(作者:Paul Silisteanu) :https://solarianprogrammer.com/2019/05/09/cpp-17-stl-parallel-algorithms-gcc-intel-tbb-linux-macos/
而Clang库对并行算法的支持还需要继续等待。
另一个问题是低层转换函数的实现。
Visual Studio从版本15.7开始支持在from_chars() / to_chars()函数中支持整形参数,在版本15.8中又添加了对from_chars()的浮点支持。但是完全一致的支持直到版本16.4(对to_chars()的浮点支持)才开始可用。
到目前为止Clang和GCC版本只支持整数。原因可能是MSVC STL(标准模板库)的实现是开源的,我们可以预期一些代码将被移植到其他标准库实现中。
C++20
关于C++20的讨论今年占据了主导地位。在德国科隆举行的夏季ISO C++标准会议后,C++20的特性已经冻结。在稍晚时间举行的贝尔法斯特C++标准会议上,第一批国家机构的一些意见得到了解决。
总之,这意味着我们明年发布新的C++标准的道路会一马平川!
下面列出C++20的主要特性:
模块(Modules)
协程(Coroutines)
标准库开箱即用的概念(Concepts)
范围(Ranges)
constexpr支持:new/ delete,dynamic_cast,try/catch,虚拟
constexpr 向量和字符串
计时(Chrono):日历、时区支持
std::format – 详见此处C++20中的std::format
std::span
std::jthread
更重要的是,很多C++ 20的特性在流行的编译器中已经实现了。像模块(Modules)支持这种最重要的工作仍然没有完成(我们只是完成了一些实验性的Module-TS实现)。
像以往一样,完整的编译器支持列表可以在cppreference网站:C++20编译器支持页面(https://en.cppreference.com/w/cpp/compiler_support#cpp2a)上找到。但是我想在这里列举几个:
ISO C++标准会议
今年共计举行了三次C++标准委员会会议,分别在夏威夷的科纳、德国的科隆和北爱尔兰的贝尔法斯特举行。似乎今年的委员会更愿意留在欧洲。
这里可以找到所有的会议计划,包括:即将举行的会议和已经结束的会议(https://isocpp.org/std/meetings-and-participation/upcoming-meetings)。
下一次会议将于2020年2月在布拉格举行。
二月: 夏威夷科纳会议
在这次会议上,下列C++新特性投票后被批准纳入了C++20标准:
模块 - P1103!
协程 - N4736!
将结构化绑定扩展为更像变量申明 - P1091R3
std::polymorphic_allocator<> - P0339
std::midpoint和std::lerp - P0811
std::execution::unseq执行策略 - P1001
std::ssize 返回有符号数的自由函数 - P1227
查找时预先计算hash值 - P0920
并行化TS 第二版也被作为以下标准发布:
ISO/IEC TS 19570:2018编程语言 - 用于并行化的C++扩展技术规范(https://www.iso.org/standard/70588.html)。
这次会议的主要会议报告摘要可以从如下两个链接找到:
r/cpp: 2019-02 科纳ISO C++标准委员会会议报告(https://www.reddit.com/r/cpp/comments/au0c4x/201902_kona_iso_c_committee_trip_report_c20/)和科纳会议后的邮件列表(https://isocpp.org/blog/2019/03/2019-03-post-kona-mailing-available)。
其他版本的会议报告链接如下:
Herb Sutter – 会议报告:冬季ISO C++ 标准会议(科纳)
Botond Ballo - 会议报告: 2019年2月科纳C++标准会议
cor3ntin – 科纳会议报告
Timur Dumler – 会议报告:2019年2月夏威夷科纳ISO C++标准委员会会议
七月: 德国科隆会议
这次会议是C++20标准的特性冻结会议。这是最后一次投票的机会。
另外,有一个主要的特性在这次会议上从草案中淘汰了。虽然Contracts(合约)很有吸引力,但实际上,委员会未能就最后的实施要点达成一致。因此,最后的决定是最好成立一个独立的研究小组,尝试在C++ 23中纳入这一特性。
这次会议批准的一些重要特性和变化如下:
合约(Contracts)从C++20中移除,Contracts研究小组成立。
文本格式化支持:std::format("For C++{}", 20) - P0645
C++20同步库 - P1135
constexpr 内存分配 - P0784
constexpr std::vector - P1004
constexpr std::string - P0980
线程可中断 join 支持(Stop Token) - P0660
source_location - P1208
using enum - P1099
constinit关键字 - P1143
数学常量 (std::numbers::pi和 friends) - P0631
将概念(Concepts)的命名方式从PascalCase(驼峰式命名法)改为snake_case(蛇形命名法) - P1754
废弃volatile关键字 - P1152
布局兼容性和指针互易性特征 - P0466
构造函数的nodiscard 属性 - P1771
改进的iterator concept hierarchy - P1207
Move-only视图 - P1456
附加视图和range适配器 - P1035
运算符<=>加入标准库 - P1614
类模板参数推导的扩展 - P1021
这次会议的主要议程报告摘要可以在下面两个地方找到:
r/cpp thread - cologne meeting(https://www.reddit.com/r/cpp/comments/cfk9de/201907_cologne_iso_c_committee_trip_report_the/)
post Cologne mailing(https://isocpp.org/blog/2019/08/2019-08-post-cologne-mailing-available)
会议报告:
Herb Sutter – 会议报告:夏季ISO C++ 标准会议(科隆)
Timur Dumler – 会议报告: 2019年7月德国科隆C++委员会会议,
Botond Ballo – 会议报告: 2019年7月德国科隆C++ 标准会议
Silexica – 会议报告: 2019年度德国科隆ISO C++会议
Guy Davidson – 德国之行:科隆会议报告
十一月,北爱尔兰贝尔法斯特会议:
这一次,委员会不再投票任何新的特性,他们的大部分时间花在解决国家机构针对C++ 20草案提出的意见。
主要的会议报告发布在r/cpp网站上,会后的邮件列表地址为: https://isocpp.org/blog/2019/12/2019-11-post-belfast-mailing-available
其他的会议报告有:
Herb Sutter - 会议报告:秋季ISO C++ 标准会议(贝尔法斯特)
Botond Ballo - 会议报告:2019年11月贝尔法斯特C++标准会议
Ben Craig 会议报告:贝尔法斯特的独立错误
Guy Davidson - 在我家后院召开的WG21会议: 贝尔法斯特会议报告
编译器最新版本及说明
下面列出编译器的最新版本和最引入注目的更新。
Visual Studio
最新版本是Visual Studio 2019版本16.4,最后一次更新发生在12月3日。
– 版本说明:https://docs.microsoft.com/en-us/visualstudio/releases/2019/release-notes
今年推出了新版Visual Studio 2019!它为已经非常出色的集成开发环境(IDE)带来了许多新的特性和增强功能。
这里是最初发布时的博客文章:
Visual Studio 2019: Code faster. Work smarter. Create the future. | Visual Studio Blog(https://devblogs.microsoft.com/visualstudio/visual-studio-2019-code-faster-work-smarter-create-the-future/)。
一些重要的特性:
基于Visual Studio IntelliCode的人工智能辅助代码补全。
在C++ MSBuild和CMake项目中对 Clang 和 MSVC 的 Clang-Tidy 的支持。
AddressSanitizer支持 Windows 上使用 MSVC 编译的项目
和CMake更好的集成。
概念(Concepts)在版本16.3 中可用
对to_chars()的全面支持, 完善了C++17中的要求。
提供了一个名为C++ Build Insights的新工具集。欲知详情,请参阅C++团队博客。
另一个主要的更新来自Cppcon大会,MSVC团队在会上宣布将他们的标准模板库实现开源!详情请参见:
MSVC宣布开源其标准模板库实现 | C++ 团队博客(https://devblogs.microsoft.com/cppblog/open-sourcing-msvcs-stl/)
一些其他新闻:
AddressSanitizer (ASan)在 Windows上支持MSVC | C++ 团队博客
在Visual Studio中使用clang-tidy进行代码分析 | C++ 团队博客
Visual Studio 2019版本16.3开始支持C+20 Concepts特性 | C++团队博客
这里有一个关于C++标准(包括C++20)的一致性的文档:
Microsoft C++语言一致性清单(https://docs.microsoft.com/en-us/cpp/overview/visual-cpp-language-conformance?view=vs-2019)。
GCC
最新的稳定版本9.2,发布于8月12日,详情请参见:GCC9发布系列更新(https://www.gnu.org/software/gcc/gcc-9/)。
GCC对当前C++特性的支持(https://gcc.gnu.org/projects/cxx-status.html)
Libstdc++ 状态(https://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html)
Clang
最新的稳定版本9.0,发布于2019年9月19日。详情请参见:版本发布说明
Clang对当前C++特性的支持(https://gcc.gnu.org/projects/cxx-status.html)
libc++ C++1z 状态(https://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html)
Intel Compiler
最新版本19.1,发布于2019年4月2日。详情请参见:版本发布说明(https://software.intel.com/en-us/articles/intel-cpp-compiler-release-notes)
Intel® C++ Compiler对C++14特性的支持(https://software.intel.com/en-us/articles/c14-features-supported-by-intel-c-compiler)
Intel® C++ Compiler对C++17特性的支持(https://software.intel.com/en-us/articles/c17-features-supported-by-intel-c-compiler)
C++ Builder
最新版本为Rio 10.3 更新3,于2019年11月21日发布,详见版本发布说明。
集成开发环境(IDE)- Embarcadero C++ Builder使用了一个经过修改的Clang编译器(版本5.5)和一个Dinkumware标准模板库(STL)实现,它可以与Win32和Win64应用程序一起工作。这是一个功能全面的IDE,用于从单一C++代码库构建iOS、安卓、Windows和macOS应用程序。
一些相关新闻:
版本10.3.2新增功能:用于64位Windows环境的C++17 -- 实现在所有Windows环境下使用C++17 Clang编译器。
新的Delphi和C++Builder RAD服务器课程,已在Embarcadero学院、 Embarcadero博客站点、开发者工具和IDERA社区提供
RAD Studio 10.3新增功能: C++17的异步代码补全,以及其他功能
这里是一份C++特性的一致性清单:编译器对现代C++语言特性的支持(http://docwiki.embarcadero.com/RADStudio/Rio/en/Modern_C%2B%2B_Language_Features_Compliance_Status)
各种工具
当编译器帮助C++代码完成了主要任务时,我们也不能忘记其他工具的重要性。
以下是一些重要的工具,值得了解一下:
Clang 工具:
Clang/LLVM 提供了许多强大的实用程序,例如:
Clang Tidy
Clang-Include-Fixer
AddressSanitizer
MemorySanitizer
对于Visual Studio,你可以使用Clang Power Tools,它是Visual Studio的一个扩展.
它由Victor Ciura开发 (@ciura_victor)。
最新版本 5.5于2019年12月18日发布. 详见版本变更日志。
它同时还有一个付费版本。
集成开发环境
Visual Assist – 最新版本发布于2019年11月11日。详见:
Tomato Soup博客文章 | Visual Assist 版本2353已经可用(https://blog.wholetomato.com/2019/11/11/visual-assist-build-2353-is-available/)。
ReSharper C++ - 最新版本为2019.3, 详见:
ReSharper C++博客文章 | ReSharper C++ 版本2019.3: 支持C++20概念,类型提示, #includes排序, 和其他特性(https://blog.jetbrains.com/rscpp/resharper-cpp-2019-3/)。
CLion - 最新版本为2019.3, 详见:
CLion博客文章 | CLion 2019.3:一个专注于性能和一些期待已久的增强功能的高质量发布(https://blog.jetbrains.com/clion/2019/11/clion-2019-3-release/)。
Cevelop版本1.13.0 发布(https://www.cevelop.com/2019/10/23/cevelop-1.13.0-release.html)。
为了更好地理解代码,你还可以使用SourceTrail。它最近作为完全免费版本发布!详见:
SourceTrail开发者博客 | SourceTrail现在已是免费的开源软件。
代码分析器:
CppDepend 版本2019.3:
CppDepend – 2019.3版本的新功能(https://www.cppdepend.com/cppdependv2019)!
今年,该团队增加了对如下工作的支持:MISRA编码准则、VS 2019、QT项目、UI简化和嵌入式项目。
PVS-Studio:这是一个使用C、C++和C#编写的,用于在程序源代码中进行错误检测的工具。在Windows和Linux环境下都能够工作。
最新版本是PVS-Studio 版本7.05,请参阅今年的所有发布说明(https://www.viva64.com/en/m/0010/)。
今年的一些显著改进包括:.NET Core 3和3.1项目分析、MISRA编码准则支持、40多项新检查、对Java和SonarQube插件的支持。
包管理器:
Conan– 版本1.21已经可用。
Microsoft/vcpkg: VC++打包工具– 一个适用于Windows、Linux和MacOS环境的开源C++库管理器。
C++相关会议
我们没有理由抱怨C++会议的缺乏。实际上今年有很多会议机会,尤其是在春季和秋季,下面是几个会议的例子:
CppCon – 2019年9月举行
C++Now – 2019年5月举行
Meeting C++ - 2019年11月举行
ACCU – 春季会议在2019年4月举行,秋季会议在11月举行
还有很多其他的会议,如:Code::Dive、C++意大利大会、C++ on Sea、C++ 意大利日、C++俄罗斯大会、核心C++ 2019大会、等等。
如果你没有参加过任何一个会议,你可以在YouTube上快速输入它的名字,就会从中找到大部分演讲的视频,这很令人惊讶。你也可以使用一些网络搜索引擎很容易地找到相关会议报告。
以防万一,这里是ISO C++ 网站上的全球注册会议的链接:C++全球会议和 FAQ(https://isocpp.org/wiki/faq/conferences-worldwide/)。
社区和用户组
用户组提供给你遇见其他C++程序员,分享你的经验和学习新事物的机会。我强烈建议你定期访问这些用户组,或者至少偶尔访问一次。
我很高兴,我所在的城市(Cracow)的用户组C++ Krakow用户组(https://www.meetup.com/C-User-Group-Cracow):今年将继续存在,如果你住在附近的话可以加入!
如果你在查看完这个全球用户组列表后确认你附近没有C++用户组。你还可以加入如下用户组:
C++ Slack频道: https://cpplang.now.sh/
#include C++(https://www.includecpp.org/)
C++ Poland
此外,今年我们还在波兰推出了C++博客:C++ Polska。我们有几个活跃的作者每个月都会在那里分享很棒的内容!
同时我们也启动开始了一个Slack频道,在那里你可以讨论任何C++和非C++的东西:加入这里:C++ Polska Slack(https://bit.ly/cpppolskaslack)
书籍和课程
今年的一些发行的书籍和发布的课程值得一看:
有一个惊喜是John Lakos的书!我等了好几年,终于有货了!
下面是一些流行的C++自出版书籍的打印版本:
受欢迎程度
C++在哪些领域受欢迎?它的份额都被JavaScript蚕食了吗?
显然不是,因为在某些领域C++已经成长或保持在一个稳定的位置。
让我们看看一些图表/统计数据:
TIOBE 编程语言排行榜中,C++排名第4。它的占比现在为6.196%,去年超过了7%,两年前大约5.5%。详情请参见Tiobe Index。
在 StackOverflow 调查中,C++排名第9,超过了C,但是低于Java,C#,当然也低于Javascript,而它在上一年排名第10。详见:2019 Stack Overflow开发者调查(https://insights.stackoverflow.com/survey/2019#technology)
在GitHub调查中,C++排名从去年的第5下降到今年的第6。详见:2019 Octoverse 统计报告(https://octoverse.github.com/#top-languages)
我个人觉得,C++仍然很强大。也许它并不完美,也不容易学习,但是很多代码仍然是用这种语言构建的。Rust或其他系统语言不会很快取代它。它的工具越来越好,而这个语言正在致力于降低它的复杂性,所以初学者的体验希望是越来越好。
然而,C++只是工具的一种,我们很感激今天我们有很多工具可以使用。
我还找到了Daniel Lemire最近发表的一篇文章,十年前他对程序开发和编程语言做了一些预测。他对C++的增长感到惊讶。
让我们看看Daniel Lemire的评价:
我认为从2010开始,C++已经成为一种更好的语言。这并不容易,但已经超出了我的预期。
问卷调查
一个多星期前,我做了一个快速的问卷调查,希望得到一些关于C++使用的数据。我收到了574个回复!感谢大家!
C++ 标准的使用
在日常工作中,你使用哪个C++标准?
(注:以上百分比的总和不是100%)。
在这份调查中,我没有明确“使用”的准确含义,所以它既可以指生产环境的编码,也可以指业余项目的编码。比如,我看到C++20的使用率很高,但我相信它主要用于测试,还没有用于完整的生产环境,或者,也许我错了?
C++17的使用经验
你对C++ 17的使用有什么经验?
我们可以看到,今年C++17标准的采用率在稳步增长。
C++20的使用经验
你对C++20的使用有什么经验?
编译器的使用
你使用什么编译器?
(注:以上百分比的总和不是100%)。
你还用哪些其他的开发工具?
(注:以上百分比的总和不是100%)。
去年我没有问这个问题。
我认为这个问题中的“debuggers”不是个好选项,因为我们可以假设所有的开发人员在某个时候都会使用它。
当然还有一些“其他”的答案,包括:ccache、meson、make、Boost build、QMake、Autotools、cmake format、Emacs、Whole Tomato。
你认为2019年发生的最好的事情是什么?
这是一个开放性的问题,根据我收集到的回答,主要有以下几件大事(以下列表基于答案中出现的顺序,没有特殊的排序):
CppCon 2019大会
C++20 新特性和标准化
C++20中的模块(Modules)特性
协程(Coroutines)
概念(Concepts)
范围(Ranges)
std::format
Code::Dive 2019大会
Meeting C++ 2019大会
C++博客 - 帮助更容易学习和掌握最新的语言
C++ 书籍和课程 – 提升水平,更多的选择机会
C++ Cast
C++ 社区 – 大会,用户组
越来越好用的工具:Clang build analyser, VS 2019, QTCreator, CLion
有些人还列出了一些个人成就:例如,开始使用C++17,在大会上的第一次演讲。有人提到在项目中引入Conan,有人换了工作。还有人反馈说“终于退休了”。这些对所有人都有益处!
我也很高兴看到有人说“最好的是我的书”。谢谢:)
给个对这个问题的回答例子:
“最好的事情是了解了C++17的细节”, 当然,这个免费版本坚定了我在项目中使用它的想法。
其他问卷调查
C++标准委员会在今年的二月份也发出了一份问卷调查。他们设法获得了2000多份回复。
这份问卷调查表和结果可以在这里找到:第二次C++基金会年度开发者问卷调查:标准C++ (https://www.jetbrains.com/lp/devecosystem-2019/cpp/)
调查结果.
还有一项来自Jetbrains的调查:C++ 2019 - 2019信息图表中开发者生态系统状态调查(https://www.jetbrains.com/lp/devecosystem-2019/cpp/)
总结
本年度我想强调的就以下三件事情:
C++ 20即将发布。
开发工具 – 让编写C++代码更加容易!
C++在开发者中的稳定位置
总而言之,我认为在未来的十年,我们可以以一种积极乐观的态度看待C++。虽然我们无法预知更远的将来会发生什么,但是至少在接下来的十年里,我相信C++应该是稳定的。有了所有这些工具的帮助,新的C++标准编写的C++代码会更加容易访问,并且更加不容易出错。在可预见的将来,C++仍然是追求性能的应用程序的无二选择,甚至它会取代C和Fortran。
原文:https://www.bfilipek.com/2019/12/cpp-status-2019.html
(*本文为AI科技大本营转载文章,转载请联系原作者)
◆
精彩推荐
◆
1、评选进行中,参与投票即有机会参与抽奖,60+公开课免费学习
2、【Python Day——北京站】现已正式启动,「新春早鸟票」火热开抢!2020年,我们还将在全国多个城市举办巡回活动,敬请期待!活动咨询,可扫描下方二维码加入官方交流群~
CSDN「Python Day」咨询群 ????
来~一起聊聊Python
如果群满100人,无法自动进入,可添加会议小助手微信:婷婷,151 0101 4297(电话同微信)
推荐阅读
面对新型肺炎疫情,AI能做什么?
阿里腾讯华为在行动!程序员远程办公究竟用哪个视频会议好?
疫情防控,开发者集结出战!
图模型+Bert香不香?完全基于注意力机制的图表征学习模型Graph-Bert
疫情之下「在家办公模式」开启,你该选择哪些远程协同工具?
苹果 2020 iPhone 展望:相机大升级,5G 首次接入
比特币区块链将分道扬镳、Libra 苦难继续,2020 区块链进入关键时期!
你点的每个“在看”,我都认真当成了AI
相关文章:
码农技术炒股之路——抓取股票基本信息、实时交易信息、主力动向信息
从本节开始,我们开始介绍各个抓取和备份业务。(转载请指明出于breaksoftware的csdn博客) 因为我们数据库很多,数据库中表也很多,所以我们需要一个自动检测并创建数据库和表的功能。在《码农技术炒股之路——数据库管理…

TemplateBuilder
http://msdn.microsoft.com/zh-cn/vstudio/system.web.ui.templatebuilder_members(VS.85).aspx TemplateBuilder 成员TemplateBuilder 成员支持在生成模板及其包含的子控件时使用的页分析器。 下表列出了由 TemplateBuilder 类型公开的成员。 公共构造函数 名称 说明 Templat…

【iOS UI】iOS 9 GUI 资源分享
分享的内容包括一个【DesignCode-iOS-9-GUI】Sketch 文件, 和苹果官方释出的【SF-UI、SF-Compact】两种字体的安装包。 以上内容是正版、免费的 <a href "https://itunes.apple.com/cn/app/sketch-3/id852320343?mt12">Sketch</a> 是收费软…
反向R?削弱显著特征为细粒度分类带来提升 | AAAI 2020
作者 | VincentLee来源 | 晓飞的算法工程笔记导读:论文提出了类似于dropout作用的diversification block,通过抑制特征图的高响应区域来反向提高模型的特征提取能力,在损失函数方面,提出专注于top-k类别的gradient-boosting loss来…

C#初学——doWhile
继续上面的学习,这次的是流程控制,用dowhile,代码如下,还是用语言选择来作为事例的。using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication9 { class Program { static void Main(s…

码农技术炒股之路——实时交易信息、主力动向信息分库备份
一般来说,一个股票信息应该保存在一张表中。但是由于我机器资源限制,且我希望尽快频率的抓取数据。所以每天我将所有股票的实时交易信息放在daily_temp库中的一个以日期命名的表中。主力动向信息也是如此。但是盘后分析股票时,我们会以单只股…

数据预处理(完整步骤)
原文:http://dataunion.org/5009.html 一:为什么要预处理数据?(1)现实世界的数据是肮脏的(不完整,含噪声,不一致)(2)没有高质量的数据,…

码农技术炒股之路——抓取日线数据、计算均线和除权数据
日线数据是股票每日收盘后的信息。这块数据不用实时抓取,所以并不占用宝贵的交易时间的资源。于是我们抓取完数据后直接往切片后的数据库中保存。(转载请指明出于breaksoftware的csdn博客) 抓取日线数据 我们先要获取今天有交易信息的股票代…

茫茫碌碌的日子
一连很好多天,都在为公司数据库基础构架升级的事情忙活着。升级的事情还是比较棘手的。需要升级硬件服务器,相关的存储,操作系统,数据库产品,涉及面非常多。当然烦心的事情就很多。作为线上生产系统,升级和…
Python PK C++,究竟谁更胜一筹?
作者 | Farhad Malik译者 | 弯月,编辑 | 屠敏来源 | CSDN(ID:CSDNnews)在编程生涯的早期阶段,我参与过一款C数学优化应用程序的开发,这个程序对性能的要求很高。至今我依然记得那段艰难的经历。在那个项目中…

oracle--查看表空间大小以及修改表空间大小
为什么80%的码农都做不了架构师?>>> 一.修改表空间大小 解决以上问题的办法:通过增大表空间即可解决,如下: Sql代码 使用dba用户登陆 sqlplus / as sysdba; 执行如下命令: SQL >…
同步、异步、堵塞、非堵塞和函数调用及I/O之间的组合概念
在我们工作和学习中,经常会接触到“同步”、“异步”、“堵塞”和“非堵塞”这些概念,但是并不是每个人都能将它们的关系和区别说清楚。本文将对这些基本概念进行讨论,以期让大家有更清楚的认识。(转载请指明出于breaksoftware的c…
“抗击”新型肺炎!阿里达摩院研发AI算法,半小时完成疑似病例基因分析
利用技术辅助抗击疫情,阿里巴巴、百度等科技巨头各显身手。此前,AI科技大本营采访报道了阿里达摩院《数十名工程师作战5天,阿里达摩院连夜研发智能疫情机器人》一文,后者为了解决客服人力不足的局面,快速响应政府需求开…

反编译工具jad简单用法
反编译工具jad简单用法 下载地址:[url]http://58.251.57.206/down1?cidB99584EFA6154A13E5C0B273C3876BD4CC8CE672&t2&fmt&usrinput[/url]反编译工具jad &dt2002000一. 不用安装,只要解压就行(有这样两个文件jad.exe&#x…
ubuntu 系统设置bugzilla制
随着时间的推移。在大脑中形成的记忆总会慢慢的淡去。人的记忆力就是这样。所以最好的办法就是形成博客去记录下来,一方面给自己以后回想用。一方面也算是自己的一个积累。所以一旦选择了一个行业,最好不要轻 易转行,由于非常多知识须要不断的…
静态分析C语言生成函数调用关系的利器——cflow
除了《静态分析C语言生成函数调用关系的利器——calltree》一文中介绍的calltree,我们还可以借助cflow辅助我们阅读理解代码。(转载请指明出于breaksoftware的csdn博客) cflow的说明和安装cflow是一款静态分析C语言代码的工具,通过…
我在MongoDB年终大会上获二等奖文章:由数据迁移至MongoDB导致的数据不一致问题及解决方案...
作者 | 上海小胖来源 | Python专栏(ID:xpchuiit)故事背景企业现状2019年年初,我接到了一个神秘电话,电话那头竟然准确的说出了我的昵称:上海小胖。我想这事情不简单,就回了句:您好,我是小胖&…

注意String.Split的几个重载形式
String.Split应该是经常用到的一个函数了,经常的有下面两种形式 public string[] Split(char[] separator, StringSplitOptions options); public string[] Split(string[] separator, StringSplitOptions options); 1. 多数情况下我们会使用第一种,代码里可能这…

如何让猎头找到你
如何让猎头找到你

libev源码解析——总览
libev是个非常优秀的基于事件的循环库,很多开源软件,比如nodejs就是使用其实现基础功能。本系列将对该库进行源码分析。(转载请指明出于breaksoftware的csdn博客) 不知道是被墙了还是网站不再维护,它的官网(…
GPT-2仅是“反刍”知识,真正理解语言还要改弦更张
作者 | Gary Marcus译者 | 泓技编辑 | 夕颜出品 | AI科技大本营(ID:rgznai100)【导读】OpenAI的GPT-2正被广泛地讨论,无论是《纽约客》还是《经济学人》,我们都能看到有关它的话题。关于自然和人工智能,它想…

sap business one 笑谈
Sap Business .e 出生在以色列,生下来的时候父母给起了个小名叫SBO,据说他的亲生父母是SAP家庭里的一个重要成员,后来SAP家族里的长老认为SBO长得不错,挺好看的。毕竟SAP家族里生下来的儿子都是胖胖的,想要个瘦点长相好…

来51学院的第一天
【来51学院的第一天】转载于:https://blog.51cto.com/10801189/1703279
libev源码解析——监视器(watcher)结构和组织形式
在《libev源码解析——总览》中,我们介绍了libev的一些重要变量在不同编译参数下的定义位置。由于这些变量在多线程下没有同步问题,所以我们将问题简化,所提到的变量都是线程内部独有的,不用考虑任何多线程问题。(转载…

《评人工智能如何走向新阶段》后记(再续16)
由AI科技大本营下载自视觉中国181.5种常见的机器学习方法。 (1)线性回归linear regression: 一种流行的回归算法,从样本特征的线性组合,linear combination中学习模型。 (2)负数几率回归,logis…

怎么样才能快速的把淘宝店铺推广出去
我来到淘宝近一个月了,目前顺利地得到了两颗心心.感触颇多.其中店铺的推广显得尤其重要,应很多淘友的提问,我把一些店铺推广技巧介绍如下,你如果觉得有益,就回一下贴,以示支持.在这里先谢谢了!先看第一板斧:一、修练内功ÿ…

linux的ftp服务器
2019独角兽企业重金招聘Python工程师标准>>> ftp服务器在网上较为常见,Linux ftp命令的功能是用命令的方式来控制在本地机和远程机之间传送文件,这里详细介绍Linux ftp命令的一些经常使用的命令,相信掌握了这些使用Linux 进行ftp操…

使用Forms Authentication实现用户注册、登录 (二)用户注册与登录
从这一部分开始,我们将通过一个实际的完整示例来看一下如何实现用户注册与登录。在介绍注册与登录之前,我们首先介绍一下如何判断用户是否已登录,并未后面的示例编写一些基础代码。 判断用户是否已经登录首先,在Web站点项目中添加…
libev源码解析——调度策略
在《libev源码解析——监视器(watcher)结构和组织形式》中介绍过,监视器分为[2,-2]区间5个等级的优先级。等级为2的监视器最高优,然后依次递减。不区分监视器类型和关联的文件描述符的值,权限高的要优先于权限低的执行…
特斯拉AI团队招兵买马:“英雄不问出处”
2月3日,特斯拉创始人兼CEO埃隆•马斯克发布推特,贴出了Autopilot AI团队招聘人才的信息。马斯克在推特中表示,特斯拉AI团队将直接向马斯克回报,他几乎每天都会与团队保持沟通和交流,并透露团队base在德州奥斯汀。据特斯…