牛客网刷题笔记

此博客链接:https://www.cnblogs.com/ping2yingshi/p/14263849.html

计网

1.ip地址划分:

A类 0-127
B类 128-191
C类 192-223
D类 224-239
2.
网桥工作在数据链路层(OSI第二层),将两个LAN连接起来,根据MAC地址来转发帧。
OSI的七层分别为:
第7层——应用层:提供为应用软件而设的接口,以设置与另一应用软件之间的通信。如HTTP,FTP,TELNET,SSH,SMTP,POP3等。
第6层——表达层:把数据转换为能与接收者的系统格式兼容并适合传输的格式。
第5层——会话层:负责在数据传输中设置和维护计算机网络中两台计算机之间的通信连接。
第4层——传输层:把传输表头(TH)加至数据以形成数据包。传输表头包含了所使用的协议等发送信息。如:传输控制协议(TCP)等。
第3层——网络层:决定数据的路径选择和转寄,将网络表头加至数据包,以形成分组。网络表头包含了网络数据。如:互联网协议(IP)等,路由器工作在这层
第2层——数据链路层:负责网络寻址、错误侦测和改错。网桥工作在这层
第1层——物理层:在局部局域网上传送数据帧,负责管理计算机通信设备和网络媒体之间的互通。包括集线器、中继器、网卡、主机适配器等。

数据库

1.MVC框架是三层架构:模式层、视图层、控制层
模式层:表示企业数据和业务逻辑,是应用程序的主体部分;
视图层:是用户看到的并与之交互的界面;
控制层:接收用户的输入并调用模型和视图去完成用户的需求;
属于和数据库相关操作是在模式层。

2.三级模式:外模式、概念模式、内模式。一个数据库中外模式可以有多个,内模式和概念模式只能各有1个。

操作系统

 

 2.产生死锁的两个原因:竞争资源,进程间推进顺序非法。

3.操作系统是

系统观点——计算机资源的管理者
用户观点——用户使用计算机的界面
软件观点——程序和数据结构的集合

HTML

1.HTML5中:

自关闭的斜线(/)对 :area, base, br, col, command, embed, hr, img, input, keygen, link, meta, param, source, track, wbr空标签无效,言即不再需要自闭合(/)这个小尾巴了,如果要写上也是可以的。

CSS

1.盒模型的属性:margin(外边距)、border(边框)、padding(内边距)、content(内容)

2.

Link,visited,hover,active.

 

 L o v e h a t e  爱与恨
3.
在CSS中,html中的标签元素大体被分为三种不同的类型: 块状元素、内联元素(又叫行内元素)和内联块状元素。 
 
常用的块状元素有:
 <div>、<p>、<h1>…<h6>、<ol>、<ul>、<dl>、<table>、<address>、<blockquote> 、<form>
 什么是块级元素? 
在html中<div>、<p>、<h1>、<form>、<ul>和<li>就是块级元素。设置display:block就是将元素显示为块级元素。如下代码就是将内联元素a转换为块状元素,从而使a元素具有块状元素特点。 a{display:block;} 
块级元素特点:
 1、每个块级元素都从新的一行开始,并且其后的元素也另起一行。(真霸道,一个块级元素独占一行);
 2、元素的高度、宽度、行高以及顶和底边距都可设置。
 3、元素宽度在不设置的情况下,是它本身父容器的100%(和父元素的宽度一致),除非设定一个宽度。 
 
常用的内联元素有: 
<a>、<span>、<br>、<i>、<em>、<strong>、<label>、<q>、<var>、<cite>、<code> 在html中,<span>、<a>、<label>、<strong> 和<em>就是典型的内联元素(行内元素)(inline)元素。
当然块状元素也可以通过代码display:inline将元素设置为内联元素。如下代码就是将块状元素div转换为内联元素,从而使div 元素具有内联元素特点。
 div{ display:inline; } ...... <div>我要变成内联元素</div> 
内联元素特点: 
1、和其他元素都在一行上; 
2、元素的高度、宽度及顶部和底部边距不可设置; (这是答案^-^)
3、元素的宽度就是它包含的文字或图片的宽度,不可改变。 
 
常用的内联块状元素有:
 <img>、<input>
 内联块状元素(inline-block)就是同时具备内联元素、块状元素的特点,代码display:inline-block就是将元素设置为内联块状元素。
inline-block 元素特点: 
1、和其他元素都在一行上; 
2、元素的高度、宽度、行高以及顶和底边距都可设置。

JS

1.

 

 

A. parseInt转换为整数,默认为10进制,结果为10
B. floor向下取整,结果为10 
C. ceil向上取整,结果为11
D. split操作数必需为正则或字符串,结果为TypeError

2.

 

 

A中,两边都进行了隐式转换。true 会转为1 ,[ ] 会转为 0 ,最后是比较的是 0 == 1,所以结果是false。
注意:[]转换成字符串为“”
[]转换成boolean为true;
[]转换成数字为0;

JAVA

1.java中的线程安全是什么:
就是线程同步的意思,就是当一个程序对一个线程安全的方法或者语句进行访问的时候,其他的不能再对他进行操作了,必须等到这次访问结束以后才能对这个线程安全的方法进行访问
什么叫线程安全:
如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。
或者说:一个类或者程序所提供的接口对于线程来说是原子操作或者多个线程之间的切换不会导致该接口的执行结果存在二义性,也就是说我们不用考虑同步的问题。
线程安全问题都是由全局变量及静态变量引起的。
若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑线程同步,否则就可能影响线程安全。
看过vector源码的同学就会知道他的许多操作都是加了synchronized修饰的比如他的添加元素。(不知道synchronized是什么意思的自行百度!)
 
1
2
3
public synchronized void addElement(E obj) {  modCount++;
       ensureCapacityHelper(elementCount + 1);  elementData[elementCount++] = obj;
}
而HashMap的所有操作都没有加synchronized修饰 ,不如他的put源码
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public V put(K key, V value) {
     if (key == null)
         return
      putForNullKey(value);
      int hash = hash(key.hashCode());
      int i = indexFor(hash, table.length);
      for(Entry<K,V> e = table[i]; e != null; e = e.next) {
         Object k;
         if (e.hash == hash &&((k = e.key) == key || key.equals(k))) {
             V oldValue = e.value;
             e.value = value;
             e.recordAccess(this);
             return
             oldValue;    }
     }
     modCount++;
     addEntry(hash, key, value, i);
     return null;
 }
再看看ArrayList的add方法的源码
 
1
2
3
4
5
public boolean add(E e) {
     ensureCapacity(size + 1);  // Increments modCount!!
     elementData[size++] = e;
     return true;
 }
再看StringBuffer的append源码,他是有synchronized修饰的
 
1
2
3
4
5
public synchronized
  StringBuffer append(String str) {
     super.append(str);
     return this;
 }
最后是Properties的setProperty方法,他是有synchronized修饰的
 
1
2
3
4
5
public synchronized
  Object setProperty(String key, String value) {
      return
      put(key, value);
 }
由此就可以判断出谁是线程安全的了。
3.java中的异常通常分为编译时异常和运行异常。编译时异常需要我们手动的进行捕捉处理,也就是我们用try....catch块进行捕捉处理。对于运行时异常只有在编译器在编译运行时才会出现,这些不需要我们手动进行处理
 4.

 

 

A,抽象类不能实例化,因为有抽象方法未实现
B,可以被继承。派生类可以实现抽象方法
C,子类可以是抽象的,也可以非抽象的
D,只能被继承说法太肯定,不正确
E,可以被抽象类继承,也可以被非抽象类继承

1.前序遍历和后序遍历结果是相反的数,那么只有一个叶子节点。

排序

看书

posted @ 2021-01-11 19:35  萍2樱释  阅读(161)  评论(2编辑  收藏  举报