![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
编程常识
无主题知识点
尘世壹俗人
做一只马喽
展开
-
Windows安装JavaJDK的时候为什么两个jre
总的来说,JDK主程序安装时自带的jre时JDK自身必备的一部份它负责Java虚拟机等Java工具的运行,不可单独存在,不可被分离,而且不存在于Windows的注册表中,随着JDK的使用而使用,就相当于人的手臂一样,一个人活动的时候是整个人在动,而不是不需要大脑等其他组织就单独的手臂自己在动。很多初学者甚至参加已经参加工作的程序员,都有过一个疑惑在你自己的Windows电脑上安装JavaJDK的时候主进程自带一个jre之外,还会让你单独选择安装一个jre,在你安装完成后会发现拥有的文件都差不多。原创 2023-10-30 11:52:19 · 423 阅读 · 0 评论 -
解决git上传远程仓库时的大文件提交
可以看到配置项的最下面多出了一行我们刚刚配置的内容. (52428000=500×1024×1024,即500M)git默认限制最大的单文件100M,当某个文件到达50M时会给你提示。首先,打开终端,进入项目所在的文件夹;原创 2023-08-23 00:34:59 · 1027 阅读 · 0 评论 -
Idea开发maven项目第三方依赖打不进结果jar中
默认的情况maven项目不打第三方包的,想要打一个完整的包就需要,把下面的插件依赖导入pom。打完包后,除了原本的最小jar外,会有一个包名包含jar-with的jar。原创 2023-08-22 18:57:58 · 523 阅读 · 0 评论 -
编程中数字类型能够容纳的数据范围,是怎么换算的?
当你知道上面说的两个东西,那么你就可以理解整形的数据范围,也就是当你规定数据长度为4,既长度为4字节时,整型数据所能容纳的数据范围是在 8 * 4 = 32 位之内,当你存储有符号数据时,由于最左侧的最大位数属于符号位所能容纳的数据也就只有31位了,就是说此时数据范围为-2∧(32-1) 到2∧(32-1)-1,即-2,147,483,648到2,147,483,647。,这种表示法有利于计算机更快速的计算数据,少沉余的编码,具体指的是,数字的最大位用来表示符号,0为正号,1为负号,其他位表示数字本身。原创 2023-08-11 02:39:40 · 198 阅读 · 0 评论 -
前端页面开发如何达到自适应不同设备宽高的效果
方法一,不使用固定的元素大小值,而是使用百分比,但是除非你开发的页面所需要的渲染相当直白,否则不推荐用。比如说在一个测试页面中只写一个div,它的宽和高设置为百分比,从效果中会发现,如果不做出其他的渲染配合,这个div的高度是塌陷的,也就是说,在页面上看不到这个div。不需要管不同的地方叫什么,只需要知道,这种适应不同设备展示效果可控的技术核心,是CSS提供的媒体能力,比如你可以写多个CSS样式,并在外链时检测浏览器可视宽度,只有符合宽高要求时才会生效。想要达到这样的效果,有两种方法。原创 2023-06-24 03:17:34 · 1155 阅读 · 0 评论 -
element对话框的遮蔽层z-index失灵出现在对话框的上层
正常半透明黑色的遮蔽层应该是在对话框的下面,使用控制查看发现对话框和遮蔽层的z-index每次都不同,而且遮蔽层始终在上面。很无语,用git在不同版本之间排查,虽然找到了这个问题触发的文件,但是具体在哪里一行行的代码删着排查都没找到,中途改了个自定义css的文件名短暂的恢复了,过了几个版本又出现了,所以具体发生的实际原因没定位出来。不过还好最后找到了解决方法,就是指定对话框和遮蔽层都插到body里,就好了。记录一次很无语的事情。写Demo的时候整个前端模块所有主页上用的对话框它们的遮蔽层。原创 2023-05-24 13:47:11 · 454 阅读 · 0 评论 -
正则表达式中的小括号有什么用
最后就是当小括号起分组作用的时候,被分组匹配到的多个数据会被另存组成一个数组,在某些框架中,可以单独拿出来使用。比如我们在使用nginx配置时就会遇到。,这个正则中(\d{1,3}.){3}表示匹配三位数字加上一个英文句号,将此看作是一个整体重复3次,最后再加上一个一到三位的数字。第二个作用是做中括号的平替,在实际使用中,我们常常使用中括号表示匹配多种选项中的任意一个,但其实你把中括号换成小括号也是可以的。所以被小括号包裹的正则你可以看作是一个通过已有的正则符号组成的新的自定义正则符号。原创 2023-03-29 02:15:29 · 1469 阅读 · 0 评论 -
nginx中try_files和proxy_pass
两者可以共存,比如可以在try_files中先尝试返回本地的静态文件,如果找不到再转到反向代理。但是需要注意,try_files只能在server或location中使用,而proxy_pass只能在location中使用。proxy_pass是用来将请求转发到指定的后端服务器,然后将后端服务器返回的内容返回给客户端。try_files是用来在本地找到并返回指定的文件,如果找不到则转到下一个指令。可以用来实现静态文件的访问。try_files和proxy_pass都是nginx中的指令,但是用途不同。原创 2023-03-28 12:23:32 · 1061 阅读 · 0 评论 -
springboot跨域解决方式
允许跨域的请求头信息,默认为“*”表示允许所有的请求头,CORS默认支持的请求头为:Cache-Control、Content-Language、Expires、Last-Modified、Pragma,如果你需要携带其他的请求头需要设置该属性。:支持的源,origins和value都是相同的配置,互为别名,默认配置是“*”,表示服务器支持所有源的跨域请求,安全信息较低,最好根据实际情况设置对应的信息(协议 + 域名 + 端口)。原创 2022-11-22 22:20:57 · 501 阅读 · 0 评论 -
java.security.NoSuchAlgorithmException: Cannot find any provider supporting DES/CBC/PKCS5Padding
问题的触发场景:写一个文档处理功能时,使用的类库在解析文件内容时,在开发工具里运行一切正常,但是打包后cmd下java -jar运行的时候会报一个安全框架异常,信息如下。最后发现直接运行的时候加载不到jdk下的。单独拿出来,放到你的类路径下。给大家分享一个特奇葩的问题。包,解决方法就是把jdk下。指定jar包路径解决的。原创 2023-02-23 15:33:14 · 2154 阅读 · 2 评论 -
idea中scala报错compiler-interface
这个错误一般是在使用2022版idea之后会发生的,自带的scala-jdk和自己本地的java-jdk版本冲突导致的。,在此界面检查你的scala-jdk是否为本地,如果不是则更改。点开设置后检查javajdk是否是自己本地的。原创 2023-02-14 20:43:49 · 1473 阅读 · 5 评论 -
SSM和SpringBoot添加web环境
Springboot和SSM添加Web依赖的本质区别就是由于springboot在创建的时候内部可以添加Web依赖,从而不同于SSM需要从最基本的Web环境配起,springboot只需要确保创建项目存时勾选了Web依赖就可以,就算后期需要另外的自定义web路径也只是添加一个就行。在弹出的页面中,你要注意你的web虚拟路径的物理路径映射,以及webapp的文件夹在哪里创建,一般改成项目主路径下,比如我的是。点击最下面的OK保存退出tomcat的配置界面,后面使用的时候点击右上角的启动就行。原创 2023-02-05 13:13:10 · 1790 阅读 · 0 评论 -
NAS和磁盘阵列有什么区别?
磁盘阵列的核心是通过raid卡,或者配合expander卡组成的大容量存储器,就相当于一个超大容量的硬盘。甚至磁盘阵列需要很大的时候,可以考虑磁盘阵列柜。但无论是哪种,它本质上都只是一个存储器而已。而NAS本质上是一个用磁盘阵列来当做存储硬件的服务端,也叫网络存储池,特点通过网络发现与使用,本身属于一种软raid。如果有机会见一次被做成nas的服务器,你就会发现它从外观上,和我们常识中的服务器或者个人PC端差别不大,都是CPU内存主板等硬件组成。区别在于有专门的系统,使得运行模式不同而已。原创 2023-01-26 17:22:40 · 3070 阅读 · 0 评论 -
RAID不同模式之间的区别
而且两份校验数据使用的是不同的算法。,这是一种软raid,是群晖提供的一款产品,它就是常说的那种,可以自动判断适合使用哪种模式的raid。,是在raid2的基础上改善过来的,区别有两点,一是简化了算法的复杂度,二是将校验数据放入了一块单独的盘中,但读写操作时都会访问校验盘,导致其高负荷运转,相当容易损坏,整个数据整列就全完了,非效验盘允许损坏一块。,将所有的盘视为一块,拥有全部的写入容量,没有任何校验编号算法,数据以多片的形式写入不同盘,所以读写是最快的,但安全性是最低的,只要坏一块硬盘,所有数据都完蛋.原创 2023-01-25 18:34:03 · 4395 阅读 · 0 评论 -
github上的远程库如何多人一起开发
一般情况下,公开的项目时是可以让所有人发Pull请求的,但是有的项目并不能公开,作为私有的仓库可以让项目原持有者,在github上在如下入口向合作者发送项目邀请,按照名字即可搜索到对方,随后就需要被邀请者同意,并clone一下项目。原创 2022-12-27 18:09:31 · 204 阅读 · 0 评论 -
推送github一直超时以及输入密码提示2021年8月以后密码不能用解决
至于密码的问题,是github截至2021年8月以后认证账户用的密码不再是你的个人密码,而是需要token。最后你在推送的时候提示的密码输入就用这个token,或者你可以在添加远程库的时候就指定好。最近推送github常常出现443端口超时,查询了很多办法最后用了如下方法解决。随后会给你一个token,在绿色div里,一定要保存下来,后面就查不到了。权限选择repo和delete_repo,其他的有需要自己选择。your_token:换成你自己得到的token。这需要你在github上点击设置。原创 2022-12-17 16:38:04 · 793 阅读 · 0 评论 -
idea配置tomcat日志中文乱码,且修改后idea正常,但cmd窗口任然中文乱码解决方法
可以不勾选,它的作用是用选定的字符集把项目的所有内容变成Unicode编码,结果就是在开发工具中显示正常,但是一旦复制出去单独打开,除了英文全是Unicode编码。idea日志乱码问题的原因是tomcat的日志配置文件有两行有问题需要删掉,cmd乱码是Windows系统cmd窗口默认不是utf-8。不方便的地方就在于,你不能鼠标直接运行相关程序了,只能在该cmd窗口中命令行的方式运行程序。随后解决cmd乱码的问题,这个很好解决,你只需要在运行你的java进程前运行。当然,你其实可以写一个bat的脚本,把。原创 2022-12-17 00:19:03 · 980 阅读 · 0 评论 -
Java线程池中的线程数设置多少个合适,什么情况下会导致OOM
这个问题的核心点在于,我们使用线程池无论设置多少个线程数,它都是在主进程下的若干个线程,所共享的都是主进程的内存资源,而在不同的系统上,能够允许一个进程所占用的最大内存数是不一样的,在Windows体系中,32位的系统只允许一个进程最大占4g内存资源,而且其中2g还要给系统,也就是说一个进程能够实际使用到的最大内存也就2g,linux系统中是3g,而且这个值无法往大调,这是32位系统无法摆脱的限制,大家可以网上搜一篇文献。它是指当一个进程所需要的实际内存,超过了它所能占用的最大内存时,爆发的一个错误。原创 2022-12-13 02:20:58 · 2426 阅读 · 0 评论 -
CIDR格式网络策略值设置方式
理论上来讲,网络ID值的大小决定了网络策略所处的网段类型,A类网络每个网段所能容纳的IP最多,最大为16581375个IP,所以它所能配置的网络也就越灵活,B类每个网段最大65025个IP,同理C类最次每个网段只能容纳255个IP,所以一般公司里面使用的都是A类地址。到这里我想,大部分人可能已经蒙了,因为按照上面说的,A类网络的子网掩码应该是从255开始到255点255.0结束,其他的也是同样的道理,但是为什么这里所有的网络ID中都可以适用于A类。同时大家要知道一个铁律!这样的C类子网掩码呢?原创 2022-12-13 01:07:47 · 1961 阅读 · 0 评论 -
大数据任务on yarn时任务是谁在执行
其实从技术上来说,如果你的集群所有的任务都是on yarn运行,那么只需要保证在Hadoop集群中的服务器上拥有伪分布式或者最简易的单节点spark和flink就可以了,Hadoop自带的MR在运行的时候是是有一个预处理的Driver进程将任务编译并与所需jar打包成一个task提交给yarn,其他的框架也是一样的,在on yarn是时候也只是保证存在一个可以将任务打包成task交给yarn的角色即可,所以说就其他大数据计算引擎不需要有集群模式的服务。原创 2022-11-04 13:09:24 · 425 阅读 · 0 评论 -
idea中maven项目开发scala代码
第一步:下载Scala插件,下图已经下载好了,没有下载时最右侧的详情中会有下载安装按钮,你也可以在项目中的settings-plugins中下载,一样的。前置条件你的电脑需要安装有JAVA-JDK、Maven、Scala-JDK、idea。第三步:src下创建一个scala资源路径,并设置为代码路径。第二步:正常创建Maven工程。OK后就可正常开发Scala了。第四步:添加scala的支持。原创 2022-11-03 16:35:51 · 359 阅读 · 0 评论 -
什么叫高内聚、低耦合?
耦合这个词,在开发人员里常常提到,但是很少有人解释耦合到底是什么?导致很多新手听见高内聚、低耦合这两个名词,就很奇怪,不知道到底说的是什么?耦合,在开发中说的是所写的业务代码跨了几个动作,动作跨的越多耦合度就越高,比如当你开发一个商城系统时,将用户下单、系统接收订单、系统处理订单、订单结果返回,这五个动作开发在一个业务流里面,这就是一个很高耦合的开发,其中任何一个动作发生意外都可能导致整个系统瘫痪。常用的解耦和方法就是使用MQ技术,比如kafka,将业务系统的流程模块化分离,而每个模块专心干自己的事就叫原创 2022-10-23 22:04:08 · 533 阅读 · 0 评论 -
Flink开发语言使用Java还是scala合适?
可问题就是先它一步的spark,已经早在2010年对外开源发布得到了很多的代码贡献,更是在2012年的时候就发布了0.6的第一个正式版,我们都知道一个道理,一步快步步快,所以spark在第一个正式版本发出以后,进入了更快的发展,2013年的时候成为了Apache基金会下的项目,并在同年研发出了机器学习、流处理,以及spark sql的前身shark,再到2014年的时候,正式发布了1.0版本,不只有了图计算,而且还开发出了spark sql,更是成为了Apache顶级项目。Scala还是Java?原创 2022-10-15 16:11:43 · 8052 阅读 · 5 评论 -
idea导入git项目存在.git文件夹但无git功能列表
但是个别情况会消失,比如黑窗口操作回退、新导入一个项目没有识别到等等原因,这个时候你只需要在settings中找到如下配置,选中灰色内容,点击加号,git就可以使用了。正常情况下一个git项目会有一个git功能页。原创 2022-10-10 21:29:35 · 1710 阅读 · 0 评论 -
git合并分支
代表这个版本通常做的是commit操作,并且会生成commit开始和commit完成两条针对同一版本的记录,而HEAD是git中的一个指针,该指针用来代表该版本生成时的上一个版本,当你Push生成远程版本的时候,HEAD就会变成具体提交人。但你再推的时候,大概率提示你远程库中的版本比当前版本新,让你先pull,这个时候你就需要把你的代码提交的一个新分支上,这个分支后续你可以保留现状,也可以用它合并master主分支,下面演示合并主分支的操作。这种情况就需要操作一波了。原创 2022-10-10 21:23:48 · 2859 阅读 · 0 评论 -
Idea如何上传项目至GitHub
最后我需要说明,Token有时候不好用,因为除了刚创建的时候你可以看到Token值,那个时候你如果没有保存,那这个Token就相当于废了,所以你可以配置公钥在管理使用上比Token方便。填写git上的仓库name,其他两个按需求写,也可以默认,注意name值并不是一定要指向一个新的仓库从而使得idea自动创建,也可以是一个先手动创建好的新仓库。此时你就可以进行你项目的上传了,打开你要上传的项目,在VCS中点击Create Git Repository,默认在当前项目主路径创建git本地仓库。原创 2022-09-08 17:20:52 · 10421 阅读 · 0 评论 -
如何规划服务器的虚拟化
虚拟化技术对于我们开发人员来讲,帮助是相当大的,它使得一个服务器,在逻辑上讲,不只再是一个服务器,但是同样,对于很多开发人员来说,一台服务器到底怎样规划虚拟机的个数以及虚拟机的配置才合理根据个人项目开发经验,一台服务器使用虚拟化时,它有一个对单理论巅峰值理论巅峰值是按照公式以及经验推倒出来的理论可行资源数,但是实际如果去触碰这个巅峰值,会发现触碰不到,所有的虚拟化技术一旦接近这个值,会报错阻止人为虚拟化到这个程度,即使不报错,也不会再让你超过这个值而对单的意思,是说虚拟化的时候,对于单台虚拟机来讲它不原创 2022-01-15 18:41:38 · 833 阅读 · 0 评论 -
Hadoop hadoop.tmp.dir这个路径是干什么的
hadoop官网给的提示可知,这个路径是一切路径的基石,比如跑MR时生成的临时路径本质上其实就是生成在它的下面,当然如果你不想也可以去更改 mapred-site.xml 文件再比如,如果你不配置namenode和datanode的数据存储路径,那么默认情况下,存储路径会放在hadoop.tmp.dir所指路径下的dfs路径中...原创 2021-08-19 16:28:23 · 2615 阅读 · 0 评论 -
四舍六入五成双的意思
四舍六入五成双,和我们熟悉的四舍五入是一个类型的东西,只不过它是作用在数据处理是一种更为精确的进位保留方法它意思是舍弃位的数字小于等于4时,舍去该位以及后面的数字1.234保留两位为1.23舍弃位数字大于等于6时,则进位1.678保留两位小数为1.68而当舍弃位的数字等于5时,如果5后面没有数据的话,就要看舍弃位前面的数字,若是奇数则进位,若是偶数则舍掉1.245保留两位小数1.241.235保留两位小数1.24但为5时还有一种普遍情况,若5的后面还有不为“0”的任何数,则此时无论5的原创 2021-08-10 22:16:23 · 18456 阅读 · 0 评论 -
大数据拉链表是什么
大数据中的拉链表说的是一种数据留痕的操作,记录着一个实体对象从出生到死亡的全部过程,普遍的实现方式都是依赖时间字段做状态的更新,下面给大家用一个例子做说明上面的这个例子sql是对商品订单做拉链表的实现,其中涉及到的表有三张dwd_order_info为订单表、dwd_order_info_his为订单的拉链表、dwd_order_info_his_tmp是拉...原创 2021-05-08 14:37:46 · 1122 阅读 · 2 评论 -
古特曼算法说的是什么
说古特曼算法之前,我先问大家一个问题当我们使用手机时,删除一个视频,当这个视频消失在我们的视频栏中时,你认为它真的消失了吗?目前世界上有相当多的数据泄露等,各种数据安全问题,绝大部分其实都是因为数据本质上没有被删除而导致的当一个磁盘被伸长·生产出来的时候除了它本身需要的一些必要内容而占有的很小一部分空间之外,我们可以看作它是干干净净什么都没有的,但是随着它被使用,随着时间的推移,以目前科技的手段,永远无法让他彻底恢复干净状态在磁盘储存东西时,可以看做是n个相对独立的空间,每个空间中各自都装有相应数原创 2021-05-07 14:27:29 · 551 阅读 · 0 评论 -
eclipse中java程序编译时找不到JDK怎么办
有时候配置好环境之后测试eclipse开发的时候常常会出现如下问题No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?这个错误其实是在提示你当前jdk路径下没有编译用的资源,但是很多人就会疑惑,明明安装了jdk啊其实是因为你安装的jdk可能没有用到,在eclipse中默认有一个jdk的路径我们需要打开如下窗口选择如下选项并在其中搜索java,找到如下配原创 2021-04-08 18:23:39 · 3851 阅读 · 2 评论 -
tools.jar找不到怎么办
这个问题最容易出现在eclipse中,maven导入依赖以后发现缺少一个tools,解决方法也简单,直接在pom里面添加如下依赖 <dependency> <groupId>jdk.tools</groupId> <artifactId>jdk.tools</artifactId> <version>1.8</version>原创 2021-04-08 18:59:47 · 1858 阅读 · 0 评论 -
逻辑运算如何使用,以及如何混合使用
逻辑运算符,分为与、或、非,三种运算符,其中非是单目运算符,他们在单独使用的时候很好理解int i = 1;if( ! i==0 ){ printf("i 不等于0")}这就是非运算,感叹号代表非运算,运算结果取表达式的反值,如上例子,i 等于0返回结果是false,但是取反则为trueint i = 1;if( i==0 || i==1){ printf("i 等于0 , 或等于1")}其上是或运算,运行时程序从左到右的执行,当有一个表达式满足会立即结束判断,其他的表达式不会经历判原创 2021-04-27 23:40:24 · 2126 阅读 · 0 评论 -
maven依赖范围
maven的依赖范围主要作用在三种情况,分别是编译、运行和测试,这里我给大家详细解释一下,这三种到底是什么?因为有些人会产生一些其他的误解编译对应的是当你编译的类继承了第三方jar包中的类,或者是通过其他形式使用第三方jar,那么此jar依赖就需要范围控制在编译及以上在可以正常编译,因为编译时会将使用到的资源编译到class文件中测试这项功能相当基础,我们一般不用,即使是我们打包时,我们也会选择跳过测试,测试这一功能就是简单的测试一下程序是否联通,但是测试这一项功能,有的时候常常弄巧成拙,会导致我们需要原创 2021-04-10 21:07:54 · 259 阅读 · 0 评论 -
什么是布隆过滤器
布隆过滤器的用途相当广泛,它的作用对象是访问方和缓存,如下图其存在目的是为了优化一个问题,我们在业务系统开发时,通常会加入缓存,如果缓存中没有我们想要的数据,我们就会到数据库中去查找,但是这种数据流向最容易发生的就是穿透和雪崩,因此布隆过滤器也就应运而生布隆过滤器在访问方和缓存之间树立了一道墙,这道墙的本质是一个哈希函数,这个哈希函数有默认的,我们也可以自己指定,而这道墙的运作模式,就是每次访问方在访问一个数据的时候会先经过这道墙来映射出一个哈希值的结果, 这个哈希值我们普遍认为的不是一个作用,它是在原创 2021-03-29 12:41:53 · 72 阅读 · 0 评论 -
缓存的穿透、击穿、雪崩分别是什么,有什么解决方法
缓存的穿透,说的是系统被访问的时候,缓存中没有这个,从而访问被直接落在了数据库上,但是恰巧数据库中也没有这个数据,导致的从访问这一动作的角度来看,数据库没数据,无法给缓存提供数据,而它自身也一直被访问,直到突然某一刻数据库承受不住如此巨大的访问量而崩溃,流向图如下缓存的击穿,说的是缓存中的高度热点数据,被大量的访问,从而导致缓存崩溃,所有访问直接到了数据库上,数据库有这条数据,但是仍然无法承受如此巨大的访问量,从而数据库崩溃,流向如下缓存的雪崩,发生有如下几种情况,一是因为缓存穿透优化弊端,前面说了原创 2021-03-29 12:35:13 · 855 阅读 · 0 评论 -
大数据流处理开窗时间和滑动时间、滚动窗口和滑动窗口是什么
开窗时间指每隔多长时间进行一次计算滑动时间是指一次计算,覆盖之前多长时间数据滚动窗口指的是开窗时间与滑动时间相等,此时数据以普通的顺序时间线去处理数据,不会发生时间线的重叠,数据理论上不会丢失滑动窗口一般指的是滑动时间大于开窗时间,在时间线上,存在时间的重叠,每次计算数据会重复某些特殊的情况下会出现滑动时间小于开窗时间的滑动窗口,不过很少见,一般只是做数据抽样的时候做...原创 2021-03-03 19:51:29 · 3782 阅读 · 1 评论 -
代码中的自定义的排序方法返回值怎么使用
不管什么语言,或者是其他框架,涉及到排序时,他们的返回值作用其实都是一样的,这也可以说是一种标准,但是很多新手常常搞不懂排序方法的返回值怎么决定排序的顺序首先我们要知道所有的排序正常情况下默认都是正序,自定义排序方法也是如此,所以在直接使用返回值正常运行代码的时候,都是当前对象和后一个对象做比较,在这个迭代的过程,当当前对象比较后一个对象时,如果结果是当前对象发现自己大,也就是说比较结果是个正数,而默认又要是正序,所以会发生交换,正是因为如此返回正数的结果是小的在前,也就是正序同理,既然默认是返回正数是原创 2021-02-28 21:50:00 · 321 阅读 · 3 评论 -
ftp被动和主动
用大白话解释这两种模式其实很简单主动模式的时候服务端默认启用21和20端口,主动模式在运行的时候,客户端向服务端的21端口发送一个请求并提交用户名和密码,当验证通过之后,客户端会再次向服务端发送一个端口号信息,并告诉服务端,我现在处于主动模式,服务器端需要启动20端口去连接客户端给服务端的这个端口号去进行数据的传递被动模式的时候,客户端向服务器的21端口发送请求,并提交用户名和密码,并且还会开放另外一个端口,下面为了好区分,我称这个端口为a端口,当服务器验证用户名和密码成功之后,客户端会向服务器端发送p原创 2021-02-28 01:14:55 · 211 阅读 · 0 评论