A级课程--- 从零开始(三)---网络架构1-2

https://www.bilibili.com/video/av43996494/?p=2

0上一节没写完的代码


#!usr/bin/python
# -*- coding: utf-8 -*-
# Creation Date: 2019/7/10
import tensorflow as tf
import numpy as np
import cv2
 
 
class ssd(object):
 
    def __init__(self):
        pass  # 先略过
 
    # ===>l2正则化<===
    def l2norm(self, x, scale, trainable=True, scope='L2Normalization'):
        n_channels = x.get_shape().as_list()[-1]  # 通道数. 得到形状,变成列表,取后一个
        l2_norm = tf.nn.l2_normalize(x, dim=[3], epsilon=1e-12)  # 只对每个像素点在channels上做归一化
        with tf.variable_scope(scope):
            gamma = tf.get_variable("gamma", shape=[n_channels, ], dtype=tf.float32,
                                    initializer=tf.constant_initializer(scale),
                                    trainable=trainable)
            return l2_norm * gamma
 
    # ===>下面开始定义所需组件<===
    # conv2d, max_pool2d, pad2d, dropout
    # 定义一个卷积的操作 1输入 2卷积核个数 3卷积核大小 4步长 5padding 6膨胀 7激活函数 8名字
    def conv2d(self, x, filter,  # 输入x, 卷积核的个数filter
               k_size, stride=[1, 1],  # k_size卷积核是几*几,步长stride
               padding='same', dilation=[1, 1],  # padding, 空洞卷积指数这里1代表正常卷积
               activation=tf.nn.relu, scope='conv2d'):  # 激活函数relu, 名字scope
        return tf.layers.conv2d(input=x, filters=filter, kernel_size=k_size,
                                strides=stride, padding=padding, dilation_rate=dilation,
                                name=scope, activation=activation)
 
    def max_pool2d(self, x, pool_size, stride, scope='max_pool2d'):  # 我猜padding是vaild
        return tf.layers.max_pooling2d(inputs=x, pool_size=pool_size, strides=stride, padding='valid', name=scope)
 
    # 用于填充s=2的第8,9层.    从6层往后的卷积层需要自己填充, 不要用它自带的填充.
    def pad2d(self, x, pad):
        return tf.pad(x, paddings=[[0, 0], [pad, pad], [pad, pad], [0, 0]])
 
    def dropout(self, x, d_rate=0.5):
        return tf.layers.dropout(inputs=x, rate=d_rate)
 
    # ===>下面开始写网络架构<===
    def set_net(self):
 
        check_points = {}  # 装特征层的字典,用于循环迭代
 
        x = tf.placeholder(dtype=tf.float32, shape=[None, 300, 300, 3])
        with tf.variable_scope('ssd_300_vgg'):
            # ===>VGG前5层<===
            # b1
            net = self.conv2d(x, filter=64, k_size=[3, 3], scope='conv1_1')  # 64个3*3卷积核, s=1 默认,标准卷积
            net = self.conv2d(net, 64, [3, 3], scope='conv1_2')  # 64个3*3卷积核, s=1默认
            net = self.max_pool2d(net, pool_size=[2, 2], stride=[2, 2])  # 池化层2*2卷积核, s=2 默认,池化层一般都是2
            # b2
            net = self.conv2d(net, filter=128, k_size=[3, 3], scope='conv2_1')
            net = self.conv2d(net, 128, [3, 3], scope='conv2_2')
            net = self.max_pool2d(net, pool_size=[2, 2], stride=[2, 2], scope='pool2')
            # b3
            net = self.conv2d(net, filter=256, k_size=[3, 3], scope='conv3_1')
            net = self.conv2d(net, 256, [3, 3], scope='conv3_2')
            net = self.conv2d(net, 256, [3, 3], scope='conv3_3')
            net = self.max_pool2d(net, pool_size=[2, 2], stride=[2, 2], scope='pool3')
            # b4 =>第1个检测层
            net = self.conv2d(net, filter=512, k_size=[3, 3], scope='conv4_1')
            net = self.conv2d(net, 512, [3, 3], scope='conv4_2')
            net = self.conv2d(net, 512, [3, 3], scope='conv4_3')
            check_points['block4'] = net
            net = self.max_pool2d(net, pool_size=[2, 2], stride=[2, 2], scope='pool4')
 
            # b5 关键部分来了,这里与vgg不同了
            net = self.conv2d(net, filter=512, k_size=[3, 3], scope='conv5_1')
            net = self.conv2d(net, 512, [3, 3], scope='conv5_2')
            net = self.conv2d(net, 512, [3, 3], scope='conv5_3')
            net = self.max_pool2d(net, pool_size=[3, 3], stride=[1, 1], scope='pool5')  # =>池化层3*3核, 步长变成1*1
 
            # ===>卷积层,代替VGG全连接层<===
            # b6 conv6: 3x3x1024-d6
            net = self.conv2d(net, filter=1024, k_size=[3, 3], dilation=[6, 6], scope='conv6')
            # => 个数1024, dilation=[6, 6]
 
            # b7 conv7: 1x1x1024 =>第2个检测层
            net = self.conv2d(net, filter=1024, k_size=[3, 3], scope='conv7')
            # => 个数1024, 卷积核不是[1, 1]  ?=?
            check_points['block7'] = net
 
            # b8 conv8_1: 1x1x256; conv8_2: 3x3x512-s2-vaild =>第3个检测层
            net = self.conv2d(net, 256, [1, 1], scope='conv8_1x1')  # =>个数256,卷积核1x1
            net = self.conv2d(self.pad2d(net, 1), 512, [3, 3], [2, 2], scope='conv8_3x3', padding='valid')
            # =>个数512, 卷积核3x3, 步长2, 'valid'
            check_points['block8'] = net
 
            # b9 conv9_1: 1x1x128 conv8_2: 3x3x256-s2-vaild =>第4个检测层
            net = self.conv2d(net, 128, [1, 1], scope='conv9_1x1')  # =>个数128,卷积核1x1
            net = self.conv2d(self.pad2d(net, 1), 256, [3, 3], [2, 2], scope='conv9_3x3', padding='valid')
            # =>个数256,卷积核3x3,步长2x2, valid
            check_points['block9'] = net
 
            # b10 conv10_1: 1x1x128 conv10_2: 3x3x256-s1-valid =>第5个检测层
            net = self.conv2d(net, 128, [1, 1], scope='conv10_1x1')  # =>个数128,卷积核1x1
            net = self.conv2d(net, 256, [3, 3], scope='conv10_3x3', padding='valid')
            # =>个数256,valid
            check_points['block10'] = net
 
            # b11 conv11_1: 1x1x128 conv11_2: 3x3x256-s1-valid =>第6检测层
            net = self.conv2d(net, 128, [1, 1], scope='conv11_1x1')  # =>个数128,卷积核1x1
            net = self.conv2d(net, 256, [3, 3], scope='conv11_3x3', padding='valid')
            # =>个数256, valid
            check_points['block11'] = net
        print(check_points)
 
 
if __name__ == '__main__':
    sd = ssd()
    sd.set_net()
 

1 完善网络

需要用到别人训练好的权重文件,已经下载好了

1 添加构造函数

一共8732个锚点框,我算的是8722

block4因为太大需要L2norm

2 最后加了两个卷积,来实现分类和锚点框定位

完善后的代码

#!usr/bin/python
# -*- coding: utf-8 -*-
# Creation Date: 2019/7/10
import tensorflow as tf
import numpy as np
import cv2


class ssd(object):

    def __init__(self):
        # ===>完善:构造函数的参数<===
        self.num_boxes = []  # 统计锚点框的个数
        self.feaeture_map_size = [(38, 38), (19, 19), (10, 10), (5, 5), (3, 3), (1, 1)]  # 特征图的大小
        self.classes = ["aeroplane", "bicycle", "bird", "boat", "bottle",
                        "bus", "car", "cat", "chair", "cow",
                        "diningtable", "dog", "horse", "motorbike", "person",
                        "pottedplant", "sheep", "sofa", "train", "tvmonitor"]  # 这里有20个,加上背景是21个类别
        self.feature_layers = ['block4', 'block7', 'block8', 'block9', 'block10', 'block11']  # 用于检测的特征层的名字
        self.img_size = (300, 300)  # 图片的大小
        self.num_classes = 21  # 类别的个数,背景也算一类, 第一个类似是:'bg'背景
        self.boxes_len = [4, 6, 6, 6, 4, 4]  # 6个特征图生成的一组锚点框的框的个数,4 10 11层是4个一组其它的是6个一组
        # block4:  38x38大小的特征图就会生成 38x38x4 个锚点框 5766
        # block7:  19x19大小的特征图就会生成 19x19x6 个锚点框 2166
        # block8:  10x10大小的特征图就会生成 10x10x6 个锚点框 600
        # block9:  5x5大小的特征图就会生成     5x5x6 个锚点框 150
        # block10: 3x3大小的特征图就会生成     3x3x4 个锚点框 36
        # block11: 1x1大小的特征图就会生成     1x1x4 个锚点框 4
        # 一共8732个锚点框 ?=?我算出来的是8722个
        self.isL2norm = [True, False, False, False, False, False]  # block4比较靠前, 因为norm太大需要L2norm
        # ?=?如何起作用的呢

    # ===>l2正则化<===
    def l2norm(self, x, scale, trainable=True, scope='L2Normalization'):
        n_channels = x.get_shape().as_list()[-1]  # 通道数. 得到形状,变成列表,取后一个
        l2_norm = tf.nn.l2_normalize(x, dim=[3], epsilon=1e-12)  # 只对每个像素点在channels上做归一化
        with tf.variable_scope(scope):
            gamma = tf.get_variable("gamma", shape=[n_channels, ], dtype=tf.float32,
                                    initializer=tf.constant_initializer(scale),
                                    trainable=trainable)
            return l2_norm * gamma

    # ===>下面开始定义所需组件<===
    # conv2d, max_pool2d, pad2d, dropout
    # 定义一个卷积的操作 1输入 2卷积核个数 3卷积核大小 4步长 5padding 6膨胀 7激活函数 8名字
    def conv2d(self, x, filter,  # 输入x, 卷积核的个数filter
               k_size, stride=[1, 1],  # k_size卷积核是几*几,步长stride
               padding='same', dilation=[1, 1],  # padding, 空洞卷积指数这里1代表正常卷积
               activation=tf.nn.relu, scope='conv2d'):  # 激活函数relu, 名字scope
        return tf.layers.conv2d(input=x, filters=filter, kernel_size=k_size,
                                strides=stride, padding=padding, dilation_rate=dilation,
                                name=scope, activation=activation)

    def max_pool2d(self, x, pool_size, stride, scope='max_pool2d'):  # 我猜padding是vaild
        return tf.layers.max_pooling2d(inputs=x, pool_size=pool_size, strides=stride, padding='valid', name=scope)

    # 用于填充s=2的第8,9层.    从6层往后的卷积层需要自己填充, 不要用它自带的填充.
    def pad2d(self, x, pad):
        return tf.pad(x, paddings=[[0, 0], [pad, pad], [pad, pad], [0, 0]])

    def dropout(self, x, d_rate=0.5):
        return tf.layers.dropout(inputs=x, rate=d_rate)

    def ssd_prediction(self, x, num_classes, box_len, isL2norm, scope='multibox'):
        reshape = [-1] + x.getshape().as_list()[1:-1]  # 去除1 4维度,拿到2 3维度,变成列表.
        # block8为例:shape = (?, 10, 10, 512)需要把23维度拿出来
        # 前面的-1表示batch, 因为不知道是多少在这里tf一般写-1
        with tf.variable_scope(scope):  # 开始进行卷积
            if isL2norm:
                x = self.l2norm(x)  # 先判断是否需要归一化
                # ==>预测位置:坐标和大小,回归问题:不需softmax
                location_pred = self.conv2d(x, filter=box_len * 4, k_size=[3 * 3], activation=None, scope='conv_loc')
                '''filter:卷积核的个数=一个锚点多少框 x 一个框对应的4个数据xywh, 卷积核3x3,不需要激活函数,默认def conv2d有激活函数的'''
                location_pred = tf.reshape(location_pred, reshape + [box_len, 4])  # 每个中心点生成一个锚点框?=?

                # ==>预测类别:分类问题:需要softmax
                class_pred = self.conv2d(x, filter=box_len * num_classes, k_size=3 * 3, activation=None,
                                         scope='conv_cls')
                '''filter:卷积核的个数=一个锚点多少框 x 一个框对应的21个类别, 卷积核3x3,不需要激活函数,默认def conv2d是有激活函数的'''
                class_pred = tf.shape(class_pred, reshape + [box_len, num_classes])  # ?=?
                print(location_pred, class_pred)
                return location_pred, class_pred

    # ===>下面开始写网络架构<===
    def set_net(self):
        check_points = {}  # 装特征层的字典,用于循环迭代
        predictions = []
        locations = []

        x = tf.placeholder(dtype=tf.float32, shape=[None, 300, 300, 3])
        with tf.variable_scope('ssd_300_vgg'):
            # ===>VGG前5层<===
            # b1
            net = self.conv2d(x, filter=64, k_size=[3, 3], scope='conv1_1')  # 64个3*3卷积核, s=1 默认,标准卷积
            net = self.conv2d(net, 64, [3, 3], scope='conv1_2')  # 64个3*3卷积核, s=1默认
            net = self.max_pool2d(net, pool_size=[2, 2], stride=[2, 2])  # 池化层2*2卷积核, s=2 默认,池化层一般都是2
            # b2
            net = self.conv2d(net, filter=128, k_size=[3, 3], scope='conv2_1')
            net = self.conv2d(net, 128, [3, 3], scope='conv2_2')
            net = self.max_pool2d(net, pool_size=[2, 2], stride=[2, 2], scope='pool2')
            # b3
            net = self.conv2d(net, filter=256, k_size=[3, 3], scope='conv3_1')
            net = self.conv2d(net, 256, [3, 3], scope='conv3_2')
            net = self.conv2d(net, 256, [3, 3], scope='conv3_3')
            net = self.max_pool2d(net, pool_size=[2, 2], stride=[2, 2], scope='pool3')
            # b4 =>第1个检测层
            net = self.conv2d(net, filter=512, k_size=[3, 3], scope='conv4_1')
            net = self.conv2d(net, 512, [3, 3], scope='conv4_2')
            net = self.conv2d(net, 512, [3, 3], scope='conv4_3')
            check_points['block4'] = net
            net = self.max_pool2d(net, pool_size=[2, 2], stride=[2, 2], scope='pool4')

            # b5 关键部分来了,这里与vgg不同了
            net = self.conv2d(net, filter=512, k_size=[3, 3], scope='conv5_1')
            net = self.conv2d(net, 512, [3, 3], scope='conv5_2')
            net = self.conv2d(net, 512, [3, 3], scope='conv5_3')
            net = self.max_pool2d(net, pool_size=[3, 3], stride=[1, 1], scope='pool5')  # =>池化层3*3核, 步长变成1*1

            # ===>卷积层,代替VGG全连接层<===
            # b6 conv6: 3x3x1024-d6
            net = self.conv2d(net, filter=1024, k_size=[3, 3], dilation=[6, 6], scope='conv6')
            # => 个数1024, dilation=[6, 6]

            # b7 conv7: 1x1x1024 =>第2个检测层
            net = self.conv2d(net, filter=1024, k_size=[3, 3], scope='conv7')
            # => 个数1024, 卷积核不是[1, 1]  ?=?
            check_points['block7'] = net

            # b8 conv8_1: 1x1x256; conv8_2: 3x3x512-s2-vaild =>第3个检测层
            net = self.conv2d(net, 256, [1, 1], scope='conv8_1x1')  # =>个数256,卷积核1x1
            net = self.conv2d(self.pad2d(net, 1), 512, [3, 3], [2, 2], scope='conv8_3x3', padding='valid')
            # =>个数512, 卷积核3x3, 步长2, 'valid'
            check_points['block8'] = net

            # b9 conv9_1: 1x1x128 conv8_2: 3x3x256-s2-vaild =>第4个检测层
            net = self.conv2d(net, 128, [1, 1], scope='conv9_1x1')  # =>个数128,卷积核1x1
            net = self.conv2d(self.pad2d(net, 1), 256, [3, 3], [2, 2], scope='conv9_3x3', padding='valid')
            # =>个数256,卷积核3x3,步长2x2, valid
            check_points['block9'] = net

            # b10 conv10_1: 1x1x128 conv10_2: 3x3x256-s1-valid =>第5个检测层
            net = self.conv2d(net, 128, [1, 1], scope='conv10_1x1')  # =>个数128,卷积核1x1
            net = self.conv2d(net, 256, [3, 3], scope='conv10_3x3', padding='valid')
            # =>个数256,valid
            check_points['block10'] = net

            # b11 conv11_1: 1x1x128 conv11_2: 3x3x256-s1-valid =>第6检测层
            net = self.conv2d(net, 128, [1, 1], scope='conv11_1x1')  # =>个数128,卷积核1x1
            net = self.conv2d(net, 256, [3, 3], scope='conv11_3x3', padding='valid')
            # =>个数256, valid
            check_points['block11'] = net
            for i, j in enumerate(self.feature_layers):  # 枚举特征层 i是个数, j是名字 blockx
                loc, cls = self.ssd_prediction(x=check_points[j],
                                               num_classes=self.classes,
                                               box_len=self.boxes_len[i],
                                               isL2norm=self.isL2norm[i],
                                               scope=j + '_box'
                                               )
                predictions.append(tf.nn.softmax(cls))  # 需要softmax
                locations.append(loc)  # 不需要
            print(check_points)  # 检查网络的结构, eg:block8: (?, 10, 10, 512)
            print(locations, predictions)


if __name__ == '__main__':
    sd = ssd()
    sd.set_net()

问题是我的还是运行不了:
报错如下

打印结果分析:

左边的输出结果

(?, 38, 38, 4,4)
38x38的特征图, 4个框, 4个预测值xywh

(?, 19, 19, 6,4)
19x19的特征图, 6个框, 4个预测值xywh

右边的输出结果

(?, 38, 38, 4,21)
38x38的特征图, 4个框, 21个类别(类别预测个数)

(?, 19, 19, 6,21)
19x19的特征图, 6个框, 21个类别(类别预测个数)

 

 

 

 

java架构师148讲视频教程 │ ├─1-148视频教程 │ 第01节:整体课程概览.flv │ 第02节:分模块、分工程管理.avi │ 第03节:多模块多Web应用合并War包.avi │ 第04节:Git基本原理和安装配置使用.avi │ 第05节:TortoiseGit的本地使用.avi │ 第06节:Egit的本地使用.avi │ 第07节:远程使用以及冲突解决.avi │ 第08节:基本业务功能和数据字典.avi │ 第09节:搭建基础的开发环境.avi │ 第10节:Spring+Mybatis实现DAO.avi │ 第11节:Mybatis的分页实现.avi │ 第12节:Service的实现以及模块化.avi │ 第13节:Spring MVC实现Web层开发.avi │ 第14节:新增和列表页面和分页tag.avi │ 第15节:带查询的分页、修改和删除页面.avi │ 第16节:Mybatis动态查询和Json自动拼装.avi │ 第17节:X-gen生成所需的DAO部分模板.avi │ 第18节:X-gen所需service、web层模板.avi │ 第19节:X-gen生成相应的Visitor.avi │ 第20节:X-gen生成需要的Action.avi │ 第21节:通过X-gen生成商品模块.avi │ 第22节:通过X-gen生成购物车模块.avi │ 第23节:通过X-gen来生成订单和库存模块.avi │ 第24节:加入ehcache,把工程加入到Git.avi │ 第25节:实现前端的业务登录等功能.avi │ 第26节:测试并调整登录的业务功能.avi │ 第27节:实现index功能的开发.avi │ 第28节:Index、商品详细页和购物车.avi │ 第29节:完成下订单和修改库存的功能.avi │ 第30节:把应用部署到Linux服务器上.avi │ 第31节:Nginx简介、安装和基本运行.avi │ 第32节:Nginx的进程结构、基本配置.avi │ 第33节:Nginx常用核心模块指令.avi │ 第34节:Nginx的Http模块部分的指令.avi │ 第35节:Nginx的Location区段.avi │ 第36节:Nginx的反向代理模块.avi │ 第37节:反向代理和动静分离的实现.avi │ 第38节:Nginx的负载均衡模块.avi │ 第39节:Nginx的Rewrite模块.avi │ 第40节:更多模块的基本功能和配置.avi │ 第41节:Nginx的配置优化以及使用建议.avi │ 第42节:应用上Nginx过后的体系结构.avi │ 第43节:Varnish简介、安装和基本使用.avi │ 第44节:VCL基本语法和使用,负载均衡.avi │ 第45节:VCL实现健康检查、ACL访问控制.avi │ 第46节:Grace模式和Saint模式.avi │ 第47节:VCL常用的函数和Http头.avi │ 第48节:VCL的子程序和Request流程.avi │ 第49节:VCL的变量和常见的应用片断.avi │ 第50节:使用CLI来管理Varnish.avi │ 第51节:Varnishd命令和运行期参数.avi │ 第52节:Varnish的日志操作.avi │ 第53节:规划缓存大小和提高命中率.avi │ 第54节:性能调优和配置使用建议.avi │ 第55节:Nginx+Varnish组合应用.avi │ 第56节:Varnish对性能的提升和优化.avi │ 第57节:应用上Varnish后的体系结构.avi │ 第58节:Memcached入门和缓存的含义.avi │ 第59节:Memcached基本的工作原理.avi │ 第60节:Memcached基本的操作命令.avi │ 第61节:理解Memcached的数据存储方式.avi │ 第62节:内存分配的Chunk、Slab演示.avi │ 第63节:Memcached的Java客户端开发.avi │ 第64节:理解Memcached的分布式方式.avi │ 第65节:Memcached内存调优.avi │ 第66节:Memcached的限制和使用建议.avi │ 第67节:分析如何使用Memcached开发.avi │ 第68节:Memcached结合业务功能开发.avi │ 第69节:Nginx+Varnish+基本业务功能+Memcached.avi │ 第70节:应用Memcached后的体系结构.avi │ 第71节:ActiveMQ入门和消息中间件.avi │ 第72节:JMS基本概念和模型.avi │ 第73节:JMS的可靠性机制.avi │ 第74节:JMS的API结构和开发步骤.avi │ 第75节:Broker的启动方式.avi │ 第76节:ActiveMQ结合Spring开发.avi │ 第77节:ActiveMQ支持的传输协议.avi │ 第78节:ActiveMQ消息存储持久化.avi │ 第79节:ActiveMQ的静态网络链接.avi │ 第80节:多线程consumer访问集群.avi │ 第81节:集群下的消息回流功能.avi │ 第82节:容错的链接和动态网络连接.avi │ 第83节:ActiveMQ的集群.avi │ 第84节:Destination高特性一.avi │ 第85节:Destination高特性二.avi │ 第86节:MessageDispatch高特性一.avi │ 第87节:MessageDispatch高特性二.avi │ 第88节:MessageDispatch高特性.avi │ 第89节:Message高特性一.avi │ 第90节:Message高特性二.avi │ 第91节:Consumer高特性一.avi │ 第92节:Consumer高特性二.avi │ 第93节:集成ActiveMQ和Tomcat.avi │ 第94节:AMQ优化和使用建议.avi │ 第95节:AMQ结合业务功能的开发一.avi │ 第96节:AMQ结合业务功能的开发二.avi │ 第97节:AMQ结合业务功能的开发.avi │ 第98节:AMQ和业务功能组合测试.avi │ 第99节:基本的性能测试.avi │ 第100节:应用上AMQ后的体系结构.avi │ 第101节:MongoDB简介和NoSQL.avi │ 第102节:MongoDB安装和基本使用.avi │ 第103节:MongoDB基本概念.avi │ 第104节:MongoDB增删改操作一.avi │ 第105节:MongoDB增删改操作二.avi │ 第106节:MongoDB查询操作一.avi │ 第107节:MongoDB查询操作二.avi │ 第108节:聚合框架第一部分.avi │ 第109节:聚合框架第二部分.avi │ 第110节:聚合框架第部分.avi │ 第111节:理解文档存储机制.avi │ 第112节:MongoDB的索引一.avi │ 第113节:MongoDB的索引二.avi │ 第114节:Capped集合和GridFS.avi │ 第115节:MongoDB的副本集一.avi │ 第116节:MongoDB的副本集二.avi │ 第117节:副本集的基本原理.avi │ 第118节:副本集管理和主从复制.avi │ 第119节:MongoDB的分片一.avi │ 第120节:MongoDB的分片二.avi │ 第121节:MongoDB的分片.avi │ 第122节:MongoDB分片的片键选择.avi │ 第123节:MongoDB分片的管理.avi │ 第124节:监控状态和身份验证.avi │ 第125节:备份和恢复.avi │ 第126节:Java操作MongoDB.avi │ 第127节:MongoDB和Spring.avi │ 第128节:应用建议及最佳实践.avi │ 第129节:MongoDB结合应用开发一.avi │ 第130节:MongoDB结合应用开发二.avi │ 第131节:应用MongoDB后体系结构.avi │ 第132节:MogileFS简介和入门.avi │ 第133节:MogileFS安装和基本配置.avi │ 第134节:理解MogileFS的基本概念.avi │ 第135节:理解MogileFS的基本原理.avi │ 第136节:MogileFS的Java客户端开发.avi │ 第137节:基于MogileFS的小应用一.avi │ 第138节:基于MogileFS的小应用二.avi │ 第139节:基于MogileFS的小应用.avi │ 第140节:基于MogileFS的小应用四.avi │ 第141节:MogileFS和Nginx的集成.avi │ 第142节:应用MogileFS后体系结构变化.avi │ 第143节:阶段一小结合构建的基本架构.avi │ 第144节:阶段一工程整体打包部署.avi │ 第145节:测试Nginx、Varnish和MogileFS.avi │ 第146节:测试Memcached和MongoDB.avi │ 第147节:测试应用结合ActiveMQ的功能.avi │ 第148节:阶段一之后的发展和架构演变.avi │ ├─x-gen-ppt │ 使用外部主题.pdf │ 具体调用.pdf │ 分发调度.pdf │ 整体介绍.pdf │ 模板管理.pdf │ 生成代理.pdf │ 生成输出.pdf │ 自定义外部主题.pdf │ 配置管理.pdf │ ├─x-gen-projects │ └─project │ ├─.metadata │ │ │ .lock │ │ │ .log │ │ │ version.ini │ │ │ │ │ ├─.mylyn │ │ │ │ .tasks.xml.zip │ │ │ │ repositories.xml.zip │ │ │ │ tasks.xml.zip │ │ │ │ │ │ │ └─contexts │ │ └─.plugins │ │ ├─org.eclipse.core.resources │ │ │ ├─.history │ │ │ │ ├─0 │ │ │ │ ├─1 │ │ │ │ ├─10 │ │ │ │ ├─11 │ │ │ │ ├─12 │ │ │ │ ├─13 │ │ │ │ ├─14 │ │ │ │ ├─15 │ │ │ │ ├─16 │ │ │ │ ├─17 │ │ │ │ ├─18 │ │ │ │ ├─19 │ │ │ │ ├─1a │ │ │ │ ├─1b │ │ │ │ ├─1c │ │ │ │ ├─1d │ │ │ │ ├─1e │ │ │ │ ├─1f │ │ │ │ ├─2 │ │ │ │ ├─20 │ │ │ │ ├─21 │ │ │ │ ├─22 │ │ │ │ ├─23 │ │ │ │ ├─24 │ │ │ │ ├─25 │ │ │ │ ├─26 │ │ │ │ ├─27 │ │ │ │ ├─28 │ │ │ │ ├─29 │ │ │ │ ├─2a │ │ │ │ ├─2b │ │ │ │ ├─2c │ │ │ │ ├─2d │ │ │ │ ├─2e │ │ │ │ ├─2f │ │ │ │ ├─3 │ │ │ │ ├─30 │ │ │ │ ├─31 │ │ │ │ ├─32 │ │ │ │ ├─33 │ │ │ │ ├─34 │ │ │ │ ├─35 │ │ │ │ ├─36 │ │ │ │ ├─37 │ │ │ │ ├─38 │ │ │ │ ├─39 │ │ │ │ ├─3a │ │ │ │ ├─3b │ │ │ │ ├─3c │ │ │ │ ├─3d │ │ │ │ ├─3e │ │ │ │ ├─3f │ │ │ │ ├─4 │ │ │ │ ├─40 │ │ │ │ ├─41 │ │ │ │ ├─42 │ │ │ │ ├─43 │ │ │ │ ├─44 │ │ │ │ ├─45 │ │ │ │ ├─46 │ │ │ │ ├─47 │ │ │ │ ├─48 │ │ │ │ ├─49 │ │ │ │ ├─4a │ │ │ │ ├─4b │ │ │ │ ├─4c │ │ │ │ ├─4d │ │ │ │ ├─4e │ │ │ │ ├─4f │ │ │ │ ├─5 │ │ │ │ ├─50 │ │ │ │ ├─51 │ │ │ │ ├─52 │ │ │ │ ├─53 │ │ │ │ ├─54 │ │ │ │ ├─55 │ │ │ │ ├─56 │ │ │ │ ├─57 │ │ │ │ ├─58 │ │ │ │ ├─59 │ │ │ │ ├─5a │ │ │ │ ├─5b │ │ │ │ ├─5c │ │ │ │ ├─5d │ │ │ │ ├─5e │ │ │ │ ├─5f │ │ │ │ ├─6 │ │ │ │ ├─60 │ │ │ │ ├─61 │ │ │ │ ├─62 │ │ │ │ ├─63 │ │ │ │ ├─64 │ │ │ │ ├─65 │ │ │ │ ├─66 │ │ │ │ ├─67 │ │ │ │ ├─68 │ │ │ │ ├─69 │ │ │ │ ├─6a │ │ │ │ ├─6b │ │ │ │ ├─6c │ │ │ │ ├─6d │ │ │ │ ├─6e │ │ │ │ ├─6f │ │ │ │ ├─7 │ │ │ │ ├─70 │ │ │ │ ├─71 │ │ │ │ ├─72 │ │ │ │ ├─73 │ │ │ │ ├─74 │ │ │ │ ├─75 │ │ │ │ ├─76 │ │ │ │ ├─77 │ │ │ │ ├─78 │ │ │ │ ├─79 │ │ │ │ ├─7a │ │ │ │ ├─7b │ │ │ │ ├─7c │ │ │ │ ├─7d │ │ │ │ ├─7e │ │ │ │ ├─7f │ │ │ │ │ 40f32f632b3900121032a38527baf77d │ │ │ │ │ │ │ │ │ ├─8 │ │ │ │ ├─80 │ │ │ │ ├─81 │ │ │ │ ├─82 │ │ │ │ ├─83 │ │ │ │ ├─84 │ │ │ │ ├─85 │ │ │ │ ├─86 │ │ │ │ ├─87 │ │ │ │ ├─88 │ │ │ │ ├─89 │ │ │ │ ├─8a │ │ │ │ ├─8b │ │ │ │ ├─8c │ │ │ │ ├─8d │ │ │ │ ├─8e │ │ │ │ ├─8f │ │ │ │ ├─9 │ │ │ │ ├─90 │ │ │ │ ├─91 │ │ │ │ ├─92 │ │ │ │ ├─93 │ │ │ │ ├─94 │ │ │ │ ├─95 │ │ │ │ ├─96 │ │ │ │ ├─97 │ │ │ │ ├─98 │ │ │ │ ├─99 │ │ │ │ ├─9a │ │ │ │ ├─9b │ │ │ │ ├─9c │ │ │ │ ├─9d │ │ │ │ ├─9e │ │ │ │ ├─9f │ │ │ │ ├─a │ │ │ │ ├─a0 │ │ │ │ ├─a1 │ │ │ │ ├─a2 │ │ │ │ ├─a3 │ │ │ │ ├─a4 │ │ │ │ ├─a5 │ │ │ │ ├─a6 │ │ │ │ ├─a7 │ │ │ │ ├─a8 │ │ │ │ ├─a9 │ │ │ │ ├─aa │ │ │ │ ├─ab │ │ │ │ ├─ac │ │ │ │ ├─ad │ │ │ │ ├─ae │ │ │ │ ├─af │ │ │ │ ├─b │ │ │ │ ├─b0 │ │ │ │ ├─b1 │ │ │ │ ├─b2 │ │ │ │ ├─b3 │ │ │ │ ├─b4 │ │ │ │ ├─b5 │ │ │ │ ├─b6 │ │ │ │ ├─b7 │ │ │ │ ├─b8 │ │ │ │ ├─b9 │ │ │ │ ├─ba │ │ │ │ ├─bb │ │ │ │ ├─bc │ │ │ │ ├─bd │ │ │ │ ├─be │ │ │ │ ├─bf │ │ │ │ ├─c │ │ │ │ ├─c0 │ │ │ │ ├─c1 │ │ │ │ ├─c2 │ │ │ │ ├─c3 │ │ │ │ ├─c4 │ │ │ │ ├─c5 │ │ │ │ ├─c6 │ │ │ │ ├─c7 │ │ │ │ ├─c8 │ │ │ │ ├─c9 │ │ │ │ ├─ca │ │ │ │ ├─cb │ │ │ │ ├─cc │ │ │ │ ├─cd │ │ │ │ ├─ce │ │ │ │ ├─cf │ │ │ │ ├─d │ │ │ │ ├─d0 │ │ │ │ ├─d1 │ │ │ │ ├─d2 │ │ │ │ ├─d3 │ │ │ │ ├─d4 │ │ │ │ ├─d5 │ │ │ │ ├─d6 │ │ │ │ ├─d7 │ │ │ │ ├─d8 │ │ │ │ ├─d9 │ │ │ │ ├─da │ │ │ │ ├─db │ │ │ │ │ 709288fe9ef800111a0c80454ed7cb85 │ │ │ │ │ │ │ │ │ ├─dc │ │ │ │ ├─dd │ │ │ │ ├─de │ │ │ │ ├─df │ │ │ │ ├─e │ │ │ │ ├─e0 │ │ │ │ ├─e1 │ │ │ │ ├─e2 │ │ │ │ ├─e3 │ │ │ │ ├─e4 │ │ │ │ ├─e5 │ │ │ │ ├─e6 │ │ │ │ ├─e7 │ │ │ │ ├─e8 │ │ │ │ ├─e9 │ │ │ │ ├─ea │ │ │ │ ├─eb │ │ │ │ ├─ec │ │ │ │ ├─ed │ │ │ │ ├─ee │ │ │ │ ├─ef │ │ │ │ ├─f │ │ │ │ ├─f0 │ │ │ │ ├─f1 │ │ │ │ ├─f2 │ │ │ │ ├─f3 │ │ │ │ ├─f4 │ │ │ │ ├─f5 │ │ │ │ ├─f6 │ │ │ │ ├─f7 │ │ │ │ ├─f8 │ │ │ │ ├─f9 │ │ │ │ ├─fa │ │ │ │ ├─fb │ │ │ │ ├─fc │ │ │ │ ├─fd │ │ │ │ ├─fe │ │ │ │ │ 30ae34632b3900121032a38527baf77d │ │ │ │ │ │ │ │ │ └─ff │ │ │ ├─.projects │ │ │ │ ├─test │ │ │ │ │ │ .markers │ │ │ │ │ │ │ │ │ │ │ ├─org.eclipse.jdt.apt.core │ │ │ │ │ └─org.eclipse.jdt.core │ │ │ │ │ state.dat │ │ │ │ │ │ │ │ │ └─x-gen │ │ │ │ │ .markers │ │ │ │ │ │ │ │ │ ├─.indexes │ │ │ │ │ └─6e │ │ │ │ │ └─6b │ │ │ │ │ └─fe │ │ │ │ │ └─92 │ │ │ │ │ └─92 │ │ │ │ │ ├─40 │ │ │ │ │ │ └─6c │ │ │ │ │ │ history.index │ │ │ │ │ │ │ │ │ │ │ └─b9 │ │ │ │ │ history.index │ │ │ │ │ │ │ │ │ ├─org.eclipse.jdt.apt.core │ │ │ │ └─org.eclipse.jdt.core │ │ │ │ state.dat │ │ │ │ │ │ │ ├─.root │ │ │ │ │ 11.tree │ │ │ │ │ │ │ │ │ └─.indexes │ │ │ │ history.version │ │ │ │ properties.index │ │ │ │ properties.version │ │ │ │ │ │ │ └─.safetable │ │ │ org.eclipse.core.resources │ │ │ │ │ ├─org.eclipse.core.runtime │ │ │ └─.settings │ │ │ org.eclipse.core.resources.prefs │ │ │ org.eclipse.debug.ui.prefs │ │ │ org.eclipse.epp.usagedata.recording.prefs │ │ │ org.eclipse.jdt.core.prefs │ │ │ org.eclipse.jdt.launching.prefs │ │ │ org.eclipse.jdt.ui.prefs │ │ │ org.eclipse.jst.j2ee.webservice.ui.prefs │ │ │ org.eclipse.jst.jsp.core.prefs │ │ │ org.eclipse.mylyn.context.core.prefs │ │ │ org.eclipse.mylyn.java.ui.prefs │ │ │ org.eclipse.mylyn.monitor.ui.prefs │ │ │ org.eclipse.team.cvs.ui.prefs │ │ │ org.eclipse.team.ui.prefs │ │ │ org.eclipse.ui.editors.prefs │ │ │ org.eclipse.ui.ide.prefs │ │ │ org.eclipse.ui.prefs │ │ │ org.eclipse.ui.workbench.prefs │ │ │ org.eclipse.wst.jsdt.ui.prefs │ │ │ org.eclipse.wst.sse.core.prefs │ │ │ org.eclipse.wst.sse.ui.prefs │ │ │ org.eclipse.wst.ws.service.policy.prefs │ │ │ org.eclipse.wst.xml.ui.prefs │ │ │ │ │ ├─org.eclipse.debug.core │ │ │ └─.launches │ │ │ MyTest (1).launch │ │ │ MyTest.launch │ │ │ t.launch │ │ │ │ │ ├─org.eclipse.debug.ui │ │ │ dialog_settings.xml │ │ │ launchConfigurationHistory.xml │ │ │ │ │ ├─org.eclipse.epp.usagedata.recording │ │ │ upload0.csv │ │ │ upload1.csv │ │ │ upload10.csv │ │ │ upload11.csv │ │ │ upload12.csv │ │ │ upload13.csv │ │ │ upload14.csv │ │ │ upload15.csv │ │ │ upload16.csv │ │ │ upload17.csv │ │ │ upload18.csv │ │ │ upload19.csv │ │ │ upload2.csv │ │ │ upload20.csv │ │ │ upload21.csv │ │ │ upload22.csv │ │ │ upload23.csv │ │ │ upload24.csv │ │ │ upload25.csv │ │ │ upload26.csv │ │ │ upload27.csv │ │ │ upload28.csv │ │ │ upload29.csv │ │ │ upload3.csv │ │ │ upload30.csv │ │ │ upload31.csv │ │ │ upload32.csv │ │ │ upload33.csv │ │ │ upload34.csv │ │ │ upload35.csv │ │ │ upload36.csv │ │ │ upload37.csv │ │ │ upload38.csv │ │ │ upload39.csv │ │ │ upload4.csv │ │ │ upload40.csv │ │ │ upload41.csv │ │ │ upload42.csv │ │ │ upload43.csv │ │ │ upload44.csv │ │ │ upload45.csv │ │ │ upload46.csv │ │ │ upload47.csv │ │ │ upload48.csv │ │ │ upload49.csv │ │ │ upload5.csv │ │ │ upload50.csv │ │ │ upload51.csv │ │ │ upload52.csv │ │ │ upload53.csv │ │ │ upload54.csv │ │ │ upload55.csv │ │ │ upload56.csv │ │ │ upload57.csv │ │ │ upload58.csv │ │ │ upload59.csv │ │ │ upload6.csv │ │ │ upload7.csv │ │ │ upload8.csv │ │ │ upload9.csv │ │ │ usagedata.csv │ │ │ │ │ ├─org.eclipse.jdt.core │ │ │ 1285665056.index │ │ │ 1443231178.index │ │ │ 1583475091.index │ │ │ 1642086229.index │ │ │ 165780461.index │ │ │ 1836311715.index │ │ │ 2335302788.index │ │ │ 2424825842.index │ │ │ 2559444288.index │ │ │ 2926361562.index │ │ │ 3271193799.index │ │ │ 3561449303.index │ │ │ 3887831799.index │ │ │ 504403929.index │ │ │ 959717129.index │ │ │ externalLibsTimeStamps │ │ │ invalidArchivesCache │ │ │ javaLikeNames.txt │ │ │ nonChainingJarsCache │ │ │ participantsIndexNames.txt │ │ │ savedIndexNames.txt │ │ │ variablesAndContainers.dat │ │ │ │ │ ├─org.eclipse.jdt.launching │ │ │ .install.xml │ │ │ libraryInfos.xml │ │ │ │ │ ├─org.eclipse.jdt.ui │ │ │ dialog_settings.xml │ │ │ OpenTypeHistory.xml │ │ │ QualifiedTypeNameHistory.xml │ │ │ │ │ ├─org.eclipse.jst.jsp.core │ │ │ ├─jspsearch │ │ │ │ 4166850570.index │ │ │ │ 51038836.index │ │ │ │ │ │ │ ├─taglibindex │ │ │ │ 2926361562.dat │ │ │ │ 3271193799.dat │ │ │ │ │ │ │ └─translators │ │ ├─org.eclipse.ltk.core.refactoring │ │ │ └─.refactorings │ │ │ ├─.workspace │ │ │ │ └─2012 │ │ │ │ ├─11 │ │ │ │ │ └─48 │ │ │ │ │ refactorings.history │ │ │ │ │ refactorings.index │ │ │ │ │ │ │ │ │ ├─8 │ │ │ │ │ └─35 │ │ │ │ │ refactorings.history │ │ │ │ │ refactorings.index │ │ │ │ │ │ │ │ │ └─9 │ │ │ │ ├─36 │ │ │ │ │ refactorings.history │ │ │ │ │ refactorings.index │ │ │ │ │ │ │ │ │ └─37 │ │ │ │ refactorings.history │ │ │ │ refactorings.index │ │ │ │ │ │ │ ├─test │ │ │ │ └─2012 │ │ │ │ └─9 │ │ │ │ └─37 │ │ │ │ refactorings.history │ │ │ │ refactorings.index │ │ │ │ │ │ │ └─x-gen │ │ │ └─2012 │ │ │ ├─8 │ │ │ │ └─35 │ │ │ │ refactorings.history │ │ │ │ refactorings.index │ │ │ │ │ │ │ └─9 │ │ │ └─36 │ │ │ refactorings.history │ │ │ refactorings.index │ │ │ │ │ ├─org.eclipse.ltk.ui.refactoring │ │ │ dialog_settings.xml │ │ │ │ │ ├─org.eclipse.mylyn.bugzilla.core │ │ ├─org.eclipse.mylyn.tasks.ui │ │ ├─org.eclipse.pde.api.tools │ │ ├─org.eclipse.pde.core │ │ │ ├─.cache │ │ │ │ clean-cache.properties │ │ │ │ │ │ │ └─.p2 │ │ │ └─org.eclipse.equinox.p2.engine │ │ │ └─profileRegistry │ │ ├─org.eclipse.team.cvs.core │ │ ├─org.eclipse.ui.editors │ │ │ dialog_settings.xml │ │ │ │ │ ├─org.eclipse.ui.ide │ │ │ dialog_settings.xml │ │ │ │ │ ├─org.eclipse.ui.intro │ │ ├─org.eclipse.ui.workbench │ │ │ dialog_settings.xml │ │ │ workbench.xml │ │ │ workingsets.xml │ │ │ │ │ ├─org.eclipse.ui.workbench.texteditor │ │ │ dialog_settings.xml │ │ │ │ │ ├─org.eclipse.wst.common.modulecore │ │ ├─org.eclipse.wst.internet.cache │ │ │ cache.xml │ │ │ │ │ ├─org.eclipse.wst.jsdt.core │ │ │ │ externalLibsTimeStamps │ │ │ │ variablesAndContainers.dat │ │ │ │ │ │ │ ├─indexes │ │ │ └─libraries │ │ │ baseBrowserLibrary.js │ │ │ browserWindow.js │ │ │ dom5.js │ │ │ system.js │ │ │ xhr.js │ │ │ │ │ ├─org.eclipse.wst.jsdt.ui │ │ │ OpenTypeHistory.xml │ │ │ QualifiedTypeNameHistory.xml │ │ │ │ │ ├─org.eclipse.wst.server.core │ │ ├─org.eclipse.wst.sse.ui │ │ │ dialog_settings.xml │ │ │ │ │ └─org.eclipse.wst.xml.core │ │ default_catalog.xml │ │ system_catalog.xml │ │ │ ├─test │ │ │ .classpath │ │ │ .project │ │ │ │ │ ├─.settings │ │ │ org.eclipse.jdt.core.prefs │ │ │ │ │ ├─bin │ │ │ ├─cn │ │ │ │ └─javass │ │ │ │ ├─test │ │ │ │ │ │ MyTest.class │ │ │ │ │ │ │ │ │ │ │ └─test │ │ │ │ ├─themes │ │ │ │ │ ├─mytheme │ │ │ │ │ │ │ ThemeConf.xml │ │ │ │ │ │ │ │ │ │ │ │ │ ├─actions │ │ │ │ │ │ │ VoAction.class │ │ │ │ │ │ │ VoHbmXmlAction.class │ │ │ │ │ │ │ │ │ │ │ │ │ ├─decorators │ │ │ │ │ │ │ MyDecorator.class │ │ │ │ │ │ │ │ │ │ │ │ │ ├─outtype │ │ │ │ │ │ │ MyOutput.class │ │ │ │ │ │ │ │ │ │ │ │ │ ├─template │ │ │ │ │ │ │ └─vo │ │ │ │ │ │ │ Model.hbm.txt │ │ │ │ │ │ │ Model.txt │ │ │ │ │ │ │ │ │ │ │ │ │ └─visitors │ │ │ │ │ │ VoProperty.class │ │ │ │ │ │ VoPropertyGetterSetter.class │ │ │ │ │ │ VoPropertyHbmXml.class │ │ │ │ │ │ │ │ │ │ │ └─simple │ │ │ │ │ │ ThemeConf.xml │ │ │ │ │ │ │ │ │ │ │ ├─actions │ │ │ │ │ │ GenAddPageAction.class │ │ │ │ │ │ GenBusinessEbiAction.class │ │ │ │ │ │ GenBusinessEboAction.class │ │ │ │ │ │ GenDaoDaoAction.class │ │ │ │ │ │ GenDaoImplAction.class │ │ │ │ │ │ GenDeletePageAction.class │ │ │ │ │ │ GenHbmXmlAction.class │ │ │ │ │ │ GenListPageAction.class │ │ │ │ │ │ GenQueryModelAction.class │ │ │ │ │ │ GenQueryPageAction.class │ │ │ │ │ │ GenSpring2XmlAction.class │ │ │ │ │ │ GenStruts2XmlAction.class │ │ │ │ │ │ GenUpdatePageAction.class │ │ │ │ │ │ GenVoAction.class │ │ │ │ │ │ GenWebActionAction.class │ │ │ │ │ │ GenWebModelAction.class │ │ │ │ │ │ │ │ │ │ │ ├─decorators │ │ │ │ │ ├─outputtypes │ │ │ │ │ │ MyOutput.class │ │ │ │ │ │ │ │ │ │ │ ├─template │ │ │ │ │ │ ├─business │ │ │ │ │ │ │ Ebi.txt │ │ │ │ │ │ │ Ebo.txt │ │ │ │ │ │ │ │ │ │ │ │ │ ├─dao │ │ │ │ │ │ │ DAO.txt │ │ │ │ │ │ │ H3Impl.txt │ │ │ │ │ │ │ │ │ │ │ │ │ ├─pages │ │ │ │ │ │ │ add.txt │ │ │ │ │ │ │ delete.txt │ │ │ │ │ │ │ list.txt │ │ │ │ │ │ │ query.txt │ │ │ │ │ │ │ update.txt │ │ │ │ │ │ │ │ │ │ │ │ │ ├─vo │ │ │ │ │ │ │ Model.hbm.txt │ │ │ │ │ │ │ Model.txt │ │ │ │ │ │ │ QueryModel.txt │ │ │ │ │ │ │ │ │ │ │ │ │ ├─web │ │ │ │ │ │ │ Action.txt │ │ │ │ │ │ │ WebModel.txt │ │ │ │ │ │ │ │ │ │ │ │ │ └─xmls │ │ │ │ │ │ applicationContext.txt │ │ │ │ │ │ struts.txt │ │ │ │ │ │ │ │ │ │ │ └─visitors │ │ │ │ │ AddPageInputs.class │ │ │ │ │ GenH3ImplPreparedHql.class │ │ │ │ │ GenH3ImplSetHqlValue.class │ │ │ │ │ GetterAndSetter.class │ │ │ │ │ HbmProperties.class │ │ │ │ │ ListPageTitles.class │ │ │ │ │ ListPageValues.class │ │ │ │ │ QmGetterAndSetter.class │ │ │ │ │ QmPropertiesDesign.class │ │ │ │ │ QueryPageInputs.class │ │ │ │ │ ToStringStr.class │ │ │ │ │ UpdatePageInputs.class │ │ │ │ │ VoPropertiesDesign.class │ │ │ │ │ │ │ │ │ └─xgenconfxml │ │ │ │ GenConf.xml │ │ │ │ MyThemeDepGenConf.xml │ │ │ │ MyThemeUserGenConf.xml │ │ │ │ │ │ │ └─com │ │ │ └─abc │ │ │ └─myproject │ │ │ ├─dep │ │ │ │ └─vo │ │ │ │ DepModel.class │ │ │ │ DepModel.hbm.xml │ │ │ │ │ │ │ └─user │ │ │ └─vo │ │ │ UserModel.class │ │ │ UserModel.hbm.xml │ │ │ │ │ ├─build │ │ │ └─com │ │ │ └─abc │ │ │ └─myproject │ │ │ ├─dep │ │ │ │ └─vo │ │ │ │ DepModel.hbm.xml │ │ │ │ DepModel.java │ │ │ │ │ │ │ └─user │ │ │ └─vo │ │ │ UserModel.hbm.xml │ │ │ UserModel.java │ │ │ │ │ ├─lib │ │ │ bsh-2.0b4.jar │ │ │ x-gen-no-themes.jar │ │ │ │ │ └─src │ │ ├─cn │ │ │ └─javass │ │ │ ├─test │ │ │ │ │ MyTest.java │ │ │ │ │ │ │ │ │ └─test │ │ │ ├─themes │ │ │ │ ├─mytheme │ │ │ │ │ │ ThemeConf.xml │ │ │ │ │ │ │ │ │ │ │ ├─actions │ │ │ │ │ │ VoAction.java │ │ │ │ │ │ VoHbmXmlAction.java │ │ │ │ │ │ │ │ │ │ │ ├─decorators │ │ │ │ │ │ MyDecorator.java │ │ │ │ │ │ │ │ │ │ │ ├─outtype │ │ │ │ │ │ MyOutput.java │ │ │ │ │ │ │ │ │ │ │ ├─template │ │ │ │ │ │ └─vo │ │ │ │ │ │ Model.hbm.txt │ │ │ │ │ │ Model.txt │ │ │ │ │ │ │ │ │ │ │ └─visitors │ │ │ │ │ VoProperty.java │ │ │ │ │ VoPropertyGetterSetter.java │ │ │ │ │ VoPropertyHbmXml.java │ │ │ │ │ │ │ │ │ └─simple │ │ │ │ │ ThemeConf.xml │ │ │ │ │ │ │ │ │ ├─actions │ │ │ │ │ GenAddPageAction.java │ │ │ │ │ GenBusinessEbiAction.java │ │ │ │ │ GenBusinessEboAction.java │ │ │ │ │ GenDaoDaoAction.java │ │ │ │ │ GenDaoImplAction.java │ │ │ │ │ GenDeletePageAction.java │ │ │ │ │ GenHbmXmlAction.java │ │ │ │ │ GenListPageAction.java │ │ │ │ │ GenQueryModelAction.java │ │ │ │ │ GenQueryPageAction.java │ │ │ │ │ GenSpring2XmlAction.java │ │ │ │ │ GenStruts2XmlAction.java │ │ │ │ │ GenUpdatePageAction.java │ │ │ │ │ GenVoAction.java │ │ │ │ │ GenWebActionAction.java │ │ │ │ │ GenWebModelAction.java │ │ │ │ │ │ │ │ │ ├─decorators │ │ │ │ ├─outputtypes │ │ │ │ │ MyOutput.java │ │ │ │ │ │ │ │ │ ├─template │ │ │ │ │ ├─business │ │ │ │ │ │ Ebi.txt │ │ │ │ │ │ Ebo.txt │ │ │ │ │ │ │ │ │ │ │ ├─dao │ │ │ │ │ │ DAO.txt │ │ │ │ │ │ H3Impl.txt │ │ │ │ │ │ │ │ │ │ │ ├─pages │ │ │ │ │ │ add.txt │ │ │ │ │ │ delete.txt │ │ │ │ │ │ list.txt │ │ │ │ │ │ query.txt │ │ │ │ │ │ update.txt │ │ │ │ │ │ │ │ │ │ │ ├─vo │ │ │ │ │ │ Model.hbm.txt │ │ │ │ │ │ Model.txt │ │ │ │ │ │ QueryModel.txt │ │ │ │ │ │ │ │ │ │ │ ├─web │ │ │ │ │ │ Action.txt │ │ │ │ │ │ WebModel.txt │ │ │ │ │ │ │ │ │ │ │ └─xmls │ │ │ │ │ applicationContext.txt │ │ │ │ │ struts.txt │ │ │ │ │ │ │ │ │ └─visitors │ │ │ │ AddPageInputs.java │ │ │ │ GenH3ImplPreparedHql.java │ │ │ │ GenH3ImplSetHqlValue.java │ │ │ │ GetterAndSetter.java │ │ │ │ HbmProperties.java │ │ │ │ ListPageTitles.java │ │ │ │ ListPageValues.java │ │ │ │ QmGetterAndSetter.java │ │ │ │ QmPropertiesDesign.java │ │ │ │ QueryPageInputs.java │ │ │ │ ToStringStr.java │ │ │ │ UpdatePageInputs.java │ │ │ │ VoPropertiesDesign.java │ │ │ │ │ │ │ └─xgenconfxml │ │ │ GenConf.xml │ │ │ MyThemeDepGenConf.xml │ │ │ MyThemeUserGenConf.xml │ │ │ │ │ └─com │ │ └─abc │ │ └─myproject │ │ ├─dep │ │ │ └─vo │ │ │ DepModel.hbm.xml │ │ │ DepModel.java │ │ │ │ │ └─user │ │ └─vo │ │ UserModel.hbm.xml │ │ UserModel.java │ │ │ └─x-gen │ │ .classpath │ │ .project │ │ │ ├─.settings │ │ org.eclipse.jdt.core.prefs │ │ │ ├─bin │ │ └─cn │ │ └─javass │ │ │ MyTest.class │ │ │ │ │ ├─themes │ │ │ └─simple │ │ │ │ ThemeConf.xml │ │ │ │ │ │ │ ├─actions │ │ │ │ GenBusinessEbiAction.class │ │ │ │ GenVoAction.class │ │ │ │ │ │ │ ├─decorators │ │ │ ├─template │ │ │ │ ├─business │ │ │ │ │ Ebi.txt │ │ │ │ │ │ │ │ │ └─vo │ │ │ │ Model.txt │ │ │ │ │ │ │ └─visitors │ │ │ VoPropertiesDesign.class │ │ │ │ │ ├─xgen │ │ │ ├─dispatch │ │ │ │ │ GenFacade.class │ │ │ │ │ │ │ │ │ ├─command │ │ │ │ │ CmdInvoker.class │ │ │ │ │ DefaultCommand.class │ │ │ │ │ GenCommand.class │ │ │ │ │ │ │ │ │ └─executechain │ │ │ │ DefaultHandler.class │ │ │ │ GenHandler.class │ │ │ │ │ │ │ ├─genconf │ │ │ │ │ GenConfEbi.class │ │ │ │ │ GenConfEbo.class │ │ │ │ │ GenConfFactory.class │ │ │ │ │ │ │ │ │ ├─confmanger │ │ │ │ │ ConfManager.class │ │ │ │ │ │ │ │ │ ├─constants │ │ │ │ │ ExpressionEnum.class │ │ │ │ │ GenConfEnum.class │ │ │ │ │ ModuleGenConfEnum.class │ │ │ │ │ ThemeEnum.class │ │ │ │ │ │ │ │ │ ├─implementors │ │ │ │ │ │ GenConfImplementor.class │ │ │ │ │ │ ModuleGenConfImplementor.class │ │ │ │ │ │ ThemeImplementer.class │ │ │ │ │ │ │ │ │ │ │ ├─dynamicparse │ │ │ │ │ │ BeanShellStrategy.class │ │ │ │ │ │ ParseContext.class │ │ │ │ │ │ ParseStrategy.class │ │ │ │ │ │ PropertyReplaceStrategy.class │ │ │ │ │ │ │ │ │ │ │ └─xmlimpl │ │ │ │ │ CommonBuilder.class │ │ │ │ │ GenConfBuilder.class │ │ │ │ │ GenConfXmlImpl.class │ │ │ │ │ ModuleGenConfBuilder.class │ │ │ │ │ ModuleGenConfXmlImpl.class │ │ │ │ │ ThemeBuilder.class │ │ │ │ │ ThemeXmlImpl.class │ │ │ │ │ │ │ │ │ └─vo │ │ │ │ ExtendConfModel.class │ │ │ │ GenConfModel.class │ │ │ │ GenTypeModel.class │ │ │ │ ModuleConfModel.class │ │ │ │ NeedGenModel.class │ │ │ │ ThemeModel.class │ │ │ │ │ │ │ ├─geninvocation │ │ │ │ │ BaseGenAction.class │ │ │ │ │ DefaultGenInvocation.class │ │ │ │ │ GenInvocation.class │ │ │ │ │ GenInvocationFactory.class │ │ │ │ │ │ │ │ │ ├─decorator │ │ │ │ │ DefaultComponent.class │ │ │ │ │ GenComponent.class │ │ │ │ │ GenDecorator.class │ │ │ │ │ ReadTemplateContent.class │ │ │ │ │ ReplaceMethods.class │ │ │ │ │ ReplaceProperty.class │ │ │ │ │ │ │ │ │ └─state │ │ │ │ DefaultBeginState.class │ │ │ │ GenState.class │ │ │ │ OutState.class │ │ │ │ State.class │ │ │ │ │ │ │ ├─genproxy │ │ │ │ DefaultProxy.class │ │ │ │ GenProxyFactory.class │ │ │ │ │ │ │ ├─mediator │ │ │ │ CoreMediator.class │ │ │ │ │ │ │ ├─output │ │ │ │ │ GenOutputEbi.class │ │ │ │ │ │ │ │ │ └─types │ │ │ │ │ OutputToConsole.class │ │ │ │ │ OutputToFile.class │ │ │ │ │ │ │ │ │ └─outputtofile │ │ │ │ │ AbstractFactory.class │ │ │ │ │ GenOutPathPackages.class │ │ │ │ │ Outter.class │ │ │ │ │ │ │ │ │ └─plaintxt │ │ │ │ GenOutPathPackageImpl.class │ │ │ │ OutterImpl.class │ │ │ │ PlainTxtFactory.class │ │ │ │ │ │ │ ├─template │ │ │ │ │ DefaultTemplateEbo.class │ │ │ │ │ TemplateEbi.class │ │ │ │ │ TemplateFactory.class │ │ │ │ │ │ │ │ │ ├─flyweight │ │ │ │ │ DefaultTemplate.class │ │ │ │ │ TemplateFlyweight.class │ │ │ │ │ TemplateFlyweightFactory.class │ │ │ │ │ │ │ │ │ └─visitors │ │ │ │ TemplateElement.class │ │ │ │ Visitor.class │ │ │ │ │ │ │ └─util │ │ │ ├─file │ │ │ │ FileHelper.class │ │ │ │ │ │ │ └─readxml │ │ │ Context.class │ │ │ ElementExpression.class │ │ │ ElementsExpression.class │ │ │ ElementsTerminalExpression.class │ │ │ ElementTerminalExpression.class │ │ │ ParseCaretaker.class │ │ │ ParseMemento.class │ │ │ ParseModel.class │ │ │ Parser$MementoImpl.class │ │ │ Parser.class │ │ │ Parser2.class │ │ │ PropertysTerminalExpression.class │ │ │ PropertyTerminalExpression.class │ │ │ ReadXmlExpression.class │ │ │ XmlUtil.class │ │ │ │ │ └─xgenconfxml │ │ GenConf.xml │ │ UserGenConf.xml │ │ │ ├─build │ ├─lib │ │ bsh-2.0b4.jar │ │ │ └─src │ └─cn │ └─javass │ │ MyTest.java │ │ │ ├─themes │ │ └─simple │ │ │ ThemeConf.xml │ │ │ │ │ ├─actions │ │ │ GenBusinessEbiAction.java │ │ │ GenVoAction.java │ │ │ │ │ ├─decorators │ │ ├─template │ │ │ ├─business │ │ │ │ Ebi.txt │ │ │ │ │ │ │ └─vo │ │ │ Model.txt │ │ │ │ │ └─visitors │ │ VoPropertiesDesign.java │ │ │ ├─xgen │ │ ├─dispatch │ │ │ │ GenFacade.java │ │ │ │ │ │ │ ├─command │ │ │ │ CmdInvoker.java │ │ │ │ DefaultCommand.java │ │ │ │ GenCommand.java │ │ │ │ │ │ │ └─executechain │ │ │ DefaultHandler.java │ │ │ GenHandler.java │ │ │ │ │ ├─genconf │ │ │ │ GenConfEbi.java │ │ │ │ GenConfEbo.java │ │ │ │ GenConfFactory.java │ │ │ │ │ │ │ ├─confmanger │ │ │ │ ConfManager.java │ │ │ │ │ │ │ ├─constants │ │ │ │ ExpressionEnum.java │ │ │ │ GenConfEnum.java │ │ │ │ ModuleGenConfEnum.java │ │ │ │ ThemeEnum.java │ │ │ │ │ │ │ ├─implementors │ │ │ │ │ GenConfImplementor.java │ │ │ │ │ ModuleGenConfImplementor.java │ │ │ │ │ ThemeImplementer.java │ │ │ │ │ │ │ │ │ ├─dynamicparse │ │ │ │ │ BeanShellStrategy.java │ │ │ │ │ ParseContext.java │ │ │ │ │ ParseStrategy.java │ │ │ │ │ PropertyReplaceStrategy.java │ │ │ │ │ │ │ │ │ └─xmlimpl │ │ │ │ CommonBuilder.java │ │ │ │ GenConfBuilder.java │ │ │ │ GenConfXmlImpl.java │ │ │ │ ModuleGenConfBuilder.java │ │ │ │ ModuleGenConfXmlImpl.java │ │ │ │ ThemeBuilder.java │ │ │ │ ThemeXmlImpl.java │ │ │ │ │ │ │ └─vo │ │ │ ExtendConfModel.java │ │ │ GenConfModel.java │ │ │ GenTypeModel.java │ │ │ ModuleConfModel.java │ │ │ NeedGenModel.java │ │ │ ThemeModel.java │ │ │ │ │ ├─geninvocation │ │ │ │ BaseGenAction.java │ │ │ │ DefaultGenInvocation.java │ │ │ │ GenInvocation.java │ │ │ │ GenInvocationFactory.java │ │ │ │ │ │ │ ├─decorator │ │ │ │ DefaultComponent.java │ │ │ │ GenComponent.java │ │ │ │ GenDecorator.java │ │ │ │ ReadTemplateContent.java │ │ │ │ ReplaceMethods.java │ │ │ │ ReplaceProperty.java │ │ │ │ │ │ │ └─state │ │ │ DefaultBeginState.java │ │ │ GenState.java │ │ │ OutState.java │ │ │ State.java │ │ │ │ │ ├─genproxy │ │ │ DefaultProxy.java │ │ │ GenProxyFactory.java │ │ │ │ │ ├─mediator │ │ │ CoreMediator.java │ │ │ │ │ ├─output │ │ │ │ GenOutputEbi.java │ │ │ │ │ │ │ └─types │ │ │ │ OutputToConsole.java │ │ │ │ OutputToFile.java │ │ │ │ │ │ │ └─outputtofile │ │ │ │ AbstractFactory.java │ │ │ │ GenOutPathPackages.java │ │ │ │ Outter.java │ │ │ │ │ │ │ └─plaintxt │ │ │ GenOutPathPackageImpl.java │ │ │ OutterImpl.java │ │ │ PlainTxtFactory.java │ │ │ │ │ ├─template │ │ │ │ DefaultTemplateEbo.java │ │ │ │ TemplateEbi.java │ │ │ │ TemplateFactory.java │ │ │ │ │ │ │ ├─flyweight │ │ │ │ DefaultTemplate.java │ │ │ │ TemplateFlyweight.java │ │ │ │ TemplateFlyweightFactory.java │ │ │ │ │ │ │ └─visitors │ │ │ TemplateElement.java │ │ │ Visitor.java │ │ │ │ │ └─util │ │ ├─file │ │ │ FileHelper.java │ │ │ │ │ └─readxml │ │ Context.java │ │ ElementExpression.java │ │ ElementsExpression.java │ │ ElementsTerminalExpression.java │ │ ElementTerminalExpression.java │ │ ParseCaretaker.java │ │ ParseMemento.java │ │ ParseModel.java │ │ Parser.java │ │ Parser2.java │ │ PropertysTerminalExpression.java │ │ PropertyTerminalExpression.java │ │ ReadXmlExpression.java │ │ XmlUtil.java │ │ │ └─xgenconfxml │ GenConf.xml │ UserGenConf.xml │ └─架构一代码和ppt ActiveMQ快速上手.pdf Git快速上手.pdf Maven补充.pdf Memcached快速上手.pdf MogileFS快速上手.pdf MongoDB快速上手.pdf Nginx快速上手.pdf Varnish快速上手.pdf 基本业务功能.pdf 基础业务的建表语句.sql 最终的project源码.rar
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

计算机视觉-Archer

图像分割没有团队的同学可加群

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值