MVC开发模式

针对JavaWeb开发产生的一种模式

MVC开发模式的优点

  • 提高 JavaWeb 开发的代码复用性,避免了重复性开发
  • 有效帮助开发人员实现业务开发中的事务管理

MVC开发角色组成

  • Ccontroller 控制层
  • Mmodel 业务模型层 完成业务处理
    • dao层: 直接操作数据库
    • service层:调用dao层来完成业务实现,负责管理所调用的dao层的事务管理
  • Vview 视图层 将处理结果写入到相应包 JSP

Dao层的作用

在实际的业务处理过程中,需要多次的数据库访问。这些访问的性质他们往往是相同的。采用Dao层可以将数据库访问进行封装,避免进行重复性数据库访问开发操作。同时降低了维护的成本

Dao层的实现

  • dao层的角色
    • Dao接口层:声明Dao接口
    • Dao实现层:声明Dao接口实现类
  • Dao层命名规则
    • Dao接口层: com.xon.dao [接口]: 表Dao

保持用户登陆的三种状态

  • HTTP是无状态的
  • 通过cookie在客户端记录状态
  • 通过session在服务端记录状态
  • 通过token方式维持状态

不存在跨域问题使用cookie session

存在跨域问题使用token

token的原理分析

token原理分析

Spring

Spring都有什么

  • Spring Boot
  • Spring Framework 框架
  • Spring Data 数据(持久层)
  • Spring Cloud 微服务
  • Spring Security 安全(权限管理)
  • Spring Session 登陆
  • Spring AMQP 消息(异步)
  • Spring for Android 安卓应用
  • Spring for Apache Kafka 日志处理

Spring框架

Spring框架是一个开源的JavaEE的应用程序

主要核心是IOC(控制反转/依赖注入)和AOP(面向切面编程)两大技术

1

Spring IOC(控制反转/依赖注入)

Spring AOP

Spirng JDBC + 事务

Spring作用

Dao

​ JDBC操作(Mybatis)

Service

​ Spring框架不是针对Service层的业务逻辑的,目前service没有适合的框架

Controller

​ Servlet(接收请求、相应数据、地址配置、页面转发)

Spring基于分布式的应用程序

  • 基于轻量级框架
    • 配置管理
    • Bean对象实例化IOC
  • 集成第三方框架
    • 持久层框架:Mybatis/Hibernate框架
    • SpringMVC
    • Spring Security权限
    • QUartz时钟框架
  • 自带服务
    • Mail 邮件处理
    • 定时任务处理-定时调度
    • 消息处理

Spring5 框架

Spring网站链接

Spring官网 https://spring.io

Spring下载地址 https://repo.spring.io/release/org/springframework/spring/

GitHub托管地址 https://github.com/spring-projects/spring-framework

关于Spring框架

Spring 历史

  • 2002 首次推出了Spring框架的雏形,interface21框架
  • 2004.03.24 Spring框架以interface21框架为基础,经过了重新设计,并不断丰富其内涵,发布了1.0正式版
  • Rob Johnson : Spring Framework创始人,音乐学博士,“轮子理论”

Spring概述

  • Spring是一个轻量级的开源JavaEE框架

  • Spring可以解决企业应用开发的复杂性

  • Spring有两个核心部分

    • IOC 控制反转

      把创建对象过程交给Spring进行管理

    • AOP 面向切面

      不修改源代码进行功能增强

Spring特点

  • 方面解释,简化开发
  • AOP编程支持
  • 方便程序的测试
  • 方便和集成各种优秀框架
  • 方便进行事务的操作
  • 降低JavaEE API的使用难度

下载&使用Spring

手动导入jar包

Spring下载地址 https://repo.spring.io/release/org/springframework/spring/

  1. 在下载地址中下载新版的Spring文件
  2. 在lib文件夹中有相应的jar包
  3. 导入相应的jar包
  4. 导入日志包

Maven坐标

Maven坐标地址

1
2
3
4
5
6
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.3</version>
</dependency>

导入spring-webmvc的好处在于它会自动导入相关的spring包,不用一个一个添加

1
2
3
4
5
6
7
spring-webmvc中包含
spring-aop
spring-beans
spring-context
spring-core
spring-expression
spring-web

可以在maven仓库中查找最新的webmvc 前往查找

spring jdbc坐标

1
2
3
4
5
6
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.3</version>
</dependency>

IOC概念和管理

什么是IOC

控制反转,把对象和对象之间的调用过程,交给Spring进行管理

为什么使用IOC

为了降低耦合度

Spring

Spring(春天)简介

Spring网站链接

Spring官网 https://spring.io

Spring下载地址 https://repo.spring.io/release/org/springframework/spring/

GitHub托管地址 https://github.com/spring-projects/spring-framework

Maven坐标

1
2
3
4
5
6
7
8
9
10
11
12
13
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.3</version>
</dependency>

Spring 历史

  • 2002 首次推出了Spring框架的雏形,interface21框架
  • 2004.03.24 Spring框架以interface21框架为基础,经过了重新设计,并不断丰富其内涵,发布了1.0正式版
  • Rob Johnson Spring Framework创始人,音乐学博士,“轮子理论”

Spring设计哲学

  • 提供每个级别的选择
  • 适应不同观点
  • 保持强大的向后兼容性
  • 关心API设计
  • 为代码质量设置高标准

Spring理念

  • 使现有技术更加容易实现,整合了现有的技术框架

现有技术框架

  • SSH:Struct2 + Spring + Hibernate

  • SSM:SpringMVC + Spring + MyBatis

Spring技术

Spring优点

  • Spring是一个开源的免费的容器(框架)

  • Spring是一个轻量级非入侵式的框架

  • 控制反转(IOC)面向切面对象(AOP)

  • 支持事务处理,对框架整合支持

Spring是一个轻量级的控制反转(IOC),和面向切面编程(AOP)的框架

Spring组成

img

Spring扩展

Spring Boot

  • 快速开发的脚手架

  • 基于SpringBoot可以快速的开发单个微服务

  • 约定大于配置

Spring Cloud

  • SpringCloud是基于SpringBoot实现的

大多数公司都在使用SpringBoot进行快速开发,学习SpringBoot的前提,需要完全掌握Spring及SpringMVC!承上启下

Spring缺点

发展太久以后,违背了原来的理念!配置十分繁琐,被称为“配置地狱”

IOC推导

  • UserDao接口

  • UserDaoImpl实现类

  • UserService业务接口

  • UserServiceLmpl业务实现类

开发模式:单例模式

饿汉式单例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Hungry{

private byte[] data1 = new byte[1024*1024];
private byte[] data2 = new byte[1024*1024];
private byte[] data3 = new byte[1024*1024];
private byte[] data4 = new byte[1024*1024];

private Hungry(){

}
private final static Hungry HUNGRY = new Hungry();

public static Hungry getInstance(){
return HUNGRY;
}
}

Linux中常用的查看系统信息的命令

Linux是一个神奇而又高效的操作系统,学完Linux对Linux系统有一个熟悉的了解后,你需要了解下这些实用的查看系统信息的命令

文章来源 - Linux中常用的查看系统信息的命令 | 《Linux就该这么学》 (linuxprobe.com)

查看系统信息

uname

谈到系统版本就一定会想到uname,查看系统内核版本

uname - 参数

其他的什么-n -m -r 参数都忽略,直接-a

1
2
3
[root@linuxprobe ~]#uname -a

Linux linuxprobe.com 2.6.32-358.el6.x86_64 #1 SMP Tue Jan 29 11:47:41 EST 2013 x86_64 x86_64 x86_64 GNU/Linux

从uname中貌似确实看到了许多信息,但是好像并不是我想要的,没有哪个系统的哪个版本

lsb_release -a

1
2
3
4
5
6
7
8
9
10
[root@linuxprobe ~]# lsb_release -a
LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID: RedHatEnterpriseServer
Description: Red Hat Enterprise Linux Server release 6.4 (Santiago)
Release: 6.4
Codename: Santiago

[root@linuxprobe ~]#cat /etc/issue
Red Hat Enterprise Linux Server release 6.4 (Santiago)
Kernel \r on an \m

查看内存相关

free

一谈到Linux的内存就想到了一个命令free,在课本第2章 新手必须掌握的Linux命令中有对此的解释

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@linuxprobe ~]# free
total used free shared buffers cached
Mem: 5228872 669360 4559512 0 28060 266936
-/+ buffers/cache: 374364 4854508
Swap: 4194296 0 4194296

[root@linuxprobe ~]# free -m
total used free shared buffers cached
Mem: 5106 653 4452 0 27 260
-/+ buffers/cache: 365 4740
Swap: 4095 0 4095

[root@linuxprobe ~]# free -g
total used free shared buffers cached
Mem: 4 0 4 0 0 0
-/+ buffers/cache: 0 4
Swap: 3 0 3

很明显内存大小,使用多少,剩余多少,buffers和cached多少,以及swap情况一目了然,使用参数-m/-g 可以指定单位

查看cpu相关

uptime

1
2
[root@linuxprobe ~]# uptime
20:09:48 up 43 min, 3 users, load average: 0.35, 0.25, 0.11 # 系统的平均负载,1分钟,5分钟,15分钟

top

实时监控系统的cpu和内存,默认3s刷新一次

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[root@linuxprobe ~]# top
top - 20:15:41 up 49 min, 3 users, load average: 0.41, 0.38, 0.21
Tasks: 236 total, 1 running, 235 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.2%us, 0.5%sy, 0.0%ni, 98.8%id, 0.5%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 5228872k total, 671136k used, 4557736k free, 28324k buffers
Swap: 4194296k total, 0k used, 4194296k free, 267360k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 19360 1536 1224 S 0.0 0.0 0:05.37 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.02 kthreadd
3 root RT 0 0 0 0 S 0.0 0.0 0:00.07 migration/0
4 root 20 0 0 0 0 S 0.0 0.0 0:00.14 ksoftirqd/0
5 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
6 root RT 0 0 0 0 S 0.0 0.0 0:00.01 watchdog/0
7 root RT 0 0 0 0 S 0.0 0.0 0:00.69 migration/1
8 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/1
9 root 20 0 0 0 0 S 0.0 0.0 0:00.10 ksoftirqd/1
10 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/1
11 root RT 0 0 0 0 S 0.0 0.0 0:00.10 migration/2
12 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/2
13 root 20 0 0 0 0 S 0.0 0.0 0:00.01 ksoftirqd/2
14 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/2
15 root RT 0 0 0 0 S 0.0 0.0 0:00.17 migration/3
16 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/3
17 root 20 0 0 0 0 S 0.0 0.0 0:00.06 ksoftirqd/3
18 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/3
19 root 20 0 0 0 0 S 0.0 0.0 0:00.41 events/0

cpu内存实时利用率以此为标准

查看cpu参数——文件 :/proc/cpuinfo

1
2
3
4
5
6
7
8
9
10
11
# cpu个数
[root@linuxprobe ~]# cat /proc/cpuinfo | grep "physical id" | uniq | wc -l
2

# 线程数
[root@linuxprobe ~]# cat /proc/cpuinfo | grep "cpu cores" | uniq
cpu cores : 2

# cpu型号参数
[root@linuxprobe ~]# cat /proc/cpuinfo | grep 'model name' |uniq
model name : Intel(R) Core(TM) i5-3230M CPU @ 2.60GHz

查看硬盘相关

df

l
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
[root@linuxprobe ~]# df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda2 41284928 469040 38718736 2% /
tmpfs 2614436 224 2614212 1% /dev/shm
/dev/sda1 99150 32504 61526 35% /boot
/dev/sda6 516040 18016 471812 4% /home
/dev/sda3 4128448 2542976 1375760 65% /usr

# 以简单的看得懂的方式显示
[root@linuxprobe ~]# df -h

文件系统 容量 已用 可用 已用%% 挂载点
/dev/sda2 40G 459M 37G 2% /
tmpfs 2.5G 224K 2.5G 1% /dev/shm
/dev/sda1 97M 32M 61M 35% /boot
/dev/sda6 504M 18M 461M 4% /home
/dev/sda3 4.0G 2.5G 1.4G 65% /usr

[root@linuxprobe ~]# fdisk -l
Disk /dev/sda: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000f0739
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 102400 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 13 5235 41943040 83 Linux
/dev/sda3 5235 5757 4194304 83 Linux
/dev/sda4 5757 13055 58616832 5 Extended
/dev/sda5 5757 6280 4194304 82 Linux swap / Solaris
/dev/sda6 6280 6345 524288 83 Linux

[root@linuxprobe ~]# fdisk -l | grep Disk
Disk /dev/sda: 107.4 GB, 107374182400 bytes
Disk identifier: 0x000f0739

iostat 查看硬盘读写速度

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@linuxprobe ~]# iostat -t 1 3 #1s一次,查看3次
Linux 2.6.32-358.el6.x86_64 (twj.baidu.com) 2016年06月07日 x86_64 (4 CPU)
2016年06月07日 20时40分03秒
avg-cpu: %user %nice %system %iowait %steal %idle
0.17 0.06 0.74 0.84 0.00 98.19
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 8.34 273.82 136.61 1216528 606904
2016年06月07日 20时40分04秒
avg-cpu: %user %nice %system %iowait %steal %idle
0.00 2.10 9.97 13.12 0.00 74.80
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 89.00 3472.00 11208.00 3472 11208
2016年06月07日 20时40分05秒
avg-cpu: %user %nice %system %iowait %steal %idle
0.00 1.99 14.35 9.05 0.00 74.61
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 66.13 1464.52 9800.00 1816 12152
Measure
Measure

请我喝杯咖啡吧~

支付宝
微信