OneStack

The Blog Powered By jessyon


  • 首页

  • 归档

  • 标签

redis数据类型List命令

发表于 2016-09-16   |  

redis list介绍

列表类型(list)可以存储一个有序的字符串列表,
常用的操作是向列表两端添加元素,或者获得列表的某一个片段。
列表类型内部是使用双向链表(double linked list)实现的,
所以向列表两端添加元素的时间复杂度为0(1),获取越接近两端的元素速度就越快。
这意味着即使是一个有几千万个元素的列表,获取头部或尾部的10条记录也是极快的。

向列表两端增加元素

LPUSH key value [value …] 向列表左边增加元素

127.0.0.1:6379> lpush list:1 1 2 3
(integer) 3

RPUSH key value [value …] 向列表右边增加元素

127.0.0.1:6379> rpush list:1 4 5 6
(integer) 3

查看列表

LRANGE命令是列表类型最常用的命令之一,
获取列表中的某一片段,将返回start、stop之间的所有元素(包含两端的元素),
索引从0开始。索引可以是负数,如:“-1”代表最后边的一个元素。

LRANGE key start stop

127.0.0.1:6379> lrange list:1 0 2
1) "2"
2) "1"
3) "4"

从列表两端弹出元素

LPOP命令从列表左边弹出一个元素,会分两步完成:
第一步是将列表左边的元素从列表中移除
第二步是返回被移除的元素值。

LPOP key

RPOP key

127.0.0.1:6379> lpop list:1
"3“
127.0.0.1:6379> rpop list:1
"6“

获取列表中元素的个数

127.0.0.1:6379> llen list:1
(integer) 2

删除列表中指定的值

LREM命令会删除列表中前count个值为value的元素,返回实际删除的元素个数。根据count值的不同,该命令的执行方式会有所不同: 
当count>0时, LREM会从列表左边开始删除。 
当count<0时, LREM会从列表后边开始删除。 
当count=0时, LREM删除所有值为value的元素。 

语法:LREM key count value

获得/设置指定索引的元素值

LINDEX key index 获得指定索引的元素值

127.0.0.1:6379> lindex l:list 2
"1"

LSET key index value 设置指定索引的元素值

127.0.0.1:6379> lset l:list 2 2
OK
127.0.0.1:6379> lrange l:list 0 -1
1) "6"
2) "5"
3) "2"
4) "2"

只保留列表指定片段

LTRIM key start stop 指定范围和LRANGE一致

127.0.0.1:6379> lrange l:list 0 -1
1) "6"
2) "5"
3) "0"
4) "2"
127.0.0.1:6379> ltrim l:list 0 2
OK
127.0.0.1:6379> lrange l:list 0 -1
1) "6"
2) "5"
3) "0"

向列表中插入元素

该命令首先会在列表中从左到右查找值为pivot的元素,
然后根据第二个参数是BEFORE还是AFTER来决定将value插入到该元素的前面还是后面。

LINSERT key BEFORE|AFTER pivot value

127.0.0.1:6379> lrange list 0 -1
1) "3"
2) "2"
3) "1"
127.0.0.1:6379> linsert list after 3 4
(integer) 4
127.0.0.1:6379> lrange list 0 -1
1) "3"
2) "4"
3) "2"
4) "1"

将元素从一个列表转移到另一个列表中

RPOPLPUSH source destination

127.0.0.1:6379> rpoplpush list newlist 
"1"
127.0.0.1:6379> lrange newlist 0 -1
1) "1"
127.0.0.1:6379> lrange list 0 -1
1) "3"
2) "4"
3) "2"

List应用

商品评论列表

在Redis中创建商品评论列表
用户发布商品评论,将评论信息转成json存储到list中。
用户在页面查询评论列表,从redis中取出json数据展示到页面。

商品编号为1001的商品评论key【items: comment:1001】

192.168.101.3:7001> LPUSH items:comment:1001 '{"id":1,"name":"商品不错,很好!!","date":1430295077289}'

redis数据类型Hash命令

发表于 2016-09-16   |  

Hash类型

hash叫散列类型,它提供了字段和字段值的映射。字段值只能是字符串类型,不支持散列类型、集合类型等其它类型。如下:

Hash命令

HSET key field value 赋值

HSET命令不区分插入和更新操作,当执行插入操作时HSET命令返回1,当执行更新操作时返回0。

127.0.0.1:6379> hset user username zhangsan 
(integer) 1

HMSET key field value [field value …] 一次可以设置多个字段值

127.0.0.1:6379> hmset user age 20 username lisi 
OK

HSETNX key field value 当字段不存在时赋值

当字段不存在时赋值,类似HSET,区别在于如果字段存在,该命令不执行任何操作

127.0.0.1:6379> hsetnx user age 30    
如果user中没有age字段则设置age值为30,否则不做任何操作
(integer) 0

HGET key field 一次只能获取一个字段值

127.0.0.1:6379> hget user username
"zhangsan“

HMGET key field [field …] 一次可以获取多个字段值

127.0.0.1:6379> hmget user age username
1) "20"
2) "lisi"

HGETALL key 获取所有字段值

127.0.0.1:6379> hgetall user
1) "age"
2) "20"
3) "username"
4) "lisi"

HDEL key field [field …] 可以删除一个或多个字段,返回值是被删除的字段个数

127.0.0.1:6379> hdel user age
(integer) 1
127.0.0.1:6379> hdel user age name
(integer) 0
127.0.0.1:6379> hdel user age username
(integer) 1 

HINCRBY key field increment 增加值

127.0.0.1:6379> hincrby user age 2    将用户的年龄加2
(integer) 22
127.0.0.1:6379> hget user age        获取用户的年龄
"22“

HEXISTS key field 判断字段是否存在

127.0.0.1:6379> hexists user age        查看user中是否有age字段
(integer) 1
127.0.0.1:6379> hexists user name    查看user中是否有name字段
(integer) 0

HKEYS key 只获取字段名

HVALS key 只获取字段值

127.0.0.1:6379> hmset user age 20 name lisi 
OK
127.0.0.1:6379> hkeys user
1) "age"
2) "name"
127.0.0.1:6379> hvals user
1) "20"
2) "lisi"

HLEN key 获取字段长度

127.0.0.1:6379> hlen user    
(integer) 2

Hash应用

存储商品信息:

商品字段

【商品id、商品名称、商品描述、商品库存、商品好评】

定义商品信息的key

商品1001的信息在 Redis中的key为:[items:1001]

储商品信息

192.168.101.3:7003> HMSET items:1001 id 3 name apple price 999.9
OK

获取商品信息

192.168.101.3:7003> HGET items:1001 id
"3"
192.168.101.3:7003> HGETALL items:1001
1) "id"
2) "3"
3) "name"
4) "apple"
5) "price"
6) "999.9"

redis数据类型String命令

发表于 2016-09-16   |  

String类型

SET key value 赋值

127.0.0.1:6379> set test 123
OK

GET key 取值

127.0.0.1:6379> get test
"123“

GETSET key value 取值并赋值

127.0.0.1:6379> getset s2 222
"111"
127.0.0.1:6379> get s2
"222"

DEL key 删除

127.0.0.1:6379> del test
(integer) 1

incr key 递增数字

当存储的字符串是整数时,Redis提供了一个实用的命令INCR,其作用是让当前键值递增,并返回递增后的值。

127.0.0.1:6379> incr num
(integer) 1
127.0.0.1:6379> incr num
(integer) 2
127.0.0.1:6379> incr num
(integer) 3

INCRBY key increment 增加指定的整数

127.0.0.1:6379> incrby num 2
(integer) 5
127.0.0.1:6379> incrby num 2
(integer) 7
127.0.0.1:6379> incrby num 2
(integer) 9

DECR key 递减数值

127.0.0.1:6379> decr num
(integer) 9
127.0.0.1:6379> decr num
(integer) 8

DECRBY key decrement 减少指定的整数

127.0.0.1:6379> decr num
(integer) 6
127.0.0.1:6379> decr num
(integer) 5
127.0.0.1:6379> decrby num 3
(integer) 2
127.0.0.1:6379> decrby num 3
(integer) -1

APPEND key value 向尾部追加值

127.0.0.1:6379> set str hello
OK
127.0.0.1:6379> append str " world!"
(integer) 12
127.0.0.1:6379> get str 
"hello world!"

STRLEN key 获取字符串长度

127.0.0.1:6379> strlen str 
(integer) 0
127.0.0.1:6379> set str hello
OK
127.0.0.1:6379> strlen str 
(integer) 5

MSET key value [key value …] 同时设置多个值

127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3
OK

MGET key [key …] 同时取多个值

127.0.0.1:6379> get k1
"v1"
127.0.0.1:6379> mget k1 k3
1) "v1"
2) "v3"

String应用

自增主键: 商品编号、订单号采用string的递增数字特性生成。

定义商品编号key:items:id
192.168.101.3:7003> INCR items:id
(integer) 2
192.168.101.3:7003> INCR items:id
(integer) 3

String存在的问题

假设有User对象以JSON序列化的形式存储到Redis中,User对象有id,username、password、age、name等属性,存储的过程如下: 
保存、更新: 
User对象  ->  json(string)  ->  redis 
如果在业务上只是更新age属性,其他的属性并不做更新我应该怎么做呢? 
如果仍然采用上边的方法在传输、处理时会造成资源浪费,下边讲的hash可以很好的解决这个问题。

服务器搭建-四-redis配置

发表于 2016-09-16   |  

什么是NoSql

为了解决高并发、高可扩展、高可用、大数据存储问题而产生的数据库解决方案,就是NoSql数据库。
NoSQL,泛指非关系型的数据库,NoSQL即Not-Only SQL,它可以作为关系型数据库的良好补充。

什么是Redis

Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库。它通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止Redis支持的键值数据类型如
下:

字符串类型 
散列类型 (Hash类型)
列表类型 (List)
集合类型 (Set)
有序集合类型 (SortedSet)

在redis中的命令语句中,命令是忽略大小写的,而key是不忽略大小写的。

redis的应用场景

缓存(数据查询、短连接、新闻内容、商品内容等等)。(最多使用)
分布式集群架构中的session分离。
聊天室的在线好友列表。
任务队列。(秒杀、抢购、12306等等)
应用排行榜。
网站访问统计。
数据过期处理(可以精确到毫秒)

Redis安装

第一步.在Linux下安装gcc环境

yum install gcc-c++

第二步. 安装redis

1.将下载的Redis源码包上传到Linux服务器中
2.解压缩Redis源码包到/usr/local tar -zxf redis-3.0.0.tar.gz -C /usr/local
3.进入/usr/local/redis-3.0.0目录 
  编译redis源码 make
  安装redis make install PREFIX=/usr/local/redis0707

第三步. 后端启动redis

1.将redis源码包中的redis.conf配置文件复制到/usr/local/redis/bin/下
  cp redis.conf /usr/local/redis0707/bin/
2.修改redis.conf,将daemonize由no改为yes
  37行 daemonize yes
3.启动redis-server 
  ./redis-server redis.conf
4.关闭redis-server
  ./redis-cli shutdown
5.打开redis客户端 ./redis-cli -h 127.0.0.1 -p 6379

修改访问端口

1.通过notepad++ 打开/etc/sysconfig/iptables
2.添加-A INPUT -m state --state NEW -m tcp -p tcp --dport 6379 -j ACCEPT
3.重启防火墙  service iptables restart

服务器搭建(三) fastDFS图片服务器

发表于 2016-09-16   |  

fastDFS流程

可以使用一台虚拟机来模拟,只有一个Tracker、一个Storage服务。配置nginx访问图片。

fastDFS搭建

第一步:把fastDFS都上传到linux系统。

第二步:安装FastDFS之前,先安装libevent工具包。

yum -y install libevent

第三步:安装libfastcommonV1.0.7工具包。

1、解压缩
2、./make.sh
3、./make.sh install
4、把/usr/lib64/libfastcommon.so文件向/usr/lib/下复制一份

第四步:安装Tracker服务。

1、解压缩fastDFS,将文件移动到/usr/local下
2、./make.sh
3、./make.sh install
安装后在/usr/bin/目录下有以fdfs开头的文件都是编译出来的。
配置文件都放到/etc/fdfs文件夹
4、把/usr/local/FastDFS/conf目录下的所有的配置文件都复制到/etc/fdfs下。
   cp * /etc/fdfs/
5、配置tracker服务。修改/usr/local/FastDFS/conf/tracker.conf文件。
6、修改tracker.conf中22行,base_path=/home/fastdfs/tracker
7、启动tracker。/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
重启使用命令:/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart

第五步:安装storage服务。

1、如果是在不同的服务器安装,第四步的1~4需要重新执行。
2、配置storage服务。修改/usr/local/FastDFS/conf/storage.conf文件

41行 base_path=/home/fastdfs/storage
109行 store_path0=/home/fastdfs/storage
118行 tracker_server=115.159.93.201:22122

3、启动storage服务。

/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart    

第六步:测试服务。

1、修改配置文件/etc/fdfs/client.conf

10行 base_path=/home/fastdfs/client
14行 tracker_server=115.159.93.201:22122

2、测试

/usr/bin/fdfs_test /etc/fdfs/client.conf upload anti-steal.jpg (在/etc/fdfs目录下)

生成 http://115.159.93.201/group1/M00/00/00/CmkaiVfbXw-ABpAJAABdrZgsqUU916_big.jpg 为图片的地址

第七步:搭建nginx提供http服务。

可以使用官方提供的nginx插件。要使用nginx插件需要重新编译。
fastdfs-nginx-module_v1.16.tar.gz

1、解压插件压缩包,并移动到/usr/local
2、修改/usr/local/fastdfs-nginx-module/src/config文件,把其中的local去掉。

3、对nginx重新config

./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi \
--add-module=/usr/local/fastdfs-nginx-module/src

4、make
5、make install
6、把/root/fastdfs-nginx-module/src/mod_fastdfs.conf文件复制到/etc/fdfs目录下。编辑:

40行 tracker_server=115.159.93.201:22122
53行 url_have_group_name = true
62行 store_path0=/home/fastdfs/storage

7、nginx的配置
在nginx的配置文件中添加一个Server:
server {
listen 80;
server_name 115.159.93.201;

        location /group1/M00/{
                #root /home/FastDFS/fdfs_storage/data;
                ngx_fastdfs_module;
        }
}

8、将libfdfsclient.so拷贝至/usr/lib下
cp /usr/lib64/libfdfsclient.so /usr/lib/
9、启动nginx

服务器搭建(二)Nginx和fastDFS配置

发表于 2016-09-15   |  

Nginx反向代理

Nginx的配置文件:

upstream tomcats{
   server 192.168.25.148:8080;  //配置多个tomcat
   server 192.168.25.148:8081;
  }

  server {
       listen       80;
       server_name  tomcat.taotao.com;

       #charset koi8-r;

       #access_log  logs/host.access.log  main;

       location / {
           proxy_pass   http://tomcats;  //设置代理
           index  index.html index.htm;
       }
  }

Nginx负载均衡

只需要在upstream的server后面添加一个weight即可代表权重。权重越高,分配请求的数量(概率)就越多。默认权重是1

upstream tomcats{
        server 192.168.25.148:8080 weight=2;  //设置权重为2
        server 192.168.25.148:8081;
       }

       server {
            listen       80;
            server_name  tomcat.taotao.com;

            #charset koi8-r;

            #access_log  logs/host.access.log  main;

            location / {
                proxy_pass   http://tomcats;  //设置代理
                index  index.html index.htm;
            }
       }

fastDFS

FastDFS是用c语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。

fastDFS上传流程

fastDFS下载流程

客户端上传文件后存储服务器将文件ID返回给客户端,此文件ID用于以后访问该文件的索引信息。文件索引信息包括:组名,虚拟磁盘路径,数据两级目录,文件名。

http://192.168.233.128/group1/M00/00/00/wKjpgFfGRCqAHIo6AADW-NO57MA805.jpg

组名:文件上传后所在的storage组名称,在文件上传成功后有storage服务器返回,需要客户端自行保存。 
虚拟磁盘路径:storage配置的虚拟路径,与磁盘选项store_path*对应。如果配置了store_path0则是M00,如果配置了store_path1则是M01,以此类推。
数据两级目录:storage服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据文件。
文件名:与文件上传时不同。是由存储服务器根据特定信息生成,文件名包含:源存储服务器IP地址、文件创建时间戳、文件大小、随机数和文件拓展名等信息。

服务器搭建(一)jdk和nginx配置

发表于 2016-09-15   |  

使用SecureCRT连接服务器

1.点击new session新建连接,选择SSH2
2.hostname填服务器的地址,Port填22,SecureFX选择SFTP

安装JDK

1.通过Connect SFTP Session将jdk上传至服务器
2.使用命令tar -zxvf jdk-7u55-linux-i586.tar.gz解压压缩包
3.将解压后的文件移到/usr/local下 mv jdk1.7.0_55 /usr/local
4.cd /usr/local 查看文件是否存在
5.通过notepad++连接服务器,找到/etc/profile编辑
6.加入内容如下:
export JAVA_HOME=/usr/local/jdk1.7.0_55
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
7.加载刚设置的变量 source /etc/profile
8.java -version 查看是否成功安装jdk

nginx安装

nginx是一个使用c语言开发的高性能的http服务器及反向代理服务器。
Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。
由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。

1.    gcc
    安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc:yum install gcc-c++ 
2.  PCRE
    PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。
    yum install -y pcre pcre-devel
    注:pcre-devel是使用pcre开发的一个二次开发库。nginx也需要此库。
3.  zlib
    zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。
    yum install -y zlib zlib-devel

4.  openssl
    OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
    nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。
    yum install -y openssl openssl-devel
5.  将nginx-1.8.0.tar.gz拷贝至linux服务器
6.  解压 tar -zxvf nginx-1.8.0.tar.gz
7.  移到/usr/local mv nginx-1.8.0 /usr/local
8.  进入nginx目录,参数设置如下:
    ./configure \
    --prefix=/usr/local/nginx \
    --pid-path=/var/run/nginx/nginx.pid \
    --lock-path=/var/lock/nginx.lock \
    --error-log-path=/var/log/nginx/error.log \
    --http-log-path=/var/log/nginx/access.log \
    --with-http_gzip_static_module \
    --http-client-body-temp-path=/var/temp/nginx/client \
    --http-proxy-temp-path=/var/temp/nginx/proxy \
    --http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
    --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
    --http-scgi-temp-path=/var/temp/nginx/scgi

    注意:上边将临时文件目录指定为/var/temp/nginx,需要在/var下创建temp及nginx目录
    cd /var -> mkdir temp -> cd temp -> mkdir nginx
9.  在nginx目录,编译make,安装make install,安装在了/usr/local/nginx目录下
10. 启动:进入nginx的sbin目录,./nginx就可以启动。关闭:./nginx -s stop
    ps aux|grep nginx 查看nginx进程

nginx配置

在/usr/local/nginx/conf目录下nginx.conf文件是nginx的配置文件。
在nginx.conf文件中添加一个Service节点,修改端口号就可以

server {                        //一个server是一个虚拟主机
        listen       80;        //当前虚拟主机监听的端口号
        server_name  localhost; //当前虚拟主机的名称

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;     //虚拟主机的根目录
            index  index.html index.htm; //欢迎页,顺序查找
        }
   }

淘淘商城开发记录(三)

发表于 2016-08-21   |  

综述

昨天没有什么写太多的代码,github也都没有更新,因为一直在linux搞nginx和图片服务器的东西。

今天也没有写太多的代码,但是还是更新了下github,两天不更新,感觉是不是有点懒惰。

因为要把图片上传到服务器,而tomcat用来做静态资源服务器难免大材小用了,所以学习了nginx服务器,以及fastdfs插件。

在linux下操作还是有些不熟悉,还得自己搭建一个服务器,的确头有点头大。稍微总结了下用到的命令:

  • mkdir 创建新文件夹
  • cd 返回上层目录 cd /usr/localhost/ 进入usr下的localhost目录
  • rm -rf a/ 强制删除目录a
  • ll 显示当前目录所有文件
  • cp /a/b/c d/e/f 将a/b 目录下的c文件复制到d/e/f目录下
  • pwd 显示当前目录全路经
  • ifconfig 相当于ipconfig在windows下的效果,查看网关,ip等信息
  • tar -zxf nginx-1.8.0.tar.gz 解压nginx-1.8.0.tar.gz到当前目录

在windows下经常使用SecureCRT连接到linux下,同样可以操作服务器,同时配合notpad++连接到linux操作文档,双管齐下,效率高涨。

nginx可以反向代理,用户访问域名,nginx服务器决定用户访问不同的应用服务器,这样可以减轻一个服务器的压力。

负载均衡决定了几个不同服务器负载权重,nginx服务器决定用户访问的是哪个应用服务器。根据不同的权重,nginx服务器决定权重大的应用服务器承受更多的用户访问。

淘淘商城开发记录(二)

发表于 2016-08-19   |  

前述

昨天完成了环境和框架的搭建,万里长征迈出了第一步,是一个完美的开始。今天完成了后台主页的展示,理解了从前端发送ajax的Restful风格的请求。将请求发送给springMVC,通过RequestMapping找到请求的页面,再返回到前端,渲染到页面。

分页查询

然后是数据的部分,无论是什么系统,都离不开CRUD,所以从最简单的查询开始。但是有一点不同的是,我使用了mybatis分页的插件pageHelper。插件的使用帮助我们大大减少了开发的难度。但是这次后台使用的是EasyUI来展示页面,相比于boostrap的插件Data Tables强大的分页和查询功能来说,自己利用插件分页和查询还是有些复杂。

EasyUI异步树控件

无论EasyUI在表格数据上表现如何,它在树形数据展示上还是比较可靠的。树控件内建异步加载模式的支持,用户先创建一个空的树,然后指定一个服务器端,执行检索后动态返回JSON数据来填充树并完成异步请求。EasyUITreeNode只需要三个关键属性,id,text,state。state有两个值,closed表示有子节点,ajax将会再发送请求直到返回的节点的state为open ,open的时候代表这个节点是叶子节点,将不再发送ajax请求。

淘淘商城开发记录(一)

发表于 2016-08-18   |  

前述

学习javaEE已经有半年多了吧,但是还没有正式用所学的内容开发一个比较完整的项目。所以就照着网上的视频边学边做这个淘淘商城这个网站,这次的目标是熟悉JavaWeb开发的全流程,包括代码,项目架构,代码托管等。
第一天熟悉了项目的技术架构,功能架构,完成了基础功能模块的搭建,并且掌握了将代码托管到github,总之这是一件很令人兴奋的事情。因为之前很久我都不太熟悉github,不知道怎么用,更不知道为何要用。在使用过SVN后,才知道版本控制,之后才知道github的强大并喜欢上了他。

环境搭建

我是在eclipse下开发的淘淘商城,我之前使用的eclipse版本没有自带maven,所以刚开始找插件就令我非常头痛,因为插件的site很早就没有更新了。后来索性下载了最新版的eclipse,果然有惊喜,原来eclipse mars就已经自带了maven,非常棒。
我建立了一个聚合工程,在这个聚合工程中,我又分别创建了dao层,service层,web层。这样的分层结构让我的开发很有节奏感,知道到了哪一步该做什么,有条不紊。所以上手搭建SSM框架也是很快速的事情,而且很快就跑通了第一个测试,nice。

1234
Jessyon

Jessyon

35 日志
35 标签
© 2016 Jessyon
由 Hexo 强力驱动
主题 - NexT.Pisces