为您找到搜索结果:8593个
聊聊高并发(二十五)解析java.util.concurrent各个组件(七) 理解Semaphore
前几篇分析了一下AQS的原理和实现。这篇拿Semaphore信号量做样例看看AQS实际是怎样使用的。Semaphore表示了一种能够同一时候有多个线程进入临界区的同步器,它维护了一个状态表示可用的票据,仅仅有拿到了票据的线程尽能够进入临界区,否则就等待。直到获得释放出的票据。Semaphore经常使用在资源池中来管理资源。当状态仅仅有1个0两个值时,它退化成了一个相互排斥的同步器。类似锁。以下来看看Semaphore的代码。它维护了一个内部类Sync来继承AQS,定制tryXXX方法来使用AQS。我们之前提到过AQS支持独占和共享两种模式,Semaphore明显就是共享模式。它支持多个线程能够同一时候进入临界区。所以Sync扩展了Shared相关的方法。能够看到Sync的主要操作都是对状态的无锁改动,它不须要处理AQS队列相关的操作。在聊聊高并发(二十四)解析java.util.concurrent各个组件(六)深入理解AQS(四)我们说了AQS提供了tryXXX接口给子类扩展,相当于给子类一个机会,能够自己处理状态,决定是否入同步队列。1.nonfailT...
Java开源内容管理CMS系统J4CMS的几个样式
www.j4cms.comjava开源内容管理页面直接编辑bootstrap3样式default样式metro样式oschina样式leblog样式foundation样式...
java IO回想小结
javaIO原理IO流用来处理设备之间的传输数据输入(input):读取外部数据(磁盘。等存储设备)到程序()(内存)中输出(output):将程序(内存)数据输出到磁盘等存储设备javaIO原理IO流用来处理设备之间的传输数据输入(input):读取外部数据(磁盘,等存储设备)到程序()(内存)中输出(output):将程序(内存)数据输出到磁盘等存储设备流的分类依照操作数据单位不同。字节流(8bit),字符流(16bit)依照数据流流向的不同分为:输入流,输出流依照流的角色分为:节点流,处理流抽象基类 字节流字符流输入流InputStreamReader输出流OutputStreamWriter由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀...
javascript实现贪吃蛇
<html><head><style>body{background:#444;}.rect{border:1pxsolid#94F;width:680px;height:680px;}.gridred{width:38px;height:38px;background:red;border:1px#555solid;float:left}.gridgreen{width:38px;height:38px;background:green;border:1px#555solid;float:left}.gridblue{width:38px;height:38px;background:blue;border:1px#555solid;float:left}.st{width:100;height:40;font-size:30;font-family:Georgia;color:#F40;margin:0.5cm;top:800px;background:#FFF;text-align:center;}h1.important{color:#FFF...
JavaScript对象分类
JavaScript中的对象分类我们可以把对象分成几类。宿主对象(hostObjects):由JavaScript宿主环境提供的对象,它们的行为完全由宿主环境决定。内置对象(Built-inObjects):由JavaScript语言提供的对象。 固有对象(IntrinsicObjects):由标准规定,随着JavaScript运行时创建而自动创建的对象实例。 原生对象(NativeObjects):可以由用户通过Array、RegExp等内置构造器或者特殊语法创建的对象。 普通对象(OrdinaryObjects):由{}语法、Object构造器或者class关键字定义类创建的对象,它能够被原型继承。 宿主对象JavaScript宿主对象千奇百怪,但是前端最熟悉的无疑是浏览器环境中的宿主了。在浏览器环境中,我们都知道全局对象是window,window上又有很多属性,如document。实际上,这个全局对象window上的属性,一部分来自JavaScript语言,一部分来自浏览器环境。JavaScript标准中规定了全局对象属性,W...
javaSript 处理电脑和浏览器pc端缩放对页面的影响
由于用户的个人习惯或其他原因,可能会调整到电脑上的缩放比例或者浏览器的缩放比例,如果访问页面会看起来比较不好看,电脑上的缩放: 浏览器上的缩放: 解决方法:functiondetectZoom(){varratio=0,screen=window.screen,ua=navigator.userAgent.toLowerCase();if(window.devicePixelRatio!==undefined){ratio=window.devicePixelRatio;}elseif(~ua.indexOf('msie')){if(screen.deviceXDPI&&screen.logicalXDPI){ratio=screen.deviceXDPI/screen.logicalXDPI;}}elseif(window.outerWidth!==undefined&&window.innerWidth!==undefined){ratio=window.outerWidth/window.innerWidth;}if...
javaScript---RegExp
字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在。比如判断一个字符串是否是合法的Email地址,虽然可以编程提取@前后的子串,再分别判断是否是单词和域名,但这样做不但麻烦,而且代码难以复用。正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的。所以我们判断一个字符串是否是合法的Email的方法是:创建一个匹配Email的正则表达式;用该正则表达式去匹配用户的输入来判断是否合法。因为正则表达式也是用字符串表示的,所以,我们要首先了解如何用字符来描述字符。在正则表达式中,如果直接给出字符,就是精确匹配。用d可以匹配一个数字,w可以匹配一个字母或数字,所以:'00d'可以匹配'007',但无法匹配'00A';'ddd'可以匹配'010';'ww'可以匹配'js'; .可以匹配任意字符,所以:'js.'可以匹配'jsp'、'jss'、'js!'等等。 要匹配变长的字符,在正则表达式中,用*表示任意个字符...
JavaScript 特效之四大家族(offset/scroll/client/event)
三大系列:offset、scroll、client事件对象:event(事件被触动时,鼠标和键盘的状态)(通过属性控制) 三大系列都是以DOM元素节点的属性形式存在的。类比访问关系,也是以属性形式存在。不同点在于,访问关系是为了获取其他节点,而三大系列是为了获取元素节点更多的信息。 1.offset系列offset:偏移、补偿、位移offset系列是js中的一套获取元素尺寸的便捷办法。 (1) offsetWidth 和 offsetHeight (检测盒子自身宽高+padding+border)这两个属性,他们绑定在了所有的节点元素上。获取之后,只要调用这两个属性,我们就能够获取元素节点的宽和高。行内式、内嵌式、外链式都可以获取到。offsetWidth=width+padding+border;offsetHeight=Height+padding+border;不包括margin。 (2) offsetLeft 和&nbs...
JavaScirpt对象原生方法
Object.assign()Object.assign()方法用于合并对象,只会合并可枚举的属性constobj1={a:1}constobj2=Object.assign({},obj1)//将一个空对象和obj1合并在一起,相当于你复制对象obj1.a=2console.log(obj2.a)//1两个对象是独立的。constobj3={a:{b:1}}constobj4=Object.assign({},obj3)//将obj3和一个空对象合并在一起obj3.a.b=2console.log(obj.4.a.b)//2两个对象又不是独立的了,,合并的对象属性里面如果还是对象,那么合并后就会存在这种情况。consta={a:1}constb={b:2}constc=Object.assgin(a,b,{c:3})console.log(c)//{a:1,b:2,c:3}如果合并的对象都有某一个相同的属性名,则后面的覆盖掉前面的对象。 Object.create()Object.create()方法使指定的原型对象和属性去创建一个新对象constaa=Object.cre...
JavaScript-window
window.closedwindow.closed检测页面是否被关闭,关闭为true未关闭为false window.consolewindow.console返回一个console对象的引用,console对象提供了向浏览器控制台打印日志的功能,并不展示给用户console.log('aa')console.dir(obj)//也可以打开一个有排列的对象 window.devicePixelRatiowindow.devicePixelRatio属性返回当前设备的无力香色分比例和css像素分辨率的比值,就是像素大小的比例,也就是一个css像素的大小相对于一个物理像素的大小的比值,就好比iphone分辨率是750X1334我们的UI给的设计稿也是750X1334但是我们做页面布局的时候会在ui给的设计稿的基础上/2。因为呢,iphone6的视窗是375x667所以iphone6的设备像素比=750/375=2 window.documentwindow.document指向当前窗口内的文档节点(下一篇文章会将document) window.f...
JavaScript字符串API
String.prototype.anchor()anchor()方法用于创建一个<a>html描元素conststr='我是html内容'.anchor('我是name属性值')console.log(str)//"<aname="我是name属性值">我是html内容</a>" String.prototype.bold()bold()方法用于创建<b>html元素conststr='aaa'.bold()console.log(str)//"<b>aaa</b>" String.prototype.charAt()charAt()方法用于返回字符串指定位置的字符'amz'.charAt()//'a'不传索引则默认为0'amz'.charAt(1)//'m' String.prototype.concat()concat()将多个字符串拼接在一起consta='aaa'constb='bbb'constc='ccc'.concat(a,b,'ddd')console.log(c)/...
JavaScript常用数组操作方法,包含ES6方法
concat()方法用于连接两个或多个数组。该方法不会改变现有的数组,仅会返回被连接数组的一个副本。vararr1=[1,2,3];vararr2=[4,5];vararr3=arr1.concat(arr2);console.log(arr1);//[1,2,3]console.log(arr3);//[1,2,3,4,5] join()方法用于把数组中的所有元素放入一个字符串。元素是通过指定的分隔符进行分隔的,默认使用','号分割,不改变原数组。vararr=[2,3,4];console.log(arr.join());//2,3,4console.log(arr);//[2,3,4] push()方法可向数组的末尾添加一个或多个元素,并返回新的长度。末尾添加,返回的是长度,会改变原数组。vara=[2,3,4];varb=a.push(5);console.log(a);//[2,3,4,5]console.log(b);//4push方法可以一次添加多个元素push(data1,data2....) pop()方法用于删除并返回数组的最后一个元素...
Javascript模块化编程
http://www.ruanyifeng.com/blog/2012/10/javascript_module.htmlhttp://www.ruanyifeng.com/blog/2012/10/asynchronous_module_definition.htmlhttp://www.ruanyifeng.com/blog/2012/11/require_js.html ...
JavaScript多种继承方式
https://github.com/mqyqingfeng/Blog/issues/16...