自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 资源 (4)
  • 问答 (5)
  • 收藏
  • 关注

原创 【Python进阶学习】gRPC在Python的异步非阻塞实现方式

gRPC在Python的异步非阻塞实现方式前言问题&分析问题阐述原因分析解决方案服务端原服务端实现方式aio的服务端实现方式:客户端异步非阻塞方式同步阻塞方式性能优化效果最佳实践参考文献前言之前写过两篇文章讲述了RPC服务的概念和gRPC的基本使用、proto语法、TLS认证、异常处理和重连重试等等的教程。两篇文章传送入口:gRPC基本使用教程gRPC身份认证与流式通信当我们真正把gRPC服务部署到生产环境上的时候,除了上诉这些基本使用和安全认证之外,我们还要考虑性能问题。本文主要探讨

2021-02-07 14:25:23 2709 1

原创 【Python进阶学习】Python模块引入机制与规范

Python模块导入机制与规范前言Python模块导入导入原理路径查找机制绝对路径导入相对路径导入Python模块导入常见问题__init__文件__all__变量__name__变量循环导入解决办法大型项目中Python模块导入规范参考文献前言在我们平常工程里使用Python的过程中,经常需要解决各个模块的导入问题,而且也常常遇到引用路径查找不到、交叉导入模块等等问题,故写这篇文章,旨在讲述Python的模块导入机制和我们平时大型项目中应该遵循的模块导入规范Python模块导入日常编程中,为了能够

2020-09-25 14:35:47 639

原创 【Python进阶学习】基于async和await实现非阻塞I/O调用

Python基于async和await实现非阻塞I/O调用前言python协程与I/O调用的现状协程的一般使用方法Python中一般的I/O调用方法常用的异步I/O库aiohttp库aiomysql库关于async和await结合Tornado框架实现异步服务器基本的实现方式非阻塞的实现方式Tornado部署最佳实践参考文献前言前面的章节中讲述过Python的协程及其使用方法,在众多网络模型中,为了实现高并发也有很多方案,多线程,多进程和协程。而协程的方式,调度来自用户,用户可以在函数中yield一个状

2020-08-21 14:29:56 2764 1

原创 【Python进阶学习】多继承的使用及注意点

【Python进阶学习】多继承的使用及注意点前言Python的继承单继承多继承多继承的方法执行顺序多继承时通过super方法初始化关于Python的_mro_方法Python多继承的注意事项参考文献前言继承(英语:inheritance)是面向对象软件技术当中的一个概念。如果一个类别B“继承自”另一个类别A,就把这个B称为“A的子类”,而把A称为“B的父类别”也可以称“A是B的超类”。继承可以使得子类具有父类别的各种属性和方法,而不需要再次编写相同的代码。在令子类别继承父类别的同时,可以重新定义某些属性

2020-07-31 17:56:15 656

原创 【Python进阶学习】gRPC身份认证与流式通信

【Python进阶学习】gRPC身份认证与流式通信前言RPC的身份认证RPC服务一般的加密认证方法gRPC的加密认证方法实践gRPC的TLS认证生成证书部署gRPC服务加入TLS认证gRPC的流式通信流式通信的方式流式通信的具体实现什么时候用Streaming RPCgRPC的异常处理gRPC的异常类型重连机制重试机制对冲策略重试限流参考文献前言上一篇文章讲述了RPC服务的概念和gRPC的基本使用、proto语法的使用教程。然而在我们真正把gRPC服务部署到生产环境上的时候,会遇到很多问题,首选要考虑的

2020-07-24 16:38:12 2437 1

原创 【Python进阶学习】gRPC的基本使用教程

【Python进阶学习】gRPC的基本使用教程前言快速上手gRPC了解protocol buffer语法使用使用工具生成对应语言的源代码搭建Python gRPC服务最佳实践gRPC的优势性能代码生成严格的规范流推荐使用gRPC的场景参考文献前言什么是RPC服务RPC,是Remote Procedure Call的简称,翻译成中文就是远程过程调用。RPC就是允许程序调用另一个地址空间(通常是另一台机器上)的类方法或函数的一种服务。它是一种架设在计算机网络之上并隐藏底层网络技术,可以像调用本地服务一样

2020-07-17 18:55:37 4231 7

原创 【Python基础学习】—pipenv的使用教程

关于Python虚拟环境管理,很多人一开始不以为意,把编程时所有依赖的库全安装在一起,要用的时候直接导入,看似非常方便,但是会造成很多隐患,本文旨在介绍pipenv虚拟环境管理工具来解决一下依赖管理问题

2020-06-30 14:43:42 1064

原创 【Python进阶学习】—协程

前言前面的文章提到过,python使用多线程,会因为GIL的原因导致多线程的使用效率低下,甚至比单个线程的处理速度还慢。然而在python编程中,为了解决多线程之间上下文切换的开销,以及增加线程控制的灵活性,python引入了协程。本文我们就来说一说python协程的特点和使用方法。一、协程定义定义:协程(Coroutine),又称微线程。协程的作用,是在执行函数A时,可以随时中...

2019-07-26 15:07:20 281

原创 【Python基础学习】—GIL

前言我们在使用python开发的过程中时常听到GIL这个词,并且发现这个词经常和Python无法高效的实现多线程关联在一起,关于python多线程的实现在前面的文章已经介绍过,本文我们主要来了解一下GIL到底是什么?为什么会影响python的多线程。一、什么是GILGIL全称Global Interpreter Lock,官方给出的解释如下:In CPython, the ...

2019-07-12 17:32:44 150

原创 【Python基础学习】—多线程

前言我们知道,每个独立的进程有一个程序运行的入口、顺序执行序列和程序的出口。进程里面的任务由线程执行,线程必须依存在应用程序中,多个线程执行能够提高应用程序的执行效率,多个线程之间共用进程的寄存器数据和堆栈等等。python多线程类似于同时执行多个不同程序,具有以下特点:1、用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度程序...

2019-07-11 11:33:35 311

原创 【Python基础学习】—文件和文件夹操作

前言日常开发过程中,我们常常需要用到文件以及文件夹操作,这些操作在linux命令行下本身就有,但是一旦我们需要将文件进行自动化操作,如写入、遍历读取、或者上传文件等等操作,我们就需要在Python下进行文件自动化操作的编程。本文主要介绍这些文件、文件夹操作,并作了一定归纳。一、Python文件I/O操作1、 打开文件:file object = open(file_name [,...

2019-06-24 15:52:15 234

原创 【Python基础学习】—时间转换函数

前言python的时间格式分为多种,几种格式之间的转换方法时常是我们遇到的而且是经常忘记的点,python不像php,时间字符串和datetime是一起的,只需要strtotime和date函数就可以相互转化。虽然网上已经有很多python时间转换的文章,但是由于作者本人经常做海外业务,需要各种时区之间的转换,所以这篇文章会对按时区转换各种时间格式做一个总结。转换方法图示(图片转自网...

2019-05-17 16:48:34 543

原创 【Python基础学习】—函数方法

前言与其他编程语言一样,函数(或者方法)是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。python的函数具有非常高的灵活性,可以在单个函数里面封装和定义另一个函数,使编程逻辑更具模块化。一、Python的函数方法定义函数方法定义的简单规则:1. 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。2. 任何传入参数和自变量必须放在圆括号中间。圆...

2019-04-19 17:39:07 314

原创 【Python基础学习】—类与实例

前言和其他编程语言相比,Python用非常少的新语法和语义将类加入到语言中。Python的类提供了面向对象编程的所有标准特性:类继承机制允许多个基类,派生类可以覆盖它基类的任何方法,一个方法可以调用基类中相同名称的的方法。对象可以包含任意数量和类型的数据。和模块一样,类也拥有Python天然的动态特性:它们在运行时创建,可以在创建后修改。Python的类Python类实例时,先调...

2019-04-12 13:36:49 185

原创 【Python基础学习】—数据结构基础

前言相比于PHP,Python同样也是脚本解析语言,所以在使用Python的时候,变量和数据结构相对于编译语言来说都会简单许多,但是Python相比于PHP来说,变量类型的定义会比较严格:string->int的转换没有PHP那么方便。但这也让程序稳定性有所提升,例如和客户端交互的时候,数据库取出来的数字int和缓存取出来的数字(默认是string)需要手动进行转换(否则会有报错提示),...

2019-03-08 16:59:42 284 2

原创 【文章内容变更】

PHP相关的基础知识和一些周边拓展知识已经总结了很多,由于最近半年本人工作原因,转为了Python工程师,也忙于快速更新自己的Python语言基础以及一些数据挖掘统计知识,故决定接下来的文字内容以Python基础知识为主,仅在工作之余的时间了解更多的PHP、数据库以及运维知识,所以PHP相关的学习文章将会更新比较缓慢。 后续也会更新Python语言与PHP语言在...

2019-02-28 09:49:34 143

原创 【PHP进阶学习】—关于PHP的composer使用

前言日常开发过程中我们常常需要借鉴或者引用别人的代码,在github上我们可以看到一些开源的项目、代码块、函数库、类结构等,我们可以直接clone下来,然后用在我们自己的项目中。之前的php是手工将其他人的代码copy到自己的项目中,有更新我们同样也需要手动git pull文件。今天介绍和了解一下composer,作为一种包管理工具,composer可以更高效便捷地管理代码包。一、概念...

2019-02-26 19:03:36 293

原创 【PHP基础学习】—关于PHP的md5盐值加密

前言通常情况下,我们加密密码或者其他字符串,都会采用md5的方式进行加密,但是我们常常看到有很多网站采用了md5+盐值的加密,这到底有什么好处呢?普通的md5加密又有哪些缺点呢?本文我们就来聊聊盐值加密的作用以及实现方法。一、普通加密方式的局限通常情况下,我们会把密码直接进行md5加密,加密后进行存储,然后每次登录校验都是拿md5后的字符串进行校验,这样相对于明文存储是大大降低了风险性...

2018-09-21 15:13:19 4181

原创 【PHP基础学习】—PHP异步非阻塞的实现方法

前言由于PHP本身是一种单进程的语言,每次请求在apache都是一个进程,在Nginx和fastCGI里面每个请求时一个单独的worker线程,而且在各个服务器里面的请求都是阻塞的,所以有些大批量的复杂逻辑或文本处理会导致请求响应时间很长,这里我们就要考虑让PHP实现异步非阻塞的做法,已达到减少响应时间的目的。一、各种实现方法1、FastCGI的非阻塞方法:fastcgi_finish...

2018-08-03 16:26:41 14860 2

原创 【PHP基础学习】—PHP错误和异常机制

前言以前版本的PHP只有错误没有异常。PHP5版本之后,有了异常机制,同时也完善了错误机制。我们可以在官方文档找到所有的错误的定义,这些错误可以大致分为WARNING,ERROR(fatalerror),NOTICE等;至于异常,异常是对程序错误的一种优秀的处理方式,较于错误,异常的优点是默认打印调用栈,便于调试,可控等,对异常的处理也要遵循前述的错误处理规则。本章就来总结一下PHP的错误和异常机...

2018-07-06 19:07:13 333

原创 【PHP进阶学习】—关于Geo的地图定位算法

前言日常开发中我们经常需要查找某个物体的定位,或者查找附近的范围等,我们自然而然会想到的方法就是利用各种提供服务的地图网站的API,基于API,用经纬度去实现定位和查找附近范围等等。然而,由于原理没有做一个了解和一定的认识,在对比距离远近关系或者控制精确程度方面,我们并不了解怎么利用这些经纬度数值去实现距离转化和对比。本章节我们就来探讨一下基于geo的位置算法原理。概念纬线:纬线是与地轴垂直的线,...

2018-05-14 19:59:53 2139

原创 【PHP进阶学习】—CGI、FAST-CGI、php-cgi、php-fpm的关系

前言通常我们在PHP开发中都以LAMP或者LNMP的服务器环境部署web服务,在这些web开发过程中时常会遇到CGI、FASTCGI、PHP-CGI、PHP-FPM等的概念,为了避免对这些名词理解不清或者混淆,本文就来梳理和记录一下这些专有名词的概念和区别。一、概念1、CGI:指的是Web服务器与web应用程序之间的一种数据交换协议。2、FastCGI:类似于CGI,Fast-CGI也是一种通信协...

2018-04-28 19:25:20 1267 1

原创 【经验分享】-PHP程序员的技能图谱

停了一个多月没写技术文档,主要是因为本人最近离职了,当然现在回来了,也就说明有了新的工作着落了。作为一个工作两年的程序员,能在深圳知名企业找到工作,一定程度上也能把你从离职前的失意转为自信和动力,毕竟跳槽总是不易的。乔布斯说过:那些看似在生命中没有关联、微不足道的事情就像一个个散落在各地的珍珠,当我的人生向前展望时我不会把它们都串联起来。但是等到我回顾人生时,我必须相信这些片断会在未来的某一天串连...

2018-03-28 17:09:11 3311 1

原创 【PHP基础学习】—PHP操作Redis

前言Redis是一个使用ANSI C编写的开源、支持网络、基于内存、可选持久性的键值对存储数据库。可支持多种编程语言对其进行操作。作为一个远程内存数据库,它不仅性能强劲,而且还具有复制特性以及为解决问题而生的独一无二的数据模型。本文也会通过PHP对Reids的操作示例来详解Redis命令。一、概念redis是一个key-value存储系统。和Memcached类似,它支持存储的

2018-02-06 21:06:50 246

转载 PHP declare(ticks=N); 的作用

转载自:http://blog.csdn.net/udefined/article/details/24333333看到得问里面有人问php中 declare作用,我回答了下,顺便自己记录下。一般用法是 declare(ticks=N);拿declare(ticks=1)来说,这句主要作用有两种:1、Zend引擎每执行1条低级语句就去执行一次 register_tick_fun

2018-01-17 12:17:36 214

原创 【PHP进阶学习】——依赖注入与Ioc容器

背景在很多编程语言(例如java)开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,一旦有修改,牵扯的类会很多。最早在java的spring提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过spring容器帮我们new指定实例并且将实例注入到需要该对象的类中。目前许多主流PHP框架也使用了依赖注入

2018-01-16 21:07:18 1347

原创 【PHP进阶学习】—类的自动加载机制

前言我们在常见的PHP的主流框架中通常写好一个类只需写好相应的命名空间或直接实例化类就可以实现类的使用。而不需要使用原生的方式把类文件一个个用require、include引入包含进来,这归功于PHP的类自动加载机制,也是本文讨论的要点。一、概念在PHP代码中,不需要显式地使用文件路径将类库文件包含进来,便可使用该文件中定义的类库,这种技术称作自动加载。在使用类或者定义了命名空

2018-01-10 17:45:10 362

原创 【PHP进阶学习】——垃圾回收机制

垃圾回收机制是一种动态存储分配的方案。它会自动释放程序不再需要的已分配的内存块。

2017-11-30 17:47:31 395

原创 【PHP基础知识】——详解nginx、php-fpm和mysql用户权限

前言:通常情况下,我们运行web应用的服务器有CentOS、Ubuntu、Debian等等的Linux发行版本。这时候,构成服务架构所必须的Nginx、php和MySQL等应用的权限控制就显得非常重要,各个服务对代码目录的权限要求各不相同,缺少某些权限会造成服务无法读写或运行的错误,降低了权限要求又会存在被入侵修改的隐患。这里我们就来总结一下nginx、php-fpm和mysql等等这些服务的权限划分。

2017-11-23 16:16:48 1534

原创 【PHP进阶学习】——命名空间

前言:命名空间(namespace),在编程语言中,是对作用域的一种特殊的抽象.它表示着一个标识符的可见范围。一个标识符可在多个命名空间中定义,它在不同命名空间中的含义是互不相干的。这样,在一个新的命名空间中可定义任何标识符,它们不会与任何已有的标识符发生冲突,因为已有的定义都处于其他命名空间中。

2017-11-17 16:53:45 462

原创 【PHP进阶学习】——Trait代码复用类

前言:众所周知,一直以来PHP和很多语言一样是单继承的语言,但是常常在编码过程中,我们需要在当前类中使用两个或两个以上的其他类的方法,这种情况下继承就不能实现,而往往采用new方式实例化很多要用到的类,这样就会很影响代码的结构和开发规范。于是Trait类诞生了,它是一种代码复用的语法,能够实现一个类中引用多个其他类的方法。

2017-11-08 17:46:27 3967

原创 【PHP基础知识】——操作Email

邮件已经成为我们生活中不可或缺的信息沟通方式,时常需要我们去群发或者定时发送一下邮件给指定对象,例如系统的故障报警邮件,批量回复一些服务信息等。因此,将发送邮件功能做到后台可配置或者自动化是程序开发的重要部分。像Java等语言一样,下面我们也来罗列一下PHP操作Email的发送和接收功能。

2017-11-01 15:44:09 693

原创 【PHP进阶学习】——PHP反射

前言:PHP从5.0开始完美支持反射API。PHP反射可以用于观察并修改程序在运行时的行为。一个面向反射的(reflection-oriented)程序组件可以监测一个范围内的代码执行情况,可以根据期望的目标与此相关的范围修改本身。PHP5具有完整的反射API,添加了对类、接口、函数、方法和扩展进行反向工程的能力。

2017-10-19 17:05:14 778

原创 【PHP基础知识】——PHP正则表达式

前言:正则表达式,是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些匹配某个模式的文本。

2017-10-17 09:39:28 372

原创 【PHP基础知识】——数据库MySQL操作(下)

接着之前的数据库文章,本篇文章除了总结数据库的一些常用知识和特点之外,还会介绍一下PHP连接、操作数据库的另外一种方法,即PDO。这也是PHP官方目前最新的数据库连接方式,更适用于PHP7。

2017-10-10 10:15:21 468

原创 【PHP基础知识】——数据库MySQL操作(上)

前言:MySQL数据库是基于Linux操作系统的开发出来的数据库,因为Linux是开源代码,MySQL也是免费开源码的数据库。其支持多种语言连接,能满足中小型企业对数据库的需求,使得其能在数据库界占有一席之地。MySQL+PHP组成的最佳搭档,是目前最为成熟、稳定、安全的企业级WEB开发技术,广泛应用于大型站点。其成熟的架构、稳定的性能、嵌入式开发方式、简洁的语法,使得系统能迅速开发。今天我们就来捋一捋PHP操作MySQL的一些知识与方法的总结。

2017-09-26 16:55:53 403

原创 【PHP基础知识】——PHP数组操作详解

前言:所谓数组,是无序的元素序列。若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。数组是特殊的变量,它可以同时保存一个以上的值。在PHP中用array来定义数组变量。

2017-08-24 10:25:01 426

原创 【PHP基础知识】——常用字符串处理函数总结

概要:我们知道,字符串操作是主流web编程语言的基础,也是在日常开发中不可或缺的一项。PHP处理字符串的能力非常强大,方法也是多种多样。文章列举了一些PHP中常见的字符串处理方法。

2017-08-17 15:06:35 1871

原创 【PHP基础知识】——文件及目录操作

前言:日常开发过程中,我们常常需要用到文件和文件夹操作以及数据处理的需求,通常Linux下我们都可以通过shell命令执行,同样在PHP中我们也可以采取PHP的内置文件处理函数进行文件的读、写、删改操作。

2017-08-15 10:33:01 271

原创 【PHP基础知识】——文件上传相关知识

摘要:众所周知,文件上传在一些网站应用中是必不可少的一部分。比如某些博客网站、论坛上传个性头像,wiki、知识网站等上传文章资料等等。这些都涉及到使用表单处理文件上传的知识,在php中我们可以使用$_FILES这个全局数组来处理。以下本人也做了关于php上传文件的方法和$_FILES变量解析的总结归纳。

2017-08-11 15:32:26 403

PHP操作Redis代码大全

非常全的PHP操作Redis的各种代码,汇总了一份命令指南。

2018-02-06

PHP操作FTP相关类

用于操作FTP的PHP类,亲测可用

2017-07-26

eclipse操作快捷键大全

经过整理的eclipse软件的快捷键大全,旨在帮助广大编程爱好者提高编程效率,很好用很强大哦!

2015-12-22

C#操作office(超经典)

许多次开发Windows项目都需要对office的word、excel、PPT、PDF等文档进行创建、读或写操作,常常让人思绪混乱、现在将一份整理过的文档共享给大家,希望对大家有用处!

2015-03-18

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

TA关注的人

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