![](https://img-blog.csdnimg.cn/20190918140129601.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
学习笔记
文章平均质量分 86
学习笔记
Assassin401
天涯路远 | 见字如面
展开
-
gRPC(3):拦截器
在 gRPC 调用过程中,我们可以拦截 RPC 的执行,在 RPC 服务执行前或执行后运行一些自定义逻辑,这在某些场景下很有用,例如身份验证、日志等,我们可以在 RPC 服务执行前检查调用方的身份信息,若未通过验证,则拒绝执行,也可以在执行前后记录下详细的请求响应信息到日志。这种拦截机制与 Gin 中的中间件技术类似,在 gRPC 中被称为 拦截器,它是 gRPC 核心扩展机制之一拦截器不止可以作用在服务端上,客户端同样可以拦截,在请求发出之前和收到响应之后执行一些自定义逻辑,根据拦截的 RPC 类型,可原创 2021-07-08 23:07:41 · 675 阅读 · 0 评论 -
gRPC(2):四种基本通信模式
在 gRPC(1):入门及简单使用(go) 中,我们实现了一个简单的 gRPC 应用程序,其中双方通信是简单的请求—响应模式,没发出一个请求都会得到一个响应,然而,借助 gRPC 可以实现不同的通信模式,这里介绍四种 gRPC 应用程序的基础通信模式:一元RPC、服务端流RPC、客户端流RPC、双向流RPC1、一元RPC一元 RPC 也被称为简单 RPC, 其实就是 gRPC(1):入门及简单使用(go) 中实现的请求—响应模式,每调用一次得到一个结果,这里再以一个简单的订单管理程序做说明,实现两个服务原创 2021-07-02 22:11:20 · 482 阅读 · 0 评论 -
gRPC(1):入门及简单使用(go)
1、RPC1.1 什么是RPCRPC(Remote Procedure Call),即远程过程调用,过程就是方法,简单来说,它就是一种能够像调用本地方法一样调用远程计算机进程中的方法的技术,在这种调用中,我们不需要了解任何网络通信的细节(当然,就使用来说)最终解决的问题:让分布式或者微服务系统中不同服务之间的调用像本地调用一样简单1.2 RPC和HTTP调用远程服务,HTTP 就可以完成的任务,为什么还需要 RPC 呢?需要注意,这两个并不是同一层次的概念,HTTP 是一种传输协议,RPC 应该是原创 2021-06-26 23:09:01 · 2630 阅读 · 2 评论 -
Git多人项目开发流程演练
1. 前言本文利用 GitHub 平台进行一个多人项目开发流程的演练,以加深课上所学内容。参考孟老师的文章:五⼤场景玩转 Git,只要这一篇就够了!2. 初始化项目2.1 新建远程项目一个多人项目通常是从远程创建新仓库开始,这里我们在 GitHub 新建一个仓库 git101 :新建仓库时我添加了 .gitignore 文件来进行一个初始化提交,不然默认一个空项目后面不好画图演示。.gitignore 文件顾名思义,在里面指定的文件或文件夹都不会被 Git 跟踪,通常用于指定一些只有本地会用到原创 2021-03-28 09:18:41 · 311 阅读 · 0 评论 -
信息安全期末复习
一、米特尼克的圣诞攻击1、攻击背景在Unix世界中,可以很容易地给予信任。 假设用户在机器A和机器B上都有一个帐户,为了使两者之间的麻烦最小,就可以在它们之间建立全双工的信任关系。 在A的主目录中,创建一个 .rhosts 文件:echo "hostB 用户名" > .rhosts,在B的主目录中做同样的操作,现在,用户可以使用任何 r* 命令来操作另一台服务器,这些命令将只验证地址。1994年圣诞节,Kevin Mitnick 攻击了下村勉的机器,主要用到了两种技术:IP源地址欺骗和TCP原创 2021-03-18 20:57:03 · 826 阅读 · 1 评论 -
使用OpenSSL自建一个HTTPS服务
1. 理论知识1.1 什么是https传统的 HTTP 协议以明文方式进行通信,不提供任何方式的数据加密,很容易被中间攻击者破解通信内容或者伪装成服务器与客户端通信,在安全性上存在很大问题。HTTPS 协议是由 HTTP 加上 TLS/SSL 协议构建的可进行加密传输、身份认证的网络协议,主要通过数字证书、加密算法、非对称密钥等技术完成互联网数据传输加密,实现互联网传输安全保护。关于非对称加密以及公钥私钥相关知识不在赘述,可自行了解。PS: TLS 是传输层加密协议,前身是由网景公司1995年发原创 2020-12-13 11:16:09 · 1700 阅读 · 8 评论 -
Docker笔记
1. Docker简介开源的应用容器引擎打包环境和应用到一个轻量级,可移植的容器中,发布到任何 Linux 机器上,规避了软件跨环境迁移的问题沙箱机制,相互隔离1.1 安装sudo apt install docker-ce1.2 架构守护进程(daemon):后台服务,管理一个 Docker 进程镜像(image):相当于一个 root 文件系统,打包了环境和应用容器(container):镜像运行时的实体,可以被创建,启动,暂停, 停止,删除仓库(r原创 2020-10-01 18:15:19 · 159 阅读 · 0 评论 -
Nginx+Gunicorn+Supervisor部署Flask应用
Flask 内置了简单的 Web 环境,让我们在开发的时候只需要专注于应用实现,而真正要在生产环境运行时这个简单的 Web 环境就不够用了,还需要一系列操作才能让 Web 应用高效的运行起来。现在记录一下在生产环境部署 Flask 应用的其中一套方案:Nginx + Gunicorn + Supervisor。1. 准备1.1 项目结构我的项目结构类似这样, myapp 包是应用的主要代码,其中的初始化文件 init 提供了创建程序实例的工厂方法 create_app ,主目录下的 .flaskenv原创 2020-10-01 14:35:31 · 244 阅读 · 0 评论 -
Python协程之asyncio
asyncio 是 Python 中的异步IO库,用来编写并发协程,适用于IO阻塞且需要大量并发的场景,例如爬虫、文件读写。asyncio 在 Python3.4 被引入,经过几个版本的迭代,特性、语法糖均有了不同程度的改进,这也使得不同版本的 Python 在 asyncio 的用法上各不相同,显得有些杂乱,以前使用的时候也是本着能用就行的原则,在写法上走了一些弯路,现在对 Python3.7+ 和 Python3.6 中 asyncio 的用法做一个梳理,以便以后能更好的使用。协程与asyncio原创 2020-08-31 12:55:27 · 585 阅读 · 0 评论 -
Python类元编程
什么是类元编程类元编程是指动态地创建或定制类,也就是在运行时根据不同的条件生成符合要求的类,一般来说,类元编程的主要方式有类工厂函数,类装饰器和元类。创建类的另一种方式通常,我们都是使用 class 关键字来声明一个类,像这样:class A: name = 'A'但是,我们还有另外一种方式来生成我们的类,下述代码与上面作用相同:A = type('A', (object,), {'name': 'A'})一般情况下我们把 type 视作函数,调用 type(obj) 来获取 ob原创 2020-08-14 15:35:10 · 362 阅读 · 0 评论 -
PyTorch迁移学习-私人数据集上的蚂蚁蜜蜂分类
迁移学习的两个主要场景:微调Convnet:使用预训练的网络(这里使用pytorch官方预训练好的resnet18)来初始化自己的网络,而不是随机初始化,然后自己训练即可将Convnet看成固定的特征提取器:固定前面的层,重写最后的全连接层,只有这个新的层会被训练下面修改预训练好的resnet18网络在私人数据集上进行训练来分类蚂蚁和蜜蜂数据集下载这里使用的数据集包含ants和be...原创 2020-01-15 13:46:37 · 4954 阅读 · 8 评论 -
PyTorch入门-CIFAR10图像分类
利用CIFAR10数据集训练一个简单的图像分类器原创 2020-01-14 19:06:20 · 2284 阅读 · 8 评论 -
Python字符串类型格式化之format方法
python字符串格式化一般使用.format()方法,用法如下: <模板字符串>.format(<逗号分割的参数>)其中模板字符串中可以由一个或多个{}组成的槽,默认序号从0开始,也可以在槽内指定序号,也可以指定多个相同序号来重复输出同一参数,例如:&原创 2018-04-23 21:14:08 · 404 阅读 · 0 评论 -
Python装饰器
开始学习Python的时候,被装饰器这个概念绕了好久,看了许多人的总结才终于有所领悟原创 2018-07-25 11:32:11 · 241 阅读 · 0 评论 -
Python连接mysql数据库
pymysql原创 2019-04-10 01:19:53 · 258 阅读 · 0 评论 -
Python爬虫 使用selenium处理动态网页
对于静态网页,使用requests等库可以很方便的得到它的网页源码,然后提取出想要的信息。但是对于动态网页,情况就要复杂得多,这种页面的源码往往只有一个框架,其内容都是由JavaScript渲染出来的。这时候,我们就可以使用selenium来直接驱动浏览器进行爬取。selenium是一个自动化测试工具,利用它可以驱动浏览器进行一系列操作,并且可以得到当前呈现的网页的源码,对动态页面的爬取非常有效...原创 2019-04-11 22:09:15 · 625 阅读 · 0 评论 -
Python使用asyncio+aiohttp异步爬取猫眼电影专业版
官方文档通过实战爬取猫眼电影专业版来熟悉它们的使用:1. 分析分析网页源代码发现猫眼专业版是一个动态网页,其中的数据都是后台传送的,打开F12调试工具,再刷新网页选择XHR后发现第一条就是后台发来的电影数据,由此得到接口 https://box.maoyan.com/promovie/api/box/second.json?beginDate=日期2. 异步爬取创建20个任务来并发爬...原创 2019-04-23 21:49:23 · 811 阅读 · 0 评论 -
Android自定义Dialog
Android系统提供了几种默认的Dialog样式,用来固定显示某一类内容,但在实际开发中常常需要展示很多不属于这些固定样式的内容,这个时候我们可以通过自定义Dialog的方式来实现,具体步骤如下:设置Dialog的风格主题(styles.xml)<!--自定义dialog背景全透明无边框theme --> <style name="MyDialog" parent=...原创 2019-05-11 14:33:11 · 162 阅读 · 0 评论 -
Python使用time库处理时间问题
time库是python中处理时间的标准库,主要有以下三个功能:计算机时间的表达 获取系统时间并格式化输出系统及精确计时,用于程序性能分析time库主要包括三类函数:时间获取:&amp;nbsp;&amp;nbsp;time()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ctime()&amp;nbsp;&am原创 2018-04-24 23:38:01 · 1445 阅读 · 0 评论