![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
文章平均质量分 77
苏大强太强了
心怀梦想,砥砺前行。
展开
-
Python导包的路径问题
1.问题发现问题背景: 如下是我的文件夹目录,本项目入口文件是main.py,我们只需要关注Util里面的config.py和log.py,和外面的main.py三个文件。问题: python main.py运行代码,main.py中from Util import config,log,没什么问题,但是config.py中import log报模块没找到。两个文件在一个目录下,为什么找不到呢?2.问题解决Python执行文件后,被执行的文件作为根目录,也作为包搜索路径。如图是打印出包路径,是个列原创 2021-03-19 17:37:38 · 2541 阅读 · 1 评论 -
线程的阻抗匹配原则,即线程池开多大的问题
T=C/P 开线程的数量为 CPU数量除计算密集型任务占比 可以上下50%浮动, 如果P太小取订制。 5*C.原创 2020-11-20 11:12:26 · 222 阅读 · 0 评论 -
LRU实现方法
/* * Copyright (c) 2020 wcx * All rights reserved. *//* 关于LRU实现的四种方法: LRU(least recently used最近最久未使用) (1)数组实现,利用时间戳每次删除最大的,但是切换次数多了可能就爆int (2)链表插入删除(每次找到就插入到前面,没有就直接插入) (3) unorder_map+链表 o(1)实现*/#include <bits/stdc++.h>#i原创 2020-09-06 16:08:04 · 1311 阅读 · 0 评论 -
linux的select实例
我用set存储文件描述符,复杂度会更高。如果用vector管理所有文件描述符的话,一个描述符连接关闭删除复杂度较高。用set在Log复杂度删除,感觉更方便一点。复杂度更低的一个思路:开辅助数组/Vector存,再开一个数组存标志位(是否连接)。//复用服务器#include <unp.h>#include <iostream>#include <set&...原创 2020-05-04 12:35:43 · 407 阅读 · 1 评论 -
C++虚表再探
单继承多继承原创 2020-04-26 10:52:13 · 194 阅读 · 0 评论 -
陈硕多线程服务器编程--持续更新
1、https://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777432.html C++中voliate关键字,多线程共享变量用voliate修饰,因为有时候编译器优化,我们取值直接从寄存器中拿来,但是寄存器和内存中这个数据可能不一样,具体例子可以看链接中,所有加voliate修饰,保证每次都是从内存中拿和放。2、weak_ptr不仅仅...原创 2020-04-11 18:10:49 · 425 阅读 · 1 评论 -
shared_ptr循环引用例子
#include <bits/stdc++.h>using namespace std;class A{public: shared_ptr<A> t; ~A(){ cout<<1<<endl; };};int main(){ shared_ptr<A> q(new A()); ...原创 2020-04-11 18:01:02 · 264 阅读 · 0 评论 -
C++线程池实现
直接上代码/* author:wcx date:2020/4/9 task:声明工作结点,声明线程池类。 name:ThreadPool.h*/#ifndef THREADPOOL_H#define THREADPOOL_H#include <iostream>#include <string>#include <queu...原创 2020-04-10 12:48:53 · 306 阅读 · 0 评论 -
C++ Boost库、Muduo库安装
C++网络编程 - Boost::asio异步网络编程 - boost库源码编译安装https://blog.csdn.net/QIANGWEIYUAN/article/details/88792874C++ muduo网络库知识分享 - Linux平台下muduo网络库源码编译安装https://blog.csdn.net/QIANGWEIYUAN/article/details/8902...转载 2020-04-05 23:54:27 · 408 阅读 · 0 评论 -
笔记 --持续更新
1、地址总线,控制总线,数据操作,用于cpu控制内存。系统结构:I/O桥南桥接低速,北桥接高速设备。实际场景:当我们运行一个程序,cpu发中断信号,然后首先把程序读到内存中来。读到内存这一步不需要cpu直接干预,由dma机制(直接内存存取)完成,磁盘控制器通过dma控制器接管总线从磁盘中读数据到内存。2.一开始没有进程的概念,有了中断之后出现分时操作系统。 任务...原创 2020-02-26 20:25:55 · 223 阅读 · 0 评论 -
Weak_ptr实现
前言:循环引用实例:/* @author:wcx @task:shared_ptr循环引用实例*/#include<bits/stdc++.h>using namespace std;struct node{ shared_ptr<node> t;};int main(){ shared_ptr<node> a(n...原创 2020-04-01 10:58:05 · 969 阅读 · 0 评论 -
Shared_ptr简单实现
/* @author:wcx @task:shared_ptr实现*/#include<bits/stdc++.h>using namespace std;namespace P{ template<typename T> class Shared_ptr{ public: Shared_ptr(T *da):...原创 2020-04-01 10:20:33 · 605 阅读 · 5 评论 -
scoped_ptr简单实现
/*scoped_ptr的实现和auto的区别就是,拷贝构造函数声明成了私有的,这样管理权就不会转让了。*/#include<bits/stdc++.h>using namespace std;namespace P{ template <typename T> class Scoped_ptr{ public: Scop...原创 2020-04-01 09:45:32 · 162 阅读 · 0 评论 -
auto_ptr简单实现
/*auto_ptr的实现*/#include<bits/stdc++.h>using namespace std;namespace P{ template <typename T> class Auto_ptr{ public: Auto_ptr(T *da){ s=da; }...原创 2020-04-01 09:38:49 · 172 阅读 · 0 评论 -
malloc的底层实现(ptmalloc)
本文主要介绍了ptmalloc对于内存分配的管理。结合网上的一些文章和个人的理解,对ptmalloc的实现原理做一些总结。内存布局 介绍ptmalloc之前,我们先了解一下内存布局,以x86的32位系统为例: 从上图可以看到,栈至顶向下扩展,堆至底向上扩展, mmap 映射区域至顶向下扩展。 mmap 映射区域和堆相对扩展,直至耗尽虚拟地址空间中的剩余区域,这种结构便于 C...转载 2020-03-29 21:13:18 · 944 阅读 · 0 评论 -
stl_vector源码分析
说明 源代码基于版本gcc 4.8(在linux环境下),和现在用的mingw差不多。 这里先说明下,mingw是个老大爷基于gcc开发的,用在windows平台上,稳定性不算很高(易出bug),同在windows下版本的还有msvc(微软开发的),和gcc版本的stl差别有些大,对于vector开辟空间的逻辑也不同。分析从上到下,根据代码...原创 2020-03-29 10:58:10 · 379 阅读 · 0 评论 -
C++头文件报错,头文件保护符使用
提要C++头文件是为了声明函数,声明变量。注意,是声明。 int a=1;是直接定义了。extern int a; 这是声明,指示编译器这个变量可能在别的文件中被定义,编译器会在符号表中找到定义后填入响应的值。一个项目中一个变量只会有一次定义,多次定义就叫重定义了。丢人的错误 看这个tou.h,我在a.cpp和b.cpp都include了,然后报错,a重定义了...原创 2020-03-27 16:07:39 · 1107 阅读 · 0 评论 -
彻底理解epoll
这篇文章是转载的,关于为什么epoll为什么这么高效,看懂了个大概。文中对select和epoll效率区别描述的总结:select每次执行都要重新把所有描述符加入等待队列(这属实浪费时间,因为epoll事先构建好然后开始wait),且文件描述符有1024的最大限制,这是其内部程序自定义的,你可以改(会影响效率)。select阻塞之后被唤醒,唤醒之后要遍历一遍所有的文件描述符。epoll有水...转载 2020-03-19 09:21:00 · 417 阅读 · 0 评论 -
C/C++程序内存分配
32bit总线可寻址2^32B地址,这是32位系统。上面是高地址空间,下面是低地址空间。1GB的内核空间,3GB的用户空间。内存空间分类(从上到下):内核区域,栈(执行空间),存储映射区(动态链接库等文件映射,malloc调用mmap函数申请大内存),堆(动态申请的空间),BSS段(未初始化的全局变量以及静态变量),数据段(初始化的全局变量),代码段(包含常量字符串(只读)和二进制代码)...原创 2020-03-17 15:44:53 · 225 阅读 · 0 评论 -
C/C++数据对齐简述
就是按照该平台的策略,对数据大小进行扩张等,以增加cpu读取处理速度。在union和struct,class等体现,一般编译器帮你解决(自动扩大),不用显示标注对齐方式。比如这个,char c被安排占了四个字节,如果a是long long类型(8个字节)会输出16,这是根据平台自动设定的,你也可以自己设置。推荐博客:https://www.jb51.net/article/41...原创 2020-03-13 18:30:30 · 158 阅读 · 0 评论 -
linux下gdb调试方法与技巧整理
推荐: https://blog.csdn.net/niyaozuozuihao/article/details/91802994转载 2020-03-08 18:29:05 · 246 阅读 · 0 评论 -
c++简单Web服务器的实现
整体思路:1.建立一个socket。2.创建结构体地址,初始化这个地址为本机地址(“127.0.0.1”)。3.然后把socket和这个地址绑定。(bind函数),因为采用TCP形式通信,所以绑定后为,ip地址+端口号,这里设置的是8888。4.上面创建好的地址是我收东西的地址,我开始监听这个端口(listen)。5.while(1)循环监听,创建一个新的地址,放accept里面可以显...原创 2019-11-21 15:54:43 · 5119 阅读 · 0 评论 -
c++初级项目实例
bz蒟蒻,只是写了一个简单的什么都没有的学生管理系统。界面友好(主要是啥都没,单调到非常友好)。主要可供学习c++逻辑github源代码,给萌新填油!!!...原创 2019-11-19 15:03:05 · 1038 阅读 · 0 评论 -
C++面试题(深拷贝和浅拷贝的区别)
概括的说:浅拷贝是让两个指针指向同一个位置,而深拷贝是让另一个指针自己再开辟空间。#include<bits/stdc++.h>using namespace std;class Student { int name; int* p;public: ~Student() { //cout << p << endl; delete p ; /...原创 2019-11-13 09:59:50 · 1971 阅读 · 1 评论 -
c++函数参数多用引用的优点
首先,如果我们可能需要同时改动参数的值和原数的值,那么传引用直接改参数就可以了。其次,引用相当于别名,不然又得构造形参,这样很麻烦。...原创 2019-11-11 14:30:45 · 642 阅读 · 0 评论