1)HTML只是描述了页面的结构和内容,也就是骨
2)CSS描述的是页面的样式,也就是页面具体长成什么样子,也就是皮
3)具体来说就是就是描述了任意一个网页的元素,大小,位置,字体,颜色,背景,边框,引入CSS就可以让页面变得好看
4)每一个CSS的代码包含着两部分:选择器+对应的应用的属性
4.1)上面就是一个最基础的CSS代码,p就是选择器,此处就表示选择页面中的所有P标签;
{}里面是键值对结构,每一个键值对就对应着一个CSS的属性
4.2)键值对之间使用";"来进行分割,习惯上每一个键值对之间会独占一行
4.3)键和值之间要使用冒号来进行分割,习惯上会在冒号后面加上一个空格
4.4)/* */这是CSS中的注释,CSS是不支持//这样的注释
5)CSS代码可以放在HTML文件里面,通常是放在style标签里面,然后style标签可以放在HTML文件里面的任意位置
6)color是设置字体颜色的,font-size是设置字体大小的
一)CSS的引入方式:
1)内部样式CSS ,在style标签里面,style标签可以放到head中,也可以放到其他位置,也可以存在多个style标签
2)行内CSS ,在元素里面有一个style属性,样式针对当前元素生效,优先级比内部样式更高,不避写选择器了
2.1)当前这种写法是通过html标签中的style样式来进行应用一些样式
2.2)当前这种内联样式,只是属于一种比较特殊的用法,通常会搭配JS来进行使用,但是这种写法只是适合于当前样式特别简单的情况,如果样式复杂,这里就会显示的很乱
2.3)内联样式只是针对于当前元素进行生效,不需要写选择器,也不用选{},直接写CSS属性即可;
helloworld
//设置div里面的字体设置成红色,字体大小是30px
3)外部CSS,这是把CSS代码单独提取出来,放到一个.CSS文件里面,然后再从HTML代码里面,通过link标签来引入该CSS文件,在HTML中通过link标签引入CSS文件;
这种方式可以让多个HTML页面共用同一份样式,比如说写一个网站,这个网站里面可能会有很多的页面,但是很多页面的样式都是相似的
这种link标签,一般习惯于放在html的head标签里面,这个标签可以存在多份,可以通过多个link标签来引入不同的CSS
同时在开发者工具里面也会提醒我们,这个样式是在哪一个CSS来进行引入的
后缀名是.css
1)当浏览器首次访问网站的时候,就会下载这些CSS到本地,后面进行第二次访问的时候,这些CSS就不用进行二次下载了,这些CSS就会存放在浏览器的缓存里面,他所存在的意义就是为了提高访问速度
2)真实的网站,CSS越长,从服务器下载的内容就越多,就越消耗带宽,所以我们要减少空格和缩进;带宽是很贵的
3)如果说针对CSS样式多了一些换行,虽然对于程序员友好了,但是整体的CSS文件会变大,由于CSS文件都是通过网络传输传输给浏览器的,然后由浏览器来进行解析的,如果说CSS文件变大了,就更吃网络带宽,就更影响效率,JS不光会把换行缩进去掉,还会把长的变量名给去除;
4)因此当我们通过开发者工具,去看其他的CSS代码基本上都是紧凑风格,通过前端开发工具进行打包,但是我们在开发阶段的代码基本上都是使用的是宽松的换行风格;
5)HTML和CSS都是不区分大小写的,CSS中通常使用颈柱命名法,通常加上-来区分不同的单词
二)CSS基础选择器
一)标签选择器:
选中一类标签,例如上图中的选中P标签,就会让当前所有的P标签都会被选中,会根据标签名,把当前所有的标签都进行选中;
二)类选择器:
2.0)在CSS中创建类来指定哪些元素要遵守该样式,开头中的.表示类;.后面中的部分是类的名字;一个类可以被多个标签来使用,一个标签也可以使用多个类;
2.1)通过类选择器,就可以随心所欲地进行选择任意想要的元素,但是从理论上来说只是需要一种选择器就足够了
2.2)首先我们需要在CSS代码中创建一个类名,在对应的html元素中,通过class属性来引入这个类名,此时具有该类名的元素,就都会应用上相关的CSS属性
咬人猫
类和类之间用空格来分开
hhhh
类选择器以.进行开头,后面是类的名字
现在我们需要来做一个场景:class类相当于是分类
将下面的第一个P标签和第二个P标签字体放大并进行变色,剩下的两个p标签不变:
三)id选择器:
每一个html元素都有一个id属性,并且要求这个属性是页面中唯一的值,当id选择器在创建的时候是需要#来进行开头的,id选择器相当于是按照身份证号来查找
我们需要先给被选中的元素加上一个id属性,因为id在一个页面中是不可以重复的,因此id选择器只能选中
四)通配符选择器:选中页面所有元素
*{ 将页面中的所有字体大小设成30像素,背景颜色设成蓝色
font-size:30px;
background-color:blue;
}
1)最大的用途就是取消浏览器的默认样式
2)一个专业的前端开发工程师,在开发过程中,有相当一部分是要处理浏览器当中的兼容性(写一份代码,在不同的浏览器上面有不同的效果)
三)复合选择器:
1)后代选择器:使用空格来进行分割
先指定一个父亲元素,然后再指定一个子元素,后代不一定非的是子元素,还可以是孙子元素,况且后代选择器不一定非得是标签选择器的组合,还可以是任意的基础选择器的组合用空格来进行分割
选择器1 选择器2{};
1.1)选择器之间必须要有空格
1.2)选择器1和选择器2都可以是标签选择器,类选择器或者是ID选择器
2)后代选择器:通过多个选择器的组合,能够选择某一个元素里面的子元素
通过多个选择器的组合,可以进行选择某一个元素里面的子元素
Title
咬人猫
兔总裁
阿叶君
Document
姓名
电话号码
密码
李佳伟
12503487
12503487
周韵杠
1257
12587
这里的意思是先找到类名是list的元素
然后再找到里面的li标签
再找到里面的a标签
但是要注意li不一定是是.list的子元素
也可以是孙子元素;a不一定是list的子元素
也可以是孙子元素,所以最终可以把li去掉
.list li a{
color:green;
font-size:40px;
}
3)子选择器:
选择器1>选择器2 先找选择器1,再找选择器2,选择器2只能是选择器1的子元素
也就是说选择器2不能是选择器1的孙子元素
举个例子将ul标签对应的li子标签下面的a标签变成绿色并且将字体放大
.list>a{
color:green;
font-size:50px;
}
1)上面这么写元素是不会被选中的,因为class是list对应的标签的子标签并不是a标签,而是li标签; 2)先去找class属性是.list对应的标签,再去找.list对应的子标签li,再去找li对应的子标签a
.list>li>a{
color:green;
font-size:50px;
}
在下图中:将所有的咬人猫变成红色:
.cat a{
color:red;
}
.cat ul li a{
color:red;
}
.cat ul a{
color:red;
}
.cat>ul>li>a{
color:red;
}
li>a{
color:red;
}
li a{
color:red;
}
4)并集选择器:并列的写多个选择器,期间使用逗号来进行分割
选择器1,选择器2{};
这里的并集选择器可以写简单的选择器,也是可以写复合的选择器
下面是将所有表中字段的值变成红色
姓名
电话号码
密码
李佳伟
12503487
12503487
周韵杠
1257
12587
5)伪类选择器:
5.1)链接伪类选择器:和a标签来进行搭配使用:link/visited/hover/active{}
a{
font-size:30px;
}
a:link{
color:black;
}
a:visited{
color:yellow;
}
a:hover{
color:green;
}
a:active{
color:red;
}
我是一个超链接
1)从来没有被访问过:link;
2)已经被访问过:visited(1,2条是专门针对a标签来说的)
3)鼠标悬停:hover(没有按鼠标),鼠标悬停的时候,应用这个样式
4)活动链接:鼠标按下的时候,应用于这个样式:active,(3,4针对任何的标签都生效);
上面主要是进行描述鼠标被按下的时候所进行执行的样式
5.2)伪类选择器中的一种,获取焦点的时候被选中,它是专门针对输入框来说的,像哪个输入框里面写元素,里面的字体就可以显示成指定的颜色,当我们的鼠标移动到别的输入框之后,字体就变成了别的颜色
input:focus
{
color:red;
}
四)常见的CSS属性:
CSS 语法 (w3school.com.cn)
一)字体的设置以及文本属性:
一)设置字体类型:
font-family:" ",宋体,隶书,微软雅黑,里面可以设置成汉字
对于font属性是可以继承的,子元素会继承父类元素的相关属性;
中国我爱你
1)在body中设置的字体,div中也是可以生效的,有关于font相关的CSS属性是可以进行继承的,子元素会继承父类元素的相关属性
2)如果需要在某一个元素中使用不同的字体,我们就可以针对这个元素来进行单独设置字体,此时新的字体样式会自动的覆盖掉继承于父元素的字体样式
二)设置标签中的字体大小:font-size:" ",里面的单位是像素;
三)字体的粗细:font-weight:取值有两种风格,一种是数字,一种是取值
normal:定义标准的字符
bold:定义粗体字符
bolder:定义更粗的字符
lighter:定义更细的字符,从100到900表示有粗到细的字符,数字越大越粗
400等同于normal,700等同于bold
四)font-style是倾斜样式,很少把正常的字体倾斜,而是把倾斜的字变成正规的,属性值直接变成nomal即可;
em标签就是自动带斜体的
em{
font-family:"宋体";
font-size:30px;
font-style:normal;
}
五)文本颜色:color属性
5.1)表示形式:color:rgb(A,B,C)
5.1.1)A,B,C都是表示0-255范围内的数值,表示颜色的范围,A为红,B是green,C是蓝色,
其中0就表示这个分量没有值,255就是直接把这个分量拉满;
5.1.2)还可以加上这样一个属性rgba(A,B,C,D),D表示透明度,它的范围是0-1的小数,通过透明度,可以实现一些半透明的效果,1表示不透明,在网页中啥也看不到,0表示半透明;
三个分量都调成255,就会得到黑色
5.2)我们也可以直接显示颜色,red,blue;
5.3)这里我们要区分一下背景颜色background-color和color
color是把对应的文字设置想要的颜色
5.4)但是backgrond-color是设置文字本后面的颜色,并可以通过height和width来设置背景颜色覆盖的范围,同时rgba也可以搭配背景颜色来使用,可以实现半透明效果
也可以写成16进制数字来进行表示,我们用#进行开头,#00ff00
00表示没有,ff表示拉满
5.5) 但是这对于16进制的写法,可能会有缩写
必须是形如#XXYYZZ的形式可以缩写成#XYZ
00ff00--->0f0
p{
background-color:red;
height:300px;
width:400px;
}
五)文本对齐(左对齐,右对齐,居中对齐)
1)主要是控制div或者是一些其他标签的文字在浏览器的整个页面上或者是背景区域快是靠左对齐还是靠右对齐
2)text-algin不光可以控制文字对齐,也是可以控制文字或者图片等在浏览器界面上元素居中或者靠左对齐
3)这里的文本对齐是通过text-align来实现的,但是他只可以控制水平方向的对齐,只可以控制一行;如果想要控制在水平方向1/3位置处对齐,就要考虑其他的CSS标签;
4)下面我们写的样式,三个div标签,是独占三行的,最外边好套着一个div标签
5)text-align只能控制元素所在的那一行是水平居中,还是垂直居中
.father{
background-color:green;
width:500px;
height:500px;
}
.one{
text-align:left;
}
.two{
text-align:right;
}
.three{
text-align: center;
}
再次举个例子:
Document
你好Java
你好Python
你好C++
六)文本样式:text-decoration:这里是不需要加双引号的;
underline:下划线 overline:上划线 none:啥都没有 line-through:删除线;
.one{
text-decoration:none;
;
}
.two{
text-decoration:underline;
}
.three{
text-decoration:overline;
}
.four{
text-decoration:line-through;
}
这是正常情况
下划线
上划线
删除线
下划线上划线最大的用法,并不是说给这些元素加上这些线,而是把已经带了线的元素去除掉,例如:
a{
text-decoration:none;
color:red;
}
我是一个超链接
七)文本缩进:
应用场景:我们一般希望在第一行中可以缩进两个字,我们就用text-indent来表示;
p{
font-size:39px;
text-indent:46px;//2em缩进两个字,1em是20px
}
1)这个属性只是控制段落的首行缩进,其他行是不会影响的,单位可以使用px或者是em
2)使用em是更好的,1em就表示当前元素的文字大小,是相当于当前元素的文字大小
假设当前的p标签里面的文字大小是16px,那么1em=16px,2em=32px,0.5em=8px
3)text-indent缩进可以是负数,表示反向缩进,最终就会导致文字冒出去了
八)行高:
1)行高=字体大小+行间距
2)假设现在有三行文字,第一行最顶端到第二行最顶端的距离就是行高;相当于是文字本身的高度加上行间距;
3)上一个元素的底部到下一个元素的最下端
行高,其实本质上来说,就是顶线到顶线的距离,也是底线到底线的距离,也是中线到中线的距离,也是基线到基线的距离
行间距:第一行文字最下面底线的距离到第二行基线的距离就是行间距
快捷键小技巧:
1)在VS中按下.one以进行回车,就生成了一个div标签况且他的class属性是one
2)这样就可以进行调节行高的尺寸
4)其实在进行设置行高的时候,其实是会对上下两个方向都会产生影响,因为上下的两个边距是相等的;
正是因为行高是上下均等,因此我们就可以基于行高来实现垂直方向文本的居中
水平方向文本居中:text-align:center;
垂直方向剧中:line-height: center;
创建一个div标签设置背景色,来实现文字在背景色里面的水平居中和垂直居中
.one{
height:200px;
width:150px;
text-align: center;
line-height:200px;
background-color:red;
}
总结:
使用 text-algin:center来进行实现标签中的文本在背景区域中的水平方向上居中
使用 line-height:XXpx来实现标签中的文本在背景区域中的垂直方向剧中
这里面的像素的具体设置XX===背景的宽度
1)控制文字水平居中:text-align:center;
2)控制文字垂直居中:line-height:父亲元素高度
前两个属性一般是设置按钮中的文字在按钮中间,或者表格中的文字居中
两者搭配可以控制处置水平居中
text-align是控制文字水平方向对齐,line-hight控制文字垂直方向对齐;
两者相结和,就可以控制我们想要的文字在中心位置;通过设置行高=父亲元素的高度,就可以实现文字垂直居中的效果;
这两种方法发都是针对于文字属性来说的,本质上都是移动文字,设置文字的布局;
div{
background-color:red;
height:300px;
width:400px;
text-align:center;
line-height:300px;
}
我是一个人
先设置一个背景框,text-align先让他在水平位置上(第一行处于中间位置),再通过设置行高让他处于竖直方向的居中位置
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Id tenetur dolorum odit, dicta aperiam deserunt sint provident, minus molestiae reiciendis blanditiis, facilis commodi obcaecati tempora doloribus necessitatibus optio mollitia perferendis?
Lorem ipsum, dolor sit amet consectetur adipisicing elit. Voluptatum, ullam? Voluptas odit corporis dolores quas similique maxime eligendi? Fugiat eius accusantium tempore. Vitae porro obcaecati corrupti officiis minus iure doloremque.
Lorem ipsum dolor sit amet consectetur adipisicing elit. Soluta minus provident voluptatibus, praesentium veritatis ducimus nesciunt dolorem exercitationem. Sit dolorum hic quas accusamus magni veniam laudantium ad obcaecati. Et, libero.
这是我们就发现了,行高变大了(第一行顶端的距离到第二行顶端的距离变大了)
你可能感兴趣的:(java-ee,java)
Long类型前后端数据不一致
igotyback
前端
响应给前端的数据浏览器控制台中response中看到的Long类型的数据是正常的到前端数据不一致前后端数据类型不匹配是一个常见问题,尤其是当后端使用Java的Long类型(64位)与前端JavaScript的Number类型(最大安全整数为2^53-1,即16位)进行数据交互时,很容易出现精度丢失的问题。这是因为JavaScript中的Number类型无法安全地表示超过16位的整数。为了解决这个问
LocalDateTime 转 String
igotyback
java 开发语言
importjava.time.LocalDateTime;importjava.time.format.DateTimeFormatter;publicclassMain{publicstaticvoidmain(String[]args){//获取当前时间LocalDateTimenow=LocalDateTime.now();//定义日期格式化器DateTimeFormatterformat
Linux下QT开发的动态库界面弹出操作(SDL2)
13jjyao
QT类 qt 开发语言 sdl2 linux
需求:操作系统为linux,开发框架为qt,做成需带界面的qt动态库,调用方为java等非qt程序难点:调用方为java等非qt程序,也就是说调用方肯定不带QApplication::exec(),缺少了这个,QTimer等事件和QT创建的窗口将不能弹出(包括opencv也是不能弹出);这与qt调用本身qt库是有本质的区别的思路:1.调用方缺QApplication::exec(),那么我们在接口
DIV+CSS+JavaScript技术制作网页(旅游主题网页设计与制作)云南大理
STU学生网页设计
网页设计 期末网页作业 html静态网页 html5期末大作业 网页设计 web大作业
️精彩专栏推荐作者主页:【进入主页—获取更多源码】web前端期末大作业:【HTML5网页期末作业(1000套)】程序员有趣的告白方式:【HTML七夕情人节表白网页制作(110套)】文章目录二、网站介绍三、网站效果▶️1.视频演示2.图片演示四、网站代码HTML结构代码CSS样式代码五、更多源码二、网站介绍网站布局方面:计划采用目前主流的、能兼容各大主流浏览器、显示效果稳定的浮动网页布局结构。网站程
【华为OD机试真题2023B卷 JAVA&JS】We Are A Team
若博豆
java 算法 华为 javascript
华为OD2023(B卷)机试题库全覆盖,刷题指南点这里WeAreATeam时间限制:1秒|内存限制:32768K|语言限制:不限题目描述:总共有n个人在机房,每个人有一个标号(1<=标号<=n),他们分成了多个团队,需要你根据收到的m条消息判定指定的两个人是否在一个团队中,具体的:1、消息构成为:abc,整数a、b分别代
关于城市旅游的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:做与用户的交互行为文章目录前端学习路线
node.js学习
小猿L
node.js node.js 学习 vim
node.js学习实操及笔记温故node.js,node.js学习实操过程及笔记~node.js学习视频node.js官网node.js中文网实操笔记githubcsdn笔记为什么学node.js可以让别人访问我们编写的网页为后续的框架学习打下基础,三大框架vuereactangular离不开node.jsnode.js是什么官网:node.js是一个开源的、跨平台的运行JavaScript的运行
Java 重写(Override)与重载(Overload)
叨唧唧的
Java重写(Override)与重载(Overload)重写(Override)重写是子类对父类的允许访问的方法的实现过程进行重新编写,返回值和形参都不能改变。即外壳不变,核心重写!重写的好处在于子类可以根据需要,定义特定于自己的行为。也就是说子类能够根据需要实现父类的方法。重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。例如:父类的一个方法申明了一个检查异常IOExceptio
简单了解 JVM
记得开心一点啊
jvm
目录♫什么是JVM♫JVM的运行流程♫JVM运行时数据区♪虚拟机栈♪本地方法栈♪堆♪程序计数器♪方法区/元数据区♫类加载的过程♫双亲委派模型♫垃圾回收机制♫什么是JVMJVM是JavaVirtualMachine的简称,意为Java虚拟机。虚拟机是指通过软件模拟的具有完整硬件功能的、运行在一个完全隔离的环境中的完整计算机系统(如:JVM、VMwave、VirtualBox)。JVM和其他两个虚拟机
1分钟解决 -bash: mvn: command not found,在Centos 7中安装Maven
Energet!c
开发语言
1分钟解决-bash:mvn:commandnotfound,在Centos7中安装Maven检查Java环境1下载Maven2解压Maven3配置环境变量4验证安装5常见问题与注意事项6总结检查Java环境Maven依赖Java环境,请确保系统已经安装了Java并配置了环境变量。可以通过以下命令检查:java-version如果未安装,请先安装Java。1下载Maven从官网下载:前往Apach
Java企业面试题3
马龙强_
java
1.break和continue的作用(智*图)break:用于完全退出一个循环(如for,while)或一个switch语句。当在循环体内遇到break语句时,程序会立即跳出当前循环体,继续执行循环之后的代码。continue:用于跳过当前循环体中剩余的部分,并开始下一次循环。如果是在for循环中使用continue,则会直接进行条件判断以决定是否执行下一轮循环。2.if分支语句和switch分
JVM、JRE和 JDK:理解Java开发的三大核心组件
Y雨何时停T
Java java
Java是一门跨平台的编程语言,它的成功离不开背后强大的运行环境与开发工具的支持。在Java的生态中,JVM(Java虚拟机)、JRE(Java运行时环境)和JDK(Java开发工具包)是三个至关重要的核心组件。本文将探讨JVM、JDK和JRE的区别,帮助你更好地理解Java的运行机制。1.JVM:Java虚拟机(JavaVirtualMachine)什么是JVM?JVM,即Java虚拟机,是Ja
Java面试题精选:消息队列(二)
芒果不是芒
Java面试题精选 java kafka
一、Kafka的特性1.消息持久化:消息存储在磁盘,所以消息不会丢失2.高吞吐量:可以轻松实现单机百万级别的并发3.扩展性:扩展性强,还是动态扩展4.多客户端支持:支持多种语言(Java、C、C++、GO、)5.KafkaStreams(一个天生的流处理):在双十一或者销售大屏就会用到这种流处理。使用KafkaStreams可以快速的把销售额统计出来6.安全机制:Kafka进行生产或者消费的时候会
白骑士的Java教学基础篇 2.5 控制流语句
白骑士所长
Java 教学 java 开发语言
欢迎继续学习Java编程的基础篇!在前面的章节中,我们了解了Java的变量、数据类型和运算符。接下来,我们将探讨Java中的控制流语句。控制流语句用于控制程序的执行顺序,使我们能够根据特定条件执行不同的代码块,或重复执行某段代码。这是编写复杂程序的基础。通过学习这一节内容,你将掌握如何使用条件语句和循环语句来编写更加灵活和高效的代码。条件语句条件语句用于根据条件的真假来执行不同的代码块。if语句‘
python语法——三目运算符
HappyRocking
python python 三目运算符
在java中,有三目运算符,如:intc=(a>b)?a:b表示c取两者中的较大值。但是在python,不能直接这样使用,估计是因为冒号在python有分行的关键作用。那么在python中,如何实现类似功能呢?可以使用ifelse语句,也是一行可以完成,格式为:aifbelsec表示如果b为True,则表达式等于a,否则等于c。如:c=(aif(a>b)elseb)同样是完成了取最大值的功能。
ArrayList 源码解析
程序猿进阶
Java基础 ArrayList List java 面试 性能优化 架构设计 idea
ArrayList是Java集合框架中的一个动态数组实现,提供了可变大小的数组功能。它继承自AbstractList并实现了List接口,是顺序容器,即元素存放的数据与放进去的顺序相同,允许放入null元素,底层通过数组实现。除该类未实现同步外,其余跟Vector大致相同。每个ArrayList都有一个容量capacity,表示底层数组的实际大小,容器内存储元素的个数不能多于当前容量。当向容器中添
Java爬虫框架(一)--架构设计
狼图腾-狼之传说
java 框架 java 任务 html解析器 存储 电子商务
一、架构图那里搜网络爬虫框架主要针对电子商务网站进行数据爬取,分析,存储,索引。爬虫:爬虫负责爬取,解析,处理电子商务网站的网页的内容数据库:存储商品信息索引:商品的全文搜索索引Task队列:需要爬取的网页列表Visited表:已经爬取过的网页列表爬虫监控平台:web平台可以启动,停止爬虫,管理爬虫,task队列,visited表。二、爬虫1.流程1)Scheduler启动爬虫器,TaskMast
Java:爬虫框架
dingcho
Java java 爬虫
一、ApacheNutch2【参考地址】Nutch是一个开源Java实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。Nutch致力于让每个人能很容易,同时花费很少就可以配置世界一流的Web搜索引擎.为了完成这一宏伟的目标,Nutch必须能够做到:每个月取几十亿网页为这些网页维护一个索引对索引文件进行每秒上千次的搜索提供高质量的搜索结果简单来说Nutch支持分
python怎么将png转为tif_png转tif
weixin_39977276
发国外的文章要求图片是tif,cmyk色彩空间的。大小尺寸还有要求。比如网上大神多,找到了一段代码,感谢!https://www.jianshu.com/p/ec2af4311f56https://github.com/KevinZc007/image2Tifimportjava.awt.image.BufferedImage;importjava.io.File;importjava.io.Fi
JavaScript 中,深拷贝(Deep Copy)和浅拷贝(Shallow Copy)
跳房子的前端
前端面试 javascript 开发语言 ecmascript
在JavaScript中,深拷贝(DeepCopy)和浅拷贝(ShallowCopy)是用于复制对象或数组的两种不同方法。了解它们的区别和应用场景对于避免潜在的bugs和高效地处理数据非常重要。以下是对深拷贝和浅拷贝的详细解释,包括它们的概念、用途、优缺点以及实现方式。1.浅拷贝(ShallowCopy)概念定义:浅拷贝是指创建一个新的对象或数组,其中包含了原对象或数组的基本数据类型的值和对引用数
JAVA·一个简单的登录窗口
MortalTom
java 开发语言 学习
文章目录概要整体架构流程技术名词解释技术细节资源概要JavaSwing是Java基础类库的一部分,主要用于开发图形用户界面(GUI)程序整体架构流程新建项目,导入sql.jar包(链接放在了文末),编译项目并运行技术名词解释一、特点丰富的组件提供了多种可视化组件,如按钮(JButton)、文本框(JTextField)、标签(JLabel)、下拉列表(JComboBox)等,可以满足不同的界面设计
WebMagic:强大的Java爬虫框架解析与实战
Aaron_945
Java java 爬虫 开发语言
文章目录引言官网链接WebMagic原理概述基础使用1.添加依赖2.编写PageProcessor高级使用1.自定义Pipeline2.分布式抓取优点结论引言在大数据时代,网络爬虫作为数据收集的重要工具,扮演着不可或缺的角色。Java作为一门广泛使用的编程语言,在爬虫开发领域也有其独特的优势。WebMagic是一个开源的Java爬虫框架,它提供了简单灵活的API,支持多线程、分布式抓取,以及丰富的
博客网站制作教程
2401_85194651
java maven
首先就是技术框架:后端:Java+SpringBoot数据库:MySQL前端:Vue.js数据库连接:JPA(JavaPersistenceAPI)1.项目结构blog-app/├──backend/│├──src/main/java/com/example/blogapp/││├──BlogApplication.java││├──config/│││└──DatabaseConfig.java
00. 这里整理了最全的爬虫框架(Java + Python)
有一只柴犬
爬虫系列 爬虫 java python
目录1、前言2、什么是网络爬虫3、常见的爬虫框架3.1、java框架3.1.1、WebMagic3.1.2、Jsoup3.1.3、HttpClient3.1.4、Crawler4j3.1.5、HtmlUnit3.1.6、Selenium3.2、Python框架3.2.1、Scrapy3.2.2、BeautifulSoup+Requests3.2.3、Selenium3.2.4、PyQuery3.2
JAVA学习笔记之23种设计模式学习
victorfreedom
Java技术 设计模式 android java 常用设计模式
博主最近买了《设计模式》这本书来学习,无奈这本书是以C++语言为基础进行说明,整个学习流程下来效率不是很高,虽然有的设计模式通俗易懂,但感觉还是没有充分的掌握了所有的设计模式。于是博主百度了一番,发现有大神写过了这方面的问题,于是博主迅速拿来学习。一、设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器
JavaScript `Map` 和 `WeakMap`详细解释
跳房子的前端
JavaScript 原生方法 javascript 前端 开发语言
在JavaScript中,Map和WeakMap都是用于存储键值对的数据结构,但它们有一些关键的不同之处。MapMap是一种可以存储任意类型的键值对的集合。它保持了键值对的插入顺序,并且可以通过键快速查找对应的值。Map提供了一些非常有用的方法和属性来操作这些数据对:set(key,value):将一个键值对添加到Map中。如果键已经存在,则更新其对应的值。get(key):获取指定键的值。如果键
切换淘宝最新npm镜像源是
hai40587
npm 前端 node.js
切换淘宝最新npm镜像源是一个相对简单的过程,但首先需要明确当前淘宝npm镜像源的状态和最新的镜像地址。由于网络环境和服务更新,镜像源的具体地址可能会发生变化,因此,我将基于当前可获取的信息,提供一个通用的切换步骤,并附上最新的镜像地址(截至回答时)。一、了解npm镜像源npm(NodePackageManager)是JavaScript的包管理器,用于安装、更新和管理项目依赖。由于npm官方仓库
【Java】已解决:java.util.concurrent.CompletionException
屿小夏
java 开发语言
文章目录一、分析问题背景出现问题的场景代码片段二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项已解决:java.util.concurrent.CompletionException一、分析问题背景在Java并发编程中,java.util.concurrent.CompletionException是一种常见的运行时异常,通常在使用CompletableFuture进行异步计算时出现
设计模式之建造者模式(通俗易懂--代码辅助理解【Java版】)
ok!ko
设计模式 设计模式 建造者模式 java
文章目录设计模式概述1、建造者模式2、建造者模式使用场景3、优点4、缺点5、主要角色6、代码示例:1)实现要求2)UML图3)实现步骤:1)创建一个表示食物条目和食物包装的接口2)创建实现Packing接口的实体类3)创建实现Item接口的抽象类,该类提供了默认的功能4)创建扩展了Burger和ColdDrink的实体类5)创建一个Meal类,带有上面定义的Item对象6)创建一个MealBuil
html页面js获取参数值
0624chenhong
html
1.js获取参数值js
function GetQueryString(name)
{
var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
var r = windo
MongoDB 在多线程高并发下的问题
BigCat2013
mongodb DB 高并发 重复数据
最近项目用到 MongoDB , 主要是一些读取数据及改状态位的操作. 因为是结合了最近流行的 Storm进行大数据的分析处理,并将分析结果插入Vertica数据库,所以在多线程高并发的情境下, 会发现 Vertica 数据库中有部分重复的数据. 这到底是什么原因导致的呢?笔者开始也是一筹莫 展,重复去看 MongoDB 的 API , 终于有了新发现 :
com.mongodb.DB 这个类有
c++ 用类模版实现链表(c++语言程序设计第四版示例代码)
CrazyMizzz
数据结构 C++
#include<iostream>
#include<cassert>
using namespace std;
template<class T>
class Node
{
private:
Node<T> * next;
public:
T data;
最近情况
麦田的设计者
感慨 考试 生活
在五月黄梅天的岁月里,一年两次的软考又要开始了。到目前为止,我已经考了多达三次的软考,最后的结果就是通过了初级考试(程序员)。人啊,就是不满足,考了初级就希望考中级,于是,这学期我就报考了中级,明天就要考试。感觉机会不大,期待奇迹发生吧。这个学期忙于练车,写项目,反正最后是一团糟。后天还要考试科目二。这个星期真的是很艰难的一周,希望能快点度过。
linux系统中用pkill踢出在线登录用户
被触发
linux
由于linux服务器允许多用户登录,公司很多人知道密码,工作造成一定的障碍所以需要有时踢出指定的用户
1/#who 查出当前有那些终端登录(用 w 命令更详细)
# who
root pts/0 2010-10-28 09:36 (192
仿QQ聊天第二版
肆无忌惮_
qq
在第一版之上的改进内容:
第一版链接:
http://479001499.iteye.com/admin/blogs/2100893
用map存起来号码对应的聊天窗口对象,解决私聊的时候所有消息发到一个窗口的问题.
增加ViewInfo类,这个是信息预览的窗口,如果是自己的信息,则可以进行编辑.
信息修改后上传至服务器再告诉所有用户,自己的窗口
java读取配置文件
知了ing
1,java读取.properties配置文件
InputStream in;
try {
in = test.class.getClassLoader().getResourceAsStream("config/ipnetOracle.properties");//配置文件的路径
Properties p = new Properties()
__attribute__ 你知多少?
矮蛋蛋
C++ gcc
原文地址:
http://www.cnblogs.com/astwish/p/3460618.html
GNU C 的一大特色就是__attribute__ 机制。__attribute__ 可以设置函数属性(Function Attribute )、变量属性(Variable Attribute )和类型属性(Type Attribute )。
__attribute__ 书写特征是:
jsoup使用笔记
alleni123
java 爬虫 JSoup
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.7.3</version>
</dependency>
2014/08/28
今天遇到这种形式,
JAVA中的集合 Collectio 和Map的简单使用及方法
百合不是茶
list map set
List ,set ,map的使用方法和区别
java容器类类库的用途是保存对象,并将其分为两个概念:
Collection集合:一个独立的序列,这些序列都服从一条或多条规则;List必须按顺序保存元素 ,set不能重复元素;Queue按照排队规则来确定对象产生的顺序(通常与他们被插入的
杀LINUX的JOB进程
bijian1013
linux unix
今天发现数据库一个JOB一直在执行,都执行了好几个小时还在执行,所以想办法给删除掉
系统环境:
ORACLE 10G
Linux操作系统
操作步骤如下:
第一步.查询出来那个job在运行,找个对应的SID字段
select * from dba_jobs_running--找到job对应的sid
&n
Spring AOP详解
bijian1013
java spring AOP
最近项目中遇到了以下几点需求,仔细思考之后,觉得采用AOP来解决。一方面是为了以更加灵活的方式来解决问题,另一方面是借此机会深入学习Spring AOP相关的内容。例如,以下需求不用AOP肯定也能解决,至于是否牵强附会,仁者见仁智者见智。
1.对部分函数的调用进行日志记录,用于观察特定问题在运行过程中的函数调用
[Gson六]Gson类型适配器(TypeAdapter)
bit1129
Adapter
TypeAdapter的使用动机
Gson在序列化和反序列化时,默认情况下,是按照POJO类的字段属性名和JSON串键进行一一映射匹配,然后把JSON串的键对应的值转换成POJO相同字段对应的值,反之亦然,在这个过程中有一个JSON串Key对应的Value和对象之间如何转换(序列化/反序列化)的问题。
以Date为例,在序列化和反序列化时,Gson默认使用java.
【spark八十七】给定Driver Program, 如何判断哪些代码在Driver运行,哪些代码在Worker上执行
bit1129
driver
Driver Program是用户编写的提交给Spark集群执行的application,它包含两部分
作为驱动: Driver与Master、Worker协作完成application进程的启动、DAG划分、计算任务封装、计算任务分发到各个计算节点(Worker)、计算资源的分配等。
计算逻辑本身,当计算任务在Worker执行时,执行计算逻辑完成application的计算任务
nginx 经验总结
ronin47
nginx 总结
深感nginx的强大,只学了皮毛,把学下的记录。
获取Header 信息,一般是以$http_XX(XX是小写)
获取body,通过接口,再展开,根据K取V
获取uri,以$arg_XX
&n
轩辕互动-1.求三个整数中第二大的数2.整型数组的平衡点
bylijinnan
数组
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ExoWeb {
public static void main(String[] args) {
ExoWeb ew=new ExoWeb();
System.out.pri
Netty源码学习-Java-NIO-Reactor
bylijinnan
java 多线程 netty
Netty里面采用了NIO-based Reactor Pattern
了解这个模式对学习Netty非常有帮助
参考以下两篇文章:
http://jeewanthad.blogspot.com/2013/02/reactor-pattern-explained-part-1.html
http://gee.cs.oswego.edu/dl/cpjslides/nio.pdf
AOP通俗理解
cngolon
spring AOP
1.我所知道的aop 初看aop,上来就是一大堆术语,而且还有个拉风的名字,面向切面编程,都说是OOP的一种有益补充等等。一下子让你不知所措,心想着:怪不得很多人都和 我说aop多难多难。当我看进去以后,我才发现:它就是一些java基础上的朴实无华的应用,包括ioc,包括许许多多这样的名词,都是万变不离其宗而 已。 2.为什么用aop&nb
cursor variable 实例
ctrain
variable
create or replace procedure proc_test01
as
type emp_row is record(
empno emp.empno%type,
ename emp.ename%type,
job emp.job%type,
mgr emp.mgr%type,
hiberdate emp.hiredate%type,
sal emp.sal%t
shell报bash: service: command not found解决方法
daizj
linux shell service jps
今天在执行一个脚本时,本来是想在脚本中启动hdfs和hive等程序,可以在执行到service hive-server start等启动服务的命令时会报错,最终解决方法记录一下:
脚本报错如下:
./olap_quick_intall.sh: line 57: service: command not found
./olap_quick_intall.sh: line 59
40个迹象表明你还是PHP菜鸟
dcj3sjt126com
设计模式 PHP 正则表达式 oop
你是PHP菜鸟,如果你:1. 不会利用如phpDoc 这样的工具来恰当地注释你的代码2. 对优秀的集成开发环境如Zend Studio 或Eclipse PDT 视而不见3. 从未用过任何形式的版本控制系统,如Subclipse4. 不采用某种编码与命名标准 ,以及通用约定,不能在项目开发周期里贯彻落实5. 不使用统一开发方式6. 不转换(或)也不验证某些输入或SQL查询串(译注:参考PHP相关函
Android逐帧动画的实现
dcj3sjt126com
android
一、代码实现:
private ImageView iv;
private AnimationDrawable ad;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout
java远程调用linux的命令或者脚本
eksliang
linux ganymed-ssh2
转载请出自出处:
http://eksliang.iteye.com/blog/2105862
Java通过SSH2协议执行远程Shell脚本(ganymed-ssh2-build210.jar)
使用步骤如下:
1.导包
官网下载:
http://www.ganymed.ethz.ch/ssh2/
ma
adb端口被占用问题
gqdy365
adb
最近重新安装的电脑,配置了新环境,老是出现:
adb server is out of date. killing...
ADB server didn't ACK
* failed to start daemon *
百度了一下,说是端口被占用,我开个eclipse,然后打开cmd,就提示这个,很烦人。
一个比较彻底的解决办法就是修改
ASP.NET使用FileUpload上传文件
hvt
.net C# hovertree asp.net webform
前台代码:
<asp:FileUpload ID="fuKeleyi" runat="server" />
<asp:Button ID="BtnUp" runat="server" onclick="BtnUp_Click" Text="上 传" />
代码之谜(四)- 浮点数(从惊讶到思考)
justjavac
浮点数 精度 代码之谜 IEEE
在『代码之谜』系列的前几篇文章中,很多次出现了浮点数。 浮点数在很多编程语言中被称为简单数据类型,其实,浮点数比起那些复杂数据类型(比如字符串)来说, 一点都不简单。
单单是说明 IEEE浮点数 就可以写一本书了,我将用几篇博文来简单的说说我所理解的浮点数,算是抛砖引玉吧。 一次面试
记得多年前我招聘 Java 程序员时的一次关于浮点数、二分法、编码的面试, 多年以后,他已经称为了一名很出色的
数据结构随记_1
lx.asymmetric
数据结构 笔记
第一章
1.数据结构包括数据的
逻辑结构、数据的物理/存储结构和数据的逻辑关系这三个方面的内容。 2.数据的存储结构可用四种基本的存储方法表示,它们分别是
顺序存储、链式存储 、索引存储 和 散列存储。 3.数据运算最常用的有五种,分别是
查找/检索、排序、插入、删除、修改。 4.算法主要有以下五个特性:
输入、输出、可行性、确定性和有穷性。 5.算法分析的
linux的会话和进程组
网络接口
linux
会话: 一个或多个进程组。起于用户登录,终止于用户退出。此期间所有进程都属于这个会话期。会话首进程:调用setsid创建会话的进程1.规定组长进程不能调用setsid,因为调用setsid后,调用进程会成为新的进程组的组长进程.如何保证? 先调用fork,然后终止父进程,此时由于子进程的进程组ID为父进程的进程组ID,而子进程的ID是重新分配的,所以保证子进程不会是进程组长,从而子进程可以调用se
二维数组 元素的连续求解
1140566087
二维数组 ACM
import java.util.HashMap;
public class Title {
public static void main(String[] args){
f();
}
// 二位数组的应用
//12、二维数组中,哪一行或哪一列的连续存放的0的个数最多,是几个0。注意,是“连续”。
public static void f(){
也谈什么时候Java比C++快
windshome
java C++
刚打开iteye就看到这个标题“Java什么时候比C++快”,觉得很好笑。
你要比,就比同等水平的基础上的相比,笨蛋写得C代码和C++代码,去和高手写的Java代码比效率,有什么意义呢?
我是写密码算法的,深刻知道算法C和C++实现和Java实现之间的效率差,甚至也比对过C代码和汇编代码的效率差,计算机是个死的东西,再怎么优化,Java也就是和C