fastdfs上传下载流程:
上传:
客户端client访问tracker服务器,tracker会找一台能用的 storage服务器,
tracker返回一台能用的strong服务器,ip与端口号
client直接与storage建立连接 并上传文件 返回生产文件的ID,文件上传结束
下载:
客户端client访问tracker下载文件的storage,参数为文件标识
tracker返回一台可用的storage
client直接与storage建立连接 完成下载
tracker在这里的作用是什么?
调度
Arraylist与Linkedlist区别:
Arraylist底层是动态数组
Linkedlist底层是动态数组
Arraylist增删快 Linkedlist增删慢,需要移动下标
hashmap、hashtable,treemap的区别
hashmap,无序,线程不安全
hashtable无序,线程安全
treemap 有序,线程不安全
redis中五种数据类型:
String List set zset hash
redis中list删除并获取最后一个元素的指令?
BRpop
写一个项目注册功能,应该注意的是什么:
防止Sql注入
商品下单实现思路,拍下减库存还是付款减库存:
拍下即减库存,否则会出现商品不足。
拍下未付款的订单应该如何处理:
设置cookie超时时间,利用事务回滚
mybatis中#{}与${}的区别:
#{}相当于PreparedStatement,预编译处理,有效防止SQl注入。mybatis在处理#{}时,会将#{}替换为?号,然后调用Preparedstatement中的set方法来赋值
${}是把${}替换成变量的值。
mybatis中java文件名与mapper文件为什么要保持一致:
如果mapper标签下以package包扫描形式时,需要保持一致。
包扫描形式时,实体类+mapper接口通过动态代理调用方法
调用方法时,会寻找其对应的映射配置文件
当多个mapper接口和mapper.xml同时存在,如果没有相同名称,则动态代理就不能通过其一一对应的的依赖配置文件,创建其相应的实现方法
mybatis中接口为什么没有实现类
底层使用动态代理,涉及到了反射+动态代理+工厂模式
简述一下对dubbo的认识:
远程调用RPC服务
写一个冒泡排序算法:
public static void main(String[] args) {
int[] array = {89,21,78,0,32,-8};
Maopao(array);
}
static void Maopao(int[] array){
if(array == null && array.length = 0){
System.out.println("数组为空");
return;
}
for (int i = 0; i <array.length-1 ; i++) {
for (int j = 0; j <array.length-i-1 ; j++) {
if(array[j]>array[j+1]){
int xiaoshu = array[j];
array[j]=array[j+1];
array[j+1] =xiaoshu;
}
}
}
for(int a = 0; a<array.length; a++){
System.out.println(array[a]);
}
}
Q.E.D.