自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(168)
  • 资源 (2)
  • 收藏
  • 关注

原创 golang网络字节与基本类型转换

说明网络通信要将go基本数据类型转为字节, golang如何做?基本类型c类型go类型字节长度signed charint81unsigned charuint81_Boolbool1shortint162unsigned shortuint162intint324unsigned intuint324floatfloat324long longint648unsigned l longu

2021-04-15 21:29:21 1359

原创 golang的继承不是继承

问题struct嵌套,内层struct方法访问同名的属性,这个属性是谁的?示例package mainimport ( "fmt")type ProductA struct{ Name string}func (p *ProductA) PrintName(){ fmt.Println("a:", p.Name)}type ProductB struct{ ProductA Name string Level string}func main() { b

2021-04-12 19:43:08 167

原创 go的反射有什么不同

说明go的反射有什么不同, 与动态语言python有什么不同go反射的不同首先, go是静态强类型。再怎么反射它也是静态语言,不支持动态获取类型,例如,通过字符串"struct_name",创建struct_name对象go的反射,在于通过对象获取类型信息。例如,通过object,得到Type,然后获取Type的属性reflect的入口是TypeOf和ValueOf。一切的前提是先有对象佛說大乘無量壽莊嚴清淨平等覺經pdf净土大经科注2014-doc此生必看的科学实验-水知道

2021-04-10 11:05:53 81

原创 gorm模型定义原理借鉴分析

说明python有元类概念,在定义db模型时,相当方便,极大简化代码go中没有元类概念, gorm有模型定义,看看它怎么实现,能否借鉴gorm原理gorm运用了结构体标签,通过reflect获取标签内容,这是基本原理,这里不做介绍。关注它如何运用这些特性,是否可以借鉴使用直接分析源码太复杂,绕的路径太多。基于gorm模型定义最核心的代码,写一个小例子,展示gorm的用法,这也是我需要借鉴的地方gorm所有的接口db.Create, db.Model,…最终都是调用schema.

2021-04-10 10:21:45 795

原创 nsq双机集群部署

问题双机nsq如果部署集群,如何保证高可用性单节点nsqlookup故障?单节点nsq故障?消息丢失?环境说明两台机器机器A 192.168.120.1机器B 192.168.120.101部署过程部署方法机器A部署一套nsqlookup+nsqd机器B部署一套nsqlookup+nsqd生产者将消息同时写入两个nsqd消费者监听两个nsqlookup结构图机器Ansqlookupd -broadcast-address 1

2021-04-02 13:23:43 798 1

原创 nsq.reader错误connection closed

描述学习官网例子时,会碰到的一个小错误. 过程描述:按照nsq官网,搭建一个nsq小集群2.使用python客户端pynsq编写测试客户端如果上面过程在一台机子上完成,不会有问题如果客户端与nsq不在一台机子上,会出现下面错误错误内容WARNING:nsq.reader:[localhost.localdomain:4150:test:abc] connection closedpython消费客户端import nsqdef handler(message):

2021-04-02 11:14:59 267 1

原创 golang的import原理

描述import是个很重要的东西,golang是怎么import的import查找包的顺序?import的是什么,包还是路径?自己项目中怎么importgolang的包管理历史第一阶段 早期golang,import是直接查找GOPATH/scr,GOPATH/scr,GOPATH/scr,GOROOT/scr目录第二阶段 v1.5开始采用vendor模式,每个项目有一个vendor目录,存放依赖包第三阶段 v1.12开始增加了go mod用于管理依赖包部分学习资料比较早,

2021-03-28 12:23:12 2474

原创 eventlet如何绿化pyserial最好

问题pyserial访问windows中的串口,如何绿化?不阻塞协程? 效率最高? 绿化毫无疑问要借用tpool.execute.代码该如何实现才最佳呢?方法一: 直接recv直接recv,会阻塞协程缺点: 协程被阻塞,程序不可用方法二: tpool+in_waiting判断import serialfrom eventlet import tpoolclass SerialSocket(serial.Serial): def recv(self): # 读完

2021-03-24 19:20:34 399 2

原创 eventlet.monkey_patch是否影响threading

说明evenlet.monkey_patch()默认会绿化thread,并未看到绿化threading,为什么实际中threading被绿化了,如何证明? 测试代码如下修改evenlet,加上标记语句修改eventlet.green.thread.py的start_new_thread方法,加一条打印语句def start_new_thread(function, args=(), kwargs=None): ... print("hello: ", locals()) g

2021-03-24 13:44:22 681

原创 python自定义windowsr日志支持文件分割

描述python自带的RotatingFileHandler,在windows中运行, 分割文件rename时会出问题。因为windows不支持rename正在使用的文件解决办法自定义handler, 按大小和日期切割文件# 原理: handler写文件时调用emit, 其中shouldRollover判断是否要分割, doRollover进行分割. 重写这个两个函数就可以class BaseRotatingHandler(logging.FileHandler): def emit(s

2021-01-20 13:35:45 323 3

原创 eventlet模块中select出现ValueError错误

问题说明如果socket句柄是-1, select.select()在判断句柄状态时会报错 ValueError: file descriptor cannot be a negative integer (-1)而eventlet的select模块没有处理这种异常出现环境windows、python3.8、eventlet 0.26 在使用eventlet开发socket程序时, 如果客户端强制中断连接,会出现如下错误错误描述exception: [WinError 10054] 远程主机强迫

2021-01-02 10:33:29 1324 3

原创 eventlet绿化和patch原理

说明eventlet是一个必备工具,经常用,绿化原理有点忘记了,重新复习一遍.三个主要问题绿化的原理是什么?绿化怎么管理?绿化怎么引入?绿化原理利用select/epolls/kqueue等操作系统提供的非阻塞操作,将阻塞改为非阻塞.引用管理eventlet在import之后,将模块中的属性绿化.用一小段代码来查看看import sysimport eventlet# eventlet.monkey_patch()httplib2 = eventlet.impo

2020-11-21 12:06:32 530

原创 实用工具状态机transitions

说明状态机是一个非常实用的理论。在涉及到复杂的场景,建立状态机模型,能带来极大的方便。比如,网络连接、模型状态、业务逻辑。状态机并不复杂, 重要的是它的思想,能够极大减轻复杂度。使用时关键在于定义事件和动作。基本概念State: 状态Event: 事件. 事件触发状态变换Action: 动作. event发生前或后执行的动作transition: 变换. 状态变换githubhttps://github.com/pytransitions/transitions安装pip

2020-11-21 09:31:38 751

原创 eventlet并发读写socket出现Second simultaneous问题

描述celery+eventlet实现任务调用时出现RuntimeError: Second simultaneous read on fileno 14 detected. Unless you really know what you’re doing, make sure that only one greenthread can read any particular socket模拟错误网上找的一段代码,模拟出同样问题def main(): import eventlet

2020-07-08 10:52:10 778 1

原创 celery配合redis出现redis.exceptions.InvalidResponse Protocol Error

说明celery+redis实现异步任务,如果涉及到频繁的io调用,可能会出现错误redis.exceptions.InvalidResponse: Protocol Error错误内容redis.exceptions.InvalidResponse: Protocol Error: {, b'\"status\": \"SUCCESS\", \"result\":xxxx \"traceback\": null, \"children\": [], \"date_done\": \"2020-06-

2020-06-21 09:30:28 1365 2

原创 eventlet在ubuntu上出现OSError protocol not found

描述tensorflow的nvidia docker镜像使用ubuntu16.04, ubuntu是精简之后的,有些包可能没有。在上面运行eventlet会出现下面问题错误内容Traceback (most recent call last): File "/app/defect-client/defect_client/cmd/wafer-worker.py", line 14, in <module> import eventlet File "/usr/local/

2020-06-21 09:25:11 1248 1

原创 celery变量共享

问题很多情况下我们想让task共享变量,该怎么做?celery的并发原理celery的并发任务池,有eventlet, gevent, prefork, thread类型eventlet/gevent协程: 只有一个进程一个线程, 全局变量在task之间共享prefork属于multiprocessing: multiprocessing全局变量也是共享的thread多线程: 全局变量共享验证方法用ab命令模拟大量并发,很容易测试出来ab -n 1000 -c 100 -p ./post.

2020-06-21 09:21:18 1389 2

原创 protobuf序列化numpy

说明protobuf处理不能直接处理numpy,需要先把numpy转为字节numpy转字节import numpy as npfrom io import BytesIOA = np.array([ 1, 2, 3, 4, 4, 2, 3, 4, 5, 3, 4, 5, 6, 7, 2, 5, 6, 7, 8, 9, 6, 7, 8, 9, 0 ]).reshape(5,5) # numpy 转bytesnda_bytes

2020-06-15 15:05:38 1675

原创 基于docker搭建cephfs分布式文件

目的在一台机器上, 利用多块硬盘, 搭建一个cephfs文件系统. 具体来说就是1个mon, 1个mds, 1个mgr, 3个osd注意a. 使用vmware会很方便b. 安装过程中会遇到很多问题,我都没有记录, 尽量安装下面步骤环境准备a. vmware虚拟机fedora30b. 添加3块虚拟机硬盘 /dev/sdb /dev/sdc /dev/sdd (osd最少需要3个,需要有3块磁盘)c. ceph容器版本 ceph/daemon:latest-luminous搭建步骤下载镜

2020-05-27 12:38:53 1004

原创 tensorflow资源耗净 Resource exhausted OOM when allocating tensor with shape

描述tensorflow跑训练集经常会遇到错误Resource exhausted: OOM when allocating tensor with shape[64,33,33,2048]错误内容tensorflow.python.framework.errors_impl.ResourceExhaustedError: 2 root error(s) found. (0) Resou...

2020-05-01 13:04:23 4027

原创 tesla t4的坑Unable to load the kernel module 'nvidia.ko'.ipynb

说明安nvidia tesla T4显卡遇到的坑, 在ubuntu16.04上安装t4会遇到下面错误错误内容 make[1]: Leaving directory '/usr/src/linux-headers-4.4.0-142-generic'-> done.-> Kernel module compilation complete.ERROR: Unable to...

2020-04-24 15:37:37 2619 1

原创 object-detection图片切割提示Invalid argument: Key: image/object/mask错误

ensorflow的object-detection切割图片出现错误tensorflow.python.framework.errors_impl.InvalidArgumentError: 2 root error(s) found. (0) Invalid argument: Key: image/object/mask. Data types don't match. Expec...

2020-04-14 14:16:08 406

原创 socketio与apscheduler并用

layout: postauthor: “妙音”title: “socketio与apscheduler并用”date: 2019-04-08 21:51category: flasktags: [“socketio”, “apscheduler”]description: “flask项目引入了flask-socketio提供websocket通信,同时需要flask-apsche...

2019-04-28 10:12:36 531

原创 为jekyll制作docker镜像

说明jekyll运行依赖ruby,每次重装都会遇到版本问题,挺麻烦,干脆做成镜像官方镜像存在的问题docker上有jekyll的官方镜像,如果是直接运行,没什么问题。如果你挂载volume就会有权限问题jekyll 3.8.5 | Error: Permission denied @ dir_s_mkdir - /srv/jekyll/_site制作步骤步骤1:修改镜像入口文件...

2019-04-28 09:56:31 561 1

原创 docker运行gunicorn看不到控制台输出

项目做成了docker镜像, 以gunicorn命令运行, print输出为什么没有写到docker日志?docker-compose文件如下version: '2'services: xxx.xxx: image: xxx:1.0 volumes: - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime...

2019-04-06 07:57:09 3319

原创 学习: matplotlib绘制阻尼正弦波

介绍阻尼正弦波定义: 振幅会随时间增长而趋向零的正弦波函数示例图片应用a.任何振动系统b.共振c.简谐运动(弹簧、单摆)d.车辆避震系统e.RLC电路f.有阻尼的弦波绘制方法import matplotlib.pyplot as pltimport numpy as np#阻尼正弦波计算公式def f(t): 'A damped expone...

2019-04-06 07:52:41 3814

原创 利用qq邮箱作为个人邮件服务器发送邮件

需求描述邮件通知很有用处。如何搭建一个邮件服务器,允许发送邮件呢?实现方法一、利用开源软件,搭建自己的邮件服务器。二、利用qq等第三方邮件服务。自己搭邮件服务器较麻烦,我的需求比较简单,利用qq邮件,发送邮件即可,下面是方法.设置方法1.开启服务,获取授权码邮箱设置–>帐户–>开启"IMAP/SMTP服务"开启成功后,会给出一个授权码.授权码就是发送邮件时的...

2019-04-06 07:43:43 6902

原创 实现智能dns为用户分配最佳线路

@TOC说明服务器放在国外,不同线路质量不一样。如何根据访问者的所在地、运营商,智能的分配线路呢?有些域名服务器上提供线路优先级,比如阿里云,如果是国外域名服务商,一般都不会提供。所以通常要我们自己实现自动分配线路的功能。例如有一个网站www.yongqingking.top,它的真实服务器ServerA在海外。网站的部分用户在国内。由于各种原因,在国内访问海外服务器的质量不是很好...

2019-03-24 09:36:39 2823

原创 学习:人工智能-机器学习-深度学习概念的区别

一图胜千言定义概念定义简述备注数据分析/挖掘用适当的方法对收集来的大量数据进行分析,帮助人们做出判断,以便采取适当行动分析数据规律属于机器学习人工智能通过计算机程序实现人类智能机器学习人工智能的一个分支。从数据中自动分析获得规律(模型),并利用规律对未知数据进行预测分析数据规律+预测深度学习机器学习的一个分支。以人工神经网络为架...

2019-01-20 12:30:12 454

原创 使用numba的姿势不正确反而导致性能下降

numba能够极大的提高python在计算方面的性能。是不是所有的python代码上,都可以加上numba.jit装饰器?答案是否定的。示例环境python3.6fedorapymysql示例很常见的例子,从数据库从查询一千条数据,再进行简单的格式转换。#coding=utf-8import timefrom numba import jitimport pym...

2019-01-20 09:14:33 6200 1

原创 numba加速python学习与尝试

简介探索python性能优化工具,发现了numba. 只需要给函数加上装饰器就可以。比cython和pypy方便多了。numba是什么numba是为了提高numpy速度而开发的,使用llvm将python代码翻译为bitcode,并在bitcode外面做了一层包装,让python可以调用通过numba翻译的代码由于经过llvm优化并可在机器上直接执行,效率将有所提高,对海量数据处理非常...

2019-01-20 09:12:06 2471 2

原创 用最简单方法解决api接口安全问题,几乎无法破解

场景描述项目需要为第三方提供api服务接口。接口涉及到核心功能,如何保证接口安全。防止伪造身份、篡改数据?思路保障数据安全最好的方法,当然是加密了。无法解析内容,自然无法伪造,篡改。可是使用https证书需要收费的。有其它方法么?有的。消息哈希认证(hmac)。算法描述访问者1. 当访问接口时, 将参数按key值排序,组成key1=value1&amp;amp;key2=va...

2019-01-01 11:47:07 15890 13

原创 没有契合的数据库迁移工具,用pymysql实现一个

版本迭代少不了数据迁移,python有自己的数据库迁移工具migrate。如果有的是其它开发语言,或者没有契合的迁移工具。怎么自己做一个?环境说明项目开发语言:java数据库: mysql迁移脚本: pythonpython工具包: pymysql实现思路目标是将老版本的数据转为新版本的数据。1. show tables 查询所有的表 ---得到所有表名2. 注意tranc...

2019-01-01 11:16:52 333

原创 nginx运行php的终极方法,可避免许多不必要的坑

说明php有许多开源项目比较好像,在自己的机器上用docker搭建了很多。每个docker都是跑了个apache,每个docker里面都有apache。这样好像有点浪费资源,而平时都是用nginx,所以研究了用nginx运行php中间竟然碰到许多坑,而回过头来看,其实都很简单。nginx运行php的原理nginx不能解析php,要和php-fpm配置使用。nginx负责将php的请求转...

2018-12-28 00:52:22 2139

原创 frp内网穿透基本用法

思考评价由于路由器推荐使用frp进行内网穿透,所以我稍微了解了下。平时我更新喜欢用ssh进行内网穿透。似乎并没有必要使用frp。更方便的方法是,直接用vpn将两台机器连载一起,也比端口穿透好多了。一般说来它比较适合普通人,使用比较简单。不打算深入研究,下面比较水基本用法下载https://github.com/fatedier/frp/releases一般是amd64解压...

2018-12-27 23:52:37 458

原创 rclone报错NewFs: couldn't initialise SFTP: EOF

rclone将路由器挂载到vps,出现下面错误。原因是路由的ssh不支持sftp。[root@izwzxxxxxxxqre9xrhvz ~]# rclone lsd homedata:2018/12/24 13:57:24 Failed to create file system for "homedata:": NewFs: couldn't initialise SFTP: EOF来...

2018-12-27 23:25:39 750

原创 entware嵌入到移动硬盘,在路由器重启后不生效

环境说明在路由器r6400上挂载了一个移动硬盘,然后在移动硬盘中安装了entware。如果重启了路由器,entware会失效。如何让它在重启时生效呢?梅林r6400开机启动原理路由器中的操作系统比较特殊/etc/profile: 系统做了限制不能修改,所以不可以加脚本/jffs/scripts目录: 里面的脚本名固定不可以随便修改,但是可以加自己的内容。脚本名作...

2018-12-27 23:10:12 1994

原创 让梅林R6400支持sftp协议

说明通常linux中ssh默认支持sftp,梅林路由器中的ssh是精简版,不支持sftp协议。自带的配置不支持,是否有有办法呢?我们可以先装entware-setup.sh,然后用opkg安装sftp。有了ssh和sftp,我们可以做很多事。环境(前置条件)r6400路由器entware-setup.sh已安装好系统,可以使用opkg路由器启动了ssh登录ssh登录到路由器略...

2018-12-25 02:32:44 4784 1

原创 uwsgi: option is ambiguous: http

从官网上下载的uwsgi包含所有的插件。其它来源的uwsgi可能被人改过了。例如,为了减小体积,会删除uwsgi不必要的插件。环境alpine中运行uwsgi示例:启动uwsgi提供http访问接口,出现错误#报错的原因就是这个uwsgi没有http插件~ # uwsgi --http :9090 --plugins http,python3[uWSGI] getting INI c...

2018-11-26 21:27:24 3691

原创 p2p内网穿透技术-udp打洞

在公司如何访问家里的电脑?实现方法有很多,其它p2p传输文件最快,能否实现?udp打洞原理假设有两台分别处于各自的私有网络中的主机:A和B;N1和N2是两个网络的NAT设备,分别拥有IP地址P1和P2;S是一个使用了一个众所周知的、从全球任何地方都能访问得到的IP地址的公共服务器步骤一:A和B分别和S建立UDP连接;NAT设备N1和N2创建UDP转换状态并分配临时的外部端口号步骤二:S...

2018-11-25 16:42:24 4217

空空如也

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

TA关注的人

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