- 第一次在CSDN写博客,写的不好的可以在评论区吐槽,尽量给大家优化的通俗易懂~
冒泡排序,点我看详情,时间复杂度O(n²)
//外循环,直到循环完毕
for(int i = 0; i < arr.length; i++) {
//(j<arr.Length-i),避免无用的循环,已排序过的不再重复排序
for(int j = 0; j < arr.length-i; j++) {
//比较大小并交换
if (arr[j] < arr[j+1]) {
//定义一个空杯子接收当前的水
int temp = arr[j];
//下一个水杯的水到给当前的水杯
arr[j] = arr[j+1];
//再把空杯子里面的水到给下一个水杯(完成位置交换动作)
arr[j+1] = temp;
}
}
}
== 和 equals 的区别
- 当 == 两边是对象时(String,Integer…),两边比的都是地址
- 当 == 两边是基本类型时(int,float),两边比的都是值
- 默认equals比的是对象的地址,但是重写的话可以改变成比较值,String和Integer的equals就是重写过的
命名规范
- 所有命名规则必须遵循以下规则:
- 项目名、包名全部小写
- 类名首字母大写保持驼峰命名
- 常量统一全部大写并下划线分割
- 命名时不能以数字开头
- 在命名是绝对不能出现Java关键字。
- 绝对不允许在命名时出现中文及拼音命名。
重载和重写,抽象类和接口
-
重载(overload)
- 方法的名相同,参数个数、类型不同
- 不要求方法的访问范围,返回值类型
-
重写(override)
- 方法名、参数、返回值相同
- 子类重写方法范围,不能比父类小
抽象类与接口的区别
-
抽象类 : 有构造方法,类中的方法不一定是抽象方法,可以有普通变量,不允许多继承。
-
接口 : 无构造方法,接口中的所有方法均为抽象方法,接口里的都是常量,允许多继承
面向过程和面向对象
-
面向过程:面向过程会让一个类越来越全能,就像一个管家一样做了所有的事,类代码日夜累积,新增需求需要浏览无关代码,有可能影响已测试的功能。
-
面向对象:面向对象的编程方式使得每一个类都只做一件事,通过新增对象类,应对新需求的时候改动不影响其他类,有很好的灵活性和扩展性
String,StringBuilder和StringBuffer的区别
-
String:是内容不可变的,而StringBuffer、StringBuilder都是内容可变的。
-
StringBuffer:是同步的,数据安全的,但是效率低;
-
StringBuilder:是不同步的,数据不安全,相比于来说,效率高。
javaee和javase的区别(jdk不分javaSE,javaEE)
- Java SE: 就是做电脑上的运行软件
- Java EE:就是用来做网站的 (例如JSP、Html5、CSS3)
常见的运行异常
- Throwable是Error和Exception的父类
- 空指针,数组下标越界,运算异常,没有访问权限,类型不存在异常,类型强制转换异常
JDK和JRE的区别
- JRE:可以支撑Java程序的运行,包括JVM虚拟机和基本的类库
- JDK:可以支持Java程序的开发,包括编译器、开发工具
类修饰符的访问范围
-
public:本类,同包,子类可见
-
protected:本类,同包,子类可见
-
默认:本类,同包可见,子类不可见
-
private:本类可见,同包不可见,子类不可见
常见HTTP状态码
- 200 (成功) 服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页
- 401 (未授权) 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。
- 403 (禁止) 服务器拒绝请求。
- 404 (未找到) 服务器找不到请求的网页
- 417 (未满足期望值) 服务器未满足"期望"请求标头字段的要求
- 500 (服务器内部错误) 服务器遇到错误,无法完成请求。
- 502 (错误网关) 服务器作为网关或代理,从上游服务器收到无效响应
Linux常用命令
- 查找文件:find
- 查看端口是否占用:lsof -i
- 终止线程 : kill -9(强制)
- 创建目录 : mkdir
- 移动文件: mv
- 压缩文件:tar -czf
- 解压文件:tar -xvzf
- 启动Vi编辑器:vi
项目的并发如何处理的(这是一个坑!)
- 应用服务器做负载均衡
- 数据访问服务分布式部署
- 数据库分布式部署
- 在应用服务上或者数据访问服务上做缓存
ETL(Kettle spoon工具)
- ETL是将业务系统的数据经过抽取、清洗、转换之后加载到数据仓库的过程