- 博客(18)
- 资源 (1)
- 问答 (2)
- 收藏
- 关注
原创 记录一次 “服务器 CLOSE_WAIT”堆积的解决过程
一 前提与背景1 前提只要出现CLOSE_WAIT累积一定是自己服务写的有问题2 背景给自己服务访问第三方服务加了连接池后,压测时候发现请求结束后有很多连接处于close_wait状态,且一直不结束用连接池的原因是为了连接复用与连接控制二 解决过程1 知识点回顾在正式解决该问题前,先回顾下“TCP四次挥手”过程理解四次挥手时候不要用 服务端-客户端这样去理解每次挥手过程, 而是要以谁是主动断开连接的(即主动发送 FIN)为标准2 服务是如何解决如【背景】图所示,处于 CLOSE_W
2021-09-02 19:57:57
829
原创 记录一次机器CPU高负荷占用导致服务不可用
一 问题描述接到上游调用方反馈到服务一直504,根本没办法使用,同时机器cpu 监控一直报警二 问题排查过程解决思路1思路一: 接口本身处理比较耗时,加上上游并发请求比较大,所以才会一直报警思路一解决方案: 确实也是如此,如果你的服务处理非常快且不是特别消耗资源那么确实不会在目前的并发下出现密集的504问题。那么先优化目前的接口。 接口是提供图像ocr功能,会加载深度学习模型的模型文件,代码中每一次请求都会重新实例化一个对象,这样做就会存在两个问题:1,每次请求都去load 一次模
2021-08-12 22:04:28
560
原创 python 协程安全理解
python 协程安全理解一 背景二 详情三 总结一 背景在 Cpython中,由于GIL的存在,所以一次同时只能有一个线程占用CPU,但是即便如此,python 仍然存在线程不安全问题(下文解答), 但是在python中,协程却是安全的二 详情 import eventlet import threading count = 0 def count_10000(): global count for i in range(1000
2021-08-09 21:48:25
1018
原创 keras +TensorFlow Serving +docker 模型服务化
文章目录一 项目背景二 keras 模型上线流程1 keras 模型定义与训练a 模型定义b 模型训练2 keras模型转换成tensorflow模型3 docker环境配置4 启动容器服务并加载模型文件1 获取 tensorflow serving 镜像2 起镜像服务5 服务调用三 其他说明四 参考一 项目背景keras 训练好模型后,我们一般可以在本地直接调用,但是大部分场景是需要将模型功能服务化,提供接口供第三方调用。如果直接用flask 等web框架封装成服务,往往成本较高,且性能需要其他方案
2020-07-29 19:21:27
692
原创 netflix 生产测试简单理解
一 摘要本文基于netflix于19年在O’Reilly软件架构会议的分享做的简单总结,后续会持续更新理解内容。试想测试涉及大规模分布式系统的复杂应用程序,您觉得仅使用测试环境进行测试是否是可靠的?如今,Netflix客户端和服务器应用程序的自动化测试已在生产环境中大规模运行。在短短的几年内,该公司的测试已经从小批量的手动模式变为连续,大量和全自动的模式。会议分享的内容参考链接:netfli...
2020-03-13 16:10:16
620
原创 图遍历(DFS, BFS) python实现
一 摘要图遍历方法包括深度遍历(DFS)和广度遍历(BFS)。图一般用邻接矩阵或者邻接表来储存,本实现代码中 采用词典来存储,相比于邻接矩阵,词典方式来存储会导致访问并没有那么快,因为需要遍历key对应的list才可以找到想要的边。另外,无论是dfs还是bfs其实跟树遍历(因为树也是一种图,无环图)一样,用到的辅助数据结构都是queue(BFS)或者stack(DFS)实现代码import...
2019-12-15 19:09:30
1607
1
原创 keras生成器(data_generator)批量加载训练数据
1 背景1、在做深度学习时候,数据量往往非常大,如果一次性加载到内存中,往往会出现OOM问题,为了解决这个问题,我们就不用model.fit()来训练,而用model.fit_generator()来训练。这样来数据就用生成器(lazy calculate)的方式加载数据,减少内存压力。2、keras的官方文档里并没有实现batch_size的功能3、同时,看了几篇中文文档,写的data_g...
2019-12-02 15:35:10
3863
2
原创 centos 安装pcapy
centos 安装pcapy踩的坑直接pip install pcapy 报错,提示没有 pcap.h 文件,这是因为没有安装libpcap-dev的原因,所以需要提前安装,安装这里也是很多坑,后续安装流程里会提及1、环境介绍操作系统: Linux centospython版本:python2.7.32、安装流程1、sudo yum install libpcap-dev2、pi...
2018-10-14 10:11:59
755
原创 使用gtest + Gcov 对C++ project进行单元测试以及单测覆盖率统计
使用gtest + Gcov 对C++ project进行单元测试以及单测覆盖率统计一、背景单元测试对于开发人员来讲很普通但又经常被忽视,但是并不代表单元测试不重要相反很有必要,列举几条必要性的原因a降低程序的bug出现的可能性。大工程难免包含很多的类方法等,这之间难免有相互耦合的地方,修改其中的一个方法很可能造成其其他的方法出现bug。如果提前写了单元测试,就能很快定位出bug所在...
2018-10-07 15:08:46
5332
原创 linux服务器上跑easypr
linux 服务器上跑easypr(V3.0)一、前期环境搭建需要安装目录: cmake + GCC/G++ + Opencv 具体安装方法可以参考easypr linux环境搭建 注意:记住自己安装的目录,特别是opencv 版本是大于3.1 安装方法也可以参考网上likes较多的教程,影响不大。二、easypr下载运行# git clone https://github.c
2017-08-19 18:01:16
1272
原创 深度学习- 将图片数据转成.rec文件
深度学习- 将图片数据转成.rec文件1,前提1 操作系统: windows8.12 开发环境:anconda + spyder + mxnet很方便,很多东西都可以直接像linux下一个命令搭建好, 具体参见我前面的相同系列blog2 , 说明MXNet,不是直接处理原生数据比如图片之类的,而是处理的自定义的一种文件格式rec。而rec格式的文件由依赖于一个描述原生数据的列表文件格式lst。
2017-07-25 15:53:39
5402
1
原创 android开发-layout背景图片无法显示
1、开发环境1 android studio 2一部真机2、问题描述在开发时候,需要选一张好看的背景图片,但是放在drawable文件夹下面 在layout里面设置background时候,下载到真机上面北京图片无法显示,有的手机又可以显示。3、问题原因没有将图片放在相应的分辨率background文件夹下。不同分辨率的图片放在不同的文件下 。比如drawable-hdpi drawable-
2017-07-23 12:24:29
4495
原创 深度学习-使用mxnet做线性回归问题
深度学习-使用mxnet做线性回归问题既然已经把mxnet装好了, 那我们就可以开始机器学习之旅,至于mxnet的API和相关函数请参考官方文档mxnet文档。Andrew Ng在他的machine learning课堂上提出的一个问题就是:我们有某个地区住房面积和相应房价的数据集合,对于这样的给定的数据, 我们的目的是要利用已有的信息,来对房价建立预测模型。即对于给定的房屋信息(房屋面积)预测其房
2017-07-18 11:57:04
1125
原创 C++中结构体占字节数(sizeof)
C++中结构体占字节数(sizeof)首先看一段代码 struct X{ char a; int b; double c; }SRT;int main(){ cout << sizeof(SRT) << endl; cout << sizeof(SRT.a) << endl; cout << sizeof(SRT.b) << endl;
2017-07-07 16:08:12
1777
原创 C++中几个关键字的解析
C++中几个关键字的解析一、const(定义不变量)class Test{ private: int a; public: void testFunction(int b)const{ a=b; //错误,在const成员函数中,不能修改任何类成员变量 help(b) //报错,const成员函数不能调用非onst成员函数,因为非co
2017-07-07 16:06:30
627
原创 char *a 与char a[]所占空间解析题
char *a 与char a[]所占空间解析在分析之前,我们先熟悉下在16位、32位、64位下指针类型 与char类型所占空间 16位 32位 64位char 1 1 1指针 2 4 8(我们在有的编译环境下面sizeof出来是4 是因为编译器为了编译32位机器代码而做的妥协,按道理
2017-07-07 16:05:35
1981
原创 C/C++编译的程序占用的内存
c/C++编译的程序占用的内存*1、栈区(stack)— 由编译器自动分配释放 ,存放函数参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 *2、堆区(heap) — 一般由程序员分配释放 , 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。 需要程序员自己申请,并指明大小,在c中malloc函数,在c++中用new*3、全局区(静态区)(
2017-07-07 16:03:37
500
原创 深度学习--windows 下安装mxnet
深度学习–windows 下安装mxnet前言:关于什么是mxnet,为什么选用mxnet框架这里就不一一介绍了,有兴趣的同学可以参考mxnet实战心得 和 为什么强大的mxnet一直火不起来安装过程1、安装cuda, cudnn具体的安装步骤以及方法,可以参考这篇blog相关安装方式, 当然网上的教程蛮多的,也可以参考2、安装anaconda根据自己电脑的版本 型号选择相应的下载,点击这里下载下载
2017-07-03 23:42:28
4815
3
Anatomy of testing in production
2020-03-13
python strftime格式化 三位数的年份(例如 117年)如何写?
2019-11-18
ant design menu组件 theme主题
2017-10-28
TA创建的收藏夹 TA关注的收藏夹
TA关注的人