proxy-server

分布式 ID 解决方案之美团 Leaf

时光毁灭记忆、已成空白 提交于 2020-08-06 20:51:13
分布式 ID 在庞大复杂的分布式系统中,通常需要对海量数据进行唯一标识,随着数据日渐增长,对数据分库分表以后需要有一个唯一 ID 来标识一条数据,而数据库的自增 ID 显然不能满足需求,此时就需要有一个能够生成全局唯一 ID 的系统,需要满足以下条件: 全局唯一性:最基本的要求就是不能出现重复的 ID。 递增:保证下一个 ID 一定大于上一个 ID。 信息安全:如果 ID 是连续的,用户就可以按照顺序进行恶意爬取数据,所以 ID 生成无规则。 上述的 2 和 3 点需求是互斥的,无法使用同一个方案满足。 解决方案 数据库生成 以 MySQL 为例,利用给字段设置 auto_increment_increment 和 auto_increment_offset 来实现 ID 自增。每次业务可以使用下列 SQL 进行读写得到 ID: begin; REPLACE INTO Tickets64 (stub) VALUES ('a'); SELECT LAST_INSERT_ID(); commit; 优点:使用非常简单,ID 单调递增。 缺点:非常依赖数据库,当数据库异常时则整个系统不可用。 UUID 优点:本地生成,没有网络消耗,性能高。 缺点:过长不易于存储;造成信息不安全,基于 MAC 地址生成可能会造成 MAC 地址泄露。 Snowflake Snowflake (雪花算法)是由

实现一个简单的Http代理服务器

冷暖自知 提交于 2020-08-06 03:03:58
昨天介绍了下 微软的反向代理库YARP ,今天准备实现一个简单的Http正向代理服务器玩下。首先还是介绍下背景知识: 普通代理(Http) 在Http的时代,大部分是走的 RFC 7230 中描述的普通代理。这种代理扮演的是「中间人」角色,对于连接到它的客户端来说,它是服务端;对于要连接的服务端来说,它是客户端。它就负责在两端之间来回传送 HTTP 报文。它的流程是: 客户端浏览器将请求原封不动的发送给代理服务器 代理服务器从HttpHeader中获取目标的主机地址,将请求发送给目标主机 目标主机将响应回传给代理服务器 代理服务器将响应回传给客户端浏览器。 对于客户端浏览器来说,代理服务器就是目标web服务器。 对于web服务器来说来说,它会把代理当做客户端,完全察觉不到真正客户端的存在(代理服务器可以通过X-Forwarded-IP这样的自定义头部告诉服务端真正的客户端 IP)。 这种代理服务器实现是比较简单的,基本上是原封不动的透传,主要是第2步,需要从header中识别目标主机地址。 隧道代理(Https) 到了Https时代,这种方式就有问题了,代理服务器是一个web服务器,它是影响了客户端和服务器的TLS加密连接的。此时主要使用RFC中定义的通过 Web 代理服务器用隧道方式传输基于 TCP 的协议的 隧道代理 方式,它的主要流程为: 浏览器首先发送Http

ubuntu 使用 Apache Bench 进行并发测试

风格不统一 提交于 2020-07-26 23:24:28
安装 apt install apache2-utils -y 简单使用 -n 说明请求次数,-c 说明并发量 ,注意最后一定要有斜杠 ab -n 1000 -c 50 https://www.ahaoboy.cn:80/ 详细参数说明 参数说明: 格式:ab [options] [http://]hostname[:port]/path ​ -n requests Number of requests to perform //本次测试发起的总请求数 -c concurrency Number of multiple requests to make   //一次产生的请求数(或并发数) -t timelimit Seconds to max. wait for responses    //测试所进行的最大秒数,默认没有时间限制。 -r Don't exit on socket receive errors. // 抛出异常继续执行测试任务 -p postfile File containing data to POST  //包含了需要POST的数据的文件,文件格式如“p1=1&p2=2”.使用方法是 -p 111.txt ​ -T content-type Content-type header for POSTing //POST数据所使用的Content-type头信息

NLTK: set proxy server

折月煮酒 提交于 2020-06-24 05:10:19
问题 I'm trying to learn NLTK - Natural Language Toolkit written in Python and I want install a sample data set to run some examples. My web connection uses a proxy server, and I'm trying to specify the proxy address as follows: >>> nltk.set_proxy('http://proxy.example.com:3128' ('USERNAME', 'PASSWORD')) >>> nltk.download() But I get an error: Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'str' object is not callable I decided to set up a ProxyBasicAuthHandler

How to import a GitHub project into Eclipse

时间秒杀一切 提交于 2020-05-07 22:02:37
Assuming you have created a project in GitHub, these are the steps to import it into Eclipse. First, you have to add the git repository to Eclipse. To do so, first make the git repository view visible in Eclipse from the menu 'Window > Show views > Other > Git > Git Repositories' . Eclipse will show the view somewhere. Click on 'Clone a Git repository' to begin the process. Make sure to select GitHub as repository source. To add your project, enter the name of the project (select the language, if you set one) and press search. Your project repository will show up. Select it and press 'Next' .

Nginx的正向代理与反向代理详解

只愿长相守 提交于 2020-05-06 01:14:56
正向代理和反向代理的概念 代理服务(Proxy),通常也称为正向代理服务。 如果把局域网外Internet想象成一个巨大的资源库,那么资源就分布到了Internet的各个点上,局域网内的客户端要访问这个库里的资源就必须统一通过代理服务器才能对各个站点进行访问。 局域网内的机器借助代理服务访问局域网外的网站, 这主要是为了增加局域网内部网络的安全性,使得网外的威胁因素不容易影响到网内,这里代理服务器起到了一部分防火墙的功能。同时,利用代理服务器也可以对局域网外的访问进行必要的监控和管理。正向代理服务器不支持外部对内部网络的访问请求。 与正向代理服务相反,如果局域网向Internet提供资源,让Internet上的其他用户可以访问局域网内的资源,也可以设置一个代理服务器,它提供的服务就叫做反向代理(Reverse Proxy)服务。可以看到,反向代理服务与代理服务在功能逻辑上刚好是相反的。 正向代理服务器与反向代理服务器的概念很简单,归纳起来就是,正向代理服务器用来让局域网客户机接入外网以访问外网资源,反向代理服务器用来让外网的客户端接入局域网中的站点以访问站点中的资源。理解这两个概念的关键是要明白我们当前的角色和目的是什么,在正向代理服务器中,我们的角色是客户端,目的是要访问外网的资源;在反向代理服务器中,我们的角色是站点,目的是把站点的资源发布出去让其他客户端能够访问。

【HTTP】一、HTTP协议简介及其工作流程

微笑、不失礼 提交于 2020-05-05 21:34:45
  协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。 (一)HTTP协议简介   HTTP(超文本传输协议)是一个 应用层协议 ,它是互联网的一个基础协议,它规定了 浏览器如何向万维网服务器请求万维网文档、服务器如何把文档传给浏览器 。HTTP是面向事务的应用层协议,它是万维网可以进行可靠文件交换的重要基础。对于技术岗位的程序员来说理解掌握HTTP协议是必须的。 1、万维网概述   万维网实际上我们并不陌生,实际它并不是一个网络,而是一个大规模的、联机式的 信息储藏所 ,是一个分布式的超媒体系统。一个超文本由多个信息源 链接 而成。利用一个链接可使用户找到另一个文档。这些文档可以位于世界上任何一个接在因特网上的超文本系统中。超文本是万维网的基础。<div align=center> </div>   万维网以 客户-服务器 方式工作。客户程序就是用户计算机上的各种浏览器,万维网文档所驻留的机器就成为服务器,客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档。   万维网必须解决的几个问题: 为了标志分布在整个因特网上的万维网文档,使用了 统一资源定位符URL 。每一个文档在整个因特网的范围内具有唯一的标识符 URL。

tcping 0.39

六月ゝ 毕业季﹏ 提交于 2020-05-04 18:25:43
下载 https://iblackly.lanzous.com/ic7h9kf ╭━━━━╮ ┃╭╮╭╮┃ ╰╯┃┃╰╋━━┳━━┳┳━╮╭━━╮ ╱╱┃┃╱┃╭━┫╭╮┣┫╭╮┫╭╮┃ ╱╱┃┃╱┃╰━┫╰╯┃┃┃┃┃╰╯┃ ╱╱╰╯╱╰━━┫╭━┻┻╯╰┻━╮┃ ╱╱╱╱╱╱╱╱┃┃╱╱╱╱╱╭━╯┃ ╱╱╱╱╱╱╱╱╰╯╱╱╱╱╱╰━━╯ 名称: Tcping 作者: Eli Fulkerson 更新: http://www.elifulkerson.com/projects 汉化: iblackly http://iblackly.com -------------------------------------------------------------- 用法: tcping [-选项] 地址 [端口] 用法(完整): tcping [-t] [-d] [-i interval] [-n times] [-w ms] [-b n] [-r times] [-s] [-v] [-j] [-js size] [-4] [-6] [-c] [-g count] [-S source_address] [--file] [--tee filename] [-h] [-u] [--post] [--head] [--proxy-port port] [--proxy

nginx设置成开机自动启动服务

浪子不回头ぞ 提交于 2020-04-27 21:11:02
1、nginx的安装目录 /usr/local/nginx 启动nginx cd /usr/local/nginx/sbin ./nginx 更改配置重启nginx cd /usr/local/nginx/sbin ./nginx -s reload 2、nginx设置成开机自动启动服务 1)在/etc/init.d下创建文件nginx,文件的内容拷贝官网内容,主要修改下面两个参数的值 nginx="/usr/sbin/nginx" #修改成nginx执行程序的路径。 NGINX_CONF_FILE="/etc/nginx/nginx.conf" #修改成nginx.conf文件的路径。 目前我的环境修改成如下内容 nginx=”/usr/local/nginx/sbin/nginx” NGINX_CONF_FILE=”/usr/local/nginx/conf/nginx.conf” 样例如下 #!/bin/sh # # nginx - this script starts and stops the nginx daemon # # chkconfig: - 85 15 # description: NGINX is an HTTP(S) server, HTTP(S) reverse \ # proxy and IMAP/POP3 proxy server #

《C# 爬虫 破境之道》:第一境 爬虫原理 — 第二节:WebRequest

喜欢而已 提交于 2020-04-27 06:16:31
本节主要来介绍一下,在C#中制造爬虫,最为常见、常用、实用的基础类 ------ WebRequest、WebResponse。 先来看一个示例 [1.2.1]: 1 using System; 2 using System.IO; 3 using System.Net; 4 using System.Text; 5 6 class Program 7 { 8 static void Main( string [] args) 9 { 10 var request = WebRequest.Create( @" https://www.cnblogs.com/mikecheers/p/12090487.html " ); 11 request.Method = " GET " ; 12 using ( var response = request.GetResponse()) 13 { 14 using ( var stream = response.GetResponseStream()) 15 { 16 using ( var reader = new StreamReader(stream, new UTF8Encoding( false ))) 17 { 18 var content = reader.ReadToEnd(); 19 Console.WriteLine