- 博客(71)
- 资源 (16)
- 收藏
- 关注
转载 Pythonic 之更优雅的 Python(二)
我们都知道,Python 的设计哲学是「优雅」、「明确」、「简单」。这也许很多人选择 Python 的原因。但是我收到有些伙伴反馈,他写的 Python 并不优雅,甚至很臃肿,那可能是你的姿势不对哦!今天就给大家带来 Python 语句的十大优雅之法。为多个变量赋值有时,有多个变量需要赋值,这时你会怎么赋值呢?常规方法:常规方法是给变量逐个赋值。 123...
2020-03-30 21:36:15 145
转载 Pythonic 之更优雅的 Python(一)
Python 这门语言最大的优点之一就是语法简洁,好的代码就像伪代码一样,干净、整洁、一目了然。但有时候我们写代码,特别是 Python 初学者,往往还是按照其它语言的思维习惯来写,那样的写法不仅运行速度慢,代码读起来也费尽,给人一种拖泥带水的感觉,过段时间连自己也读不懂。《计算机程序的构造和解释》的作者哈尔·阿伯尔森曾这样说:“Programs must be written for peo...
2020-03-30 21:33:44 185
原创 人生不得不面对的八大灵魂拷问:
人生不得不面对的八大灵魂拷问:门卫:你是谁?滴滴司机:你有没有搞清自己的定位?理发师:你自己照照镜子,觉得行吗?食堂阿姨:你要饭吗?配钥匙师傅:你配吗?算命先生:你算什么东西?快递小哥:你是什么东西?上海分拣垃圾阿姨:你是什么垃圾? ...
2020-03-27 16:07:17 830
原创 gdb调试进阶
1.1.1 断点commands高级功能大多数时候需要在断点处执行一系列动作,gdb提供了在断点处执行命令的高级功能commands。[](javascript:void(0)????#include <stdio.h>int total = 0;int square(int i){ int result=0; result = i*i; retu...
2020-03-27 15:48:22 504
原创 Address Sanitizer(Asan)原理及实战定位
AsanASAN(AddressSanitizer的缩写)是一款面向C/C++语言的内存错误问题检查工具,可以检测如下内存问题:使用已释放内存(野指针)堆内存越界(读写)栈内存越界(读写)全局变量越界(读写)函数返回局部变量内存泄漏ASAN工具主要由两部分组成:编译器插桩模块运行时库运行时库:(libasan.so.x)会接管malloc和``free函数。mal...
2020-03-27 15:10:55 32947
原创 gdb调试core文件
部分ref :https://cloud.tencent.com/developer/article/11774421.core文件当程序运行过程中出现Segmentation fault (core dumped)错误时,程序停止运行,并产生core文件。core文件是程序运行状态的内存映象。使用gdb调试core文件,可以帮助我们快速定位程序出现段错误的位置。当然,可执行程序编译时应加上-...
2020-03-27 15:07:26 1327
原创 C/C++内存检查原理
一、影子内存(shadow memory)比例+偏移的映射算法二、插桩(instrumentation)三、专用版内存函数内存问题在 C/C++ 程序中十分常见,比如缓冲区溢出,使用已经释放的堆内存,内存泄露等。程序大了以后,查找起来又特别的难。即使我们在写程序时非常的仔细小心,代码一多,还是难以保证没有问题。内存问题除了造成程序崩溃引发意外,也很容易被当做漏洞...
2020-03-27 12:21:55 1606
转载 单独说说const关键字
const是C++ 中常用的类型限定符,但我在工作中却发现,许多人使用它仅仅是想当然,这样有时也会用对,但在某些微妙的场合,可就没有那么幸运了。究其实质原由,大多因为没有搞清const 类型限定符的本质。这里我将对const 类型限定符进行一个分析,溯其本源究其本质,希望对大家理解const 有所帮助。C++中为什么要引入 constC++ 的作者当初是出于怎样的目的...
2020-03-27 11:21:46 119
转载 老码农的「锦囊」:10个编程技巧、5个纠错步骤,让你的编程之路少点坎坷
善始者实繁,克终者盖寡,这句话用来学习编程的过程也很合适。在成为顶尖选手之前,总会遇到很多困难,甚至想放弃。本文作者 Jeff Hale 是 Medium 社区中非常有名的人工智能和技术领域的专栏作家。在这篇文章里,他给所有的编程者提供了 10 个真诚而且实用的建议以及快速解决编程错误的5个步骤。在我下决心将编程进行到底之前,大概经历了四次放弃又捡起的过程,而且我观察了一些数据科学的学生...
2020-03-26 21:42:53 373 3
转载 linux 进程间通信-信号量
简介代码临界区在多个程序共享资源的情况下, 常常会因为多个程序同时访问一个共享资源而引发一系列问题。为了防止这一问题, 引入了代码临界区的概念。代码临界区是指操作系统在处理时不可分割的代码。在上述情况下, 即指: 在任一时刻, 只能有一个程序访问临界区并执行代码。信号量提供了这样一种访问机制。简单来说, 信号量的功能就是用来协调进程对共享资源的访问。工作原理程序对信号量 s 的访问都是...
2020-03-26 21:20:18 336
转载 modern-cpp 现代 C++ 教程:高速上手 C++ 11/14/17/20
第 1 章 迈向现代 C++编译环境:本书将使用 clang++ 作为唯一使用的编译器,同时总是在代码中使用 -std=c++2a 编译标志。> clang++ -vApple LLVM version 10.0.1 (clang-1001.0.46.4)Target: x86_64-apple-darwin18.6.0Thread model: posixInstalledDi...
2020-03-26 20:22:00 2854
原创 gdb init配置文件的使用(2)
使用gdb调试大型C++程序的时候,经常遇到的场景是反复调试某个bin/out,简单修改再编译调试,因此每次进入gdb后重复执行某些操作很麻烦(如打多个断点),这时就可以用gdb命令脚本了,它能够很好的完成这些工作。以设置多个断点为例,我写的命令脚本为[dev@szvphicprd90255 linux_output]$ cat ~/.gdbinit#filename: .gdbinit#...
2020-03-26 16:43:01 4157
转载 CMake 入门实战---转自hahack,强烈推荐
另外几个英文教程推荐https://preshing.com/20170522/learn-cmakes-scripting-language-in-15-minutes/https://www.johnlamp.net/cmake-tutorial.htmlhttps://juejin.im/post/5dd3a4826fb9a0202779278a从实例入手,讲解 CMa...
2020-03-26 15:26:24 377
转载 【转】C++构建系统的选择
C++少说也用了十年了,从简单的Hello World到200万行的游戏项目,编译和构建的工具也经历了各种升级。最终的开发环境,选择了Clang+GDB+CMake。当然不断改进和升级开发工具的脚步尚未停止,只要能提高开发效率,怎样折腾都是值得的。期间经历了:直接调用编译和链接命令 使用Makefile 使用CMake 不断尝试其他构建系统,如:b2、WAF、SConsC++构...
2020-03-26 15:12:49 332
转载 GDB (中文速查表) CHEATSHEET
##############################################################################GDB CHEATSHEET (中文速查表) - by skywind (created on 2018/02/20)Version: 8, Last Modified: 2018/02/28 17:13https://github....
2020-03-26 14:53:29 1500
转载 GIT中文速查表 CHEATSHEET
##############################################################################GIT CHEATSHEET (中文速查表) - by albertwang21 (created on 2019/09/16)Version: 1, Last Modified: 2019/09/16 18:00https://gi...
2020-03-26 14:52:06 565
转载 Gcc 编译的背后(2)链接
链接简述重定位是将符号引用与符号定义进行链接的过程。因此链接是处理可重定位文件,把它们的各种符号引用和符号定义转换为可执行文件中的合适信息(一般是虚拟内存地址)的过程。链接又分为静态链接和动态链接,前者是程序开发阶段程序员用 ld(gcc 实际上在后台调用了 ld)静态链接器手动链接的过程,而动态链接则是程序运行期间系统调用动态链接器(ld-linux.so)自动链接的过程。比如,如果...
2020-03-25 21:36:05 533
转载 Gcc 编译的背后(1)编译及汇编
Gcc 编译的背后前言预处理简述打印出预处理之后的结果在命令行定义宏编译(翻译)简述语法检查编译器优化生成汇编语言文件汇编简述生成目标代码ELF 文件初次接触ELF 文件的结构三种不同类型 ELF 文件比较ELF 主体:节区汇编语言文件中的节区表述链接简述可执行文件的段:节区重排链接背后的故事用 ld 完成链接过程C++ 构造与析构:crtbegi...
2020-03-25 21:35:02 580
转载 Linux中gcc,g++常用编译选项
更全面的编译选项手册:http://www.shanghai.ws/gnu/gcc_1.htmhttps://manpages.debian.org/jessie/manpages-zh/gcc.1.zh_CN.html#%E8%AD%A6%E5%91%8A_(WARNING)-x language filename 设定文件所使用的语言,使后缀名无效,对以后的多个有效.也就是根据约定,...
2020-03-25 20:47:25 155
转载 【转自猫大】宏定义的黑魔法 - 宏菜鸟起飞手册
宏定义在C系开发中可以说占有举足轻重的作用。底层框架自不必说,为了编译优化和方便,以及跨平台能力,宏被大量使用,可以说底层开发离开define将寸步难行。而在更高层级进行开发时,我们会将更多的重心放在业务逻辑上,似乎对宏的使用和依赖并不多。但是使用宏定义的好处是不言自明的,在节省工作量的同时,代码可读性大大增加。如果想成为一个能写出漂亮优雅代码的开发者,宏定义绝对是必不可少的技能(虽然宏本身可能...
2020-03-25 20:36:56 401
转载 CMake Cookbook中文手册
前言我们日常生活的每一个方面都有计算机软件的存在:它可以为我们触发的闹钟,并每时每刻的为我们提供通信、银行、天气、公交、日历、会议、旅行、相册、电视、音乐流、社交媒体、晚餐和电影预定等服务信息。软件内部具有一定的层次结构:应用程序是基于框架构建,框架基于开发库,开发库使用更小的库或可执行文件,当然还有更小的组件。开发库和可执行文件通常需要使用源代码进行构建。我们通常只看到最外层,但软件内部需要...
2020-03-25 17:12:42 7941
转载 UML对象建模--依赖与关联之区别
只要存在对象间的交互,无论是控制的还是数据的,两者之间就存在依赖。我们现在说的依赖,它是比关联更弱的关系。依赖是对象间短暂的一种关系,在这个短暂的关系中,被调用类表现为调用类的局部变量、方法的参数、以及调用类调用被调用类的静态方法,在这些情况下,我们说调用类和被调用类之间就属于依赖关系。关联是对象间长期的一种关系,在这个长期的关系中,被调用类表现为调用类的引用、或者调用类的属性,在...
2020-03-25 13:10:29 831
转载 【系列】浅析C++11新特性-转自王书博
吐血整理C++11新特性本文整理一些C++11的新特性,欢迎补充。auto关键字在C++11之前,auto关键字用来指定存储期。在新标准中,它的功能变为类型推断。auto现在成了一个类型的占位符,通知编译器去根据初始化代码推断所声明变量的真实类型。各种作用域内声明变量都可以用到它。例如,名空间中,程序块中,或是for循环的初始化语句中。auto i = 42; // i is...
2020-03-25 13:06:55 272
转载 C++11 之 override
1 公有继承 公有继承包含两部分:一是"函数接口"(interface),二是"函数实现"(implementation) 如 Shape 类中,三个成员函数,表示三种继承方式:class Shape {public: virtual void Draw() const = 0; // 1) 纯虚函数 virtual void Error...
2020-03-25 13:00:16 182
转载 c语言 宏和其他预处理
总结 https://www.w3cschool.cn/c/c-preprocessors.html 枚举和宏其实非常类似:宏在预处理阶段将名字替换成对应的值,枚举在编译阶段将名字替换成对应的值。我们可以将枚举理解为编译阶段的宏。 可以gcc 的 -E 来展开宏定义 反斜杠 但是在宏定义时,如果多条语句,则必须加反斜杠,如 #defi...
2020-03-25 11:52:44 175
转载 enum与int的相互转换
如何正确理解enum类型?例如:enum Color { red, white, blue};Color x;我们应说x是Color类型的,而不应将x理解成enumeration类型,更不应将其理解成int类型。我们再看enumeration类型:enum Color { red, white, blue};(C程序员尤其要注意!)理解此类型的最好的方...
2020-03-25 11:36:56 1435
转载 Linux ELF
# 1.5.3 Linux ELF一个实例elfdemo.oELF 文件结构参考资料一个实例在 1.5.1节 C语言基础 中我们看到了从源代码到可执行文件的全过程,现在我们来看一个更复杂的例子。#include<stdio.h>int global_init_var = 10;int global_uninit_var;void func(int su...
2020-03-24 22:41:31 453
转载 gdb 组成架构基本工作原理
gdb 的组成架构[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-boaPla8Z-1585060540316)(…/pic/2.3.1_gdb.png)]gdb 基本工作原理gdb 通过系统调用 ptrace 来接管一个进程的执行。ptrace 系统调用提供了一种方法使得父进程可以观察和控制其它进程的执行,检查和改变其核心映像以及寄存器。它主要用来实现断点调...
2020-03-24 22:37:27 878
转载 从源代码到可执行文件
从源代码到可执行文件我们以经典著作《The C Programming Language》中的第一个程序 “Hello World” 为例,讲解 Linux 下 GCC 的编译过程。#include <stdio.h>main(){ printf("hello, world\n");}$gcc hello.c$./a.outhello world以上过程可...
2020-03-24 18:13:38 146
转载 [转]C++ explicit关键字详解
单参数构造函数单参数构造函数作为隐含的类型转换符号C++中,一个参数的构造函数(或者除了第一个参数外其余参数都有缺省值的多参构造函数),承担了两个角色。用于构建单参数的类对象隐含的类型转换操作符.例如一个类A的构造函数A(int i)就是,既可以用来作为构造器,又可以实现隐式转换A a=1;因为1可以通过构造函数A(int i)转换为一个类A的对象。#include <...
2020-03-24 18:00:51 140
转载 c语言static关键字的理解
static一、概述在c语言中static恰当的使用能让程序更加完美,细节上的严谨,代码会更好,也更利于程序的维护与扩展。而static使用灵活,且又有两种完全无关的用法,所以整理总结一下。二、static的两种用法:1、static修饰局部变量,成为一个局部静态变量。2、static修饰全局变量与函数,成为静态全局变量与静态函数。三、相关涉及概念 可能会疑...
2020-03-24 16:16:07 181
转载 C++学习路线必读4本书
导读书籍是人类进步的阶梯。学习语言也是一样,一味的看学习视频其实效率真的不高。只有踏踏实实的看书,不仅可以提高自己学习能力,还可以提升成就感。其实我觉得小伙伴在看我的文章的时候,可能其实心中已经有了答案,但是还是不太确定。什么入门,进阶,高级的书籍一大堆。其实到底哪一个适合自己的。心中也许会有疑问,这些书我都需要读吗?这么多我啥时候读完啊。而且技术的书籍价格普遍也比较贵。也正是因为这些劝退了...
2020-03-24 10:09:31 724
转载 机器学习知识概念方法论普及
转自:https://blog.csdn.net/mind_programmonkey/article/details/104318031你不得不了解的机器学习知识1.什么是机器学习?(1)机器学习、深度学习、人工智能是什么关系?机器学习包含了很多种不同的算法,深度学习就是其中之一,其他方法包括决策树,聚类,贝叶斯等。深度学习的灵感来自大脑的结构和功能,即许多神经元的互连。人工神经网...
2020-03-24 10:05:33 456
转载 gdb init配置文件的使用(1)
当 GDB(即 GNU Project Debugger)启动时,它在当前用户的主目录中寻找一个名为 .gdbinit 的文件;如果该文件存在,则 GDB 就执行该文件中的所有命令。通常,该文件用于简单的配置命令,如设置所需的缺省汇编程序格式(Intel® 或 Motorola)或用于显示输入和输出数据的缺省基数(十进制或十六进制)。它还可以读取宏编码语言,从而允许实现更强大的自定义。该语言遵循如...
2020-03-24 09:54:08 1911
转载 【转】这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦!走起!????NO、1 ScreenToGif屏幕,摄像...
2020-03-24 09:48:43 474
转载 back-end 后端开发面试题
===================转载自:https://github.com/chankeh/cpp-backend-reference#后端开发面试知识点大纲:##语言类(C++):###关键字作用解释:volatile作用Volatile关键词的第一个特性:易变性。所谓的易变性,在汇编层面反映出来,就是两条语句,下一条语句不会直接使用上一条语句对应的volatile变量的寄存...
2020-03-23 22:44:14 1154
转载 Git 从入门到轻松玩转的秘密!
作者|Rocky0429来源| Python空间对帅气的我比较关注的读者们可能知道,我最近闲着没事老在 GitHub 上瞎晃,介绍了不少 GitHub上有趣的项目,可能因此提起很多同学对同性交友,阿不,那个GitHub 的兴趣…经过我多次走访调查,综合多方意见(其实就是看了看评论),我发现大家懵圈的地儿主要集中在 2 个方面:GitHub 咋逛?...
2020-03-23 15:56:22 170
转载 玩转Google开源C++单元测试框架Google Test系列(gtest)(总)
转自:https://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html前段时间学习和了解了下Google的开源C++单元测试框架Google Test,简称gtest,非常的不错。 我们原来使用的是自己实现的一套单元测试框架,在使用过程中,发现越来越多使用不便之处,而这样不便之处,gtest恰恰很好的解决了。其实gtest本身的...
2020-03-22 21:46:12 63
转载 搞定正则表达式及常用RE模板
教程参考:微软 Regular Expression Language - Quick Referencehttps://www.jb51.net/tools/zhengze.html常用正则表达式模板很多不太懂正则的朋友,在遇到需要用正则校验数据时,往往是在网上去找很久,结果找来的还是不很符合要求。所以我最近把开发中常用的一些正则表达式整理了一下,在这里分享一下。给自己留个...
2020-03-22 11:35:15 116
原创 C++构造函数体中赋值和列表初始化的差异
初始化和赋值的差异对于类的构造函数,有如下两种形式:第一种是不使用初始化列表的:class B{public: B(const A & item){ _a = item; }; ~B(){};private: A _a;};第二种是使用初始化列表的,形如:class B{public: B(con...
2020-03-22 08:20:04 251
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人