Java基本概念

JAVA基本概念
1、springboot  springmvc区别
2、序列化、反序列化
Java序列化就是指把Java对象转换为字节序列的过程     Java反序列化就是指把字节序列恢复为Java对象的过程
核心作用就是对象状态的保存和重建
序列化优点:
①将对象转为字节流存储到硬盘上,当JVM停机的话,字节流还会在硬盘上默默等待,等待下一次JVM的启动,把序列化的对象,通过反序列化为原来的对象,并且序列化的二进制序列能够减少存储空间(永久性保存对象)。
②序列化成字节流形式的对象可以进行网络传输(二进制形式),方便了网络传输。
③通过序列化可以在进程间传递对象。
实现序列化的必备要求:
只有实现了Serializable或者Externalizable接口的类的对象才能被序列化为字节序列。(不是则会抛出异常)

3、JDK中序列化和反序列化的API:
①java.io.ObjectInputStream:对象输入流。
该类的readObject()方法从输入流中读取字节序列,然后将字节序列反序列化为一个对象并返回。
②java.io.ObjectOutputStream:对象输出流。
该类的writeObject(Object obj)方法将将传入的obj对象进行序列化,把得到的字节序列写入到目标输出流中进行输出。

4、实现序列化和反序列化的三种实现:
①若Student类仅仅实现了Serializable接口,则可以按照以下方式进行序列化和反序列化。
ObjectOutputStream采用默认的序列化方式,对Student对象的非transient的实例变量进行序列化。
ObjcetInputStream采用默认的反序列化方式,对Student对象的非transient的实例变量进行反序列化。
②若Student类仅仅实现了Serializable接口,并且还定义了readObject(ObjectInputStream in)和writeObject(ObjectOutputSteam out),则采用以下方式进行序列化与反序列化。
ObjectOutputStream调用Student对象的writeObject(ObjectOutputStream out)的方法进行序列化。
ObjectInputStream会调用Student对象的readObject(ObjectInputStream in)的方法进行反序列化。
③若Student类实现了Externalnalizable接口,且Student类必须实现readExternal(ObjectInput in)和writeExternal(ObjectOutput out)方法,则按照以下方式进行序列化与反序列化。
ObjectOutputStream调用Student对象的writeExternal(ObjectOutput out))的方法进行序列化。
ObjectInputStream会调用Student对象的readExternal(ObjectInput in)的方法进行反序列化。

5、过滤器filter
客户端向服务器端发送一个请求时,如果有对应的过滤器进行拦截,过滤器可以改变请求的内容、或者重新设置请求协议的相关信息等,然后再将请求发送给服务器端的Servlet进行处理。当Servlet对客户端做出响应时,过滤器同样可以进行拦截,将响应内容进行修改或者重新设置后,再响应给客户端浏览器
<filter>
<filter-name>AdminFilter</filter-name>
<filter-class>TestFilter</filter-class>   
</filter>
<filter-mapping>
<filter-name>AdminFilter</filter-name>
<url-pattern>/admin/*</url-pattern>
</filter-mapping>
表示是当url中有/admin/*这样的格式,将交给TestFilter去过滤
认证过滤、登录和审核过滤、图像转换过滤、数据压缩过滤、加密过滤、令牌过滤、资源访问触发事件过滤
所有的Servlet过滤器类都必须实现javax.servlet.Filter接口。这个接口含有3个过滤器类必须实现的方法
init(FilterConfig cfg) 这是Servlet过滤器的初始化方法,性质等同与servlet的init方法。
doFilter(ServletRequest,ServletResponse,FilterChain) 完成实际的过滤操作,当请求访问过滤器关联的URL时,Servlet容器将先调用过滤器的doFilter方法。FilterChain参数用于访问后续过滤器
destroy() Servlet容器在销毁过滤器实例前调用该方法,这个方法中可以释放Servlet过滤器占用的资源。,性质等同与servlet的destory()方法。

6、Java分层分几层  controller  dao   interface  

7、dubbo
远程调用框架
Dubbo可以将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,可用于提高业务复用
灵活扩展,使前端应用能更快速的响应多变的市场需求。
分布式架构可以承受更大规模的并发流量
provider
1、需要将服务提供者注册到注册中心
引入dubbo和zookeeper相关依赖 maven zkClient
2、dubbo配置文件中写提供服务的application name  需要写注册地址:zookeeper:    扫描报的地址: copy referance
3、将服务发布出去  @Service 注解的作用  @Component

consumer
1、引入dubbo和zkclient相关依赖
2、配置dubbo注册中心地址
3、引用服务 @Reference 全类名引用


1、spring  spring ioc和aop原理

3、mybatis  
resultMap
id="DtoResultMap" type="com.jd.b2b.bean.TfcWaybillDto"
 mybastis-config
 <dataSource type="POOLED">
    <property name="driver" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://192.168.61.201:3306/mybatis?characterEncoding=UTF-8"/>
    <property name="username" value="tms"/>
    <property name="password" value="tms"/>
</dataSource>

java面向对象  java特点
继承、封装、多态
7、什么情况下使用多态
继承链中对象方法的调用的优先级:this.show(O)、super.show(O)、this.show((super)O)、super.show((super)O)。
8、方法、类、对象、变量 是怎么在数据中存储
9、静态变量、场景、方法怎么存储的
10、涉及模式 单例模式  工厂模式
11、为什么保证线程安全  怎么保证线程安全

分布式服务,soa,微服务,他们的架构还有zookeeper 之类的

11、java jvm抛异常  jvm内存模型
12、多线程锁  死锁使用   ab资源  死锁前提
13、线程不安全  100张票怎么保证不被强没  lock  cas自旋锁

posted @ 2020-11-20 18:19  stnnnn123  阅读(240)  评论(0)    收藏  举报