C/C++
文章平均质量分 52
ndzjx
喜欢编程
展开
-
C语言写个计算器
整体思路:1. 格式化:(1)在符号前加0 (2)去掉空格2. 检查 (1)检测左右括号的两边是否合法3. 解析 (1)将输入的字符串分解到结构体数组中4. 计算 遍历结构体数组,数字入数字栈,符号入符号栈,按照优先级表进行运算。stack.h#ifndef STACK_H#define STACK_Htypedef float eletype;typedef struct{ eletype *buf; int top; ...原创 2021-12-19 19:10:38 · 634 阅读 · 0 评论 -
boost::asio——Timer定时器
转载自:https://blog.csdn.net/yockie/article/details/40386145先跟着boost文档中asio章节的指南中的几个例子学习一下使用:1.Timer.1 - 使用同步定时器先完整介绍一下,后面的例子该省略的就省略了。所有的Asio类只要简单的包含"asio.hpp"头文件便可使用:#include <boost/asio.hpp>因为本程序中使用了定时器,我们需要包含相应的的Boost.Date_Time...转载 2020-12-23 12:03:15 · 3853 阅读 · 4 评论 -
TCP协议端口状态说明:CLOSE-WAIT、TIME-WAIT 、LISTENING、SYN_SENT、ESTABLISHED、LAST-ACK ...
了解TCP协议端口的连接状态,对排除和定位网络或系统故障会有很大帮助,因此了解一下是有必要的:一、LISTENING 提供某种服务,侦听远方TCP端口的连接请求,当提供的服务没有被连接时,处于LISTENING状态,端口是开放的,等待被连接。二、SYN_SENT (客户端状态) 客户端调用connect,发送一个SYN请求建立一个连接,在发送连接请求后等待匹配的连接请求,此时状态为SYN_SENT.三、SYN_RECEIVED (服务端状态) 在收到和发送一个连接请求后,等待.转载 2020-07-13 20:49:30 · 1346 阅读 · 0 评论 -
linux dll 调用
// r.c#include <stdio.h>// gcc -shared r.c -o r.so -m32char* a(double d) { printf("r.c: %f\n", d * d); return "hello";}// runso.c#include <stdio.h>#include <dlfcn.h...原创 2020-01-03 19:59:12 · 2758 阅读 · 0 评论 -
打印符号表
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <link.h>#include <sys/mman.h>#include <sys/stat.h>#include <fcntl.h>#include...转载 2019-11-12 15:47:35 · 580 阅读 · 0 评论 -
读取ELF文件
/* elfparse.c - gcc elfparse.c -o elfparse */#include <stdio.h>#include <string.h>#include <errno.h>#include <elf.h>#include <unistd.h>#include <stdlib.h>#...原创 2019-11-12 15:42:55 · 794 阅读 · 0 评论 -
linux子进程知道父进程退出的解决方案
在实际开发中难免会处理进程间的关系,最常见的是父子进程的相互监督。父进程等待子进程,或者自进程知道父进程运行是否结束,以方便释放资源。一、关于进程进程是操作系统进行资源分配和调度的基本单位。linux系统使用fork创建进程,进程pid 0是swapper进程,进程pid 1是init进程,init进程是所有普通用户进程的父进程。fork在 <unistd.h>文件中定义...转载 2019-10-15 13:44:51 · 1017 阅读 · 0 评论 -
编程之美1:CPU打印直线,曲线
原创:https://blog.csdn.net/ndzjx/article/details/844042681:本质:每次循环的CPU比例问题。CPU调度时间片,大约为20ms2.2GHz是CPU时钟周期,= 22亿次 = 2.2*10^9每个时钟周期平均执行2条汇编指令#include <stdio.h>#include <windows.h>...原创 2018-11-23 22:05:16 · 291 阅读 · 0 评论 -
大规模C++程序设计 8,9,10逻辑设计问题
原创 2018-05-07 13:06:52 · 175 阅读 · 0 评论 -
大规模C++程序设计 7包
原创 2018-05-07 13:06:17 · 185 阅读 · 0 评论 -
大规模C++程序设计 6隔离 编译时依赖
原创 2018-05-07 13:05:44 · 758 阅读 · 0 评论 -
大规模C++程序设计 5层次化
原创 2018-05-07 13:05:08 · 437 阅读 · 0 评论 -
大规模C++程序设计 4物理层
原创 2018-05-07 13:04:37 · 179 阅读 · 0 评论 -
大规模C++程序设计 3组件
原创 2018-05-07 13:03:30 · 229 阅读 · 0 评论 -
大规模C++程序设计 1,2基本规则
原创 2018-05-07 13:02:50 · 183 阅读 · 0 评论 -
C++ 内连接外链接的问题
一:组件组件:一个组件恰好由一个.h和一个.c文件组成,组件是自我包含的、内聚的、潜在可重用的设计单位。各自的作用?以此为基础,研究内外连接,以规范平时写代码的规范。二:思考思考 static extern的区别?内连接、外链接。内外连接的判断标准。 检测:外部定义一样的东西,看看是否冲突。三:举例1:数据2:函数 (1)见程序(2)项目中的const文件 抢答:不同的.c可...原创 2018-05-10 08:47:08 · 333 阅读 · 1 评论 -
加快C++代码的编译速度方法
C++代码一直以其运行时的高性能高调面对世人, 但是说起编译速度,却只有低调的份了。比如我现在工作的源代码,哪怕使用Incredibuild调动近百台机子,一个完整的build也需要四个小时,恐怖!!!虽然平时开发一般不需要在本地做完整的build,但编译几个相关的工程就够你等上好一段时间的了(老外管这个叫monkey around,相当形象)。想想若干年在一台单核2.8GHZ上工作时的场景转载 2017-11-13 16:44:44 · 2046 阅读 · 0 评论 -
思维会骗人,程序不骗人。
来自:http://blog.csdn.net/ndzjx/article#include using namespace std;int nCount = 10;int nBegin = 5;int nEnd = nBegin + nCount;int narr[25] = { 1, 13, 3, 5, 8, 9, 2, 4, 13,原创 2017-09-07 15:23:28 · 288 阅读 · 0 评论 -
编程之美2:程序只用一个字节变量,打印将帅位置
原创:https://blog.csdn.net/ndzjx/article/details/84404320#include <stdio.h>#include <windows.h>#include <time.h>#include <math.h>int main(){// BYTE i = -1;// w...原创 2018-11-23 22:08:52 · 158 阅读 · 0 评论 -
编程之美3:求二进制数中1的个数
1:int Count(BYTE v){ int num = 0; while (v) { if (v % 2 == 1) { num++; } v = v / 2; } return num;}//-------------------------------...原创 2018-11-23 22:10:34 · 157 阅读 · 0 评论 -
wcout 中文输出问题
转载自:https://www.xuebuyuan.com/1730068.html【不设置全局本地化环境时】 在VS2005下用C/C++写程序,如果程序没有调用setlocale函数设置本地化环境,则cout,printf都能正常的输出中文。然而,所有涉及宽字节串和多字节串的中文相互转换的功能都将以失败告终,比如:调用wcstombs函数或mbstowcs,或者使用了间接...转载 2019-09-17 12:04:33 · 1727 阅读 · 0 评论 -
GCC在C语言中内嵌汇编 asm __volatile__
还可以参考:https://www.cnblogs.com/fanzhidongyzby/p/3654855.html在内嵌汇编中,可以将C语言表达式指定为汇编指令的操作数,而且不用去管如何将C语言表达式的值读入哪个寄存器,以及如何将计算结果写回C 变量,你只要告诉程序中C语言表达式与汇编指令操作数之间的对应关系即可, GCC会自动插入代码完成必要的操作。1、简单的内嵌汇编例:...转载 2019-04-05 11:03:07 · 223 阅读 · 0 评论 -
auto_ptr
template<class T>class auto_ptr{public: explicit auto_ptr(T *p = 0): pointee(p) {} template<class U> auto_ptr(auto_ptr<U> &rhs): pointee(rhs.release()) {} ~a...原创 2019-03-06 11:18:43 · 154 阅读 · 0 评论 -
编程之美11:二叉树中节点的最大距离
struct{ NODE *pLeft; Node *pRight; int nMaxLeft; // 左子树中的最长距离 int nMaxRight; // 右子树中的最长距离 char chValue; // 该节点的值};int nMaxLen = 0;// 寻找树中最长的两段距离void FindMaxLen(NODE *pRoo...原创 2018-11-27 11:11:42 · 128 阅读 · 0 评论 -
编程之美10:计算字符串的相似度
我们并不在乎两个字符串变得相等之后的字符串是怎样的,所以1.一步操作之后,再将A[2,…,lenA]和B[1,…,lenB]变成相同的字符串。2.一步操作之后,再将A[1,…,lenA]和B[2,…,lenB]变成相同的字符串。3.一步操作之后,再将A[2,…,lenA]和B[2,…,lenB]变成相同的字符串。int CalculateStringDistance(string s...原创 2018-11-27 11:09:55 · 258 阅读 · 0 评论 -
编程之美9:数组循环位移
1:RightShift(int *arr, int N, int K){ K %= N; while (K--) { int t = arr[N - 1]; for (int i = N - 1; i > 0; i--) { arr[i] = arr[i - 1]; } ...原创 2018-11-23 22:34:38 · 163 阅读 · 0 评论 -
编程之美8:求数组的子数组之和的最大值
1:int MaxSum(int *A, int n){ int maximum = -INF; int sum; for (int i = 0; i < n; i++) { sum = 0; for (int j = i; j < n; j++) { sum += A[j];...原创 2018-11-23 22:32:53 · 313 阅读 · 0 评论 -
编程之美7:最大公约数
1:辗转相除法f(x,y) = f(y, x%y);int gcd(int x, int y){ return (!y) ? x : gcd(y, x % y);}2:对于大整数,取模运算非常昂贵。f(x, y) = f(x-y, y);BigInt gcd(BigInt x, BigInt y){ if (x < y) { ...原创 2018-11-23 22:30:58 · 191 阅读 · 0 评论 -
编程之美6:十进制 1到N,之间出现1的个数
1:ULONGLONG Count1InAInteger(ULONGLONG n){ ULONGLONG iNum = 0; while (n != 0) { iNum += (n % 10 == 1) ? 1 : 0; n /= 10; } return iNum;}ULONGLONG f(ULONGLONG n...原创 2018-11-23 22:23:50 · 223 阅读 · 0 评论 -
编程之美5:找一堆ID中,数量超过一半的那个ID
排序费时间,不用排序的方法如下:(如果每次删除2个不同的ID)Type Find(Type *ID, int N){ Type candidate; int nTimes, i; for (i = nTimes = 0; i < N; i++) { if (nTimes == 0) { candid...原创 2018-11-23 22:18:57 · 159 阅读 · 0 评论 -
编程之美4:阶乘相关
1)N!末尾有多少个零N! = K * 10^MN! = 2^X * 3^Y * 5^ZM = min(X,Z) 其中X >= Z,因为能被2整除的数出现的频率比能被5整除的数高很多。于是只需计算因式分解中5的指数。1:ret = 0;for (int i = 1; i <= N; i++){ j = i; while (j % 5 == 0) ...原创 2018-11-23 22:14:32 · 345 阅读 · 0 评论 -
不允许 dllimport 静态数据成员
dll.proTEMPLATE = libCONFIG += dllCONFIG -= app_bundleDESTDIR = ../../Release/BinDEFINES += MYDLL_LIBSOURCES += \ a.cppHEADERS += \ a.ha.h#ifdef MYDLL_LIB#de原创 2017-08-28 19:07:01 · 729 阅读 · 0 评论 -
读者写者的 死锁问题 初探
我前面的一篇讲读者写者模型的文章中,细心的读者会发现 我在“读者优先” 的代码中写了个“死锁?”两个字,为什么呢?你运行就发发现:分别两个读者写者,两个函数都是While(true),不明白怎么就会莫名其妙的结束。结束时的 循环次数还不一定, 结束也是偶然现象,(我这里比较普遍发生)很奇怪,但细思逻辑,没有发现死锁的情况,那么是怎么回事?1.我以为是ma原创 2017-08-21 11:03:13 · 928 阅读 · 1 评论 -
C++primer知识点(二)
十六:IO操作 IO对象无拷贝和赋值,只能引用传递,并且不能是const 函数good() 所有错误位都没置位的情况下返回true;fail() 一般用作流使用的条件(failbit,badbit)eof()和bad()只表示特定的错误。 例如:将failbit和badbit复位,但eofbit不变cin.clear(cin.rdstate() &~cin.fa原创 2016-05-14 19:31:36 · 2917 阅读 · 0 评论 -
机器cpu与内存配置的获取
//读注册表bool getCpu(string &cpu) { HKEY hKey; DWORD dwRet; char tcPath[MAX_PATH] = {0}; DWORD dwLen = MAX_PATH * sizeof(char); dwRet = RegOpenKeyA(HKEY_LOCAL_MACHINE,"HARD原创 2016-06-28 15:15:12 · 417 阅读 · 0 评论 -
拷贝构造函数的一个对象访问私有成员的问题
最近遇到这样一个面试题:面试题 CString函数拷贝控制成员的编写过程中遇到一个问题,真是当时让我疑惑不解:查查资料,原来是一时糊涂,看看人家的解答:不错,遂转一下(很简单,就是当时没转过弯来) 原文如下:http://blog.csdn.net/randyjiawenjie/article/details/6667146 这个题目很奇怪啊,今天下午在看拷贝构造函数的时候转载 2016-05-29 19:42:36 · 880 阅读 · 0 评论 -
C++primer知识点(五)(终结C++primer)
二十七:(1)异常使我们能将问题的检测和解决分离开来。当匹配不到catch时,将调用标准库函数terminate(当异常没有被捕获)异常对象:编译器使用异常抛出表达式来对异常对象进行拷贝初始化,因此throw表达式必须拥有完全类型(只是声明如class A;不是完全类型),如果是类类型的话,相应的类必须含有一个可访问的析构函数和一个可访问的拷贝或移动构造函数。 静态类型原创 2016-05-14 19:45:25 · 3490 阅读 · 0 评论 -
C++primer知识点(四)
二十四:面向对象(1)数据抽象:接口实现分离。 继承:定义相似的类型 多态:以统一的方式使用。(【父类】引用或指针调用虚函数 实现多态【动态绑定】) 如果表达式也不是引用,也不是指针,则动态类型永远与静态类型一致。 virtual 在基类函数中说明,子类的相同函数默认都是virtual 子类参数列表(const/引原创 2016-05-14 19:39:41 · 3178 阅读 · 0 评论 -
C++primer知识点(三)
二十二:1:拷贝控制操作拷贝构造函数,拷贝赋值运算符,移动构造函数,移动赋值运算符,析构函数。这些,在类的数据成员都能默认构造,拷贝,复制,销毁时,编译器默认都会有合成的版本。(1) 拷贝构造函数:Foo(const Foo&);第一个参数是自身类类型的引用,额外的参数都有默认值。几种情况下会被隐式使用,所以,不能是explicit 默认拷贝构造函数,又叫原创 2016-05-14 19:36:47 · 3352 阅读 · 0 评论 -
C++primer知识点(一)
一:g++c1.cpp -o c1.exe -std=c++11 c++11,加入了int a = {10},的初始化形式,如果有精度损失,那么会有警告。 二:对:const int引用= int //const 只是针对自己来说的错:int 引用 = constint //不符合逻辑与语法,引用不是常量,说明可以改,但引用的却是常量,矛盾了。原创 2016-05-14 19:24:57 · 3073 阅读 · 0 评论