- 博客(46)
- 收藏
- 关注
原创 python telnet协议 连接linux和windows,读取并下载文件实例
telnet连接linux,Windows,读取文件并根据屏幕显示,下载文件。
2024-10-15 16:19:11 357
原创 数据流返回大文件(Python,Go实例)
用数据流返回大文件(文本类的),数据在所有的节点都不缓存,在服务端读取一部分就返回一部分,也就是先返回响应,然后文件慢慢下载,这样就不会有超时,因为响应已经返回了。而且文件不会服务端先生成,代理再缓存,最后再返回客户端。所以现在的思路是,接到请求,边查询边返回,返回的响应体不是文件而是数据流。
2024-01-30 13:44:50 423
原创 csv文件EXCEL默认打开乱码问题
简单概括就是:编码问题,windows的 excel打开csv文本文件时,默认使用的是系统内的ANSI,在中文环境下就是GB2312。一般两种方法,在文件创建时指定让Excel默认打开不乱码的编码,或者加BOM 标记(Byte Order Mark 字节顺序标记),让excel用指定的编码打开。2.使用utf-8-sig即在文件头写入 0xEF、0xBB、0xBF,让excel识别出这是utf-8编码,用utf-8编码打开csv文件。如果是数据流返回,可以指定编码格式。写入utf-bom的csv。
2023-11-28 15:23:30 1797
原创 python 异常链开启关闭
当处理一个异常时触发另一个异常,就会触发异常链,除非raise anotherErroe from None关闭。the above exception was the direct cause of the following exception 上面的异常是下面的异常的直接原因。有异常链能清楚的看到,所有的异常,和最开始,最后的异常。如果try catch,捕获异常后,触发了另一个异常就会在控制台打印异常链,来表明异常的关系。子句,该子句用于启用链式异常。具体的原理看下官方文档。
2023-07-18 14:01:12 1324
原创 一次密码修改失败bug解决过程 passwd: Authentication token manipulation error
密码修改失败的一次排查思路。
2023-04-22 14:19:14 6394
原创 ipv4 网络划分,网络段与子网掩码
IP地址在计算机内部以二进制方式处理,人可读的形式为,将32位的IP地址以每8位为一组,分成4组,每组以“.”隔开,再将每组数转换成十进制。A类,从第一位到第八位是网络地址,也就是说,0~127,A类地址有128个区域,每个区域有(2^ 24 2^8*2^8*2^8 ) - 2=16777214。IP由网络地址,主机地址组成。由网络地址判断,该IP在哪一个区域(段),由主机地址来判断给区域内的哪一个主机。以网络段,子网掩码来区分网络地址,主机地址。IP地址共有四类地址,A类,B类,C类,D类。
2022-09-20 14:16:52 1495
原创 acunetix wvs网站漏洞扫描 XSS CSOR处理
acunetix wvs 跨站脚本攻击漏洞 应用程序错误消息漏洞 页面错误消息漏洞 目录列表漏洞 跨域漏洞处理。
2022-08-25 10:36:31 3043
原创 python gevent使用
对大部分语言来说,经常用到并发来处理一些情况。比如必须要多次查询数据库,多次请求API,python内置的gevent就很简单好用。传参,获取返回值,捕获协程的错误都很方便。gevent并发框架。gerrlet伪协程。...
2022-07-27 11:14:21 548
原创 python logging 添加上下文信息
官方文档中有两种方式,适配器(Adapter)和过滤器(filter)。具体地址在文末。第一种,使用适配器。使用LoggerAdapter 类,重写它的process方法,将上下文信息添加到日志的输出中。我理解就是,专为logger自定义输出日志而写的类,接收logger和extra。在process方法里,按照自己的想法把message信息格式化。并返回message和kw。博客1的例子非常详细,同时也指出了当时我按照例子写后发现不妥的地方。就是loggerAdapter已经不是原来的l.
2022-05-13 15:52:19 742 1
原创 HTTP概览
HTTPS,并没有放在HTTP2的特性里,是因为TLS很早就出来了,而且可以配合http1.1使用,并能说是HTTP2的特性。如果从发展的角度来看HTTP的话,比较容易记忆。最初的HTTP0.9很简单,就是为了获取HTML页面。到后来HTTP1.0定义了请求头响应头格式,加入POST,HEAD,各种错误码。再到HTTP1.1添加OPTIONS等请求方式,优化网络,长连接等,直到现在的HTTP2,流,二进制协议,首部压缩,改进的非常明显。都是为了解决web飞速发展下遇到的问题。抄的HTTP发展表...
2021-12-01 11:43:37 209
原创 golang 转python三个月之后感想
因为架构师离开,新架构师使用python,所以团队转成使用python,我之前一直使用golang没有用python经验,很多地方感觉奇怪。于是想总结下这些差异。一、相同点 1.程序的架构设计,不管是golang还是python都主要用来开发web应用,所以在程序的架构设计上其实差别不大。都是基于MVC架构,来设计目录,model层,controller层,service层。具体到细节,比如分组路由,中间件,orm钩子函数,读取配置文件,获取数据库引擎。都是为了解决相同的问题,所以这些...
2021-11-15 15:33:04 3832 6
原创 python bottle使用实例
模仿学习同事的代码来写的,主要是搞懂python中如何来组织包,如何调用包,如何读取配置文件,连接数据库,设置路由,路由分组。(注:使用的是python3.6)整体目录设计如下:根据调用层级从上往下来说:首先项目根目录下的main.py是整个程序的入口,主要作用启动http服务器,调用分组路由。main.pyimport bottlefrom confg.conf import CONFfrom api.user import Userdb_u.
2021-08-22 17:17:25 1408
原创 curl form表单提交文件
场景:需要写一个脚本,将本地的文件通过http服务端的一个上传文件接口上传到服务端。例:有一个http服务端,有一个上传文件接口“/uploadUpgradeFile”,写一个脚本将本地的文件通过模拟前端的form表单将文件发送到服务端的上传文件接口。知识点:curl ,curl的post,curl的form表单域字段,shell脚本单引号如何使用变量。例子:命令行./upload_file.sh /opt/test.zip...
2021-07-26 17:46:04 3877
原创 docker nginx-proxy设置http 容器负载均衡
目录一、nginx-proxy介绍二、使用2.1使用docker-compose.yml,来配置service。如下的docker-compose.yml。2.2启动2.3启动后就可以将ginblog扩容2.4其它命令:一、nginx-proxy介绍地址:https://github.com/nginx-proxy/nginx-proxyweb容器负载均衡的一种思路。将http请求转发到完全相同的几个容器,一个挂掉都不会影响整体的响应。二、使用下面是我自.
2021-03-26 15:38:55 456
原创 golang知识点总结 2021.3
golang知识点总结,左半边是golang的语言知识,右半边是需要的知识。不是很全面,golang内存管理,gorm,微服务都没有整理。只是作为自己的总结使用,也希望能给新手一点帮助。
2021-03-22 13:54:21 285
原创 golang mysql批量插入实例
业务逻辑:tcp接收消息后,先将消息保存到数据库再进行后续操作。问题:压测发现,tcp连接非常多,消息更多,每秒10000条消息时,程序会内存溢出。解决:自然就想到了,问题出在不能及时把消息处理掉的问题。所以先想能不能加快mysql的处理流程,可以定时批量插入代替及时插入。思路:1.接收tcp消息,通多channel发送到临时的切片。2.定时任务,定时将临时切片的数据批量插入到mysql。知识点:1.channel来接收消息2.互斥锁,保证切片操作和mysq.
2021-01-25 17:34:42 4662
原创 golang 切片原理与性能优化
目录一、切片原理1.1数组与切片1.2切片的结构1.3切片的创建1.4切片的重组二、切片的优化2.1空数组,nil切片和空切片2.2切片扩容优化2.3sync.Pool2.4切片复用三、切片内存泄漏3.1避免错误使用切片导致内存泄漏四、golang切片与python切片一、切片原理1.1数组与切片数组是具有固定长度且拥有零个或者多个相同数据类型元素的序列。 切片是一个拥有相同类型元素的可变长度的序列。切片是“动态数组”。数组的缺点:1.
2020-12-28 09:29:08 1008
原创 golang int64 json.Unmarshal精度丢失问题
问题描述:工作中发现的问题,A服务器通过Tcp发消息给B服务器,A发送时是int64格式的数据,B服务器接收时也使用int64格式接收,但是却出现了精度丢失,比如6709365066292006912,接收可能就是6709365066292070000。问题原因:解决方法:https://blog.csdn.net/ln152315/article/details/104957335/https://www.cnblogs.com/xinliangcoder/p/13282964..
2020-12-25 13:27:33 1816 2
原创 vue antv f2使用实例
1.安装前提:已经是可以运行的vue移动端项目。移动到项目目录:npm install @antv/f2 --save2.引入不需要在main.js中单独引入,哪个文件使用了就在哪个文件引入。import F2 from "@antv/f2" //引入插件3.使用创建新文件:pie.vue。并在router/index.js 路由中写入路径。import Pie from '@/views/pie'{ path: '/pie', name
2020-11-11 16:20:59 1534
原创 golang modbus 通信(一)modbus rtu和modbus ascii介绍
一、什么是modbus rtu 和modbus ascii百度百科:1 Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。Modbus已经成为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式。2 大多数Modbus设备通信通过串口EIA-485物理层进行。3对于串行连接,存在两个变种,它们在数值数据表示不同和协议细节上略有不同。Modb..
2020-09-15 08:58:55 1743
原创 golang interface{}转换成struct结构体的两种方法
1.使用断言,强制转换 p, ok := (Value).(user)22 if ok {23 fmt.Println("id:" + p.Id)24 fmt.Println("name:" + p.Name)25 } else {26 fmt.Println("can not convert")27 }2.json序列化resByre,resByteErr:=json.Marshal(ResponseDat
2020-09-02 17:30:29 21861
原创 golang 超时demo
场景:判断一个“事务”是否超时。package mainimport "time"func main() { newChan:=make(chan int,1) newDelayTimer:=time.NewTimer(time.Duration(time.Second*2)) println("start timer:",time.Now().Format("2006-01-02 15:04:05")) //newChan<-111 time.Sleep(time.S
2020-08-21 16:39:21 132
原创 Go Web开发规范
题外话,从阿里巴巴的JAVA开发手册的灵感来的。golang web开发国内也有一些规范了,这个只是我自己的总结。1.系统设计1.1关于web的系统建议使用java的目录结构如下图:原则:MVC模型。dao层,service层,controller层。逻辑从上到下为:controller,service,dao。Controller:负责具体的业务模块流程控制,此层调用service层。 Service:负责业务模块的应用逻辑设计,数据库具体实现调用dao层。...
2020-07-21 09:40:38 868
转载 gorm time.Time 使用钩子函数解决反序列化问题
问题描述:gorm中使用下面的CreatedAt 和UpdateAt,可以实现在记录创建和更新时自动更新下面两个字段。虽然使用默认的json解析,从json中到golang中,从golang中写入到数据库(mysql)都是标准的格式“2006-01-02 15:04:05”,但是从golang中解析到json中时是“RFC3339Nano = "2006-01-02T15:04:05.999999999Z07:00"”。原因:type User struct { Id
2020-07-06 11:28:02 3802
原创 ubuntn安装golang指定版本
下载指定压缩包先在这个网页找到自己需要的golang版本,https://studygolang.com/dl#stable。复制下载地址。然后在服务器里下载。$ wget https://dl.google.com/go/go1.11.5.linux-amd64.tar.gz然后解压到指定目录。要注意这个目录要记住。设置PATH时用到。$ sudo tar -zxvf go1...
2020-05-29 18:08:18 801
原创 [golang] 单链表反转
循环思路:从头节点按照顺序切割链表组成新的反转链表。反转的意思将链表从头到尾,切割并反转指针域。示意图:结果图:代码://单链表反转1,循环反转//链表需要节点的相关节点如下://前驱节点,predecessorNode//当前节点,currentNode//后续节点,nextCodefunc (this *LinkedList) ReverseC...
2020-04-21 15:15:05 495
原创 golang 通用函数:获取开始时间到现在是第几周
工作中遇到的一个问题,需要获取从一个开始时间到当前时间是第几周,网上没有找到这个通用函数。所以想着写出来后拿出来,方便自己,方便他人。注意:开始时间和结束时间必须是零时!即"2019-11-0400:00:00"代码:package mainimport ( "fmt" "time")func main() { var sequence int var...
2019-11-29 15:45:08 1672
原创 golang,两种分页实例(1.mysql的limit分页。2.last_id分页)
一.mysql的limit分页。分页配合排序实例代码:func search(ctx iris.Context) { //创建查询Session query := lib.Engine.Table("department") //排序 if ctx.URLParamExists("sort") { //这里的sort一般是创建时间,比如create_at...
2019-11-18 10:14:23 4390
原创 ubuntu安装ftp服务器
使用原因:想用corn配合ftp来定时上传API日志到核心服务器。所以先搭建了ftp服务器。ftp:文件传输协议,c/s架构,用于在不同服务器之间共享文件。相关命令:开启ftp服务: service vsftpd start重启ftp服务:service vsftpd restart当前ftp服务状态:service vsftpd status只有一个宗旨,不要怕失败...
2019-09-09 10:36:01 155
原创 portainer添加mysql
自己安装mysql的时候老是遇到问题,比如端口号没写,环境变量没写,就是想不到去docker hub上去看一看。介绍两种方式安装mysql方式一、container:Image端口号环境变量最主要是用环境变量设置用户名和密码: MYSQL_ROOT_PASSWORD比如:name:MYSQL_ROOT_PASSWORDvalue:123456方式...
2019-08-30 16:54:53 3241
原创 go-swagger使用
安装新版的go-swagger使用了谷歌的几个包,必须用代理,先说下代理。windows,设置环境变量。GOPROXY。阿里云的goproxy:http://mirrors.aliyun.com/goproxy/然后下载go-swagger包,go get https://github.com/go-swagger/go-swagger安装go-swagger...
2019-08-19 17:59:41 3281
原创 修改mysql容器最大连接数
进入容器docker exec -it 775c7c9ee1e1 /bin/bash进入mysqlmysql -uroot -p123456查看最大连接数show variables like '%max_connections%';修改最大连接数set GLOBAL max_connections = 2000;查看最大连接数show variables like '%...
2019-07-12 10:05:56 530
原创 go web docker部署
参考文章:https://www.jianshu.com/p/b66af29452e7 使用docker来将go web程序打包成容器进行部署,相较与直接部署在linux服务器上来说很简单,方便很多。可以很方便的部署更新的程序。不同的地方,编写Dockerfile文件时引用的原镜像不同,将编译后的文件放入到容器中不同。记得放配置文件。第一步,准备能正常运行的程序。 这一...
2019-05-21 09:23:15 852
原创 go(iris),token+redis+mysql实现简单登录验证(目录结构和设计思路)
前后半个月左右实现了基本的验证功能,从最初连request数据都不会接收,response不会返回数据,到后来将数据库配置信息分离,将连接l和关闭redis,mysq,函数分离成中间件,并一次又一次重构代码,降低逻辑复杂度,完善程序结构,go让我体验到了服务器代码的优美和严谨。现在看来go的设计很优秀。从简单的接触larveral比较来看,go的中间件能极大简化接口的验证处理,函数多返回值和错...
2019-03-21 09:36:35 5300 1
原创 安卓,图片缩放和压缩
原理:图片缩放的原理,我的理解,就是把图片放在一个二维平面坐标系里,图片的缩放,其实是图片所有点的坐标缩放。等比例缩放,就是设定宽高和原始宽高的比例不变。scale=destnation/old;方法核心参数:原始宽高,设定宽高,设定宽高与原始宽高的比例。核心方法:matrix.postScale(scale_w, scale_h);Bitmap dstbmp = Bitm...
2019-03-20 16:12:47 347
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人