阿里云服务器FTP无法连接怎么解决

这台云服务器到手以后,我就立马装上了lnmp,安装上了FTP,准备上去把默认主页给删掉,可是发现FTP始终连不上,一直卡在最后一步

 

看到最后一行的端口号,我就明白了,这是端口没开吧,阿里云的端口必须自己去安全组设置启动呢。

设置安全组允许通过的端口号也很简单。进入服务器实例以后,点击网络与安全,再选择安全组。点进你的安全组ID

在安全组中创建两个规则,端口范围分别设置为20/21、1024/65535,授权对象均为0.0.0.0/0,优先级为1,如下图:

然后再去试试吧。是不是FTP能用啦~

SublimeText 批量清除空行

sublimeText 编辑器批量清除空行:

1、CTRL+H 打开 replace 功能

 

2、选择 Regular expression 功能

3、批两替换  点击replace All

https://www.bbsmax.com/A/WpdKvreZ5V/

VMware虚拟机三种网络模式:桥接模式,NAT模式,仅主机模式

目录

一、桥接模式

二、NAT模式

三、仅主机模式

 

VMnet0:用于桥接模式下的虚拟交换机

VMnet1:用于仅主机模式下的虚拟交换机

VMnet8:用于NAT模式下的虚拟交换机

一、桥接模式

桥接模式就是将主机网卡与虚拟的网卡利用虚拟网桥进行通信。类似于把物理主机虚拟为一个交换机,所有桥接设置的虚拟机连接到这个交换机的一个接口上,物理主机也同样插在这个交换机当中,所以所有桥接下的网卡与网卡都是交换模式的,相互可以访问而不干扰。在桥接模式下,虚拟机IP地址需要与主机在同一网段,如果需要联网,则网关与DNS需要与主机网卡一致。

所以,桥接模式下的所有虚拟机都是和主机是在同一网段的,可以把它们看成是”平等”的关系,这就会带来一些麻烦,比如192.168.1段下只有254个主机地址,所以桥接模式下虚拟机和物理的总数不能超过这个数字!

配置方法

1、在系统的虚拟机设置中将网络连接模式选择为桥接模式:

2、因为桥接模式虚拟机与宿主机在同一网段下,我们先查看下宿主机的网络信息:

3、接下来在虚拟机中配置网卡(/etc/sysconfig/network-scripts/ifcfg-etho0文件):

注意,网关与DNS需要与主机相同,因为他们在同一网段下~

4、重启网络服务,测试:

二、NAT模式

上面说过,桥接模式可能会导致一定的ip资源紧缺,这时候NAT模式时最佳选择。

先看网络结构图:

在NAT模式中,主机网卡直接与虚拟NAT设备相连,然后虚拟NAT设备与虚拟DHCP服务器一起连接在虚拟交换机VMnet8上,这样就实现了虚拟机联网。VMware Network Adapter VMnet8网卡是为了实现主机与虚拟机之间的通信。

可见NAT模式下主机更像是虚拟机们的”路由器”,通过VMnet8虚拟网卡为虚拟机分发地址。所以虚拟机和主机不再同一网段下,可以理解为主机是虚拟机的”上级”,这也就是为什么桥接模式没有VMnet0这个虚拟网卡,因为桥接模式下的虚拟机和主机是”平等”的,共用同一个路由器。所以啊,NAT模式下的虚拟机时通过真实主机的ip访问外网。

三、仅主机模式

仅主机模式可有看成是NAT模式去除了虚拟NAT设备,然后使用VMware Network Adapter VMnet1虚拟网卡连接VMnet1虚拟交换机来与虚拟机通信的,Host-Only模式将虚拟机与外网隔开,使得虚拟机成为一个独立的系统,只与主机相互通讯。

如果你懂了NAT模式,那理解仅主机模式起来就很简单了~

 

查看VMnet1

所以肯定ping不同外网

有趣的是

主机能ping通虚拟机,而虚拟机不能ping通外机

所以我们可以推测,虚拟机ping主机很可能是通过NAT模式下的NAT虚拟设备,而仅主机模式没有这个设备;而主机ping虚拟机是通过VMnet1网卡。而禁用NAT虚拟设备有些困难,我们也不太好验证。

 

https://blog.csdn.net/qq_39192827/article/details/85872025

bootstrap 响应式图片自适应图片大小

<img src="..." class="img-responsive center-block" >

或者

$(window).load(function(){

 
    $(".panel-body img").addClass("img-responsive center-block");
 
})
我的应用
<img id=”logo” src=”../../assets/pic/home/logo.png” >

#logo{
display: block;
max-width: 100%;
height: 40px;
}

5种方法,加密你的Python代码

Python越来越热门了,2019年3月TIOBE编程语言排行榜上,Python更是罕见的击败了“霸榜三巨头”之一的C++,挤进前三。

Python优点很多,比如简单易学,代码量少,能做的事很多等等,和其他语言一样,Pyhton也有一些不可掩盖的缺点,版本不兼容,运行效率不高等等。

其中一个缺点,让不少开发者头疼不已,由于Python解释器开源的关系,导致Python代码无法加密,代码的安全性得不到保障。

当然,想要加密Python代码,也并非无解。最常见的加密方式有4种,还有1种独特的加密方式。

1

Python解释器在执行代码的过程中,会首先生成.pyc文件,然后再解释执行.pyc中的内容,当然,解释器也能直接执行.pyc文件。

.pyc文件是一个二进制的文件,是不具备可读性的。

假如我们发到客户环境时,是.pyc文件,而不是.py,那么是不是就可以保护我们的Python代码?

想要做到这一点,并不难。Python标准库就提供了一个名叫compileall的库,使用它就可以做到。

执行如下命令,即可将<src>目录下的所有.py文件编译成.pyc文件:

python -m compileall <src> 然后删除 <src> 目录下所有 .py 文件就可以了。

$ find <src> -name ‘*.py’ -type f -print -exec rm {} \;

这一方法,可以加密我们的Python代码,胜过代码裸在外面。尴尬的是,因为Python解释器的兼容较差,有些版本并不能运行.pyc文件。而且已经有现成的反编译工具,可以直接破解。

比如python-uncompyle6(「链接」),只要执行以下命令,就可以搞定。

$ uncompyle6 *compiled-python-file-pyc-or-pyo*

2

代码混淆,也是一种常见的“加密”方式,严格意义上说,这一方法并不是加密,而是上代码的可读性变差。比如删除注释,添加毫无意义的注释,添加无效代码,对变量、函数、类进行重命名等。

内容不可读,代码就受到了保护。

代码混淆的工具很多,一个比较好用的混淆库是pyobfuscate(GitHub – astrand/pyobfuscate: pyobfuscate)。这个库可以对类、函数进行重命名,并且插入无关的代码,甚至自动加空格等等。

这一方法很简单,也提高了破解的门槛。但由于代码结构未发生变化,字节码也能获取,破解难度也不高。

一般而言,使用这一方式较为简单,实用。

3

如果有一款工具,可以将Python脚本打包成在某一平台的可执行文件,最终我们发行的,是一份打包完成的二进制文件,那么程序就更难被破解了?

py2exe(FrontPage – py2exe.orgFrontPage – py2exe.org)就是一款很好的打包工具,可以将Python脚本打包成可在Windows上运行的文件。

这一方式的优点是进一步提高了破解门槛。遗憾的是,你只能在windows上运行它。

4

Python运行速度慢何解?用Cython就可以带来性能的提升。实际上,Cython也可以用来加密Python代码。

Cython的原理是,将.py编译为.c文件,再将.c文件编译为.so或者.pyd,这样一来,文件就变得难以破解了。

这样做的好处是,Python代码很难被破解,缺点是有时候,Cython可能不支持一小部分代码,完善起来就比较麻烦了。

5

最后一种方法,做得比较绝。

由于Python是解释型语言,因此在发行Python程序的时候,就必须包含一个Python解释器,如果我们修改这个解释器,代码不就被保护起来了吗?

如果我们能对最原始的Python代码进行加密,加密后的代码被发行后。哪怕被别人看到了,但因为不晓得算法是怎样的,就破解不了了。

这是因为Python解释器本身是一个二进制文件,自然也就无法获得关键性的数据,进而保护了源码。

虽然这一方法最为安全,可操作难度较高。你必须掌握基本的加解密算法,还要探究Python执行代码的方式,从而了解到从什么地方进行加解密。最后禁用字节码,以防通过.pyc反编译即可。

以上五种加密方式,有利有弊,有难有易,根据需求选择就可以了。

大蔚老师互联网课程体系-公示

大蔚老师拥有长达15年项目实战+技能教学经验。在web开发领域一直走在技术革新的前沿,个人负责开发过大小各类项目达500个之多,代表作之一:http://www.mpinhome.cn [基于TP5框架,历时一年时间开发大型SB2B2C项目….;网站最下面有我姓名+电话核验真伪]。为帮助广大开发朋友们快速上手,少走弯路,特整理WEB开发中(理论+实战)实用、技能精华【1前端课程-2后端课程-3服务器课程-4其他单独模块-5WEB人工智能-6安卓开发课程】。录课不易,感谢支持。

http://www.xuduowei.com/xuexi 获得学习思维导图

https://www.itwenda.com/course  获取学习手册,学习工具,在线答疑,在线编程。建议每天‘登录’-》‘首页-》‘签到打卡’获得积分,后续更精彩。

==============1前端课程==============

一、《HTML+DIV+CSS+应用实战》 【免费】点击观看>>

二、《JS基础课程+应用实战》【免费】点击观看>>

三、《H5实用技术总结+案例分析》

四、《JQUERY+应用实战》

五、《Bootstrap+应用实战》

=======2后端课程【基础/高级/扩展】======

——基础部分:

一、《PHP7快速上手》【免费】点击观看>>

二、《MYSQL数据库快速上手》【免费】

三、《PHP7+MYSQL项目实战=企业站管理系统》预售中

四、《PHP7+MYSQL项目实战=角色权限管理系统》预售中

五、《SEO搜索引擎优化》【免费】点击观看>>

——高级部分:

六、《快速学习PHP面向对象编程》【免费赠送】

php面向对象编程;面向对象编程三大特性(封装性,继承性,多态);DB(数据库)类实现; ) 点击观看>>

PHP面向对象编程;深浅copy;抽象类,接口;oop五大开发原则,二大开发模式;) 点击观看>>

七、《熟悉使用Thinkphp5.X开发项目》

八、《Thinkphp6框架+商城系统开发》预售中 

九、《用Thinkphp6开发万能角色权限管理系统》预售中

十、《CI框架+商城系统开发》

十一、《用CI开发万能角色权限管理系统》

 

——扩展部分       预售中

十二、《微信公众号开发+点歌系统-项目实战》

十三、《微信小程序开发+点歌系统-项目实战》

==============3服务器课程============

一、《LAMP环境搭建》【免费】点击观看>>

==============4其他单独模块===========

一、基于TP6+EXCEL类实现导入/导出excel 预售中

二、《H5打包成APP(安卓,苹果)》预售中

 

============5WEB人工智能=============

《WEB人工智能+大数据采集与分析+项目实战》预售中

1、 WEB人工智能理论+基础

2、 项目实战1:模拟人工填充第三方表单

3、项目实战2:采集其他平台数据到自己平台上

============六CLI脚手架+app打包套系教程=============

《CLI脚手架+app打包套系教程》预售中

1、 vue cli项目创建【a、默认h5项目;b、app项目】

2、cli+h5前端布局 【app cms系统前端】

3、cli+h5+后端(动态接口数据交互)

4、cli+h5+后端=》app打包

=============七安卓开发============== 预售中

一、安卓APP开发一:《快速学习JAVA》

二、安卓APP开发二:《安卓APP开发+项目实战(扫码枪扫码校验是否重复)》

1、原生开发【安卓java开发+SQLite】;

2、混合【安卓java开发+php接口+mysql;后端管理 php+mysql】;

=====================================

有需要的朋友,可私信我QQ:2625767723 ; 微信【电话】:15309695130

空链接是使用javascript:void(0)还是使用#none

通过微信推送链接。在ios系统中(android显示正常),微信内页打开链接后,点击页面的一个按钮,页面被重新加载了,这时才可以对页面进行其它操作。

原因:a标签的引起的

<a href="#none" class="btn" id="btn"></a>

href=“#none” 这是本来是使用空链接,并使用JS控制ID来给按钮添加功能,但是在微信中会导致第一次点击按钮时页面出现重新加载现象……

解决办法如下:

<a href=”javascript:void(0);” class="btn" id="btn"></a>

注:javascript:void(0) 链接无返回值。

当a标签href为空链接,写法为javascript:void(0),也不是说使用href="#none"就是错误的,在pc端上使用也是没有问题的,href="javascript:void(0);是专业化的一种表现,更值得我们去写,毕竟它解决微信中存在的一个bug...