session和cookie的区别和联系
区别
存放位置:
session保存在服务器,cookie保存在客户端
存放的形式:
session是以对象的形式保存在服务器,cookie以字符串的形式保存在客户端
用途:
session适合做客户的身份验证,cookie适合保存用户的个人设置,爱好等
路径:
session不能区分路径,同一用户在访问一个网站期间,所有的session在任何一个地方都可以访问到;cookie中如果设置了参数路径,那么同一个网站下的cookie互相访问不到
安全性:
cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,session较cookie更安全一些
大小及数量限制:
单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的COOKIE不能3K。不同浏览器所含cookie的最大个数不同,一般30到50个;一般认为session没有大小限制
联系: session需要借助cookie才能正常工作,如果客户端完全禁止cookie,session将失效,因为session是由应用服务器维持的一个服务端 ...
Runnable和Thread比较
在线程使用过程中,我们肯定会用到Runnable与Thread,前者的实现方式是实现其接口即可,后者的实现方式是继承其类。两者实现方式带来最明显的区别就是,由于Java不允许多继承,因此实现了Runnable接口可以再继承其他类,但是Thread明显不可以。
Runnable和Thread比较如上所述,Runnable相比Thread存在明显的优点,同时也是两者最大的区别。这点就不再做阐述,这里对于网络很多文章中存在的明显的错误文字总结进行一下论证:Runnable可以实现多个相同的程序代码的线程去共享同一个资源,而Thread不可以?我们以实际的代码样例来论证这个观点:
1234567891011121314151617181920212223242526272829303132333435package test;/** * Thread 实现资源共享 * @author itbird * */public class Test2 { public static void main(String[] args) { MyThread t1 ...
Restful详解
概念Restful就是一个资源定位及资源操作的风格。不是标准也不是协议,只是一种风格。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
功能资源:互联网所有的事物都可以被抽象为资源
资源操作:使用POST、DELETE、PUT、GET,使用不同方法对资源进行操作,分别对应 添加、 删除、修改、查询。
1、传统方式操作资源 :通过不同的参数来实现不同的效果!方法单一,post 和 get
http://127.0.0.1/item/queryItem.action?id=1 查询,GET
http://127.0.0.1/item/saveItem.action 新增,POST
http://127.0.0.1/item/updateItem.action 更新,POST
http://127.0.0.1/item/deleteItem.action?id=1 删除,GET或POST
使用RESTful操作资源 :可以通过不同的请求方式来实现不同的效果!如下:请求地址一样,但是功能可以不同!
http://127.0.0.1/item/1 查询,GET
http: ...
无题
Redis初识Redis的特性
速度快
持久化
多种数据结构
支持多种编辑语言
功能丰富
简单
主从复制
高可用,分布式
速度快
数据写在内存(主要原因)
使用C语言编写
线程模型为单线程
持久化(断电不丢数据)
Redis所有数据保持在内存中,对数据的更新将异步地保存到磁盘上。
多种数据结构
支持多种编辑语言
Java、PHP、Python、Ruby、Lua、node.js
功能丰富
发布订阅
事务
Lua脚本
pipeline
简单
不依赖外部库(like libevent)
单线程模型
主从复制
从服务器 → 主服务器
高可用,分布式
Redis-Sentinel(v2.8)支持高可用
Redis-Cluster(v3.0)支持分布式
Redis典型应用场景
缓存系统
计数器
消息队列系统
排行榜
社交网络
实时系统
Redis三种启动方式
最简启动
redis-server
动态参数启动
redis-server —port 6380
配置文件启动
redis-server configPath
三种启动方式比较
生成环境选择配置启动
单机多实例配 ...
MyISAM与InnoDB 的区别(9个不同点)
区别
InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务;
InnoDB支持外键,而MyISAM不支持。对一个包含外键的InnoDB表转为MYISAM会失败;
InnoDB是聚集索引,使用B+Tree作为索引结构,数据文件是和(主键)索引绑在一起的(表数据文件本身就是按B+Tree组织的一个索引结构),必须要有主键,通过主键索引效率很高。但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据。因此,主键不应该过大,因为主键太大,其他索引也都会很大。
MyISAM是非聚集索引,也是使用B+Tree作为索引结构,索引和数据文件是分离的,索引保存的是数据文件的指针。主键索引和辅助索引是独立的。也就是说:InnoDB的B+树主键索引的叶子节点就是数据文件,辅助索引的叶子节点是主键的值;而MyISAM的B+树主键索引和辅助索引的叶子节点都是数据文件的地址指针。
InnoDB不保存表的具体行数,执行select count(*) from t ...
Maven解决静态资源过滤问题
前言:在我们使用Maven构建项目的时候,会默认过滤掉静态资源,所以,需要手动来配置
认识静态资源与动态资源
静态资源,包含HTMl,图片,CSS,JS 等不需要与数据库交互的一类文件
动态资源:需要与数据库交互,可以根据需要显示不同的数据,不需要修改页面
解决Maven中静态资源过滤1234567891011121314151617181920<build><resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </reso ...
Java-I/O框架
流的概念
什么是流 概念:内存与存储设备之间传输数据的通道
流的分类
按方向
输入流:将<存储设备>中的内容读入到<内存>中
输出流:将<内存>中的内容写入到<存储设备>中
按单位
字节流:以字节为单位,可以读写所有数据
字符流:以字符为单位,只能读写文本数据
按功能:
节点流:具有实际传输数据的读写功能
过滤流:在节点流的基础之上增强功能
字节流
字节流的父类(抽象类):
InputStream:字节输入流
12345public int read(){}public int read(byte[] b){}public int read(byte[] b,int off,int len){}
OutputStream:字节输出流
12345public void write(int n){}public void write(byte b){}public void write(byte b,int off, ...