- 博客(62)
- 收藏
- 关注
原创 使用 HttpSession 实现验证码
基本原理: 和表单重复提交一致: > 在原表单页面, 生成一个验证码的图片, 生成图片的同时, 需要把该图片中的字符串放入到 session 中. > 在原表单页面, 定义一个文本域, 用于输入验证码. > 在目标的 Servlet 中: 获取 session 和 表单域 中的 验证码的 值 > 比较两个值是否一致: 若一致, 受理请...
2018-07-23 15:04:44
836
1
原创 表单的重复提交
1). 重复提交的情况: ①. 在表单提交到一个 Servlet, 而 Servlet 又通过请求转发的方式响应一个 JSP(HTML) 页面, 此时地址栏还保留着 Serlvet 的那个路径, 在响应页面点击 "刷新" ②. 在响应页面没有到达时重复点击 "提交按钮". ③. 点击 "返回", 再点击 "提交"2). 不是重复提交的情况: 点击 "返回", "刷新" 原表单页
2018-07-23 15:00:59
306
原创 web应用中的绝对路径和相对路径
使用相对路径可能会有问题, 但使用绝对路径肯定没有问题. 1). 绝对路径: 相对于当前 WEB 应用的路径. 在当前 WEB 应用的所有的路径前都添加 contextPath 即可. 2). / 什么时候代表站点的根目录, 什么时候代表当前 WEB 应用的根目录若 / 需要服务器进行内部解析, 则代表的就是 WEB 应用的根目录. 若是交给浏览器了, 则 / 代表的就是站点的根目录...
2018-07-23 14:44:27
3110
原创 Cookie小示例
示例1:<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" session="false"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "htt
2018-07-23 11:20:12
1155
原创 Session的生命周期
1. HttpSession 的生命周期:1). 什么时候创建 HttpSession 对象①. 对于 JSP: 是否浏览器访问服务端的任何一个 JSP, 服务器都会立即创建一个 HttpSession 对象呢?不一定。 > 若当前的 JSP 是客户端访问的当前 WEB 应用的第一个资源,且 JSP 的 page 指定的 session 属性值为 false, 则服务器就不...
2018-07-21 17:52:20
5756
原创 多线程死锁
package com.mwl.thread3;class A{ public synchronized void foo(B b){ System.out.println("当前线程名:"+Thread.currentThread().getName() +"进...
2018-07-16 16:15:28
153
原创 spring集成redis
1.1. 通过jedis连接redis单机 1.1.1. jar包pom坐标: <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.7.0<...
2018-07-14 16:24:56
188
原创 redis的安装,配置
1. redis介绍1.1. 什么是redis Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库。它通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止Redis支持的键值数据类型如下:字符串类型散列类型列表类型集合类型有序集合类型。1.2. redis的应用场景缓存(数据查询、短连接、新闻内容、商品内容...
2018-07-14 16:06:21
583
原创 Nginx的高可用
要实现nginx的高可用,需要实现备份机。 1.1. 什么是负载均衡高可用 nginx作为负载均衡器,所有请求都到了nginx,可见nginx处于非常重点的位置,如果nginx服务器宕机后端web服务将无法提供服务,影响严重。 为了屏蔽负载均衡服务器的宕机,需要建立一个备份机。主服务器和备份机上都运行高可用(High Availability)监控程序,通过传送诸如“I a...
2018-07-14 13:55:21
437
原创 域名
什么是域名域名就是网站。www.baidu.comwww.taobao.comwww.jd.comTcp/ip Dns服务器:把域名解析为ip地址。保存的就是域名和ip的映射关系。一级域名:Baidu.comTaobao.comJd.com二级域名:www.baidu.comImage.baidu.comItem.baidu.com三级域名:1.Image.baidu.comAaa.image.b...
2018-07-14 12:01:17
14121
1
翻译 nginx安装,配置
1.nginx介绍(网上借阅)1.1. 什么是nginx Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。 1.2. Nginx的应用场景1、http服务器。Nginx是...
2018-07-14 11:57:07
897
原创 java代码中使用多线程并行
@ResponseBody @RequestMapping("/test") public String testThread(){ Date date1 = new Date(); System.out.println("注册用户");// sendEmail();// sendMsg(); Thread thread = new Thread(() -> sendEmail()...
2018-07-07 14:56:22
1763
原创 InnoDB引擎的数据库状态查看(分析行锁)
通过检查InnoDB_row_lock状态变量来分析系统上的行锁的争夺情况show status like 'innodb_row_lock%';对于各个状态说明如下:Innodb_row_lock_current_waits:当前正在等待锁的数量;Innodb_row_lock_time:从系统启动到现在锁定总时间长度;Innodb_row_lock_time_avg:每次等待所花平均时间;In...
2018-07-06 17:22:11
8544
1
原创 Show Profile
1.Show Profile默认是关闭的,试用前需要开启:查看是否开启:Show variables like 'profiling';设置开启:set profiling = on;2.使用:show profile cpu,block io for query 150;3.show profile 的参数:type是可选的,取值范围可以如下:ALL 显示所有性能信息BLOCK IO 显示块IO...
2018-06-20 17:00:55
2112
原创 sql慢日志
1.查看慢日志是否开启(默认关闭的):show VARIABLES like '%slow_query_log%';2.如何开启呢?set global slow_query_log = 1;此命令只对当前数据库有效,如果mysql重启后,则会失效,如果要想一直有效,则要配置my.cnf文件,配置如下:修改my.cnf文件,[mysqld]下增加或修改参数slow_query_log和slow_q...
2018-06-20 15:49:07
1570
原创 哪些情况下需要创建索引?哪些情况下不要创建索引?
1.主键自动建立唯一索引;2.频繁作为查询条件的字段应该创建索引;3.查询中与其他表有关联的字段,例如外键关系;4.频繁更新的字段不适合创建索引,因为每次更新不单单是更新记录,还会更新索引,保存索引文件;5.where条件里用不到的字段,不创建索引;6.高并发的情况下一般选择复合索引;7.查询中排序的字段创建索引将大大提高排序的速度(索引就是排序加快速查找);8.查询中统计或者分组的字段;9.表记...
2018-06-19 20:07:59
25915
6
原创 【案例讲解】存储过程
#一、创建存储过程实现传入用户名和密码,插入到admin表中CREATE PROCEDURE test_pro1(IN username VARCHAR(20),IN loginPwd VARCHAR(20))BEGIN INSERT INTO admin(admin.username,PASSWORD) VALUES(username,loginpwd);END $#二、创建存储过程实现传入女神...
2018-06-19 18:58:10
3465
原创 存储过程
#存储过程和函数/*存储过程和函数:类似于java中的方法好处:1、提高代码的重用性2、简化操作*/#存储过程/*含义:一组预先编译好的SQL语句的集合,理解成批处理语句1、提高代码的重用性2、简化操作3、减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率*/#一、创建语法CREATE PROCEDURE 存储过程名(参数列表)BEGIN 存储过程体(一组合法的SQL语句)END#注意:...
2018-06-19 18:57:56
313
原创 函数
#函数/*含义:一组预先编译好的SQL语句的集合,理解成批处理语句1、提高代码的重用性2、简化操作3、减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率区别:存储过程:可以有0个返回,也可以有多个返回,适合做批量插入、批量更新函数:有且仅有1 个返回,适合做处理数据后返回一个结果*/#一、创建语法CREATE FUNCTION 函数名(参数列表) RETURNS 返回类型BEGIN 函数...
2018-06-19 18:57:46
393
原创 流程控制经典案例讲解
/*一、已知表stringcontent其中字段:id 自增长content varchar(20)向该表插入指定个数的,随机的字符串*/DROP TABLE IF EXISTS stringcontent;CREATE TABLE stringcontent( id INT PRIMARY KEY AUTO_INCREMENT, content VARCHAR(20) );DELIMITER $...
2018-06-19 18:57:37
1280
原创 流程控制结构
#流程控制结构/*顺序、分支、循环*/#一、分支结构#1.if函数/*语法:if(条件,值1,值2)功能:实现双分支应用在begin end中或外面*/#2.case结构/*语法:情况1:类似于switchcase 变量或表达式when 值1 then 语句1;when 值2 then 语句2;...else 语句n;end 情况2:case when 条件1 then 语句1;when 条件2 ...
2018-06-19 18:57:26
309
原创 变量
#变量/*系统变量: 全局变量 会话变量自定义变量: 用户变量 局部变量*/#一、系统变量/*说明:变量由系统定义,不是用户定义,属于服务器层面注意:全局变量需要添加global关键字,会话变量需要添加session关键字,如果不写,默认会话级别使用步骤:1、查看所有系统变量show global|【session】variables;2、查看满足条件的部分系统变量show global|【ses...
2018-06-19 18:57:08
147
原创 【案例讲解】常见约束
#1.向表emp2的id列中添加PRIMARY KEY约束(my_emp_id_pk)ALTER TABLE emp2 MODIFY COLUMN id INT PRIMARY KEY;ALTER TABLE emp2 ADD CONSTRAINT my_emp_id_pk PRIMARY KEY(id);#2. 向表dept2的id列中添加PRIMARY KEY约束(my_dept_id_pk)...
2018-06-19 18:56:56
1647
1
原创 【案例讲解】视图
#一、创建视图emp_v1,要求查询电话号码以‘011’开头的员工姓名和工资、邮箱CREATE OR REPLACE VIEW emp_v1ASSELECT last_name,salary,emailFROM employeesWHERE phone_number LIKE '011%';#二、创建视图emp_v2,要求查询部门的最高工资高于12000的部门信息CREATE OR REPLACE...
2018-06-19 18:56:44
1128
原创 视图
#视图/*含义:虚拟表,和普通表一样使用mysql5.1版本出现的新特性,是通过表动态生成的数据比如:舞蹈班和普通班级的对比 创建语法的关键字 是否实际占用物理空间 使用视图 create view 只是保存了sql逻辑 增删改查,只是一般不能增删改表 create table 保存了数据 增删改查*/#案例:查询姓张的学生名和专业名SELECT stuname,majornameFROM ...
2018-06-19 18:56:34
284
原创 事务
#TCL/*Transaction Control Language 事务控制语言事务:一个或一组sql语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行。案例:转账张三丰 1000郭襄 1000update 表 set 张三丰的余额=500 where name='张三丰'意外update 表 set 郭襄的余额=1500 where name='郭襄'事务的特性:ACID原子性:...
2018-06-19 18:56:22
258
原创 常见约束
#常见约束/*含义:一种限制,用于限制表中的数据,为了保证表中的数据的准确和可靠性分类:六大约束 NOT NULL:非空,用于保证该字段的值不能为空 比如姓名、学号等 DEFAULT:默认,用于保证该字段有默认值 比如性别 PRIMARY KEY:主键,用于保证该字段的值具有唯一性,并且非空 比如学号、员工编号等 UNIQUE:唯一,用于保证该字段的值具有唯一性,可以为空 比如座位号 CHECK:...
2018-06-19 18:56:10
663
原创 标识列
#标识列/*又称为自增长列含义:可以不用手动的插入值,系统提供默认的序列值特点:1、标识列必须和主键搭配吗?不一定,但要求是一个key2、一个表可以有几个标识列?至多一个!3、标识列的类型只能是数值型4、标识列可以通过 SET auto_increment_increment=3;设置步长可以通过 手动插入值,设置起始值*/#一、创建表时设置标识列DROP TABLE IF EXISTS tab_...
2018-06-19 18:55:59
1756
原创 【作业讲解】查询
#一、查询每个专业的学生人数SELECT majorid,COUNT(*)FROM studentGROUP BY majorid;#二、查询参加考试的学生中,每个学生的平均分、最高分SELECT AVG(score),MAX(score),studentnoFROM resultGROUP BY studentno;#三、查询姓张的每个学生的最低分大于60的学号、姓名SELECT s.stude...
2018-06-19 18:55:48
1724
原创 【案例讲解】数据的增删改
#1. 运行以下脚本创建表my_employeesUSE myemployees;CREATE TABLE my_employees( Id INT(10), First_name VARCHAR(10), Last_name VARCHAR(10), Userid VARCHAR(10), Salary DOUBLE(10,2));CREATE TABLE users( id INT, user...
2018-06-19 18:55:03
683
原创 【案例讲解】库和表的管理
#1. 创建表dept1NAME NULL? TYPEid INT(7)NAME VARCHAR(25)USE test;CREATE TABLE dept1( id INT(7), NAME VARCHAR(25) );#2. 将表departments中的数据插入新表dept2中CREATE TABLE dept2SELECT department_id,department_nameFR...
2018-06-19 18:54:54
814
原创 子查询经典案例
# 1. 查询工资最低的员工信息: last_name, salary#①查询最低的工资SELECT MIN(salary)FROM employees#②查询last_name,salary,要求salary=①SELECT last_name,salaryFROM employeesWHERE salary=( SELECT MIN(salary) FROM employees);# 2. 查...
2018-06-19 18:54:43
1155
原创 数据类型
#常见的数据类型/*数值型: 整型 小数: 定点数 浮点数字符型: 较短的文本:char、varchar 较长的文本:text、blob(较长的二进制数据)日期型: */#一、整型/*分类:tinyint、smallint、mediumint、int/integer、bigint1 2 3 4 8特点:① 如果不设置无符号还是有符号,默认是有符号,如果想设置无符号,需要添加unsigne...
2018-06-19 18:53:49
194
原创 数据的增删改
#DML语言/*数据操作语言:插入:insert修改:update删除:delete*/#一、插入语句#方式一:经典的插入/*语法:insert into 表名(列名,...) values(值1,...);*/SELECT * FROM beauty;#1.插入的值的类型要与列的类型一致或兼容INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,...
2018-06-19 18:53:34
223
原创 联合查询(union)
#进阶9:联合查询/*union 联合 合并:将多条查询语句的结果合并成一个结果语法:查询语句1union查询语句2union...应用场景:要查询的结果来自于多个表,且多个表没有直接的连接关系,但查询的信息一致时特点:★1、要求多条查询语句的查询列数是一致的!2、要求多条查询语句的查询的每一列的类型和顺序最好一致3、union关键字默认去重,如果使用union all 可以包含重复项*/#引入的...
2018-06-19 18:53:23
16978
原创 库和表的管理
#DDL/*数据定义语言库和表的管理一、库的管理创建、修改、删除二、表的管理创建、修改、删除创建: create修改: alter删除: drop*/#一、库的管理#1、库的创建/*语法:create database [if not exists]库名;*/#案例:创建库BooksCREATE DATABASE IF NOT EXISTS books ;#2、库的修改RENAME DATABA...
2018-06-19 18:53:12
367
原创 【案例讲解】外连接
#一、查询编号>3的女神的男朋友信息,如果有则列出详细,如果没有,用null填充SELECT b.id,b.name,bo.*FROM beauty bLEFT OUTER JOIN boys boON b.`boyfriend_id` = bo.`id`WHERE b.`id`>3;#二、查询哪个城市没有部门SELECT cityFROM departments dRIGHT OUT...
2018-06-19 18:52:41
1180
原创 【作业讲解】连接查询
#1.显示所有员工的姓名,部门号和部门名称。USE myemployees;SELECT last_name,d.department_id,department_nameFROM employees e,departments dWHERE e.`department_id` = d.`department_id`;#2.查询90号部门员工的job_id和90号部门的location_idSEL...
2018-06-19 18:52:31
4020
原创 【案例讲解】子查询
#1. 查询和Zlotkey相同部门的员工姓名和工资#①查询Zlotkey的部门SELECT department_idFROM employeesWHERE last_name = 'Zlotkey'#②查询部门号=①的姓名和工资SELECT last_name,salaryFROM employeesWHERE department_id = ( SELECT department_id FR...
2018-06-19 18:52:21
1584
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人