Python 网络编程2:UDP-发送、接收数据
UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。根据OSI(开放系统互连)参考模型,UDP和TCP都属于传输层协议。UDP协议的主要作用是将网络数据流量压缩成数据包的形式。一个典型的数据包就是一个二进制数据的传输单位。每一个数据包的前8个字节用来包含报头信息,剩余字节则用来包含具体的传输数据。一、UDP 网络程序 - 发送数据1.1、发送数据的流程创建套接字发送数据关闭套接字1.2、创建udp的套接字udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)1.3、输入套接字发送的内容send_data = input("请输入发送的内容:")1.4、发送套接字内容第一个参数是:发送的内容; 内容要是byte类型,用utf-8转一下第二个参数是元组类型,元组内两个参数,第一个是:对方的ip地址,第二个是对方的port(端口)udp_socket.sendto(send_data.encode('utf-8'),("192.168.3.6",8080))1.5、发送完内容关闭套接字udp_socket.close()1.6、完整的udp套接字发送代码(可以把 2 的内容放到while True:循环里面,一直发送数据)import socket
def main():
# 1、创建一个udp的套接字
udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
# 2、使用udp的socket发送数据
# 2.1、用键盘输入发送的内容
send_data = input("请输入发送的内容:")
# 2.2、使用套接字发送内容
# 第一个参数是:发送的内容;
# 第二个参数是元组类型,元组内两个参数,第一个是:对方的ip地址,第二个是对方的port(端口)
udp_socket.sendto(send_data.encode('utf-8'),("192.168.3.6",8080))
# 3、关闭套接字
udp_socket.close()
if __name__ == "__main__":
main()提示:同一台电脑不允许有两个相同的端口,发送端如果不设置端口,电脑就会随机分配端口二、UDP 网络程序 - 接收数据2.1、接收数据的流程创建套接字绑定本地自己的信息(ip和自己设置的port)接收数据关闭套接字2.2、创建套接字udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)2.3、绑定本地自己的信息(ip和自己设置的port)localaddr = ("",6688) # ip一般不用写,表示本机的任何一个ip,"192.168.3.6"
udp_socket.bind(localaddr) # 必须绑定自己电脑的ip和port,其他的电脑不行2.4、接收数据(Windows解码是用 dbk,想要一直接收数据,可以把内容放到while True:循环里面,一直接收数据)# 3.1、接收内容(参数是允许接收的最大内容)
receive_data = udp_socket.recvfrom(1024)
# 3.2、接收的内容分为两部分:一部分是 存储的时候接收的数据,另一部分是发送方的ip和port
receive_message = receive_data[0] # 存储接收的数据
receive_addr = receive_data[1] # 存储发送方的地址信息
print("内容=%s : 对方的信息=%s"%(str(receive_addr),receive_message.decode("utf-8")))2.5、关闭套接字udp_socket.close()提示:同一台电脑不允许有两个相同的端口,接收方必须设置端口,网络通信过程中,之所需要ip、port等,就是为了能够将一个复杂的通信过程进行任务划分,从而保证数据准确无误的传递三、一个简单的UDP聊天器3.1、需求:在一个电脑中编写1个程序,有2个功能1、获取键盘数据,并将其发送给对方2、接收数据并显示,并且功能数据进行选择以上的2个功能调用3.2、代码实现import socket
def sent_message(udp_socket):
"""发送消息"""
# 2、让用户输入对方的IP和端口号
dest_ip = input("请输入对方的ip:")
try:
dest_port = input("请输入对方的port:")
except:
print("请输入正确的端口号")
# 3、从键盘获取要发送的数据
send_data = input("请输入要发送的内容:")
# 4、用套接字发送内容
udp_socket.sendto(send_data.encode('utf-8'),(dest_ip,dest_port))
def receive_message(udp_socket):
"""接收消息"""
# 2、使用 udp_socket 套接字就接收数据,接收内容(参数是允许接收的最大内容)
receive_data = udp_socket.recvfrom(1024)
# 3、接收的内容分为两个部分:
# 一部分是:对方发送的内容
# 另一部分是:对方的本地信息
receive_content = receive_data[0].decode('utf-8') # 存储接收的数据
receive_localAddr = receive_data[1] # 对方的本地信息
print("%s:%s"%(receive_content,receive_localAddr))
def main():
"""主函数:聊天神器"""
# 1、创建udp套接字
udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
# 2、绑定一个本地的信息
local_addr = ("",7777)
udp_socket.bind(local_addr) # 必须绑定自己电脑的ip和port,其他的电脑不行
# 3、功能选择
print("欢迎使用UDP聊天神器")
# 用循环来处理事情
while True:
print("1:发送消息\n2:接收消息")
input_str = input("请输入选择的功能:")
if input_str == "1":
# 发送数据
sent_message(udp_socket)
elif input_str == "2":
# 接收数据
receive_message(udp_socket)
elif input_str == "0":
# 退出程序
break
else:
print("请输入正确的功能")
# 4、关闭套接字
udp_socket.close()
if __name__ == "__main__":
main()提示:以上的程序如果选择了接收数据功能,并且此时没有数据,程序会堵塞在这,那么怎样才能让这个程序收发数据一起进行呢?后面多任务知识之后就解决四、拓展:通信中的:单工、半工、全双工单工:表面意思就是单项的操作,其实就是通信的单项传输,如收音机,你只能接收数据半双工:是既可以发送数据,也可以接收数据,但是二者不能同时进行,如:对讲机,对方说完话,你才可以听到,他说的内容全双工:发送内容与接收内容是可以同步进行的,如:电话,我们可以听着别人的话,也可以说出话,同时进行。
飞天加速计划·高校学生在家实践 续费任务文章
本人是软件开发专业,通过阿里云app首页了解到飞天加速计划·高校学生在家实践”活动通过两天的上手使用我认识到,使用一个ECS中的镜像系统需要以下几个基础步骤:1.选择镜像包并安装。2.通过PUTTY等软件来访问命令行模式系统。3.设置安全组,使得公网IP可以被访问。4.安装图形界面和VNC包,可以通过VNC等软件访问图形界面。5.更换时需要将已有镜像包,添加快照,从而创建自定义镜像,并选择其他镜像包更换。CENTOS6.5这是我安装的第一个镜像版本,也是阿里云官网上有视频教程的版本。第一次选择时没有设置密码就安装了镜像,发现之后赶紧设置了密码。随后发现无法使用SSH方式进入,原来设置密码后需要重启才能进入。重启后进入成功,通过原有的PUTTY以SSH形式访问,端口22,需要输入公网地址。随后进入PUTTY界面,输入用户名和密码进入命令行模式。教程推荐使用FileZilla通过sftp的方式传输管理文件,并且建议将Windows默认的文本编辑器改为vscode,这点确实很有必要。随后,设置了安全组,并且暂且开放所有端口并允许所有IP访问。下面是激动人心的一幕:为系统安装图形界面!我们选用了Gnome桌面+VNC一键包,并且设置了VNC连接密码,教程推荐了vnc viewer作为连接软件,实测比较好用。注意安装过程中要设置VNC密码。然后我们就可以用VNC方式连接CENTOS的图形界面辣,还可以在安卓手机和平板上连接,简单实用。安卓手机的SSH连接软件我使用了juiceSSH,界面友好且美观,很好用。至于VNC软件,我随便下载了一个bVNC,不太好用,但是也勉强,不知道微软的Microsoft Remote Desktop能否当做VNC使用。(实测不能,都不是一种连接方式)进入图形界面,打开命令行,突然发现字体重叠,上网搜索发现是字体问题导致的,于是下载了一个新的字体,更换了字体之后就正常了,顺带说一下,也就是新字体宽一点而已。CENTOS自带的python2.7,所以需要自己安装python3.6,这里安装的方式简述如下。WINDOWS SERVER2019WINDOWS系统简直差点折磨死我了,我一直无法用SSH的形式连接上去,VNC也不行,只能用官方的远程桌面连接了,进入后首先需要开启远程控制,并且关闭浏览器保护模式(差点烦死我了),这样就可以随意安装第三方软件了。然后可以安装SSH服务组件,虽然安装了也没连上。随后设置安全组,将RDP,SSH,HTTP都勾上,范围填0.0.0.0/0下载Microsoft Remote Desktop,就可以在电脑和手机端都连接上桌面了。至于ssh我还是没有解决。。。。。。。过两天来看,WIN可以说最省心了,但是也确实没啥用。。。。UBUNTU16.04 LAMP环境 PHP5.4.45这是我用的第一个LAMP环境,初始使用没有遇到太大问题。首先,我安装了一个桌面环境xfce,和之前用过的双系统中的UNITY桌面有很大不同,不过也勉强够用最后简单总结一下,阿里云的服务器听稳定,使用起来也简单,遇到不会的还可以找售后工程师解决,他们也会耐心的解决问题。
Java 并发编程
6、什么是线程组,为什么在 Java 中不推荐使用? ThreadGroup 类,可以把线程归属到某一个线程组中,线程组中可以有线程对象, 也可以有线程组,组中还可以有线程,这样的组织结构有点类似于树的形式。 为什么不推荐使用?因为使用有很多的安全隐患吧,没有具体追究,如果需要使 用,推荐使用线程池。7、为什么使用 Executor 框架? 每次执行任务创建线程 new Thread()比较消耗性能,创建一个线程是比较耗时、 耗资源的。 调用 new Thread()创建的线程缺乏管理,被称为野线程,而且可以无限制的创建, 线程之间的相互竞争会导致过多占用系统资源而导致系统瘫痪,还有线程之间的 频繁交替也会消耗很多系统资源。 接使用 new Thread() 启动的线程不利于扩展,比如定时执行、定期执行、定时 定期执行、线程中断等都不便实现。 8、在 Java 中 Executor 和 Executors 的区别? Executors 工具类的不同方法按照我们的需求创建了不同的线程池,来满足业务 的需求。 Executor 接口对象能执行我们的线程任务。 ExecutorService 接口继承了 Executor 接口并进行了扩展,提供了更多的方法我 们能获得任务执行的状态并且可以获取任务的返回值。 使用 ThreadPoolExecutor 可以创建自定义线程池。Future 表示异步计算的结果,他提供了检查计算是否完成的方法,以等待计算的 完成,并可以使用 get()方法获取计算的结果。9、如何在 Windows 和 Linux 上查找哪个线程使用的 CPU 时 间最长? 参考: http://daiguahub.com/2016/07/31/ 使用 jstack 找出消耗 CPU 最多的线程代码 / 10、什么是原子操作?在 Java Concurrency API 中有哪些原 子类(atomic classes)? 原子操作(atomic operation)意为”不可被中断的一个或一系列操作” 。 处理器使用基于对缓存加锁或总线加锁的方式来实现多处理器之间的原子操作。 在 Java 中可以通过锁和循环 CAS 的方式来实现原子操作。 CAS 操作—— Compare & Set,或是 Compare & Swap,现在几乎所有的 CPU 指令都支持 CAS 的原子操作。 原子操作是指一个不受其他操作影响的操作任务单元。原子操作是在多线程环境 下避免数据不一致必须的手段。 int++并不是一个原子操作,所以当一个线程读取它的值并加 1 时,另外一个线程 有可能会读到之前的值,这就会引发错误。 为了解决这个问题,必须保证增加操作是原子的,在 JDK1.5 之前我们可以使用同 步技术来做到这一点。到 JDK1.5,java.util.concurrent.atomic 包提供了 int 和 long 类型的原子包装类,它们可以自动的保证对于他们的操作是原子的并且不需 要使用同步。java.util.concurrent 这个包里面提供了一组原子类。其基本的特性就是在多线程 环境下,当有多个线程同时执行这些类的实例包含的方法时,具有排他性,即当 某个线程进入方法,执行其中的指令时,不会被其他线程打断,而别的线程就像 自旋锁一样,一直等到该方法执行完成,才由 JVM 从等待队列中选择一个另一个 线程进入,这只是一种逻辑上的理解。 原子类:AtomicBoolean,AtomicInteger,AtomicLong,AtomicReference 原子数组:AtomicIntegerArray,AtomicLongArray,AtomicReferenceArray 原子属性更新器:AtomicLongFieldUpdater,AtomicIntegerFieldUpdater, AtomicReferenceFieldUpdater 解决 ABA 问题的原子类:AtomicMarkableReference(通过引入一个 boolean 来反映中间有没有变过),AtomicStampedReference(通过引入一个 int 来累 加来反映中间有没有变过)
Java 并发编程
1、在 Java 中守护线程和本地线程区别? Java 中的线程分为两种:守护线程(Daemon)和用户线程(User)。任何线程都可以设置为守护线程和用户线程,通过方法 Thread.setDaemon(bool on);true 则把该线程设置为守护线程,反之则为用户线程。Thread.setDaemon() 必须在 Thread.start()之前调用,否则运行时会抛出异常。 两者的区别: 唯一的区别是判断虚拟机(JVM)何时离开,Daemon 是为其他线程提供服务,如果 全部的 User Thread 已经撤离,Daemon 没有可服务的线程,JVM 撤离。也可 以理解为守护线程是 JVM 自动创建的线程(但不一定),用户线程是程序创建的 线程;比如 JVM 的垃圾回收线程是一个守护线程,当所有线程已经撤离,不再产 生垃圾,守护线程自然就没事可干了,当垃圾回收线程是 Java 虚拟机上仅剩的线 程时,Java 虚拟机会自动离开。 扩展:Thread Dump 打印出来的线程信息,含有 daemon 字样的线程即为守护 进程,可能会有:服务守护进程、编译守护进程、windows 下的监听 Ctrl+break 的守护进程、Finalizer 守护进程、引用处理守护进程、GC 守护进程。 2、线程与进程的区别? 进程是操作系统分配资源的最小单元,线程是操作系统调度的最小单元。 一个程序至少有一个进程,一个进程至少有一个线程。 3、什么是多线程中的上下文切换? 多线程会共同使用一组计算机上的 CPU,而线程数大于给程序分配的 CPU 数量时, 为了让各个线程都有执行的机会,就需要轮转使用 CPU。不同的线程切换使用 CPU 发生的切换数据等就是上下文切换。4、死锁与活锁的区别,死锁与饥饿的区别? 死锁:是指两个或两个以上的进程(或线程)在执行过程中,因争夺资源而造成 的一种互相等待的现象,若无外力作用,它们都将无法推进下去。 产生死锁的必要条件:1、互斥条件:所谓互斥就是进程在某一时间内独占资源。2、请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。3、不剥夺条件:进程已获得资源,在末使用完之前,不能强行剥夺。 4、循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。 活锁:任务或者执行者没有被阻塞,由于某些条件没有满足,导致一直重复尝试, 失败,尝试,失败。 活锁和死锁的区别在于,处于活锁的实体是在不断的改变状态,所谓的“活”, 而 处于死锁的实体表现为等待;活锁有可能自行解开,死锁则不能。 饥饿:一个或者多个线程因为种种原因无法获得所需要的资源,导致一直无法执 行的状态。 Java 中导致饥饿的原因: 1、高优先级线程吞噬所有的低优先级线程的 CPU 时间。 2、线程被永久堵塞在一个等待进入同步块的状态,因为其他线程总是能在它之前 持续地对该同步块进行访问。3、线程在等待一个本身也处于永久等待完成的对象(比如调用这个对象的 wait 方 法),因为其他线程总是被持续地获得唤醒。5、Java 中用到的线程调度算法是什么? 采用时间片轮转的方式。可以设置线程的优先级,会映射到下层的系统上面的优 先级上,如非特别需要,尽量不要用,防止线程饥饿。
数据结构必知 --- 红黑树
1、什么是红黑树?红黑树是一棵二叉搜索树,并且这棵树实现了弱平衡(严格的平衡是对于树中任意节点的左右子树高度差不超过1),确保没有一条路径会比其他路径长出两倍。弱平衡是指任意节点到到其子树中的叶节点所经过的黑色节点数相同,也可以称为黑色平衡(因为严格平衡的二叉搜索树AVL,维护成本太高,所以退而求其次)。红黑树的每个节点上都有存储位表示节点的颜色,可以是红(Red)或黑(Black)。红黑树最坏情况可以在O(log n)时间内完成查找,插入和删除操作。2、为什么要引入红黑树?普通的二叉搜索树可能退化为链表的情况,查询的效率将大大降低。引入强平衡(树中任意节点的左右子树高度差不超过1),形如AVL树,树的维护成本太高。ps:windows对进程地址空间的管理用到了AVL树。红黑树是牺牲了严格的高度平衡的优越条件为代价(统计性能更高),它只要求部分地达到平衡要求,降低了对旋转的要求,从而提高了性能。相对于要求严格的AVL树来说,它的旋转次数少,插入数据分布比较好用AVL树,数据分布复杂用红黑树。3、红黑树的五大特性节点是红色或者是黑色根节点是黑色每个叶节点(NIL或空节点)是黑色每个红色节点的两个子节点都是黑色的(即不能有两个红节点相连)任意节点到其子树中的叶节点(NIL节点)所经过的黑色节点数相同(最重要)ps:注:红黑树引入了NIL节点,是一种虚拟节点,用于填充节点的左或右为空的位置,主要目的是便于判断从根节点到NIL节点,经过了多少黑节点。因此红黑树中的叶节点特指NIL节点,颜色必须是黑色。4、红黑树的插入和删除红黑树调整的两种方式:旋转(左旋和右旋):左旋:逆时针旋转红黑树的两个节点,使得父节点被自己的右孩子取代,而自己成为自己的左孩子。右旋:顺时针旋转红黑树的两个节点,使得父节点被自己的左孩子取代,而自己成为自己的右孩子。变色(可能会产生连锁反应,多节点变色,目的是维持性质5)添加操作(最多旋转两次):(1)将红黑树当作一颗二叉查找树,将节点插入。(2)将插入的节点着色为"红色"。ps:如果插入是黑色节点,破坏第五条性质。(3)通过一系列的旋转或着色等操作,使之重新成为一颗红黑树(满足红黑树的五个性质)。删除操作(最多旋转三次):(1)将红黑树当作一颗二叉查找树,将节点删除。(2)通过"旋转和重新着色"等一系列来修正该树,使之重新成为一棵红黑树。ps:插入和删除设计很多情况,可以参考维基百科学习。5、应用广泛用于C++的STL中,map和set都是用红黑树实现的.著名的linux进程调度Completely Fair Scheduler,用红黑树管理进程控制块,进程的虚拟内存区域都存储在一颗红黑树上,每个虚拟地址区域都对应红黑树的一个节点,左指针指向相邻的地址虚拟存储区域,右指针指向相邻的高地址虚拟地址空间.IO多路复用epoll的实现采用红黑树组织管理sockfd(事件块),以支持快速的增删改查.ngnix中,用红黑树管理timer,因为红黑树是有序的,可以很快的得到距离当前最小的定时器.java中TreeMap的实现.
Vue-Cli 脚手架安装教程
前言开发vue项目的时候一般是通过vue-cli脚手架进行开发。之所以成为脚手架就是因为他通过webpack搭建的开发环境直接生成开发所需要的基本模板,我们只需要在模板中进行开发即可。接下来详细记录下在自己的电脑上安装vue-cli脚手架的步骤以及问题。一.前提安装vue-cli首先需要在自己的电脑上安装node.js环境,可以通过node -v命令来查看自己的电脑是否安装了node.js。如果出现了node.js的版本信息,则node.js环境安装成功了,如果出现xx 不是内部命令,说明电脑上还没有node环境 ,可以通过node下载地址下载安装。然后通过npm -v命令查看自己npm的版本信息,注:vue-cli的安装,需要node.js的版本在6.9以上,npm的版本在 3.10以上。二.vue-cli的安装进行命令行工具,输入npm install --global vue-cli命令全局(--g或者--global表示的是全局)安装vue-cli。注:如果出现vue-cli · Failed to download repo vuejs-templates/webpack: connect ETIMEDOUT 13.250.177.223:443,那么是因为github的问题,解决办法:1.打开终端(cmd),输入命令:ping 192.30.253.112 发现连接超时;输入命令:ping github.com 显示超时。2.打开 hosts文件,地址:C:\Windows\System32\drivers\etc ?看是否是默认配置,如果不是,还原成默认配置。3.在终端输入命令:ping github.com 如果还是超时,则打开ping.chinaz.com/github.com, 搜索github的ip地址4.?然后在hosts文件中添加:192.30.253.112 github.com
151.101.88.249 github.global.ssl.fastly.net
复制代码在命令行输入 ping github.com,如果通了,就可以了这里的安装需要花费一点时间,这时候可以在桌面或者任意位置新建一个文件夹用于后面生成项目文件等待vue-cli安装成功之后,可以通过vue --version查看vue-cli有没有安装成功,如果安装成功了,cd+vueDemo的路径进入vueDemo文件夹内,输入命令vue init webpack my-vueproject,格式为vue init webpack +自定义的项目名称。等模板下载完成之后,开始配置项目然后通过npm install命令开始下载项目依赖用sublime或者vscode打开该项目,则项目的模板已经生成了。根据命令行界面提示的两个命令启动项目首先cd my-vueproject进行项目的文件夹下,然后npm run dev启动项目然后项目会自动开启一个8080的端口,并且出现如下界面则项目脚手架完成。注意:如果出现8080端口被占用的情况,可以在config文件夹下的index文件内修改port端口号:
PostgreSQL windows安装
下载完成运行安装包,安装组件界面中,“PostgreSQL Server”选项是必选的,“pgAdmin 4”是图形化管理工具,“Stack Builder”是一个安装工具,通过该工具可以安装很多与PostgreSQL相关的第三方插件和工具,“Command Line Tools”是命令行工具。安装过程中还会设置数据库超级用户密码界面注意:如果以前安装过此软件并已卸载,卸载时只会卸载数据库软件,数据库本身(如数据文件)不会被删除,再次安装时就不会出现数据库的超级用户密码设置界面,而是会直接使用原来的数据库。
我的ECS使用体验报告
写这篇文章是为了分享一下我最近使用ECS的体验报告自我介绍我是一名在读的软件工程的学生,因为我暑期学习了一些物联网的内容,准备做一个项目自己来学习,然后是需要有部署一个mqtt服务,用自己电脑的话得一直开着就很不方便,同学就推荐我使用云服务器,说阿里云的就不错。主要也是听说了有“飞天加速计划·高校学生在家实践”活动,优惠力度这么大,自然是不能放过的。使用体验使用起来还是挺方便的,我本来是选择了windows系统,选完之后发现我要部署的mqtt服务器在linux系统功能更多,好在阿里云这边更换操作系统特别方便,速度也快,这要是我用自己电脑重装系统都要好久,然后我就选择了ubuntu用来部署mqtt 服务的。在过程中,我以为1M的带宽不会太快,可是实际在下载的时候速度还是很快的。部署成功后,我发现无法访问,在查看教程后,原来是需要设置安全组,后来还遇是有点问题,是因为我使用了宝塔面板,所以还要在宝塔面板那边开放一下端口。 阿里云的各项功能都做的很好,最让我喜欢的是,有很多教程,对于我们这些第一次使用云服务的人来说,帮助特别的大。然后也不用担心安全性的问题,阿里云会帮忙检测安全问题,然后提醒我们,虽然我这个没有什么重要的东西,他还是给我保护的很好,这点必须给好评。收获我平时都是使用windows系统,对linux系统特别的不熟悉,作为学计算机的学生,我是很不合格的。在之前都主观觉得Linux很难用,不仅是因为它的系统和Windows有许多不同,还觉得虚拟机麻烦,电脑配置也不是很好使用虚拟机会卡,我就很不喜欢去用,就没怎么接触,这次使用esc的话,让我对linux 系统更加的熟悉。 最后希望阿里云越来越好,同时我也希望我能通过ECS成为一个更好的程序员。
飞天加速计划初体验
我是一名来自大二的学生,学习的是软件技术专业。通过老师推荐了解到“飞天加速计划·高校学生在家实践”活动,它给我提供了一个可以学习的大平台。我认为这个飞天加速计划对于我这样的大学生帮助真是太大了,我觉得这是个良好的平台能够更好的让我进行实践,通过云服务器远端部署自己的项目就是一件非常重要的事情。 之前因为也学过Linux,使用的是CentOS7的操作系统,但是由于在本机上通过VMWare开启虚拟机,过程相当的缓慢繁琐,且在本机上部署虚拟机其实也没有什么真正使用服务器的实感,因此在通过一些与服务器有关的视频及博客教程中,了解到了阿里云服务器,然后发现了阿里云对于高校学生的优惠服务---飞天加速计划,这令我相当惊喜。 在完成了相关的前置任务后,我成功领取到了ECS的限期免费使用权,通过阿里云附带的详细的有关ECS的实例c创建部署的帮助文档引导后,成功创建了ECS实例,并通过windows下的XShell工具,远程地连接上了我创建的ECS的实例,在XShell中一切命令都会如实地操控我的远端服务器,至此,我才真正感觉到了,哦,原来云服务器是这种感觉! 阿里云非常好,为祖国的科技人才成创造出了一个免费的平台,供广大网友和各路人才进行使用。在领取之前还会有一个教程和简单的测试,以便更好的使用。领取服务器之后,立马连接上使用一番。我还是很推荐远程操作工具的Xshell7的,这个软件不仅支持中文,而且完全免费,并且功能非常强大。连接之后第一件事是什么,当然是装宝塔了!装宝塔面板的速度很快,打开面板的速度简直是秒开,速度很快,宝塔一键部署的软件5分钟不到就装好了,真的很棒。 对于程序员或者对编程感兴趣的人来说,拥有自己的云服务器,通过远端部署自己的项目,无论是博客也好,还是其他什么也好,都是一件相当酷的事情,阿里云的飞天加速计划让我初步体验了云服务器的使用,也希望更多的同学能够接触到“云”,有自己的云上之家。
服务器使用
我是电气专业的,现在大三,刚开始接触云服务器。一切的起源是我在跟B站的一名UP主学习一个泰拉瑞亚联机教程,里边需要用到服务器,UP主使用的服务器也是阿里云服务器,所以就开始去了解阿里云服务器。在官网的主界面看到飞天加速计划·高校学生在家实践这个活动,对于我等学生党来说,真的是很大一个福利,就参加学习实践一下。云服务器一般都会安装Linux操作系统,它不同于平常使用的Windows,命令行操作是它的灵魂所在,虽然也可以安装有操作界面的版本,但既然是要学习云服务器,学习Linux,最好还是直接学习它的核心所在,乖乖的使用命令行的方式进行操作。我安装的是Ubuntu 20.04最新版本,按照某位老师所说,只有新手才会经常追求最新版本的软件,应为新版本意味着与可能会有Bug,大公司企业对于操作系统的第一要求是稳定性和可靠性。这些版本的迭代,功能越来越强大,但它的核心基本不变,所以不论哪个版本,对于初学者来说都是足够的。操作云服务器,一般用到远程控制工具,例如短小精悍的PUTTY,或者国产软件Finalshell,当然还有很多其他的相关软件,我目前接触使用的也就是这两个。我目前在学习MQTT协议,安装网上教程首先在Linux中安装EMQ,我使用的是Shell命令直接安装的方式,很轻松就安装成功。然后是购买域名,申请SSL证书,域名解析,安装证书,域名备案(备案需要云服务器还剩余有三个月的使用期才可以,比如我是使用该计划赠送的云服务器,目前也就两个星期的时间,是不可以进行备案的),当然也是需要实名认证的,等等。我个人比较喜欢物联网,嵌入式这些东西,一点一点的接触,感觉需要学的东西真的很多,希望借助这次活动,能够对云服务器和Linux操作系统有更深的一个了解。