- 博客(58)
- 资源 (46)
- 收藏
- 关注

原创 WSGI与Flask
在学习Flask Web开发时遇到了WSGI,那么WSGI是什么呢?WSGI和Flask有什么关系呢?一、WSGI为什么会出现?在学习一个东西之前,我们肯定想知道:它为什么会出现?那么,WSGI为什么会出现呢?我们知道,部署一个web应用,经常需要使用nginx、apache或者IIS等web服务器把web应用跑起来,然后用户在浏览器可以通过URL进行访问。为了能够让各种web服务器都能支持web应用,所以必须在web应用和web服务器之间有一个统一的规范(协议)。其实,在PEP 333
2021-02-23 18:19:25
4102
1

转载 C/C++的电子书
转载自:https://my.oschina.net/u/171160/blog/3056040在《学习C++的经典书籍》这篇文章中,列出了C++的经典书籍:《C++ Primer 第 5 版》:中文版、英文版 《Effective C++》和《More Effective C++》 《Effective STL》 《C++ 标准程序库》:第一版、第二版 《STL 源码剖...
2019-05-30 17:19:12
1981

转载 学习C++的经典书籍
转载自:https://my.oschina.net/u/171160/blog/3054202C++ 是一门难学易用的语言!一旦学成,妙用无穷。相关书籍之多,人人都想找到一份学习的辟邪剑谱。在这里,由浅入深的罗列出C++的相关书籍,可以根据你的需要去选择自己需要的书籍。跟随本书单打好基础、开阔视野学好C++吧!根据个人经验,简单将这些书籍分成三类:入门、提高、拓展,建议按顺序...
2019-05-25 20:13:59
426
原创 Python之生成器
生成器是迭代器的一种,Python中有两种方法来实现生成器,一个是生成器函数,一个是生成器表达式。 生成器函数,带yield的函数:def func(n): for i in range(n): yield i + 1a = func(3)print(a) #output: <generator object func at 0x7fa999bef890>print(iter(a) is a) #output: Trueprint...
2021-03-07 11:26:43
263
原创 Python之可迭代对象、迭代器
Python的特色之一是基于协议实现功能。比如改变一个加号(+)的行为,在C++中需要操作符重载,在Python中则是重写__add__方法。为了描述可迭代对象和迭代器,Python提供了两个魔法方法,分别是__iter__和__next__。又为了支持for...in...行为,牵扯进了__getitem__。众所周知使用for循环可以遍历的对象有:字典,列表,元祖,字符串,集合。我们称之为遍历,也叫作迭代。可以直接作用于 for 循环的对象统称为 可迭代对象。可迭代对象在 Python 中是一种
2021-03-06 20:03:41
294
原创 Python的鸭子类型
“当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。”上面的这句话,不要去把鸭子理解为我们日常生活中见到的那种真正的鸭子,而是应该把它理解为一个类型(类型,而不是类),我们平时说的鸭子当然本身就属于鸭子类型了,但是如果现在还有一类鸟(类,而不是类型)也看起来像鸭子,游泳像鸭子,叫起来叫鸭子,虽然不是真正的鸭子,我们也把它归类到鸭子这个类型里面。而鸭子类型是Python语言的一个特征。下面通过代码来理解Python的这一特征。class Animal(obje
2021-03-01 14:39:46
424
1
原创 python 中常见的内置类型
1、Python中,对象有三个特征:身份、类型、值身份:可以理解为对象在内存中的地址。可以用 id 来查看对象的地址。>>> a=3 >>> id(a) 4328207240 >>> id(type(a))4304768160类型:对象的实际数据类型。可以用 type 来查看对象的类型。>>>a=3 >>> type(a) <class 'int'> >>>
2021-03-01 09:41:08
268
1
原创 python中type、class和object之间的关系
先来一段代码:a = 1b = 'abc'print(type(1)) # <class 'int'>print(type(int)) # <class 'type'>print(type(b)) # <class 'str'>print(type(str)) # <class 'type'>得出如下结论,1是int类型,而int是一个type类型,int本身也是一个对象,是由type这个类来生成的。所以关系如下:type --
2021-03-01 09:14:08
1064
转载 HTTP 报文首部之首部字段(重点分析)
文章目录 1.首部字段概述 2.首部字段结构 3.首部字段类型 4.通用首部字段(HTTP/1.1) 4.1 Cache-Control 4.1.1 可用的指令一览 4.1.2 表示能否缓存的指令 4.1.3 指定缓存期限和认证的指令 4.1.4 Cache-Control 扩展 4.2 Connection 4.3 Date 4.4 Pragma 4.5 Trailer 4.6 Transfer-Enc
2021-02-25 18:46:32
667
原创 Flask实战—使用工厂函数创建程序实例
在我们开始学习FLask的时候,创建应用的实例是用app=Flask(name)来做的,最初的写法如下:#__init__.py里面创建实例,应用实例对象创建完再引入视图函数的模块,因为这时候视图函数上的@app.route()才有效from flask import Flaskfrom app.api import bp as api_bpimport configapp = Flask(__name__)app.config.from_object('config')app.regi
2021-02-23 22:02:33
1701
原创 Python小练习—— 如何统计序列中元素的频度
案例: 1、某随机序列[12, 5, 6, 4,6, 5, 12, 7, 12, 4],找到次数最高的3个元素,它们出现的次数是多少 2、对某英文文章的单词,进行词频统计,找到出现次数最高的10个单词,它们出现的次数是多少解决方案: 方案1:将序列转换为字典{元素: 频度},根据字典的值排序 方案2: 使用标准库collections中的Counter代码:from random import randint#随机生成30个在...
2021-02-03 09:03:16
192
原创 Python小练习——如何让字典保持有序
案例:期末考试,把一个班的成绩记录到字典,以便查询学生成绩,但如果想查第几名的是谁,该如何实现?解决方案:以OrderedDic替代内置字典,依次将学生成绩存入OrderedDict代码:from random import shufflefrom collections import OrdereDictstudents = list('abcdefg')shulle(students )od = OrderedDict()for i, p in enumerate(stude
2021-02-02 07:30:25
246
原创 Python小练习——分割字符串
案例:要把某个字符串依据分隔符拆分不同的字段,该字符串包含多种不同的分隔符,如s='ab:cd|efg|hi,jkl|mn\topq:rst,uvw\txyz'。 其中<,>、<:>、<|>、<\t>是分隔符,如何处理?方法1:连续使用str.split()方法,每次处理一种分隔符号def my_split(s, seps): res = [s] for sep in seps: t = [...
2021-01-31 15:45:48
433
1
原创 计算机电子书大全
在我的github,汇总了计算机各方面的电子书,如各种编程语言、算法、数据库、前端、移动开发等等,会不定期更新。计算机电子书大全的地址:https://github.com/jay602/IT_Ebook...
2019-12-29 13:54:57
844
原创 Centos7 C++ 安装使用googletest单元测试
环境说明 系统环境:centos7.0 g++版本: g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36) 查看方法: g++ -version,升级方法 yum -y install g++ 由于最新的google test有使用的是C++11+的函数,故而g++版本不能太低 cmake安装: yum -y install c...
2019-10-12 13:53:39
1968
原创 Windows下ZeroC Ice-3.6.4的安装与配置
新手教程,着重讲一下有些教程有没讲到的点或者错误的点,可以和其他教程一起看(本教程并不完整)Windows版本:Windows10VS版本:2017communityICE版本:3.6.41,下载安装:官网下载有时很慢,甚至下载不了。我已经下载下来了,下面可以从网盘下载,部分下载链接如下:3.7.1版本:https://sn9.us/file/632278-4024205293...
2019-10-12 13:51:12
2070
原创 chromedriver 2.46 下载
chromedriver_mac64.zip: macchromedriver_linux64.zip: linuxchromedriver_win32.zip: win32此版本为2.46,对应Chrome版本为71-73
2019-07-13 12:57:50
548
原创 Vue-Devtools,已用npm处理过,已配置过源码文件,直接拿来用即可
最简便的方法是用FQ来通过google应用商店进行安装,但是大多数人还是处在非FQ的状态尝试过安装Node的方法来安装,但是极其不建议用这个方法安装,非常麻烦,而且必须要有node的基础,非常不接地气。下面来一个最简便的方法(送给伸手党):查看过很多博客大多数都是,要安装Vue-Devtools,在一个github下面用git clone或者手动下载一个叫做vue-devtool...
2019-07-06 16:47:30
450
转载 学习Node.js的电子书大全
在这里,与大家分享一批很有用的 Node.js的电子书资源。Node 是一个服务器端的JavaScript解释器,它将改变服务器应该如何工作的概念。它的目标是帮助程序员构建高度可伸缩的应用程序,编写能够处理数万条同时连接到一个(只有一个)物理机的连接代码。 点击书名,即可下载。如果发现新的相关的电子书,会及时更新的。收藏本文,敬请关...
2019-06-21 07:56:39
1232
1
转载 学习python的书籍
转载自:https://my.oschina.net/u/171160/blog/3060163现在学习Python的人越来越多,无论是自学还是跟老师学习,书是必不可少的,在这里,向大家推荐一些学习python的书籍,希望对大家有帮助 !如果发现新的相关的电子书,会及时更新的,收藏本文,敬请关注。觉得有帮助,记得点个赞。点击书名,可下载基础:Python学习手册(第4版)...
2019-06-11 11:50:58
473
原创 面向对象的设计原则
设计模式相关电子书,链接什么是好的软件设计呢?软件设计的金科玉律:复用面向对象的设计到底有没有什么原则呢?变化是复用最大的天敌!面向对象的最大优势就在于:抵御变化。重新认识面向对象: 1.理解隔离变化从宏观层面来看,面向对象的构建方式更能适应软件的变化,能将变化所带来的影响新奇迹世界最小 2..各司其职从微观层面来看,面向对象的方式...
2019-06-09 18:53:11
242
原创 设计模式简介
什么是设计模式每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案。这样,你就能一次又一次地使用该方案而不必做重复劳动。——Christopher Alexander设计模式相关电子书,链接。在软件开发过程中,软件开发人员会遇到很多问题,发现有些问题是类似,是会不断重复的发生的,经过长时间的试验,总结出针对这一类似的问题的解决方案,总结出一套模式。由此可见,设...
2019-06-09 18:28:54
180
原创 sizeof(std::string), 到底是多少?
sizeof(std::string);又或者std::string str=""; sizeof(str);得到的结果到底是多少呢? 在使用VS2015的32位debug构建中,sizeof(std::string)返回28;在64位debug构建中,得到40;在32位release构建中,得到24,在64位release构建中,得到32。这是因为std::string的...
2018-12-06 19:08:46
4104
原创 国内开源镜像站点收录
先收录一部分。(一)、企业站网易:http://mirrors.163.com/ 搜狐:http://mirrors.sohu.com/ 阿里云:http://mirrors.aliyun.com/ 首都在线科技股份有限公司(英文名Capital Online Data Service):http://mirrors.yun-idc.com/(二)、教育站中国科技大学:http...
2018-11-20 15:12:25
200
原创 kbengine在centos 7以上的安装和编译
CentOS 6 或早期的版本中提供的是 MySQL 的服务器/客户端安装包,但 CentOS 7 已使用了 MariaDB 替代了默认的 MySQL。MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。因此,kbengine官网的教程的引擎安装和启动详解的...
2018-11-19 10:11:34
896
原创 skynet如何启动一个lua服务
skynet是如何启动一个lua语言编写的服务的的呢?skynet服务,在skynet框架中,具体是以什么形式存在的呢? 每个skynet进程在启动时,都会启动一个lua层的launcher服务,该服务主要负责skynet运作期间,服务的创建工作。我们在lua层创建一个lua层服务时,通常会调用skynet.newservice函数。带着问题,我们来一起看看skynet的源码。
2018-02-27 11:20:24
1949
转载 muduo库的PollPoller类剖析
转载自:http://blog.youkuaiyun.com/freeelinux/article/details/53457060muduo库中唯一使用面向对象的地方就在Poller,它有两个派生类,分别是PollPoller和EPollPoller。可以实现两种I/O多路复用机制。PollerPoller的数据成员有:protected: typedef std::map<int, Chan...
2018-02-14 14:01:45
394
原创 muduo库的EpollPoller剖析
EpollPoller,是muduo库对I/O复用机制epoll的封装,不过默认使用的是EpollPoller。在EventLoop中初始化构造poller_,调用newDefaultPoller(this),构造默认的poller。EventLoop::EventLoop() : looping_(false), //表示还未循环 quit_(false), e...
2018-02-14 11:38:07
508
1
原创 muduo的日志库分析四之AsyncLogging类
用一个背景线程负责收集日志消息并写入日志文件,其它业务线程只管往这个“日志线程”发送日志消息,这称为"异步日志"。在多线程服务程序中,异步日志(也可叫“非阻塞日志”)是必需的。假如在网络IO线程或业务线程中直接写日志,写操作偶尔可能阻塞一会儿,业务中的响应请求可能会超时,或者耽误发送心跳包,在分布式系统中可能造成多米骨牌效应,例如误报死锁引发自动failover等。因此,在其它业务线程中应该彻底避
2018-02-07 11:10:57
1224
2
原创 muduo的日志库分析三之LogFile类
LogFile类图LogFile类主要负责日志的滚动,日志滚动有两种条件,一种是日志文件大小达到预设值,另一种是时间到达超过当天。由几个成员变量来控制日志滚动。// 基本的文件名,日志文件名由基本文件名和时间日期等元素构造 const string basename_; // 日志文件的极限容量,当日志文件的数据量达到这个限制之后就重新生成一个日志文件 cons
2018-02-07 10:44:35
807
原创 muduo的日志库分析二之Logger类
github地址:https://github.com/chenshuo/muduo/blob/master/muduo/base/Logging.hhttps://github.com/chenshuo/muduo/blob/master/muduo/base/Logging.ccLogger类图Logger使用时序图如下:
2018-02-07 10:30:37
711
原创 muduo的日志库分析一之LogStream
muduo日志库是C++ stream风格,这样用起来更自然,不必费心保持格式字符串和参数类型的一致性,可以随用随写,而且是类型安全的。stream风格的另一个好处是当输出的日志级别高于语句的日志级别是,打印日志是个空操作,运行是开销接近零,而printf风格不易做到。muduo没有用到标准库的iostream,而是自己写的LogStream类,这主要是出于性能。设计这个L
2018-02-07 10:18:35
2192
原创 C++ 中线程安全的对象生命期管理概要二
《Linux多线程服务端编程》的1.11节以对象池为例子讲解了shared_ptr技术与陷阱。假设有 Stock 类,代表一只股票的价格。每一只股票有一个惟一的字符串标识,比如 Google 的 key 是 "NASDAQ:GOOG",IBM 是 "NYSE:IBM"。Stock 对象是个主动对象,它能不断获取新价格。为了节省系统资源,同一个程序里边每一只出现的股票只有一个 Stock
2018-02-06 21:09:46
267
原创 C++ 中线程安全的对象生命期管理概要一
在这里,对《Linux多线程服务端编程》的第一章:线程安全的对象生命期管理的概要整理,这章的具体内容见陈硕的博客:http://blog.youkuaiyun.com/Solstice/article/details/5238671。如何避免对象析构时可能存在的竞态条件(race condition)是C++多线程编程面临的基本问题,可以借助shared_ptr和weak_ptr智能指针完美解决。
2018-02-06 21:01:48
604
转载 借shared_ptr实现copy-on-write(2)
转载自:http://blog.youkuaiyun.com/solstice/article/details/3351751借shared_ptr实现copy-on-write场景:一个多线程的C++程序,24h x 5.5d运行。有几个工作线程ThreadW{0,1,2,3},处理客户发过来的交易请求,另外有一个背景线程ThreadB,不定期更新程序内部的参考数据。这些线程都跟一个
2018-02-05 16:50:00
277
原创 借shared_ptr实现copy-on-write (1)
在《Linux多线程服务端编程使用muduoC++网络库》2.8节说“借shared_ptr实现copy-on-write”。那么copy-on-write是怎样的技术? COW(Copy-On-Write)通过浅拷贝(shallow copy)只复制引用而避免复制值;当的确需要进行写入操作时,首先进行值拷贝,再对拷贝后的值执行写入操作,这样减少了无谓的复制耗时。 特点如下:
2018-02-05 16:45:20
964
原创 C++之不完全类型
在muduo源代码中,会看到这样的代码:typedef char T_must_be_complete_type[sizeof(T) == 0 ? -1 : 1]; T_must_be_complete_type dummy; (void) dummy; 在C++中,类型有Complete type和Incomplete type之分,对于Complete type, 它的大小在编译
2018-02-04 18:00:15
566
1
转载 muduo库的ThreadLocal类剖析
转载自:http://blog.youkuaiyun.com/freeelinux/article/details/53431275首先来看一个概念:线程特定数据>>>在单线程程序中,我们经常用全局变量共享数据。多线程环境下,全部变量被所有线程所共有。>>>但有时应用程序设计中有必要提供线程私有的全局变量,仅在某个线程中有效>>>POSIX线程库通过维护一定的数据结构来解决这个问题,这些数
2018-02-04 17:52:51
343
转载 Linux中的线程局部存储(二)
转载自:http://blog.youkuaiyun.com/cywosp/article/details/26469435在Linux中还有一种更为高效的线程局部存储方法,就是使用关键字__thread来定义变量。__thread是GCC内置的线程局部存储设施(Thread-Local Storage),它的实现非常高效,与pthread_key_t向比较更为快速,其存储性能可以与全局变量相媲美
2018-02-04 17:00:41
559
Linux程序设计 中文第4版.part1.
2013-05-13
C++程序设计语言特别版 03
2013-05-11
C++程序设计语言特别版 02
2013-05-11
C++程序设计语言特别版
2013-05-11
精通Eclipse
2013-05-09
精通Hibernate
2013-05-08
jsp项目开发案例全程实录
2013-05-08
C++设计模式
2013-01-24
LINUX命令、编辑器与SHELL编程 part4
2012-10-16
LINUX命令、编辑器与SHELL编程 part3
2012-10-16
LINUX命令、编辑器与SHELL编程 part2
2012-10-16
LINUX命令、编辑器与SHELL编程
2012-10-16
gtest-1.6.0.zip
2015-01-13
gtest-1.6.0
2015-01-13
scons-local-2.0.1
2015-01-13
swtoolkit.0.9.1.zip
2015-01-13
srtp-cvs.zip
2015-01-13
libjingle-0.6.2.
2015-01-13
WpdPack开发包
2014-07-25
嵌入式与实时系统开发:使用UML对象技术框架与模式.part2.
2013-05-27
编程珠玑(带有书签)
2013-05-27
windows installer 服务不能更新解决方法
2013-05-26
Linux程序设计 中文第4版.part5
2013-05-13
Linux程序设计 中文第4版.part4
2013-05-13
Linux程序设计 中文第4版.part3
2013-05-13
Linux程序设计 中文第4版.part2.
2013-05-13
网络扫描技术揭秘(清晰且带有书签)
2013-05-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人