JAVA基础整理笔记

每天整理一些基础,本文仅为个人学习记录日志。

  1. byte 8位  范围 -128 ~127;一个字节,一共256种可能 ,127+128+1
  2. 首位表示 正负 1表示负数。>> 带符号右移  >>>不带符号右移(补)
  3. && 左为真 右不执行;&右无论如何也会执行 | 也是一样
  4. 重载 相同的方法名,不同参数(个数、顺序、数量 );
  5. 重写又叫覆盖(@override),用于子类改写父类方法,只子覆盖父类对象方法;而覆盖父类类方法叫隐藏。
  6. 多态:同一类型,调用同一方法,实现不同效果。子类重写父类方法;父类引用指向子类对象;
  7. 引用A 指向引用B,只是指向,而非等同。当引用B 指向别一个对象时,并不会影响引用A,只是断开了引用B与引用A间的关系。
  8. 子类不一定放同一个包,不同包可以继承。可以理解 像人只是处于不同的区,并不影响他们的家庭关系。
  9. 不写修饰符号,同包子类可继承,同包类可以访问,自身可访问。和C#不同。受保护修饰符是 不管在不在同包,子类都可以继承
  10. static 静态属性 也叫 类属性,相对的是对象属性(跟对象走的);final常量,只能赋一次值 ,不可继承,不可重写
  11. 接口可以理解 成一种约定。
  12. 装箱:通过“=”自动把基本类型(int)转为类类型(Integer)
  13. 拆箱:不调用Integer的intValue方法,而是用"="自动把类类型转为基本类型;
  14. 频繁字符串操作,一定要用 StringBuffer,不然直接用string +操作会差几何倍数级。
  15. 队列(Queue):先进先去,如火车进山洞; 栈(Stack)先进后出,如子弹甲;
  16. 代码实现:二X树,选择法,冒泡法 并比较性能
  17. 列表:插入,删除慢,定位快;链表:插入、删除快,定位慢。定位快慢,可以应用在取出某个位置的值 ,修改完后再放回原位。
  18. 创建多线程有3种方式, 别是继承线程类(thread),实现Runnable接口匿名类; start()才会启动新的线程,run()直接调用不行
  19. lock是代码层实现,是接口,可以设定try某一时间尝试,则选择性获取 锁,避免了死锁,要手动解锁; synchronized是java关键字,内置语言实现,会钻牛角尖一直尝试占用,同步块结束 会自动解锁。
  20. IOC反转控制,是spring基础,从New对象交由spring管理
  21. ID依赖注入,拿到对象的属性,已经注入好相关值 
  22. AOP面向切面编程 把业务分为核心业务和周边功能(切面功能),两者独立进行开发,最后编织到一块
  23. bean对象 放到spring单例池的对象。由spring Ioc容器管理的对象就是bean对象
  24. @Transient 表示是临时数据,不用映射到数据库。但两个pojo相互引用 作为字段,其中一个需要添加@JsonBackReference 防止序列化无限递归死循环,注意加了之后 json就没这个字段了 看看业务需要来决定那个pojo写这个注解
  25. jpa 数据库有的关联字段 会自动填充类,但手动添加的关联类 要自己手动维护了
  26. 继承的易错点:当子类与父类有同名属性,内存会分别把两个属性存储起来,要用父类的用super.属性调用;
  不用super调用 和修改的都 是当前子类属性,与父类的无关。只有父类有此属性,则子类与父类共用此属性。
27、AOP相关功能 如事务等注解 是对代理 对象生效的,如果 是在普通对象上加的注解 是没用的。
加了切面的方法  前后会调用代理对象的事前事后方法,此切面方法代理 对象 调用 后,里面是target.此方法,这部分就是普通对象 执行的    。则同一个类的方法自调用 会导致事务失效:解决方法:拆解类;用自注入对象执行目标方法 
28、有没用AOP功能 相关注解,决定 了spring帮我们生成代理 对象 还是普通对象
29、序列化java bean是会自动调用get set方法
30、redist  因为 springboot 的缓存机制是通过切面编程 aop来实现的。所以在一个缓存管理方法里,调用同一类的别一个缓存管理方法,需要其代理对象调用,而不是直接调用。回想一下 AOP 机制,需要代理对象执行。和27点事务失效同理
31、 spring-boot-starter-tomcat修改为 provided方式,以避免和独立 tomcat 容器的冲突.表示provided 只在编译和测试的时候使用,打包的时候就没它了
32、maven中scope依赖范围:compile (默认)编译依赖(编译、测试、运行都有效),test 测试依赖(公测测试classpath有效)  ,provided编译和测试依赖,运行不依赖,则打包后 不会把这个依赖包打进包
33、Idea查看 maven的包依赖关系    shift+crtl+alt+u生成依赖关系图
34、配套使用(打包方式 只影响打包的类型 不影响idea运行)
  • 使用jar包(默认):main方法 直接用idea 类启动方式; 使用内置tomcat方式, 配置引入spring-boot-starter-web则可,application.properties中的 server.context-path=/tmall_springboot会影响内置tomcat的cotext-path,外部的不受影响
  • 使用war包: main方法 要继承 SpringBootServletInitializer ,实现configure;置引入spring-boot-starter-web则可,pom不可配置运行时依赖的tomcat,会与外部tomcat冲突,导致无法启动。包名应该与server.context-path的配置一致.(main方法改动后 也可以用jar命令,所以这是两者兼容的)
  • 打war包同时可以部署外部tomcat,也可以用java -jar命令运行(内部tomcat).因为pring-boot-starter-web内包含了tomcat相关依赖包,且tomcat-embed-jasper又包含了servlet-api会与外部容器的servlet-api冲突,所以spring-boot-starter-tomcat,加上provided限制 。说白了 部署到外部容器时应该把tomcat相关依赖都移除掉!
<!-- 部署成war 开启 部署外部tomcat 需要把内置的tomcat依赖移除-->
<!-- springboot tomcat 支持
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>-->

<!-- 部署成war 开启 部署外部tomcat 需要把内置的tomcat依赖移除-->
<!-- tomcat的支持
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<version>8.5.23</version>
<scope>provided</scope>
</dependency>-->

35、Bean的五个作用域:(scope)
  • singleton (单例)   默认,多线程不安全
  • prototype(原型)  多例 相对于单例  有状态的bean 使用此使用域
  • request 一次Http请求 就返回一个实例Bean  而且在当前Request内有效,结束 就销毁
  • session  一次Http session中 返回同一实例。仅在自己session请求内有效
  • global session  在全局的Http session中  容器会返回 bean的同一实例
36、Spring依赖注入四种方式
  • 构造器注入
  • setter方法注入
  • 静态工厂注入
  • 实例工厂
37、Spring装配有手动和自动,手动有基于xml、构造方法、setter方法
五种自动装配方法
  • no  不自动,通过显式设置ref属性装配
  • byName 通过参数名自动装配  bean的autowire属性设为byname,容器会试图装配和这个Bean属性具有相同名字的bean
  • byType 容器会试图装配和这个Bean属性具有相同类型的bean,有多个bean符合会抛出错误
  • autodetect 先尝试使用constructor自动装配,不行再用byType
  • 18
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值