自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(107)
  • 收藏
  • 关注

原创 【随笔】编程能力和程序员

什么是真正的编程能力?知乎上曾经有人问过,什么是真正的编程能力,答案有很多,比较有代表性的观点有这几种:第一种观点是,编程就是数据结构和算法,第二种观点是编程能力就是系统集成能力,第三种观点是从软件工程的角度出发,分析建模能力和写高质量代码(可维护性,扩展性等),还有一种观点是很抽象的解决问题的能力。 其实每一种看法都有他的道理和逻辑,但是总是让我觉得不够全面,最近一段时间重读《深入...

2019-01-20 01:02:37 360

原创 单链表递归求平均值

两种解法: 第一:double getAverage_List(LinkList L, double sum, int i){ if (L->next != NULL){ sum = sum + L->data; return getAverage_List(L->next, sum, i+1); }else{ ...

2018-08-18 18:11:20 9809 1

原创 py_redis : python 实现的简单redis

github: https://github.com/yangzhezjgs/py_redis 为了练习编程而写的一个模拟redis的key-value数据库 (1)实现了redis的五种数据结构,但是仅实现基础的set,get指令 (2)采用epoll实现客户端并发,并添加了threadpool,和lock (3)实现了一个类似redis-cli的客户端shell使用方法:g...

2018-04-08 14:25:24 715

原创 Python拾遗

来源:https://zhuanlan.zhihu.com/p/33266239 做了一些归类整理语法 知道python的语法,缩进和符号对应的含义。知道PEP8常见的范式以及代码格式化方法。知道python所有关键字的含义和使用。 del assert知道python中大部分常用的类型(布尔值,字符串类型,数字类型,序列,集合,字典,生成器…)。知道如何编写pyth...

2018-03-08 14:45:15 376

原创 python 实现namedtuple(元类)

PS:非原创,网友的代码代码:def namedtuple(tuple_name, attrs): class Meta(type): def __call__(self, *args): return type.__call__(self, args) attrs_set = set(attrs) def __init__(...

2018-03-07 17:51:06 585

原创 python 实现具有TTL功能的属性装饰器

题目描述: https://www.shiyanlou.com/challenges/3000 实现一个带 TTL 生存时间功能的属性装饰器。如果每次访问属性时间间隔小于 TTL,则返回相同的缓存值,但是访问间隔大于 TTL 时,则重新计算属性。 说一下做的时候遇到的几个问题: 1.instance是指ttl_property类自身 2.需要self.price = self._pric...

2018-03-02 10:42:48 1018

原创 Python实现LRU缓存模拟

LRU LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。 实现原理 利用list记录key的次序,每次set,或get操作将key插入到list首位。 缓冲区满之后再出现set操作,移除末尾的key。 使用Python3 ,key in dict判断key是否出现过,...

2018-03-01 11:54:29 1767

原创 python 异步与协程学习

参考: 深入理解Python异步编程 理解 Python asyncio(1)异步非租塞 http://blog.csdn.net/yz764127031/article/details/72459158 以春运火车票为例, 异步—-你使用分流软件抢票,设置好时间类型,软件自动运行 非阻塞—-你不用等抢票结果,可以去做别的事 如何获得结果: 轮询—–每隔一段时间,你看一下抢到票没有

2018-02-08 17:04:10 323

原创 爬虫经验

最近实习写了两个爬虫,使用的工具是requests , bs4, selenium + PhantomJS, 这里写一些总结。 1.ajax 通常可以通过分析js文件,找到数据接口,可以直接获取到数据2.正则表达式re 获取到的json数据格式为:jQuery1910981251106322391_1517453911085({…})就需要用正则表达式来解析数据3.验证码识别 最

2018-02-01 11:22:48 525

原创 python编程题(继承和元类)

1.实现不可修改的字典def is_immutable(self): raise TypeError('%r objects are immutable' % self.__class__.__name__)class ImmutableDict(dict): def setdefault(self, key, default=None): is_imm

2018-01-18 18:26:25 964

原创 一道Python编程题(类方法,getitem与setitem)

一些说明: 题目由来最近加了个接单做大学生编程作业的兼职群,13日一单的其中一道题,然而那单已经被退回去了,因为群里发的时候,我没看到。。感觉题目挺有意思,就花几个小时做了一下。 有两个坑的地方,一个是Account表里是a_id,所以pymysql返回的字典的key是‘a_id’,而下面是{‘id’:’a01’,’balance’:500},所以如果采用 user=bank_user(‘u

2018-01-14 01:47:59 494

原创 数据库原理学习经验(B树与索引)

step 1: 数据库的最简单实现 重点理解为什么要用B树,为什么要有索引step 2: 实现一个B树,代码理解参考下面 http://blog.csdn.net/qifengzou/article/details/21079325#include #include #include #include typedef struct _btree_node_t {

2018-01-12 16:41:02 888

原创 深入理解flask框架(4):session

flask中session的实现是基于cookie。 打开flask源码的session.py文件,我们可以看到最后的接口类中,主要有open_session,save_session两个函数。class SecureCookieSessionInterface(SessionInterface):..... def open_session(self, app, request)

2018-01-12 15:20:53 646

原创 深入理解flask框架(3):config与extension

configflask中的配置,都是通过config来控制 那么config究竟是什么?self.config = self.make_config(instance_relative_config)再来看make_config函数:def make_config(self, instance_relative=False): root_path = self.root_p

2018-01-09 16:39:42 1878 1

原创 深入理解flask框架(2):应用上下文与请求上下文

什么是上下文?flask框架中的上下文本质上就是两个类,我们可以先看一下他的初始化函数: 应用上下文class AppContext(object): """The application context binds an application object implicitly to the current thread or greenlet, similar to how

2017-12-29 12:01:24 1875

原创 深入理解flask框架(1):WSGI与路由

flask是一个小而美的微框架,主要依赖于Werkezug 和 Jinja2, Flask 只建立 Werkezug 和 Jinja2 的桥梁,前者实现一个合适的 WSGI 应用,后者处理模板。 Flask 也绑定了一些通用的标准库包,比如 logging 。其它所有一切取决于扩展。 本文主要分析了flask是在Werkezug基础上如何构建WSGI接口与路由系统的。WSGI是什么?WSGI的本质

2017-12-28 12:11:18 1592

原创 最近几个月总结(17年12月)

最近一段时间发生了很多事,我选择一些比较重要的事情来记录一下: (1)完成了大四的课程。 收获包括两方面: 1.完成了《市场营销学》的课程,对现代的商业有了更多理解和感悟。 2.完成了《算法设计与分析》的课程,并完成了B树的基本操作这一课程设计,并自学了数据库索引等内容,对数据库,算法的应用有了更深的理解。(2)选择了毕业设计题目。 毕业设计选择了刘老师的TensorFlow的题目,主要是

2017-12-17 14:32:23 653

原创 《算法笔记》入门篇笔记

PAT乙级的考点总结计算机组成原理数据的表示与运算数字 因为位数限制,我们需要考虑溢出问题,大整数运算时,为了避免溢出,我们需要用数组来存储数据,模拟运算。字符串 ASCII码,八位,二进制 考点:数字与字母转换,大写字母与小写字母的转换,建二维字符数组建立字符串和数字之间的关系,散列思想:字符串映射为数字处理寻址方式—首地址+偏移量顺序存储 逻辑相邻的元素,物理位置也相邻,通过首

2017-09-23 21:31:08 381

原创 flask + vue.js 实现简单todolist应用

https://github.com/yangzhezjgs/flask_demo/tree/master/todolist使用vuejs,axios,flask,sqlalchemy,sqlite3(一个简单的单文件数据库)构建的一个TODOlist应用,练习前后端交互和增删查改。使用的手脚架为:vue init webpack-simple todolist搭建环境和依赖略

2017-09-13 00:12:44 3066

原创 基于flask实现的简单博客

github地址:https://github.com/yangzhezjgs/flask_demo/tree/master/blog技术栈: boostrap + flask + sqlalchemy + sqlite3(数据库)python版本: Python3requirement: click==6.7 Flask==0.12.2 Flask-Login==0.4.0 Flask

2017-09-12 12:14:48 7053 2

原创 werkzeug实现简单Python web框架(3):添加动态路由

借助werkzeug原生的Map,Rule来添加动态路由支持 修改了 __init__函数和add_url_rule,dispatch_request函数import osfrom werkzeug.wrappers import BaseRequest, BaseResponsefrom werkzeug.exceptions import HTTPException, MethodNotA

2017-09-06 11:26:29 812

原创 werkzeug实现简单Python web框架(5):扩展思路

通过前面三篇我们已经实现了一个简单的MVC结构的Python web框架,但是这个web框架还有很多不完善,可以进很多不同的扩展。(1)session支持 http是无状态的协议,但是我们可以用session来维持用户的状态(2)http协议相关的扩展 比如重定向,支持上传下载文件(3)如何支持返回json数据(4)添加异常处理(5)也可以继续完善orm实现的方法(6)路由方面:动态路由,正则匹

2017-09-04 12:02:38 738

原创 werkzeug实现简单Python web框架(4):添加orm支持

orm代码: 参考前文 Python实现简单orm 将代码复制粘贴到orm.py文件即可。下面我们用一个例子来说明这个简单orm的使用。 (1)新建 scheme.sqldrop database if exists my_user;create database my_user;use my_user;create table users ( `id` varchar(50) not

2017-09-04 11:37:27 394

原创 werkzeug实现简单Python web框架(2):添加jinjia2模板支持

添加了render_template函数,提供了模板支持,并进行了重构将鼓励函数和wsgi接口分开。 代码:import osfrom werkzeug.wrappers import BaseRequest, BaseResponsefrom werkzeug.exceptions import HTTPException, MethodNotAllowed, \ NotImple

2017-09-04 11:01:45 495

原创 werkzeug实现简单Python web框架(1):MVC模式

Werkzeug是Python的WSGI规范的实用函数库。使用广泛,基于BSD协议。 Flask底层就是使用了Werkzeug。关键点: add_url_rule方法调用,导致视图类通过调用类方法,返回一个闭包,闭包返回一个视图函数,于是建立了url与视图函数的映射关系。代码from werkzeug.wrappers import BaseRequest, BaseResponsefrom

2017-09-04 00:22:20 3207 1

原创 python 进阶指南

https://github.com/yangzhezjgs/advanced-python一份个人笔记和备忘录,包含很多摘抄和示例代码,基本覆盖Python的高级特性和语法。文档用mkdown语法来写,代码多数只能用Python3运行,可以当做一份目录和索引来学习。部分内容较为简略,待完善。

2017-08-30 16:25:08 331

原创 flask + redis 实现Server-Sent Event demo

学习要点: (1)web即时通讯 Web 即时通信,就是说我们可以通过一种机制在网页上立即通知用户一件事情的发生,是不需要用户刷新网页的。 常用的有Polling,Long-Polling,Server Send Event,WebSocket Server Send Event协议: HTTP 的头部Content-Type设置成text/event-stream就可以了。其实SSE,

2017-08-28 13:52:06 1556 1

原创 对服务器端编程的理解

服务器端编程的本质用一句话来概括就是解决客户端进程和服务端进程之间的通信和数据交换问题。 下面我们就要思考两个问题: 第一个是两个进程如何通信? 通常通过操作系统提供的socket系统调用来进行TCP连接。(IPC方法很多,并不只有socket) 第二个是如何保证双方互相理解? 需要建立相应的规则,这也就是我们所谓的协议。以Python web开发为例,一个http请求过程要经过: 浏览

2017-08-27 15:07:06 823

原创 python实现简单redis客户端(3)使用asyncio添加异步支持

使用Python3标准库的asyncioasynciofrom socket import *import [email protected] create_connection(host,port, *, loop=None): reader, writer = yield from asyncio.open_connection(host, port, loop

2017-08-26 21:25:48 2269

原创 python实现简单redis客户端(2)重构

将客户端划分为通信模块和客户端模块进行重构from socket import *class Connection: def __init__(self, host="localhost", port=6379): self.host = host self.port = port self.client=socket(AF_INET, SO

2017-08-26 00:29:29 545

原创 Xshell : Python实现的简单shell

原项目为:https://github.com/supasate/yoshXshell对原项目进行了重构(面向对象)和扩展(支持重定向,管道,&) github地址:https://github.com/yangzhezjgs/Xshell支持Python版本:2.7 3.5以上 主要使用Python标准库,需要安装prompt_toolkit++++++2017.9.24更新 (1)用pro

2017-08-25 22:53:57 19488 5

原创 一个web框架的诞生——写程序最重要的是开心

最近写完了自己的个人项目—— 一个轻量级的 python web框架Light,简单写写总结和心得体会。 完成这个项目的过程中学到的东西大体可以分为两个部分,一个是具有通用性的知识,一个是编写过程中的具体的细节和理解。 通用部分可以分为:1.http协议的理解 2.面向对象的设计思想 3.web框架的理解 4.对一个项目的管理和组织 具体部分就是:1.Python的面向对象的特性 2.Py

2017-08-20 23:28:53 465

原创 Python实现简单orm

参考修改了廖雪峰老师的代码 只完成了最基本的功能 数据库连接模块import pymysqlclass BaseDB: def __init__(self, user, password, database='', host='127.0.0.1', port=3306, charset='utf8', cursor_class=pymysql.cursors.DictCursor)

2017-08-19 23:37:22 724

原创 python实现简单redis客户端(1)

目的: (1)学习各种数据库客户端的原理: 连接数据库服务器的端口,发送协议,受到应答 (2)redis协议 Redis 的通信协议是基于文本的,且以行为划分,每行以 \r\n 结束。每一行都有一个消息头,消息头共分为5种分别如下:+ 表示一个正确的状态信息,具体信息是当前行 + 后面的字符;- 表示一个错误信息,具体信息是当前行-后面的字符;* 表示消息体总共有多少行,不包括当前行,* 后

2017-08-16 13:22:14 770

原创 [随笔]一种方法论

计算机学科有一句名言:计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决。 这就有两点启发,一是计算机体系结构发展至今,就是一个又一个间接层累加的结果,二是学习新的开源软件或者框架,就要学会去思考它是为了解决什么问题而诞生的,这样才能把握本质,事半功倍。 简单举几个例子,操作系统就是一个核心的间接层,目的就是为了提高软硬件资源的利用率,核心就在于IO设备与CPU之间的速度差。 web

2017-08-12 11:54:01 245

原创 flask+mongodb实现简单todolist应用

学习mongodb的小练习 效果 点击submit,显示如下列表 点击done,unifinished 变为 finished 点击delete删除 结构 todolist/ ├── app.py └── templates ├── base.html └── index.html代码 app.pyfrom flask import Flask, j

2017-08-11 21:35:32 2748 2

原创 Flask上下文机制的理解

推荐两篇文章: http://www.jianshu.com/p/2a2407f66438 https://blog.tonyseek.com/post/the-context-mechanism-of-flask/推荐先看第一篇,再看第二篇 第一篇对请求处理的流程进行了梳理, 第二篇分析了一些细节,并且说明了使用栈结构的原因。

2017-08-09 16:16:37 286

原创 《python之旅》推荐

地址:http://funhacks.net/explore-python/作者学习Python期间所写的博客整理成书。 建议阅读的章节: (1)字符编码 (2)函数式编程 (3)面向对象 (4)高级特性 概念解释清晰易懂

2017-08-06 21:24:28 348

原创 [随笔]深度

昨天看到一本书的序言,提到人工智能和机器学习的一个问题,“为什么我们小时候有人牵一匹马告诉我们那是马,于是之后我们看到其他马就知道那是马 。”一种解释是:我们在头脑里形成了一个生物关系的拓扑,我们认知的各种生物都会放在这个拓扑的结构里,而我们随着年纪不断成长的过程就是形成并完善各种各样的树形或者环形等拓扑的过程,并以此来认识我们所面对的各种新事物。 学习一门课程或者学科,也是相似的过程,从一开始

2017-06-28 23:15:08 258

原创 《200行Python代码实现2048》分析

实验地址:https://www.shiyanlou.com/courses/368 实验文档 https://www.shiyanlou.com/courses/368/labs/1172/document 1.有限状态机控制游戏逻辑 利用函数式编程,通过一个字典数据结构建立不同状态和函数之间的映射关系,不同的状态执行不同的函数并且获得新的状态。 while state != 'Ex

2017-06-21 23:05:29 4007

空空如也

空空如也

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

TA关注的人

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