浅谈MVC思想

Model 模型层

JAVA业务逻辑 —— DTO数据层

—— DAO实体层

—— 接口

—— 方法

—— SERVICE服务层

View 视图层

Controller 控制层

页面和数据间的交互 —— SERVLET

————————————————————————————

Utils 中间件层

DB的封装 —— JDBC

Filter 过滤层

JS在MyEclipse中报错解决办法

1. 选中报错的jquery文件“jquery-1.2.6.min.js”
2. 右键选择 MyEclipse–>Exclude From Validation。

JDBC常用四大API

1. DriverManager 获取数据库的驱动

2. Conntion 数据库连接对象

3. Statement / PrepareStatement 数据库语句对象

4. ResultSet 结果封装

<1> 导入数据库Jar包

<2> getConnection(url,user,pwd)

<3> createStatement()

prepareStatement(String sql)

<4> int executeUpdate() 增删改

executeQuery()  查询

将MyEclipse的默认编码改成UTF-8

全部都修改成UTF8的方法:
1、windows->Preferences…打开”首选项”对话框, 左侧导航树,导航到general->Workspace,右侧 Text file encoding,选择Other,改变为UTF-8,以后新建立工程其属性对话框中的Text file encoding即为UTF-8。

2、 windows->Preferences…打开”首选项”对话框,左侧导航树,导航到general->Content Types,右侧Context Types树,点开Text,选择Java Source File,在下面的Default encoding输入框中输入UTF-8,点Update,则设置Java文件编码为UTF-8。其他java应用开发相关的文件 如:properties、XML等已经由MyEclipse缺省指定,分别为ISO8859-1,UTF-8,如开发中确需改变编码格式则可以在此指定。

MySQL基础语句

1.show databases;

2.use 数据库;

3.show tables;

4.desc 表;

PRI主键 MUL外键

MySQL中字段类型

基础:

charvarchartextncharnvarcharntext的区别

1CHARCHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不足的自动用空格填充。

2VARCHAR。存储变长数据,但存储效率没有CHAR高。如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合算的。VARCHAR类型的实际长度是它的值的实际长度+1。为什么“+1”呢?这一个字节用于保存实际使用了多大的长度。从空间上考虑,用varchar合适;从效率上考虑,用char合适,关键是根据实际情况找到权衡点。

3TEXTtext存储可变长度的非Unicode数据,最大长度为2^31-1(2,147,483,647)个字符。

4NCHARNVARCHARNTEXT。这三种从名字上看比前面三种多了个“N”。它表示存储的是Unicode数据类型的字符。我们知道字符中,英文字符只需要一个字节存储就足够了,但汉字众多,需要两个字节存储,英文与汉字同时存在时容易造成混乱,Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。ncharnvarchar的长度是在14000之间。和charvarchar比较起来,ncharnvarchar则最多存储4000个字符,不论是英文还是汉字;而charvarchar最多能存储8000个英文,4000个汉字。可以看出使用ncharnvarchar

数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。

进一步学习:

charvarchartextntextbigintintsmallinttinyintbit的区别及数据库的数据类型

Varchar 对每个英文(ASCII)字符都占用2个字节,对一个汉字也只占用两个字节

char 对英文(ASCII)字符占用1个字节,对一个汉字占用2个字节Varchar 的类型不以空格填满,比如varchar(100),但它的值只是“qian”,则它的值就是“qian”char 不一样,比如char(100),它的值是“qian”,而实际上它在数据库中是“qian “(qian后共有96个空格,就是把它填满为100个字节)。由于char是以固定长度的,所以它的速度会比varchar快得多!但程序处理起来要麻烦一点,要用trim之类的函数把两边的空格去掉!

ntext

可变长度 Unicode 数据的最大长度为 230 - 1 (1,073,741,823) 个字符。存储大小是所输入字符个数的两倍(以字节为单位)。ntextSQL-92 中的同义词是 national text

text

服务器代码页中的可变长度非 Unicode 数据的最大长度为 231-1 (2,147,483,647) 个字符。当服务器代码页使用双字节字符时,存储量仍是 2,147,483,647 字节。存储大小可能小于 2,147,483,647 字节(取决于字符串)。

bigint:从-2^63(-9223372036854775808)2^63-1(9223372036854775807)的整型数据,存储大小为 8 个字节。

int:从-2^31(-2,147,483,648)2^31-1(2,147,483,647)的整型数据,存储大小为 4 个字节。

smallint:从-2^15(-32,768)2^15-1(32,767)的整数数据,存储大小为 2 个字节。

tinyint:从0255的整数数据,存储大小为 1 字节。

bit10的整数数据,存储大小为 1 字节。

Unicode 数据

Microsoft SQL Server 2000 中,传统上非 Unicode 数据类型允许使用由特定字符集定义的字符。字符集是在安装 SQL Server 时选择的,不能更改。使用 Unicode 数据类型,列可存储由 Unicode 标准定义的任何字符,包含由不同字符集定义的所有字符。Unicode 数据类型需要相当于非 Unicode 数据类型两倍的存储空间。

Unicode 数据使用 SQL Server 中的 ncharvarcharntext 数据类型进行存储。对于存储来源于多种字符集的字符的列,可采用这些数据类型。当列中各项所包含的 Unicode 字符数不同时(至多为 4000),使用 nvarchar 类型。当列中各项为同一固定长度时(至多为 4000Unicode 字符),使用 nchar 类型。当列中任意项超过 4000Unicode字符时,使用 ntext 类型。

说明:SQL ServerUnicode 数据类型是基于 SQL-92 标准中的国家字符数据类型。SQL-92 使用前缀字符 n 标识这些数据类型及其值。

数据类型:

数据类弄是数据的一种属性,表示数据所表示信息的类型。任何一种计算机语言都定义了自己的数据类型。当然,不同的程序语言都具有不同的特点,所定义的数据类型的各类和名称都或多或少有些不同。SQL Server 提供了 25 种数据类型:

·Binary [(N)]

·Varbinary [(N)]

·Char [(N)]

·Varchar[(N)]

·Nchar[(N)]

·Nvarchar[(N)]

·Datetime

·Smalldatetime

·Decimal[(p[,s])]

·Numeric[(p[,s])]

·Float[(N)]

·Real

·Int

·Smallint

·Tinyint

·Money

·Smallmoney

·Bit

·Cursor

·Sysname

·Timestamp

·Uniqueidentifier

·Text

·Image

·Ntext

(1)二进制数据类型

二进制数据包括 BinaryVarbinaryImage.

Binary 数据类型既可以是固定长度的(Binary),也可以是变长度的。

Binary[(N)] n 位固定的二进制数据。其中,n 的取值范围是从 18000。其存储窨的大小是 n + 4 个字节。

Varbinary[(N)] n 位变长度的二进制数据。其中,n 的取值范围是从 18000。其存储窨的大小是 n + 4个字节,不是 n 个字节。

Image 数据类型中存储的数据是以位字符串存储的,不是由 SQL Server 解释的,必须由应用程序来解释。例如,应用程序可以使用 BMPTIEFGIFJPEG 格式把数据存储在 Image 数据类型中。

(2)字符数据类型

字符数据的类型包括 CharVarcharText

字符数据是由任何字母、符号和数字任意组合而成的数据。

Varchar 是变长字符数据,其长度不超过 8KBChar 是定长字符数据,其长度最多为 8KB。超过 8KBASCII 数据可以使用Text 数据类型存储。例如:因为 Html 文档全部都是 ASCII 字符,并且在一般情况下长度超过 8KB,所以这些文档可以 Text 数据类型存储在 SQL Server 中。

(3)Unicode 数据类型

Unicode 数据类型包括 Nchar,NvarcharNtext

Microsoft SQL Server 中,传统的非 Unicode 数据类型允许使用由特定字符集定义的字符。在 SQL Server 安装过程中,允许选择一种字符集。使用 Unicode 数据类型,列中可以存储任何由Unicode 标准定义的字符。在 Unicode 标准中,包括了以各种字符集定义的全部字符。使用Unicode 数据类型,所占的空间是使用非 Unicode 数据类型所占用的空间大小的两倍。

SQL Server 中,Unicode 数据以 NcharNvarcharNtext 数据类型存储。使用这种字符类型存储的列可以存储多个字符集中的字符。当列的长度变化时,应该使用 Nvarchar 字符类型,这时最多可以存储 4000 个字符。当列的长度固定不变时,应该使用 Nchar 字符类型,同样,这时最多可以存储 4000 个字符。当使用 Ntext 数据类型时,该列可以存储多于 4000 个字符。

(4)日期和时间数据类型

日期和时间数据类型包括 DatetimeSmalldatetime 两种类型。

日期和时间数据类型由有效的日期和时间组成。例如,有效的日期和时间数据包括“4/01/98 12:15:00:00:00 PM”“1:28:29:15:01 AM 8/17/98”。前一个数据类型是日期在前,时间在后一个数据类型是霎时间在前,日期在后。在 Microsoft SQL Server 中,日期和时间数据类型包括DatetimeSmalldatetime 两种类型时,所存储的日期范围是从 175311 日开始,到 99991231 日结束(每一个值要求 8 个存储字节)。使用 Smalldatetime 数据类型时,所存储的日期范围是 190011日 开始,到 20791231 日结束(每一个值要求 4 个存储字节)

日期的格式可以设定。设置日期格式的命令如下:

Set DateFormat {format | @format _var|

其中,format | @format_var 是日期的顺序。有效的参数包括 MDYDMYYMDYDMMYDDYM。在默认情况下,日期格式为 MDY

例如,当执行 Set DateFormat YMD 之后,日期的格式为年 月 日 形式;当执行 Set DateFormat DMY 之后,日期的格式为 日 月有年 形式

5)数字数据类型

数字数据只包含数字。数字数据类型包括正数和负数、小数(浮点数)和整数 。

整数由正整数和负整数组成,例如 39250-233967。在 Micrsoft SQL Server 中,整数存储的数据类型是 IntSmallintTinyintInt 数据类型存储数据的范围大于 Smallint 数据类型存储数据的范围,而 Smallint 据类型存储数据的范围大于 Tinyint 数据类型存储数据的范围。使用 Int 数据狗昔存储数据的范围是从 -2 147 483 6482 147 483 647(每一个值要求 4个字节存储空间)。使用 Smallint 数据类型时,存储数据的范围从 -32 76832 767(每一个值要求2个字节存储空间)。使用 Tinyint 数据类型时,存储数据的范围是从0255(每一个值要求1个字节存储空间)。

精确小娄数据在 SQL Server 中的数据类型是 DecimalNumeric。这种数据所占的存储空间根据该数据的位数后的位数来确定。

SQL Server 中,近似小数数据的数据类型是 FloatReal。例如,三分之一这个分数记作。3333333,当使用近似数据类型时能准确表示。因此,从系统中检索到的数据可能与存储在该列中数据不完全一样。

6)货币数据表示正的或者负的货币数量 。在 Microsoft SQL Server 中,货币数据的数据类型是MoneySmallmoneyMoney 数据类型要求 8 个存储字节,Smallmoney 数据类型要求 4 个存储字节。

7)特殊数据类型

特殊数据类型包括前面没有提过的数据类型。特殊的数据类型有3种,即 TimestampBitUniqueidentifier

Timestamp 用于表示SQL Server 活动的先后顺序,以二进投影的格式表示。Timestamp 数据与插入数据或者日期和时间没有关系。

Bit 1 或者 0 组成。当表示真或者假、ON 或者 OFF 时,使用 Bit 数据类型。例如,询问是否是每一次访问的客户机请求可以存储在这种数据类型的列中。

Uniqueidentifier 16 字节的十六进制数字组成,表示一个全局唯一的。当表的记录行要求唯一时,GUID是非常有用。例如,在客户标识号列使用这种数据类型可以区别不同的客户。

CentOS 6、7下PPTP VPN.sh

#!/bin/bash
#
# Author:  yeho 
# Blog:  http://blog.linuxeye.com
#
# Installs a PPTP VPN-only system for CentOS

# Check if user is root
[ $(id -u) != "0" ] && echo "Error: You must be root to run this script" && exit 1 export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
clear
printf "
#######################################################################
#    [LNMP](https://blog.linuxeye.com/31.html "LNMP")/[LAMP](https://blog.linuxeye.com/82.html "LAMP")/LANMP for CentOS/RadHat 5+ Debian 6+ and Ubuntu 12+    #
# For more information please visit http://blog.linuxeye.com/31.html  #
#######################################################################
"

[ ! -e '/usr/bin/curl' ] && yum -y install curl

VPN_IP=`curl ipv4.icanhazip.com` VPN_USER="linuxeye" VPN_PASS="linuxeye" VPN_LOCAL="192.168.0.150" VPN_REMOTE="192.168.0.151-200"

while :
do         echo
        read -p "Please input username: " VPN_USER
        [ -n "$VPN_USER" ] && break
done

while :
do         echo
        read -p "Please input password: " VPN_PASS
        [ -n "$VPN_PASS" ] && break
done clear if [ -n "`grep 'CentOS [Linux](http://www.linuxeye.com/ "Linux") release 7' /etc/redhat-release`" ];then         #CentOS_REL=7     if [ ! -e /etc/yum.repos.d/epel.repo ];then         cat > /etc/yum.repos.d/epel.repo << EOF [epel] name=Extra Packages for Enterprise Linux 7 - \$basearch #baseurl=http://download.fedoraproject.org/pub/epel/7/\$basearch mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=\$basearch
failovermethod=priority
enabled=1 gpgcheck=0 EOF fi         for Package in wget make openssl gcc-c++ ppp pptpd iptables iptables-services
        do                 yum -y install $Package
        done         echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf elif [ -n "`grep 'CentOS release 6' /etc/redhat-release`" ];then         #CentOS_REL=6         for Package in wget make openssl gcc-c++ iptables ppp
        do                 yum -y install $Package
        done     sed -i 's@net.ipv4.ip_forward.*@net.ipv4.ip_forward = 1@g' /etc/sysctl.conf
    rpm -Uvh http://poptop.sourceforge.net/yum/stable/rhel6/pptp-release-current.noarch.rpm
    yum -y install pptpd else         echo -e "\033[31mDoes not support this OS, Please contact the author! \033[0m"         exit 1
fi echo "1" > /proc/sys/net/ipv4/ip_forward

sysctl -p /etc/sysctl.conf [ -z "`grep '^localip' /etc/pptpd.conf`" ] && echo "localip $VPN_LOCAL" >> /etc/pptpd.conf # Local IP address of your VPN server
[ -z "`grep '^remoteip' /etc/pptpd.conf`" ] && echo "remoteip $VPN_REMOTE" >> /etc/pptpd.conf # Scope for your home network

if [ -z "`grep '^ms-dns' /etc/ppp/options.pptpd`" ];then     echo "ms-dns 8.8.8.8" >> /etc/ppp/options.pptpd # Google DNS Primary     echo "ms-dns 209.244.0.3" >> /etc/ppp/options.pptpd # Level3 Primary     echo "ms-dns 208.67.222.222" >> /etc/ppp/options.pptpd # OpenDNS Primary
fi echo "$VPN_USER pptpd $VPN_PASS *" >> /etc/ppp/chap-secrets

ETH=`route | grep default | awk '{print $NF}'`
[ -z "`grep '1723 -j ACCEPT' /etc/sysconfig/iptables`" ] && iptables -I INPUT 4 -p tcp -m state --state NEW -m tcp --dport 1723 -j ACCEPT [ -z "`grep 'gre -j ACCEPT' /etc/sysconfig/iptables`" ] && iptables -I INPUT 5 -p gre -j ACCEPT
iptables -t nat -A POSTROUTING -o $ETH -j MASQUERADE
service iptables save
sed -i 's@^-A INPUT -j REJECT --reject-with icmp-host-prohibited@#-A INPUT -j REJECT --reject-with icmp-host-prohibited@' /etc/sysconfig/iptables
sed -i 's@^-A FORWARD -j REJECT --reject-with icmp-host-prohibited@#-A FORWARD -j REJECT --reject-with icmp-host-prohibited@' /etc/sysconfig/iptables
service iptables restart

service pptpd restart
chkconfig pptpd on
clear

echo -e "You can now connect to your VPN via your external IP \033[32m${VPN_IP}\033[0m" echo -e "Username: \033[32m${VPN_USER}\033[0m" echo -e "Password: \033[32m${VPN_PASS}\033[0m"

CentOS-7-64bit 配置Apache + MySQL + PHP

一、配置防火墙,开启80端口、3306端口

CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙。

1、关闭firewall:

#停止firewall服务



1. systemctl stop firewalld.service

#禁止firewall开机启动



1. systemctl disable firewalld.service

2、安装iptables防火墙

#安装



1. yum install iptables-services

#编辑防火墙配置文件



1. vi /etc/sysconfig/iptables

# Firewall configuration written by system-config-firewall

# Manual customization of this file is not recommended.

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

-A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

-A INPUT -p icmp -j ACCEPT

-A INPUT -i lo -j ACCEPT

-A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT

-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT

-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT

-A INPUT -j REJECT –reject-with icmp-host-prohibited

-A FORWARD -j REJECT –reject-with icmp-host-prohibited

COMMIT

:wq! #保存退出

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -p tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 4433 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5293 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 7777 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8666 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 9000 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

#最后重启防火墙使配置生效



1. systemctl restart iptables.service

#设置防火墙开机启动



1. systemctl enable iptables.service
1. systemctl disable iptables.service

二、关闭SELINUX
#修改配置文件



1. vi /etc/selinux/config

#SELINUX=enforcing #注释掉

#SELINUXTYPE=targeted #注释掉

SELINUX=disabled #增加

:wq! #保存退出

#使配置立即生效



1. setenforce 0

三.安装apache



1. yum install httpd

可能会用到的:

systemctl start httpd.service #启动apache

systemctl stop httpd.service #停止apache

systemctl restart httpd.service #重启apache

systemctl enable httpd.service #设置apache开机启动

CentOS 7的yum源中貌似没有正常安装mysql时的mysql-sever文件,需要去官网上下载



















# rpm -ivh mysql-community-release-el7-5.noarch.rpm


# yum install mysql-community-server




成功安装之后重启mysql服务

















# service mysqld restart




初次安装mysql是root账户是没有密码的

设置密码的方法

















# mysql -uroot


mysql> set password for ‘root’@‘localhost’ = password(‘mypasswd’);


mysql> exit




五.安装php



1. yum install php

安装PHP组件,使PHP支持mysql



1. yum install php-mysql php-gd libjpeg* php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-bcmath php-mhash

重启对应服务



1. systemctl restart mysqld.service
2. systemctl restart httpd.service