自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

学而时习之2

互联网,nginx,数据库

  • 博客(38)
  • 资源 (4)
  • 收藏
  • 关注

原创 python检索特定内容的文本文件

windows环境下python2.7 脚本指定一个参数作为要检索的字符串 例如: >find.py ./ hello# coding=utf-8import osimport sys# 找到当前目录下的所有文本文件def findFile(path): f = [] d = [] l = os.listdir(path) for x in l:

2016-12-29 15:01:45 8226 1

原创 openresty关于时区的处理

openresty处理时区问题

2022-09-19 11:05:07 558

原创 openresty通过ffi调用一个c编写的base64动态库

base64不是加密,就是一种编码,将字符串的二进制按6个bit一组,每组的6个bit的形式转换一下。每组6个bit对应的字符是 有特定的映射表决定。映射表:都转成以上5种,目的是为了网络传输没有特殊字符。标准base64 不适合url中直接传输; safe_base64的做法是把最后那俩字符 +和/ 替换成 -_ 即可。解析的时候反向替换之后再base64解码。因为http传输,+号会被服务器解析成空格, 导致解析base64字符串失败。当然可以对传输的base64字符串进行url编码在传输, ngin

2022-07-14 14:34:19 1048

原创 nodejs中的promise和async以及wait的原理

promise的作用promise的含义是保证的意思,可以定义一个异步处理的对象他有两个参数(其实是两个回调函数,因为异步操作就两种结果,ok或者不ok):resolve函数是执行成功时调用的。reject函数是抛出异常时调用的。于是乎我们一般这么用定义 Promise对象var x = new Promise(function(resolve, reject){ var ret = .... if(ret成功){ return resolve(ret) }else{

2021-05-22 23:56:25 1439

原创 python3虚拟机环境用法

Python3的virtualenv用法安装pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenvyum install python3-pipmkdir test && cd testvirtualenv venv --python=python3创建了虚拟目录venv 后激活激活环境 source venv/bin/activate取消激活 deactivate激活后可以用pip安装对应

2021-05-15 00:20:25 224

原创 url编码和utf8以及unicode的东东

为什么要url编码为了安全的传输url除了 一下5类字符,其余的都要编码, RFC39860-9a-Z、-_.~4 (4个字符)! * ’ ( ) ; : @ & = + $ , / ? # [ ] (这些是保留字符,路径分隔,参数分隔等作用)~ 波浪线虽然不要求编码,但一些老网关或代理会编码。0 -127 者128个ascii表:00~1F + 7F 这32个是控制字符。20~7E 都是可见字符。怎么编码16进制表示形式,一个字节一个字节的表示 前

2021-05-10 23:40:26 1200

原创 数字签名和公开密钥体系

数字签名的作用在很多场合我们都需要在文件上签字,为什么不直接用电脑打呢, 这就是为了日后确认文件确实是你自己的签名,每个人的笔迹都不一样。数字签名也是一样的作用:保证B收到的是A发来的信息确实是A发的,而不是C冒充 A发的。数字签名为何能保证信息来源确定呢这就是非对称加密中的私钥和公钥的一个特性:– 私钥加密的数据,只能由对应的公钥解密。还有第二个特性。...

2021-05-08 00:30:05 1715 1

原创 vim利用coc补全的配置过程

题外话,国内的博客为什么都是抄来抄去呢,还是要自己实践一下coc插件原理 vscode 补全利用的是LSP (language server protocol), 简单理解就是编辑时启动一个进程,补全果过程就类似app请求服务器得到补全数据。这就是为什么要装node,服务进程都是node启动。第一步 安装nvim首先你需要 安装vim8 或者nvim 我测试的是macos如果是nvim, 需要把nvim 的配置文件做一次软链接指向 ~/.vimrc 这是延续以前的vim配置方式, 不做..

2020-08-29 22:34:33 7327

原创 ngx_lua的三种变量范围

NGX_LUA的三种变量范围进程间共享, nginx的所有work进程共享,使用lua_shared_dict定义,这样高并发就出触发锁。进程内共享,lua代码中不加local关键字就是全局变量,这样的变量在同一个进程的所有请求之间共享,因为开启了lua缓存,每个work的VM虚拟机都会缓存全局变量.同一个请求,比如local声明的或者ngx.ctxlua_shared_dict 有模块lua-resty-lrucache可以实现在一个work中共享,由于nginx是单进程的,所以永

2020-07-01 21:49:11 579

原创 nginx支持php

ubuntu14.04 +nginx+php5-fpm一,安装Nginxapt-get install nginx1,配置nginxnginx所有的配置在 /etc/nginx/nginx.conf中nginx.conf配置里面包括了include /etc/nginx/conf.d/.conf;   include /etc/nginx/sites-enabled/;这两个配置,所以这里面的配置也是有效的。错误日志 error_log /var/log/nginx/error.log;

2020-07-01 21:48:38 210

原创 mongodb编译安装

CentOS7 编译安装 Mongodb (实测 笔记 Centos 7.0 + Mongodb 2.6.6)环境:系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡)系统版本:CentOS-7.0-1406-x86_64-DVD.iso安装步骤:1.准备1.1 显示系统版本[root@centos ~]# cat /etc/redhat-releaseCentOS Linux release 7.0.1406 (Core)[root@cento.

2020-07-01 21:47:58 793

原创 mac挂载NTFS磁盘

查看移动硬盘的信息diskutil list/dev/disk0 (internal): #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme 121.3 GB disk0 1: EFI EFI

2020-07-01 21:46:44 1131

原创 linux FTP建立

linux FTP建立,条件:安装vsftpd:配置vsftpd的配置文件:vim /etc/vsftpd.confanonymous_enbale =NO //关闭匿名登录local_enbale=YES //允许本地用户,就是ftp建立者的用户名和密码write_enbale=YES //允许写入,就是上传文件到ftp反注释掉:ascii_upload_enbale=YESascii_download_enbale=YES默认的ftp目录就是home下的user目录,包含桌面,

2020-07-01 21:46:14 132

原创 linux虚拟机配置静态ip

1. mac上的虚拟机使用(自动模式)就是桥接模式。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zQKdxSX6-1593611109008)(images/vmnet.png)]2. 查看自己的网卡名ifconfig 命令[root@localhost ~]# ifconfigens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.2.132

2020-07-01 21:45:37 222

原创 ip地址和子网掩码,广播地址关系

什么是ip地址?ip是在一个网段中的一台计算机的ip地址(192.168.1.2)如果你家的联通宽带给你家的公网ip地址是10.10.123.234(假设的),那么接到你家路由器,首先路由器需要有一个ip地址,一般是192.168.1.1(也可能是192.168.0.1),这个应该可以登录到路由器中设置。其中192.168.1.255 就是广播地址,比如centos中ifconfig命令查看的broadcast剩余的ip段192.168.1.2~192.168.1.254 就是可以分配给手机,电脑

2020-07-01 21:44:45 3816

原创 git tag和branch的区别

tag 和branch的区别Git tag是一系列commit的中的一个点,只能查看,不能移动。branch是一系列串联的commit的线。git tag的用法我们常常在代码封板时,使用git 创建一个tag ,这样一个不可修改的历史代码版本就像被我们封存起来一样,不论是运维发布拉取,或者以后的代码版本管理,都是十分方便的git的tag功能git 下打标签其实有2种情况轻量级的:它其实是一个独立的分支,或者说是一个不可变的分支.指向特定提交对象的引用带附注的:实际上是存储在仓库中的

2020-07-01 21:43:31 1345

原创 git_linux搭建服务器

为什么本地搭建一个git服务器对于自己学习使用的代码,在没有网络的情况下不能用github,gitlab,所以本地建立一个git服务器。git服务器环境准备centos7服务端创建git用户 id git # 查看是否存在git用户,存在就不创建了。 useradd git passwd git 输入密码,我设置的是xxx@123 客户端开启公钥认证认证,免密push/pu...

2020-04-08 22:31:26 182

原创 nginx支持php

ubuntu14.04 +nginx+php5-fpm一,安装Nginxapt-get install nginx1,配置nginxnginx所有的配置在 /etc/nginx/nginx.conf中nginx.conf配置里面包括了include /etc/nginx/conf.d/.conf;   include /etc/nginx/sites-enabled/;这两个配置,...

2020-04-08 22:30:45 305

原创 openresty 变量

NGX_LUA的三种变量范围进程间共享, nginx的所有work进程共享,使用lua_shared_dict定义,这样高并发就出触发锁。进程内共享,lua代码中不加local关键字就是全局变量,这样的变量在同一个进程的所有请求之间共享,因为开启了lua缓存,每个work的VM虚拟机都会缓存全局变量.同一个请求,比如local声明的或者ngx.ctxlua_shared_d...

2020-04-08 22:29:45 679

原创 git tag用法

tag 和branch的区别Git tag是一系列commit的中的一个点,只能查看,不能移动。branch是一系列串联的commit的线。git tag的用法我们常常在代码封板时,使用git 创建一个tag ,这样一个不可修改的历史代码版本就像被我们封存起来一样,不论是运维发布拉取,或者以后的代码版本管理,都是十分方便的git的tag功能git 下打标签其实有2种情况轻量...

2020-04-08 22:28:32 601

原创 python 导入模块,__init__.py 的作用

python 导入模块文件的2中方式import lib or from lib import *# 导入子目录中模块import tmp.lib3 or from tmp.lib3 import *# 导入上级目录import syssys.path.append('home/app/')import modimport xxxx与import类似, 被...

2019-05-02 14:13:58 2369

原创 python 转码问题

为什么需要sys.setdefaultencoding(“utf-8”)因为python转码是通过unicode作为中间码的。比如字符串 x = “你们”,本身是str,首先我们指定了文件编码uft8,所以x是utf8编码的。如果要转化gb18030, 默认是x用默认解码方式(ASCII)decode成中间码 unicode -> encode成gb18030如果x是abc这...

2019-05-02 14:11:36 717

原创 python装饰器

property装饰器作用和原理我们知道c++中有public,projected,private等修饰类私有属性的作用,这样就限定了某些属性只能读取,不能修改;有些能读也能需改。设置C++类中的一个属性可以自定义方法get和set方法。python中实现这种原理,就需要装饰器property,本身可修饰(变量x同名)的函数,让x拥有可读的属性(相当于get函数...

2019-05-02 14:09:37 597

原创 git tag的用法

tag 和branch的区别Git tag是一系列commit的中的一个点,只能查看,不能移动。branch是一系列串联的commit的线。git tag的用法我们常常在代码封板时,使用git 创建一个tag ,这样一个不可修改的历史代码版本就像被我们封存起来一样,不论是运维发布拉取,或者以后的代码版本管理,都是十分方便的git的tag功能git 下打标签其实有2种情况轻量...

2019-05-02 14:08:51 140

原创 自己搭建git服务器

为什么本地搭建一个git服务器对于自己学习使用的代码,在没有网络的情况下不能用github,gitlab,所以本地建立一个git服务器。git服务器环境准备centos7服务端创建git用户 id git # 查看是否存在git用户,存在就不创建了。 useradd git passwd git 输入密码,我设置的是xxx@123 客户端开启公钥认证认证,免密push/pu...

2019-05-02 14:08:19 755

原创 了解一下加密相关的名词

加密体系对称加密算法,加密和机密密钥一样,加密方和解密方都持有.DES加密 56位密钥长度,美国数据加密标准,DES算法的入口参数有三个:Key、Data、Mode。其中Key为7个字节共56位,是DES算法的工作密钥;Data为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。AES加密 高级加密标准,一种区块加密算法,为了取代DES。...

2019-05-02 07:52:42 265

原创 unix获取时间的小程序

layout: posttitle: unix获取时间的小程序category: cdate: 2017-1-7 15:30:30//一个简单的时间获取客户程序#include &amp;lt;netinet/in.h&amp;gt; /* sockaddr_in{} and other Internet defns */#include &amp;lt;strings.h&amp;gt;#inc...

2019-02-14 20:27:05 321

原创 mysql安装用户设置

mysql安装用户设置xmapp安装后设置MariaDB问题创建用户insert into mysql.user(Host,User,Password) values("localhost","phplamp",password("1234"));创建用户并分配所有权限grant all privileges on dbname.* to 'username'@'%' identifi...

2019-02-14 20:25:26 362

转载 send函数何时返回

send 分阻塞和非阻塞模式的!1 在阻塞模式下, send函数是将应用程序请求发送的数据拷贝到发送缓存中发送并得到接收端的确认后再返回2 在非阻塞模式下, send函数仅仅是将数据拷贝到协议栈的缓存区而已,如果缓存区可用空间不够,则尽能力的拷贝,返回成功拷贝的大小;如缓存区可用空间为0,则返回-1,同时设置errno为EAGAIN. 但是此时这些数据并不一定马上被传到连接的另一端。如果协

2017-03-18 12:03:37 1666

原创 linux 套接字函数send和recv函数(阻塞模式)

send函数的流程:buffer的内容 —->linuxTCP协议栈发送缓存区—->内核发送什么情况下,buffer内容才会先写入协议缓存区呢 ,协议缓存区有一个SO_SNDLOWAT最低位标志,表示缓存区有空间了, 一般是2048字节。就是说缓存区至少2048字节剩余空间,你才能继续向缓存区写。selcet /epoll等监视内核,就是依据这个,判断socket是否可以向缓存区写数据,就是产生

2017-03-18 11:45:39 1943

原创 python脚本整理一下桌面

python脚本整理一下桌面代码如下:#!/usr/bin/python# coding=utf-8import osimport shutilimport re# 取得后缀名是.0的文件def getFileByEndName(FilepathDir, fileEnd): ''' if in directory (filepathDir),the (fileEnd) i

2016-12-30 19:34:21 966

原创 python检索特定内容的文本文件2

代码如下: # coding=utf-8 import os import sys # 找到当前目录下的所有文本文件 def findFile(path):     f = []     d = []     l = os.listdir(path)     os.chdir(path)     for x in l:

2016-12-29 18:25:25 457

原创 windows dll函数的导出

DLL导出的方式调用约定 _CDECL: c语言的默认调用形式,也是C++的默认调用形式 特点:参数从右到左入栈,调用者负责手动清理堆栈,所以传入多少参数给被调函数都不会产生编译阶段错误。 命令行参数:/Gd 开关 场景:可变参数函数,必须是这种调用方式。 缺点:每次调用都需要编译器产生清除堆栈的代码。所以比_stdcall方式编译的程序体积大。 修饰方法: 对于C函数,默认是函数名前加

2016-12-29 15:12:25 884

原创 python 建立ftp共享文件夹

python 建立ftp共享文件夹安装ftp模块: pip install pyftplib 代码如下:# coding=Shift_JISimport sysfrom pyftpdlib.authorizers import DummyAuthorizerfrom pyftpdlib.handlers import FTPHandlerfrom pyftpdlib.servers imp

2016-12-27 18:19:15 831

原创 gitbook制作电子书

git制作电子书http://blog.youkuaiyun.com/wsyw126/article/details/51733577可以gitbook serve 本地预览,浏览器访问http://localhost:4000 或者生成静态网站 gitbook build ./ 生成的_book 目录就是了。然后上传_book下文件到 github 的一个仓库book1中:进入_book 目录: g

2016-12-27 17:38:19 437

原创 MFC程序框架

MFC程序框架比如建立一个叫test的程序。1. 首先需要构造一个mfc实例。需要一个类CtestApp 继承自CWinAppp类。在头文件 test.h 中定义。// #test.h头文件#pragma once#ifndef __AFXWIN_H__ #error "在包含此文件之前包含“stdafx.h”以生成 PCH 文件"#endif#include "resource.h"

2016-12-25 16:24:20 2545

原创 _stdcall和_cdecl,extern “C”的联系

_stdcall 和_cdecl的区别 前者是函数自己清理堆栈,右到左入栈,例如:win API函数和回调函数(必须)。 后者是调用方清理堆栈,右道左入栈,是c语言默认的调用方式,也是VC的默认方式。 Extern “C”是C++兼容C语言代码设计的关键字,为了兼容既存的大量c代码。表示这段代码用c语言的方式编译,因为C++编译器是兼容c代码的,所以这个设置可用。c语言函数的可变

2016-12-13 19:28:20 371

原创 DLL导出的方式

DLL导出的方式调用约定_CDECL: c语言的默认调用形式,也是C++的默认调用形式 特点:参数从右到左入栈,调用者负责手动清理堆栈,所以传入多少参数给被调函数都不会产生编译阶段错误。 命令行参数:/Gd 开关 场景:可变参数函数,必须是这种调用方式。 缺点:每次调用都需要编译器产生清除堆栈的代码。所以比_stdcall方式编译的程序体积大。 修饰方法: 对于C函数,默认是函数名前加一个

2016-12-13 14:19:24 408

python学习笔记

python学习笔记,是作为入门教程非常合适的一本文档。

2019-02-20

django的web开发笔记

django的web开发笔记,具体详细的操作步骤,很适合自学。

2019-02-20

shell编程指南

详细介绍linuxshell编程指南的过程,尤其是常见命令的讲解。

2019-02-20

空空如也

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

TA关注的人

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