Web基础加强
注解
jdk注解回顾
@Override
@SuppressWarnings
@Deprecated
什么是注解
注解和接口类一样,都是一种数据类型。
注解可以在变量方法类上加载
注解可以有属性,也可以没有
注解有作用范围(源码,编译期间,运行期间)
自定义注解
格式
public @interface MyAnno01 {
//注解的数据类型有哪些
public long timeout() default -1;
public Class c() default java.util.Date.class;
}
注解的数据类型
基本数据类型(四类八种)
字节码类型:Class
注解类型
枚举类型
支持类型的一维数组类型
作用
配置作用,代码分析,取代xml
如果配置信息不会发生频繁的改动,如Servlet的路径,建议使用Servlet
编译检查
编写文档
注解案例
元注解
@Retention:指定注解的作用域
编译期间
运行期间
源代码
@Target:指定注解的目标对象
案例
新建注解,通过Retention指定作用域,Target指定作用目标,否则反射的时候找不到
新建类,在指定方法上添加自定义注解
定义入口类,通过反射找到有注解的方法,执行
设计模式
常用设计模式
单例模式
工厂模式
代理模式
装饰者模式
Linux系统
Linux目录结构
只有一个目录,根目录
usr:相当于progrem files
etc:存放系统配置文件
root:系统管理员默认目录
home:存放其它用户的目录
Linux连接软件CRT
快速连接
修改编码
Linux简单常用命令
ll:查看当前所有
ls:列出目录内容
ls -al:查看目录下文件详细信息
cd /:根目录
cd -:上一次访问的目录
cd ..:上一级目录
li /bin/:列出根目录下bin目录下信息
mkdir:创建目录
touch 1.txt:创建文件
mkdir -pv:父目录不存在先创建父目录
pwd:打印工作目录
cat 文件名:显示文本文件内容
more:文件名分页显示文件内容
less mN 文件名:分页显示文件内容,显示行号
输入/字符串:查看文件时搜索指定字符串,向下搜索
?字符串:向上搜索
tail -10 ip.log:显示日志的后10行内容
cp ip.log ip2.log:复制文件到另一个文件,可以在不同目录间复制
cp -r ./c ./e:复制目录,可以复制多层目录
mv:移动或更名现有的文件或目录
rm 文件:删除文件,加-f表示强制删除,-f可以删除目录
find /root/ -name 'in*':搜索目录下in开头的文件
grep:过滤与管道
过滤:cat install.log|grep -i "in"
管道:ps -ef|grep -i 'in'
zxvf:常用解压 tar -zxvf
zcvf:常用压缩--tar -zcvf ./xxx.tar ./d/
权限:
chmod u-rwx ./1.txt 取消用户读写1.txt的权限
chmod 777 ./1.txt 添加所有权限
/etc/init.d/iptables status:查看哪些端口开放
/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT:开放8080端口
/etc/rc.d/init.d/iptables save:运行规则,假如开放端口了执行此命令保存状态
rpm -qa | grep java:查看已经安装的java
service mysqld start:启动mysql服务
make:编译源代码
./bin/redis-cli shutdown:停止redis服务
VIM命令
输入VIM 文件名进入vim编辑器
输入i进入插入模式
按下esc退出插入模式
在一般模式下输入:wq退出vim编辑
:q!:强制退出不保存
redis
非关系型数据库产生需求
对数据高并发读写的需求,当数据库并发负载非常高,每秒要达到数万次读写时
对海量数据高效率的存储和访问的需求
数据库的高扩展性和高可用性的需求
NOSQl特点
易扩展
大数据量,高性能
灵活的数据模型
高可用
NOSql数据库分类
键值存储数据库:
相关产品:Tokyo Cabinet/、Redis、Voldemort、Berkekey DB
典型应用,内存缓存,大数据量的高访问负载
数据模型:一系列键值对
优势:快速查询
劣势:存储的数据缺少结构化
列存储数据库
相关产品:Cassandra、HBase、Riak
典型应用:分布式的文件系统
数据模型:以列簇式存储,将同一列数据存在一起
优势:查找速度快,可扩展性强,更容易进行分布式扩展
劣势:功能相对局限
文档型数据库
相关产品:CouchDB、MongoDB
典型应用:web应用
数据模型:一系列键值对
优势:数据结构要求不严格
劣势:查询性能不高,而且缺乏统一的查询语法
图形数据库
Neo4j、InfoGrid、Infinite Graph
典型应用:社交网络
数据模型:图结构
优势:利用图结构相关算法
劣势:需要对整个图做计算才能得出结果,不容易做分布式的集群方案
Redis数据库
定义:由C语言实现的直接操作内存的开源的高性能的数据库软件
Redis数据库的数据类型
字符串类型
散列类型
列表类型
集合类型
有序集合类型
Redis应用场景
缓存(数据查询、短链接、新闻内容、商品内容等等)
聊天室的在线好友列表
任务队列(秒杀、抢购、12306)
应用排行榜
网站访问统计
数据过期处理
分布式集群架构中的session分离
Redis安装
下载源代码
安装编译依赖包gcc
解压源代码
编译源码为o文件
显示it good idea编译成功
执行make PREFIX=/usr/local/redis install安装
拷贝配置文件到安装目录
启动redis
前端模式启动(不推荐):/usr/local/redis/bin/redis-server
后台启动:修改配置文件
执行./bin/redis-server ./redis.conf后台启动
查看redis端口:ps -ef | grep -i redis
打开redis客户端:./bin/redis-cli
keys *:查看数据库所有键
redis命令
set name amey
flushall:删除所有数据库的所有key
flushdb:删除当前数据库中的所有key
redis数据结构
定义key的注意事项
不要过长或过短
统一的命名规范
String
value最多容纳512M
二进制安全的,存入和获取的数据相同
常用命令:
赋值:set name mary
取值:get name || getset name dadong(先获取在设置)
删除:del name
数值增减:incr num (对数字值加1) || decr num(递减)
扩展命令:incrby num 5(递增5)
哈希(hash)
String key和String value的map容器
每一个hash可以存储4294967295个键值对
hset myhash age 18:存储map数据
hmset myhash2 username rose age 20(一次存储多个键值对的map)
hgetall myhash:获取map中所有键值对
hdel myhash username:删除map中字段
list:
set:不可以重复
sadd myset a b c:向set添加三个值
srem myset 1 2:删除值
smembers myset:获取集合元素
sdiff mya1 mya2:差集运算
sinter mya2 myb2:交集
sunion mya3 myb3:合并并去重
sdiffstore my1 my2 my3:获取差集存新数据
使用场景:跟踪唯一数据,
sorted-set
成员在集合中是有序的
应用场景:游戏排名,微博热点话题,构建索引数据
zadd mysort 70 zs 80 li
zscore mysort zs:获取数据分数
zcard mysort:获取总数
zrem mysort tom ww:删除集合中数据
zrange mysort 0 -1:查找集合内指定范围的数据,这里是所有
keys
keys *:查所有key
del my1:删除key
rename my newmy:重命名键
expire my 1000:设置过期时间
type my:获取类型
Redis特性
一个redis实例可以有16个数据库
一台机器安装多个redis只要保证端口号不冲突
select 1:选择1号数据库
multi (开启)、exec(提交)、discard(回滚):事物的操作
redis持久化
redis数据默认在内存当中,只有写入硬盘才能在重启redis后保证数据还在
RDB方式:指定时间存储一次,在redis.conf中配置
AOF方式:每修改一次存储,在redis.conf中配置
Jedis
Jedis是redis官方首选的Java客户端开发包
网友评论