param

openssl-RSA签名和验签

放肆的年华 提交于 2020-01-15 07:25:55
openssl-私钥签名(SHA256withRSA)、公钥验签(SHA1withRSA) 一、来由-决定思路 1、近期调试的一个客户端,为了防止接口请求被劫持、 篡改, 需通过证书对请求数据进行签名操作, 来确保请求数据的完整性;要用私钥对数据进行RSA签名,用的SHA256withRSA, 然后使用 Base64 封装签名结果,将数据发送到服务器,服务器对数据进行验签。 2、针对服务器返回结果数据, 客户端需要进行验签操作来确保接收到的数据的完整性, 要用公钥验证签名,用的SHA1withRSA。 3、不论是计算签名还是进行数据验签,主要是看计算摘要的接口。 4、使用到的证书格式为pem格式的。 二、以下是核心代码 //私钥签名 SHA256withRSA /* * @param [in] filename 证书路径 * @param [in] src 待签名源数据 * @param [in] srclen 待签名源数据 * @param [out] sign 签名 * @param [out] signlen 签名长度 * @return - */ static int My_Rsa_PrikeySign ( char * filename , unsigned char * src , int srclen , unsigned char * sign , int *

100行代码搞定抖音短视频App,终于可以和美女合唱了。

半城伤御伤魂 提交于 2020-01-15 06:47:12
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由 视频咖 发表于 云+社区专栏 本文作者,shengcui,腾讯云高级开发工程师,负责移动客户端开发 最近抖音最近又带了一波合唱的节奏,老板看到后果然又是要尽快跟进,希望隔壁公司加薪的时候他也能作出如此反应。 功能看起来不复杂,就是把一个视频播放出来放一边,另一边显示摄像头的画面和源视频一起录制。单独录制和播放都还比较简单,但是左右合成就有点头大。网上搜了一圈都是些直播相关的文章,看了下没什么头绪。无奈之余翻翻SDK碰运气。之前做本地视频上传的时候有一个叫Join的类是用来前后拼接视频的,没想到里面竟然还有个分屏的接口,研究了一番终于弄清楚了他的使用方法。在此记录方便回顾,也和大家一起分享下。 前期的准备 之前的工程在上班之前同事就搭建好了,这次正好自己也试着搭建一遍。 工欲善其事,必先利其器。前期的准备工作其实不多,主要是下载SDK和准备视频。 到 SDK 的 官方网站 上注册个帐号 在 SDK开发包 - 短视频 - 文档平台 - 腾讯云 这里下载SDK 准备一段视频,我是从抖音上随便下了一个, Airdrop到电脑上保存为demo.mp4 开工 大概的思路是这样的 在界面上放两个View, 一个用来播放,一个用来录制 再放一个按钮和进度条来开始录制和显示进度 录制与源视频相同的时长后停止

python下的MySQLdb使用

﹥>﹥吖頭↗ 提交于 2020-01-15 06:24:50
python下的MySQLdb使用 2010-12-08 18:39:02 标签: python MySQLdb mysql 数据库 休闲 下载安装MySQLdb <1>linux版本 http://sourceforge.net/projects/mysql-python/ 下载,在安装是要先安装setuptools,然后在下载文件目录下,修改mysite.cfg,指定本地mysql的mysql-config文件的路径 <2>windows版本 网上搜索到一个 http://www.technicalbard.com/files/MySQL-python-1.2.2.win32-py2.6.exe 安装后import MySQLdb会出现 DeprecationWarning: the sets module is deprecated 这样一个警告,google之 原因是2.6不知sets这个模块,不过已经添加了set内置函数。找到MySQLdb文件夹的中__init__.py,注释掉from sets import ImmutableSet class DBAPISet(ImmutableSet):添加 class DBAPISet(frozenset):;找到converters.py注释掉from sets import BaseSet, Set

SpringBoot使用消息队列RabbitMQ

末鹿安然 提交于 2020-01-15 05:51:44
RabbitMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲、消息分发的作用。RabbitMQ是实现AMQP(高级消息队列协议)的消息中间件的一种,AMQP,即Advanced Message Queuing Protocol, 高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。在项目中,将一些无需即时返回且耗时的操作提取出来,进行了 异步处理 ,而这种异步处理的方式大大的节省了服务器的请求响应时间, 提高了系统的吞吐量。 简单概念 几个名词术语:           Broker - 简单来说就是消息队列服务器的实体。       Exchange - 消息路由器 ,转发消息到绑定的队列上,指定消息按什么规则,路由到哪个队列。       Queue - 消息队列 ,用来存储消息,每个消息都会被投入到一个或多个队列。       Binding - 绑定 ,它的作用就是把 Exchange 和 Queue 按照路由规则绑定起来。       RoutingKey - 路由关键字 ,Exchange 根据这个关键字进行消息投递。       Producter - 消息生产者 ,产生消息的程序。       Consumer - 消息消费者 ,接收消息的程序。       Channel - 消息通道

python-桥接模式

雨燕双飞 提交于 2020-01-13 21:57:24
源码地址: https://github.com/weilanhanf/PythonDesignPatterns 说明: 有些类在功能设计上要求,自身包含两个或两个以上变化的因素,即该类在二维或者多维上变化。现有一杯咖啡,咖啡杯的大小和是否加奶为两个变化因素,使得这杯咖啡在这两个维度上发生变化,也就是可以产生四个类:小杯不加奶,小杯加奶,大杯不加奶,大杯加奶。这样的话如果说在给咖啡多几个变化因素如:加糖,是否加热等,那么就会有呈指数增长个数的子类产生。但是我们可以从另一个角度考虑。这四个类其实是两个角色的组合,行为和抽象,抽象为大杯小杯,行为为加奶与否。这种分离抽象与行为的方法就是桥接模式。 桥接模式:将抽象部分与它的实现部分解耦,使得两者都能够独立变化适应业务需求,或者说是两个部分中的任何一部分发生变化时都不会影响对方,”井水不犯河水"。桥接模式桥接模式又被称为柄体(Handle and Body)模式或接口(Interface)模式 用抽象关联取代了传统的多层继承 将类之间的静态继承关系转换为动态的对象组合关系 桥接模式的结构 桥接模式包含以下4个角色: Abstraction(抽象类) RefinedAbstraction(扩充抽象类) Implementor(实现类接口) ConcreteImplementor(具体实现类) 实例: 在一个画图程序中,常会见到这样的情况

关于参数的界面化

别来无恙 提交于 2020-01-13 14:13:20
关于参数的界面化 开始 最开始,可能有不少人写的python源码都是跟我一样,将所有的变量都写死在源码里面(比如我的上一篇博客: 用 matplotlib 绘制会动的雪花 就是这样的。),每次需要修改都是直接改源码的。但这样总感觉哪里不对的说。 接着,我知道了启动带参数的用法(python a.py 参数),发现了argparse,这个会自动处理命令行参数,并格式化,而且带帮助提示,终于可以在源码里面大胆用参数了。 终于有一天,我脚本里写的处理argparse部分超过了100行!虽然我这个是因为pep8的原因,将代码进行处理之后的结果。如果不用pep8处理,也有20行了。 我当时很惊讶,然后我关上了那个源码的编辑界面。嗯,刚刚啥都没发生,嗯。 终于,在这几天,我发现了一个利器,终于可以再次正视那个问题。 源码 #!/usr/bin/python # vim: set fileencoding=utf8 : import pyqtgraph as pg from pyqtgraph . Qt import QtCore , QtGui app = QtGui . QApplication ( [ ] ) import pyqtgraph . parametertree . parameterTypes as pTypes from pyqtgraph . parametertree

PostgreSQL的SQL语句参数上限 An I/O error occurred while sending to the backend.

余生长醉 提交于 2020-01-12 01:51:44
事故现场: 数据库我用postgreSQL,持久成框架mybatis 现在有一个操作,需要将一大批数据(3000+)插入数据库,后台直接报错,报错原因如下: org.postgresql.util.PSQLException: An I/O error occurred while sending to the backend. Caused by: java.io.IOException: Tried to send an out-of-range integer as a 2-byte value: 50805 原因:批量插入的顶峰在JDBC-Driver出现天花板. 简单来说就是SQL语句参数上限 可能我们首先想到的解决办法是分段批量插入,将sql语句分成几次执行,比如现在有3500条数据,一次性最多插入1500,分为3次插入;那代码怎么实现呢? 下面介绍2种解决方法,2种方法都用了递归算法;(当时的情况我这边一次性可以插入1800条,具体要看数据表中有多少字段) 注:以下方法可以写在service的通用方法中(如果有的话),这样所有实体类的service都可以调用 第一种方法: 这是我的第一次尝试,虽然不太灵活,但能用,记录一下;后来才有第二种方法; 直接用java.util.List包提供的方法subList(int fromIndex, int toIndex);

lintcode入门篇二

本秂侑毒 提交于 2020-01-12 01:20:36
一. 最大子数组 给定一个整数数组,找到一个具有最大和的子数组,返回其最大和。 样例 样例1: 输入:[−2,2,−3,4,−1,2,1,−5,3] 输出:6 解释:符合要求的子数组为[4,−1,2,1],其最大和为 6。 样例2: 输入:[1,2,3,4] 输出:10 解释:符合要求的子数组为[1,2,3,4],其最大和为 10。 挑战 要求时间复杂度为O(n) 注意事项 子数组最少包含一个数 输入测试数据 (每行一个参数) 如何理解测试数据? 第一种解法:O(n)时间复杂度 class Solution: """ @param nums: A list of integers @return: A integer indicate the sum of max subarray """ def maxSubArray(self, nums): # write your code here ''' 做两步判断: 1.第一步判断:当n > 0 的时候,继续加。如果n小于0,则n取最新的数,之前的舍弃 2.第二步判断:sum 和 继续加的n作比较,如果sum < n,那么sum = n,否则sum保持。 ''' sum = nums[0] n = nums[0] for i in range(1,len(nums)): if n > 0: n = n + nums[i] else:

requests模块--python发送http请求

▼魔方 西西 提交于 2020-01-11 23:06:18
requests模块 在Python内置模块(urllib、urllib2、httplib)的基础上进行了高度的封装,从而使得Pythoner更好的进行http请求,使用Requests可以轻而易举的完成浏览器可有的任何操作。 Requests 是使用 Apache2 Licensed 许可证的 基于Python开发的HTTP 库。 requests使用 一、GET请求 向 https://github.com/timeline.json 发送一个GET请求,将请求和响应相关均封装在 ret 对象中。 1、无参数实例 1 2 3 4 5 6 import requests ret = requests.get( ' https://github.com/timeline.json ' ) print ret.url print ret.text 2、有参数实例 1 2 3 4 5 6 7 import requests payload = { 'key1' : 'value1' , 'key2' : 'value2' } ret = requests.get( " http://httpbin.org/get " , params = payload) print ret.url print ret.text 二、POST请求 向https://api.github.com

OpenCV python 点与轮廓的距离

牧云@^-^@ 提交于 2020-01-11 11:53:14
处理图片:[cs1.jpg] import cv2 def point_contour_dist ( img , hull , point , text , measure_dist = True ) : """点与轮廓hull的距离 :param img: 绘制结果图片 :param hull: 轮廓hull :param point: 计算的点 :param text: 文本距离 :param measure_dist: 计算结果方式 :return: 距离 """ dist = cv2 . pointPolygonTest ( hull , point , measure_dist ) font = cv2 . FONT_HERSHEY_SIMPLEX cv2 . putText ( img , text , point , font , 1 , ( 0 , 255 , 0 ) , 3 ) print ( "dist%s=" % text , dist ) return dist def main ( ) : # 1.导入图片 img_src = cv2 . imread ( "cs1.jpg" ) # 2.灰度化,二值化 img_gray = cv2 . cvtColor ( img_src , cv2 . COLOR_BGR2GRAY ) ret , img_bin =