同程艺龙一面

2023-05-16

目录

1、说说HTML5

2、link标签要放到head之后,script标签要放到body标签结束之前,为什么

3、HTML语义化重要性

4、meta中的viewport干嘛的

5、P标签中的文字如何水平垂直居中

6、怎么将两个span标签在p标签内水平居中

7、子元素父元素不给宽高,怎么垂直水平居中

8、怎么将多列字体大小不同的子元素之间互相居中排列

9、怎么实现移动端适配

10、移动端如何实现0.5px边框

11、如何解决加载css出现不断闪烁空白问题

12、选择器

13、js中的数据类型

14、let var的区别

15、说说你还知道哪些ES6特性

16、原型和原型链

17、说说你是怎么理解闭包的

18、说说数组中你用到的哪些方法

19、利用flat方法如何将多维数组变为一维数组

20说说DOM事件有哪三个

21、stopPropagation preventDefault的区别

22、如何设置localStorage存活一定时间

23、如何实现人为垃圾回收强制delete 设置为null

24、适合字符串转数值型


1、说说HTML5

HTML5新特性

一、语义标签

语义标签使得页面的内容结构化,见名知义

header:定义了文档的头部区域

footer:定义了文档的尾部区域

nav:定义了文档的导航

section:定义了文档中的节

article:定义页面独立的内容区域

aside:定义页面的侧边栏内容

detailes:用于描述文档或文档某个部分的细节

summary:标签包含details元素的标题

dialog:定义对话框比如提示框

二、增强型表单

HTML5拥有多个新的表单input输入类型,这些新特性提供了更好的输入控制和验证

color:用于选取颜色

date:从一个日期选择器选择一个日期

datetime:选择一个日期(UTC时间)

datetimelocal:选择一个日期和时间(无时区)

email:包含email地址的输入域

month:选择一个月份

number:数值的输入域

range:一定范围内数字值的输入域

search:用于搜索域

tel:定义输入电话号码字段

time:选择一个时间

url:url地址的输入域

week:选择周和年

HTML5也新增以下表单元素

datalist:元素规定输入域的选项列表,使用<input>元素的list属性与<datalist>元素的id绑定

Keygen:提供一种验证用户的可靠方法,标签规定用于表单的密钥对生成器字段

output:用于不同类型的输出,比如计算或脚本输出

HTML5新增的表单属性

placehoder属性,简短的提示在用户输入值前会显示在输入域上。即我们常见的输入框默认提示,在用户输入后消失

required属性:是一个boolean属性,要求填写的输入域不能为空

pattern属性:描述了一个正则表达式用于验证input元素的值

min和max属性:设置元素最小值和最大值

step属性:为输入域规定合法的数字间隔

height属性和width属性,用于Image类型的input标签的高度和宽度

autofocus属性,是一个Boolean属性,规定在页面加载时,域自动地获得焦点

multiple属性:是一个boolean属性,规定input元素中可选择多个值

三、视频和音频

HTML5提供了播放音频文件的标准,即使用audio元素

<audio controls>
  <source src="horse.ogg" type="audio/ogg">
  <source src="horse.mp3" type="audio/mpeg">
您的浏览器不支持 audio 元素。
</audio>

control属性供添加播放、暂停和音量控件。

在audio之间需要插入浏览器不支持的audio元素的提示文本

audio元素允许使用多个source元素,source元素可以链接不同的音频文件,浏览器将使用第一个支持的音频文件

目前,audio元素支持三种音频格式文件MP3,WAV和org

HTML5规定了一种通过video

<video width="320" height="240" controls>
  <source src="movie.mp4" type="video/mp4">
  <source src="movie.ogg" type="video/ogg">
您的浏览器不支持Video标签。
</video>

control提供了播放、暂停和音量控件来控制视频。也可以使用dom操作来控制视频的播放暂停,如play和pause方法

同时video元素也提供了width和height属性控制元素的尺寸,如果设置的高度和宽度,所需的视频空间会在页面加载时保留。如果设置的高度和宽度,所需的视频空间会在页面加载时保留,如果没有设置这些属性,浏览器不知道大小的视频,浏览器就不能在加载时保留特定的空间,页面就会根据原始视频的大小而改变。

与标签之间插入的内容时提供给不支持video元素的浏览器显示的

video元素支持多个source元素,元素可以链接不同的视频文件。浏览器将使用第一个可识别的格式(MP4,webm和Ogg)

四、canvas绘图

五、SVG绘图

SVG是指可伸缩的矢量图形

六、地理定位

七、拖放API

八、WebSocket

2、link标签要放到head之后,script标签要放到body标签结束之前,为什么

css文件放在head里面,防止布局错乱,其实是放在任何位置都可行的,之所以推荐放在head标签里是因为浏览器代码解析是从上到下的,如果把css放在底部,当网速慢时,HTML代码加载完成后而css没加载完的话,会导致页面没有样式而难以阅读,所以先加载css样式能让页面正常显示

js放在body最后,防止js加载慢内容不显示

3、HTML语义化重要性

语义化标签,就是让标签有自己的含义,利用本身传达它所包含内容的一些信息,使浏览器和搜索引擎直观的认识标签和属性的用途和作用

过去我们常常采用DIV+CSS的方式布局页面,但DIV标签本身没有独特的含义,这样做的结果就是文档不够清晰,不利于浏览器对页面的读取,在分离CSS样式后,用户体验不友好

所以HTML5新增了很多语义化标签,使文档更具可读性,页面结构更清晰

为什么要用HTML5语义化标签?

1、代码结构清晰,可读性高,减少差异化,便于团队开发和维护

2、在页面没有加载CSS的情况下,也能呈现良好的内容结构,增加用户体验

3、对搜索引擎友好,良好的结构和语义,有助于爬虫抓取更多的有效信息

4、meta中的viewport干嘛的

meta viewport是专为移动设备下显示所设计的,只有检测到移动设备上使用包含meta的文档时,meta标签才会起作用

width表示移动设设备下显示的宽度为设备宽度(device-width)
height表示移动设设备下显示的宽度为设备宽度.
user-scalable表示用户缩放能力, no表示不允许.
initial-scale表示设备与视口的缩放比率
maximum和minimum分别表示缩放的最大最小值, 要注意的是, maximum必须必minimum大.
上面的meta标签就是告诉浏览器, 不要在移动端显示的时候缩放.

5、P标签中的文字如何水平垂直居中

html中p标签字体居中的方法。首先P标签给出宽和高,呈块状显示,水平居中属性text-align:center;垂直居中line-height:px;这里的line-height值和你给p标签的高度值是同一个值。

6、怎么将两个span标签在p标签内水平居中

将p标签设置属性:display:block;将它设置成块元素,然后

7、子元素父元素不给宽高,怎么垂直水平居中

水平居中

行内元素:如果父元素是块级元素,则给它的父元素设置text-align:center,如果不是,则先把它的父元素设置为块级元素,再给父元素设置text-align:center

块级元素:一、如果宽度确定,给其设置margin 0 ,auto;不限制宽度,这时候默认子元素和父元素一样,这时候需要设置子元素为display:inline-block;即将其转换为行内块级/行内元素,给父元素设置text-align:center;二、使用定位元素;首先设置父元素为相对定位,再设置子元素为绝对定位,设置子元素的left:50%,即让子元素的左上角居中,定宽度,设置绝对子元素的margin-left:-元素宽度的一半px,或者设置transform:translateX-50%;不限宽度:transform:translateX(-50%)三、利用flex布局实现,宽度定不定都可以,只需要给待处理的块级元素的父元素添加display:flex;justify-content:center

垂直居中

单行的行内元素,使其行高等于盒子的高度

定位:top:50%,margin-top:-元素高度的一半px,transform:translateY-50%

flex:align-items:center

水平垂直居中:一、top:0;right:0;bottom:0;left:0;margin:auto

方案二:设置父元素为相对定位,给子元素设置绝对定位,left:50%;top:50%;margin-left-元素宽度的一半px;margin-top:-元素高度的一半px

给子元素设置绝对定位,left:50%;top:50%

transform:translateX(-50%) translateY(-50%)

设置父元素为flex定位,justify-content:center;align-items:center

8、怎么将多列字体大小不同的子元素之间互相居中排列

9、怎么实现移动端适配

了解viewport

viewport即视窗,视口,用于显示网页部分的区域,在PC端视口即是浏览器窗口区域,在移动端,为了让页面展示更多的内容,视口的宽度默认不为设备的宽度,在移动端视口有三个概念:布局视口,视觉视窗,理想视窗

布局视窗:在浏览器窗口css的布局区域,布局视口的宽度限制css布局的宽。为了能在移动设备上正常显示那些为PC端浏览器设置的网站,移动设备上的浏览器都会把自己默认的viewport设为980px或其他值,一般都比移动端浏览器可视区域大很多,所以就会出现浏览器出现滚动条的情况

视觉视窗:终端设备显示网页的区域

理想视窗:针对当前设备最理想的展示页面的视窗,不会出现横向滚动条,页面全部展现在视窗内,理想视窗也就是终端屏幕的宽度

viewport详细设置

通过设置viewport可以设置页面大小,通过meta标签可以设置viewport信息,代码如下:

<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-sacle=1, maximum-scale=1" >

viewport需要搭配如下几个属性使用:

width:定义视口的宽度,单位为像素

height:定义视口的高度,单位为像素

initial-scale:定义网页初始缩放值

maximum-scale:定义缩放最大值

user-scaleable:定义用户是否可以缩放

适配方案

将页面的宽度设置为设置的视窗宽度后,即可进行移动端适配工作了

从适配的目的是在屏幕大小不同的终端设备拥有统一的界面,让拥有更大屏幕的终端展示更多的内容,从上面两个角度出发,核心思路是页面内容充满整个视窗

1、rem布局

rem是CSS3新增的一个相对单位,它以HTML元素的font-size为比例:

/* 设置html元素的字体大小为 16px,即 1rem = 16px */
html {
    font-size: 16px;
}
/* 设置box元素宽 160px,10rem = 160px */
.box {
    width: 10rem; /* 160px */
}

修改HTML元素的字体大小可以成比例的调整以rem为单位的属性,通过这一特性,我们可以实现将视窗按一定比例划分为一份一份的,当页面内元素刚好分完所有的分数,页面内容即充满整个视窗且无横向滚动条

以宽度为750像素的设计稿为例,有两个元素,一个占550个像素,另一个占750个像素:

// ...
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<div class="w-550px"></div>
<div class="full"></div>
<style>
    *{
        padding: 0;
        margin: 0;
    }
    .w-550px {
        width: 550rem;
        height: 100px;
        background-color: rgb(209, 255, 240);
    }
    .full {
        width: 750rem;
        height: 100px;
        background-color: rgb(195, 200, 199);
    }
</style>
<script>
    function setRem() {
        // 当前页面宽度相对于 750 宽的缩放比例,可根据自己需要修改
        const scale = document.documentElement.clientWidth / 750;
        document.documentElement.style.fontSize = scale + 'px';
    }
    setRem();
    window.onresize = setRem;
</script>

页面伸缩,网页布局也会进行伸缩。运行效果如下:

目前,除了IE8和更早版本外,所有浏览器均已经支持rem

2、VW/VH布局

vw/vh方案与rem方案类似,都是将页面分成一份一份的,只不过vw/vh是将页面分成100份,1vw=device-width/100

10、移动端如何实现0.5px边框

像素是屏幕上显示最小的单位,在一个1080p的屏幕上,它的像素数量是1920*1080,即横边有1920个像素,而竖边有1080个

像素本身有大小,如果一个像素越小,那么在同样大小的屏幕上,需要的像素点就越多,像素就越密集

一、直接设置0.5px

如果我们直接设置0.5px,在不同的浏览器会有不同的表现

二、使用scale缩放

<style>
.hr.scale-half {
    height: 1px;
    transform: scaleY(0.5);
}
</style>
    <p>1px + scaleY(0.5)</p>
    <div class="hr scale-half"></div>

线性渐变linear-gradient

boxshadow

11、如何解决加载css出现不断闪烁空白问题

12、选择器

选择器有:

1、通用选择器(如:*,即选择所有元素)

2、标签选择器(如:body,div,p,ul,li)

3,ID选择器

4、类选择器

5,后代选择器,如#head .nav ul li

6,子元素选择器(如:div>p)

7,伪类选择器(就是链接样式a元素的伪类,4中不同的状态:link,visited,active,hover)

8、伪元素选择器

!important>行内样式>ID选择器>类选择器>标签>通配符>继承>浏览器默认属性

13、js中的数据类型

基本数据类型:undefined、null、Boolean、number、string。基本数据类型的访问是按值访问的。基本类型的值是不可变的,任何方法都不能改变基本类型的值,比如对一个字符串调用投UpperCase方法,原始的字符串并不会发生改变,而会返回一个新的字符串。

基本类型的比较是值的比较

基本类型的变量是存放在栈区的,栈区包括了变量的标识符和变量的值

引用类型:Object、Array、function、date

引用类型的值是可变的,可以为引用类型添加属性和方法,也可以删除其属性和方法

引用类型的存储需要内存的栈区和堆区(堆区指内存里的堆内存)共同完成,栈区内存保存变量标识符和指向堆内存中该对象的指针,也可以说是该对象在堆内存的地址。

引用类型的比较时引用的比较,就是比较两个对象的堆内存中的地址是否相同
 

14、let var的区别

var与let的区别

(1)作用域

用var声明的变量的作用域是它当前的执行上下文,即如果是在任何函数外面,则是全局执行上下文,如果在函数里面,则是当前函数执行上下文。换句话说,var声明的变量的作用域只能是全局或者整个函数块的。

而let声明的变量的作用域则是它当前所处代码块,即它的作用域可以是全局或者整个函数块,也可以是if,while,switch等用{}限定的代码块

另外,var和let的作用域规则都是一样的,其声明的变量只在其声明的块或子块中可用


  
  1. function varTest() {

  2. var a = 1;

  3. {

  4. var a = 2; // 函数块中,同一个变量

  5. console.log(a); // 2

  6. }

  7. console.log(a); // 2

  8. }

  9. function letTest() {

  10. let a = 1;

  11. {

  12. let a = 2; // 代码块中,新的变量

  13. console.log(a); // 2

  14. }

  15. console.log(a); // 1

  16. }

  17. varTest();

  18. letTest();

从上述实例中可以看出,let声明的变量的作用域可以比var声明的变量的作用域有更小的限定范围,更具灵活

(2)重复声明

var允许在同一作用域中重复声明,而let不允许在同一作用域中重复声明,否则会抛出异常

var相关示例代码


  
  1. var a = 1;

  2. var a = 2;

  3. console.log(a) // 2

  4. function test() {

  5. var a = 3;

  6. var a = 4;

  7. console.log(a) // 4

  8. }

  9. test()

  10. varTest();

  11. letTest();

let相关示例代码


  
  1. if(false) {

  2. let a = 1;

  3. let a = 2; // SyntaxError: Identifier 'a' has already been declared

  4. }

  5. switch(index) {

  6. case 0:

  7. let a = 1;

  8. break;

  9. default:

  10. let a = 2; // SyntaxError: Identifier 'a' has already been declared

  11. break;

  12. }

从上述示例中可以看出,let 声明的重复性检查是发生在词法分析阶段,也就是在代码正式开始执行之前就会进行检查。

(3)绑定全局对象

var在全局环境声明变量,会在全局对象里新建一个属性,而let在全局环境声明变量,则不会在全局对象里创建一个属性

示例代码:


  
  1. var foo = 'global'

  2. let bar = 'global'

  3. console.log(this.foo) // global

  4. console.log(this.bar) // undefined

那这里就一个疑问,let在全局环境变量不在全局对象的属性中,那它是保存在哪的呢?


  
  1. var foo = 'global'

  2. let bar = 'global'

  3. function test() {}

  4. console.dir(test)

在Chrome浏览器的控制台中,通过执行上述代码,查看 test 函数的作用域链,其结果如图:

test 函数的作用域链

由上图可知,let 在全局环境声明变量 bar 保存在[[Scopes]][0]: Script这个变量对象的属性中,而[[Scopes]][1]: Global就是我们常说的全局对象。

(4)变量提升与暂停死区

  1. var 声明的变量在执行上下文创建阶段就会被「创建」和「初始化」,因此对于执行阶段来说,可以在声明之前使用。

  2. let 声明的变量在执行上下文创建阶段只会被「创建」而不会被「初始化」,因此对于执行阶段来说,如果在其定义执行前使用,相当于使用了未被初始化的变量,会报错。

  3. 3let与const异同

  4. const 与 let 很类似,都具有上面提到的 let 的特性,唯一区别就在于 const 声明的是一个只读变量,声明之后不允许改变其值。因此,const 一旦声明必须初始化,否则会报错。

    示例代码:

    
      
    1. let a;

    2. const b = "constant"

    3. a = "variable"

15、说说你还知道哪些ES6特性

1、let const

块级作用域,不具备变量提升,不能重复声明

const块级作用域,变量声明不提升,在声明时必须被赋值,声明要大写,不可修改

2、箭头函数

不需要function关键字来创建函数,省略return关键字,继承当前上下文的this关键字

3、允许对函数参数设置默认值

4、spread/rest操作符,指的是运算符...;spread可以简单理解为分散,rest可以简单理解为合并

5、对象词法扩展,ES6运行声明在对象字面量时使用简写语法,来初始化属性变量和函数的定义方法,并且允许在对象属性中进行计算操作

6,二进制和八进制字面量

ES6支持二进制和八进制的字面量,通常在数字前面添加0o,或者0o即可将其转换为八进制,二进制使用0b或者0B

7.,对象和数组的解构

8,对象超类,ES6中允许使用super方法

9for...ofvSfor...in

for...of用来遍历一个迭代器,如数组

for...in用来遍历对象中的属性

16、原型和原型链

一、原型

这个图生动的表达了js中的构造函数,实例对象以及原型对象的关系

每个对象都有__proto__属性,并且指向它的原型对象

每个构造函数都有它的prototype原型对象

prototype原型对象里的constructor指向它的构造函数

new一个构造函数会形成它的实例对象

原型链

从概念上来看,每个对象都有一个原型,这个原型还可以有它自己的元素,以此类推,形成一个原型链

那么什么时候会用到一个原型链呢?当我们查找特定属性的时候,我们先去这个对象里找,如果没有的话就去它的原型对象里面去,如果还是没有的话,再去原型对象的原型对象里去寻找,这个操作就被委托在原型链上

如果没找到,会一直找下去吗?原型链是有终点的,不会一直找下去,当Object.prototype.__proto__===null时,查找结束,返回undefined

17、说说你是怎么理解闭包的

JavaScript语言的特别之处就在于函数内部可以读取全局变量,但是在函数外部无法获取函数内部的变量

处于种种原因,有时候需要获取内部的局部变量,正常情况下是办不到的,只有通过变通的方法才能实现,那就是在函数内部,再定义一个函数

JavaScript语言特有的链式作用域结构,子对象会一级一级地向上寻找父对象的变量,所以,父对象的所有变量,子对象都是可见的,反之则不成立

闭包就是能够读取其他函数内部变量的函数,闭包的用途一个是可以读取函数内部的变量,另一个是让这些变量始终保存在内存中,由于闭包会使得函数中的变量都被保存在内存中,所以内存消耗很大,不能滥用闭包,否则会造成网页的性能问题,在IE中可能会导致内存泄漏,解决的方法是在推出函数之前,将不使用的局部变量全部删除

闭包会在函数外部,改变父函数内部的值,所以,如果你把父函数当做对象使用,把闭包当做它的公用方法,把内部变量当做它的私有属性,这时一定要小心,不要随便改变父函数的内部变量值

18、说说数组中你用到的哪些方法

连接两个或多个数组:concat

push、unshift添加元素,push末尾加,unshift开头加

shift,pop删除元素,shift删除第一个,pop删最后一个

sort数组排序

reverse反转数组

slice截取数组

indexOf()lastINdexOf()索引方法,不改变原数组,两个方法都是返回要查找的项在数组中首次出现的位置,没找到的话,就返回-1

forEach遍历

19、利用flat方法如何将多维数组变为一维数组

20说说DOM事件有哪三个

DOM2级事件规定事件流包含三个阶段:事件捕获阶段,处于目标阶段,事件冒泡阶段

21、stopPropagation preventDefault的区别

stopPropagation阻止事件冒泡到父元素

preventDefault()通知web浏览器不要执行与事件关联的默认行为

return false,同时阻止事件冒泡和默认事件

22、如何设置localStorage存活一定时间

23、如何实现人为垃圾回收强制delete 设置为null

24、适合字符串转数值型

一转换函数

parseInt、parseFloat

二、强制类型转换

Boolean把给定的值转换成Boolean型

Number把给定的值转换为数字

STring把给定的值转换成字符串

三、利用js变量弱类型转换

str-0

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

同程艺龙一面 的相关文章

  • iOS图片的填充方式UIImageView(contentMode)有什么不同

    UIViewContentModeScaleAspectFit 这个图片都会在view里面显示 xff0c 并且比例不变 这就是说 如果图片和view的比例不一样 就会有留白如下图1 图1 UIViewContentModeScaleAsp
  • windows 下包管理工具vcpkg安装

    主要参考博文 xff1a vcpkg安装及使用 我叫电池的博客 CSDN博客 vcpkg安装 由于需要在离线环境下面搭建开发环境 xff0c 所有的包只能离线安装了 xff0c 包括这个管理工具vcpkg的安装 xff0c 也必须是离线安装
  • 【Python】如何发布编写好的Python应用程序之Python Release for Windows(附踩坑经验)

    运筹优化博士 xff0c 只做原创博文 更多关于运筹学 xff0c 优化理论 xff0c 数据科学领域的内容 xff0c 欢迎关注我的知乎账号 xff1a https www zhihu com people wen yu zhi 37 最
  • ubuntu 下更改docker的默认位置

    首先查看docker位置 xff1a docker info 原先的位置默认应该都在 var lib docker 停止docker服务 systemctl stop docker 查看量大容的位置 xff0c 然后在上面创建转移目录文件夹
  • 编译 NDK 编译 freerdp 转载:测试成功

    最近著名的开源rdp客户端freerdp的android版本终于出来了 xff0c 经过9个月的跳票终于release了第一版 下面简单说说编译的过程 这个是需要用到cmake来编译 xff0c 所以系统推荐用ubuntu或者mac xff
  • 1.VMWare-Ubuntu-内存不足处理办法 2.VMWare-Ubuntu-扩展内存后黑屏解决办法

    问题描述 xff1a 1 VMWare Ubuntu 内存不足 2 VMWare Ubuntu 扩展内存后黑屏 解决办法 xff1a 详情参考文章https www cnblogs com codingdog p 14879313 html
  • Linux目录解释

    bin bin是binary 二进制 的缩写 这个目录是对UNIX系统习惯的沿袭 xff0c 存放着使用者最经常使用的命令 例如 xff1a cp ls cat boot 这里存放的是启动LINUX时使用的一些核心文件 dev dev是de
  • 数据库的插入更新语句

    目的 xff1a 实现在数据库插入数据的时候 xff0c 只对重复的数据进行更新 xff1b 实现方式 xff1a 1 在表中建立一个唯一索引 xff0c 主键 xff08 已有唯一索引的特性 xff09 2 在插入数据 sql语句 xff
  • Linux安装Yapi

    需求 xff1a 按公司需求 xff0c 前后端开发 xff0c 由于过往开发都是后端先进行 xff0c 前端须等后端开发玩接口 xff0c 依照开发文档才能进行接口调试 xff0c 大大增加了项目时间 xff0c 故采用YAPI来作为解决
  • mysql8.0 安装 修改密码 允许远程连接

    mysql从5 7一下子跳跃到了8 0 xff0c 其中的改变还是很大 xff0c 有点这里就不说了 xff0c 小伙伴们自己去百度了解一下 xff0c 这里重点说一下 xff0c 安装的事 1 解压后 xff0c 文件下下面是没有my i
  • IOS开发入门之二——第一个App

    如果你对怎么开始IOS开发都不懂的话 xff0c 请看点下面的链接 xff0c 先学习关于IOS开发环境的配置以及Swift语言入门 xff1a IOS开发入门之一 Swift语言基础 本章将教大家创建一个标准的苹果手机应用并让它在手机模拟
  • IOS开发入门之五——storyboard的使用(上)

    需要iOS开发视频资料可以加我微信 1914532832 验证信息请注明 xff1a IOS开发 上节介绍了纯代码开发 xff0c 就是所有页面全部用代码来写 xff0c 纯代码开发缺点就是比较慢的 xff0c 而且很不直观 xff0c 需
  • UILabel文字内容自动换行

    UILabel视图其实是可以显示多行文本的 xff0c 但是如果不做设置 xff0c UILabel默认是显示一行的 xff0c 并且如果文字内容太多 xff0c 超过屏幕的部分就显示不出来了 其实UILabel设置多行文本很简单 xff0
  • 谈谈android的动画

    android动画为app提供更丰富 更绚丽的视觉效果 xff0c 因此app或多或少都会添加动画效果 在此总结一下 xff0c 本人android开发过程中 xff0c 有关动画的内容 一 android动画种类和区别 android动画
  • android好用的第三方库2018使用总结

    需要android开发视频资料可以加我微信 1914532832 验证信息请注明 xff1a android开发 不知不觉2018年已经过了大半 xff0c 来总结一下今年用到的一些好用的框架和第三方库 xff0c 包括App架构 异步通信
  • Linux(debian7)操作基础(四)之CPU频率调整

    在Linux中 xff0c 内核的开发者定义了一套框架模型来完成CPU频率动态调整这一目的 xff0c 它就是CPU Freq系统 如下为CPU的几种模式 xff08 governor参数 xff09 xff1a ondemand xff1
  • ubuntu oh-my-zsh

    简单说明下shell bash zsh sh shell是一个用C语言编写的程序 xff0c 是一种脚本编程语言 xff0c 是一个连接内核和用户的软件 xff0c 是用户使用Linux的桥梁 shell是指一种应用程序 xff0c 这个应
  • 获取携程机票信息(爬虫)

    仅供个人学习使用 xff01 2022 01 01 版 span class token comment 64 author AIslandX span span class token comment 64 date 2022 01 01
  • Ubuntu下~/.bashrc文件的恢复方法

    问题描述 如果不小心在更改环境变量文件 bashrc时出现将文件内容覆盖的情况 xff0c 比如echo hello world gt bashrc没有使用添加模式而是覆盖模式 xff0e NOTE xff1a 非覆盖情况下 xff0c 不
  • Debian11 普通用户启动Wireshark没有权限

    普通用户启动 wireshark 报错 xff0c 没有权限 可以在终端使用 sudo wireshark 启动 解决方法如下 xff1a 1 添加wireshark用户组 sudo groupadd wireshark 2 将dumpca

随机推荐

  • 批量创建txt文本

    最近在进行html学习时 xff0c 用的编辑器是txt文本 xff0c 但每次都要新建文本 xff0c 比较麻烦 xff0c 所以打算创建多个文本 批量创建文件方法 xff1a 1 打开Excel表格 输入以下内容 可以利用excel的特
  • 文本相似度计算工具类

    package com xxxx xclouddesk utils import cn hutool core collection CollUtil import cn hutool extra tokenizer Result impo
  • c++20 ranges库

    ranges库在对元素进行逐一操作或者判断时可以省掉很多循环体 xff0c 使代码的可读性提高 例如 xff0c 要从一个vector中拿出所有的偶数并求平方并逆序排列 xff0c 生成一个新的vector xff0c 以前这样写 xff1
  • Linux : nano: command not found

    nano command not found 这是因为在Linux中没有安装nano而已 我们只需要安装一下就好了 安装命令 yum install nano 遇到选择 一路Y就行了
  • 【Shotcut】用最短路径编辑一个视频

    目录 一 图解最短路径二 新建工程三 导入素材四 编辑视频4 1 图片素材拖入时间线 xff0c 自动添加V1视频轨道4 2 视频素材拖入图片素材后面4 3 时间线添加音频轨道4 4 音频素材拖入音频轨道 xff0c 和视频素材左端对齐4
  • 【Shotcut】画中画_调整大小位置

    目录 一 大小画中画1 1 新建工程1 2 导入素材1 3 将一个视频拖入时间线 xff0c 自动创建V1轨道1 4 Ctrl 43 I 新建V2轨道 xff0c 将另一个视频拖入1 5 将两段视频剪齐1 6 对上面的V2轨道添加Size
  • Docker安装mysql 8 忽略表名大小写,通过命令修改my.cnf配置文件,无需进容器重新初始化数据库

    看了很多博客都是需要先启动容器再进容器内部修改my cnf 重新初始化数据库 xff0c 然而DockerHub直接就对容器启动时设置了my cnf的修改方式 xff0c 具体步骤简单如下 xff1a 官方参考链接 xff1a https
  • 解决 Windows 10 自带虚拟机运行 Ubuntu 18.04 卡顿的问题

    来源 xff1a A guide how to run Ubuntu 18 04 in Enhanced Mode in Hyper V 系统要求 控制端 xff1a Windows 10 xff0c 1803以及之后 受控端 xff1a
  • linux常用命令command not found的解决方案(自己整理)

    1 ifconfig command not found 是因为没有安装此命令包 xff0c 安装方法 xff1a yum install net tools2 sz和rz文件上传命令command not found 执行 xff1a w
  • Window7升级 PowerShell

    一 查看当前PowerShell版本 1 命令行输入powershell 2 命令行输入get host 二 下载新版PowerShell xff08 下载说明 xff1a https docs microsoft com zh cn po
  • MSE(均方误差)函数和RMSE函数

    本文链接 xff1a https blog csdn net qq 36512295 article details 86526799 MSE xff08 均方误差 xff09 函数一般用来检测模型的预测值和真实值之间的偏差 训练集 xff
  • PSNR-峰值信噪比(原理及Python代码实现)

    本文链接 xff1a https blog csdn net leviopku article details 84586446 PSNR的全称为 Peak Signal to Noise Ratio xff0c 直译为中文就是峰值信噪比
  • matlab向量的模

    向量 v 中的元素 v1 v2 v3 vn xff0c 下式给出其幅度 xff1a v 61 v12 43 v22 43 v32 43 43 vn2 MATLAB中需要采按照下述步骤进行向量的模的计算 xff1a 采取的矢量及自身的积 xf
  • 图像阶梯效应

    图像阶梯效应现象产生原因 在利用二阶偏微分方程进行平滑图像过程中 xff0c 有时会出现 阶梯效应 或者是 块效应 即图像处理后某些区域内灰度相同 区域内灰度相同 xff0c 表示该区域任意一点其灰度值的一阶导数为0 这说明随着迭代次数增加
  • 邻接矩阵

    逻辑结构分为两部分 xff1a V和E集合 xff0c 其中 xff0c V是顶点 xff0c E是边 因此 xff0c 用一个一维数组存放图中所有顶点数据 xff1b 用一个二维数组存放顶点间关系 xff08 边或弧 xff09 的数据
  • JavaScript

    1 a 任何数值除以0都会导致错误而终止程序执行 但是在JavaScript中 xff0c 会返回特殊的值 xff0c 因此不会影响程序的执行 比0大的数除以0 xff0c 会得到无穷大 xff0c 所以js用infinity来x显示出来
  • -操作系统

    1进程同步的引入背景 xff1a 在多道程序环境下 xff0c 进程是并发执行的 xff0c 不同进程之间存在这不同的相互制约关系 为了协调进程之间的相互制约关系 xff0c 引入了进程同步的概念 2在有n个进程共享一个互斥段 xff0c
  • -网络基础

    1 物理层 xff1a RJ45 CLOCK IEEE802 3 xff08 中继器 集线器 网关 xff09 数据链路 xff1a PPP FR HDLC VLAN MAC xff08 网桥 xff0c 交换机 xff09 网络层 xff
  • 恒生面试准备

    目录 1 flex布局 2 vue的特性有哪些 xff1f 3 Vue中父子组件的传值的方式有几种 xff1f 它们有什么数据上的限制 4 项目中用了vue组件传值的方式有哪些 5 项目中用到的组件 6 浏览器输入url到渲染网页的过程 7
  • 同程艺龙一面

    目录 1 说说HTML5 2 link标签要放到head之后 xff0c script标签要放到body标签结束之前 xff0c 为什么 3 HTML语义化重要性 4 meta中的viewport干嘛的 5 P标签中的文字如何水平垂直居中