哪里有问题?这个程序?
程序功能:输入一行字母,将字母加密输出,如输入a,则输出c。
这篇文章主要介绍了redis分布式锁的8大坑总结梳理,使用redis的分布式锁,我们首先想到的可能是setNx命令,文章围绕setNx命令展开详细的内容介绍,感兴趣的小伙伴可以参考一下
在分布式系统中,由于redis分布式锁相对于更简单和高效,成为了分布式锁的首先,被我们用到了很多实际业务场景当中。
但不是说用了redis分布式锁,就可以高枕无忧了,如果没有用好或者用对,也会引来一些意想不到的问题。
今天我们就一起聊聊redis分布式锁的一些坑,给有需要的朋友一个参考。
使用redis的分布式锁,我们首先想到的可能是setNx
命令。
容易,三下五除二,我们就可以把代码写好。
这段代码确实可以加锁成功,但你有没有发现什么问题?
加锁操作
和后面的设置超时时间
是分开的,并非原子操作
。
假如加锁成功,但是设置超时时间失败了,该lockKey就变成永不失效。假如在高并发场景中,有大量的lockKey加锁成功了,但不会失效,有可能直接导致redis内存空间不足。
那么,有没有保证原子性的加锁命令呢?
答案是:有,请看下面。
上面说到使用setNx
命令加锁操作和设置超时时间是分开的,并非原子操作。
而在redis中还有set
命令,该命令可以指定多个参数。
NX
:只在键不存在时,才对键进行设置操作。
set
命令是原子操作,加锁和设置超时时间,一个命令就能轻松搞定。
使用set
命令加锁,表面上看起来没有问题。但如果仔细想想,加锁之后,每次都要达到了超时时间才释放锁,会不会有点不合理?加锁后,如果不及时释放锁,会有很多问题。
分布式锁更合理的用法是:
那么问题来了,如何释放锁呢?
需要捕获业务代码的异常,然后在finally
中释放锁。换句话说就是:无论代码执行成功或失败了,都需要释放锁。
此时,有些朋友可能会问:假如刚好在释放锁的时候,系统被重启了,或者网络断线了,或者机房断点了,不也会导致释放锁失败?
这是一个好问题,因为这种小概率问题确实存在。
但还记得前面我们给锁设置过超时时间吗?即使出现异常情况造成释放锁失败,但到了我们设定的超时时间,锁还是会被redis自动释放。
但只在finally中释放锁,就够了吗?
做人要厚道,先回答上面的问题:只在finally中释放锁,当然是不够的,因为释放锁的姿势,还是不对。
答:在多线程场景中,可能会出现释放了别人的锁的情况。
有些朋友可能会反驳:假设在多线程场景中,线程A获取到了锁,但如果线程A没有释放锁,此时,线程B是获取不到锁的,何来释放了别人锁之说?
答:假如线程A和线程B,都使用lockKey加锁。线程A加锁成功了,但是由于业务功能耗时时间很长,超过了设置的超时时间。这时候,redis会自动释放lockKey锁。此时,线程B就能给lockKey加锁成功了,接下来执行它的业务操作。恰好这个时候,线程A执行完了业务功能,接下来,在finally方法中释放了锁lockKey。这不就出问题了,线程B的锁,被线程A释放了。
我想这个时候,线程B肯定哭晕在厕所里,并且嘴里还振振有词。
那么,如何解决这个问题呢?
不知道你们注意到没?在使用set
命令加锁时,除了使用lockKey锁标识,还多设置了一个参数:requestId
,为什么要需要记录requestId呢?
答:requestId是在释放锁的时候用的。
在释放锁的时候,先获取到该锁的值(之前设置值就是requestId),然后判断跟之前设置的值是否相同,如果相同才允许删除锁,返回成功。如果不同,则直接返回失败。
换句话说就是:自己只能释放自己加的锁,不允许释放别人加的锁。
答:如果用userId的话,对于请求来说并不唯一,多个不同的请求,可能使用同一个userId。而requestId是全局唯一的,不存在加锁和释放锁乱掉的情况。
此外,使用lua脚本,也能解决释放了别人的锁的问题:
lua脚本能保证查询锁是否存在和删除锁是原子操作,用它来释放锁效果更好一些。
说到lua脚本,其实加锁操作也建议使用lua脚本:
这是redisson框架的加锁代码,写的不错,大家可以借鉴一下。
有趣,下面还有哪些好玩的东西?
上面的加锁方法看起来好像没有问题,但如果你仔细想想,如果有1万的请求同时去竞争那把锁,可能只有一个请求是成功的,其余的9999个请求都会失败。
在秒杀场景下,会有什么问题?
答:每1万个请求,有1个成功。再1万个请求,有1个成功。如此下去,直到库存不足。这就变成均匀分布的秒杀了,跟我们想象中的不一样。
比如,有两个线程同时上传文件到sftp,上传文件前先要创建目录。假设两个线程需要创建的目录名都是当天的日期,比如:,如果不做任何控制,直接并发的创建目录,第二个线程必然会失败。
这时候有些朋友可能会说:这还不容易,加一个redis分布式锁就能解决问题了,此外再判断一下,如果目录已经存在就不创建,只有目录不存在才需要创建。
一切看似美好,但经不起仔细推敲。
来自灵魂的一问:第二个请求如果加锁失败了,接下来,是返回失败,还是返回成功呢?
显然第二个请求,肯定是不能返回失败的,如果返回失败了,这个问题还是没有被解决。如果文件还没有上传成功,直接返回成功会有更大的问题。头疼,到底该如何解决呢?
在规定的时间,比如500毫秒内,自旋不断尝试加锁(说白了,就是在死循环中,不断尝试加锁),如果成功则直接返回。如果失败,则休眠50毫秒,再发起新一轮的尝试。如果到了超时时间,还未加锁成功,则直接返回失败。
好吧,学到一招了,还有吗?
我们都知道redis分布式锁是互斥的。假如我们对某个key加锁了,如果该key对应的锁还没失效,再用相同key去加锁,大概率会失败。
没错,大部分场景是没问题的。
为什么说是大部分场景呢?
假设在某个请求中,需要获取一颗满足条件的菜单树或者分类树。我们以菜单为例,这就需要在接口中从根节点开始,递归遍历出所有满足条件的子节点,然后组装成一颗菜单树。
需要注意的是菜单不是一成不变的,在后台系统中运营同学可以动态添加、修改和删除菜单。为了保证在并发的情况下,每次都可能获取最新的数据,这里可以加redis分布式锁。
加redis分布式锁的思路是对的。但接下来问题来了,在递归方法中递归遍历多次,每次都是加的同一把锁。递归第一层当然是可以加锁成功的,但递归第二层、第三层...第N层,不就会加锁失败了?
递归方法中加锁的伪代码如下:
如果你直接这么用,看起来好像没有问题。但最终执行程序之后发现,等待你的结果只有一个:出现异常
。
因为从根节点开始,第一层递归加锁成功,还没释放锁,就直接进入第二层递归。因为锁名为lockKey,并且值为requestId的锁已经存在,所以第二层递归大概率会加锁失败,然后返回到第一层。第一层接下来正常释放锁,然后整个递归方法直接返回了。
这下子,大家知道出现什么问题了吧?
没错,递归方法其实只执行了第一层递归就返回了,其他层递归由于加锁失败,根本没法执行。
那么这个问题该如何解决呢?
我们以redisson框架为例,它的内部实现了可重入锁的功能。
古时候有句话说得好:为人不识陈近南,便称英雄也枉然。
我说:分布式锁不识redisson,便称好锁也枉然。哈哈哈,只是自娱自乐一下。
由此可见,redisson在redis分布式锁中的江湖地位很高。
上面的代码也许并不完美,这里只是给了一个大致的思路,如果大家有这方面需求的话,以上代码仅供参考。
接下来,聊聊redisson可重入锁的实现原理。
加锁主要是通过以下脚本实现的:
释放锁主要是通过以下脚本实现的:
再次强调一下,如果你们系统可以容忍数据暂时不一致,有些场景不加锁也行,我在这里只是举个例子,本节内容并不适用于所有场景。
如果有大量需要写入数据的业务场景,使用普通的redis分布式锁是没有问题的。
但如果有些业务场景,写入的操作比较少,反而有大量读取的操作。这样直接使用普通的redis分布式锁,会不会有点浪费性能?
我们都知道,锁的粒度越粗,多个线程抢锁时竞争就越激烈,造成多个线程锁等待的时间也就越长,性能也就越差。
所以,提升redis分布式锁性能的第一步,就是要把锁的粒度变细。
众所周知,加锁的目的是为了保证,在并发环境中读写数据的安全性,即不会出现数据错误或者不一致的情况。
但在绝大多数实际业务场景中,一般是读数据的频率远远大于写数据。而线程间的并发读操作是并不涉及并发安全问题,我们没有必要给读操作加互斥锁,只要保证读写、写写并发操作上锁是互斥的就行,这样可以提升系统的性能。
我们以redisson框架为例,它内部已经实现了读写锁的功能。
将读锁和写锁分开,最大的好处是提升读操作的性能,因为读和读之间是共享的,不存在互斥性。而我们的实际业务场景中,绝大多数数据操作都是读操作。所以,如果提升了读操作的性能,也就会提升整个锁的性能。
下面总结一个读写锁的特点:
此外,为了减小锁的粒度,比较常见的做法是将大锁:分段
。
在java中ConcurrentHashMap
,就是将数据分为16段
,每一段都有单独的锁,并且处于不同锁段的数据互不干扰,以此来提升锁的性能。
放在实际业务场景中,我们可以这样做:
比如在秒杀扣库存的场景中,现在的库存中有2000个商品,用户可以秒杀。为了防止出现超卖的情况,通常情况下,可以对库存加锁。如果有1W的用户竞争同一把锁,显然系统吞吐量会非常低。
为了提升系统性能,我们可以将库存分段,比如:分为100段,这样每段就有20个商品可以参与秒杀。
在秒杀的过程中,先把用户id获取hash值,然后除以100取模。模为1的用户访问第1段库存,模为2的用户访问第2段库存,模为3的用户访问第3段库存,后面以此类推,到最后模为100的用户访问第100段库存。
如此一来,在多线程环境中,可以大大的减少锁的冲突。以前多个线程只能同时竞争1把锁,尤其在秒杀的场景中,竞争太激烈了,简直可以用惨绝人寰来形容,其后果是导致绝大数线程在锁等待。现在多个线程同时竞争100把锁,等待的线程变少了,从而系统吞吐量也就提升了。
需要注意的地方是:将锁分段虽说可以提升系统的性能,但它也会让系统的复杂度提升不少。因为它需要引入额外的路由算法,跨段统计等功能。我们在实际业务场景中,需要综合考虑,不是说一定要将锁分段。
我在前面提到过,如果线程A加锁成功了,但是由于业务功能耗时时间很长,超过了设置的超时时间,这时候redis会自动释放线程A加的锁。
有些朋友可能会说:到了超时时间,锁被释放了就释放了呗,对功能又没啥影响。
答:错,错,错。对功能其实有影响。
通常我们加锁的目的是:为了防止访问临界资源时,出现数据异常的情况。比如:线程A在修改数据C的值,线程B也在修改数据C的值,如果不做控制,在并发情况下,数据C的值会出问题。
为了保证某个方法,或者段代码的互斥性,即如果线程A执行了某段代码,是不允许其他线程在某一时刻同时执行的,我们可以用synchronized
关键字加锁。
但这种锁有很大的局限性,只能保证单个节点的互斥性。如果需要在多个节点中保持互斥性,就需要用redis分布式锁。
做了这么多铺垫,现在回到正题。
假设线程A加redis分布式锁的代码,包含代码1和代码2两段代码。
由于该线程要执行的业务操作非常耗时,程序在执行完代码1的时,已经到了设置的超时时间,redis自动释放了锁。而代码2还没来得及执行。
此时,代码2相当于裸奔的状态,无法保证互斥性。假如它里面访问了临界资源,并且其他线程也访问了该资源,可能就会出现数据异常的情况。(PS:我说的访问临界资源,不单单指读取,还包含写入)
那么,如何解决这个问题呢?
答:如果达到了超时时间,但业务代码还没执行完,需要给锁自动续期。
我们可以使用TimerTask
类,来实现自动续期的功能:
获取锁之后,自动开启一个定时任务,每隔10秒钟,自动刷新一次过期时间。这种机制在redisson框架中,有个比较霸气的名字:watch dog
,即传说中的看门狗
。
当然自动续期功能,我们还是优先推荐使用lua脚本实现,比如:
需要注意的地方是:在实现自动续期功能时,还需要设置一个总的过期时间,可以跟redisson保持一致,设置成30秒。如果业务代码到了这个总的过期时间,还没有执行完,就不再自动续期了。
自动续期的功能是获取锁之后开启一个定时任务,每隔10秒判断一下锁是否存在,如果存在,则刷新过期时间。如果续期3次,也就是30秒之后,业务方法还是没有执行完,就不再续期了。
上面花了这么多篇幅介绍的内容,对单个redis实例是没有问题的。
but,如果redis存在多个实例。比如:做了主从,或者使用了哨兵模式,基于redis的分布式锁的功能,就会出现问题。
假设redis现在用的主从模式,1个master节点,3个slave节点。master节点负责写数据,slave节点负责读数据。
本来是和谐共处,相安无事的。redis加锁操作,都在master上进行,加锁成功后,再异步同步给所有的slave。
突然有一天,master节点由于某些不可逆的原因,挂掉了。
这样需要找一个slave升级为新的master节点,假如slave1被选举出来了。
如果有个锁A比较悲催,刚加锁成功master就挂了,还没来得及同步到slave1。
这样会导致新master节点中的锁A丢失了。后面,如果有新的线程,使用锁A加锁,依然可以成功,分布式锁失效了。
那么,如何解决这个问题呢?
在这里我们以主从为例,架构图如下:
从上面可以看出,使用Redlock算法,确实能解决多实例场景中,假如master节点挂了,导致分布式锁失效的问题。
但也引出了一些新问题,比如:
由此可见,在实际业务场景,尤其是高并发业务中,RedissonRedLock其实使用的并不多。
在分布式环境中,CAP是绕不过去的。
CAP指的是在一个分布式系统中:
这三个要素最多只能同时实现两点,不可能三者兼顾。
如果你的实际业务场景,更需要的是保证数据一致性。那么请使用CP类型的分布式锁,比如:zookeeper,它是基于磁盘的,性能可能没那么好,但数据一般不会丢。
如果你的实际业务场景,更需要的是保证数据高可用性。那么请使用AP类型的分布式锁,比如:redis,它是基于内存的,性能比较好,但有丢失数据的风险。
其实,在我们绝大多数分布式业务场景中,使用redis分布式锁就够了,真的别太较真。因为数据不一致问题,可以通过最终一致性方案解决。但如果系统不可用了,对用户来说是暴击一万点伤害。
到此这篇关于redis分布式锁的8大坑总结梳理的文章就介绍到这了,更多相关redis分布式锁坑内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
各种与国家公派项目相关的流程手续可随时参加国家留学基金管理委员会网页如下:
国家留学基金管理委员会网页:
中美富布赖特硕士生项目申请常见问题
一、美方申请书填写问题
一般来说,中国的申请者没有“middle name”,所以请保留空白不填。
3. 我的姓名的拼音一定要与我的护照上的姓名拼音一致吗?是的。
4. 我现在还没有护照,我的姓名中有“吕”和“绿”等字,相关的拼音该是什么?
公安部对护照中“吕”的拼音拼写做了统一规定,申请人首次申领护照时,吕的拼音应写成LYU。据介绍,除“吕”字外,只要姓名中声母为“L”、“N”,韵母为“ü”的,韵母统一都要写成“YU”。如:“女”字的拼音改为“NYU”,“绿”字拼音改为“LYU”。所以,请你按照上述拼音方式填写相关姓名的拼音。
5. 第10项可以留空白不填吗?
其中的三个问题都必须回答。如果其中的任何一个回答是“yes”,你应该没有资格申请本项目。如果你不清楚该怎么填,请联系我们。
7. 第12、13项为什么后面我填的没有显示出来?
请注意你的回答不要超过5行。如果超过5行,其后的各行不会在申请系统中显示出来。请务必将你的回答限制在5行之内。
请不要把你的学位或证书的中文填写上去,请填写你的学位或证书的英文翻译。请注意:在本申请系统上中文会被显示为“乱码”,所以本申请中任何部分都不能出现中文。
请一定注意按照网上申请表上的要求对你文本设置“Margins”,否则你的文字或者显示不全,或者与申请表上面的“Headings”重叠。另外,请在写作文本时,尽可能完全使用英语和英文字体 (English fonts),否则有可能系统不认可非英语符号或文字,造成不能显示或显示错误。
是指你的身份证号码。因为身份证号码很长,不能完整填上去,请留空格。
12. 项目申请表26、31中电话号码中如填手机号码,所留空白不够,填不下,怎么办?
请不用先填“86”,选择在()里填上你的手机号码的前三位,然后再填其它号码数字即可。其它地方需要填写电话号码的可以据此处理。
13. 上传文件有什么要求吗?
网上申请系统中可以上传你的CV,Transcript 和其它Supplemental Materials,但这些文件在每次上传时这能作为一个文件上传,文件的大小一般不能超过2MB。建议大家再上传每一栏时,将文件先扫描成不超过2MB的PDF文件后再传。
上传内容中如果是有中文及英文翻译的,请按先中文后英文顺序排列扫描后上传。
因为今年我们将继续进行电子评审,请按要求上传,并保证上传文件的真实性和清晰度。
14. 我的毕业及学位证书等应上传到哪里?
15. 如果我已经有了有效的护照(有效期是至2016年12月及以后的),请问需要扫描上传吗?需要扫描哪一页?
是的。请填好后与你相应的学习成绩单一起按顺序扫描后上传到Transcript页。
17. 我已经有了正式的语言成绩,请问应上传到哪里?
请将正式语言成绩单的正面扫描后上传到Test Scores页。 请注意:不用扫描正式语言成绩单背面。
18. 我的推荐人不是在网上提交的推荐信。现在推荐信在我这里,我需要将它们上传到哪里?请扫描后上传到Additional Information Page页。
19. 我网上提交申请书后,如果发现有错需要改正,或需要补充信息,该怎么办?
请发邮件给Fulbright.MA.China@iie.org,告知你的姓名的拼音。你可以要求将你的申请书退回申请状态,自己修改或补充。
20. 在打印填好的申请书时, 打印出来的水印部分过浓怎么办?
21. 我只引用了电影中的一句话,没有说是什么电影,就构成抄袭(plagiarism)吗?
是的,哪怕是只引用了一句话。在你的申请中引用别人和其它任何来源的材料,等等,而不注明来源,均构成抄袭,将导致申请资格的丧失;即使获得提名,也会因此被取消资格。
22. 我从网上复制了一段有关内容,但没有注明相关网站,有问题吗?
是的。这样做同样构成抄袭,将导致申请资格的丧失;即使获得提名,也会因此被取消资格。
过去的申请中,我们曾经发现个别的申请人复制了自己单位网站的英文部分内容,但没有注明,这导致了申请人的申请受到影响,最终没有获得提名。
23. 我签名时是名在前还是姓在前?
我们建议名在前,但你也可以按照你的习惯将姓签在前。不过,你的签名顺序应保持一致,不要一会儿名在前,一会儿又姓在前。
24. 我签名用中文可以吗?
尽管我们不绝对说不能用中文。考虑到在国外,如果你想用中文,最好和你的姓名的拼音并列签名。
25. 在一些申请材料的表格中要求签名,在签名后面,要求Name(Printed),难道这是要求我将自己的姓名打印上去吗?我试了多次,都打印不上去,怎么办?
在英文表格上,”printed” 是与 “cursive”(草书)相对的,因此,你无需把自己的姓名打印上去,你要做的是将你的姓名(的拼音)用比较工整的大写字母写上去即可。
本表格由申请者个人根据自己的学习成绩相关内容来填,无需学校填写。表格上有空格如无相关信息填写,可填“N/A.”本表格无需学校或单位盖公章。
是的。你读的每个学位都需填写一张相应的课程评估体系说明。
指的是你学校用的考试成绩制,如0-100,1-5, 或者A,B,C,D,F。查你的成绩单即可知道。
29. 项目申请表中有一项“Writing Sample”,必须提供吗?不是必须的。
30. 我的“Writing Sample”是中文的,可以上传吗?不可以,一定是英文的。
是的。请注意,作为成人,如果你已经工作了,本表格中的“Family Funds”就不适用于你,请你根据自己的经济情况如实填“Your Own Funds”。“Family Funds”指的是未成年和未工作的人的家庭资金(比如父母)。
32. 我现在还没有确定想去的学校和硕士项目,University Preferences 表格可以不填吗?不填会有影响吗?
如果你现在还没有确定想去的学校和硕士项目,本表格可以不填,不会影响你的申请和评选。
33. 在选择硕士项目时,我发现有的项目要求一些基本的课程或专业背景,而我没有,我可以选择这些项目吗?
原则上,我们不建议你选择这些项目,因为被录取的几率很小或根本没有可能。请在相关的其他项目中选择符合你专业背景和工作经历的项目。
34. MA项目是一年期项目吗?我看到有的MA项目是三年的,我可以申请吗?
美国院校的MA项目有一年、两年和三年的,所以我们的MA项目可以是一年的,也可以是一年以上的,但是,我们的MA项目不支持三年的项目。在美国院校中,同样的专业,可以很容易选择到两年或一年期项目,请你在一年或两年项目中做选择。
二、申请资格问题
1、 请问什么人可以申请本项目?
根据美方与中方达成的协议,今年在中国大陆,有两部分的人有资格申请本项目,一是 经中美双方确定的15个部委(教育部、卫生部、环境保护部、农业部、水利部、国家地震局、国家食品药品监督管理局、国家林业局、中国气象局、国家海洋局 国家发展和改革委员会、财政部、人力资源和社会保障部、科学技术部、民政部)的公务员可以申请。申请者也必须得到相关单位领导的推荐;二是19所院校(北京大学、清华大学、中国农业大学、北京师范大学、天津大学、复旦大学、同济大学、华东师范大学、浙江大学、南京大学、江南大学、华中科技大学、南京农业大学、华中农业大学、哈尔滨工业大学、西北农林科技大学、东南大学、湖南大学、重庆大学)相关专业的在校大学三年级(四年制)学生在得到学校推荐的情况下有资格申请。具体申请条件和要求请到学校相关部门查询。
2、我符合其它条件,但年龄超过了35岁,请问可以申请吗?
根据相关的规定,你不可以申请本项目。
3、托福、雅思学术类(即A类)成绩有规定吗?
有。托福(IBT网考)不低于95分;雅思学术类不低于6.5,且其中口语单项不低于5.5。
4、我申请时还没有有效的托福、雅思学术类(即A类)成绩,可以用其它成绩代替吗?如果不能代替,就不能申请吗?
有效的托福、雅思成绩是学校安置必须的,不能用其它,比如国内英语考试成绩代替,因为美国学校不承认除托福、雅思外的成绩。但是,这并不意味着你就失去了申请资格,你同样可以申请,然后按下面的规定参加考试。
本项目今年的有效的托福、雅思成绩必须是在2014年10月1日后考试的。凡未参加上述考试或无有效成绩的申请人需尽快报名参加其中之一的考试,考试日期 不得晚于2015年7月15日。请将考试日期填在申请表的24项,并在考试成绩网上可查询时,将成绩发至Fulbright.MA.China@iie.org。否则,你将被认定为材料不全,失去被邀请面试的机会。
5、我们单位和学校推荐我申请的时间较晚,现在发现7月15日前考试已经没有考位,怎么办?可否推迟考试?
这种情况确实存在,但我们不能推迟要求的考试时间。因此,请你在单位和学校做出决定前就参加考试,否则,尽管单位和学校推荐了,你也可能因为没有有效的语言成绩不能获得面试机会。
6、有些美国院校的MA项目没有明确是否接受雅思成绩,或者有的明确只接受托福成绩,我还可以考雅思吗?或者,我一定要考托福吗?
如果美国院校的MA项目明确只接受托福成绩,那你就应该考托福。如果没有明确是否接受雅思成绩,你可以发邮件去咨询。据我们了解,美国的学校越来越多地接受雅思成绩,所以你主动咨询是很值得的。
7、我需要考GRE或其它的考试如GMAT吗?
多数美国的硕士项目是需要申请者有GRE或 GMAT考试成绩的,请你根据你的专业和美国学校在这些硕士项目的一般要求来思考是否参加相应的考试。如果之前参加过相关的考试,且成绩还在有效期内(必须在2010年10月1日以后),可以用作申请。
8、有些美国的MA项目上说如有一定的工作年限,GRE等可以免考。在这种情况下,我可以不考吗?
建议你如有可能还是参加GRE等考试。首先,这个硕士项目不一定最适合你,或者这个项目最终没有录取你,而别的项目还需要GRE等成绩;其次,很多考过GRE的申请者都认为,考GRE的过程对他们以后的硕士项目学习很有帮助。
9、什么领域可以申请本项目?
选派资助学科应为中美两国重点交流领域,具体领域包括:环境保护,粮食安全和食品安全、农业、公共卫生、减灾防灾,及上述领域的公共政策及法规制定和实施。
10、我申请的硕士项目的英文名称不是“MA”,而是“MPA,MPH”,可以吗?
硕士项目只要符合上述领域即可,不一定是“MA”。
三、材料准备问题
(由于本年度申请阶段无需提交纸质材料,多数材料需准备好了按要求扫描,请按下面问题回答准备材料)
1、如果推荐人不是网上提交,但又不将推荐信给我,我怎样扫描后上传呢?
如果碰到这种情况,请联系我们。
2、推荐信已网上提交,面试时还要提交吗?
凡推荐信已经网上提交的,在面试时不提交推荐信原件。但如果没有在网上提交,需在面试时提交推荐信原件。
3、推荐信上推荐人的签名需要注意什么问题?
如推荐信另附有推荐人的推荐意见的,请推荐人一定在推荐信的Signature 和另附的推荐意见页上都签名,而且推荐人的这两处签名应保持一致。如推荐人签的是中文,请在两个地方都签中文。另外,如果签的姓名是拼音,推荐人可以选择名在前或在后,但在两处均要保持一致,即如果前一个签名是名在前,那后一个签名也要名在前;如果后一个签名是姓在前了,这就不一致了。
4、在推荐人为我写推荐信时,他/她因为看了我的申请书相关内容,其推荐信中有一段后来被发现与我申请书中的某一部分完全一样,这样行吗?
这样是不行的,安置学校看到这样的推荐信是会有疑问和怀疑的。请提醒你的推荐人不要从你申请书中“抄袭”。
5、大学成绩单一定要由原毕业学校出具吗?从档案中复印大学成绩单后盖现工作单位公章可以吗?
大学成绩单一定要由原毕业学校出具。从人事档案中复印大学成绩单后盖现工作单位公章无效。
6、如原毕业学校只有中文成绩单,翻译成英文成绩单有什么要求吗?
现在部分学校出具的成绩单是中英文的,部分学校只有中文成绩单。如果只有中文成绩单,请一定翻译成英文(多数学校会提供此项服务,会相应收些费用),并一定盖上出具成绩单学校相应部门的公章才有效。
7、我是自考的,我的成绩单没有英文翻译,相关的自考部门也不在我的英文翻译件上盖章,我该怎么办?
如果是这种情况,请你首先确保从自考单位申请到中文成绩单原件,然后翻译成英文,如果自考单位不给你盖章,你无需做公证,你只需要到自考时就读学校盖章即可。如果自考时就读学校也不愿意盖章,请联系我们。
8、中英文成绩单需密封吗?
不需要,请打开扫描并上传,并保留原件。
9、我的姓名中有“吕”和“绿”等字,大学的成绩单、文凭等的翻译件有的翻译成“Lv”,有的翻译成“Lu”,这怎么办?
对这种情况,请你现在工作的大学开具一个证明,说明这只是你名字中某一个字的汉语拼音不同的原因造成的,本证明需中英文,并加盖学校相关部门公章。而且,如果你需要申请新护照,还请在证明中说明,根据中国公安部新规定,只要姓名中声母为“L”、“N”,韵母为“ü”的,韵母统一都要写成“YU”,你的姓名在新护照中将拼为某字母。
10、Transcript Release Form一定要吗?如果你在美国的大学就读过,请填写此表。如果没有,就不用填写此表。
11、我的大学毕业证和学位证需要原件吗?
不需要。你只要将大学本科毕业证和学位证(如你是专升本,含你的专科毕业证)复印,最好加盖现在工作/学校单位公章即可。上述毕业证和学位证的英文翻译件上最好盖上现在工作/学校单位公章。
如果相关学校/工作单位不愿意盖章,没有盖章的复印件亦可。
12、我有双学位,是否我要提交双学位的成绩单及学位证书?
可以。相关准备要求同你的另一个学位一样。
13、我是在国外大学拿的本科学位,我的成绩单和学位证书不用再翻译成中文吧?不用再盖章了吧?
你的成绩单和学位证书不用翻译成中文,也无需盖章及留学认证材料。
14、我是在读学生,没有毕业证和学位证怎么办?
请在学校学籍部门开具中英文就读证明,需加盖学籍部门公章。
15、我曾在国内或国外短期进修过或参加过某项活动,获得过证书,是否可以提供?
如果这些国内或国外短期进修或活动对你的研究和经历比较重要,你可以提供,但一般的,就可以不提供。请你自己做判断。
16、上述毕业证和成绩单如果不能达到要求,我可以做公证来证明真实性吗?
在申请阶段,请不要做公证。如果相关部门要求你做某项公证,请先联系我们。
17、我已经有美方院校的邀请书,可以提交吗?
如果你已经有美方院校的邀请书,请扫描后上传。如果你还没有与美方院校联系,请不必在此申请阶段与它们联系。本项目不允许申请人直接与美方院校联系录取。美国国际教育协会相关录取政策和要求将在确定入选名单后通告入选者。
本表格申请者个人请不用填。
19、我已经在网上提交了申请书,但发现有错误,想改正,却发现不能改正了,怎么办?
如果出现这一情况,请联系我们,我们会将你的申请书退回到可以修改状态,你就可以修改了。在修改后,请再次提交。
四、申请程序问题
1. 我登陆国家留学基金委指定的网站(包括中方和美方报名网站),怎么都打不开,怎么办?
有时你单位/学校网打不开,可以换换,到网吧开开试试。没有办法,只有在不同网络,不同时间段多试试。
2. 我登陆国家留学基金委指定的中方报名网站,其中几项(如对方学校、国外导师)等没办法填,但又是必填项目,怎么办?
我们就此咨询了国家留学基金委,他们回复说,可以暂时先填你意向学校,等等,完成报名手续。
3. 我登陆国家留学基金委指定的中方报名网站报名后,系统提示注册成功,已经将用户名和密码发送到我的邮箱,但是我的邮箱却始终未见邮件,怎么办?
凡是登陆国家留学基金委指定的中方报名网站出现的问题,请联系国家留学基金委。
4. 在网上申请的指南和各项的指南中,提到要将相关的材料如推荐信或成绩单寄给“your Fulbright Program Office”,这个富布赖特办公室指的是哪一个?
在中国大陆,“中美富布赖特硕士生项目”申请工作由美国国际教育协会北京办公室和国家留学基金委管理,它们之间的分工请见下一个问题的回答。
本年度由于实施电子评审,在申请阶段相关材料请扫描并上传即可。面试阶段材料提交要求我们将在你获得面试资格后再详细通知。
5. 单位和学校要求我提交一份纸质申请全套材料,我已经将我的成绩单原件和推荐信原件提交了,请问现在该怎么办?
首先,你没有必要给单位和学校提交一份纸质申请全套材料,因为申请阶段所有材料均已在网上提交,无需再提交纸质申请材料;其次,如果单位和学校要求提交,请所有材料只提交复印件即可。请勿提交原件。相关原件需要面试时提交给美国国际教育协会北京办公室。
6. 到底是国家留学基金委还是美国国际教育协会北京办公室在负责本项目的申请、选拔和派出工作?我们对这两个机构在项目中的作用不清楚。
简单地说,国家留学基金委和美国国际教育协会北京办公室是分工合作关系。在申请阶段,国家留学基金委负责进行申请材料评审工作;美国国际教育协会北京办公室接受有关申请表填写及材料准备的电子邮件咨询。在面试阶段,美国国际教育协会北京办公室负责面试安排的具体通知及面试工作。在后期安置及出国签证、办理相关手续阶段,国家留学基金委和美国国际教育协会北京办公室将分别负责各自的工作,这些工作都会在相关的通知中明确。
7. 网上申请系统有没有对网上提交申请表的截止日期有规定,请问有截止日期规定吗?
请至迟在本年度项目申请截止日6月15日提交网上申请表。
8. 我申请后一直没有接到初审结果通知,请问,这是否意味着我没有通过初审?
本项目初审由国家留学基金委负责,关于初审结果请你或通过你的单位/学校向国家留学基金委咨询。
9. 我在面试时上交了全套申请材料,特别是成绩单原件,但面试后我却不幸落选,请问能否退还我的全套申请材料,特别是成绩单原件?
对不起。根据项目规定,面试材料上交后不能退还给落选的申请者。申请者如果在别的项目中需要这套申请材料中的材料,请另外准备。如果你需要你的成绩单原件,也请再向你原毕业学校申请,应该没有什么问题(当然,需要一定时间和费用)。
五、咨询联系方式
国家留学基金委联系方式:详见国家留学基金委网站: 。
美国国际教育协会北京办公室:
(美国国际教育协会北京办公室不接受电话或来人来函咨询)
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。