FE知识1

2024-02-25 18:12
文章标签 知识 fe

本文主要是介绍FE知识1,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.BFC理解,那些可以开启BFC

BFC 英文名为 Block Formatting Context (块级格式化上下文)

  • 内部的盒子会在垂直方向上一个接一个的放置
  • BFC 就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素,反之亦然
  • BFC的作用
    元素开启BFC后,子元素不会发生margin塌陷问题,解决margin重叠(塌陷)问题
    元素开启BFC后,子元素脱离文档流父元素无法撑开,解决子元素浮动的问题,
  • BFC有几种常见的方法:
    满足下列条件之一就可以触发 BFC:
    HTML 根元素
    position 为 absolute 或 fixed
    float 属性不为 none(常用)
    overflow 不为 visible(常用)例如hidden、auto或scroll。
    display 为 inline-block, table-cell, table-caption, flex

2.标准盒模型和怪异盒模型区别,如何设置

通过CSS3的box-sizing属性来控制元素的盒模型。
当box-sizing属性的值为content-box时,使用的是标准盒模型;
当box-sizing属性的值为border-box时,使用的是怪异盒模型。

在标准盒模型中,元素的总宽度是由元素的内容宽度(content)、内边距(padding)、边框(border)和外边距(margin)四部分相加得到的。css中设置盒子的width,height只代表内容的尺寸,不包括内边距、边框和外边距。

在怪异盒模型中,元素的总宽度是由元素的内容宽度(content)加上内边距(padding)和边框(border)三部分相加得到的。也就是说,css中设置盒子的width,height,(元素的宽度和高度)不仅包括内容的尺寸,还包括内边距和边框。

3.rem,em区别

em和rem都是在CSS布局中常用的相对长度单位;

  • em,em是相对于当前元素的字体大小。
  • rem是CSS3新增的相对长度单位,全称为root em,是相对于根元素(通常是HTML元素)。通常的做法是给HTML元素设置一个字体大小,然后其他元素的长度单位就为rem。这意味着,如果HTML元素的font-size是20px,那么1rem就等于20px

4.数据类型,typeof null 是什么?

  • 基本数据类型,也被称为原始值,包括:

Number:数值类型,包括整数和浮点数,也可以表示为科学记数法的形式。例如 123,0.123,1.23e4 等。
String:字符串类型,用于表示文本信息,比如 ‘Hello World’。
Boolean:布尔类型,只有两个可能的值,即 true 和 false。
Undefined:未定义类型,表示变量已经声明,但还未赋值。
Null:空类型,表示变量没有值。
Symbol:符号类型,ES6 新增的数据类型,主要用于创建唯一的标识符。
BigInt:大整数类型,ES 2020新增,能够表示超过 Number 类型大小限制的整数。

  • 引用数据类型,引用数据类型,包括:
    Object:对象类型,包括普通对象、数组和函数等。

typeof null == ‘object’

在 JavaScript 中,数据类型在底层都是以二进制形式表示的,二进制的前三位为 0 会被 typeof 判定为对象类型,如下所示:

000 - 对象,数据是对象的应用
1 - 整型,数据是31位带符号整数
010 - 双精度类型,数据是双精度数字
100 - 字符串,数据是字符串
110 - 布尔类型,数据是布尔值
而 null 值的二进制表示全是 0 ,自然前三位当然也是 000,因此,typeof 会误以为是对象类型。如果想要知道 null 的真实数据类型,可以通过下面的方式来获取。

Object.prototype.toString.call(null) ; // [object Null]

5.原型链

JavaScript中的每个对象都有一个内部的[[Prototype]]属性,也称为原型(prototype),它指向另一个对象或者null。当我们访问一个对象的属性或方法时,如果该对象本身没有这个属性或方法,JavaScript会沿着它的原型链一层层向上查找,直到找到该属性或方法或者原型链到达顶端(即Object.prototype,它是所有对象的祖先)为止。

在JavaScript中,每个对象都有一个指向它的原型的链接,这就是所谓的原型链。原型链是JavaScript实现继承的一种方式。

  • 原型链的工作原理
    当尝试访问一个对象的属性时,JavaScript不仅会在该对象本身上查找,还会在其原型上查找,然后再查找其原型的原型,这个过程会一直持续到找到匹配的属性或达到原型链的末尾。如果最终没有找到匹配的属性,那么JavaScript会返回undefined。

6.闭包,闭包会有什么问题,内存泄漏,怎么进行垃圾回收

(1) 闭包是有权访问另一个函数作用域变量的函数
(2) 闭包一般是函数嵌套,一个函数返回另外一个函数,内部函数访问外部函数的变量就形成了一个闭包
(3) 闭包的优点是可以私有化变量,将变量私有化到函数内部,并在私有化的基础上进行数据保持
(4) 闭包在防抖节流函数柯里化,都应用里数据保持这个特性
(5) 在防抖函数中,第一次点击的时候,我们会let一个time一个定时器,如果不采用闭包的话,下次触发函数会重新创建一个新的定时器,两个定时器的引用不同,是没有关联的,使用闭包可以直接在内存中找到之前创建的计时器,调用就可以直接拿到对应的定时器的时间
(6) 闭包的缺点是容易造成内存泄露,因为闭包创建的变量会一直存在内存中,需要及时置空,否则会造成内存泄露,影响程序性能

7.flex:1 是什么缩写

flex: 1 实际上是三个属性的缩写:flex-grow: 1; flex-shrink: 1 flex-basis: auto;
可放大可缩小,

8.vue.use做了那些事件

可以通过Vue.use方法来注册插件。该方法接收一个插件对象作为参数,该对象必须包含一个名为install的方法。如果插件对象带有install方法,Vue.use会执行该方法,并将Vue构造函数作为第一个参数传入。如果插件对象是一个函数,Vue.use会直接将该函数作为插件的注册方法,同样将Vue构造函数作为第一个参数。

Vue.use的工作流程包括以下步骤:

1.检查插件是否已经注册,如果已经注册则直接跳过注册过程。
2.处理入参,将第一个参数之后的参数归集,并在首部塞入this上下文。
3.执行注册方法,如果插件对象有install方法,则调用该方法,传入处理后的参数。如果插件对象是一个函数,则直接让该函数执行。
4.缓存插件,以避免重复注册。

9.跨域解决方法

1.JSONP
动态创建script请求
带上callback,服务器执行带上参数回调方法

缺点
具有局限性,只支持GET请求
不安全,可能会遭受XSS攻击

2.cors(跨域资源共享
需要浏览器和服务器同时支持

分为简单请求和非简单请求
简单请求不会触发cors预检请求

简单请求
浏览器直接发出

非简单请求
在正式通信前进行一次HTTP查询请求,称为预检请求
浏览器会询问服务器,当前所在网页是否在服务器允许访问的范围内,
以及可以使用哪些HTTP请求和头信息字段,
只有得到肯定的答复,才会进行正式的HTTP请求,否则就会报错

预检请求使用的请求方法是OPTIONS

3.postMessage跨域
是HTML5中XMLHttpRequest中的API

解决以下问题
页面和其打开的新窗口的数据传递
多窗口之间的消息传递
页面与嵌套的iframe消息传递
上面三个场景的跨域数据传递

a.html


<iframe id="iframe" src="http://www.domain2.com/b.html" style="display:none;"></iframe>
<script>var iframe = document.getElementById('iframe');iframe.onload = function () {var data = {name: 'aym'};// 向domain2传送跨域数据   iframe.contentWindow.postMessage(JSON.stringify(data), 'http://www.domain2.com');};// 接受domain2返回数据window.addEventListener('message', function (e) {alert('data from domain2 ---> ' + e.data);}, false);</script>

b.html


<script>// 接收domain1的数据    window.addEventListener('message', function (e) {alert('data from domain1 ---> ' + e.data);var data = JSON.parse(e.data);if (data) {data.number = 16;// 处理后再发回domain1           window.parent.postMessage(JSON.stringify(data), 'http://www.domain1.com');}}, false);
</script>

4.代理跨域
nginx代理
nodejs中间件代理
webpack-dev-server代理

5.iframe

document.domain + iframe
仅限主域相同子域不同的跨域场景
原理:两个页面都通过js强制设置document.domain为基础主域

location.hash + iframe跨域相互通信
原理:a与b跨域通信,通过中间页来实现,
不同域通过iframe的location.hash传值,相同域用js访问

window.name + iframe跨域相互通信
原理:name在不同页面加载后依旧存在
通过iframe的src属性由外域转向本地域,跨域数据window.name由外域转向本地域
巧妙的绕过了浏览器的跨域访问限制

6.WebSocket协议跨域
它实现了浏览器与服务器的全双工通信,同时允许跨域通信

10.src和href的区别,

src和href都是用来引用外部的资源
区别:
1.src是表示对资源的引用,href是表示超文本引用,它指向一些网络资源,建立和当前元素或本文档的链接关系
2.对文档的影响不同,src会直接影响文档的加载和显示,当浏览器识别到它他指向的⽂件时,就会并⾏下载资源,不会停⽌对当前⽂档的处理
3.适用范围不同,src适用于图片、音频、视频和脚本等资源的引用,href适用于css样式表、字体文件和网页链接

11.script标签中的defer和async的区别,

如果没有defer或async属性,浏览器会立即加载并执行相应的脚本,defer 和 async属性都是去异步加载外部的JS脚本文件,它们都不会阻塞页面的解析
区别:
1.多个脚本的执行顺序不同,多个带async属性的标签,不能保证加载的顺序;多个带defer属性的标签,按照加载顺序执行
2.执行时机不同,async加载完立即执行,defer加载完会到文档所有元素解析完成之后才执行,DOMContentLoaded事件触发执行之前。

12.sass less是什么,为什么使用他们

是 CSS 预处理器,CSS预处理器的主要目的是增强CSS的功能,并提供一些在原生CSS中不可用或不便于使用的特性。

  1. 变量和嵌套:Sass和Less都支持使用变量来存储和重用样式属性,这样可以减少重复的代码,并且使样式表更易于维护。
  2. 混合器和继承:Sass和Less允许定义和使用混合器(Mixin),可以将一组样式属性定义为一个混合器,然后在需要的地方引用。实现样式的复用。
  3. 导入和模块化:Sass和Less允许将样式表拆分为多个文件,并通过导入语句组合在一起。这样可以实现样式的模块化,提高可维护性。
  4. 运算和函数:Sass和Less都支持使用算术运算和自定义函数,可以在样式表中进行计算和操作。

箭头函数与普通函数的区别

与普通函数相比,他:
1.写法更加简洁,可以根据具体情况省略 小括号,return 等。这一点在高阶函数的使用中特别方便。例如,数组的map, forEach等.
2.箭头函数内部没有自己的 this ,它的this就是外层作用域的 this 。它不能通过call,apply,bind来修改。
3.箭头函数内部没有arguments对象。但是,es6配套提供了剩余参数,可以用来替代argument.
4.不能当前构造器来使用。
5.没有原型

6.new箭头函数会发生什么

不能成功,因为它没有prototype,也没有自己的this指向

new操作符的实现步骤如下:

1创建一个对象
2将构造函数的作用域赋给新对象(也就是将对象的proto属性指向构造函数的prototype属性)
3指向构造函数中的代码,构造函数中的this指向该对象(也就是为这个对象添加属性和方法)
4返回新的对象
所以第二部第三部无法完成

7.Vue的基本原理

vue实例创建时,
1.遍历data属性,vue3是ref和reative,
2.用 Object.defineProperty(vue3.0使用proxy )将它们转为 getter/setter,并且在内部追踪相关依赖,在属性被访问和修改时通知变化
3. 每个组件实例都有相应的 watcher ,在组件渲染的过程中把属性记录为依赖,之后当依赖项的setter被调用时,会通知watcher,更新关联的组件。

8.vue-router的基本原理

Vue-Router有两种模式:hash模式和history模式。默认的路由模式是hash模式
hash模式:
hash模式是开发中默认的模式,它的URL带着一个#;
hash模式的主要原理就是onhashchange()事件:
使用onhashchange()事件的好处就是,在页面的hash值发生变化时,无需向后端发起请求
history模式:
history api可以分为两大部分,切换历史状态和修改历史状态:
使用浏览器的history属性

修改历史状态:History的 pushState() 和 replaceState() 方法,当
他们进行修改时,虽然修改了url,但浏览器不会立即向后端发送请求。如果要做到改变url但又不刷新页面的效果,就需要前端用上这两个API。
●切换历史状态: 包括forward()、back()、go()三个方法,对应浏览器的前进,后退,跳转操作

块元素,行内元素有哪些?行内元素怎么变成块元素,行内元素和行内块元素区别

(1)block:会独占一行,多个元素会另起一行,可以设置width、height、margin和padding属性;
h,p,div

(2)inline:元素不会独占一行,设置width、height属性无效。但可以设置水平方向的margin和padding属性,不能设置垂直方向的padding和margin;
span,a,img

(3)inline-block:将对象设置为inline对象,但对象的内容作为block对象呈现,之后的内联对象会被排列在同一行内。

for……in……和for……of……区别

1.功能不同
​ for-in是遍历数组的下标
​ for-of是遍历数组的元素
​ 2.原型的属性
​ for-in会遍历原型的属性
​ for-of不会遍历原型的属性
​ 3.数据类型
​ for-in可以遍历Object类型
​ for-of不可以遍历对象Object类型,不是可迭代对象

map和weakmap区别

  1. Map 和 WeakMap 都属于 ES6 中新增的数据类型,用于存储键值对。

  2. Map 是一个普通的键值对集合,可以使用任何类型的值作为键或值,包括基本类型和对象。
    WeakMap 的键必须是对象,值可以是任何类型。

  3. Map 中的键值对是强引用关系,即只要 Map 中的键或值存在,Map 对象就会一直保留这个键值对,不会被垃圾回收。而 WeakMap 中的键值对是弱引用关系,如果 WeakMap 的键不再被引用,那么这个键值对就会被自动删除。

  4. 由于 WeakMap 中的键是弱引用,所以 **WeakMap 对象的 size 属性无法访问,**也无法使用 forEach() 和 clear() 等方法。

  5. WeakMap 对象的主要应用场景是需要与另外一个对象关联,并且不想影响到这个对象的垃圾回收机制,以避免内存泄漏。例如,将对象存储在 WeakMap 中,可以确保这个对象只在其他地方仍然被引用时才被保留,否则会自动被删除,从而避免内存泄漏。

垃圾回收机制

原理:垃圾收集器会定期(周期性)找出那些不在继续使用的变量,然后释放其内存

通常情况下有两种实现方式:

标记清除:
当变量进入执行环境是,就标记这个变量为“进入环境“。进入环境的变量所占用的内存就不能释放,当变量离开环境时,则将其标记为“离开环境“

垃圾回收程序运行的时候,会标记内存中存储的所有变量。然后,它会将所有在上下文中的变量,以及被在上下文中的变量引用的变量的标记去掉

在此之后再被加上标记的变量就是待删除的了,原因是任何在上下文中的变量都访问不到它们了

随后垃圾回收程序做一次内存清理,销毁带标记的所有值并收回它们的内存
引用计数::
引用引擎有一张"引用表",保存了内存里面所有的资源(通常是各种值)的引用次数。如果一个值的引用次数是0,就表示这个值不再用到了,因此可以将这块内存释放

浏览器渲染过程

解析 HTML,构建 DOM 树
解析 CSS ,生成 CSS 规则树
合并 DOM 树和 CSS 规则,生成 render 树
布局 render 树( Layout / reflow ),负责各元素尺寸、位置的计算
绘制 render 树( paint ),绘制页面像素信息
浏览器会将各层的信息发送给 GPU,GPU 会将各层合成( composite ),显示在屏幕上

从输入url开始到页面渲染过程

 1、用户在浏览器中输入url地址

​ 2、先判断是否有缓存,浏览器从dns解析域名得到服务器ip地址
​ 3、TCP三次握手建立客户端和服务器的连接
​ 三次握手:指建立一个tcp连接时,需要客户端和服务端总要发三个包。保证数据在传输时的一个完整性。
​ 4、客户端发送HTTP请求获取服务器端的静态资源
​ 5、服务器发送HTTP响应报文给客户端,客户端获取到页面静态资源
​ 6、TCP四次挥手关闭客户端和服务器的连接
​ 四次挥手:TCP的连接的拆除需要发送四个包,因此称为四次挥手。
​ 为什么挥手要四次:因为Tcp是全双工通信的,同时也是为了数据的完整性。
​ 7、浏览器解析文档资源并渲染页面

回流重绘区别

回流:布局引擎会根据各种样式计算每个盒子在页面上的大小与位置
回流触发时机:
添加或删除可见的DOM元素
元素的位置发生变化
元素的尺寸发生变化(包括外边距、内边框、边框大小、高度和宽度等)
内容发生变化,比如文本变化或图片被另一个不同尺寸的图片所替代
页面一开始渲染的时候(这避免不了)
浏览器的窗口尺寸变化(因为回流是根据视口的大小来计算元素的位置和大小的)

重绘:当计算好盒模型的位置、大小及其他属性后,浏览器根据每个盒子特性进行绘制

重绘触发时机:
颜色的修改

文本方向的修改

阴影的修改

如何判断数据类型,typeof null 为什么是object

1.typeof 判断的粒度比较粗,它能准确判断基础类型(不包括null)和 Object 和 Function。 换句话,它不能判断null 和 Array ,会把他们都判断为object。

2.instanceof 用来判断对象的更具体的类型。instanceof的模拟实现, 它的主要原理的是沿着对象的原型链的方向,判断原型对象是否是构造器的prototype。 instanceof和typeof的区别

3.Array.isArray 专门用来判断是否是数组。

4.Object.prototype.toString.call 是最全面的方法了。它的代码运行如下
在这里插入图片描述

如何继承原型对象???

1、原型链继承;将父类的实例作为子类的原型
​ 2、构造继承;使用父类的构造函数来增强子类实例。
​ 3、实例继承;为父类实例添加新特性,作为子类实例返回。
​ 4、拷贝继承。
​ 5、组合继承。call式继承 + 原型继承

​ ex6中 extends继承

如何改变this执行,有什么区别

apply,bind,call
共同点:
​ 都可以修改this,第一个参数都是修改的this
​ 不同点:
​ 传参方式不同:call,bind是逐一传参,, apply是数组/伪数组传参
​ 执行机制不同:call和apply会立即执行函数,bind不会立即执行

v-if,v-show,v-html的原理

  • v-if会调用addIfCondition方法,生成vnode的时候会忽略对应节点,render的时候就不会渲染;

  • v-show会生成vnode,render的时候也会渲染成真实节点,只是在render过程中会在节点的属性中修改show属性值,也就是常说的display;

  • v-html会先移除节点下的所有节点,调用html方法,通过addProp添加innerHTML属性,归根结底还是设置innerHTML为v-html的值。

v-if,v-show区别

相同点: v-show 和v-if都是true的时候显示,false的时候隐藏

​ 1.原理不同:v-if本质是元素新增与移除,v-show本质是修改元素的display属性
​ 2.场景不同:v-if用于不需要频繁切换的元素,v-show用于需要频繁切换的元素
​ 3.性能不同:v-if初始渲染性能高,切换性能低.v-show初始化渲染性能低,切换性能高

v-model是如何实现的

v-model的本质上来说,是一个语法糖 目前咱们习惯性的写法是这样的:
是:value=“val” 和@input="val=$event.target.value"的语法糖

vue3是:model-value和@update:modelvalue

nextick原理,作用

Vue 的 nextTick 其本质是对 JavaScript 执行原理 EventLoop 的一种应用。

nextTick 的核心是利用了如 Promise 、MutationObserver、setImmediate、setTimeout的原生 JavaScript 方法来模拟对应的微/宏任务的实现,本质是为了利用 JavaScript 的这些异步回调任务队列来实现 Vue 框架中自己的异步回调队列。

作用是确保操作的是更新完成之后的dom

vue2vue3区别

1、生命周期的改变(setup代替了之前的beforeCreate和created,其他生命周期名字有些变化,功能都是没有变化的)
2、 proxy代替defineProperty

3、性能方面的改变(Diff算法的提升)

4、选项式api新增的compositionAPI(组合式API)

5、v-model的变化
6、更支持ts

父子组件传值

1.props,emit
2.ref
3.provide,inject
4.eventbus
●子组件通过 props 属性来接受父组件的数据,然后父组件在子组件上注册监听事件,子组件通过 emit 触发事件来向父组件发送数据。
●通过 ref 属性给子组件设置一个名字。父组件通过 $refs 组件名来获得子组件,子组件通过 $parent 获得父组件,这样也可以实现通信。
●使用 provide/inject,在父组件中通过 provide提供变量,在子组件中通过 inject 来将变量注入到组件中。不论子组件有多深,只要调用了 inject 那么就可以注入 provide中的数据。

vue3生命周期

2.四个阶段8个钩子:8个

(1)初始化阶段: beforeCreate created

(2)挂载阶段: beforeMount mounted

(3)更新阶段: beforeUpdate updated

(4)销毁阶段: beforeDestroy destroyed

3.两个常用

(1)created() : 一般用于发送ajax(页面一加载需要发送ajax在这个钩子)

(2)mounted(): 一般用于操作DOM(页面一加载需要操作DOM在这个钩子)

渲染列表为什么不用index作为key值

key 是为 Vue 中 vnode 的唯一标记,通过这个 key,diff 操作可以更准确、更快速

使用index 作为 key和没写基本上没区别,因为不管数组的顺序怎么颠倒,index 都是 0, 1, 2…这样排列,比如数组中间的一个数删掉了,就会导致 Vue 会复用错误的旧子节点,做很多额外的工作

这篇关于FE知识1的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/746287

相关文章

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

sqlite3 相关知识

WAL 模式 VS 回滚模式 特性WAL 模式回滚模式(Rollback Journal)定义使用写前日志来记录变更。使用回滚日志来记录事务的所有修改。特点更高的并发性和性能;支持多读者和单写者。支持安全的事务回滚,但并发性较低。性能写入性能更好,尤其是读多写少的场景。写操作会造成较大的性能开销,尤其是在事务开始时。写入流程数据首先写入 WAL 文件,然后才从 WAL 刷新到主数据库。数据在开始

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

【Python知识宝库】上下文管理器与with语句:资源管理的优雅方式

🎬 鸽芷咕:个人主页  🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言一、什么是上下文管理器?二、上下文管理器的实现三、使用内置上下文管理器四、使用`contextlib`模块五、总结 前言 在Python编程中,资源管理是一个重要的主题,尤其是在处理文件、网络连接和数据库

dr 航迹推算 知识介绍

DR(Dead Reckoning)航迹推算是一种在航海、航空、车辆导航等领域中广泛使用的技术,用于估算物体的位置。DR航迹推算主要通过已知的初始位置和运动参数(如速度、方向)来预测物体的当前位置。以下是 DR 航迹推算的详细知识介绍: 1. 基本概念 Dead Reckoning(DR): 定义:通过利用已知的当前位置、速度、方向和时间间隔,计算物体在下一时刻的位置。应用:用于导航和定位,

【H2O2|全栈】Markdown | Md 笔记到底如何使用?【前端 · HTML前置知识】

Markdown的一些杂谈 目录 Markdown的一些杂谈 前言 准备工作 认识.Md文件 为什么使用Md? 怎么使用Md? ​编辑 怎么看别人给我的Md文件? Md文件命令 切换模式 粗体、倾斜、下划线、删除线和荧光标记 分级标题 水平线 引用 无序和有序列表 ​编辑 任务清单 插入链接和图片 内嵌代码和代码块 表格 公式 其他 源代码 预

图神经网络(2)预备知识

1. 图的基本概念         对于接触过数据结构和算法的读者来说,图并不是一个陌生的概念。一个图由一些顶点也称为节点和连接这些顶点的边组成。给定一个图G=(V,E),  其 中V={V1,V2,…,Vn}  是一个具有 n 个顶点的集合。 1.1邻接矩阵         我们用邻接矩阵A∈Rn×n表示顶点之间的连接关系。 如果顶点 vi和vj之间有连接,就表示(vi,vj)  组成了

JAVA初级掌握的J2SE知识(二)和Java核心的API

/** 这篇文章送给所有学习java的同学,请大家检验一下自己,不要自满,你们正在学习java的路上,你们要加油,蜕变是个痛苦的过程,忍受过后,才会蜕变! */ Java的核心API是非常庞大的,这给开发者来说带来了很大的方便,经常人有评论,java让程序员变傻。 但是一些内容我认为是必须掌握的,否则不可以熟练运用java,也不会使用就很难办了。 1、java.lang包下的80%以上的类

JAVA初级掌握的J2SE知识(一)

时常看到一些人说掌握了Java,但是让他们用Java做一个实际的项目可能又困难重重,在这里,笔者根据自己的一点理解斗胆提出自己的一些对掌握Java这个说法的标准,当然对于新手,也可以提供一个需要学习哪些内容的参考。另外这个标准仅限于J2SE部分,J2EE部分的内容有时间再另说。 1、语法:必须比较熟悉,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息知道是什么样的语法错误并且知道

Java预备知识 - day2

1.IDEA的简单使用与介绍 1.1 IDEA的项目工程介绍 Day2_0904:项目名称 E:\0_code\Day2_0904:表示当前项目所在路径 .idea:idea软件自动生成的文件夹,最好不要动 src:src==sourse→源,我们的源代码就放在这个文件夹之内 Day2_0904.iml:也是自动生成的文件,不要动 External Libraries:外部库 我这