- 博客(36)
- 收藏
- 关注
原创 wsl 中 docker-compose 搭建 kafka 集群出现的外部访问错误
在上面的配置中,KAFKA_ADVERTISED_LISTENERS 的 EXTERNAL 配置了 localhost:19092,这是因为我的客户端程序运行在 wsl 中,而 19092 端口已经映射到了容器的 9092 端口上所以可以正确访问,如果 kafka 集群和客户端程序运行在两个不同的服务器上,这里应该配置 kfaka 集群所在的主机 ip,只需要记住这一串地址的 ip+port 部分是原封不动的传给客户端的,想想客户端程序所在的机器能不能解析它吧。
2023-03-25 18:34:18 1119
原创 gRPC(3):拦截器
在 gRPC 调用过程中,我们可以拦截 RPC 的执行,在 RPC 服务执行前或执行后运行一些自定义逻辑,这在某些场景下很有用,例如身份验证、日志等,我们可以在 RPC 服务执行前检查调用方的身份信息,若未通过验证,则拒绝执行,也可以在执行前后记录下详细的请求响应信息到日志。这种拦截机制与 Gin 中的中间件技术类似,在 gRPC 中被称为 拦截器,它是 gRPC 核心扩展机制之一拦截器不止可以作用在服务端上,客户端同样可以拦截,在请求发出之前和收到响应之后执行一些自定义逻辑,根据拦截的 RPC 类型,可
2021-07-08 23:07:41 712
原创 gRPC(2):四种基本通信模式
在 gRPC(1):入门及简单使用(go) 中,我们实现了一个简单的 gRPC 应用程序,其中双方通信是简单的请求—响应模式,没发出一个请求都会得到一个响应,然而,借助 gRPC 可以实现不同的通信模式,这里介绍四种 gRPC 应用程序的基础通信模式:一元RPC、服务端流RPC、客户端流RPC、双向流RPC1、一元RPC一元 RPC 也被称为简单 RPC, 其实就是 gRPC(1):入门及简单使用(go) 中实现的请求—响应模式,每调用一次得到一个结果,这里再以一个简单的订单管理程序做说明,实现两个服务
2021-07-02 22:11:20 507
原创 gRPC(1):入门及简单使用(go)
1、RPC1.1 什么是RPCRPC(Remote Procedure Call),即远程过程调用,过程就是方法,简单来说,它就是一种能够像调用本地方法一样调用远程计算机进程中的方法的技术,在这种调用中,我们不需要了解任何网络通信的细节(当然,就使用来说)最终解决的问题:让分布式或者微服务系统中不同服务之间的调用像本地调用一样简单1.2 RPC和HTTP调用远程服务,HTTP 就可以完成的任务,为什么还需要 RPC 呢?需要注意,这两个并不是同一层次的概念,HTTP 是一种传输协议,RPC 应该是
2021-06-26 23:09:01 2745 2
原创 Git多人项目开发流程演练
1. 前言本文利用 GitHub 平台进行一个多人项目开发流程的演练,以加深课上所学内容。参考孟老师的文章:五⼤场景玩转 Git,只要这一篇就够了!2. 初始化项目2.1 新建远程项目一个多人项目通常是从远程创建新仓库开始,这里我们在 GitHub 新建一个仓库 git101 :新建仓库时我添加了 .gitignore 文件来进行一个初始化提交,不然默认一个空项目后面不好画图演示。.gitignore 文件顾名思义,在里面指定的文件或文件夹都不会被 Git 跟踪,通常用于指定一些只有本地会用到
2021-03-28 09:18:41 329
原创 信息安全期末复习
一、米特尼克的圣诞攻击1、攻击背景在Unix世界中,可以很容易地给予信任。 假设用户在机器A和机器B上都有一个帐户,为了使两者之间的麻烦最小,就可以在它们之间建立全双工的信任关系。 在A的主目录中,创建一个 .rhosts 文件:echo "hostB 用户名" > .rhosts,在B的主目录中做同样的操作,现在,用户可以使用任何 r* 命令来操作另一台服务器,这些命令将只验证地址。1994年圣诞节,Kevin Mitnick 攻击了下村勉的机器,主要用到了两种技术:IP源地址欺骗和TCP
2021-03-18 20:57:03 888 1
原创 使用OpenSSL自建一个HTTPS服务
1. 理论知识1.1 什么是https传统的 HTTP 协议以明文方式进行通信,不提供任何方式的数据加密,很容易被中间攻击者破解通信内容或者伪装成服务器与客户端通信,在安全性上存在很大问题。HTTPS 协议是由 HTTP 加上 TLS/SSL 协议构建的可进行加密传输、身份认证的网络协议,主要通过数字证书、加密算法、非对称密钥等技术完成互联网数据传输加密,实现互联网传输安全保护。关于非对称加密以及公钥私钥相关知识不在赘述,可自行了解。PS: TLS 是传输层加密协议,前身是由网景公司1995年发
2020-12-13 11:16:09 1764 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 179
原创 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 271
原创 Python协程之asyncio
asyncio 是 Python 中的异步IO库,用来编写并发协程,适用于IO阻塞且需要大量并发的场景,例如爬虫、文件读写。asyncio 在 Python3.4 被引入,经过几个版本的迭代,特性、语法糖均有了不同程度的改进,这也使得不同版本的 Python 在 asyncio 的用法上各不相同,显得有些杂乱,以前使用的时候也是本着能用就行的原则,在写法上走了一些弯路,现在对 Python3.7+ 和 Python3.6 中 asyncio 的用法做一个梳理,以便以后能更好的使用。协程与asyncio
2020-08-31 12:55:27 637
原创 Python类元编程
什么是类元编程类元编程是指动态地创建或定制类,也就是在运行时根据不同的条件生成符合要求的类,一般来说,类元编程的主要方式有类工厂函数,类装饰器和元类。创建类的另一种方式通常,我们都是使用 class 关键字来声明一个类,像这样:class A: name = 'A'但是,我们还有另外一种方式来生成我们的类,下述代码与上面作用相同:A = type('A', (object,), {'name': 'A'})一般情况下我们把 type 视作函数,调用 type(obj) 来获取 ob
2020-08-14 15:35:10 382
原创 搬家到博客园啦
准备搬到博客园了,主要是,自定义主题也太好看了吧((¬‿¬))博客园主页:Assassin对了,主题是套的大佬的样式,使用方法见:GitHub
2020-08-13 19:22:10 154
原创 全国省市县数据爬虫
项目需要全国省市县数据,网上找了一圈发现要么过时要么收费,于是花点时间自己写了个爬虫爬了些基础数据,基本上够用了,数据是从国家统计局爬来的,目前更新到2019年,代码如下:import requestsfrom requests.adapters import HTTPAdapterfrom bs4 import BeautifulSoupimport reimport timeh...
2020-03-02 21:00:44 1210 1
原创 PyTorch迁移学习-私人数据集上的蚂蚁蜜蜂分类
迁移学习的两个主要场景:微调Convnet:使用预训练的网络(这里使用pytorch官方预训练好的resnet18)来初始化自己的网络,而不是随机初始化,然后自己训练即可将Convnet看成固定的特征提取器:固定前面的层,重写最后的全连接层,只有这个新的层会被训练下面修改预训练好的resnet18网络在私人数据集上进行训练来分类蚂蚁和蜜蜂数据集下载这里使用的数据集包含ants和be...
2020-01-15 13:46:37 5109 8
原创 我如何用AndroidStudio导入一个eclipse开发的上古世纪app
Could not determine the class-path for class org.jetbrains.plugins.gradle.model.ProjectImportAction.The SourceSet ‘instrumentTest’ is not recognized by the Android Gradle Plugin. Perhaps you miss...
2019-10-28 01:46:40 361
原创 基于JSP+Servlet的学生信息管理系统
JavaWeb期末项目,一个基于JSP和Servlet的学生信息管理系统实现,前端用了bootstrap和一些自定义的css样式,数据库用了mysql。
2019-05-14 00:13:12 1678 14
原创 Android自定义Dialog
Android系统提供了几种默认的Dialog样式,用来固定显示某一类内容,但在实际开发中常常需要展示很多不属于这些固定样式的内容,这个时候我们可以通过自定义Dialog的方式来实现,具体步骤如下:设置Dialog的风格主题(styles.xml)<!--自定义dialog背景全透明无边框theme --> <style name="MyDialog" parent=...
2019-05-11 14:33:11 182
原创 return iter(x.items()) AttributeError: 'int' object has no attribute 'items' (python向redis数据库插入有序集合)
def add(proxy, score=10): db.zscore(REDIS_KEY, proxy): return self.db.zadd(REDIS_KEY, score, proxy)def add(proxy, score=10): db.zscore(REDIS_KEY, proxy): return self.db....
2019-04-27 19:39:14 1336 3
原创 java.lang.IllegalArgumentException: Comparison method violates its general contract!
java自定义排序
2019-04-27 01:59:37 235
原创 Python使用asyncio+aiohttp异步爬取猫眼电影专业版
官方文档通过实战爬取猫眼电影专业版来熟悉它们的使用:1. 分析分析网页源代码发现猫眼专业版是一个动态网页,其中的数据都是后台传送的,打开F12调试工具,再刷新网页选择XHR后发现第一条就是后台发来的电影数据,由此得到接口 https://box.maoyan.com/promovie/api/box/second.json?beginDate=日期2. 异步爬取创建20个任务来并发爬...
2019-04-23 21:49:23 838
原创 linux字符终端(控制台)的字体更改
查看已安装的终端字体ls /usr/share/consolefonts/设置终端字体sudo dpkg-reconfigure console-setup或者sudo vim /etc/default/console-setupACTIVE_CONSOLES="/dev/tty[1-6]"CHARMAP="UTF-8"CODESET="guess"FONTFACE="Ter...
2019-04-15 22:17:06 1451
原创 the package code needs to be reinstalled but i can't find an archive for it(deb包安装过程意外终止导致的错误)
通过deb包安装vscode的时候卡死了,然后强制关机,重启后apt命令出错,更新管理器错误,软件包管理器打不开…解决办法:root权限打开 gedit /var/lib/dpkg/status ,找到出错的软件包,删除关于它的所有信息,然后 sudo apt install -f...
2019-04-15 21:58:08 2161
原创 Python爬虫 使用selenium处理动态网页
对于静态网页,使用requests等库可以很方便的得到它的网页源码,然后提取出想要的信息。但是对于动态网页,情况就要复杂得多,这种页面的源码往往只有一个框架,其内容都是由JavaScript渲染出来的。这时候,我们就可以使用selenium来直接驱动浏览器进行爬取。selenium是一个自动化测试工具,利用它可以驱动浏览器进行一系列操作,并且可以得到当前呈现的网页的源码,对动态页面的爬取非常有效...
2019-04-11 22:09:15 650
原创 Android开发日记(五) 连接服务器
今天服务器端的所有接口终于写好了, 用了半个小时把所有访问百度的链接都换成自己的服务器的接口地址, 主要问题有json数据的解析和处理url中含中文的情况json数据解析首先是教室数据, 这部分数据是一个json数组, 其中每一项都是一条教室数据, 而且设置ListView的时候已经写好了Room类, 最适合用google提供的GSON库来解析了首先在app的build.gradle中导入...
2019-04-07 20:58:57 871
原创 Python Tkinter+爬虫实现ip定位程序
使用tkinter创建查询GUI窗口, 接收ip输入并发送到ip查询网www.ipip.net, 利用正则表达式从返回信息中提取出所需信息并显示在GUI窗口中环境: python3.6import tkinterimport requestsimport re# 查询函数, 接收用户输入的ip地址def find_position(ip): # 获取输入信息 h...
2018-07-31 18:39:58 1057 1
原创 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 1463
原创 Python字符串类型格式化之format方法
python字符串格式化一般使用.format()方法,用法如下: &amp;amp;amp;lt;模板字符串&amp;amp;amp;gt;.format(&amp;amp;amp;lt;逗号分割的参数&amp;amp;amp;gt;)其中模板字符串中可以由一个或多个{}组成的槽,默认序号从0开始,也可以在槽内指定序号,也可以指定多个相同序号来重复输出同一参数,例如:&amp;amp;
2018-04-23 21:14:08 432
原创 pip更换国内源(pip安装第三方库超时失败的解决办法)
pip换源使用pip安装一些python第三方库的时候,经常遇到速度低,超时导致安装失败,这是因为pip默认使用国外的源来下载,将默认源改为国内的镜像网站即可解决.pip国内的一些镜像 阿里云 http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/ ...
2018-04-18 15:19:35 2898
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人