zoukankan      html  css  js  c++  java
  • 19.04.03JavaWeb and SQL作业

    Restful levels&HATEOAS:

    什么是RESTful:

    REST这个词,是Roy Thomas Fielding在他2000年的博士论文中提出的。翻译过来就是"表现层状态转化。”Fielding在论文中将REST定位为“分布式超媒体应用(Distributed Hypermedia System)”的架构风格,它在文中提到一个名为“HATEOAS(Hypermedia as the engine of application state)”的概念。

    什么是HATEOAS:

    我们知道REST是使用标准的HTTP方法来操作资源的,但仅仅因此就理解成带CURD的Web数据库架构就太过于简单了。 这种说法忽略了一个核心概念: “超媒体即应用状态引擎(hypermedia as the engine of application state)”。<u> 超媒体是什么? 当你浏览Web网页时,从一个连接跳到一个页面,再从另一个连接跳到另外一个页面,就是利用了超媒体的概念: 把一个个把资源链接起来。</u>
    要达到这个目的,就要求在表述格式里边加入链接来引导客户端。在《RESTFul Web Services》一书中,作者把这种具有链接的特性成为连通性。
    RESTful API最好做到Hypermedia,或HATEOAS,即返回结果中提供链接,连向其他API方法,使得用户不查文档,也知道下一步应该做什么。比如,当用户向api.example.com的根目录发出请求,会得到这样一个文档。
    {"link": {
      "rel":   "collection https://www.example.com/zoos",
      "href":  "https://api.example.com/zoos",
      "title": "List of zoos",
      "type":  "application/vnd.yourformat+json"
    }}
    

    上面代码表示,文档中有一个link属性,用户读取这个属性就知道下一步该调用什么API了。rel表示这个API与当前网址的关系(collection关系,并给出该collection的网址),href表示API的路径,title表示API的标题,type表示返回类型。
    Hypermedia API的设计被称为HATEOAS。Github的API就是这种设计,访问api.github.com会得到一个所有可用API的网址列表。

    {
      "current_user_url": "https://api.github.com/user",
      "authorizations_url": "https://api.github.com/authorizations",
      // ...
    }
    

    从上面可以看到,如果想获取当前用户的信息,应该去访问api.github.com/user,然后就得到了下面结果。

    {
      "message": "Requires authentication",
      "documentation_url": "https://developer.github.com/v3"
    }
    

    层次的意义:

    Level 1通过使用分而治之来解决处理复杂性的问题,将大型服务端点分解为多个资源。

    Level 2引入了一组标准动词,以便我们以相同的方式处理类似的情况,消除不必要的变化。

    Level 3引入了可发现性,提供了一种使协议更加自我记录的方法。

    什么是LDAP?

    (一)在介绍什么是LDAP之前,我们先来复习一个东西:“什么是目录服务?”

      1. 目录服务是一个特殊的数据库,用来保存描述性的、基于属性的详细信息,支持过滤功能。

      2. 是动态的,灵活的,易扩展的。

        如:人员组织管理,电话簿,地址簿。 

    (二)了解完目录服务后,我们再来看看LDAP的介绍:

    LDAP(Light Directory Access Portocol),它是基于X.500标准的轻量级目录访问协议。

    目录是一个为查询、浏览和搜索而优化的数据库,它成树状结构组织数据,类似文件目录一样。

    目录数据库和关系数据库不同,它有优异的读性能,但写性能差,并且没有事务处理、回滚等复杂功能,不适于存储修改频繁的数据。所以目录天生是用来查询的,就好象它的名字一样。 

    LDAP目录服务是由目录数据库和一套访问协议组成的系统。

    优势:

      LDAP是开放的Internet标准,支持跨平台的Internet协议,在业界中得到广泛认可的,并且市场上或者开源社区上的大多产品都加入了对LDAP的支持,因此对于这类系统,不需单独定制,只需要通过LDAP做简单的配置就可以与服务器做认证交互。“简单粗暴”,可以大大降低重复开发和对接的成本。

    LDAP目录树概念:

      1. 目录树:在一个目录服务系统中,整个目录信息集可以表示为一个目录信息树,树中的每个节点是一个条目。

      2. 条目:每个条目就是一条记录,每个条目有自己的唯一可区别的名称(DN)。

      3. 对象类:与某个实体类型对应的一组属性,对象类是可以继承的,这样父类的必须属性也会被继承下来。

      4. 属性:描述条目的某个方面的信息,一个属性由一个属性类型和一个或多个属性值组成,属性有必须属性和非必须属性

    spring history: 

      2004年 Spring Framework 1.0 final 正式问世。

      1.在Spring1.x时代,都是通过xml文件配置bean,随着项目的不断扩大,需要将xml配置分放到不同的配置文件中,需要频繁的在java类和xml配置文件中切换。

      2.随着JDK 1.5带来的注解支持,Spring2.x可以使用注解对Bean进行申明和注入,大大的减少了xml配置文件,同时也大大简化了项目的开发。

      3.从Spring3.x开始提供了Java配置方式,使用Java配置方式可以更好的理解你配置的Bean,现在我们就处于这个时代,并且Spring4.x和Spring boot都推荐使用java配置的方式。

      Java配置是Spring4.x推荐的配置方式,可以完全替代xml配置。

    (Spring的Java配置方式是通过 @Configuration 和 @Bean 这两个注解实现的:

    1、@Configuration 作用于类上,相当于一个xml配置文件;

    2、@Bean 作用于方法上,相当于xml配置中的<bean>;)

    CORS是什么:

      CORS(Cross-Origin Resource Sharing 跨源资源共享),当一个请求url的协议、域名、端口三者之间任意一与当前页面地址不同即为跨域。

      例如最常见的,在一个域名下的网页中,调用另一个域名中的资源。

      出于安全原因,浏览器限制从脚本内发起的跨源HTTP请求。(并不一定是浏览器限制了发起跨站请求,也可能是跨站请求可以正常发起,但是返回结果被浏览器拦截了。)

      跨域资源共享( CORS )机制允许 Web 应用服务器进行跨域访问控制,从而使跨域数据传输得以安全进行。现代浏览器支持在 API 容器中(例如 XMLHttpRequest 或 Fetch )使用 CORS,以降低跨域 HTTP 请求所带来的风险。

    CORS的作用:

      为了改善网络应用程序,开发人员要求浏览器供应商允许跨域请求。跨域请求主要用于:

    调用XMLHttpRequest或fetchAPI通过跨站点方式访问资源

    网络字体,例如Bootstrap(通过CSS使用@font-face 跨域调用字体)

    通过canvas标签,绘制图表和视频。

    什么情况下需要 CORS:

      跨域资源共享标准( cross-origin sharing standard )允许在下列场景中使用跨域 HTTP 请求:

    由 XMLHttpRequest 或 Fetch 发起的跨域 HTTP 请求。

    Web 字体 (CSS 中通过 @font-face 使用跨域字体资源), 因此,网站就可以发布 TrueType 字体资源,并只允许已授权网站进行跨站调用。

    WebGL 贴图

    使用 drawImage 将 Images/video 画面绘制到 canvas

    样式表(使用 CSSOM)

    CORS实现:

      CORS也有一些限制,两种模型可以实现:

      1.简单模型
      支持get/post/put/delete请求,例如返回Access-Control-Allow-Origin:*,但是不允许自定义header且会忽略cookies,且post数据格式有限制,只支持‘text/plain','application/x-www-urlencoded'and'multipart/form-data',其中’text/plain'默认支持,后面两种需要下面的预检请求和服务器协商。
      2.协商模型/预检请求(Preflighted Request)
    安装SQL

    一.首先,将MySQL APT存储库添加到系统的软件存储库列表中

    1.转到https://dev.mysql.com/downloads/repo/apt/上的MySQL APT存储库的下载页面,

      选择并下载适用于Linux发行版的发行包的下载路径 ,

      使用以下命令下载:

    1
    wget https://dev.mysql.com/get/mysql-apt-config_0.8.12-1_all.deb

    2.使用以下命令安装下载的发行包,替换 version-specific-package-name 为下载的包的名称(如果未在包所在的文件夹中运行命令,则以其路径开头):

    1
    sudo dpkg -i /PATH/version-specific-package-name.deb

     我的在当前文件下运行的是以下命令:

    1
    sudo dpkg -i mysql-apt-config_0.8.12-1_all.deb

     注:中间弹窗直接↓到点”OK“

     

    3.使用以下命令从MySQL APT存储库更新包信息(此步骤是必需的):

    1
    sudo apt-get update
     
     

    二.使用APT安装MySQL:

    (不执行以上步骤直接执行这句得到的MySQL版本是5.7)
    1
    sudo apt-get install mysql-server

    注:

    其中两个弹窗

    第一个是确认密码(设置数据库密码)

    另一个是选择加密方式,工具较新选第一个,较老选第二个

    下载时间略长稍作等待,到这就安装完成啦

     

    三.开放远程访问

    开放远程访问,以连接可视化图形界面

    1.连接到数据库

    1
    mysql -u root -p

    输入密码

    2.查看数据库会看到有一个mysql

    1
    show databases;

    3.选择当前使用数据库为mysql

    1
    use mysql;

    4.查看权限

    1
    select host, user, authentication_string, plugin from user;

    5.更改加密方式

       因为mysql8的加密方式不一样,远程工具连接不上因此要更改加密方式

      ******是数据库密码

    1
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '******';

     
    6.开放远程访问权限(授权远程连接)
    1
    grant all on *.* to 'root'@'%';

    7.执行刷新权限

    1
    flush privileges;

    另有一个update的方式可参考https://blog.csdn.net/qq_40147863/article/details/86485439?tdsourcetag=s_pctim_aiomsg

    update对表结构直接修改如果把%写错成/,就会造成root账户就登陆不了了,使用需谨慎

    因此我们一般使用mysql里面的命令

  • 相关阅读:
    Leetcode 538. Convert BST to Greater Tree
    Leetcode 530. Minimum Absolute Difference in BST
    Leetcode 501. Find Mode in Binary Search Tree
    Leetcode 437. Path Sum III
    Leetcode 404. Sum of Left Leaves
    Leetcode 257. Binary Tree Paths
    Leetcode 235. Lowest Common Ancestor of a Binary Search Tree
    Leetcode 226. Invert Binary Tree
    Leetcode 112. Path Sum
    Leetcode 111. Minimum Depth of Binary Tree
  • 原文地址:https://www.cnblogs.com/avopen/p/10668631.html
Copyright © 2011-2022 走看看