
Linux
文章平均质量分 60
Linux
爱拍凯特
热爱开源,热爱新技术,热爱黑科技。
展开
-
Python装饰器、生成器、迭代器、魔术方法总结
1、装饰器和上下文管理2、生成器、迭代器和可迭代对象总结一:1、上下文管理器是符合上下文管理协议的对象,主要是定义了__exit__()和__enter__()方法。装饰器是一个特殊的上下文管理器,两者都是包装其他代码块的工具,区别在于,装饰器包装的是定义的代码块,而上下文管理器可以包装任意的代码块。也就是说装饰器包装的代码是有要求的,也就是一个定义代码块,如定义一个函数。而上下文管理器则没有这种要求,你可以之有一个print都可以。2、生成器的核心是迭代器,或者说生成器是一种迭代器。因原创 2020-06-14 13:38:12 · 298 阅读 · 0 评论 -
Tornado的高性能服务器开发常用方法
高性能源于Tornado基于Epoll(unix为kqueue)的异步网络IO。因为tornado的单线程机制,一不小心就容易写出阻塞服务[block]的代码。不但没有性能提高,反而会让性能急剧下降。因此,探索tornado的异步使用方式很有必要。简而言之,Tornado的异步包括两个方面,异步服务端和异步客户端。无论服务端和客户端,具体的异步模型又可以分为回调[callback]和协程[co...原创 2020-03-01 14:05:19 · 897 阅读 · 0 评论 -
curl的常见用法小结
【常用命令】模拟post请求,发送json格式的参数curl -H "Content-Type:application/json" -X POST --data '{"message": "sunshine"}' http://localhost:8000/这种方法是json数据直接在body里面的。1、首先,最简单的情况是我们只需要提交一个不带文件上传的表单,这种情况下,只需要在cu...原创 2020-02-28 23:29:03 · 1563 阅读 · 0 评论 -
Docker 中 安装软件并创建新的镜像
1、在docker中根据已有的镜像然后安装新的软件在生成新的镜像docker中镜像是个静态的概念,而容器是一个动态的概念,自我感觉有点像程序和进程之间的关系似的。现在已经有的镜像是 learn/tutorial 现在安装 ping 和vim 生成自己的新的镜像首先根据镜像运行-->容器并安装软件ping#docker run -t learn/tutorial ap原创 2016-06-14 15:14:44 · 10170 阅读 · 1 评论 -
vmware中centos扩展磁盘空间
今天在使用vmware中的centos7的时候发现空间不多了,就想着扩展磁盘空间,之前也想过要搞,结果有些地方总是搞不明白,今天参考了一份博客,成功扩展了磁盘空间,因此写下此文已示总结。参考博客地址:https://www.cnblogs.com/baihuitestsoftware/articles/6474075.html我总结了一下主要是分成以下几个步骤。1、在vmware中扩展...原创 2019-07-14 22:52:27 · 1036 阅读 · 0 评论 -
代理服务的理解
代理服务代理服务顾名思义就是代替局域网内的一些主机来进行提供服务,其所提供的服务主要包括正向代理服务和反向代理服务。其中正向代理服务就是局域网中的客户机想访问外网的资源,就通过代理服务器来进行访问。而不能直接访问,这样做的好处就是可以对内网向外网的访问做出一些控制和监测。同时正向代理服务不提供相反方向的服务,也就是外网不能够通过代理服务器来访问内网的资源。反向代理服务的作用刚好相反,是原创 2016-05-13 20:59:04 · 442 阅读 · 0 评论 -
死锁、活锁、优先级翻转
这几个概念中原创 2016-03-14 16:36:13 · 752 阅读 · 0 评论 -
程序的装入和链接
编译—链接---装入 编译:预处理—编译、优化—汇编 链接:静态链接—动态链接1、 静态链接2、 装入时动态链接3、 运行时动态链接 装入:静态装入—动态装入1、 绝对装入方式这种方式在编译的时候就会产生绝对地址(程序中的逻辑地址就是实际的物理地址),在装入的时候不需要对地址和数据进行修改。缺点:只能将目标模块装入内存中指定的位置,不够灵原创 2016-08-07 16:55:09 · 1718 阅读 · 0 评论 -
程序编译的几个阶段
程序编译的过程中就是将用户的文本形式的源代码(c/c++)转化成计算机可以直接执行的机器代码的过程。主要经过这么几个过程:1、编译,由编译器将c源代码(.cpp)转变成汇编代码(.s)2、汇编,由汇编器将汇编代码(.s)转变成目标代码(.o)3、链接,由链接器将代码在执行过程用到的其他目标代码和库文件链接成为一个可执行程序也就是目标程序。 详细过程:1、编译编译的过程就原创 2016-05-13 20:40:09 · 4331 阅读 · 0 评论 -
nvidia-docker的一次实际应用
在深度学习中,如果要使docker中的代码能够在GPU的环境下运行,需要安装nvidia-docker。nvidia-docker是一个可以是用GPU的docker,其在docker上做了一层封装,通过nvidia-docker-plugin,然后调用到docker上,其最终实现还是在docker的启动命令上携带一些必要的参数,因此在安装nvidia-docker之前,还是需要安装docker的。...原创 2019-08-29 18:32:26 · 4006 阅读 · 0 评论 -
Docker的一次完整使用总结
最近在项目中存在这么一个需求,就是对深度学习的一些代码要大规模部署,但是依赖一些环境和显卡驱动,所以考虑将代码和所需要的环境打包成docker镜像来方便部署,经过了一两周的学习和实验以及请教他人,目前我算是基本搞明白了一些,先主要总结一些容易出错的点或者疑惑的点。1、制作Dockerfile在制作Dockerfile的过程中,用到了一些指令:FROM、ENV、COPY、ADD、CMD、...原创 2019-08-29 18:29:19 · 406 阅读 · 0 评论 -
C++ 存储类的含义和区别
C++中有五种类型的存储类。存储类是管理对象的生存期、链接、内存位置的类型说明符。这些说明符放在需要修饰的变量类型前。autoregisterstaticexternmutable1、说明符的作用是用来定义变量/函数 的范围(可见性)和生命周期。2、以上五类可以分成两种:自动存储类和静态存储类。自动存储类包括auto、register,其他的是静态存储类。3、自原创 2017-01-10 21:43:40 · 3291 阅读 · 0 评论 -
惊群问题
惊群问题惊群问题是由于系统中有多个进程在等待同一个资源,当资源可用的时候,系统会唤醒所有或部分处于休眠状态的进程去争抢资源,但是最终只会有一个进程能够成功的响应请求并获得资源,但在这个过程中由于系统要对全部的进程唤醒,导致了需要对这些进程进行不必要的切换,从而会产生系统资源的浪费。 这种情况一般是accept或epoll_create在子进程中处于监听状态,也就是先创建子进程或者子线程原创 2016-05-06 10:54:02 · 5587 阅读 · 0 评论 -
三次握手和四次挥手
三次握手和四次挥手1、为什么要三次握手?因为信道是不可靠的,而TCP协议是一个可靠的传输协议,要在不可靠的信道上实现可靠的传输,那么就需要一钟同步机制,而进行三次握手是理论上所需要的最少的握手次数。因为如果只进行两次握手的化,会出现以下的一个问题:如果第一个SYN握手包发送过去之后在网络中滞留,没有被送到服务端,然后过了一段时间之后客户端和服务端通信结束,并且断开了sock原创 2016-06-07 08:54:00 · 400 阅读 · 0 评论 -
EPOLL的理解和深入分析
搞Linux 服务器开发的人肯定了解 select、poll、epoll,他们都是基于事件驱动的IO多路复用技术,而他们之间的区别网上已经有很多的文章了,大家可以去详细的阅读,我在这里主要想写写我对epoll的底层实现的理解。首先还是先说说 select、poll相比与epoll来说他们效率低下的原因吧:select、poll、epoll是Linux平台下的IO多路复用技术,适合用来...原创 2016-05-11 16:44:30 · 10924 阅读 · 10 评论 -
C++ 默认构造函数的重要性
1、默认构造函数C++ 默认构造函数是对类中的参数提供默认值的构造函数,一般情况下,是一个没有参数值的空函数,也可以提供一些的默认值的构造函数,如果用户没有定义构造函数,那么编译器会给类提供一个默认的构造函数,但是只要用户自定义了任意一个构造函数,那么编译器就不会提供默认的构造函数,这种情况下,容易编译报错,所以正确的写法就是用户在定义构造函数的时候,也需要添加一个默认的构造函数,这样就不会造原创 2016-06-12 15:37:23 · 13254 阅读 · 0 评论 -
Linux 文件描述符
//////////////////////////////////////////////////////////////////////////////////////////////////////1、UNIX文件描述符Unix操作系统或者Linux操作系统的文件描述符使用一个非负整数来表示,但是文件描述符不仅仅是一个非负数,Unix对于文件IO有以下几个数据结构:A.原创 2016-05-06 10:49:46 · 884 阅读 · 0 评论 -
对动态规划算法思想的一些理解
动态规划算法思想和分治法的思想是类似的,都是将问题的规模缩小,然后求解子问题,根据子问题来解决总问题,但是分治算法的子问题之间是相互独立的,因此在对子问题的求解过程中就产生了很多重复的计算,递归就是这种问题很典型的代表,究其原因就是对子问题的求解过程没有保留中间结果以便其他的求解问题使用,而动态规划问题将中间结果保留在数组中,每个状态都对应一个状态转移,而且动态规划思想和贪心算法思想也不同,就在于原创 2016-05-11 16:28:40 · 1386 阅读 · 0 评论