自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(84)
  • 资源 (7)
  • 收藏
  • 关注

原创 python较为安全的关闭一个流的写法

阅读python的logging模块源码,这样关闭一个流stream = self.streamself.stream = Noneif hasattr(stream, "close"): stream.close()

2017-11-16 15:56:48 1206

原创 web开发者很容易困惑的地方

http协议实现的web接口,接收与发送数据,有没有可能发生丢包,表象是接受的数据不完整。答案: 不可能原因: tcp传输的可靠性,深入理解需知道tcp/ip协议的,建立连接三次握手,断开连接的四次握手如果有人问,http不是应答式的么,这里我们需要知道,htttp是应用层,TCP/IP协议层,不可混淆,举个例子,网卡把你的数据截断,你应用层是处理不了的。htt

2017-10-26 16:50:35 341

原创 CDN简介

CDN简介用户网络环境复杂,用户遍布全球,服务器站点压力大在国内,跨运营商访问非常慢,即使你机房都是双IP,双网卡,各省市的网络质量也存在差异。可通过http://www.pc841.com查看我国网络带宽性能报告为了各地区访问网络资源更快,很自然的想到了就近原则,避免因地域差异导致传输速度与稳定性CDN: Content Delivery Network即内容分发网络,到处建设节点,用户就

2017-10-23 14:42:21 514

原创 mysql梳理了一些常识,先记录

1. 查询缓存(相同的查询执行多次的时候,查询结果会被缓存)// 查询缓存不开启 $r = mysql_query("SELECT username FROM user WHERE signup_date >= CURDATE()"); // 开启查询缓存 $today = date("Y-m-d"); $r = mysql_query("SELECT username

2017-10-20 14:36:04 294

原创 python经常管理supervisor简单介绍

一般的在没有集成进程(服务)可视化管理前,我们需要一个进程管理工具,同时具备拉取,监控的功能。supervisor轻量好用1. 安装,不细说2. 配置,举个例子:指定环境,启动命令,日志[program:msg-push]environment=PYTHONPATH=:,LD_LIBRARY_PATH=/home/www/python_lib:command

2017-10-16 12:07:29 373

原创 tornado使用须知

一,tornado是单线程,基于select/epoll/poll监听fd读写事件的,事件驱动模型二,由于tornado的特性,则不能有任何的阻塞(IO阻塞与CPU等待), 如某个请求需要花费5秒才能完成, 则一秒tornado只能处理0.2个请求, 即使你加上20个线程异步处理,也只能每秒处理20 * 0.2 = 4 个def handler_request(self, requ

2017-10-13 14:26:22 477

原创 不使用多线程, 使用select, 实现http请求的异步

使用select实现ioloop, 实现http请求异步,有利于理解select(epool)模型, 代码如下:#!/bin/pythonimport selectimport timefrom http.client import HTTPConnectionclass Handler(object): passclass AsyncHTTPHandl

2017-09-30 11:39:12 565

原创 python2.6对json字符串有序的解析成有序的字典

在某些设计不合理的的加密方式下,生成的json字符串,解析成对象的时候,序保证字典key的先后顺序。Python2.6不支持,采取的办法是:1. 把Python2.7的json目录复制到工程目录,取名叫jsonx2. 修改几处import使无语法错误3. 参考它的encoder,实现如下代码:import jsonxfrom jsonx.encoder imp

2017-09-26 10:38:58 1239

原创 tornado版本及多线程情况梳理

python2.6  tornado-4.2-py26环境import tornado.ioloopimport tornado.webfrom tornado.web import asynchronousfrom concurrent import futures executor = futures.ThreadPoolExecutor(max_workers=2)def cal

2017-07-06 16:55:09 1143

原创 mysql索引

mysql存储比较char与varchar区别官方文档 https://dev.mysql.com/doc/refman/5.7/en/char.htmlint 固定为 4 bytesB+Tree索引d越大,索引性能越好,d的上限为:dmax=floor(pagesize/(keysize+datasize+pointsize))

2017-06-30 16:06:24 217

原创 python垃圾回收及闭包异常抛出

#coding: gbkimport sysdef foo(func): def bar(*args, **kwargs): ret = func(*args, **kwargs) print "done func" return ret return barclass Obj(object): def __

2017-05-31 16:40:30 381

原创 python源码PyObject简单解析

1. python一切皆定义, 对象定义object.h/* Define pointers to support a doubly-linked list of all live heap objects. */#define _PyObject_HEAD_EXTRA \ struct _object *_ob_next; \ st

2016-07-21 12:03:32 3358

原创 使用python的yield实现任务调度.给定一个任务列表,每个任务轮流切换执行,类似于切片

任务:给定一个数N, 每次对这个数减1给定一个数N, 每次对这个数加的次数统计任务列表就是上面多个任务, 要求每个任务轮流执行(调度):#!/bin/python3.5#coding=utf8'''sched task yield'''def count_donw(n): while n > 0: print("count donw", n) yie

2016-07-14 15:00:00 1342

原创 I/0事件驱动实现异步curl,一

先来个简单的,在事件处理上面并没有实现异步#!/bin/pythonimport selectfrom http.client import HTTPConnectionclass Handler(object): passclass AsyncHTTPHandler(Handler): def __init__(self, url, io_loop, callba

2016-07-14 12:19:55 524

原创 根据cookbook, 多线程情况的事件驱动IO

模拟使用线程池, 事件驱动IO模型, 这里使用的select1. 采用对socket,初始化完成之后,内核状态是不可读,不可写(无东西可读)2. 线程池完成工作之后, 回调_complete, 把线程计算结果及回调函数放入pending的list3. 发送一个字节, 告诉内核select, 返回flieno那个socket可读,执行handle_receive把pending依次处理完

2016-07-12 17:56:54 508

原创 python-cookbook事件驱动的i/o模型

行行色色的事件驱动或异步I/O的包, 我们无法理解底层实现模型, 根据python的cookbook, 比较明了的体现了该模型, 便于今后理解及开发相关ioloop, eventloop。基于select实现的单进程单线程的事件轮询模型。 测试用telnet 127.0.0.1 8888可以多开几个窗口#!/usr/bin/env pythonclass EventHandle

2016-07-12 15:04:48 508

原创 测试需要修改系统时间之后, 引起https证书过期问题

开发测试的时候,我们经常需要倒退时间。倒推时间,请求https相关资源的时候,自然引起证书的问题:    return self.__request(url)  File "build/bdist.linux-x86_64/egg/curl/__init__.py", line 87, in __request    self.handle.perform()error: (60,

2016-07-07 11:28:53 9903

原创 如果实现python字典的只读, 考虑字典内容有list, dict的嵌套问题

下面代码并没有实现, 预留后续继续研究:1. 完全模拟字典行为2. 只读3. 特别的在遍历,嵌套上面需考虑class _CfgData(object): """配置数据,主要为了实现类似JSON格式数据的ReadOnly。 @author: [email protected] """ def __init__(self, data): sel

2016-06-23 17:15:55 2129

原创 upd简单广播例子

给局域网同一网段发送广播包(同局域网不同网段暂时还去看)广播包发送者:#coding=gbk#!/python/binimport socketsock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

2016-05-03 16:05:32 1088

原创 mysql查询语句speed select

1. 考虑索引参考文档http://dev.mysql.com/doc/refman/5.5/en/mysql-indexes.htmlhttp://dev.mysql.com/doc/refman/5.5/en/select-speed.html一般Mysql的索引使用B-trees数据结构使用索引注意事项:1. 索引需出现在where条件语句中2. 多个索引, my

2016-04-29 16:33:31 910

原创 参考sqlalchemy.pool自写连接自动回收

#coding=gbk#!/bin/python2.6import MySQLdbimport weakreffrom concurrent import futuresimport timeimport threadingpool_executor = futures.ThreadPoolExecutor(max_workers=3)def

2016-04-21 15:21:30 2637

原创 mysql连接池, 连接的释放, 连接的回收, 连接释放机制

#!/bin/pythonfrom sqlalchemy.pool import QueuePoolimport threadingimport MySQLdbimport timedef creator(): c = MySQLdb.connect(host="192.168.41.76", db="test", user="root", passwd="root", po

2015-12-03 10:04:42 18505

原创 python 记录

1. 继承object与不继承区别还是挺大的,之后记录默认都继承object2. python重写方法如果父类要调用记得super3.

2015-09-10 12:15:35 481

原创 mysql锁-for update

文档:SELECT ... FOR UPDATE sets an exclusive lock on the rows read. An exclusive lock prevents other sessions from accessing the rows for reading or writing. 阻止其他session的读写锁,排他锁,在读取的行上面# c

2015-07-01 13:48:54 644

原创 shell基本

1. 按行读取文件#!/bin/bashexec < a.txtwhile read linedo echo $linedone2. shell日期u=`date "+%Y-%m-%d %H:%M:%S"`echo $uecho $u >> d.logkkkk3. 分号, 多行命令分割符号如:echo "begin bak..." ; cp $filenam

2015-06-23 14:19:47 406

原创 shell按行从文件读取, 分割成数组

cut -d 如果找不到分割符号, 就会输出原字符串,无聊-f后面是什么,加-s就什么都不输出了#!/bin/bash# 从文件中按行读取,每行分割成字符串, 形成数组# j=0while read linedo i=1 while : do str=` echo $line | cut -d ":" -f $i ` #echo

2015-06-08 13:53:57 22934 1

原创 python wsgi 规范 与java的servlet规范比较

1. wsgi 是python的特有规范, 与java的servlet规范一样, java特有搞这个规范干嘛呢:简单socket:执行下面代码, 在浏览器里面执行:http://localhost:8001/, 我们可以看到hello打印信息如下:#coding=utf8import socketso = socket.socket(socket

2015-05-29 11:22:32 5908 1

原创 python字典元素的删除

py在遍历字典的时候,一般的有涉及到满足条件则删除该元素办法1:a = {"a": "1", "b": "2"}for k,v in a.items(): if k == "b": del a[k] print a# {'a': '1'}办法2:a = {"a": "1", "b": "2"}f = filter(lambda i: i[0] !=

2015-05-18 10:50:07 6590 1

原创 看python的91个建议第7个建议, 常量写到同一个文件引发的一个问题

#coding=utf8import sysclass _const(object): class ConstError(TypeError): pass class ConstCaseError(ConstError): pass def __setattr__(self, name, value): i

2015-04-08 17:37:12 2488

原创 python的property简单实用

1. 一定要继承object2. setter不写,修改会报错3.getter非必需, 但是可以用来做额外的事class P(object): """ must extend object """ def __init__(self, v): self._v = v @property def v(self)

2015-04-07 17:31:26 526

原创 python logger

#coding=utf8import logging# logging.basicConfig(filename="test.log",format="[%(asctime)s]:[%(threadName)s]:[%(funcName)s]:%(levelname)s:%(message)s", level=logging.INFO)logging.info("===in

2015-01-12 17:11:02 940

原创 linux-001

linux tar 最常用:

2014-11-03 23:04:38 497

原创 python调用dll

把C代码编译成dll, python可以直接调用from ctypes import *user32 = windll.LoadLibrary('user32.dll')user32.LockWorkStation()

2014-09-19 09:52:35 785

原创 java 调用ice示例

1. 根据ice文件生成对应的java文

2014-08-27 14:13:46 2640

原创 python singleton

#coding=utf8class Singleton(object): """python单例 输出结果: __new__ __init__ __new__ __init__ x 28608176 x 28608176 """ def __init__(self, name): print

2014-08-21 16:48:02 831

原创 python 装饰器

#coding=utf8def wrapper(func): def proc(*args, **kwargs): print "wrapper foo proc" ret = func(*args, **kwargs) return ret return proc@wrapperdef foo(): print

2014-08-19 22:23:20 704

原创 Java调试打印堆栈信息

public class DebugUtil {    public static void logCurrentThreadStack() {    StackTraceElement[] stack = Thread.currentThread().getStackTrace();    StringBuffer sb = new StringBuffer();   

2014-05-11 21:25:01 2246

原创 python with 简单示例

#!/usr/bin/python26#coding=utf-8import sysclass V(object): def __init__(self): print "__init__ invoke" def __exit__(self, type, value, traceback): print "__exit__"

2014-04-02 14:17:47 575

原创 selector demo

import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.nio.CharBuffer;import java.nio.channels.SelectionKey;import java.nio.channels.Selector;import java.nio.channels.ServerSock

2014-03-28 10:32:45 730

原创 python中文截取

username是已经进过utf-8编码之后的参数u = unicode(username,"utf-8")u = u[:4]+"*"u.encode('utf-8') 转成unicode之后,中文就是一个字节了,字母与汉字都是4个字节

2014-03-25 18:57:58 814

新闻发布系统源码,有前台后台,struts2+Hibernate 实现

新闻发布系统源码,有前台后台,struts2+Hibernate 实现。是培训机构练手项目,适合新手练习积累项目经验。包含数据库源码

2010-08-27

新闻发布系统静态页面

一个很好的新闻发布系统静态页面,有前台后台,布局合理,有新闻的分类,如焦点新闻,公告的动态滚动效果。

2010-08-27

MVC宿舍管理系统,C++课程设计题目

MVC宿舍管理系统 宿舍管理系统VC课程设计 C课程设计 #include "MY_ABOUT.h"//关于窗口 #include "HANDDATAINMORE.h"//多信息录入窗口 #include "XUEHAOFIND.H"//按学号查询信息输入窗口 #include "XUEHAOFINOKDOUT.h"//各个查询结果输出窗口模块 #include "QINSHIHAOFIND.h"//按寝室号查询信息输入窗口 #include "NAMEFIND.h"//按姓名查询信息输入窗口 #include "SUINGKOWN.h"//使用说明窗口头文件 #include "MYSTUTENT.h"//学生结构体链表头文件 #include "DATACHANGEIN.h"//修改信息学号输入窗口 #include "DATACHANGEOUT.h"//修改信息输出窗口 #include "DELETEDATA.h"//删除信息对话框

2010-05-25

Java容器类List、ArrayList、Vector及map、HashTable应用

List、ArrayList、Vector及map、HashTable、HashMap的区别与用法 使用容器排序 Vector由于使用了synchronized方法(线程安全)

2010-04-27

C 八皇后问题,有注释

#include <iostream> #include <fstream> #include <cmath> using namespace std; int n; int **a; int count=0; int place(int i,int j) {//判断i,j这个点是否可以放皇后 for(int k=1;k<=i;k++) { if(a[k][j]==1) return 0;//j列有个皇后就不能放了 for(int h=1;h<=n;h++)

2009-12-23

C/C++大整数加法

C实现大整数加法 #include <iostream> #include <string> using namespace std;

2009-12-15

数组实现任意进制转换,转换成二进制等

#include using namespace std; int main() { int n,m,a[10000],j,i;i=0; cin>>n>>m; while(n) { a[i]=n%m; n=n/m; i++; } 任意进制的转换,不能转换小数

2009-05-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除