![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux
文章平均质量分 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 · 2559 阅读 · 1 评论 -
线程的阻抗匹配原则,即线程池开多大的问题
T=C/P 开线程的数量为 CPU数量除计算密集型任务占比 可以上下50%浮动, 如果P太小取订制。 5*C.原创 2020-11-20 11:12:26 · 228 阅读 · 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 · 1319 阅读 · 0 评论 -
stl_vector源码分析
说明 源代码基于版本gcc 4.8(在linux环境下),和现在用的mingw差不多。 这里先说明下,mingw是个老大爷基于gcc开发的,用在windows平台上,稳定性不算很高(易出bug),同在windows下版本的还有msvc(微软开发的),和gcc版本的stl差别有些大,对于vector开辟空间的逻辑也不同。分析从上到下,根据代码...原创 2020-03-29 10:58:10 · 384 阅读 · 0 评论 -
C++头文件报错,头文件保护符使用
提要C++头文件是为了声明函数,声明变量。注意,是声明。 int a=1;是直接定义了。extern int a; 这是声明,指示编译器这个变量可能在别的文件中被定义,编译器会在符号表中找到定义后填入响应的值。一个项目中一个变量只会有一次定义,多次定义就叫重定义了。丢人的错误 看这个tou.h,我在a.cpp和b.cpp都include了,然后报错,a重定义了...原创 2020-03-27 16:07:39 · 1118 阅读 · 0 评论 -
彻底理解epoll
这篇文章是转载的,关于为什么epoll为什么这么高效,看懂了个大概。文中对select和epoll效率区别描述的总结:select每次执行都要重新把所有描述符加入等待队列(这属实浪费时间,因为epoll事先构建好然后开始wait),且文件描述符有1024的最大限制,这是其内部程序自定义的,你可以改(会影响效率)。select阻塞之后被唤醒,唤醒之后要遍历一遍所有的文件描述符。epoll有水...转载 2020-03-19 09:21:00 · 418 阅读 · 0 评论 -
C/C++程序内存分配
32bit总线可寻址2^32B地址,这是32位系统。上面是高地址空间,下面是低地址空间。1GB的内核空间,3GB的用户空间。内存空间分类(从上到下):内核区域,栈(执行空间),存储映射区(动态链接库等文件映射,malloc调用mmap函数申请大内存),堆(动态申请的空间),BSS段(未初始化的全局变量以及静态变量),数据段(初始化的全局变量),代码段(包含常量字符串(只读)和二进制代码)...原创 2020-03-17 15:44:53 · 225 阅读 · 0 评论 -
epoll服务器代码实例
/*该文件实现服务器的监听 * * * */#include<stdio.h>#include<sys/epoll.h>#include<sys/socket.h>#include<errno.h>#include<string.h>#include<iostream>#include<netin...原创 2020-03-15 17:49:45 · 312 阅读 · 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 · 159 阅读 · 0 评论 -
C++ 虚函数表解析
推荐:https://blog.csdn.net/haoel/article/details/1948051文章虽老,但很底层。转载 2020-03-13 17:23:04 · 153 阅读 · 0 评论 -
进程间通信——套接字通信常用函数
开发文档写的挺详细的,更加方便。socketint socket(int domain, int type, int protocol);开发文档:domain:标识协议族,ipv4和v6等type:通信类型,tcp/udp等protocol一般是0,自动选择合适的协议connectint connect(int sockfd, const struct sockaddr *ad...原创 2020-03-12 19:44:07 · 216 阅读 · 0 评论 -
Linux伪文件系统
伪文件系统,这个概念资料较少。 Unix、Linux系统里面有文件描述符这个概念(万物皆文件),比如常规的文件,标准输入输出错误(0,1,2描述符),还有套接字,消息队列等等。 它们虽然存在文件系统中某个目录,但是不属于任何的文件系统,不占用硬盘的空间,只是在内存中作用。通过内核去管理调用,比如fifo有名管道,实际是内存缓冲...原创 2020-03-10 15:11:04 · 1118 阅读 · 0 评论 -
IPC进程通信机制
管道https://blog.csdn.net/weixin_41033366/article/details/104755492最原始的方法信号量 进程之间的同步和互斥,控制执行制约关系先后顺序。共享内存 个人理解:共享内存就是开辟一段内存区域,映射到进程空间中,映射之后直接对自己空间操作,对应内存改变后其他进程会知道。这是最快的IPC没有之...原创 2020-03-09 20:20:52 · 183 阅读 · 0 评论 -
IPC进程通信方式——管道通信方式
管道分无名管道和有名管道(FIFO) 管道通信是Unix进程通信最早的方式,只适用于两个进程之间通信,网格通信就很复杂,而且它是半双工的,一个管道一般只用于一个方向。 关于为什么是半双工的:如果你又要读又要写,你的可能读到自己写的。无名管道和有名管道读写方式区别不大,只是亲缘进程可不可用的关系。 无名管道,要共享文件描述符,f...原创 2020-03-09 16:45:11 · 274 阅读 · 0 评论 -
僵尸进程和孤儿进程
僵尸进程 僵尸进程就是子进程结束运行,但是主进程没结束。因为子进程是占用资源的,比如文件描述符等等,主进程没有显式得去控制释放(wait,waitpid等有几种方式可为子进程收尸),所以这个子进程编程僵尸进程,白白占用资源。孤儿进程 孤儿进程就是主进程结束了,子进程没有结束了,成了孤儿。成了孤儿的后,就会被Linux环境下一个init进程(pid...原创 2020-03-05 20:13:42 · 132 阅读 · 0 评论 -
Strlen和Sizeof的区别
Strlen是函数,复杂度是O(n)的Sizeof是运算符,复杂度是常数的Sizeof的值在声明的时候就已经确定了:如图所示,char s[100]已经说明了sizeof(s)是100,strlen会扫描一遍直到遇到’\0’为止。但是char是字符串指针的话,输出sizeof只是这个指针的大小4个字节,指示它指向常量字符串。值得注意的是下面这种情况,结构体中一个i...原创 2020-03-05 10:44:20 · 3450 阅读 · 0 评论 -
关于C程序栈帧的理解
今天对栈帧有了一个突破性的了解,但是,只是了解。可惜的是没能将C转换成汇编证明自己所理解的概念性的东西。起初讨论的主题是函数返回值是怎么存储并返回到主函数中去的后,然后扯的就多了。c程序执行的时候作为一个进程,会分配相应的堆栈段。堆这个东西是我们动态分配的内存,malloc,realloc的结果,内存泄漏即动态申请的内存忘记free。栈帧其实就是我们去执行代码段的具体执行空间,比如mai...原创 2020-03-04 23:25:34 · 239 阅读 · 0 评论 -
搞懂Linux的硬链接
前言:硬链接:nlink,是一个数值,表示有多少个目录项指向自己。首先说下Linux的文件系统结构: i节点即i-node,包含了文件的各种信息,也是命令stat(查看i-node信息)数据的来源。文件的真实数据存储在后面的数据块中。 数据块包含的是,文件内容信息和目录信息。要明确的是i节点不只是一个文件特有的,一个文件夹也有对应的i节点,指向...原创 2020-03-01 16:18:56 · 1144 阅读 · 0 评论 -
Linux让我心态炸裂
粗鄙之语。每次涉及到安装系统,配置各种环境。就会无缘无故的报各种错误,然后再去千方百计的各种百度。粗鄙之语。要不是因为空间不够了,扩展不了我绝对不会重装,就是非常后悔。纪念今天这个雨天,心里哇凉哇凉的。...原创 2020-02-27 15:43:48 · 145 阅读 · 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 · 5129 阅读 · 0 评论