发表于: 2019-12-27 23:14:11

1 896


今天做了什么:
看高性能mysql

JavaWeb知识点


收获:
              Mysql服务器逻辑架构图
共享锁:读锁,多用户同时读取
排他锁:写锁,一用户写入,另一用户锁定
表锁:基本的锁策略,开销小.一用户进行写操作时会阻塞其他用户对表所有读写操作.读锁不相互阻塞
行级锁:可以最大程度支持并发处理,同时也带来了最大的锁开销.
只在存储引擎层实现,而Mysql服务器层没有实现.服务器层完全不了解存储引擎中的锁实现.


事务日志

可以提高事务的效率.使用事务日志,存储引擎在修改表数据时只需要修改其内存拷贝,再把该修改行为记录到持久化的事务日志中,而不用每次都将修改的数据本身持久到磁盘.
事务日志采用的是追加的方式,因此写日志的操作是磁盘上一小块顺序内的顺序IO,而不像随机IO需要在磁盘的多个地方移动磁头,因此事务日志相对快.事务日志持久后,内存中被修改的数据在后台可慢慢刷回到磁盘.称为预写式日志.


Mysql复制:基于行与基于语句复制.

在主库上记录二进制日志,再在备库重放日志来实现异步的数据复制.
向后兼容:将老版本服务器作为新版本服务器的备库通常不可行.因为有代沟.


复制的步骤:

  • 主库把数据更改记录到二进制日志
  • 备库将主库的日志复制到自己的中继日志中
  • 备库读取中继日志,重放到备库数据上


复制的原理;

基于sql:好处是实现简单,不占用太多带宽.但存在着一些SQL无法被正确复制,如包括当前时间戳,函数时.
总之:如果正在使用触发器或者存储过程就不要使用基于语句的方式
基于行:适用性较广,无需为查询建立执行计划并执行查询,占用CPU更小
某些条件下能较好应对数据不一致的情况.例如基于sql方式,更新一个不存在的记录时不会失败,但基于行的方式会报错.
缺点:不知道执行了哪些sql,因此难以诊断问题.


JavaWeb:

Servlet是什么,有哪些方法:
Servlet是一个特殊的Java程序,一个基于Java的Web应用通常包含一个或多个Servlet类。Servlet不能够自行创建并执行,它是在Servlet容器中运行的,容器将用户的请求传递给Servlet程序,并将Servlet的响应回传给用户。通常一个Servlet会关联一个或多个JSP页面
Servlet接口定义了5个方法,其中前三个方法与Servlet生命周期相关:
- void init(ServletConfig config) throws ServletException
- void service(ServletRequest req, ServletResponse resp) throws ServletException, java.io.IOException
- void destory()
- java.lang.String getServletInfo()
- ServletConfig getServletConfig()
Web容器加载Servlet并将其实例化后,Servlet生命周期开始,容器运行其init()方法进行Servlet的初始化;请求到达时调用Servlet的service()方法,service()方法会根据需要调用与请求对应的doGet或doPost等方法;当服务器关闭或项目被卸载时服务器会将Servlet实例销毁,此时会调用Servlet的destroy()方法。


监听器的作用和用法:

Java Web开发中的监听器(listener)就是application、session、request三个对象创建、销毁或者往其中添加修改删除属性时自动执行代码的功能组件,如下所示:
①ServletContextListener:对Servlet上下文的创建和销毁进行监听。
②ServletContextAttributeListener:监听Servlet上下文属性的添加、删除和替换。
③HttpSessionListener:对Session的创建和销毁进行监听。
session的销毁有两种情况:1). session超时(可以在web.xml中通过<session-config>/<session-timeout>标签配置超时时间);2). 通过调用session对象的invalidate()方法使session失效。
④HttpSessionAttributeListener:对Session对象中属性的添加、删除和替换进行监听。
⑤ServletRequestListener:对请求对象的初始化和销毁进行监听。
⑥ServletRequestAttributeListener:对请求对象属性的添加、删除和替换进行监听。


概念解释:SOAP,WSDL,UDDI:

- SOAP:简单对象访问协议(Simple Object Access Protocol),是Web Service中交换数据的一种协议规范。
- WSDL:Web服务描述语言(Web Service Description Language),它描述了Web服务的公共接口。这是一个基于XML的关于如何与Web服务通讯和使用的服务描述;也就是描述与目录中列出的Web服务进行交互时需要绑定的协议和信息格式。通常采用抽象语言描述该服务支持的操作和信息,使用的时候再将实际的网络协议和信息格式绑定给该服务。
- UDDI:统一描述、发现和集成(Universal Description, Discovery and Integration),它是一个基于XML的跨平台的描述规范,可以使世界范围内的企业在互联网上发布自己所提供的服务。简单的说,UDDI是访问各种WSDL的一个门面(可以参考设计模式中的门面模式)。


WebService规范:

- JAX-WS(JSR 224):这个规范是早期的基于SOAP的Web Service规范JAX-RPC的替代版本,它并不提供向下兼容性,因为RPC样式的WSDL以及相关的API已经在Java EE5中被移除了。WS-MetaData是JAX-WS的依赖规范,提供了基于注解配置Web Service和SOAP消息的相关API。
- JAXM(JSR 67):定义了发送和接收消息所需的API,相当于Web Service的服务器端。
- JAX-RS(JSR 311 & JSR 339 & JSR 370):是Java针对REST(Representation State Transfer)架构风格制定的一套Web Service规范。REST是一种软件架构模式,是一种风格,它不像SOAP那样本身承载着一种消息协议, (两种风格的Web Service均采用了HTTP做传输协议,因为HTTP协议能穿越防火墙,Java的远程方法调用(RMI)等是重量级协议,通常不能穿越防火墙),因此可以将REST视为基于HTTP协议的软件架构。REST中最重要的两个概念是资源定位和资源操作,而HTTP协议恰好完整的提供了这两个点。HTTP协议中的URI可以完成资源定位,而GET、POST、OPTION、DELETE方法可以完成资源操作。因此REST完全依赖HTTP协议就可以完成Web Service,而不像SOAP协议那样只利用了HTTP的传输特性,定位和操作都是由SOAP协议自身完成的,也正是由于SOAP消息的存在使得基于SOAP的Web Service显得笨重而逐渐被淘汰。
问题:
明天的计划:
看看J2EE部分



返回列表 返回列表
评论

    分享到