- 博客(85)
- 资源 (10)
- 收藏
- 关注
原创 python3 bottle框架 解决跨域
所谓同域:两个页面具有相同的协议,主机,端口号。同域策略是浏览器的一个安全功能,不同域的客户端在没有明确授权的情况下,不能访问对方资源。HTTP请求方法:OPTIONS:允许客户端查看服务器性能。bottle后端处理方法:增加一个勾子函数,在勾子函数中对请求前后都进行修改。bottle收到请求后,Access-Control-Request-Method发出请求时报头用于预检请求让...
2019-11-13 20:59:09
996
原创 centos7 python3 bottle+nginx+uwsgi搭建
1、依赖python3版本: 安装python3yum install python32、安装uwsgi包yum groupinstall "Development tools"yum install python3-devel.x86_64pip3 install uwsgi 配置uwsgi[uwsgi]socket = 127.0.0.1:9000maste...
2019-11-13 20:58:21
404
原创 关于逆序的一些基本操作
1. 字符串逆序,abcde->edcba2. 单词逆序,how are you->you are how3. 单链表逆序,[1,2,3,4,5]->[5,4,3,2,1]a = 'abcde'print '原始字符串:', aprint '翻转字符串:',a[::-1]def reverse(arr, left, right): """ ...
2019-11-12 20:46:44
782
原创 python3 mysql|MariaDB 重连异常 pymysql.OperationalError
背景信息:使用之前python2的mysql库,在python3下运行,由于MariaDB重启,或者句柄失效重连MariaDB时出现bug:在机器重启启动MariaDB后,发现API接口报错,报错日志如下:sql error:'OperationalError' object does not support indexing,pymysql.err.OperationalErro...
2019-11-12 12:43:08
532
原创 AES对称加密算法实践 python3
下面是在python3中使用MODE_CBC(需要salt)的最佳实践python2环境的见:https://blog.csdn.net/feitianxuxue/article/details/102960785如果AES加密是MODE_ECB模式,则不需要随机向量,代码中注释部分加解密过程:通过 python encode.py 加密本地data目录下的file.jpg文件(二...
2019-11-07 19:58:34
780
原创 AES对称加密算法实践 python2
加解密流程与python3加解密流程一致,参考:https://blog.csdn.net/feitianxuxue/article/details/102961733区别主要在于:python2 与python3的编码问题。python3中读取文件只能以二进制方式打开。写二进制文件时候,以二进制方式写入。python2 则容易的多。python3中文本字符和二进制数据分的很清洗,...
2019-11-07 19:56:38
664
原创 bottle框架使用一个小坑-获取中文参数乱码
背景描述:在bottle中,获取参数一般使用request.query.items()和request.POST.allitems()获取参数。当参数中有中文的时候,使用python3运行会出现乱码。解决办法:from bottle import requestparams = dict(request.headers)args = request.query.decode("...
2019-11-04 19:11:44
1905
原创 对大量有重复数字的数组进行排序
题目:#给定一个数组,已知数组中有大量的重复数字,如何对数字进行高效的排序思路一:Hash法#coding=utf-8#对大量有重复数字的数组进行排序#给定一个数组,已知数组中有大量的重复数字,如何对数字进行高效的排序arr = [16,13,16,3,3,13,3,4,13,101,4,4]def sort_hash(a): """ Hash法...
2019-08-18 23:38:01
4263
原创 论软件架构的选择
论软件架构的选择摘要: 2016年3月,我公司承担了国家某安全中心漏洞挖掘系统的开发工作,我在该项目中担任系统架构设计师职务,主要负责系统的架构设计。该项目是分析互联网流量,进行漏洞挖掘,主要包括流量捕获、流量存储、流量分析等。 本文以漏洞挖掘系统为例,针对不同架构风格的使用场景及优缺点,讨论了软件架构的选择。整个系统采用了面向服务的架构风格。在各个子服务中,又...
2017-12-28 09:57:57
7265
8
原创 论高可靠性系统中软件容错技术的应用
论高可靠性系统中软件容错技术的应用摘要: 2016年3月,我公司承担了国家某安全中心漏洞挖掘系统的开发工作,我在该项目中承担系统架构设计师的职务,主要负责系统的架构设计。该项目的主要目的是依托大数据平台从互联网流量中挖掘未知漏洞。 本文以漏洞挖掘系统为例,从多个角度对系统的可靠性进行了分析,重点讨论了两种软件容错技术。针对互联网流量的需要实时捕获,在流量捕获模...
2017-12-28 09:57:17
6644
7
原创 论软件系统架构评估
论软件系统架构评估 2016年3月,我公司承担了国家某安全中心漏洞挖掘系统的开发工作,我在该项目中承担系统架构设计师的职务,主要负责系统的架构设计。该项目的主要目的是依托大数据平台从互联网流量中挖掘未知漏洞。 本文以漏洞挖掘系统为例,论述了软件系统的架构评估。首先分析了软件架构评估所普遍关注的质量属性并阐述了其性能、可用性、可修改性和安全性的具体含义。整个系统采用了面向服...
2017-12-28 09:55:34
11686
8
原创 系统架构师回顾-大意失荆州
2017年下半年我参加了全国的系统架构师考试,现已经尘埃落定。3门考试综合部分高分通过,但是论文却41分名落孙山(45分及格),死在了自己认为考的最好的一项,也许这就是所谓的大意失荆州吧。 考试虽然挂了,但是我并不服输,不是我准备的不充分,更不是我自己论文写的有问题,因为论文这玩意主观性太强了。一次考试失败并不能说明什么,但是成王败寇,挂了就是挂了。 下面把考前我准备的三篇论文与
2017-12-28 09:54:28
1285
4
原创 一句话理解23种设计模式
设计模式的几大原则Ø 开放-封闭原则:对扩展开放,对修改封闭,可以用新的类来解决问题Ø 单一职责原则:设计目的单一的类。也就是降低程序的耦合程度Ø 李氏替换原则:用子类去替代父类Ø 依赖倒置原则:依赖与抽象,而不依赖于具体的实现;针对接口编程,不针对实现编程Ø 接口隔离原则:使用多个接口总比使用单个接口要好Ø 组合重用原则:尽量使用组合,而不是使用继承来达到重用
2017-08-31 10:14:20
3110
原创 创建型-抽象工厂模式
工厂模式种,类的创建依赖于工厂类,如果想对工厂类进行扩展,就必须对工厂类进行修改,这违背了闭包|开闭原则(对扩展开放,对修改关闭)。通过抽象工厂模式可解决该问题。抽象工厂--创建多个工厂类,一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。 抽象工厂模式是工厂模式的进一步延伸。产品不只是一个接口或者一个父类而是有多个接口和父类,形成了一个产品族的概念。
2017-08-23 15:21:57
359
原创 创建型模式--工厂模式
工厂模式包含一个超类(父类),这个超类提供了一个抽象化的接口来创建一个特定类型的对象,而不是决定哪个对象可以被创建。也就是说:定义一个创建对象的接口,但由子类决定要实例化类的哪一个;即通过子类来创建对象。工厂方法使一个类的是实例化延迟到其子类。基本思想:l 定义一个抽象的工厂接口类l 定义一个抽象的产品接口类l 根据需要从产品接口派生产品子类l 对于每一个产
2017-08-23 14:40:22
404
原创 使用supervisord管理python进程
使用supervisord管理python进程1. 简单介绍:supervisord是一个c/s系统,它允许用户在UNIX系统中监控和控制一系列进程。supervisord与monit类似,都可以对进程进行监控区别在于:supervisord管理进程必须由supervisord来启动,monit可以管理正在运行的程序。Supervisord管理的进程是非daemon程序,sup
2015-08-23 21:40:33
2084
原创 让python cookie支持特殊字符
让python cookie支持特殊字符先对cookie做下简单的介绍cookie的作用:tcp协议可以通过三次握手建立连接,客户端发送的多次请求可以通过句柄维护同一个连接,但是http协议是一种无状态的协议,对于浏览器发送的多次请求,服务器是无法区分是不是同一个浏览器发送的。这样就需要使用额外的数据维护会话。服务端收到浏览器的请求,在响应的时候可以种cookie,这样客户端与服务
2015-08-23 20:59:48
1676
原创 使用c语言调用python小结
最近在做一个漏洞展示平台,攻击实现部分使用python实现,c语言实现部分使用libcli库做一个类似telnet的东东,回调函数run的时候调用python模块。针对c调用python,做个了小demopython模块:demo.pydef print_arg(str): print strdef add(a,b): print 'a=', a print
2014-11-14 23:25:24
22933
5
原创 Epoll之ET、LT模式
Epoll之ET、LT模式在使用epoll时,在函数 epoll_ctl中如果不设定,epoll_event 的event默认为LT(水平触发)模式。使用LT模式意味着只要fd处于可读或者可写状态,每次epoll_wait都会返回该fd,这样的话会带来很大的系统开销,且处理时候每次都需要把这些fd轮询一遍,如果fd的数量巨大,不管有没有事件发生,epoll_wait都会触发这些fd的轮询判
2013-12-02 18:35:19
9012
原创 python 关于配置文件,日志,传参总结
python 关于配置文件,日志,传参总结前段时间用python做了些工作,说实在的,之前也就是了解一点python,没有用其做过东西,这次做完之后,感觉python脚本挺强大的,在日志,配置,字符处理与mysql的连接都做得比较好。现将其总结下一、python的日志功能只要在程序中添加import logging,就可以使用其日志功能,其日志级别包括:日志级别包括:NOTSET
2013-12-02 18:32:45
4863
原创 数据结构基础之单链表
数据结构基础之单链表对单链表的建立,插入,删除,逆序,打印元素做一个小小的总结,不过我不觉得这些东西在具体的工作后到底能发挥什么作用,因为强大的STL已经把这些都做好了,我们只需要明白在什么场合使用哪一个STL就可以了。链表有一个数据域,有一个指针域,它的操作其实就是对指针域的操作,无非是指来指去而已。也许这些能反映出一个人的思维敏捷度,以及扎实的编程基础吧。但是我想说的是这些玩意在你头脑
2013-08-15 20:29:41
11770
6
原创 处理大并发之五 使用libevent利器bufferevent
处理大并发之五 使用lievent利器bufferevent 首先来翻译一段文章 你可能注意到随着我们代码变得越来越高效,程序也变得更加复杂。当我们产生一个进程的时候,我们没有必要为每一个链接管理一个buffer,我们只需要每个处理独立栈分配缓冲区就可以了。在读和写的时候,我们不必明确的跟踪每一个socket,这在我们的代码里是一个暗示,我们没有必要定义一个
2013-07-19 23:21:04
46231
4
原创 处理大并发之四 libevent demo详细分析(对比epoll)
处理大并发之四 libevent demo详细分析(对比epoll)libevent默认情况下是单线程,每个线程有且仅有一个event_base,对应一个struct event_base结构体,以及赋予其上的事件管理器,用来安排托管给它的一系列的事件。当有一个事件发生的时候,event_base会在合适的时间去调用绑定在这个事件上的函数,直到这个函数执行完成,然后在返回安排其他事件。需要
2013-07-18 20:07:35
35295
1
原创 处理大并发之三 对libevent的初步认识
处理大并发之三对libevent的初步认识首先翻译下http://www.wangafu.net/~nickm/libevent-book/01_intro.html里的一段文章对异步IO的一个简要介绍大多数应用程序都是阻塞的IO调用,如果IO调用是同步(阻塞)的,它不能立即返回直到它的操作完成,或者经过了很长时间直到网络栈丢弃。当你在一个TCP连接上调用”connect()”时,
2013-07-17 21:11:57
13271
2
原创 处理大并发之二 对epoll的理解,epoll客户端服务端代码
处理大并发之二对epoll的理解,epoll客户端服务端代码序言:该博客是一系列的博客,首先从最基础的epoll说起,然后研究libevent源码及使用方法,最后研究nginx和node.js,关于select,poll这里不做说明,只说明其相对于epoll的不足,其实select和poll我也没用过,因为我选择了epoll。说起epoll,做过大并发的估计都不陌生,之前做了个ST
2013-07-16 20:25:53
26663
6
转载 努力吧,现在也不晚(目前唯一一个转载文章,用于激励自己)
努力吧,现在也不晚来自http://blog.csdn.net/shuaihj/article/details/8586101或许这再一次印证任何人每一次的成功背后都有不为人知的付出和汗水。 哈佛老师经常给学生这样的告诫:如果你想在进入社会后,在任何时候任何场合下都能得心应手并且得到应有的评价,那么你在哈佛的学习期间,就没有晒太阳的时间。 作为闻名于世的学府,
2013-07-11 22:42:02
3688
原创 memcache研究
memcache研究最近开发了一个数据库,该数据库是利用共享内存做的,测试了下增删改查的性能,想与memcached数据库做个对比,故研究下memcached。那什么是memcached?memcached是一个高性能,分布式的内存缓存服务器,通过内存的数据访问来降低对数据库的访问,从而提高动态内容应用网站的速度。memcached的特征:(1) 基于C/S架构,协
2013-07-11 21:38:04
2198
原创 五颜六色的日志
日志打印根据cout颜色的处理,封装了一个日志处理函数。一个小小的工具,方便日志调试。"\33[0m" :白色"\33[1m\33[34m":蓝色"\33[1m\33[33m":黄色"\33[1m\33[31m":红色"\33[1m\33[35m":粉色"\33[1m\33[32m":绿色根据此进行封装直接贴代码文件log.h#ifndef LOG_H#
2013-07-09 20:21:10
1927
原创 固定数组随机数
固定数组随机数 有时候需要固定数量随机数,但是要保证这些随机数都在一定的范围内且这些随机数不一样。 方法1,将其产生的随机数放入一个vector中,每次放入数据的时候对vector进行find,find失败则放入数据。这种方法就不贴代码了,因为性能不高,要是想要一个100万条的随机数,不知何时程序才能执行完,因为find的效率太低了。 方法2,将随机数插入set容器中,因为
2013-07-09 20:18:11
2849
原创 Linux下精确控制时间的函数
Linux下精确控制时间的函数 在测试程序接口运行时间的时候,常用time,gettimeofday等函数,但是这些函数在程序执行的时候是耗费时间的,如果仅仅测试时间还行,但是如果程序中用到时间控制类的函数,如time, gettimeofday自身还会消耗不少时间,且增加程序执行的成本,这样得到的时间不精确。 针对这种情况,使用CPU心跳的函数来处
2013-07-09 20:16:46
3760
原创 对深拷贝与浅拷贝的再次理解
对深拷贝与浅拷贝的再次理解 记得11年底找工作的时候,面试时曾经遇到有面试官问的对深拷贝与浅拷贝的理解,那时候自己回来查了资料,写了篇博客,感觉自己理解了,其实理解的不深刻,最近在调试bug的时候,再次遇到深拷贝与浅拷贝,认真分析了,写写自己的心的吧。 先说下自己的理解吧,浅拷贝,即在定义一个类A,使用类似A obj; A obj1(obj);或者A obj1 = obj
2013-07-08 21:59:07
53101
17
原创 处理大并发之一 对异步非阻塞的理解
处理大并发中对异步非阻塞的理解 在研究nginx和node.js的时候常会遇到异步、非阻塞等,之前自己也经常使用epoll,对其同步与阻塞,异步与非阻塞有了一定的认识,现对参考资料总结下。 首先讨论下使用事件驱动,异步编程的优点: 充分利用了系统资源,执行代码无须阻塞等待某种操作完成,有限的资源可以用于其他的任务。其非常适合于后端的网络服务编程。 在服务
2013-05-16 20:22:27
36495
22
原创 我的CSDN情结--工作一年总结
我的CSDN情结--工作一年总结 工作一年了,我记得特别清楚,2012年3月22号开始实习,6月29号毕业典礼,7月1号我就正式上班了吧,算是正式工作了,工作一年的时间里,迷茫,彷徨,抱怨都有过,甚至想过交钱离职,但这些都是暂时得,首先想对自己说的是,对得起自己,时间没有浪费。自己也成长了很多,想想去年的这个时候,再想想现在,一切都在不言中。首先大致回顾下一年来自己学到的知识和做过的
2013-05-14 20:45:14
4841
4
原创 六一儿童节倾情奉献,校内首发,CSDN再发,2011年冬季c/c++程序员找工作心得
六一儿童节倾情奉献,校内首发,CSDN再发,2011年冬季c/c++程序员找工作心得 我把2011年末2个月去的公司,遇到的问题整理出来,自己复习下,也供大家参考。其实没什么经验,也就是流水账。对部分公司我也发表了自己的观点,不过纯属自己的体会,给大家参考下。所有的笔试题目都是部分的,我记录下的都是自己认为比较经典的,要么就是我不太会的,至于一些常考的,简单的不能再简单的,就没有必要记
2012-06-01 23:16:16
5848
1
原创 用无符号的整形来表示一个IP地址
用无符号的整形来表示一个IP地址 在socket编程的时候,一般我们会用到addr.sin_addr.s_addr=inet_addr("192.168.1.117");但是对于这个IP地址的输入参数,我们只能是字符串型的,很多场合要求输入的参数是整形。这时候我们就应该想一些其他的处理办法。 我在做这个的时候,暂时没想到其他好的方法,只能在输入参数的地方提供一个数组,但是不符合
2012-05-25 12:56:30
5205
原创 Linux下测试程序的运行时间
Linux下测试程序的运行时间简单写个小的知识点,测试代码的性能,测试代码执行的时间。要包含头文件#include "time.h"#include 代码如下:/*...............测试程序运行时间...................*/ time_t startT,endT; double totalT; startT = time(NULL)
2012-05-21 18:35:31
5381
3
原创 写在博客访问量突破2W时
写在博客访问量突破2W时 自从2012年1月11日写了第一篇博客——对深拷贝和浅拷贝的理解,至今已经4月有余了,共计48篇博客,其中1月份7篇,2月份20篇,3月份19篇,4月份到现在2篇。这个数据说明了说明问题?说明了虎头蛇尾,坚持不下来。 至今博客访问量已经达到2W有余,基本上看我博客的朋友,我都是不认识的,谢谢他们长期以来对我的关注。在博客发表的过程中有很多朋友给我留言,
2012-05-20 15:36:40
1555
6
原创 贵在坚持,你坚持了吗
一转眼快毕业了,可是我的博客从进入4月份就没怎么写过,曾经的豪言壮语,每天更新一篇博客,曾经说的博客需要用心去经营,现在都已经烟消云散。 虽然一直未写博客,但是我一直在关注我的博客,从未停止过,公司不能上网,偶尔去查资料的时候登陆下自己的博客,一直用手机登陆我的博客首页,实习工作了,变得很忙,有很多东西需要去了解,有很多知识要去学习,按照常理说那博客岂不是更新的更勤了,可是,也许是这种所
2012-05-19 17:26:09
1830
8
原创 四月第一篇博客
感觉不写博客,好像做了亏心事一样 很久没写博客了,进入4月份一篇也没写,自己感觉挺惭愧的,之前大言不惭的说每天更新博客,这下不知道更新到哪里去了。 但是这段时间真的很忙,一边在公司实习,实习做课题的过程中会遇到很多问题,针对问题本来可以写博客,但是还是没写,因为写需要花比较多的时间。要毕业了,学校还一大堆事,毕业论文,体检,采集信息等等乱七八糟的事情,忙的你是晕头转向的。
2012-04-10 20:22:54
1377
8
原创 3月最后一天随笔
今天是3月最后一天,理应写点东西,博客也不像以前那样更新了,原因很简单,没时间。今天下午把之前写的代码,从C语言改为了C++,都怪自己从开始做的时候没有面向对象的思想,今天改的时候,刚开始真是无从下手,不知道咋弄,其实自己服务器写的代码也不是很多,也就是用个epoll函数处理并发,然后是接收发送数据什么的,我把C语言写的函数看了几遍,又从新梳理了下流程。 梳理的流程如下:从main函数开
2012-03-31 21:43:35
1135
2
memcached全套安装资料,memcached库,libevent库, C/C++ memcached 客户端库:libmemcached
2013-07-11
memcached 安装文件,libevent库, C/C++ memcached 客户端库:libmemcached
2013-07-11
node.js比较全的开发资料
2013-05-14
启明星辰2011校园招C笔试题 + 答案
2012-02-04
QT 3.3 中文白皮书
2012-01-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人