Java开发随手笔记

  1. String是内容不可变的字符串,String底层使用了一个不可变的字符数组(final char[])在这里插入图片描述
  2. StringBuffer、StringBuilder底层使用了一个可变的数组(没有使用final修饰)在这里插入图片描述
    StringBuffer 里中的append方法加了synchronized(同步关键字)所以是线程安全的,但StringBuilder中append中没有这个关键字。
  3. Java中的集合分为value,key-value(conllection Map)两种, 存储值有分为List和Set, 存储key-value的为map。
  4. List是有序的,可以重复的。Set 是无序的,不可以重复的,根据equals和 hashCode判断,也就是说一个对象要存储在Set中,必须重写equals和hashCode方法。存储key-value的为map
  5. HashMap是可以把null作为key或value,而HashTable是不可以的。前者线程不安全但效率高,后者线程安全但效率低,那如何做到线程安全和效率高呢?ConcurrentHashMap.通过把整个Map分为N个Segment(类似HashTable),可以提供相同的线程安全,但是效率提升N倍,默认提升16倍。
  6. Java通过Executors提供四个静态方法创建线程池,分别为:可缓存、固定大小的线程池(两个,一个可控制最大并发数、一个支持定时及周期任务的执行)、一个单线程化的线程池。作用:1.限定线程的个数,不会导致由于线程过多导致系统运行缓慢或者崩溃 2. 线程池不需要每次都去创建或销毁,节约资源 3.响应时间快
  7. 工厂模式:Spring IOC j就是使用了工厂模式 :对象的创建交给了一个工厂去创建
    代理模式:spring AOP就是使用的动态代理
  8. GET和POST请求都是http的请求方式,用户通过不同的http的请求方式完成对资源的操作,具体来讲就是GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。GET请求提交的数据会在地址栏显示出来(浏览器对地址的限制导致传输数据的限制),而post请求不会,会放在http包里面,安全性高,对数据传输大小没有限制。
  9. Servlet继承HttpServlet重写doGet,doPost方法完成对请求的响应
  10. Servlet有良好的生存周期的定义,包括加载、和实列化、初始化、处理请求以及服务结束。是由Servlet接口的init 、service、destroy方法表达。
    加载Servlet的class—>实例化Servlet---->调用Servlet的init完成初始化—>响应请求(service方法)—>Servlet容器关闭(destory方法)
  11. forward()前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会出现转向后的地址,后者则是完全跳转,浏览器将会得到跳转的地址,并重新发送请求链接。
    1.forward是服务器端的转向而redirect是客户端的跳转。
    2.使用forward浏览器地址不会改变,后者会改变
    3.forward是一次请求中完成,后者是重新发送请求
  12. cookie 和session 的区别?
    cookie 数据存放在客户的浏览器上,session数据放在服务器上。
    cookie 不是很安全,session比较安全
    总结:重要信息放在session,不重要放在cookie
  13. 第一级范式:是指数据库表中的每一列都是不可分割的基本数据项,列数据不可分给
  14. 第二级范式:要求数据库表中的每个行必须可以唯一的区分。
  15. 第三范式:要求一个数据库表中不包含已在其它表中已包含的非主键关键字信息。
  16. 事务的四大特性:
    原子性:表示事务内操作不可分割,要么都成功、要么都是失败。
    一致性:要么都成功、要么都是失败。后面失败了要对前面的操作进行回滚
    隔离性:一个事务开始后,不能有其他事务干扰
    持久性:表示事务开始了,就不能终止
  17. mysql最大连接数:特定服务器上面的数据库只能支持一定数目且同时连接,这时候
    需要我们最大连接数。(最多同时服务多少连接)在数据库安装时都会有一个默认的最大连接数(max=100)。
  18. mysql是使用关键字limit来进行分页,limit offset,size
  19. oracle 默认是使用三层嵌套查询
  20. spring事务的传播特性:
    1.Rquired 需要 如果存在一个事务,则支持当前事务,如果没有则开启。
    2.Supports 支持 如果存在一个事务,支持当前事务,如果没有则非事务执行
    3.mandatory 必须的 如果存在一个事务,支持当前事务,则抛出异常
    4.required_new 总是开启一个新的事务,如果一个事务已经存在,则将这个存在的事务挂起
    5.NOt_support 总是非事务地执行, 并挂起任何存在的事务
    6.never 绝不 总是非事务地执行,如果存在一个活动事务,则抛出异常
    7.Nested 嵌套的 如果有就嵌套,没有就开启。
  21. 数据库优化方面的事情
    1.查找、定位慢查询,并优化
    2.创建索引
    3.分表
    4.读写分离
    5.缓存、使用redis
  22. 选择合适的存储引擎
    MyISAM存储引擎:对事务要求不高,同时以添加和查询为主(支持全文索引,支持表锁,不持支外键)
    INNODB存储引擎 对事务要求高 ,保存的都是重要数据(不支持全文索引,支持行锁,支持外键)
    Memory存储引擎 我们数据变化频繁,不需要入库,同时又频繁的查询和修改,速度极快。
  23. 索引分类
    普通索引:允许重复的值出现
    唯一索引:除了不能有重复的记录外,其它和普通索引一样
    主键索引:它是随着主键的创建而创建
    全文索引: 用来对表中的文本域
  24. 索引弊端
  25. 占用磁盘空间
  26. 对(插入,修改,删除)操作有影响,变慢
  27. 使用索引场景
  28. 肯定在where条件下经常使用
  29. 该字段的内容不是唯一的几个值(如,sex)
  30. 字段内容不频繁变化
  31. 不会出现在where子句中字段不该创建索引
  32. 最左匹配原则,在模糊查询中前面是固定的后面是通配的才会使用索引。
  33. 数据库分表:水平分表(按行)、垂直分表(按列)
  34. 策略模式:它的内结构是一个Context,它是聚合了一个抽象的策略接口,然后会有很多个具体的·策略实现类来实现。
  35. 状态模式:主要是用来进行状态流转换的控制,它的内结构和策略模式有点像
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值