selenium 自动化测试 —— webdriver 常见API 自动化测试指软件测试的自动化,在预设状态下运行应用程序或者系统,预设条件包括正常和异常,最后评估运行结果。将人为驱动的测试行为转化为机器执行的过程。其中对象的定位是自动化测试的核心。
多线程中的锁 —— synchronized 在 JVM 层面,synchronized 同步锁是依靠==监视器 monitor== 实现的。synchronized 同步代码块的实现是通过 monitorenter 和 monitorexit 指令,其中 monitorenter 指令指向同步代码块的开始位置,monitorexit 指令则指明同步代码块的结束位置。当 jvm执行到 monitorenter 指令时,当前线程试图获取monitor 对象的所有权,如果未加锁或者已经被当前线程所持有
线程安全问题以及 volatile 的使用和原理 在拥有共享数据的多条线程并行执行的程序中,线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行,不会出现数据污染等意外情况。也就是多个线程访问同一个对象时,如果不用其他操作,调用这个对象的行为都可以获得正确的结果,那么这个对象就是线程安全的。
File 类和 IO 流 在编程中,数据是存储在内存中的,但为了长久保存数据,就要使用文件(File)的形式存储,将数据存储在 I/O 设备上。 File类的对象代表操作系统的文件,File 类在 java.io.File 包下。File类提供了诸如:创建文件对象代表文件,获取文件信息、删除文件、创建文件等功能。2. File 类的使用2.1 创建 File 类public File(String pathname) // 根据文件路径创建文件对象public File(String pare
优先级队列 —— 堆 堆在逻辑上是一棵完全二叉树,物理上是保存在数组中的。满足任意节点的值都大于其子树中节点的值,叫做大根堆,任意节点的值都小于其子树中节点的值叫做小根堆。堆的基本作用是快速找集合中的最值。...
MySQL 优化 设计数据表时应尽量遵循范式理论的规约,尽可能的减少冗余字段,让数据库设计看起来精致、优雅。表的规范化程度越高,表和表之间的关系越多,需要连接查询的情况也就越多,性能也就越差。通过建立中间表,将需要通过联合查询的数据插入到中间表中,然后将原来的联合查询改为对中间表的查询。对于字段较多的表,如果有些字段的使用频率很低,可以将这些字段分离出来形成新表。因为当一个表的数据量很大时,会由于使用频率低的字段的存在而变慢。注意:冗余字段的值在一个表中修改了,就要想办法在其他表中更新,否则就会导致数据不一致的问题。...
二叉树的练习题 思路1:二叉树的递归,则是将某个节点的左子树、右子树看成一颗完整的树,那么对于子树的访问或者操作就是对于原树的访问或者操作的子问题,因此可以自我调用函数不断进入子树。思路2:使用辅助栈来存放每次遍历的根节点,弹出栈顶元素,然后判断该元素是否有左右子节点,有的话的加入栈中,优先加入右节点。给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历)给定的二叉树是{3,9,20,#,#,15,7},给定一个二叉树,返回他的后序遍历的序列。输入:{1,2,#,#,3}输入:{1,#,2,3}.....
MySQL 执行查询流程 解析 SQL 语句的语义,进行关键字(select/update/delete/whiere 等)和非关键词的提取、解析,组成一个解析树。当判断缓存是否命中时,MySQL 不会进行解析查询语句,而是直接使用 SQL 语句和客户端发送过来的其他原始信息。此阶段主要是进行SQL语句的优化,会根据具体情况进行最优的选择,判断是否使用索引,以及选择合适的索引,生成执行计划。,调用存储引擎的 API 将数据保存到结果集中,同时会逐步将数据缓存到查询缓存中,最终将结果集返回给客户端。...
初识二叉树 树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。有一个特殊的节点,称为根节点,除根结点外,其余节点被分成 m (m > 0)个互不相交的集合,每个集合又是一棵与树类似的子树。...............
Java 中的栈和队列 在顺序队列中,当下标走到队尾后,不能再往后走插入元素,但其实数组中还有位置,这叫做“假溢出”,为了解决这个问题提高数组利用率,就出现了循环队列。队列是一种仅支持在表尾进行插入操作、在表头进行删除操作的线性表,插入端称为队尾,删除端称为队首,因整体类似排队的队伍而得名。front:指向循环队列的第一个元素下标,rear:指向循环队列的最后一个元素的下一个下标。,元素入队即将新元素加在队列的尾,元素出队即将队首元素取出,它后一个作为新的队首。,使之成为新的栈顶元素;,使其相邻的元素成为新的栈顶元素。...
【MySQL —— 事务】四大特性、隔离级别 事务诞生的目的就是为了把若干个独立的操作打包成一个整体,这样的一组操作,要么全都执行,要么都不执行。事务是一个不可分割的数据库操作序列,也是数据库并发控制的基本单位。
栈和队列的练习题 第一个栈 push 元素时,当另一个栈中没有元素时将当前插入的元素 push 进去,然后每一次插入元素时两个栈中的栈顶元素进行比较。如果当前插入的元素小于第二个栈的栈顶元素,就将当前元素 push 到第二个栈中,否则就将第二个栈中的栈顶元素重新入栈。处理括号问题,就是将括号中的部分看成一个整体,每次遇到左括号,将括号放入栈中,直到遇到右括号,再计算括号中的部分。所以就可以使用栈来完成,遇到左括号就将相应匹配的右括号加入栈中,后续如果是合法的,右括号的顺序就是栈中弹出的顺序。队列中的元素为int类型。....
【MySQL —— 索引】 MySQL 中的内部原理和机制非常多,前面的 sql 属于操作层面,后面的索引、事务就属于 MySQL 原理层面。如果之后要实现一个数据库,那么就必须懂得 MySQL 的运行机制和它的内部原理,所以索引、事务是面试这块必考的点。索引是一种特殊的文件,包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引,并指定索引的类型,各类索引有各自的数据结构实现。索引是一种数据结构,数据库索引是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中的数据。...
初始 List 接口 List 是 Java 中线性表定义的接口,是有序集合(也称为序列 ),是实现接口中的一个接口。该接口中可以精确控制列表中每个元素的插入位置。用户可以通过索引访问元素,并搜索列表中的元素。......
初始 Java 集合框架 Java集合框架JavaCollectionFramework,又被称为容器container,是定义在java.util包下的一组接口interfaces和其实现类classes。表现为将多个元素放在一个集合中,方便对这些元素进行增删改查CRUD。举例一组牌的集合(一副扑克牌)JCFJava集合框架黄色方框代表的是接口,蓝色方框代表的是抽象类,棕色方框代表的是普通类。上图中,Iterator是一种迭代器,用来遍历集合。Java集合框架分为两大种。............
MySQL 中出现的字符编码错误 Incorrect string value: ‘\x\x\x\x‘ for column ‘x‘ 在MySQL数据库中,它的默认编码方式是拉丁文,所以它不能识别中文,就需要把数据库给配置成支持中文的编码方式,也就是配置成utf8编码方式。2.5重启服务器后,记得把之前建立的不能支持中文的库删掉,重新建库,因为旧的数据库没有收到影响,依然还是不能支持中文。,只需要修改配置文件,之后的数据库都会支持中文编码,比较方便。2.2找到my.ini文件,使用记事本打开,保险起见可以先备份然后进行修改。2.4修改完配置文件后,一定要记得。右击属性,找到存放配置文件的地址。修改完后记得一定要保存!...
Java 中的常见排序算法 —— 七大基于比较的排序算法 排序方法最好一般最坏空间复杂度稳定性直接插入排序O(n)O(n^2)O(n^2)O(1)稳定希尔排序O(1)不稳定选择排序o(n^2)o(n^2)o(n^2)O(1)不稳定堆排序O(1)不稳定冒泡排序O(n)O(n^2)O(n^2)O(1)稳定快速排序O(n^2)不稳定归并排序O(n)稳定httpshttpshttpshttpshttpshttpshttps。...