java基础1

1.单例模式 用于Runtime,Calendar和其他的一些类中
2.工厂模式 被用于各种不可变的类如 Boolean,像Boolean.valueOf
3.观察者模式 Swing 和很多的事件监听中
4.装饰器设计模式 被用于多个 Java IO 类中

设计模式分类:创建型 结构型 行为型模式

静态代理:指被代理的类和方法已经通过代码写好 且编译的时候会编译为class文件
要点:在代理类里面通过构造方法获得被代理类的实例对象 是代理方法里面通过传过来的实例对象.实例对象的方法的方式获得
被代理类的方法 且可以在前后添加自己要实现的动作

动态代理:在应用运行时动态的生成代理类class
要点:代理类要实现InvocationHandler的接口重载里面的方法invoke方法 有三个参数分别是被代理类的实例 被代理类的方法
被代理类方法的参数 method.invoke的方法传入实例以及参数来进行方法的调用,实际使用的是proxy.newProxyInstance传入
三个参数 分别为被代理类的类加载器 被代理类的接口 时间的代理类处理器 既可以认为是代理类对象

单例模式:要求在整个容器里面只有一个实例 所以使用static,sychronized关键字修饰 可以保证只有一个实例且线程安全
工厂模式:定义工厂模式接口 让子类对对该接口有不同的实现 在使用的时候自己决定实例化那个实例
观察者模式:当对象存在一对多的关系的时候则可以使用这个模式 修改一个对象可以通知和更新其他依赖该对象的对象
原理:观察者模式主要是定义Observer subject,observer观察者是一个抽象类 后面有多个集成这个类的子类 这个时候有个主题需要改变
通知所有的子类,在子类实例化的时候传入通知的实例对象 在各个子类的构造函数里面需要把当前子类的实例化对象传入到
subject的集合里面 在修改subject的视乎遍历集合对象 同时修改所有的子类
装饰器模式:

秒杀场景:

选择排序:有两层遍历 规定一个当前最小值的下标 第一层表示数组的每个数开始遍历 例如说一起有是个数 第一层表示从第一个数开始 每一个数和后面的树开始做比较
每次找出最小的值 把下标的值进行交换
快速排序:选定一个基数 获取数组的最大坐标和最小坐标 先从最大坐标开始比较比基数大的放在右边 把基数小的放在右边 当left=right的时候此时这个下标的数据就是基数
所以把基数复制给这个位置 且后续用递归算法把基数前面的进行排序 把基数后面的也进行排序
冒牌排序:把最大的数先排序到后面 有两层遍历 底层规定一个遍历的初始值 第二层遍历把前后两个数作比较 把最大的数放在数组的最后面
二分查找算法:二分查找的前提是数组的数据是有序的 首先规定一个中间值如果要查找的值等于中间数的话直接返回下标 如果大于中间值
的后右边查找 小于中间值的话左边查找 然后可以进行递归处理重复上述操作

一致性hash算法:

http和https区别 超文本传输协议 https外面添加了一层SSL(Securit socket layer) 添加了加密机制
状态码:200请求成功 404请求不到服务器资源 500服务器执行请求发生错误 3XX表示重定向请求
get和post区别:都是http协议的两种请求方法
get:一般用于从服务器获取数据 不涉及修改
post:一般用于修改服务数据
区别:
1.Get是不安全的,因为在传输过程,数据被放在请求的URL中;
Post的所有操作对用户来说都是不可见的。 但是这种做法也不时绝对的,大部分人的做法也是按照上面的说法来的,但是也可以在get请求加上
request body,给 post请求带上 URL 参数。
2.Get请求提交的url中的数据最多只能是2048字节,这个限制是浏览器或者服务器给添加的,http协议并没有对url长度进行限制,目的是为了保证
服务器和 浏览器能够正常运行,
防止有人恶意发送请求。Post请 求则没有大小限制。
3.Get执行效率却比Post方法好。Get是form提交的默认方法。
4.GET产生一个TCP数据包;POST产生两个TCP数据包。
5.对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

cookie和session的区别:
cookie存在于客户端 是web服务器保存在客户端的键值对形式的文件 记录用户相关的信息 当再次请求服务器的时候 会把cookie的相关信息发送过去
session依赖cookie 存在在于服务器端 当每次发送cookie的时候会发送sessionId到服务器端 服务器端通过sessionId来获取服务器的session信息
区别:
1.存储位置与安全性:cookie数据存放在客户端上,安全性较差,session数据放在服务器上,安全性相对更高;
2.存储空间:单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie,session无此限制
3.占用服务器资源:session一定时间内保存在服务器上,当访问增多,占用服务器性能,考虑到服务器性能方面,应当使用cookie

servlet讲解:
servlet一共有五个方法 生命周期有三个方法 init() service() destory()
生命周期:
Web容器加载Servlet并将其实例化后,Servlet生命周期开始,容器运行其init()方法进行Servlet的初始化;
请求到达时调用Servlet的service()方法,service()方法会根据需要调用与请求对应的doGet或doPost等方法;
当服务器关闭或项目被卸载时服务器会将Servlet实例销毁,此时会调用Servlet的destroy()方法。
init方法和destory方法只会执行一次,service方法客户端每次请求Servlet都会执行。Servlet中有时会用到一些需要初始化与销毁的资源,
因此可以把初始化资 源的代码放入init方法中,销毁资源的代码放入destroy方法中,这样就不需要每次处理客户端的请求都要初始化与销毁资源。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值