前端面试题:同步和异步的区别?

前端面试题:同步和异步的区别?,第1张

举个例子:普通B/S模式(同步)AJAX技术(异步)

同步:提交请求 >>等待服务器处理 >>处理完毕返回,这个期间浏览器不能干任何事。

异步:请求通过事件触发 >>服务器处理(这时浏览器仍然可以运作其它事情) >>处理完毕

普通B/S模式:浏览器/服务器模式。

Ajax技术:大概意思浏览器可以发出HTTP请求与接收HTTP响应

同步是阻塞模式,异步是非阻塞模式。

我的理解:

同步是指两个线程的运行是相关的,其中一个线程要阻塞等待另一个线程的运行。

异步是两个线程毫无相关,自己运行自己的。

同步:发送方付出数据后,等待接收方响应后才发下一个数据包的通讯方式。

异步:发送方发出数据后,不等的接收方的响应,接着发送下一个数据包的通讯方式。

我的理解

同步: 对讲机 。A和B通话,A等待B的回应,A再继续说。

A:“呼叫B哥,呼叫B哥... 听到请回答?”

B:“收到!收到!完毕”

A:“你妈妈喊你回家吃饭,完毕。”

B:“... 收到。通话结束”

异步:我用qq或者微信跟朋友聊天 发消息 聊天。

参考:

http://blog.chinaunix.net/uid-21411227-id-1826898.html

同步和异步是开发技术中的两个概念,计算机通过解析和运行程序完成相应的操作。在程序执行过程中会涉及同时处理多个任务或者同一时间只处理一个任务的情况。在前面的章节中我们介绍过什么是进程和线程,一个进程中包含多个执行任务的线程。

以用户登录为例,登录任务是在一个登录线程中执行的,登录任务执行过程中除了验证用户名和密码是否正确外,还需要处理其他子任务,例如从服务器获取用户信息,更新本地缓存信息等。这些子任务通常会在新开辟的子线程里执行。执行登录的线程可以称为主线程,执行获取用户信息的线程称为子线程。在一个登录操作过程中分别执行两个任务,这个过程就叫作异步处理。异步处理不会造成线程阻塞,相当于各自处理各自的任务。如果所有的任务都在一个线程中处理,那就会出现资源占用过多和响应时间过长的情况,例如我们在使用一些安卓APP时偶尔会出现应用程序闪退的情况,这有可能是因为出现了线程死锁。

同步处理比较好理解,就是同一时间只执行一个简单任务,任务处理完后再执行第二个任务,同步处理适用于一些顺序执行的任务,例如流水线处理就是典型的同步处理,流水线上的一个环节处理完成后再处理下一个环节的任务。

Rsync

非常适合在两台机器之间快速同步大型、复杂的目录,例如论坛的附件目录。再配合

ssh

,则安全性也有保证,且可以利用

ssh

public

key

cron

来进行自动定时同步。

说明:两台机器分别为

localhost

remotehost

用户分别为

localuser

remoteuser。

环境:FreeBSD

4.9

FreeBSD

6.1

代码如下

设置

ssh

public

key

认证

$ssh-keygen

-t

dsa

-b

2048

生成所需的密钥

$scp

/home/localuser/.ssh/id_dsa.pub

remoteuser@remotehost:/home/remoteuser/.ssh/localuser_id_dsa.pub

将公钥拷贝至

remotehost

$ssh

remoteuser@remotehost

登录到?端

代码如下

$cd

.ssh/

cat

localuser_id_dsa.pub

>>

authorized_keys

至此,设置

ssh

认证完毕。

设置

rsync

确认两端机器都安装

rsync

freeBSD

ports

,安装非常方便。

写个脚本名为

backup.sh

,内容如下:

代码如下

#!/bin/sh

RSYNC=/usr/local/bin/rsync

SSH=/usr/bin/ssh

KEY=/home/localuser/.ssh

/id_rsa

RUSER=remoteuser

RHOST=remotehost

RPATH=/remote/dir

LPATH=/this/dir

$RSYNC

-az—delte

-e

“$SSH

-i

$KEY”

$RUSER@$RHOST:$RPATH

$LPATH

-a

选项相当于选项

-rlptgoD

。简单来讲,此选项可递归并将几乎所有的东西同步过去,非常有用。注意的是,

-a

默认不会保存

hardlinks

,不过可以单独用

-H

选项来实现。

-z

选项在传输中压缩文件,这无疑加快同步速度。

-delete

选项会删除接受方一些不应存在的文件,此文件在发送方已经被删除,这将保持目录完全同步。

cron

每天凌晨1点来跑这个脚本

代码如下

$crontab

-e

0

1

*

*

*

/home/localuser/bin/backup.sh

友情提示

rsync是没有自动启动同步功能了,如果我们要定时去备份一个网站数据我们就需要用到定时功能了,上面的例子来使用到了linux中$crontab命令来定时执行备份数据脚本了哦。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/305660.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存