Java笔记三

1.简述SSH 、SSM 、Springboot 框架,以及各个框架的优缺点。
SSMSSH不同主要在MVC实现方式,以及ORM持久化方面不同(Hiibernate与Mybatis)。
SSM优势:
SSM越来越轻量级配置,将注解开发发挥到极致,且ORM实现更加灵活,SQL优化更简便。

SSH优势:
而SSH较注重配置开发,其中的Hiibernate对JDBC的完整封装更面向对象,对增删改查的数据维护更自动化,但SQL优化方面较弱,且入门门槛稍高。
SSH 通常指的是 Struts2 做控制器(controller),spring 管理各层的组件,hibernate 负责持久化层。
SSM 则指的是 SpringMVC 做控制器(controller),Spring 管理各层的组件,MyBatis 负责持久化层。
共同点:

1、Spring依赖注入DI来管理各层的组件。
2、用面向切面编程AOP管理事物、日志、权限等。

不同点:

1、Struts2 和 SpringMVC 控制器(controller)控制视图和模型的交互机制的不同,
2、Struts2是Action类级别,SpringMVC是方法级别,更容易实现RESTful风格。

二、 SSM框架和spring boot全家桶相比有哪些优缺点? 这两者对比起来有点奇怪。因为SSMWEB应用框架,涵盖整个应用层,而spring boot你可以看做一个启动、配置、快速开发的辅助框架,本身针对的是微服务。

springboot 只是为了提高开发效率,是为了提升生产力的:

1、springboot一个应用是一个可执行jar(启动类main方法启动web应用),而不像传统的war,内嵌tomcat容器,可以jar形式启动一个服务,可以快速部署发布web服务,微服务最好不过了。

2、将原有的xml配置,简化为java配置

3、当然结构可能跟一般的ssm有一定区别,但其实主要是在资源文件。
2.JAVA中值类型和引用类型的区别
定义:

引用类型:
表示你操作的数据是同一个,也就是说当年传一个参数给另一个方法时,你在另一个方法中改变这个变量的值,那么调用这个方法是所传入的变量的值也将改变

值类型:
表示复制当前的一个变量传给方法,当你在这个方法中改变这个变量的值的时候,最初生命的变量值不会改变

值类型基本数据类型
整型  byte short int long
浮点型  float double
字符串类型  char
布尔类型  Boolean

引用值类型  数组 String 类
3.将省 、市 、县的关系用json格式结构数据展示。
    {'四川': {
        '成都': ['锦江区', '青羊区', '金牛区', '武侯区', '成华区', '龙泉驿区', '青白江区', '新都区', '温江区', '金堂县', '双流县', '郫县', '大邑县', '蒲江县', '新津县', '都江堰市', '彭州市', '邛崃市', '崇州市', '其他'],
        '自贡': ['自流井区', '贡井区', '大安区', '沿滩区', '荣县', '富顺县', '其他'],
        '攀枝花': ['东区', '西区', '仁和区', '米易县', '盐边县', '其他'],
        '泸州': ['江阳区', '纳溪区', '龙马潭区', '泸县', '合江县', '叙永县', '古蔺县', '其他'],
        '德阳': ['旌阳区', '中江县', '罗江县', '广汉市', '什邡市', '绵竹市', '其他'],
        '绵阳': ['涪城区', '游仙区', '三台县', '盐亭县', '安县', '梓潼县', '北川羌族自治县', '平武县', '江油市', '其他'],
        '广元': ['利州区', '元坝区', '朝天区', '旺苍县', '青川县', '剑阁县', '苍溪县', '其他'],
        '遂宁': ['船山区', '安居区', '蓬溪县', '射洪县', '大英县', '其他'],
        '内江': ['市中区', '东兴区', '威远县', '资中县', '隆昌县', '其他'],
        '乐山': ['市中区', '沙湾区', '五通桥区', '金口河区', '犍为县', '井研县', '夹江县', '沐川县', '峨边彝族自治县', '马边彝族自治县', '峨眉山市', '其他'],
        '南充': ['顺庆区', '高坪区', '嘉陵区', '南部县', '营山县', '蓬安县', '仪陇县', '西充县', '阆中市', '其他'],
        '眉山': ['东坡区', '仁寿县', '彭山县', '洪雅县', '丹棱县', '青神县', '其他'],
        '宜宾': ['翠屏区', '宜宾县', '南溪县', '江安县', '长宁县', '高县', '珙县', '筠连县', '兴文县', '屏山县', '其他'],
        '广安': ['广安区', '岳池县', '武胜县', '邻水县', '华蓥市', '其他'],
        '达川': ['通川区', '达县', '宣汉县', '开江县', '大竹县', '渠县', '万源市', '其他'],
        '雅安': ['雨城区', '名山县', '荥经县', '汉源县', '石棉县', '天全县', '芦山县', '宝兴县', '其他'],
        '巴中': ['巴州区', '通江县', '南江县', '平昌县', '其他'],
        '资阳': ['雁江区', '安岳县', '乐至县', '简阳市', '其他'],
        '阿坝': ['汶川县', '理县', '茂县', '松潘县', '九寨沟县', '金川县', '小金县', '黑水县', '马尔康县', '壤塘县', '阿坝县', '若尔盖县', '红原县', '其他'],
        '甘孜': ['康定县', '泸定县', '丹巴县', '九龙县', '雅江县', '道孚县', '炉霍县', '甘孜县', '新龙县', '德格县', '白玉县', '石渠县', '色达县', '理塘县', '巴塘县', '乡城县', '稻城县', '得荣县', '其他'],
        '凉山': ['西昌市', '木里藏族自治县', '盐源县', '德昌县', '会理县', '会东县', '宁南县', '普格县', '布拖县', '金阳县', '昭觉县', '喜德县', '冕宁县', '越西县', '甘洛县', '美姑县', '雷波县', '其他']
    },
    };
4.将下面的表1 、]表 2 ,通过 C 列,分别使用内连接、左外连接、右外连接、全外连接,以表格展示其结果内容。
表1
ABC
123
567
表2
CDE
345
891
 首先划分一下,连接分为三种:内连接、外连接、交叉连接  
  
内连接(INNER JOIN):
    分为三种:等值连接、自然连接、不等连接   
    1.  select * from1,2 where 表1.C =2.C;
    2.  select * from1 inner join 表2 on 表1.C =2.C;

在这里插入图片描述

外连接(OUTER JOIN): 
    分为三种:  
    左外连接(LEFT OUTER JOINLEFT JOIN)  
    select * from1 left join 表2 on 表1.C =2.C;

在这里插入图片描述

    右外连接(RIGHT OUTER JOIN或RIGHT JOIN) 
    select * from 表1 right join 表2 on 表1.C =2.C; 

在这里插入图片描述

    全外连接(FULL OUTER JOIN或FULL JOIN)
    select * from 表1 left join 表2 on 表1.C =2.C
    union
    select * from 表1 right join 表2 on 表1.C =2.C;

在这里插入图片描述

交叉连接(CROSS JOIN):
 没有WHERE 子句,它返回连接表中所有数据行的笛卡尔积 

在这里插入图片描述

5. ajax请求的时候get 和post方式的区别,HTTP 与 HTTPS有什么区别? HTTP和HTTPS的工作原理?
1. ajax请求的时候get 和post方式的区别:
Get和Post都是向服务器发送的一种请求,只是发送机制不同。
   GET请求会将参数跟在URL后进行传递,而POST请求则是作为HTTP消息的实体内容发送给WEB服务器。当然在Ajax请求中,这种区别对用户是不可见的
   GEt传输数据容量小,不安全,post传输数据内容大,更加安全;
HTTP 与 HTTPS有什么区别

一、传输信息安全性不同
1、http协议:是超文本传输协议,信息是明文传输。如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息。
2、https协议:是具有安全性的ssl加密传输协议,为浏览器和服务器之间的通信加密,确保数据传输的安全。

二、连接方式不同
1、http协议:http的连接很简单,是无状态的。
2、https协议:是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议。

三、端口不同
1、http协议:使用的端口是802、https协议:使用的端口是443.

四、证书申请方式不同
1、http协议:免费申请。
2、https协议:需要到ca申请证书,一般免费证书很少,需要交费。
HTTP和HTTPS的工作原理

https://cloud.tencent.com/developer/article/1467253
6.使用伪代码,去掉一个数组的重复元素

var arr = [1,2,3,1,43,12,12,1]

var arr = [2,3,4,4,5,2,3,6],
   arr2 = [];
for(var i = 0;i< arr.length;i++){
    if(arr2.indexOf(arr[i]) < 0){
        arr2.push(arr[i]);
    }
}
console.log(arr2);
7.web容器,EJB容器,JNDI,JMS,JTA
web容器:给处于其中的应用程序组件(JSPSERVLET)提供一个环境,使JSP,SERVLET直接更容器中的环境变量接口交互,不必关注其它系统问题。主要有WEB服务器来实现。
例如:TOMCAT,WEBLOGIC,WEBSPHERE等。该容器提供的接口严格遵守J2EE规范中的WEB APPLICATION 标准。我们把遵守以上标准的WEB服务器就叫做J2EE中的WEB容器。 

EJB容器:Enterprise java bean 容器。更具有行业领域特色。他提供给运行在其中的组件EJB各种管理功能。只要满足J2EE规范的EJB放入该容器,马上就会被容器进行高效率的管理。并且可以通过现成的接口来获得系统级别的服务。例如邮件服务、事务管理。 

JNDI:(Java Naming & Directory Interface)JAVA命名目录服务。主要提供的功能是:提供一个目录系统,让其它各地的应用程序在其上面留下自己的索引,从而满足快速查找和定位分布式应用程序的功能。 

JMS:(Java Message Service)JAVA消息服务。主要实现各个应用程序之间的通讯。包括点对点和广播。 

JTA:(Java Transaction APIJAVA事务服务。提供各种分布式事务服务。应用程序只需调用其提供的接口即可。 

JAF:(Java Action FrameWork)JAVA安全认证框架。提供一些安全控制方面的框架。让开发者通过各种部署和自定义实现自己的个性安全控制策略。
 
RMI/IIOP:(Remote Method Invocation /internet对象请求中介协议)他们主要用于通过远程调用服务。例如,远程有一台计算机上运行一个程序,它提供股票分析服务,我们可以在本地计算机上实现对其直接调用。当然这是要通过一定的规范才能在异构的系统之间进行通信。RMIJAVA特有的。

8.快速排序JAVA实现
  public static void quickSort(int[] arr,int low,int high){
        int i,j,temp,t;
        if(low>high){
            return;
        }
        i=low;
        j=high;
        //temp就是基准位
        temp = arr[low];
 
        while (i<j) {
            //先看右边,依次往左递减
            while (temp<=arr[j]&&i<j) {
                j--;
            }
            //再看左边,依次往右递增
            while (temp>=arr[i]&&i<j) {
                i++;
            }
            //如果满足条件则交换
            if (i<j) {
                t = arr[j];
                arr[j] = arr[i];
                arr[i] = t;
            }
 
        }
        //最后将基准为与i和j相等位置的数字交换
         arr[low] = arr[i];
         arr[i] = temp;
        //递归调用左半数组
        quickSort(arr, low, j-1);
        //递归调用右半数组
        quickSort(arr, j+1, high);
    }
   public static void main(String[] args){
        int[] arr = {10,7,2,4,7,62,3,4,2,1,8,9,19};
        quickSort(arr, 0, arr.length-1);
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值