Year: 2021
-

linux怎么pingipv6地址
首先保证自己已经在ipv6环境里,在Linux下,通过以下命令ping ipv6地址,注意,不是ping,是ping6 了 # ping6 ipv6.google.com PING ipv6.google.com(lax28s10-in-x0e.1e100.net (2607:f8b0:4007:80d::200e)) 56 data bytes 64 bytes from lax28s10-in-x0e.1e100.net (2607:f8b0:4007:80d::200e): icmp_seq=1 ttl=119 time=0.373 ms 64 bytes from lax28s10-in-x0e.1e100.net (2607:f8b0:4007:80d::200e): icmp_seq=2 ttl=119 time=0.404 ms 64 bytes from lax28s10-in-x0e.1e100.net (2607:f8b0:4007:80d::200e): icmp_seq=3 ttl=119 time=0.403 ms 那么ping不能用了么?当然不是,以下是ping命令,带一个参数-6 就可以了。 # ping -6 ipv6.google.com PING ipv6.google.com(lax28s10-in-x0e.1e100.net (2607:f8b0:4007:80d::200e)) 56 data bytes 64 bytes from lax28s10-in-x0e.1e100.net…
-

Linux下如何mount你的usb硬盘
首先需要在Linux系统里检测到USB硬盘 将USB设备插入USB端口后,Linux系统将一个新的块设备添加到/dev/目录中。这个阶段还无法使用该设备,因为在获取或存储任何数据之前需要先清除USB文件系统。 查找块设备文件的名称,可以运行fdisk -l命令。 # fdisk -l OR $ sudo fdisk -l 执行上述命令后,输出 Disk /dev/sdc: 7.4 GiB, 7948206080 bytes, 15523840 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x00000000 Device Boot Start…
-

-

国内支持ipv6的网站
国内支持ipv6的网站大部分是教育网内高校的系统,比如清华大学的镜像网址 https://mirrors.tuna.tsinghua.edu.cn 。进入后右侧可以看到有ipv6的网址:https://mirrors6.tuna.tsinghua.edu.cn 因为是IPv6的,所以IPv4下无法访问。如果想在ipv4环境下测试ipv6网址,可通过 IPv6代理测试网址 https://ipv6screen.moneyslow.com 进行测试,返回ipv6网址内容。
-

ipv6测试网站有哪些?
目前中国大范围上ipv6,非技术人员几乎无感,大家也没必要关心。 专业人士如需测试ipv6,如果测试纯ipv6的网址内容,但是要在ipv4环境下测试,可以通过 https://ipv6screen.moneyslow.com 进行测试。 其返回ipv6 only的网址内容。
-
如何在Windows 10上安装WSL 2
WSL 2是Microsoft早在2017年推出的WSL原始版本的重大升级。WSL2更快,更通用,并且使用了真正的Linux内核。 在Windows 10 安装WSL 2 的前提: 1、版本:Windows 10 May 2020 (2004), Windows 10 May 2019 (1903), or Windows 10 November 2019 (1909) or later 若要更新到 WSL 2,需要运行 Windows 10。 对于 x64 系统:版本 1903 或更高版本,采用 内部版本 18362 或更高版本。 对于 ARM64 系统:版本 2004 或更高版本,采用 内部版本 19041 或更高版本。 低于 18362 的版本不支持 WSL 2。 使用 Windows Update 助手更新…
-

Ubuntu配置国内清华大学源
打开清华源官网 https://mirror.tuna.tsinghua.edu.cn/help/ubuntu/ 选择自己对应的系统版本,如:20.04 LTS 得到下面的结果: # 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释 deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse…
-
Centos8中启用EPEL库
安装配置包 EPEL8在RHEL 8 / CentOS 8上启用存储库非常简单:我们需要做的就是下载并安装包含存储库文件的配置包。 我们可以使用dnf软件包管理器直接执行操作: $ sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm 我们只是使用dnf与install子命令,并提供https的URL,在运行命令后,显示并提示我们确认要安装该软件包: =================================================== Package Arch Version Repository Size =================================================== Installing: epel-release noarch 8-5.el8 @commandline 21 k Transaction Summary =================================================== Install 1 Package Total size: 21 k Installed size: 30 k Is this ok [y/N]: y 如果我们通过键入“ y”并按Enter确认,则将安装该软件包。 要查看这些文件的安装位置,我们可以运行以下命令: sudo rpm -ql epel-release 在上面的命令中,该-q选项是–query的缩写,-l而是–list的缩写,用于列出软件包中包含的文件。上面的命令产生以下输出: /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8…
-

安装Ubuntu 20.04之后必须要做的10件事情
在安装完最新的ubuntu20.04后,以下10件事情仅为个人建议,做为参考。 1、启用黑暗模式 Ubuntu 20.04具有深色模式选项 打开设置>外观 Open Settings > Appearance 选择“深色窗口” 设置 Select ‘Dark Windows’ setting 更改立即生效,立即使大多数应用程序的背景和工具栏变暗。请注意,Ubuntu中的暗模式不会更改GNOME Shell UI的颜色,例如通知,日历和系统菜单。 当您厌倦了黑暗的外观时,可以在“外观设置”面板中切换回默认的“混合”模式 2.安装GNOME Tweaks GNOME Tweaks是瑞士军刀的选择,包括… 更改GTK和图标主题 将窗口按钮向左移动 更改桌面字体和字体大小 自动居中新窗口 在时钟标签中显示工作日 在动态和静态工作空间之间切换 3、强大的文件预览工具 GNOME Sushi是用于GNOME Shell桌面的方便的空格键预览工具。 曾经尝试过macOS的任何人都会立即知道“空格键预览”的含义,这是Apple操作系统首次使用并广受欢迎的功能。 首先在Nautilus文件管理器中选择(单击)文件,然后单击空格键。这将打开文件的即时预览。预览的构成将根据文件本身而有所不同,但是支持大多数常用的文件格式。您可以使用Sushi即时预览图像,播放媒体,滚动浏览PDF和LibreOffice文档,获取文件夹大小信息等,而所有这些都无需打开单个应用程序。 当您找到要完全打开的文件时,“ Sushi”窗口(在大多数情况下)为您提供了打开文件的选项。 Sushi是免费的开源软件。您可以从Ubuntu软件应用程序将其安装在Ubuntu上。只需按名称搜索“ sushi”。 4、启用最小化点击 如果您希望应用程序在单击时最小化到其Ubuntu停靠图标,则可以手动启用该行为。我的意思是手动,因为尽管它是最流行的Ubuntu调整之一,但仍然没有简便的GUI方法可以做到这一点。 打开一个新的终端窗口,然后键入以下命令以实现在Ubuntu中启用最小化单击: gsettings set org.gnome.shell.extensions.dash-to-dock click-action ‘minimize’ 5、显示电池百分比 如果您不使用笔记本电脑(或者您不想在不打开状态菜单的情况下一目了然地看到电池电量百分比),请跳过此步骤。 Ubuntu的电池指示器可让您快速监视电池寿命,而无需打开状态菜单。但是它有点小,并且有点模糊。 打开GNOME Tweaks 选择“顶部栏” ‘Top Bar’ 将“电池百分比”…
-

zsh: bad CPU type in executable: nmap报错了,Mac下如何卸载nmap
错误如下: zsh: bad CPU type in executable: nmap 经查 在Mac10.15中已经不允许32位的软件运行了,弹出如上错误。 在官网nmap.org上重新下载安装。 $ which nmap /usr/local/bin/nmap $ nmap –version zsh: bad CPU type in executable: nmap 因此,我们需要把nmap删除掉,方法如下: cd /usr/local sudo rm -f bin/nmap bin/nmap-update bin/xnmap sudo rm -rf share/nmap
-
Git的7个神仙技巧,让你功力大增
1、Git 中的自动更正 我们有时都会打错字,但如果启用了 Git 的自动更正功能,就可以让 Git 自动修正打错的子命令。假设你想用 git status 检查状态,却不小心输入了 git stats。正常情况下,Git 会告诉你 stats 不是一条有效的命令:$ git statsgit: ‘stats’ is not a git command. See ‘git –help’.The most similar command isstatus为了避免类似的情况发生,请在 Git 配置中启用 Git 自动更正功能:$ git config –global help.autocorrect 1如果你希望这个命令只适用于你当前的版本库,请省略 –global 选项。这条命令启用了自动更正功能。更深入的教程可以在 Git Docs 中找到,但尝试一下和上面一样的错误命令,就能很好地了解这个配置的作用:$ git statsgit: ‘stats’ is not a git command. See ‘git –help’.On…
-
linux中习惯用ip命令代替ifconfig
ip命令工作在OSI 网络栈的两个层上:第二层(数据链路层)和第三层(网络 或 IP)层。它做了之前net-tools包的所有工作。 安装 ip ip命令包含在iproute2util包中,一般都会有,自己想办法安装。 ifconfig 和 ip 使用对比: 查看网口和 IP 地址 如果你想查看主机的 IP 地址或网络接口信息,ifconfig(不带任何参数)命令提供了一个很好的总结: $ ifconfig $ ip address show,或者简写为ip a: $ ip a 添加 IP 地址 使用 ifconfig命令添加 IP 地址命令为: $ ifconfig eth0 add 192.9.203.21 ip类似: $ ip address add 192.9.203.21 dev eth0 ip中的子命令可以缩短,所以下面这个命令同样有效: $ ip addr add 192.9.203.21 dev eth0…
-

Kafka消息系统教程(一文读懂kafka)
消息系统的作用,应该大部分小伙伴都清楚,用机油装箱举个例子。 所以消息系统就是如上图我们所说的仓库,能在中间过程作为缓存,并且实现解耦合的作用。 引入一个场景,我们知道中国移动,中国联通,中国电信的日志处理,是交给外包去做大数据分析的,假设现在它们的日志都交给了你做的系统去做用户画像分析。 按照刚刚前面提到的消息系统的作用,我们知道了消息系统其实就是一个模拟缓存,且仅仅是起到了缓存的作用而并不是真正的缓存,数据仍然是存储在磁盘上面而不是内存。 Topic主题 Kafka学习了数据库里面的设计,在里面设计了topic(主题),这个东西类似于关系型数据库的表。 此时我需要获取中国移动的数据,那就直接监听TopicA即可。 Partition分区 kafka还有一个概念叫Partition(分区),分区具体在服务器上面表现起初就是一个目录,一个主题下面有多个分区,这些分区会存储到不同的服务器上面,或者说,其实就是在不同的主机上建了不同的目录。这些分区主要的信息就存在了.log文件里面。跟数据库里面的分区差不多,是为了提高性能。 至于为什么提高了性能,很简单,多个分区多个线程,多个线程并行处理肯定会比单线程好得多。 Topic和partition像是HBASE里的table和region的概念,table只是一个逻辑上的概念,真正存储数据的是region,这些region会分布式地存储在各个服务器上面,对应于Kafka,也是一样,Topic也是逻辑概念,而partition就是分布式存储单元。这个设计是保证了海量数据处理的基础。我们可以对比一下,如果HDFS没有block的设计,一个100T的文件也只能单独放在一个服务器上面,那就直接占满整个服务器了,引入block后,大文件可以分散存储在不同的服务器上。 注意: 分区会有单点故障问题,所以我们会为每个分区设置副本数; 分区的编号是从0开始的。 Producer – 生产者 往消息系统里面发送数据的就是生产者。 Consumer – 消费者 从Kafka里读取数据的就是消费者。 Message – 消息 Kafka里面的我们处理的数据叫做消息。 Kafka的集群架构 创建一个TopicA的主题,3个分区分别存储在不同的服务器,也就是broker下面。Topic是一个逻辑上的概念,并不能直接在图中把Topic的相关单元画出。 需要注意:Kafka在0.8版本以前是没有副本机制的,所以在面对服务器宕机的突发情况时会丢失数据,所以尽量避免使用这个版本之前的Kafka。 Replica – 副本 Kafka中的partition为了保证数据安全,所以每个partition可以设置多个副本。 此时我们对分区0,1,2分别设置3个副本(其实设置两个副本是比较合适的)。 而且其实每个副本都是有角色之分的,它们会选取一个副本作为leader,而其余的作为follower,我们的生产者在发送数据的时候,是直接发送到leader partition里面,然后follower partition会去leader那里自行同步数据,消费者消费数据的时候,也是从leader那去消费数据的。 Consumer Group – 消费者组 我们在消费数据时会在代码里面指定一个group.id,这个id代表的是消费组的名字,而且这个group.id就算不设置,系统也会默认设置。 conf.setProperty(“group.id”,”tellYourDream”) 我们所熟知的一些消息系统一般来说会这样设计,就是只要有一个消费者去消费了消息系统里面的数据,那么其余所有的消费者都不能再去消费这个数据。可是Kafka并不是这样,比如现在consumerA去消费了一个topicA里面的数据。 consumerA: group.id = a consumerB: group.id = a consumerC: group.id = b consumerD: group.id = b 再让consumerB也去消费TopicA的数据,它是消费不到了,但是我们在consumerC中重新指定一个另外的group.id,consumerC是可以消费到topicA的数据的。而consumerD也是消费不到的,所以在Kafka中,不同组可有唯一的一个消费者去消费同一主题的数据。 所以消费者组就是让多个消费者并行消费信息而存在的,而且它们不会消费到同一个消息,如下,consumerA,B,C是不会互相干扰的。 consumer group:a…
-
Docker设置配置的三种方式
一、利用Linux的http_proxy等环境变量的dockerd代理 在执行docker pull时,是由守护进程dockerd来执行。 因此,代理需要配在dockerd的环境中。 而这个环境,则是受systemd所管控,因此实际是systemd的配置。 sudo mkdir -p /etc/systemd/system/docker.service.d sudo touch /etc/systemd/system/docker.service.d/proxy.conf 在这个proxy.conf文件中,添加以下内容: [Service] Environment=”HTTP_PROXY=http://proxy.money.com:8080/” Environment=”HTTPS_PROXY=http://proxy.money.com:8080/” Environment=”NO_PROXY=localhost,127.0.0.1,.money.com” 二、Container代理:在容器运行阶段,如果需要代理上网,则需要配置~/.docker/config.json。 以下配置,只在Docker 17.07及以上版本生效。 { “proxies”: { “default”: { “httpProxy”: “http://proxy.money.com:8080”, “httpsProxy”: “http://proxy.money.com:8080”, “noProxy”: “localhost,127.0.0.1,.money.com” } } } 这个是用户级的配置,除了proxies,docker login等相关信息也会在其中。 而且还可以配置信息展示的格式、插件参数等。此外,容器的网络代理,也可以直接在其运行时通过-e注入http_proxy等环境变量。 这两种方法分别适合不同场景。 config.json非常方便,默认在所有配置修改后启动的容器生效,适合个人开发环境。 在CI/CD的自动构建环境、或者实际上线运行的环境中,这种方法就不太合适,用-e注入这种显式配置会更好,减轻对构建、部署环境的依赖。 当然,在这些环境中,最好用良好的设计避免配置代理上网。 三、docker build代理:虽然docker build的本质,也是启动一个容器,但是环境会略有不同,用户级配置无效。 在构建时,需要注入http_proxy等参数。 docker build . \ –build-arg “HTTP_PROXY=http://proxy.money.com:8080/” \ –build-arg “HTTPS_PROXY=http://proxy.money.com:8080/” \…
-
Ubuntu18.04下安装docker compose 最新版
从github安装最新版docker compose,命令如下: sudo apt-get update sudo apt-get upgrade sudo apt install curl sudo curl -L “https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)” -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose 直接安装ubuntu的官方版本的方法: apt-get install docker-compose. 建议从 Docker的官方 GitHub 仓库安装最新版本。 验证版本:docker–compose –version 删除docker compose就比较简单了: sudo rm /usr/local/bin/docker-compose apt-get remove docker-compose apt-get autoremove 运行例子: vi docker-compose.yml 内容如下: version: ‘2’ services: hello-world: image: hello-world:latest 先敲一个命令查看镜像列表:…
-

Multilogin浏览器是什么,入门必知的几个问题,为什么要使用它?
1、一台电脑模拟多个真实的设备:Multilogin可以帮助您运行多个拥有唯一性设置的浏览器配置文件,在网站看来,这些浏览器配置文件就是多个不同的真实设备。软件有价值之处在于,您不再需要投入设置虚拟机的时间和物质成本,只需在您的电脑设备中运行软件,即可模拟多个虚拟浏览器。2、需要同时在不同的社交媒体和热门网站上运行多个帐户。如果没有Multilogin,对方会认为你一台电脑登录多个账号,如果有了Multilogin,你可以模拟多个地方的多个账号。3、如何免费测试?2019年11月5日: 测试版本已经关闭了4、不推荐在若干设备上使用同一个浏览器配置文件。5、可以在虚拟机中使用Multilogin。6、哪里找代理ip?其实Multilogin是有推荐的(住宅代理:LUMINATI,GEOSURF,OXYLABS;手机ip:AIRSOCKS,LUMINATI;数据中心ip:LUMINATI,SLL PRIVATE ),在这里找https://multilogin.com/zh-hans/proxy/7、不想让网站发现你使用了Multilogin,有几点注意:a) 在设置相同的虚拟机(VM)或虚拟专用服务器(VPS)上运行Multilogin。b) 在有着相同硬件、驱动程序、操作系统的同一型号的机器中运行Multiloginc) 在同样的Mac电脑上运行Multilogin8、可以模仿手机用户,文档:https://docs.multilogin.com/l/zh/article/plho1ameey-9、网站可能看到你的Mac地址,因为Google可以通过Chrome内一些隐藏的内置操作来获取MAC地址10、购买方式有哪些?PayPal、Bitcoin、信用卡11、PayPal错误: 10417 ,被Paypal拒绝了,需要看看https://www.paypal.com/uk/smarthelp/article/why-did-i-get-api-error-code-10417-ts137512、一次可以运行多少个浏览器配置文件?100 扩展阅读:
-

-

Nginx代理网站替换内容的字符编码和节省流量问题解决办法
1、代理一个网站: location / { proxy_pass http://www.moneyslow.com/; } 2 替换一些内容 location / { # 必须设置,不然www.moneyslow.com返回的是gzip压缩过的内容 proxy_set_header Accept-Encoding “”; proxy_pass http://www.moneyslow.com/; # 使用sub模块 sub_filter_once off; # 可用替换多次 sub_filter “海阔中文网” “慢慢赚钱新闻”; # 把 海阔中文网 替换成 慢慢赚钱新闻 sub_filter “NBA” “NBC”; # 把 NBA 替换成 NBC } 注意事项:如果只有“NBA”替换成“NBC”成功了,“海阔中文网”替换成“慢慢赚钱新闻”失败了,这个问题要处理字符编码问题,打开Chrome浏览器的调试窗口,服务器返回的内容经过了gzip压缩,内容编码为GB2312,gzip压缩的问题我们用 proxy_set_header Accept-Encoding “”; 指令解决了。对于编码问题,由于配置文件的编码为UTF-8,网页内容编码为GB2312,所以对于中文,编码不一样,无法用“慢慢赚钱新闻”替换“海阔中文网”。把配置文件夹保存为GBK(兼容GB2312)试下。 3 通过两次proxy_pass节省流量 在上一步中,我们需要用 proxy_set_header Accept-Encoding “”;配置指令,以便让www.moneyslow.com返回解压缩后的内容,以方便内容替换。这种做法会增加网络流量,更好的方法:用两次proxy_pass,第一次是向远程服务器,获取到的是gzip压缩的内容,第二次是内部proxy_pass,获取到解压后的内容。 location /…
-

为啥要用RPC代替HTTP
先复习以下基础网络知识: 一、七层网络结构模型回顾: 我们先来了解一下OSI的七层网络结构模型(虽然实际应用中基本上都是五层),它可以分为以下几层:(从上到下) 第一层:应用层。定义了用于在网络中进行通信和传输数据的接口; 第二层:表示层。定义不同的系统中数据的传输格式,编码和解码规范等; 第三层:会话层。管理用户的会话,控制用户间逻辑连接的建立和中断; 第四层:传输层。管理着网络中的端到端的数据传输; 第五层:网络层。定义网络设备间如何传输数据; 第六层:链路层。将上面的网络层的数据包封装成数据帧,便于物理层传输; 第七层:物理层。这一层主要就是传输这些二进制数据。 实际应用过程中,五层协议结构里面是没有表示层和会话层的。应该说它们和应用层合并了。我们应该将重点放在应用层和传输层这两个层面。因为HTTP是应用层协议,而TCP是传输层协议。好,知道了网络的分层模型以后我们可以更好地理解为什么RPC服务相比HTTP服务要Nice一些! 二、HTTP 服务特点: 其实在很久以前,我对于企业开发的模式一直定性为HTTP接口开发,也就是我们常说的RESTful风格的服务接口。的确,对于在接口不多、系统与系统交互较少的情况下,解决信息孤岛初期常使用的一种通信手段;优点就是简单、直接、开发方便。利用现成的http协议进行传输。我们记得之前实习在公司做后台开发的时候,主要就是进行接口的开发,还要写一大份接口文档,严格地标明输入输出是什么?说清楚每一个接口的请求方法,以及请求参数需要注意的事项等。比如下面这个例子: POST http://www.moneyslow.com/restful/user/info 接口可能返回一个JSON字符串或者是XML文档。然后客户端再去处理这个返回的信息,从而可以比较快速地进行开发。但是对于大型企业来说,内部子系统较多、接口非常多的情况下,RPC框架的好处就显示出来了,首先就是长链接,不必每次通信都要像http一样去3次握手什么的,减少了网络开销;其次就是RPC框架一般都有注册中心,有丰富的监控管理;发布、下线接口、动态扩展等,对调用方来说是无感知、统一化的操作。 三、RPC 架构特点: 一个完整的RPC架构里面包含了四个核心的组件,分别是Client ,Server,Client Stub以及Server Stub,这个Stub大家可以理解为存根。分别说说这几个组件: 客户端(Client),服务的调用方。 服务端(Server),真正的服务提供者。 客户端存根,存放服务端的地址消息,再将客户端的请求参数打包成网络消息,然后通过网络远程发送给服务方。 服务端存根,接收客户端发送过来的消息,将消息解包,并调用本地的方法。 四、 什么时候需要PRC: 先来看一下,没有RPC的时候,会怎么样: 在过去是这样的,包括现在很多对企业服务可能也是这样,只有一个包部署在web服务器里。那个时候,没什么需要用到RPC的场景。然后当用户量大的时候呢?渐渐出现了负载均衡。“海阔中文网”为您分析,大概是这个样子: 负载均衡能解决的问题很多,但是还是不够好,比如说,只是某一个功能模块(假设是用户中心)被访问的次数特别频繁,我可不可以把这部分内容单独拿出去?用户中心的机器独立,给它单独的带宽,给他单独的服务器,给他单独的数据库? 不这么干其他的功能模块都干不下去了啊。 以学校餐厅举例: 学校餐厅,可以容纳500人同时就餐,但是有一家面馆,生意特别好,每到饭点来吃饭的人都有2000人,占满了餐桌,排队好几百米,餐厅的其他摊位肯定不乐意了吧?比如那个卖水饺的,虽然每天几十个人来吃饭。那也是钱啊。你人这么多,想来我这吃饭的人都挤不进来了,大概情景是这样的: 这样能看懂吧?遇到这种场景怎么办?不可能不让面馆开门营业啊,那最好的方式就是:“你可不可以搬出去?” 你不搬我们搬也行!(哭泣脸,反正我们是再也不要和你家面馆开在一起了,必须给我们一个说法) 那么,搬家之后的样子可能是这样的。 嗯啊。分是分开了,然后餐卡什么的还是在一起,还是和其他窗口一样,给大家提供就餐的功能。这就是分而治之,哪怕你面馆关门了,也不影响我,这又叫分布式。(“分布式”划重点) 说到分布式,就问题就来了。 可不可以互相调用?其实细分下去,买菜,切菜,结账这些都是独立的流程,我们能不能都把它们独立出来? 当然是可以的,但是带来的问题就是,如何通信?大家都不在一个进程里。 这种通信的方式,就叫做RPC,在今天,RPC已经不仅仅是远程,这个远程,确切来说,就是指不在一个进程内,只能通过其他协议来完成,通常都是TCP或者是Http。 好了,RPC讲清楚了,再看RPC的重点是什么。 不能太慢,对不对?如果太慢了,怎么办? 这种性能的要求,要做到什么程度?希望是和在同一个进程里,一致的体验。 Http能做到这种程度么? 不行。Http(TCP)本身的三次握手协议,就会带来大概1MS的延迟(emmm,这个数据其实我有点不确定了,也可能是几微秒,很早之前做过测试)。 每发送一次请求,都会有一次建立连接的过程,加上Http报文本身的庞大,以及Json的庞大,都需要作一些优化。 一般的场景下,没什么问题,但是对于Google这种级别的公司,他们接受不了。 几MS的延迟可能就导致多出来几万台服务器,所以他们想尽办法去优化,优化从哪方面入手? 1.减少传输量。 2.简化协议。 3.用长连接,不再每一个请求都重新走三次握手流程 Http的协议就注定了,在高性能要求的下,不适合用做线上分布式服务之间互相使用的通信协议。…
-

全屋装修电路回路插座电线空开布线图参考
以下为全屋装修中电线、回路以及空开选安装位置图。 一、电线选择 左边软芯(BVR),右边硬芯(BV),外边白色护套线除灯线外一般不用。 普通家装硬芯偏多,因为软芯接头处不方便固定。 电线常用色:火线红色、蓝色零线、双色地线(不是一定的,如零线也有绿色,地线也有黄色) 二、回路选择 常用回路 特别需要注意的一点就是冰箱单独回路,这样可以离开家断掉其他回路时保留冰箱供电。 可增回路 三、空开选择: 左边空气开关、右边漏电保护开关。漏电保护增加了保护漏电及触电时的触发,空气开关只会在过载时跳闸。 家用空气开关分为1P、2P,漏电保护开关分为1P+N、2P。一般总路的选2P,分路选1P就可以。 P=极,N=零线 家用电线因穿管且室内温度较高,所以建议安全载流会比理论降低。 四、插座种类 除了基础的五孔插座以外,还有其他几种常用的插座也在这张图上有所体现。 唯一需要注意的事情就是洗手间可以加防溅盒。 五、插座布置 1、玄关插座 预留2-3个插座,插座高度如图,可以布置在鞋柜底部和中间。用于烘鞋器、氛围灯等。 2、客厅插座 客厅背面一般预留5-7个插座,沙发旁可选择USB插座。 客厅正面一般预留4-8个插座,电视机下可预留两个四孔插座。 3、卧室插座 整个卧室可以预留6-14个插座,床头、梳妆台插座如果想隐藏可以降低高度。 4、厨房插座 厨房是插座最多的地方,推荐使用带开关插座。 除了以上12个插座以外,还可以为洗碗机等增加2到3个,如果拥有中岛至少增加4到6个插座。 烤箱插座一般16A,同时不可留在烤箱后边。 5、餐厅插座 餐厅插座一般布置3-6个,主要用于小电器及餐桌火锅使用。 6、卫生间插座 卫生间插座一般预留4-6个,如果洗衣机烘干机在阳台就把插座挪到阳台,同时插座高于进水口。 7、智能设备插座 智能电器的位置会随着时代的进步而改变,今天我就把常见的几种罗列出来,供大家参考! 我自己全屋的插座数量以供参考 总结: 插座是家中最容易忽略但又是比较重要的环节,如果插座前期没有设计好那后期家里就变成盘丝洞了。 而插座的设计不单单是数量上,更重要的是位置、种类及线路、回路布置。
-

sort命令排序文本文件内容的多种方式:按月,按数值,随机,按ASCII
去除重复行sort file |uniq 查找非重复行sort file |uniq -u 查找重复行sort file |uniq -d 统计sort file | uniq -c Linux sort命令可以以比你可能意识到的更多的方式来排列命令输出或文件内容-按字母,数字,按月和随机方式只是更有趣的选择之一。在本文中,我们将介绍一些更有用的排序选项,并说明它们之间的区别。 默认值默认排序似乎很简单。首先是数字,然后是字母,对于每个字母,小写字母都在大写字母之前。您可以期望看到这种排序:012345aAbBcCdDeE ASCII顺序查看这些字母中每个字母的数字字节值,您可能会注意到,就ASCII而言,上面看到的不是“自然顺序”。 # echo 012345aAbBcCdDeE | od -bc0000000 060 061 062 063 064 065 141 101 142 102 143 103 144 104 145 1050 1 2 3 4 5 a A b B c C d D…
-

Linux中可以通过propos命令通过语义来模糊查找相关命令
如果想找排序相关的命令,就apropos sort, 想找计算相关的命令,就apropos compute,该命令使用用户提供的关键字来搜索man手册的名字和描述。以下是它的语法: apropos [OPTION…] KEYWORD.. 有很多选项:(本文来自海阔中文网 moneyslow.com) -d, –debug:获取调试信息。-v, –verbose:获取详细的警告信息。-r, — regex:以正则匹配的方式搜索关键字。-w, –wildcard:关键字包含通配符。-e, –exact:精确匹配关键字。-a, –and:要求匹配所有关键字。默认匹配任一关键字。-l, –long:完整输出,不将结果截取到终端的宽度。-s section, –section section:只查找指定的手册section。-m system[,…], –systems=system[,…]:用于查找其它操作系统的手册页。-M path, –manpath=path:设置man手册的路径。-L locale, –locale=locale:本地化。-C file, –config-file=FILE:使用这个参数指定的配置文件。-h, –help:输出帮助信息。 –usage : 输出一个简短的用法-V, –version:打印版本信息并退出。 man手册描述摘要: 当你使用 -r(正则匹配) ,或 -w(通配符),或 -e(精确匹配关键词) ,那么这个关键字通常被认为一个正则表达式。当你使用这些选项的时候,要把关键字放到双引号中,每一个特殊字符都要用反斜杠(\)进行转义。 这匹配规则可以匹配man手册页面的名字,和描述中的单词。
-

-

利用多种方式优化Nginx的HTTPS性能延迟
开启http2 首先从优化TLS 握手和延迟入手,在Nginx 中的 TLS 设置中开启 HTTP/2,HTTP/2 标准是从 Google 的 SPDY 上进行的改进技术,比 HTTP 1.1 提升更多的性能,在需要并行多个请求的时候可以减少延迟。一般情况下一个网页需要请求很多次,而在 HTTP 1.1 时代浏览器能做的就是开多个连接进行并行请求,而HTTP2可以在一个连接中进行并行请求。HTTP2原生支持多个并行请求减少了顺序执行的请求的往返过程。 如果你想自己看一下 HTTP 1.1 和 HTTP 2.0 的速度差异,可以试一下:https://www.httpvshttps.com/。 访问海阔中文网,网络测试下来 HTTP/2 比 HTTP 1.1 快了89%,如下图所示: HTTP 1.1 与 HTTP 2.0 速度对比 在 Nginx 中开启 HTTP 2.0 非常简单,只需要增加一个 http2 标志即可: listen 443 ssl; # 更改为 listen 443 ssl http2; 注意:如果客户端不支持…
