同步

并行、并发、同步和互斥

﹥>﹥吖頭↗ 提交于 2020-02-28 20:52:50
并行 计算机操作系统中的并行,指的是同时存在于内存中的 多道作业都处于运行状态 。实际上都是 宏观上并行 , 微观上串行 ,因为这些作业都是开始各自的运行,但都没运行完毕,只是 交替地使用cpu 。 在操作系统中是指,一组程序按独立异步的速度执行,不等于时间上的重叠(同一个时刻发生)。要区别并发。并发是指:在同一个时间段内,两个或多个程序执行,有时间上的重叠(宏观上是同时,微观上仍是顺序执行)。 并行也指8位数据同时通过并行线进行传送 ,这样数据传送速度大大提高,但并行传送的线路长度受到限制,因为长度增加,干扰就会增加,数据也就容易出错。 并发 在 操作系统 中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个 处理机 上运行,但 任一个时刻点上只有一个程序在处理机上运行 。   在关系数据库中,允许多个用户同时访问和更改共享数据的进程。SQL Server 使用锁定以允许多个用户同时访问和更改共享数据而彼此之间不发生冲突。   操作系统并发程序执行的特点:   并发环境下,由于程序的封闭性被打破,出现了新的特点:   ①程序与计算不再一一对应,一个程序副本可以有多个计算   ②并发程序之间有相互制约关系,直接制约体现为一个程序需要另一个程序的计算结果,间接制约体现为多个程序竞争某一资源,如处理机、 缓冲区 等。   ③并发程序在执行中是走走停停

一个同步github上fork过来的项目的批处理脚本

醉酒当歌 提交于 2020-01-08 19:58:42
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 在github上fork了不少好项目,有时需要作出一些修改,但是发现源项目已经更新了,而自己的还比较旧,怎么同步呢,在网上找到一些资料。修改了一些不对的地方,最后形成了下面的脚本,我自己命名为sync.cmd,不说了。直接上代码: 这是在本地已经存在fork过来的clone的情况下,如果没有,先执行一下操作: git clone https://github.com/myaniu/jfinal.git 将以下代码保存为sysnc.cmd 然后放到本地clone的项目目录里,然后双击执行,前提已经设置好了git,或者使用github提供的windows客户端。 rem sync.cmd git remote -v git remote add upstream https://github.com/jfinal/jfinal.git git remote -v git fetch upstream git checkout master; git merge upstream/master git remote remove upstream git push origin 注解版 rem 查看远端仓库 git remote -v rem 在本地添加fork的源库 git remote add upstream

Python 开源异步并发框架的未来(转)

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-26 18:41:47
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Python 开源异步并发框架的未来 fantix 1.1k 2014年04月16日 发布 推荐 4 推荐 收藏 31 收藏, 8.9k 浏览 呵呵,这个标题有点大,其实只是想从零开始介绍一下异步的基础,以及 Python 开源异步并发框架的发展和互操作性。 另外,这是我在 OSTC 2014 做的一个 20140330-OSTC-分论坛1王川 http://v.youku.com/v_show/id_XNjk2ODI0ODQ4.html ,幻灯片在 这里 ,欢迎拍砖。 开源 Python 是开源的,介绍的这几个框架 Twisted 、 Tornado 、 Gevent 和 tulip 也都是开源的,最后这个演讲是在开源大会弄的,所以标题里肯定少不了开源。另外,我的 gevent3 项目也是开源的——貌似不少同学被我起的极品名字给搞混了,特别说明一下, gevent3 虽然有跟 Gevent 一样的接口外貌,但底层却是 tulip 驱动的(考虑把名字改回 gulip 之类的);请区别于将来会支持 Python 3 的 Gevent 1.1。 非阻塞 先上一段代码。请原谅我用 Python 代码充当伪代码了,但 Python 的语法实在是太简单了,忍不住啊。 import sockets = socket

RSync实现文件备份同步(转)

时光总嘲笑我的痴心妄想 提交于 2019-12-09 18:18:50
转自:http://www.mike.org.cn/blog/index.php?load=read&id=639###pp=0 [rsync实现网站的备份,文件的同步,不同系统的文件的同步,如果是windows的话,需要windows版本cwrsync] 一、什么是rsync   rsync,remote synchronize顾名思意就知道它是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限、时间、软硬链接等附加信息。 rsync是用 “rsync 算法”提供了一个客户机和远程文件服务器的文件同步的快速方法,而且可以通过ssh方式来传输文件,这样其保密性也非常好,另外它还是免费的软件。   rsync 包括如下的一些特性:   能更新整个目录和树和文件系统;   有选择性的保持符号链链、硬链接、文件属于、权限、设备以及时间等;   对于安装来说,无任何特殊权限要求;   对于多个文件来说,内部流水线减少文件等待的延时;   能用rsh、ssh 或直接端口做为传输入端口;   支持匿名rsync 同步文件,是理想的镜像工具; 二、架设rsync服务器   架设rsync 服务器比较简单,写一个配置文件rsyncd.conf 。文件的书写也是有规则的,我们可以参照rsync.samba.org 上的文档来做。当然我们首先要安装好rsync这个软件才行; A

Node.js express 之mongoose 从异步回调函数返回值,类似于同步

时光毁灭记忆、已成空白 提交于 2019-12-09 13:26:19
Node.js是很好,异步回调模式返回值让我头疼不已啊,今日还是写下今天学习的成果,起由是因为在使用mongoose查询的时候,多个查询相互依赖会层层嵌套,看起来N不爽,我们可以使用并行查询完毕然后,返回想要的结果即可,代码看起来会美观很多,例如: User.findOne({userid:userid},function(err,findUser){ Group.find({userid:findUser.userid},function(err,group){ GroupQZ.find(groupid:group.groupid}.function(err,qz){} }) }); 以上可以使用eventproxy来并行处理。在一个函数里把三个返回的参数合并成一个json返回。 看我设计的就是死活得不到想要的值,懂的一看便知道怎么回事 module.exports.findUser = function(condition){ var userinfo; User.findOne(condition,function(err,findUser){ userinfo = findUser; }); return userinfo;//返回的结果始终是undefined }; javascript是按照顺序解析的,到查询的时候是异步执行还没有赋值就直接返回了。 我想要的理想设计方法

搭建高可用mongodb集群(三)—— 深入副本集内部机制

纵饮孤独 提交于 2019-12-07 19:17:10
在上一篇文章《搭建高可用mongodb集群(二)—— 副本集》 介绍了副本集的配置,这篇文章深入研究一下副本集的内部机制。还是带着副本集的问题来看吧! 副本集故障转移,主节点是如何选举的?能否手动干涉下架某一台主节点。 官方说副本集数量最好是奇数,为什么? mongodb副本集是如何同步的?如果同步不及时会出现什么情况?会不会出现不一致性? mongodb的故障转移会不会无故自动发生?什么条件会触发?频繁触发可能会带来系统负载加重? Bully算法 mongodb副本集故障转移功能得益于它的选举机制。选举机制采用了Bully算法,可以很方便从分布式节点中选出主节点。一个分布式集群架构中一般都有一个所谓的主节点,可以有很多用途,比如缓存机器节点元数据,作为集群的访问入口等等。主节点有就有吧,我们干嘛要什么Bully算法?要明白这个我们先看看这两种架构: 指定主节点的架构,这种架构一般都会申明一个节点为主节点,其他节点都是从节点,如我们常用的mysql就是这样。但是这样架构我们在第一节说了整个集群如果主节点挂掉了就得手工操作,上架一个新的主节点或者从从节点恢复数据,不太灵活。 mongodb4 不指定主节点,集群中的任意节点都可以成为主节点。mongodb也就是采用这种架构,一但主节点挂了其他从节点自动接替变成主节点。如下图: mongodb故障转移 好了,问题就在这个地方

discuz论坛整合ucenter免激活,同步登录,同步退出解决方案

℡╲_俬逩灬. 提交于 2019-12-07 10:55:31
一、 discuzX1.5 免激活修改步骤: 1. 注册完成插入数据库后,进行同步登录 修改文件upload\source\module\member\member_register.php $_G['setting']['lastmember'] = $username; save_syscache(‘setting’, $_G['setting']); $_G['setting']['regverify'] = $regverify; $ucsynlogin = $_G['setting']['allowsynlogin'] ? uc_user_synlogin($_G['uid']) : ”; // 进行UC 同步登录,注册免激活 if(!empty($_G['inajax'])) { $_G['setting']['msgforward'] = unserialize($_G['setting']['msgforward']); $mrefreshtime = intval($_G['setting']['msgforward']['refreshtime']) * 1000; if(!empty($_G['inajax'])) { include template(‘member/register’); } else { showmessage(‘profile

jquery中post,get,ajax请求相关

蓝咒 提交于 2019-12-06 23:48:57
今天遇到了个问题,用jquery发现结果总是跟预想的不一样。后来查了下才发现,jquery中post,get,ajax等方法是默认是异步进行的!然后就豁然开朗,如果想要修改默认post,get为同步方式,则先使用$.ajaxSetup({ async: false }); 再用post,get就是同步的了。今天记录下来,每天进步一点点。 来源: oschina 链接: https://my.oschina.net/u/586288/blog/66355

三个线程循环打印ABC10次的几种解决方法

≡放荡痞女 提交于 2019-12-06 03:18:05
有三个线程分别打印A、B、C, 请用多线程编程实现,在屏幕上循环打印10次ABCABC… 这是一个比较常用的关于线程的考题,一般出现在应届生的校园招聘试卷上。 本文给出如下四种解决方法: 使用synchronized, wait和notifyAll 使用Lock 和 Condition 使用Semaphore 使用AtomicInteger 使用synchronized, wait和notifyAll /** * @author wangmengjun * */ public class SyncObj { private char letter = 'A'; public void nextLetter() { switch (letter) { case 'A': letter = 'B'; break; case 'B': letter = 'C'; break; case 'C': letter = 'A'; break; default: break; } } public char getLetter() { return letter; } } /** * @author wangmengjun * */ public class PrintLetterRunnable implements Runnable { private SyncObj syncObj;

使用synchronized来保证数据的同步

China☆狼群 提交于 2019-12-06 02:03:30
网上一搜索synchronized,资料大把大把,所以也不展开来说,怕说多错多。简单说说我的理解和用法。 synchronized是Java中的关键字,是一种同步锁。通常可以用来修饰某个方法,或者某个代码块。 我一般用来修饰代码块,感觉会更加灵活。先上个例子: public class Task implements Runnable{ private static final Object LOCK = new Object(); public void run(){ long threadId = Thread.currentThread().getId(); System.out.println(threadId + " 等待执行"); synchronized (LOCK) { try { System.out.println(threadId + " 执行中"); Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(threadId + " 执行结束"); } } } 首先我们定义了一个常量LOCK,执行到这个synchronized 代码块的时候,都会先检查是否获得LOCK的使用权。 由于LOCK是全局的常量