Classic IPC Problems 经典的进程间通信问题

TheProducer-ConsumerProblemPresenterNotes:  生产者消费者问题(英语:Producer-consumerproblem),也称有限缓冲问题(英语:Bounded-bufferproblem),是一个多线程同步问题的经典案例。该问题描述了两个共享固定大小缓冲区的线程——即所谓的“生产者”和“消费者”——在实际运行时会发生的问题。生产者的主要作用是生成一定量的数据放到缓冲区中,然后重复此过程。与此同时,消费者也在缓冲区消耗这些数据。该问题的关键就是要保证生产者不会在缓冲区满时加入数据,消费者也不会在缓冲区中空时消耗数据。  要解决该问题,就必须让生产者在缓冲区满时休眠(要么干脆就放弃数据),等到下次消费者消耗缓冲区中的数据的时候,生产者才能被唤醒,开始往缓冲区添加数据。同样,也可以让消费者在缓冲区空时进入休眠,等到生产者往缓冲区添加数据之后,再唤醒消费者。通常采用进程间通信的方法解决该问题,常用的方法有信号灯法等。如果解决方法不够完善,则容易出现死锁的情...

Modular arithmetic and Montgomery form 实现快速模乘

题目:电音之王题解:求数列前n项相乘并取模思路:①、这题的乘法是爆longlong的,可以通过快速幂的思想去解决(按数位对其中的一个数进行剖分)。当然你的乘法会多出一个log的复杂度...②、O(1)快速乘:一种O(1)复杂度求解整数相乘取模的思路(它对于64位的整型也是适用的):  来自2009年国家集训队论文:骆可强:《论程序底层优化的一些方法与技巧》(参考中附原文链接)typedeflonglongll;#defineMOL123456789012345LLinlinellmul_mod_ll(lla,llb){lld=(ll)floor(a*(double)b/MOL+0.5);llret=a*b-d*MOL;if(ret<0)ret+=MOL;returnret;}ViewCode③、正解:dls一句话题解(当然是看不懂了...)  参考中附一篇MontgomeryModularMultiplication的博客(当然也是看不懂了...日文)题解:(dls的代码)#include<bits/stdc++.h>usingnamespacestd;#define...

JAVA多线程之volatile 与 synchronized 的比较

一,volatile关键字的可见性要想理解volatile关键字,得先了解下JAVA的内存模型,Java内存模型的抽象示意图如下:从图中可以看出:①每个线程都有一个自己的本地内存空间--线程栈空间???线程执行时,先把变量从主内存读取到线程自己的本地内存空间,然后再对该变量进行操作②对该变量操作完后,在某个时间再把变量刷新回主内存关于JAVA内存模型,更详细的可参考: 深入理解Java内存模型(一)——基础因此,就存在内存可见性问题,看一个示例程序:(摘自书上)1publicclassRunThreadextendsThread{23privatebooleanisRunning=true;45publicbooleanisRunning(){6returnisRunning;7}89publicvoidsetRunning(booleanisRunning){10this.isRunning=isRunning;11}1213@Override14publicvoidrun(){15System.out.println("进入到run方法中了");1...

Lamport Logical Clock 学习

1,导论①如何在分布式环境下定义系统中所有事件的发生顺序?②分布式环境下多个进程竞争资源时如何互斥?③什么是偏序,偏序的作用是什么,有什么不足?④什么是全序,全序的作用是什么,有什么不足?⑤为什么需要物理时钟,物理时钟如何同步?下面来进行介绍。 2,偏序的定义、发生在先(happenedbefore)关系考虑单一的进程A,在某时刻发生了事件E1,经过一段时间后,发生事件E2,可以说:E1发生在E2前面。考虑多个进程,进程A向进程B发送消息,进程A发送消息时记为事件E1,进程B接收到进程A发送的消息记为E2,可以说:E1发生在E2前面。以上两个例子表明了E1与E2是一种偏序的关系。之所以说明这两个例子所代表的关系是偏序的,是因为:当需要判断下图中的a和e这两个事件谁先谁后时,在偏序关系下是无法判断的。偏序的定义:(1)若a,b是同一进程中的两个事件,且a发生在b之前,则a--->b (--->符号表示发生在先关系,!--->符号表示非发生在先关系)(2)若a是"一个进程发送消息"事件,b是一个进程接收消息事件,则a--->b(3)若a!---&...
代码星球 代码星球·2020-04-04

用贪心算法近似求解 Loading Balance 问题(作业调度的负载均衡)

一,LoadingBalance问题描述:有m台相同的机器及n个作业,其中m={M(1),M(2),……M(m)}、n={J(1),J(2),……J(n)}。每个作业都有一个处理时间,记为t。如,;t(j)表示作业J(j)的处理时间。任意机器在某个时刻只能处理一个作业;一旦某个作业被调度到机器上处理,它就不能被抢占,直至它被处理完才能处理下一个作业。问:如何分配作业,使得处理完所有的作业所需的时间最少?由于该问题是NPC的,因此很难找到该问题的最优解(精确解),下面用贪心算法求解一个近似解。二,LoadingBalance问题的两倍贪心近似解贪心策略:总是优先给当前机器中负载最小的机器分配作业设BS(bestsolution)为LoadingBalance问题的最优解。BS表示处理完所有的作业所需的最少时间,则:1)BS>=max{t(1),t(2)……t(n)}     耗时最长的作业总会在某台机器上执行,BS一定比某个单一作业的执行时间要长(可...

JAVA 线程池之Callable返回结果

本文介绍如何向线程池提交任务,并获得任务的执行结果。然后模拟线程池中的线程在执行任务的过程中抛出异常时,该如何处理。 一,执行具体任务的线程类要想获得线程的执行结果,需实现Callable接口。FactorialCalculator计算number的阶乘,具体实现如下:1importjava.util.concurrent.Callable;2importjava.util.concurrent.TimeUnit;34/**5*CreatedbyAdministratoron2017/9/26.6*/7publicclassFactorialCalculatorimplementsCallable<Integer>{89privateIntegernumber;1011publicFactorialCalculator(Integernumber){12this.number=number;13}14publicIntegercall()throwsException{15intresult=1;1617if(number==0||number==1){18res...

js通过class获取元素时的兼容性解决方案

1:::::方法代码如下:functiongetByClass(sClass){   varaResult=[];   varaEle=document.getElementsByTagName('*');   for(vari=0;i<aEle.length;i++){      /*当className相等时添加到数组中*/      if(aEle[i].className==sClass){           aResult.push(aEle[i]);       }   }   returnaResult;};调用方法(实际...

AngularJS XMLHttpRequest

$http是AngularJS中的一个核心服务,用于读取远程服务器的数据。使用格式://简单的GET请求,可以改为POST$http({method:'GET',url:'/someUrl',params:{'name':'ari'}//关于参数:用GET的时候就是params,用POST/PUT/PATCH/DELETE就是data;}).then(functionsuccessCallback(response){//(响应对象)包含5个属性//请求成功执行代码 console.log(response.data);//响应数据                     console.log(response.status);//相应请求状态码      console.log(response.statu...
代码星球 代码星球·2020-04-04

js正则函数match、exec、test、search、replace、split使用介绍集合

match方法 使用正则表达式模式对字符串执行查找,并将包含查找的结果作为数组返回。 stringObj.match(rgExp) 参数 stringObj 必选项。对其进行查找的String对象或字符串文字。 rgExp 必选项。为包含正则表达式模式和可用标志的正则表达式对象。也可以是包含正则表达式模式和可用标志的变量名或字符串文字。 其余说明与exec一样,不同的是如果match的表达式匹配了全局标记g将出现所有匹配项,而不用循环,但所有匹配中不会包含子匹配项。 例子1: functionMatchDemo(){varr,re;//声明变量。vars="TheraininSpainfallsmainlyintheplain";re=/(a)in/ig;//创建正则表达式模式。r=s.match(re);//尝试去匹配搜索字符串。document.write(r);//返回的数组包含了所有"ain"出现的四个匹配,r[0]、r[1]、r[2]、r[3]。//但没有子匹配项a。}输出结果...

后端接收不到AngularJs中$http.post发送的数据的问题

POST表单请求提交时,使用的Content-Type是application/x-www-form-urlencoded,而使用原生AJAX的POST请求如果不指定请求头RequestHeader,默认使用的Content-Type是text/plain;charset=UTF-8,而此处的Content-Type是:   2.解决方法: 直接上代码://要通过post传递的参数vardata={pageindex:1,pagesize:8,},//post请求的地址url="/admin/KeyValue/GetListByPage",//将参数传递的方式改成formpostCfg={headers:{'Content-Type':'application/x-www-form-urlencoded'},transformRequest:function(data){return$.param(data);}};//发送post请求,获取数据$http.post(url,data,postCfg).success(function(response){alert...

AngularJS ui-router (嵌套路由)

AngularJS嵌套路由:这是我针对同一个主题(ui-router)的第二篇文章.如果你对第一篇文章感兴趣的话,可以访问 这里.好了,让我们继续吧,来看看嵌套的ui-router状态是怎么回事.ui-router和同属AngularJS框架一部分的ng-route一样强大.ui-router提供了让我们可以做路由嵌套和视图命名的特性.我们将在示例中看到ui-router中存在的所有类型.引述我之前那篇文章开头给出的使用ui-router框架实现的简单路由,基于我们的业务需求,需要有不同类型的导航,一般像那种从一个页面到另外一个页面的导航非常的普通。但请想象一下在某些情况下,你需要在一个主页中有tab页或者菜单可以点击打开相应的页面.leoxu翻译于3年前3人顶顶 翻译得不错哦! 好吧,让我们来看看一个典型的导航..注意,这个导航我们已经在之前的文章中见过。针对现在的主题我们将看到该导航嵌套进视图中的形式.根据上的界面设计,我们计划该页面能从一个页面导航到另外一个页面,当点击page-1时,我们将在下面显示page-1的内容,点击其它导航菜单也会有类似的效...

angularJs-route路由详解

本篇基于ng-route来讲下angular中的路由路由功能主要是$routeProvider服务与ng-view实现。ng-view的实现原理,是根据路由的切换,动态编译html模板——$compile(html)(scope)。更多内容参考:Angularjs总结首先需要在页面引入angular和angular-route,注意要在angular-route之前引入angular<scriptsrc="../../bower_components/angular/angular.js"></script><scriptsrc="../../bower_components/angular-route/angular-route.js"></script>这主要是因为angular-route.js需要传入window.angular这个参数,而这个参数只有在加载完angular才会出现。(function(window,angular,undefined){'usestrict';...ngRouteModu...
代码星球 代码星球·2020-04-04

AngularJS 全局scope与指令 scope通信

 1、AngularJS中,子作用域一般都会通过JavaScript原型继承机制继承其父作用域的属性和方法。但有一个例外:在directive中使用scope:{...},这种方式创建的作用域是一个独立的"Isolate"作用域,它也有父作用域,但父作用域不在其原型链上,不会对父作用域进行原型继承。这种方式定义作用域通常用于构造可复用的directive组件.2、如果我们在子作用域中访问一个父作用域中定义的属性,JavaScript首先在子作用域中寻找该属性,没找到再从原型链上的父作用域中寻找,如果还没找到会再往上一级原型链的父作用域寻找。在AngularJS中,作用域原型链的顶端是$rootScope,JavaScript寻找到$rootScope为止.3、scope:{...}-directive创建一个独立的“Isolate”作用域,没有原型继承。这是创建可复用directive组件的最佳选择。因为它不会直接访问/修改父作用域的属性,不会产生意外的副作用。 1、=or=attr“Isolate”作用域的属性与父作...

angularjs购物车练习

 本文是一个简单的购物车练习,功能包括增加、减少某商品的数量,从而影响该商品的购买总价以及所有商品的购买总价;从购物车内移除一项商品;清空购物车。页面效果如图:  若使用js或jQuery来实现这个页面,会需要绑定很多事件,如减少数量按钮事件,增加数量按钮事件,移除某项商品事件,清空购物车事件,而这些事件之中很多代码很重复,比如计算某项商品的总购买价,计算所有商品的购买总价,不胜其烦,现在有了AngularJS,则简单许多,因为数据模型双向绑定等原因。上图页面的代码:html [html]viewplaincopy<!DOCTYPE html>  <html lang="en">  <head>      <meta charset="UTF-8">      <title>angular购物车练习&...
代码星球 代码星球·2020-04-04
首页上一页...393394395396397...下一页尾页