前言
当看到 CSS Selectors Level 4
很多人会理所当然地喊出 CSS4
。但是,这里必须明确一个概念,目前所谓的 CSS3 和 CSS4 都是 CSS2.1 以后对某一些 CSS 模块进行升级更新后的称呼。CSS3 和 CSS4 永远都不会出现,它们只是为了区分 CSS 模块升级后的等级,例如有些 CSS 选择器在之前就存在了,但是此时我们为它添加了新的特性,那么这个模块就升级到了 CSS Selectors Level 3 中,如果再一次升级,那么就变成了 CSS Selectors Level 4。下面我们可以对目前 W3C 工作草案中的 CSS Selectors Level 4 新特性进行一个阶段性总结,之所以叫阶段性,是因为未来可能有更多的新特性加入。
Negation pseudo-class——:not()
:not()
用于将符合规则的元素剔除,将样式规则应用于其他元素上。在 CSS3 中已经有 :not()
,不过在 CSS3 中只能使用简单的匹配规则,例如 :not(p)
用来选择不是
的元素。而在 CSS4 中,可以应用更复杂的匹配规则,但是同样地不允许嵌套使用,例如 :not(:not(...))
。
.negation {
color : black ;
}
.negation .default :not( [data-red="no"] ) {
color : red ;
}
.negation .default a {
color : green ;
}
.negation .default a :not( [rel="green"] , [rel="default"] ) {
color : blue ;
}
<div class ="negation" >
<div class ="default" data-red ="no" >
<a href ="http://www.baidu.com" rel ="green" > 这里是绿色a >
<a href ="http://www.ele.me" rel ="default" > 这里也是绿色a >
<a href ="http://www.sina.com" rel ="blue" > 这里是蓝色a >
div >
<div class ="default" data-red ="no" >
这里是黑色
div >
<div class ="default" data-red ="yes" >
这里是红色
div >
div >
:not()
小提示
我们可以利用 :not()
来对 CSS 样式进行一个优先级提升,例如 div:not(span) {…}
跟 div {…}
是同个概念,但是明显地前者的优先级更高。
想解锁更多 :not()
的使用姿势就去看 The Negation Pseudo-class 草案。
Matches-any Pseudo-class——:matches 伪类
:matches()
用于匹配所述规则的元素,并应用相应的样式规则,同样不允许嵌套使用,-webkit-any()
和 -moz-any()
是它的两个兼容性写法。它可以让我们节省书写大量的 CSS 样式匹配规则,让我们从大量重复的规则书写中解放出来。
.matches {
color : black ;
}
.matches :matches(span , div ) :matches(span , div ) {
color : green ;
}
.matches :-webkit-any(span , div ) :-webkit-any(span , div ) {
color : green ;
}
.matches :-moz-any(span , div ) :-moz-any(span , div ) {
color : green ;
}
.matches :matches( .a , .b ) :matches( .a , .b ) {
color : red ;
}
.matches :-webkit-any( .a , .b ) :-webkit-any( .a , .b ) {
color : red ;
}
.matches :-moz-any( .a , .b ) :-moz-any( .a , .b ) {
color : red ;
}
<div class ="matches" >
<span >
<div > 绿色div >
span >
<span >
<span > 绿色span >
span >
<div >
<span > 绿色span >
div >
<div >
<div > 绿色div >
div >
<div class ="a" >
<div class ="b" > 红色div >
div >
<div class ="b" >
<div class ="a" > 红色div >
div >
<div class ="a" >
<div class ="a" > 红色div >
div >
<div class ="b" >
<div class ="b" > 红色div >
div >
div >
Case-Sensitivity——不区分大小写匹配标识
Case-Sensitivity
用于声明某个匹配规则中,对字符串或者某个 value 的匹配不区分大小写。该标志声明于 ]
即右中括号之前,例如 [data-value="case" i]
,其中的 i
就是 Case-Sensitivity 标识。但是如果我们需要明确区分大小写区别的时候,该标识可能会导致某些不可意料的后果,所以使不使用该标识应该明确使用的场景是否对数据来源的大小写敏感。
.case-sensitivity :matches( [data-value="case" i] ) {
color : yellow ;
}
<div class ="case-sensitivity" >
<p data-value ='Case' > Casep >
<p data-value ="case" > casep >
div >
以上的例子,data-value
虽然既有大写也有小写,但是由于我们声明了 Case-Sensitivity
,所以无论大小写都会被匹配。像例子中 case
,Case
,CASE
等都会被匹配。
The Directionality Pseudo-class——:dir()
:dir()
用于匹配符合某个方向性的元素,例如 :dir(ltr)
和 dir(rtl)
。顾名思义,ltr
表示 left to right
,即方向从左到右,rtl
表示 right-to-left
,即方向从右到左。值得注意的是,使用 :dir()
匹配元素和使用 [dir=...]
在某个程度上是一样的效果,但是一个区别是 [dir=...]
无法匹配到没有显示声明 dir
的元素,但是 :dir()
却可以匹配到由浏览器计算得到或者继承来的 dir
属性的元素,详情可以看一下草案。因此,如果我们有明确地对某个元素声明 dir
,那我们大可以使用 [dir=...]
的形式来匹配某个元素,但是如果我们只是单纯从父元素继承而来的 dir
,那么此时还是需要用到:dir()
。
.dir :dir(ltr) {
color : blue ;
}
.dir :dir(rtl) {
color : green ;
}
<div class ="dir" >
<p dir ="ltr" > 从左到右p >
<p dir ="rtl" > 从右到左p >
div >
The Language Pseudo-class——:lang()
:lang()
用于匹配声明了 lang=value
的元素,并且可以使用通配符匹配,例如 p:lang(*-CH)
将可以匹配 de-CH
的 p
元素。
.lang p :lang(de-DE) {
color : green ;
}
.lang p :lang( *-CH ) {
color : blue ;
}
<div class ="lang" >
<p lang ="de-DE-1996" > de-DE-1996p >
<p lang ="de-CH" > de-CHp >
div >
The Hyperlink Pseudo-class——:any-link 伪类
:any-link
用于匹配带有 href
属性的超链接元素,例如
,
,
等带有 href
属性的元素。:-webkit-any-link
和 :-moz-any-link
是它的兼容性写法。目前工作组对该选择器的命名尚不满意,未来该选择器可能会修改其名字。该选择器的作用在于可以选出所有带有链接的元素,如果使用旧方法,那么只能使用标签名的方式或者a[href=value]
的方式去匹配。
.link a :any-link {
color : red ;
}
.link a :-webkit-any-link {
color : red ;
}
.link a :-moz-any-link {
color : red ;
}
<div class ="link" >
<a href ="#" > 我是带有颜色的超链接a >
div >
The contextual reference element pseudo-class——:scope
:scope
用于匹配当前作用域下的顶级元素。但是目前
已经被移除——issue,所以 :scope
基本等效于:root
。
<div class ="scope" >
<p > This paragraph is outside the scope.p >
<div >
<style scoped >
:scope {
background-color : red ;
}
p {
color : blue ;
}
style >
<p > This paragraph is inside the scope.p >
div >
div >
以上代码,第二个 div
将会有红色背景,并且他的所有
子元素都将拥有蓝色文字。
Time-dimensional Pseudo-classes——:current(), :past(), :future()
我个人用 时间轴伪类
统一称呼 :current()
, :past()
, :future()
这三个伪类。:current()
匹配时间轴当前的元素,:past()
匹配 :current()
元素之前的元素,:future()
则匹配当前时间轴后的所有元素。这里说的时间轴指的是例如WebVTT
。值得注意的是,规范中写道如果使用的时间轴并不是文档语言所规定的,那么 :past()
和 :future()
有可能分别匹配 :current()
元素的前面的兄弟元素和后面的兄弟元素。由于在 Chrome Canary 和 Safari TP 上都不支持这几个伪类,所以无法实验正确性。下面使用的例子是从这个网址摘过来的。
:current(p , span ) {
background-color : yellow ;
}
:past(p , span ),
:future(p , span ) {
background-color : gray ;
}
<video controls preload ="metadata" >
<source src ="http://html5demos.com/assets/dizzy.mp4" type ="video/mp4" />
<source src ="http://html5demos.com/assets/dizzy.webm" type ="video/webm" />
<source src ="http://html5demos.com/assets/dizzy.ogv" type ="video/ogv" />
<track label ="English" kind ="subtitles" srclang ="en" src ="http://www.iandevlin.com/html5test/webvtt/upc-video-subtitles-en.vtt" default >
video >
The Indeterminate-value Pseudo-class——:indeterminate
在 radio
和 checkbox
元素上一般有两种状态——选中
和 未选中
,但是有的时候的状态会是不确定状态,而:indeterminate
就是匹配这种不确定状态的 radio
或 checkbox
。
:indeterminate + label {
background-color : gray ;
}
<input type ="radio" name ="name" id ="test" >
<label for ="test" > 未确定状态label >
通常地,radio
和 checkbox
在没有声明选中状态时,默认只有两种可能性:checked
和 unchecked
,为了让他们出现第三种状态,我们可以借助 JS 来控制:
document .querySelector('#test' ).indeterminate = true ;
上面例子的
在
处于 indeterminate state
的时候,文字将会变为灰色。
The default-option pseudo-class——:default
:default
匹配一组相似元素集合中的默认元素,例如
中有多个
,其中有一个是
,那么该元素将会被匹配。此外还有
也有默认元素。
.default .default-form :default {
background-color : gray ;
}
<div class ="default" >
<form class ="default-form" action ="#" method ="get" >
<input type ="submit" name ="name" value ="submit" >
<input type ="reset" name ="name" value ="reset" >
form >
div >
The validity pseudo-classes——:valid, :invalid
在
中,如果我们输入了 abc123
,那么此时 :invalid
将会匹配该元素,假如我们输入abc123@163.com
,那么此时 :valid
将会匹配该元素。这里要注意假如我们没有为
作约束,例如
,那么它的任意输入将使元素既不会被 :valid
匹配,也不会被 :invalid
匹配。
.valid input :valid {
color : green ;
}
.valid input :invalid {
color : red ;
}
<div class ="valid" >
<input type ="email" name ="eamil_valid" value ="abc@abc.com" >
<input type ="email" name ="email_invalid" value ="abc" >
div >
The range pseudo-classes——:in-range, :out-of-range
:in-range
和 :out-of-range
只对有被条件约束的元素起作用,例如
,如果输入数字小于 1,那么将会被 :out-of-range
匹配,反之则是被 :in-range
匹配。在很多时候,我们需要对“脏值”做一个高亮的显示,以前可能需要配合 JS 对值的边界进行检测,然后在对元素的样式进行修改。而现在,有了这两个伪类的存在,我们可以完全使用 CSS 来控制。
.range input :in-range {
color : green ;
}
.range input :out-of-range {
color : red ;
}
<div class ="range" >
<input type ="number" name ="range" value ="1" min ="1" max ="10" >
div >
The optionality pseudo-classes——:required, :optional
:required
和 :optional
分别匹配带有 required
标识的元素和不带 required
标识的元素。同样地,我们可以利用这两个伪类来对需要填写的元素添加特定的样式。
.optionality input :required {
color : green ;
}
.optionality input :optional {
color : red ;
}
<div class ="optionality" >
<input type ="text" name ="required" value ="required" required >
<input type ="text" name ="optional" value ="optional" >
div >
The user-interaction pseudo-class——:user-error
:user-error
会匹配 :invalid
, :out-of-range
和没有任何值的 :required
元素,但是假如是初始化时就触发这三种错误,user-error
将不会匹配该元素,只有当用户和元素进行交互或者提交了该表单并且触发了这三种错误,:user-error
才会被触发。Chrome 和 Safari 可能尚未支持,所以无法验证正确性。
.user-error input :user-error {
color : red ;
}
.user-error input :valid {
color : green ;
}
<div class ="user-error" >
<input type ="email" name ="eamil_valid" value ="abc@abc.com" >
<input type ="email" name ="email_invalid" value ="abc" >
div >
The mutability pseudo-classes——:read-only, :read-write
:read-only
匹配不可被编辑的元素,:read-write
则匹配可被编辑的元素,例如
或者 contenteditable="true"
的元素。:-moz-read-only
和 :-moz-read-write
分别是他们的兼容性写法。
.mutability :read-only {
color : red ;
}
.mutability :read-write {
color : green ;
}
<div class ="mutability" >
<input type ="text" name ="read-write-input" value ="read-write" >
<p contenteditable ="true" > read-write-paragraphp >
<p > read-only-paragraphp >
div >
The placeholder-shown pseudo-class——:placeholder-shown
:placeholder-shown
匹配 placeholder
文字显示时的
元素。::-webkit-input-placeholder
,::-moz-placeholder
, :-ms-input-placeholder
分别是它在不同浏览器的兼容性写法。在此之前,原生的 placeholder 文字是没有方法去改变其颜色的,大多数做法是使用 value 来代替 placeholder,同时利用 JS 对 input 的 focus 事件进行监听,将 value 清空,从而达到一个模仿 placeholder 的效果。
.placeholder input :placeholder-shown {
color : green ;
}
.placeholder input ::-webkit-input-placeholder {
color : green ;
}
.placeholder input ::-moz-placeholder {
color : green ;
}
.placeholder input :-ms-input-placeholder {
color : green ;
}
<div class ="placeholder" >
<input type ="text" name ="placeholder" placeholder ="placeholder is green" >
div >
Grid-Structural Selectors
该特性将对例如 的栅格布局起作用。它包含 :column(selector)
, :nth-column(n)
和 :nth-last-column(n)
。目前浏览器都还未支持,无法实验正确性。这些伪类将让栅格布局的样式控制变得更为简单,不过更多的试验要等到浏览器支持才能一一试验。
:column(selector)
:column(selector)
将匹配例如 中 带有 selector
类名的那一列的所有元素。
:column( .selected ) {
color : green ;
}
<table >
<col class ="selected" />
<col class ="blur" />
<col class ="blur" />
<tr >
<td > Atd >
<td > Btd >
<td > Ctd >
tr >
<tr >
<td > Dtd >
<td > Etd >
<td > Ftd >
tr >
<tr >
<td > Gtd >
<td > Htd >
<td > Itd >
tr >
table >
在上面的例子中,A、D、G 都将是绿色的。
:nth-column(n) 和 :nth-last-column(n)
:nth-column(n)
匹配括号内 n
的计算值的某一列的元素,计算方式是从头开始计算,而 :nth-last-column(n)
则是从后开始计算。
:nth-column(2n) {
color : red ;
}
:nth-last-column(3n) {
color : green ;
}
<table >
<col class ="selected" />
<col class ="blur" />
<col class ="blur" />
<tr >
<td > Atd >
<td > Btd >
<td > Ctd >
tr >
<tr >
<td > Dtd >
<td > Etd >
<td > Ftd >
tr >
<tr >
<td > Gtd >
<td > Htd >
<td > Itd >
tr >
table >
Tree-Structural pseudo-classes——:blank
Tree-Structural pseudo-classes 是 CSS3 中的规范,但在 CSS Selectors Level 4 中加入了 :blank
,它和 :empty
类似,区别在于 :empty
只能匹配没有任何内容的元素,而 :blank
可以匹配带有 spaces(空格)
, tabs(缩进符)
和segment breaks(段落过段)
内容的元素。
Combinators——>>
A >> B
匹配祖先元素为 A 的 B元素,其用法与 A B
一样,与 >
, +
, ~
用意一样,不过意义不同。
上面的特性都已经存在 Working Draft 中,还有一些 Editor’s Draft 的特性,也顺带一提。
The Relational Pseudo-class——:has()
:has(selector)
匹配含有 某些规则
的元素。
下面例子将匹配含有 img 子元素的 a 元素:
a :has( > img )
dt :has(+ dt )
下面例子将匹配不含有 h1、h2、h3、h4、h5、h6 元素的 section 元素:
section :not( :has(h1 , h2 , h3 , h4 , h5 , h6 ))
和上面例子不同,下面交换了两个伪类的嵌套,表示匹配含有的不是 h1、h2、h3、h4、h5、h6 子元素的元素,区别在于这种写法要求必须含有一个子元素,而上面的写法可以不含有子元素也会被匹配:
section :has( :not(h1 , h2 , h3 , h4 , h5 , h6 ))
The Drag-and-Drop Pseudo-class——:drop, :drop()
:drop
和 :drop()
匹配可被放置拖动元素的目标元素,两者区别在于 :drop()
可以匹配一些规则,包括 active
, valid
,invalid
。active
会匹配可被放置的目标元素,valid
匹配放置的元素为合法元素的目标元素,invalid
反之。如果:drop()
括号里没有任何过滤,那么将和 :drop
没有区别。
最后
文章介绍了目前 CSS Selectors Level 4 的一些新的特性,我们看到 CSS 正在逐渐将以前需要依赖 JS 做到的事情转化为 CSS 自身能够处理的过程,这个将大大降低了 CSS 和 JS 之间的代码耦合,从而也降低了项目迭代过程中的维护成本。从 1996 年发表的 CSS1 规范至今已经过去了 20年,从浏览器厂商的各自为战到现在各个浏览器厂商遵守规范进行 CSS 新特性的开发,可以说现在前端因为浏览器兼容性的原因所造成的开发成本已经不如以前了,当然,现在还存在许多需要与 IE8+ 打交道的网站,但是这个比例已经大大降低了。还有新的挑战来源于手机端 Web 的兴起,手机的性能远远不及 PC 的性能,而国内手机浏览器内核的百花齐放又再一次让兼容性这个严峻的问题摆在了前端开发者眼前,开发者们可以在开源社区中寻找各种 polyfill 来消除这种差异,也可以利用各种 CSS hack 来解决不同浏览器的兼容性,但是不可避免地会对性能造成影响。
其实说到了 CSS,不得不说与 CSS 密不可分的 JavaScript,JavaScript 自从 ES6 的发表,解决了 JavaScript 某些方面多年来混乱的局面,EcmaScript 的版本更新频率也变得勤快了起来。在 ES6 中我们可以看到的是其解决很多 ES5 上存在的问题,例如异步事件处理,其新增了许多方法我们都发现 JQuery、underscore 等知名库的影子,所以说,开发者的热情是推动规范的不可或缺的中坚力量。规范的制定不再是一言堂,开发者们也有了说话和建议的余地。
无论如何,相信在各大厂商的和 W3C 工作组的推动下,未来不管在 CSS 还是 JavaScript 上,将会逐渐走向规范上的统一,让我们拭目以待吧!
你可能感兴趣的:(Web前端——html+css,web前端复习+面试)
DIV+CSS+JavaScript技术制作网页(旅游主题网页设计与制作)云南大理
STU学生网页设计
网页设计 期末网页作业 html静态网页 html5期末大作业 网页设计 web大作业
️精彩专栏推荐作者主页:【进入主页—获取更多源码】web前端期末大作业:【HTML5网页期末作业(1000套)】程序员有趣的告白方式:【HTML七夕情人节表白网页制作(110套)】文章目录二、网站介绍三、网站效果▶️1.视频演示2.图片演示四、网站代码HTML结构代码CSS样式代码五、更多源码二、网站介绍网站布局方面:计划采用目前主流的、能兼容各大主流浏览器、显示效果稳定的浮动网页布局结构。网站程
关于城市旅游的HTML网页设计——(旅游风景云南 5页)HTML+CSS+JavaScript
二挡起步
web前端期末大作业 javascript html css 旅游 风景
⛵源码获取文末联系✈Web前端开发技术描述网页设计题材,DIV+CSS布局制作,HTML+CSS网页设计期末课程大作业|游景点介绍|旅游风景区|家乡介绍|等网站的设计与制作|HTML期末大学生网页设计作业,Web大学生网页HTML:结构CSS:样式在操作方面上运用了html5和css3,采用了div+css结构、表单、超链接、浮动、绝对定位、相对定位、字体样式、引用视频等基础知识JavaScrip
HTML网页设计制作大作业(div+css) 云南我的家乡旅游景点 带文字滚动
二挡起步
web前端期末大作业 web设计网页规划与设计 html css javascript dreamweaver 前端
Web前端开发技术描述网页设计题材,DIV+CSS布局制作,HTML+CSS网页设计期末课程大作业游景点介绍|旅游风景区|家乡介绍|等网站的设计与制作HTML期末大学生网页设计作业HTML:结构CSS:样式在操作方面上运用了html5和css3,采用了div+css结构、表单、超链接、浮动、绝对定位、相对定位、字体样式、引用视频等基础知识JavaScript:做与用户的交互行为文章目录前端学习路线
python八股文面试题分享及解析(1)
Shawn________
python
#1.'''a=1b=2不用中间变量交换a和b'''#1.a=1b=2a,b=b,aprint(a)print(b)结果:21#2.ll=[]foriinrange(3):ll.append({'num':i})print(11)结果:#[{'num':0},{'num':1},{'num':2}]#3.kk=[]a={'num':0}foriinrange(3):#0,12#可变类型,不仅仅改变
MYSQL面试系列-04
king01299
面试 mysql 面试
MYSQL面试系列-0417.关于redolog和binlog的刷盘机制、redolog、undolog作用、GTID是做什么的?innodb_flush_log_at_trx_commit及sync_binlog参数意义双117.1innodb_flush_log_at_trx_commit该变量定义了InnoDB在每次事务提交时,如何处理未刷入(flush)的重做日志信息(redolog)。它
Kafka 消息丢失如何处理?
架构文摘JGWZ
学习
今天给大家分享一个在面试中经常遇到的问题:Kafka消息丢失该如何处理?这个问题啊,看似简单,其实里面藏着很多“套路”。来,咱们先讲一个面试的“真实”案例。面试官问:“Kafka消息丢失如何处理?”小明一听,反问:“你是怎么发现消息丢失了?”面试官顿时一愣,沉默了片刻后,可能有点不耐烦,说道:“这个你不用管,反正现在发现消息丢失了,你就说如何处理。”小明一头雾水:“问题是都不知道怎么丢的,处理起来
每日算法&面试题,大厂特训二十八天——第二十天(树)
肥学
⚡算法题⚡面试题每日精进 java 算法 数据结构
目录标题导读算法特训二十八天面试题点击直接资料领取导读肥友们为了更好的去帮助新同学适应算法和面试题,最近我们开始进行专项突击一步一步来。上一期我们完成了动态规划二十一天现在我们进行下一项对各类算法进行二十八天的一个小总结。还在等什么快来一起肥学进行二十八天挑战吧!!特别介绍小白练手专栏,适合刚入手的新人欢迎订阅编程小白进阶python有趣练手项目里面包括了像《机器人尬聊》《恶搞程序》这样的有趣文章
【华为OD技术面试真题 - 技术面】- python八股文真题题库(4)
算法大师
华为od 面试 python
华为OD面试真题精选专栏:华为OD面试真题精选目录:2024华为OD面试手撕代码真题目录以及八股文真题目录文章目录华为OD面试真题精选**1.Python中的`with`**用途和功能自动资源管理示例:文件操作上下文管理协议示例代码工作流程解析优点2.\_\_new\_\_和**\_\_init\_\_**区别__new____init__区别总结3.**切片(Slicing)操作**基本切片语法
【华为OD技术面试真题 - 技术面】-测试八股文真题题库(1)
算法大师
华为od 面试 python 算法 前端
华为OD面试真题精选专栏:华为OD面试真题精选目录:2024华为OD面试手撕代码真题目录以及八股文真题目录文章目录华为OD面试真题精选1.黑盒测试和白盒测试的区别2.假设我们公司现在开发一个类似于微信的软件1.0版本,现在要你测试这个功能:打开聊天窗口,输入文本,限制字数在200字以内。问你怎么提取测试点。功能测试性能测试安全性测试可用性测试跨平台兼容性测试网络环境测试3.接口测试的工具你了解哪些
【华为OD技术面试真题精选 - 非技术题】 -HR面,综合面_华为od hr面
一个射手座的程序媛
程序员 华为od 面试 职场和发展
最后的话最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!资料预览给大家整理的视频资料:给大家整理的电子书资料:如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化的资料的朋友,可以点击这里获
【华为OD技术面试真题 - 技术面】- python八股文真题题库(1)
算法大师
华为od 面试 python
华为OD面试真题精选专栏:华为OD面试真题精选目录:2024华为OD面试手撕代码真题目录以及八股文真题目录文章目录华为OD面试真题精选1.数据预处理流程数据预处理的主要步骤工具和库2.介绍线性回归、逻辑回归模型线性回归(LinearRegression)模型形式:关键点:逻辑回归(LogisticRegression)模型形式:关键点:参数估计与评估:3.python浅拷贝及深拷贝浅拷贝(Shal
女儿考研完报考雅思
捡拾流年
是否我过于焦虑?会不会无形间让女儿觉得压力太大了啊。2022年对于我们家来说是不平常的一年。女儿今年大四,为了准备考研,暑假也没回家,年初去了学校到了年末才回家。女儿自己一个人面对考研,没有参加培训,大四学校作业论文等课业也多,她同时也是很努力复习考研的。在疫情开放很多羊的时期,女儿终于顺顺利利参加12月24、25号的考研,我们和家人都觉得女儿回家来要好好休息调养。可女儿回到家,我再查阅考研信息,
Java企业面试题3
马龙强_
java
1.break和continue的作用(智*图)break:用于完全退出一个循环(如for,while)或一个switch语句。当在循环体内遇到break语句时,程序会立即跳出当前循环体,继续执行循环之后的代码。continue:用于跳过当前循环体中剩余的部分,并开始下一次循环。如果是在for循环中使用continue,则会直接进行条件判断以决定是否执行下一轮循环。2.if分支语句和switch分
Java面试题精选:消息队列(二)
芒果不是芒
Java面试题精选 java kafka
一、Kafka的特性1.消息持久化:消息存储在磁盘,所以消息不会丢失2.高吞吐量:可以轻松实现单机百万级别的并发3.扩展性:扩展性强,还是动态扩展4.多客户端支持:支持多种语言(Java、C、C++、GO、)5.KafkaStreams(一个天生的流处理):在双十一或者销售大屏就会用到这种流处理。使用KafkaStreams可以快速的把销售额统计出来6.安全机制:Kafka进行生产或者消费的时候会
海拔五千
3点8度
【海拔五千】连续几天到宿舍盯学生早起情况,今天早上都能及时离开宿舍,没有迟到的了。早读复习宋词,新背一首,晚上又忘了[流泪]断续听王静老师的一堂课,深度语文名不虚传!下课问学生如何,学生答曰比你讲的有趣[捂脸]继续读《娱乐至死》美国在不同的历史时期,代表城市不一样,从波士顿的政治中心,到纽约的大熔炉(自由女神就是其象征),再到芝加哥的工业发展中心,最后到拉斯维加斯的娱乐之城。不同历史时期美国精神的
2019考研 | 西交大软件工程
笔者阿蓉
本科背景:某北京211学校电子信息工程互联网开发工作两年录取结果:全日制软件工程学院分数:初试350+复试笔试80+面试85+总排名:100+从五月份开始脱产学习,我主要说一下专业课和复试还有我对非全的一些看法。【数学100+】张宇,张宇,张宇。跟着张宇学习,入门视频刷一遍,真题刷两遍,错题刷三遍。书刷N多遍。从视频开始学习,是最快的学习方法。5-7月份把主要是数学学好,8-9月份开始给自己每个周
#千锋逆战班 郭燕 学习的一天开启
郭千岁呗
在千锋"逆战"学习云计算第17天加油努力会有好结果复习昨天知识中国加油!武汉加油!千峰加油!我自己加油!
更改npm镜像源为淘宝镜像
骆小骆
基于node.js
npm常用指令后缀*最近复习了一下node.js整理了一下跟node.js相关的指令后缀*--save、-S参数意思是把模块的版本信息保存到dependencies(生产环境依赖)中,即你的package.json文件的dependencies字段中;–--save-dev、-D参数意思是把模块版本信息保存到devDependencies(开发环境依赖)中,即你的package.json文件的de
代码随想录Day 41|动态规划之买卖股票问题,leetcode题目121. 买卖股票的最佳时机、122. 买卖股票的最佳时机Ⅱ、123. 买卖股票的最佳时机Ⅲ
LluckyYH
动态规划 leetcode 算法 数据结构
提示:DDU,供自己复习使用。欢迎大家前来讨论~文章目录买卖股票的最佳时机相关题目题目一:121.买卖股票的最佳时机解题思路:题目二:122.买卖股票的最佳时机II解题思路:题目三:123.买卖股票的最佳时机III解题思路总结买卖股票的最佳时机相关题目题目一:121.买卖股票的最佳时机[[121.买卖股票的最佳时机](https://leetcode.cn/problems/combination
Day_11
ROC_bird..
算法
面试题16.15.珠玑妙算-力扣(LeetCode)/***Note:Thereturnedarraymustbemalloced,assumecallercallsfree().*///下标和对应位置的值都一样,answer[0]+1,对应位置的值猜对了,但是下标不对,answer[1]+1int*masterMind(char*solution,char*guess,int*returnSiz
字节二面
Redstone Monstrosity
前端 面试
1.假设你是正在面试前端开发工程师的候选人,面试官让你详细说出你上一段实习过程的收获和感悟。在上一段实习过程中,我获得了宝贵的实践经验和深刻的行业洞察,以下是我的主要收获和感悟:一、专业技能提升框架应用熟练度:通过实际项目,我深入掌握了React、Vue等前端框架的使用,不仅提升了编码效率,还学会了如何根据项目需求选择合适的框架。问题解决能力:在实习期间,我遇到了许多预料之外的技术难题。通过查阅文
黄丽红日精进98/105
做自己小太阳
感恩感恩今日份的拍照ing感恩今日份电视重新可以看感恩妹妹帮忙晾衣服感恩在路上的自己感恩我的朋友们和家人见1.今日份看了胡歌的一个节目,2010年的,10年之前,他的真实和有爱感动了我,不愧是我喜欢的胡歌2.今日份每日一练终于自己开始了调整后计划,流行病也开始复习,一切在路上3.妆容精致心情没好,在家注意收拾自己,画个淡妆最起码要精神面貌佳,回村后的我已经很像大妈了!!!感1.自己也是一个温暖的人
html+css网页设计 旅游网站首页1个页面
html+css+js网页设计
html css 旅游
html+css网页设计旅游网站首页1个页面网页作品代码简单,可使用任意HTML辑软件(如:Dreamweaver、HBuilder、Vscode、Sublime、Webstorm、Text、Notepad++等任意html编辑软件进行运行及修改编辑等操作)。获取源码1,访问该网站https://download.csdn.net/download/qq_42431718/897527112,点击
【从问题中去学习k8s】k8s中的常见面试题(夯实理论基础)(二十八)
向往风的男子
k8s 学习 kubernetes 容器
本站以分享各种运维经验和运维所需要的技能为主《python零基础入门》:python零基础入门学习《python运维脚本》:python运维脚本实践《shell》:shell学习《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战《k8》从问题中去学习k8s《docker学习》暂未更新《ceph学习》ceph日常问题解决分享《日志收集》ELK+各种中间件《运维日常》
Java -jar 如何在后台运行项目
vincent_hahaha
撸了今年阿里、头条和美团的面试,我有一个重要发现.......>>>说到运行jar包通常我们都会以下面的方式运行:java-jarspringboot-0.0.1-SNAPSHOT.jar这样运行的话会有一个问题,就是我们一关闭当前窗口就会停止运行项目,要想解决这个问题,就需要在后台运行。nohupjava-jarbabyshark-0.0.1-SNAPSHOT.jar >log.file 2>&
【Death Note】网吧战神之7天爆肝渗透测试死亡笔记_sqlmap在默认情况下除了使用 char() 函数防止出现单引号
2401_84561374
程序员 笔记
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化的资料的朋友,可以戳这里获取一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!特殊服务端口2181zookeeper服务未授权访问
【Kubernetes】常见面试题汇总(十一)
summer.335
Kubernetes kubernetes 容器 云原生
目录33.简述Kubernetes外部如何访问集群内的服务?34.简述Kubernetesingress?35.简述Kubernetes镜像的下载策略?33.简述Kubernetes外部如何访问集群内的服务?(1)对于Kubernetes,集群外的客户端默认情况,无法通过Pod的IP地址或者Service的虚拟IP地址:虚拟端口号进行访问。(2)通常可以通过以下方式进行访问Kubernetes集群
华雁智科前端面试题
因为奋斗超太帅啦
前端笔试面试问题整理 javascript 开发语言 ecmascript
1.var变量的提升题目:vara=1functionfun(){console.log(b)varb=2}fun()console.log(a)正确输出结果:undefined、1答错了,给一个大嘴巴子,错误答案输出结果为:2,1此题主要考察var定义的变量,作用域提升的问题,相当于varaa=1functionfun(){varbconsole.log(b)b=2}fun()console.l
保研日记--哈工大威海计算机学院
faaarii
保研
传送门保研日记--中国海洋大学计算机系保研日记--中国人民大学信息学院(人大信院)保研日记--北京交通大学计算机学院保研材料模板(自我介绍,个人简历,个人陈述,推荐信)哈工大威海计算机学院这次夏令营给我的感觉非常的朴素,哈哈哈哈营员就有四个群,985/211、双一流、双非、四非??没有宣讲会、见面会,在面试开始之前放了一个简短的宣传片。(傲娇,绝对不整那些花里胡哨的哈哈哈)面试有三组老师,分别问你
让你的孩子悄悄拔尖
水墨烟岚
帮助孩子找到适合自己的方法,相信我,只要正确地努力,孩子的成绩一定会进步!1.这些准备一定要有:都有一个错题本;都有一个好题本;新课之前一定先预习;先复习后做作业;做作业要计时(限时训练)。2.计划管理——有规律长计划,短安排在制定一个长期目标的同时,一定要制定一个短期学习目标,这个目标要切合自己的实际,通过努力是完全可以实现的。最重要的是,能管住自己,也就挡住了各种学习上的负面干扰,如此,那个“
rust的指针作为函数返回值是直接传递,还是先销毁后创建?
wudixiaotie
返回值
这是我自己想到的问题,结果去知呼提问,还没等别人回答, 我自己就想到方法实验了。。
fn main() {
let mut a = 34;
println!("a's addr:{:p}", &a);
let p = &mut a;
println!("p's addr:{:p}", &a
java编程思想 -- 数据的初始化
百合不是茶
java 数据的初始化
1.使用构造器确保数据初始化
/*
*在ReckInitDemo类中创建Reck的对象
*/
public class ReckInitDemo {
public static void main(String[] args) {
//创建Reck对象
new Reck();
}
}
[航天与宇宙]为什么发射和回收航天器有档期
comsci
地球的大气层中有一个时空屏蔽层,这个层次会不定时的出现,如果该时空屏蔽层出现,那么将导致外层空间进入的任何物体被摧毁,而从地面发射到太空的飞船也将被摧毁...
所以,航天发射和飞船回收都需要等待这个时空屏蔽层消失之后,再进行
&
linux下批量替换文件内容
商人shang
linux 替换
1、网络上现成的资料
格式: sed -i "s/查找字段/替换字段/g" `grep 查找字段 -rl 路径`
linux sed 批量替换多个文件中的字符串
sed -i "s/oldstring/newstring/g" `grep oldstring -rl yourdir`
例如:替换/home下所有文件中的www.admi
网页在线天气预报
oloz
天气预报
网页在线调用天气预报
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transit
SpringMVC和Struts2比较
杨白白
springMVC
1. 入口
spring mvc的入口是servlet,而struts2是filter(这里要指出,filter和servlet是不同的。以前认为filter是servlet的一种特殊),这样就导致了二者的机制不同,这里就牵涉到servlet和filter的区别了。
参见:http://blog.csdn.net/zs15932616453/article/details/8832343
2
refuse copy, lazy girl!
小桔子
copy
妹妹坐船头啊啊啊啊!都打算一点点琢磨呢。文字编辑也写了基本功能了。。今天查资料,结果查到了人家写得完完整整的。我清楚的认识到:
1.那是我自己觉得写不出的高度
2.如果直接拿来用,很快就能解决问题
3.然后就是抄咩~~
4.肿么可以这样子,都不想写了今儿个,留着作参考吧!拒绝大抄特抄,慢慢一点点写!
apache与php整合
aichenglong
php apache web
一 apache web服务器
1 apeche web服务器的安装
1)下载Apache web服务器
2)配置域名(如果需要使用要在DNS上注册)
3)测试安装访问http://localhost/验证是否安装成功
2 apache管理
1)service.msc进行图形化管理
2)命令管理,配
Maven常用内置变量
AILIKES
maven
Built-in properties
${basedir} represents the directory containing pom.xml
${version} equivalent to ${project.version} (deprecated: ${pom.version})
Pom/Project properties
Al
java的类和对象
百合不是茶
JAVA面向对象 类 对象
java中的类:
java是面向对象的语言,解决问题的核心就是将问题看成是一个类,使用类来解决
java使用 class 类名 来创建类 ,在Java中类名要求和构造方法,Java的文件名是一样的
创建一个A类:
class A{
}
java中的类:将某两个事物有联系的属性包装在一个类中,再通
JS控制页面输入框为只读
bijian1013
JavaScript
在WEB应用开发当中,增、删除、改、查功能必不可少,为了减少以后维护的工作量,我们一般都只做一份页面,通过传入的参数控制其是新增、修改或者查看。而修改时需将待修改的信息从后台取到并显示出来,实际上就是查看的过程,唯一的区别是修改时,页面上所有的信息能修改,而查看页面上的信息不能修改。因此完全可以将其合并,但通过前端JS将查看页面的所有信息控制为只读,在信息量非常大时,就比较麻烦。
AngularJS与服务器交互
bijian1013
JavaScript AngularJS $http
对于AJAX应用(使用XMLHttpRequests)来说,向服务器发起请求的传统方式是:获取一个XMLHttpRequest对象的引用、发起请求、读取响应、检查状态码,最后处理服务端的响应。整个过程示例如下:
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange
[Maven学习笔记八]Maven常用插件应用
bit1129
maven
常用插件及其用法位于:http://maven.apache.org/plugins/
1. Jetty server plugin
2. Dependency copy plugin
3. Surefire Test plugin
4. Uber jar plugin
1. Jetty Pl
【Hive六】Hive用户自定义函数(UDF)
bit1129
自定义函数
1. 什么是Hive UDF
Hive是基于Hadoop中的MapReduce,提供HQL查询的数据仓库。Hive是一个很开放的系统,很多内容都支持用户定制,包括:
文件格式:Text File,Sequence File
内存中的数据格式: Java Integer/String, Hadoop IntWritable/Text
用户提供的 map/reduce 脚本:不管什么
杀掉nginx进程后丢失nginx.pid,如何重新启动nginx
ronin47
nginx 重启 pid丢失
nginx进程被意外关闭,使用nginx -s reload重启时报如下错误:nginx: [error] open() “/var/run/nginx.pid” failed (2: No such file or directory)这是因为nginx进程被杀死后pid丢失了,下一次再开启nginx -s reload时无法启动解决办法:nginx -s reload 只是用来告诉运行中的ng
UI设计中我们为什么需要设计动效
brotherlamp
UI ui教程 ui视频 ui资料 ui自学
随着国际大品牌苹果和谷歌的引领,最近越来越多的国内公司开始关注动效设计了,越来越多的团队已经意识到动效在产品用户体验中的重要性了,更多的UI设计师们也开始投身动效设计领域。
但是说到底,我们到底为什么需要动效设计?或者说我们到底需要什么样的动效?做动效设计也有段时间了,于是尝试用一些案例,从产品本身出发来说说我所思考的动效设计。
一、加强体验舒适度
嗯,就是让用户更加爽更加爽的用你的产品。
Spring中JdbcDaoSupport的DataSource注入问题
bylijinnan
java spring
参考以下两篇文章:
http://www.mkyong.com/spring/spring-jdbctemplate-jdbcdaosupport-examples/
http://stackoverflow.com/questions/4762229/spring-ldap-invoking-setter-methods-in-beans-configuration
Sprin
数据库连接池的工作原理
chicony
数据库连接池
随着信息技术的高速发展与广泛应用,数据库技术在信息技术领域中的位置越来越重要,尤其是网络应用和电子商务的迅速发展,都需要数据库技术支持动 态Web站点的运行,而传统的开发模式是:首先在主程序(如Servlet、Beans)中建立数据库连接;然后进行SQL操作,对数据库中的对象进行查 询、修改和删除等操作;最后断开数据库连接。使用这种开发模式,对
java 关键字
CrazyMizzz
java
关键字是事先定义的,有特别意义的标识符,有时又叫保留字。对于保留字,用户只能按照系统规定的方式使用,不能自行定义。
Java中的关键字按功能主要可以分为以下几类:
(1)访问修饰符
public,private,protected
p
Hive中的排序语法
daizj
排序 hive order by DISTRIBUTE BY sort by
Hive中的排序语法 2014.06.22 ORDER BY
hive中的ORDER BY语句和关系数据库中的sql语法相似。他会对查询结果做全局排序,这意味着所有的数据会传送到一个Reduce任务上,这样会导致在大数量的情况下,花费大量时间。
与数据库中 ORDER BY 的区别在于在hive.mapred.mode = strict模式下,必须指定 limit 否则执行会报错。
单态设计模式
dcj3sjt126com
设计模式
单例模式(Singleton)用于为一个类生成一个唯一的对象。最常用的地方是数据库连接。 使用单例模式生成一个对象后,该对象可以被其它众多对象所使用。
<?phpclass Example{ // 保存类实例在此属性中 private static&
svn locked
dcj3sjt126com
Lock
post-commit hook failed (exit code 1) with output:
svn: E155004: Working copy 'D:\xx\xxx' locked
svn: E200031: sqlite: attempt to write a readonly database
svn: E200031: sqlite: attempt to write a
ARM寄存器学习
e200702084
数据结构 C++ c C# F#
无论是学习哪一种处理器,首先需要明确的就是这种处理器的寄存器以及工作模式。
ARM有37个寄存器,其中31个通用寄存器,6个状态寄存器。
1、不分组寄存器(R0-R7)
不分组也就是说说,在所有的处理器模式下指的都时同一物理寄存器。在异常中断造成处理器模式切换时,由于不同的处理器模式使用一个名字相同的物理寄存器,就是
常用编码资料
gengzg
编码
List<UserInfo> list=GetUserS.GetUserList(11);
String json=JSON.toJSONString(list);
HashMap<Object,Object> hs=new HashMap<Object, Object>();
for(int i=0;i<10;i++)
{
进程 vs. 线程
hongtoushizi
线程 linux 进程
我们介绍了多进程和多线程,这是实现多任务最常用的两种方式。现在,我们来讨论一下这两种方式的优缺点。
首先,要实现多任务,通常我们会设计Master-Worker模式,Master负责分配任务,Worker负责执行任务,因此,多任务环境下,通常是一个Master,多个Worker。
如果用多进程实现Master-Worker,主进程就是Master,其他进程就是Worker。
如果用多线程实现
Linux定时Job:crontab -e 与 /etc/crontab 的区别
Josh_Persistence
linux crontab
一、linux中的crotab中的指定的时间只有5个部分:* * * * *
分别表示:分钟,小时,日,月,星期,具体说来:
第一段 代表分钟 0—59
第二段 代表小时 0—23
第三段 代表日期 1—31
第四段 代表月份 1—12
第五段 代表星期几,0代表星期日 0—6
如:
*/1 * * * * 每分钟执行一次。
*
KMP算法详解
hm4123660
数据结构 C++ 算法 字符串 KMP
字符串模式匹配我们相信大家都有遇过,然而我们也习惯用简单匹配法(即Brute-Force算法),其基本思路就是一个个逐一对比下去,这也是我们大家熟知的方法,然而这种算法的效率并不高,但利于理解。
假设主串s="ababcabcacbab",模式串为t="
枚举类型的单例模式
zhb8015
单例模式
E.编写一个包含单个元素的枚举类型[极推荐]。代码如下:
public enum MaYun {himself; //定义一个枚举的元素,就代表MaYun的一个实例private String anotherField;MaYun() {//MaYun诞生要做的事情//这个方法也可以去掉。将构造时候需要做的事情放在instance赋值的时候:/** himself = MaYun() {*
Kafka+Storm+HDFS
ssydxa219
storm
cd /myhome/usr/stormbin/storm nimbus &bin/storm supervisor &bin/storm ui &Kafka+Storm+HDFS整合实践kafka_2.9.2-0.8.1.1.tgzapache-storm-0.9.2-incubating.tar.gzKafka安装配置我们使用3台机器搭建Kafk
Java获取本地服务器的IP
中华好儿孙
java Web 获取服务器ip地址
System.out.println("getRequestURL:"+request.getRequestURL());
System.out.println("getLocalAddr:"+request.getLocalAddr());
System.out.println("getLocalPort:&quo