java中的字符串
三者执行速度:StringBuilder > StringBuffer > String ;
StringBuffer是一个线程安全的可修改的字符序列。
StringBuilder是线程不安全的可修改的字符序列。
String的值是不可变的,所以是线程安全的哦。
用String操作字符串时,实际上是在不断地创建新对象,而原来的对象会作为垃圾被回收;
Java内存结构包含以下部分:
1、栈区:由编译器自动分配释放,具体方法执行结束后,系统自动释放JVM内存资源。
其作用有保存局部变量的值,包括:1.用来保存基本数据类型的值;2.保存类的实例,即堆区对象的引用。也可以用来保存加载方法时的帧。
2、堆区:一般由程序员分配释放,JVM不定时查看这个对象,如果没有引用指向这个对象就回收。
其作用为用来存放动态产生的数据,包括new出来的实例,字符数组等。
同一个类的对象拥有各自的成员变量,存储在各自的堆中,但是他们共享该类的方法。
3、数据区:用来存放static定义的静态成员。
4、常量池:JVM为每个已加载的类型维护一个常量池,常量池就是这个类型用到的常量的一个有序集合。包括直接常量(基本类型,String)和对其他类型、方法、字段的符号引用。池中的数据和数组一样通过索引访问。由于常量池包含了一个类型所有的对其他类型、方法、字段的符号引用,所以常量池在Java的动态链接中起了核心作用。常量池存在于堆中。
java字符串类型
String是一个对象,基本数据类型在java 中只有八种。这八种基本数据类型是基本的值类型,除此以外都是引用类型。
String类与StringBuffer类
String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且浪费大量优先的内存空间;
StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象。每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量。
StringBuilder相比StringBuffer效率更高,但多线程不安全;
在单线程中字符串的频繁拼接使用StringBuilder效率更高,对于多线程使用StringBuffer则更安全;
字符串简单操作时没必要使用上述两者,还是用String类型提高速度;
字符串格式化输出
综上,使用%-6.3s转换说明,可成功打印出一个字段宽度为6的左对齐字符串中的前3个字符。
字符串字串计算公式
什么是存储密度
存储密度=单链表数据项所占空间/结点所占空间;
结点所占空间=数据项所占空间+存放后继结点地址的链域;
所以,单链表的存储密度小于1。
什么是广义表?
例如在广义表中 LS={1,{1,2,3},5} 中,表头为原子 1,表尾为子表 {1,2,3} 和原子 5 构成的广义表,即 {{1,2,3},5}。
再比如,在广义表 LS = {1} 中,表头为原子 1 ,但由于广义表中无表尾元素,因此该表的表尾是一个空表,用 {} 表示。
校验结点是否闭合,如必须有与之对应的符号,最适合用什么数据结构来存储?
循环链表
设数据结构 B=(D, R) ,其中
D={ a, b, c, d, e, f }
R={ (a, b ) , (b, c ) , (c, d ) , (d, e), (e, f), (f, a) }
该数据结构为( 非线性结构)。
注意存储和存取的区别。
采用顺序表的存储,便于随机的存取,但是插入和删除比较耗时。采用链式存储,便于插入和删除,无法随机的存取。
单向链表
关系数据库管理系统的3种基本关系运算
数据库关键字
MYSQL正则查询
MySQL 中使用REGEXP
或NOT REGEXP
运算符(或 RLIKE
和 NOT RLIKE
) 来操作正则表达式。
选项 | 说明 | 例子 | 匹配值示例 |
---|---|---|---|
^ | 匹配文本的开始字符 | ‘^b’ 匹配以字母 b 开头 的字符串 | book、big、banana、 bike |
[^] | 匹配不在括号中的任何字符 | '[^abc]’ 匹配任何不包 含 a、b 或 c 的字符串 | desk、fox、f8ke |
SELECT * FROM Person Address REGEXP '^[^CO]'
;
表示筛查出所有匹配[^CO]
的项,而[^CO]
表示匹配任何不包含C、O的字符串
数据库的封锁机制
数据库视图
以A、B表为例,主外键为id。简述INNER JOIN、LEFT JOIN和RIGHT JOIN的区别。
数据库系统的特点
统一资源定位符和统一资源标识符
TCP、UDP、SPX(序列分组交换协议(Sequenced Packet Exchange),是Novell早期传输层协议。)
如果进行路由汇聚,能覆盖这几条路由的地址是?答:10.1.192.0/21
10.1.193.0的二进制:00001010.00000001.11000 001.00000000
10.1.194.0的二进制:00001010.00000001.11000 010.00000000
10.1.196.0的二进制:00001010.00000001.11000 100.00000000
10.1.198.0的二进制:00001010.00000001.11000 110.00000000
子网掩码为:11111111.11111111.11111 000.00000000 (十进制为255.255.248.0)即可覆盖。
子网掩码是用来划分主机号和网络号,上面的二进制中只有001, 010, 100, 110这三位以后不同。
取前面21位相同为网络号,后面11位为主机号。
故为: 00001010.00000001.11000 000.00000000 (10.1.192.0)
子网掩码为 11111111.11111111.11111 000.00000000 (255.255.248.0, 缩写为21)
双绞线的连接方式: