新巴巴运动网 项目第四天
FastDFS分布式文件系统
原理图
FastDFS相比于Tomcat :不存在单点故障问题、支持容灾。
FastDFS相比于Tomcat:集群 (安全) 保存图片过多时 扩容 分配合理 。
FastDFS相比于Tomcat: 具有备份功能、不怕磁盘损坏。
公司有运维工程师安装 (中型公司及以上)
自行安装(小公司)如果没有运维、以下是安装文档。
192.168.200.128
启动
用户名/密码
root/123456
http://192.168.200.128/group1/M00/00/01/wKjIgFWOYc6APpjAAAD-qk29i78248.jpg
FastDFSUtils 工具类
上传图片到分布式文件系统
fdfs_client.conf
# connect timeout in seconds
# default value is 30s
connect_timeout=30
# network timeout in seconds
# default value is 30s
network_timeout=60
# the base path to store log files
base_path=/home/fastdfs
# tracker_server can ocur more than once, and tracker_server format is
# "host:port", host can be hostname or ip address
tracker_server=192.168.200.128:22122
#tracker_server=192.168.101.4:22122
#standard log level as syslog, case insensitive, value list:
### emerg for emergency
### alert
### crit for critical
### error
### warn for warning
### notice
### info
### debug
log_level=info
# if use connection pool
# default value is false
# since V4.05
use_connection_pool = false
# connections whose the idle time exceeds this time will be closed
# unit: second
# default value is 3600
# since V4.05
connection_pool_max_idle_time = 3600
# if load FastDFS parameters from tracker server
# since V4.05
# default value is false
load_fdfs_parameters_from_tracker=false
# if use storage ID instead of IP address
# same as tracker.conf
# valid only when load_fdfs_parameters_from_tracker is false
# default value is false
# since V4.05
use_storage_id = false
# specify storage ids filename, can use relative or absolute path
# same as tracker.conf
# valid only when load_fdfs_parameters_from_tracker is false
# since V4.05
storage_ids_filename = storage_ids.conf
#HTTP settings
http.tracker_server_port=80
#use "#include" directive to include HTTP other settiongs
##include http.conf
/**
* 上传图片到FastDFS
* @author lx
*
*/
public class FastDFSUtils {
//上传
public static String uploadPic(byte[] pic,String name,long size) throws Exception{
//全局设置Tracker的IP
ClassPathResource resource = new ClassPathResource("fdfs_client.conf");
ClientGlobal.init(resource.getClassLoader().getResource("fdfs_client.conf").getPath());
//连接Tracker
TrackerClient trackerClient = new TrackerClient();
//获取Stoage的地址
TrackerServer trackerServer = trackerClient.getConnection();
//连接Stoage的服务器
StorageServer storageServer = null;
StorageClient1 storageClient1 = new StorageClient1(trackerServer,storageServer);
//上传图片到Stoage
String ext = FilenameUtils.getExtension(name);
NameValuePair[] meta_list = new NameValuePair[3];
meta_list[0] = new NameValuePair("filename",name);
meta_list[1] = new NameValuePair("fileext",ext);
meta_list[2] = new NameValuePair("filesize",String.valueOf(size));
// group1/M00/00/01/wKjIgFWOYc6APpjAAAD-qk29i78248.jpg
String path = storageClient1.upload_file1(pic, ext, meta_list);
//接收返回值(图片的路径)
return path;
}
}
服务提供方
服务消费方
由于<img src属性不能在提交表单时、将数据提交到Controller层、所以添加一行隐藏域
来保存图片的路径、目地是提交表单时把此路径也提交到Controller中品牌对象中
第一步:
第二步:
修改品牌
入参:Brand对象
入参:Brand对象
跳转视图:重定向
接收的 Long【】 ids
跳转视图:重定向
页面按钮
Function
Controller
商品表四张 商品表 品牌表 颜色表 SKu表(库存表)
用户表一张
订单表二张
广告表二张
四张
OOM
Out of memery
物理级分页
在frame/product_left.jsp中
/product/list.do
入参: 商品名称 、品牌ID 、是否上下架 当前页
返回值:分页对象
略
入参: 商品名称 、品牌、是否上下架 当前页
返回值:分页对象
跳转视图 product/list
转载于:https://www.cnblogs.com/beyondcj/p/6277825.html
相关资源:数据结构—成绩单生成器