-
交换两个变量的值,不借助第三个变量
-
栈实现
int exchange(int x,int y) { stack S; push(S,x); push(S,y); x=pop(S); y=pop(S); }
- 位运算(异或)
通过异或运算能够使数据中的某些位翻转,其他位不变。这就意味着任意一个数与任意一个给定的值连续异或两次,值不变。
int a=10,b=12; //a=1010^b=1100;
a=a^b; //a=0110^b=1100;
b=a^b; //a=0110^b=1010;
a=a^b; //a=1100=12;b=1010;
- JDK、JRE、JVM区别与联系
联系:
利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析这些字节码,映射到CPU指令集或OS的系统调用
----在JDK下面的jre目录里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib和起来就称为jre。
区别:
- JDK是用于java程序的开发,而JRE则是只能运行class而没有编译的功能,即一个是开发环境,一个是运行环境
- JVM并不代表就可以执行class,JVM执行.class还需要JRE下的lib类库的支持,尤其是rt.jar
- AOP和IOC用到的设计模式(不是携程的,自己面试阿里的时候问的,想到就直接记录这里)
AOP靠代理模式实现
IOC 参考链接:https://blog.csdn.net/zmh458/article/details/99685031
- 工厂模式---Spring使用工厂模式可以通过 BeanFactory 或 ApplicationContext 创建 bean 对象。
- 单例模式---Spring 中 bean 的默认作用域就是 singleton(单例)的。
-
策略模式---一个类的行为或其算法可以在运行时更改,相当于一堆算法族的封装 应用:(1)代码中获取Rescource实例 (2)依赖注入
-
装饰者模式---可以在运行时扩充一个类的功能