一、数据库
1、删除表数据
-
drop table tb
删除内容和定义,释放空间。 -
truncate table tb
删除内容、释放空间但不删除定义。不能删除行数据,只能把表清空。不能rollback,效率比delete高。 -
delete table tb; delete table tb where 条件
删除内容,不删除定义,不释放空间。可以rollback,删除数据时是一行行删除的,效率较低。
2、索引的优缺点
-
优点:
(1)通过创建唯一索引,可以保证数据库表中每一行数据的唯一性;
(2)加快数据的查询速度; -
缺点:
(1)创建索引和维护索引需要耗费时间;
(2)索引需要占物理空间,如果是聚簇索引,占用的空间会更大。
(3)对表中的数据进行增加、删除和修改时,索引也需要动态维护,这样就降低了数据的操作速度。
3、#和$的区别
(1)#传入的参数在SQL中显示为字符串,会对自动传入的数据加一个引号,$传入的参数在SQL中直接显示为传入的值。
(2)#可以防止SQL注入,但$无法防止SQL注入。
二、Java
1、如何手动触发GC?
System.gc();
当我们调用System.gc()时,并不一定会触发GC。这个gc()函数的作用只是提醒虚拟机:程序员希望进行一次垃圾回收,但是它不能保证垃圾回收一定会进行,具体什么时候进行取决于虚拟机。
2、Object类是所有类的父类,它具有哪些方法?
-
hashCode
计算hash值 -
equals
判断是否相等 -
clone
实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常。 -
toString
转换成字符串。 -
getClass
final方法,获取运行时类型。 -
notify
唤醒在该对象上等待的某个线程。 -
notifyAll
唤醒在该对象上等待的所有线程。 -
wait
使当前线程等待该对象的锁,当前线程必须是该对象的拥有者,也就是具有该对象的锁。
wait()方法一直等待,直到获得锁或者被中断。
wait(long timeout)设定一个超时间隔,如果在规定时间内没有获得锁就返回。
调用该方法后当前线程进入睡眠状态,直到以下事件发生:
a. 其他线程调用了该对象的notify方法;
b. 其他线程调用了该对象的notifyAll方法;
c. 其他线程调用了interrupt中断该线程;
d. 时间间隔到了。 -
finalize
释放资源。
3、List 和数组的互相转换
-
list转数组
(1)list.toArray() -
数组转list
(1)Arrays.asList(array)
(2)Collections.addAll(list,array)
三、框架
1、Spring MVC常用注解
-
@Controller
表明该类作为与前端交互的控制层组件。 -
@RequestMapping
用于将url映射到整个处理类或者特定的处理请求的方法。 -
@RequestParam
将请求的参数绑定到方法中的参数上。 -
@RequestBody
指方法参数应该被绑定到HTTP请求的body中。 -
@RestController
用来创建Rest类型的控制器。
2、Spring MVC原理
核心控制器捕获请求,查找handler,执行handler,选择ViewResolver,通过ViewResolver渲染视图并返回。
3、jQuery中DOM节点的删除
(1)empty:清空元素中的所有后代节点,不能删除自己本身这个节点。
(2)remove:该节点与该节点包含的所有后代节点将同时被删除,提供传递一个筛选表达式,用来指定删除选中集合中的元素。
(3)detach:删除页面上的节点,但会保留绑定的事件和附加的数据。
4、Spring Cloud服务间的两种通信方式
(1)RestTemplate方式
(2)Fegin方式
四、其它
1、进程和线程的区别
(1)根本区别:进程是操作系统资源分配的基本单位,线程是CPU调度和执行的基本单位。
(2)资源开销:每个进程有独立的代码和数据空间,进程切换的开销较大;线程可以看作是轻量级的进程,同一类线程共享代码和数据空间,每个线程有自己对立的运行栈和程序计数器,线程之间切换的开销较小。
(3)包含关系:一个进程可以包含多个线程。
(4)内存分配:同一进程的线程共享本进程的地址空间和资源,而进程之间的地址空间和资源是相互独立的。
(5)影响关系:一个进程崩溃后,不会影响其它进程,一个线程崩溃后,会影响该进程下的其它线程。
(6)执行过程:进程可以独立运行,线程需要依存进程进行执行。