优先级

CSS 样式的优先级小结

一个人想着一个人 提交于 2020-03-16 12:02:46
1. 同一元素引用了多个样式时,排在后面的样式属性的优先级高 例如,下面的 div,同时引用了 [.default] 和 [.user] 中的样式,其中 [.user] 样式中的 width 属性会替换 [.default] 样式中的 width 属性。 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <style type="text/css"> .default{ width: 100px; /* 定义 width 属性 */ height: 100px; background-color: #B6E0AE; margin: -50px 0 0 -50px; position: absolute; top: 50%; left: 50%; } .user{ width: 150px; /* 这里 width 的值替换了前面 width 的值 */ } </style> </head> <body> <div class="default user"></div> </body> </html> 2. 样式选择器的类型不同时,优先级顺序为:id 选择器 > class 选择器 > 标签选择器 例如,下面的 div 即获取 id

Css样式覆盖顺序

不羁的心 提交于 2020-03-16 12:02:12
1,css样式选择器的优先级为 : “元素上的style” > “id选择器” > “class类及伪类选择器” > “元素类型及伪类选择器” 。参考: CSS2 cascade - 6.4.3 Calculating a selector's specificity 2,css样式选择器的优先级相同时 , 根据样式被加载的顺序渲染,后面定义的样式生效 。 和元素class出现的顺序无关,如class="class2 class1”, 在class2、lass1的样式选择器优先级相同的情况下,并不是class1覆盖class2,而是依赖于class2,、class1所在样式文件被link进来的顺序。 3,要让某个样式的优先级变高, 可以使用!important来指定 。参考: CSS2 cascade - 6.4.2 !important rules 4,css属性的继承 : 参考: css样式表中的样式覆盖顺序 查看Firebug中的Style标签中各css属性的覆盖,可以 校验上述的结论 ! 来源: https://www.cnblogs.com/fhtwins/p/3711451.html

angularJS中如何写自定义指令

烂漫一生 提交于 2020-03-15 16:47:57
指令定义 (转自http://www.cnblogs.com/huangshikun/p/7060787.html) 对于指令,可以把它简单的理解成在特定DOM元素上运行的函数,指令可以扩展这个元素的功能 例如,ng-click可以让一个元素能够监听click事件,并在接收到事件的时候执行angularJS表达式 正是指令使得angularJS这个框架变得强大,并且正如所见,我们可以自己创造新的指令 指令声明方法 angular.module('freefedApp',[]).directive(name,function(){ return { restrict: String, priority: Number, terminal: Boolean, template: String or Template Function:function(tElement, tAttrs) (...}, templateUrl: String, replace: Boolean or String, scope: Boolean or Object, transclude: Boolean, controller: String orfunction(scope, element, attrs, transclude, otherInjectables) { ... },

Nginx + Keepalived负载均衡

橙三吉。 提交于 2020-03-15 13:11:11
第一步: 下载keepalived地址:http://www.keepalived.org/download.html 解压安装: tar -zxvf keepalived-1.2.18.tar.gz -C /usr/local/ yum install -y openssl openssl-devel(需要安装一个软件包) cd keepalived-1.2.18/ && ./configure --prefix=/usr/local/keepalived make && make install 第二步: 将keepalived安装成Linux系统服务,因为没有使用keepalived的默认安装路径(默认路径:/usr/local),安装完成之后,需要做一些修改工作: 首先创建文件夹,将keepalived配置文件进行复制: mkdir /etc/keepalived cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/ 然后复制keepalived脚本文件: cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/ cp /usr/local/keepalived/etc/sysconfig/keepalived

Libevent源码分析—event_init()

拜拜、爱过 提交于 2020-03-14 13:43:53
下面开始看初始化event_base结构的相关函数。相关源码位于 event.c event_init() 首先调用event_init()初始化event_base结构体 struct event_base * event_init(void) { struct event_base *base = event_base_new(); //event_init()调用event_base_new() if (base != NULL) current_base = base; return (base); } 我们发现event_init()工作量很少,只是调用event_base_new()函数,所以真正初始化event_base的工作是在event_base_new()函数内完成。 event_base_new() struct event_base * event_base_new(void) //初始化libevent的event_base { int i; struct event_base *base; if ((base = calloc(1, sizeof(struct event_base))) == NULL) //在堆上分配内存存储event_base,所有字段初始化为0 event_err(1, "%s: calloc", __func__); event

nginx location配置

血红的双手。 提交于 2020-03-14 11:26:09
最近一直在做location 配置,遇到优先级别问题(如果配置不当可能存在安全隐患哦),以下是个人学习一点体会。 一、 location 的匹配符 1.等于匹配符:= 等于匹配符就是等号,特点可以概括为两点: 精确匹配 不支持正则表达式 2.空匹配符 空匹配符的特点是: 匹配以指定模式开始的 URI 不支持正则表达式 3.正则匹配符:~ 正则匹配符是可以使用正则表达式的匹配符。不过这里要强调的是,一般来说~是指: 区分大小写的正则匹配 而~*表示: 不区分大小写的正则匹配 但是对于一些对大小写不敏感的操作系统,这两者没有区别。另外一个就是^~,其表示以指定模式开始的正则匹配。 4.内部访问符:@ 一般用于错误页面等,这个暂不讨论。 二、匹配符优先级 1.= 2.空匹配符,满足精确匹配时 3.^~ 4.~或~* 5.空匹配符,满足以指定模式开始时的匹配时 这样说比较抽象,我们来看例子吧。 2.1 等于匹配符与精确匹配时的空匹配符 看下面的例子(用到我们此前一起完成的Hello World模块): 复制代码 代码如下: location /poechant { hello_world no1; } location = /poechant { hello_world no2; } 如果我们的请求是http://my.domian/poechant

构造器Constructor是否可被Override(重写)

拥有回忆 提交于 2020-03-13 08:05:07
构造器Constructor不能被继承,因此不能被重写(Override),但是可以被重载(Overload) 如果父类自定义了有参构造函数,则子类无论定义构造函数与否,定义有参构造函数与否,都会报错,正确的做法是在子类的构造方法中添上super(参数),以表明子类构造之前先构造父类,而这句话必须放在第一句,否则报"Constructor call must be the first statement in a constructor"的错误。 类的加载顺序:   首先执行 父类的静态代码块/初始化静态变量(两者优先级相同),然后执行子类的静态代码/初始化静态变量(两者优先级相同,谁写在前面谁先执行),然后初始化父类成员变量/执行代码块{}(两者优先级相同),接着父类的构造器,然后子类的成员变量/代码块,最后子类的构造器。 来源: https://www.cnblogs.com/hellohbx/p/12484214.html

学习笔记1:java多线程机制之线程概念

筅森魡賤 提交于 2020-03-13 00:39:38
由于种种需求,今天开始由浅入深的学习java的多线程机制,而java语言的一大特性点就是内置对多线程的支持。 以下内容出自: http://blog.csdn.net/jiangwei0910410003/article/details/19962627 : 线程的生命周期: 1.新建状态(New):用new语句创建的线程对象处于新建状态,此时它和其它的java对象一样,仅仅在堆中被分配了内存 2.就绪状态(Runnable):当一个线程创建了以后,其他的线程调用了它的start()方法,该线程就进入了就绪状态。处于这个状态的 线程位于可运行池中,等待获得CPU的使用权 3.运行状态(Running): 处于这个状态的线程占用CPU,执行程序的代码 4.阻塞状态(Blocked): 当线程处于阻塞状态时,java虚拟机不会给线程分配CPU,直到线程重新进入就绪状态,它才有机会转到 运行状态。 阻塞状态分为三种情况: 1)、 位于对象等待池中的阻塞状态:当线程运行时,如果执行了某个对象的wait()方法,java虚拟机就回把线程放到这个对象的等待池中 2)、 位于对象锁中的阻塞状态,当线程处于运行状态时,试图获得某个对象的同步锁时,如果该对象的同步锁已经被其他的线程占用,JVM就会把这个线程放到这个对象的琐池中。 3)、 其它的阻塞状态:当前线程执行了sleep()方法

sleep()和yield()有什么区别?

不羁的心 提交于 2020-03-13 00:25:40
sleep() 方法给其他线程运行机会时 不考虑线程的优先级 ,因此会给低优先级的线程以运行的机会; yield() 方法只会给 相同优先级或更高优先级的线程 以运行的机会; 线程执行 sleep() 方法后转入阻塞 ( blocked )状态,而执行 yield() 方法后转入就绪 ( ready )状态; sleep() 方法声明抛出 InterruptedException ,而 yield() 方法没有声明任何异常; sleep() 方法 比 yield() 方法(跟操作系统相关)具有 更好的可移植性 。 来源: oschina 链接: https://my.oschina.net/u/4143249/blog/3192958

子进程自父进程继承什么或未继承什么

丶灬走出姿态 提交于 2020-03-12 16:40:08
详见:man fork 源地址:http://www.cnblogs.com/hnrainll/archive/2011/05/11/2043472.html 知道 子 进程 自 父 进程 继承 什么或未 继承 什么将有助于我们。下面这个名单会因为 不同Unix的实现而发生变化,所以或许准确性有了水份。请注意 子 进程 得到的是 这些东西的 *拷贝*,不是它们本身。 由子 进程 自 父 进程 继承 到: 进程 的资格(真实(real)/有效(effective)/已保存(saved) 用户号(UIDs)和组号(GIDs)) 环境(environment) 堆栈 内存 打开文件的描述符(注意对应的文件的位置由父子 进程 共享, 这会引起含糊情况) 执行时关闭(close-on-exec) 标志 (译者注:close-on-exec标志可通过fnctl()对文件描 述符设置,POSIX.1要求所有目录流都必须在exec函数调用时关闭。更详细说明, 参见《UNIX环境高级编程》 W. R. Stevens, 1993, 尤晋元等译(以下简称《高级编程》), 3.13节和8.9节) 信号 (signal)控制设定 nice值 (译者注:nice值由nice函数设定,该值表示 进程 的优先级, 数值越小,优先级越高) 进程 调度类别(scheduler class) (译者注: 进程