自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 资源 (4)
  • 收藏
  • 关注

原创 Golang协程中调用Python3

如何在Go中调用Python3的代码不再赘述,网上一大把。但是在协程中多次调用Python函数会panic。python demo:# coding: utf-8def test(a, b): return a + bGoalng demopackage mainimport ( "fmt" "sync" "github.com/DataDog/go-python3")func init() { python3.Py_Initialize()}var PySt

2021-12-27 17:28:32 1387 1

原创 Golang中channel的原理解读

数据结构channel的数据结构在$GOROOT/src/runtime/chan.go文件下:type hchan struct { qcount uint // 当前队列中剩余元素个数 dataqsiz uint // 环形队列长度,即可以存放的元素个数 buf unsafe.Pointer // 环形队列指针 elemsize uint16 // 每个元素的大小 closed uin

2021-10-11 21:12:21 361

原创 docker compose容器间服务访问

今天遇到了一个使用多个docker容器时服务间通讯的问题,在这里做个记录,也帮助需要的人。现在有两个服务–grpcclient和grpcserver,需要在client中调用server的函数,这时需要指定server的地址。由于不是在生产环境,所以ip是会变的,所以这里不能通过指定ip的方式来访问。这里直接贴出docker compose 的配置文件version: '3'services: grpcserver: build: context: . dock

2021-05-28 16:45:54 6043

原创 AutoJS实现微信自动聊天机器人

最近朋友请我帮忙实现一个能根据微信聊天内容自动回复的脚本,在网上找了一圈没有找到有价值的线索,于是自己动手实现了一个,在这里记录下。找到未读消息: 我这里使用的是通过截图并找点的方式来获取未读消息的坐标点并点击进入聊天页面。获取聊天内容:截图后通过百度api进行文字识别来获取聊天内容,百度api每天有一百万的调用限制回复消息:用获取到的文本内容,通过天行api来获取关联的消息数据,实现自动回复。但是我觉得机器人都傻傻的。...

2021-04-15 16:20:59 3354 4

原创 京东APP下单接口调用

通过京东app的api调用下单接口直接下单需要做一下两步:1. 签名:京东app的每一个接口都会带上sign参数,值是由body,st,sv,client,clientVersion,uuid等参数决定的,如果要获得京东sign签名需要研究so库。POST https://api.m.jd.com/client.action?functionId=liveAuthorInfoV8510&clientVersion=8.5.12&build=73078&client=android

2021-03-31 12:12:12 14608 10

原创 golang实现kubectl apply和kubectl delete

如何使用golang在docker内或集群内实现kubectl apply -f或kubectl delete -f命令?在网上找了一圈没找到,自己研究了下。package mainimport ( "bytes" "context" "errors" "flag" "fmt" "io/ioutil" appsv1 "k8s.io/api/apps/v1" apiv1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/

2021-02-25 09:54:03 1174

原创 golang路由拦截器

在golang中实现路由拦截有多种方法,比如一般来说框架都会实现拦截器或者中间件,本文是未采用web框架时一种拦截器的实现。在http.HandleFunc()的源码中可以看到第二个参数是一个func:func HandleFunc(pattern string, handler func(ResponseWriter, *Request)) { DefaultServeMux.HandleFunc(pattern, handler)}所以这里可以定义一个map,键值分别是路由和处理函数:ty

2020-06-09 10:31:39 2379

原创 golang操作redis和lua脚本实现线程安全操作

package mainimport ( "fmt" "github.com/go-redis/redis" "log" "sync")func createScript() *redis.Script { script := redis.NewScript(` local goodsSurplus local flag local existUserIds = tostring(KEYS[1]) local memberUid = tonumber(

2020-06-08 22:22:22 4106

原创 gRpc中的TLS验证

/*-=权认证gRpc中默认支持两种授权,SSL/TLS认证方式、基于Token的认证方式1.1 SSL/TLS认证方式SSL全称是Secure Sockets Layer,又被称之为安全套接字层,是一种标准安全协议,用于在通信过程中建立客户端与服务器之间的加密连接。TLS的全称是Transport Layer Security,TLS是SSL的升级版本。在使用额过程中,往往习惯于将SSL和TLS组合在一起,统称为SSL/TLS。简而言之,SSL/TLS是一种用于网络通信中加密的安全协议。1.2

2020-06-07 12:54:32 2081

原创 k8s结合jenkins部署docker项目

开启ssh服务apt-get install openssh-serversudo /etc/init.d/ssh startkubernetesswapoff -a关闭虚拟硬盘apt-get install -y apt-transport-https ca-certificates curl software-properties-common#docker源:curl -fs...

2020-01-10 22:28:38 3395 1

原创 MySQL索引数据结构

索引:索引是为了加速对表中数据行的检索而创建的一种分散存储的数据结构。工作机制:说到索引就必须提到以下的几种数据结构:二叉树1.二叉查找树缺陷:当数据一边大或者一边小时就会与全局线性链表一样,如:1 —> 2 —> 3 —>4 —>5,要查找5就必须全部遍历。2.平衡二叉树平衡二叉树:满足二叉查找树的定义,另外必须满足任何节点的两个子节点的高度差为1。...

2019-11-24 14:40:52 157

原创 几种常见算法(基于Python)

1.冒泡排序冒泡排序:它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。冒泡排序算法的运作如下:1.比较相邻的元素。如果第一个比第二个大(升序),就交换他们两个。2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后...

2019-11-23 18:08:39 345

原创 函数自省和偏函数

函数内省函数有很多种属性,而其中的很多种属性也是普通对象所有的。使用dir命令可查看函数的所有属性>>> def foo():... pass... >>> dir(foo)['__annotations__', '__call__', '__class__', '__closure__', '__code__', '__defaul...

2018-08-28 20:37:52 483

原创 Python元类

type()>>> from hello import Hello>>> h = Hello()>>> h.hello()Hello, world.>>> print(type(Hello))<type 'type'>>>> print(type(h))

2018-08-28 20:36:58 168

原创 高阶装饰器

lru_cache和singledispatchfunctools.wrapsfunctools.wraps 是Python标准库中拿来即用的装饰器之一。虽然这不是这篇文章的重点,但还是举个例子:def clock(func): time0 = time.time() @functools.wraps(func) def clocked(*args, ...

2018-08-28 20:35:30 129

原创 字典及散列表,字典用法

字典和散列表字典类型不但在各种程序里广泛使用,它也是Python语言的基石。模块的命名空间、实例的属性和函数的关键字参数中都可以看到字典的身影。跟它有关的内置函数都在__bulitins__.dict__模块中。正是因为字典至关重要,Python对它实现了高度优化,而散列表则是字典类型性能出众的根本原因。collections.abc模块中有Mapping和MutableMapping...

2018-08-28 18:01:35 1113

原创 Python高阶装饰器

lru_cache和singledispatchfunctools.wrapsfunctools.wraps 是Python标准库中拿来即用的装饰器之一。虽然这不是这篇文章的重点,但还是举个例子:def clock(func): time0 = time.time() @functools.wraps(func) def clocked(*args, ...

2018-08-22 14:48:25 236

原创 分布式爬虫及Bloom fileter去重

分布式爬虫介绍1.使用redis:虽然scrapy帮我们将爬虫程序处理成了多线程加异步(默认100个线程),但是我们只能在一台主机上运行,所以爬取速率还是很有限的,分布式爬虫将多台主机组合起来,共同完成一个爬虫任务,这将大大提高爬虫效率。2.维护爬虫队列我们要做的就是在多台主机上同时运行爬虫任务协同爬取,而协同爬取的前提就是共享爬虫队列,这样主机就不需要各自维护爬虫队列,而是从...

2018-07-09 19:33:17 1476

原创 Mysql的主从部署

Mysql主从实验主从的概念主 – 主机,负责对数据库的读写操作,数据类型主要是innordb 从 – 从机,负责对数据库的读操作,数据库类型主要是myisam 主从复制即是从机拷贝主机的数据,而用户对数据库的读操作只通过从机即可,因为myisam的的强大之处在于读操作,一个主机可以配置多个从机。操作步骤关闭selinuxs#以下针对两台服务器同时操作chkco...

2018-06-22 15:52:06 7961 2

原创 让你自己的网页支持Markdown编辑器

Editor是一款免费的,开源的轻量级Markdown编辑器,附上下载地址 下载下来的文件夹大概是这样的结构: 为了防止项目结构混乱,我做了这样的目录结构这里的new_file.html是我的页面,它和plug-ins文件夹同级,plug-ins文加下有JQuery和EditorMD两个文件夹,刚才下载的文件就放在这个文件夹下面。这里注意一点,由于Editor已经停止维护了,所...

2018-06-12 19:14:39 10047 22

原创 MySQL的InnoDB/MYISAM存储引擎的区别

概念1.存储引擎其实就是如何实现存储数据,如何为存储的数据建立索引以及如何更新,查询数据等技术实现的方法。2.MySQL中的数据用各种不同的技术存储在文件(或内存)中,这些技术中的每一种技术都使用不同的存储机制,索引技巧,锁定水平并且最终提供广泛的不同功能和能力。在MySQL中将这些不同的技术及配套的相关功能称为存储引擎。查看数据库存储引擎 1.show engines//查看MyS...

2018-06-12 09:03:26 2116

原创 Django中遇到的坑(长期更新)

1.Django分页出现UnorderedObjectListWarning: Pagination may yield inconsistent results with an unordered ob将messeges = MessegeModel.objects.all()变为messeges = MessegeModel.objects.get_queryset()...

2018-06-11 21:59:31 6722

原创 Mysql介绍与如何对其优化

1.Mysql介绍MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL 是开源的,所以你不需要支付额外的费用。MySQL 使用标准的SQL数据语言形式。MySQL 可以运行于多个系统上...

2018-06-11 19:47:57 723

原创 分布式集群配置详解

hosts 文件位置 C:\Windows\System32\drivers\etcwin10 先复制到桌面,进行修改,然后在复制回去nginx.conf 位置 /usr/local/nginx/conf server { listen 80; server_name _; #location / { 把这几行注释掉,默认就是用nginx作为服务...

2018-06-11 19:46:33 976

原创 爬虫如何对网页动态内容抓取

我们进入淘宝网,在首页查看源代码 可以看到全是js,并没有直观的页面元素,因为首页的内容都是动态生成的,这时候我们就需要对网页的链接做一些分析了。 现在我想爬取淘宝网上所有关于Ipad的信息,那么现在首页的搜索框输入‘Ipad’查看链接得到https://s.taobao.com/search?q=ipad&imgfile=&js=1&stats_cli...

2018-06-09 16:00:02 10584

原创 Selenium实现交互式模拟浏览器行为

前面介绍了网络爬虫对静态页面的抓取,但是在爬取网页的时候会遇到各种各样的情况,比如下拉选项和表单提交,这些都是用之前的方法解决不了的。在Python爬虫中处理这种需要模拟用户操作的情况最好的方法之一就是使用Selenium。1.Selenium介绍Selenium是ThoughtWorks公司的一个强大的开源Web功能测试工具系列,采用Javascript来管理整个测试过程,包括读入测试套...

2018-06-09 13:50:36 3978

原创 pycharm无法安装加载插件、三方库解决办法

在使用pycharm安装插件时如遇到安装失败可以在安装目录下的packaging_tool.py执行以下操作

2018-06-04 16:20:21 14567

原创 如何理解Cooike和Session

用作身份识别和用户跟踪在Web发展历史中,session与cookie都是伟大的存在,其初衷都是为了记住用户在网站上的浏览信息,如果没有其他替代品的出现,几乎所有web站点都离不开session与cookie。为什么需要Http协议是无状态的,也就导致服务器无法分辨是谁浏览了网页。为了维持用户在网站的状态,比如登陆、购物车等,出现了先后出现了四种技术,分别是隐藏表单域、URL重写、co...

2018-06-04 16:13:05 1205

原创 关系型数据库ACID

关系型数据库遵循ACID规则 事务在英文中是transaction,和现实世界中的交易很类似,它有如下四个特性:1、A (Atomicity) 原子性原子性很容易理解,也就是说事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。比如银行转账,从A账户转100元至B账户,分为两个步骤:1)从A账户取100元;...

2018-06-04 10:47:36 671

原创 列表生成式和列表生成器

生成式:L = [x * x for x in range(10)] 占用运行内存生成器:g = (x * x for x in range(10)) 占用时间# 第一种写法 g = (x * x for x in range(10))for n in g:... print n# 第二种写法def fib(max): n, a, b = 0...

2018-06-04 10:45:44 984

原创 Redis介绍、主从复制配置、订阅发布

Redis是免费的,遵循BSD协议的一个高性能key-value数据库 - Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 - Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。 - Redis支持数据的备份,即master-slave模式的数据备份。Redis 优势:...

2018-06-04 10:44:52 698

原创 多进程面向对象爬虫程序

爬虫基本步骤:1.定义全局变量redis_client = redis.Redis(host='112.74.60.22', port=1994, password='xxz199439') # 链接redis数据库,存放任务队列和已完成任务mongo_client = pymongo.MongoClient(host='11...

2018-06-04 10:41:35 743

原创 爬虫基础和相关知识

robots协议 www.taobao.com/robots.text1.下载数据 -urllib/requests/aiohttp2.解析数据 -re/lxml/beautifulsoup4(bs4)/pyquery3.持久化 - pymysql/redis/sqlalchemy/peewee/pymongo4.调度器 - 进程/线程/协程正则表达式 - 性能好 复杂pyq...

2018-06-04 10:38:45 4515

原创 redis连接服务器,五大数据类型

redis-client启动客户端auth xxx输入密码 1. 启动 a) 启动redis-server redis-cli b) 启动 /bin/systemctl start redis.service c) service start redis2. 后台运行 redis-server &3. :/requirepa...

2018-04-19 18:29:58 637

原创 多重继承、正则表达式、多线程、网络编程

多重继承多重继承:子类继承多个父类的属性 父类中有重复的时候按先后顺序执行,执行排在前面的 如果一个类都多个父类,而多个父类又有公共的父类,那么在搜索属性和方法时搜索的依据是c3算法–类似广度优先搜索(先搜索统一层级的,专门处理菱形继承) 最好不要使用多重继承如果无法避免就把不是首要类父类写成抽象类,只是做一个约定,要求子类要写哪些东西。 from abc import ABCM...

2018-03-24 15:15:10 796

imagekitchenforandroid-v4.4.2.apk

安卓修改boot.img神器,墙内不好找,可直接下载安装即可。修改default.prop debuggable用于真机调试颗参考:https://www.jianshu.com/p/7025471d6f5e

2020-11-19

ListSort.py

基于Python的几种基础排序算法,包含冒泡排序、选择排序、插入排序、希尔排序、快速排序、归并排序。

2019-11-23

多点求最密集范围及其中心

指定半径下,使用meanshift算法原理对分布在二维平面上的多个点做密度聚类,求出每个聚类包含点的个数及中心坐标。

2019-03-28

贪吃蛇游戏

学习python,写的贪吃蛇游戏,可以上下左右移动,可以吃食物。

2018-03-26

空空如也

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

TA关注的人

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