大数据正式京淘2 末蓝、 2022-06-02 12:27 201阅读 0赞 # 大数据正式京淘2 # ### 项目统一 ### * 编码:UTF-8 * 环境:JDK1.8 * Maven:3.5 * 数据库:5.5 ### 项目支撑系统搭建 ### * 新建working set管理jt项目 * 注:这个只是将同一个大项目中的子项目放到一起,便于管理和查看 * ![2XHzMoi.png][] * 新建Maven(java)项目之jt\_parent * 注:把公共的依赖配置在这里项目里 * ![aGuAuSb.png][] * 新建Maven(java)项目之jt\_commond * 注:把基本项目依赖的基本工具类放在这个项目里 * ![QT29Ye8.png][] ### 注意 ### * 【java】项目创建完成以后要做的三件事 1. java build path 2. java complier 3. worksapce的encoding ### 后台工程 ### * 新建Maven(web)项目之jt\_manager * 注:后台的的数据管理 * ![jMzZUSB.png][] ### 注意 ### * 【web】项目创建完成以后要做的四件事 1. java build path 2. java complier 3. worksapce的encoding 4. Project facets中的java版本 ### 工程间的关系图 ### * ![6j3FVSB.png][] ### 部署项目 ### * 将jt\_parent打成pom包 * 即执行“Maven Install”命令 * 将jt\_common打成jar包 * 即执行“Maven Install”命令 * 给jt\_manager项目添加tomcat插件,并配置启动的选项 * Tomcat插件 # # * 启动配置图解 * ![nlSHAd6.png][] * ![oxLxVCm.png][] ### 常见错误 ### * 项目莫名其妙的红色标记并有提示“Project configuration is not up-to-date 。。。” * 解决办法: * 右键项目->maven->maven update * 注意:可能环境会发生变化,记得重新把环境设置为1.8 * 骨架错误 * 暴力解决:删除重新执行【自动下载】 * 原因: * 文件损坏 * 没有及时刷新 * 其他 ### 数据库 ### * 整体设计 * ![aBGss0N.png][] * 小点注意 * id【字段】 1. int(int) * 优点 1. 性能高 * 缺点 1. 会重复 2. long(bigint) * 优点 1. 性能高 2. 数据存储量比较大 * 缺点 1. 会重复 3. String(varchar) * 优点 1. uuid不重复--针对分布式的数据库 2. 电商系统数据库不是分布式的,而是中央集中的,大量的查询已经被缓存给替代了 * status【字段】 * 0 * 1 * 用处: * 删除数据--伪删除 * 当前的内容可见不可见 * 当前的状态 * 。。。 * parent\_id【字段】 * 父id * 领导 * 上级 * 一般用于表的自关联 * 外键 * 一般数据库中不写外键约束 * 由程序来维护外键的约束 * UUID * 设计需求 * 当数据整合时(各地向全国汇总时) * 为了避免重复数据而导致数据整合失败 * 生成方法 * java自带的UUID.randomUUID ### JPA ### * 不用在mapper.xml文件中写对应关系【解放ResultMap】 * @Table(name="表名") * @Id * 例子 # # @Table(name = "tb_item_cat") public class ItemCat extends BasePojo { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; private long parentId; private String name; private Integer status; private Integer sortOrder; private boolean isParent; //getter/setter方法。。。 } ### 项目搭建 ### * 注:这里涉及到很多原始代码(工具类),这里只展示部分 * 项目整体架子 * ![JeWLzG3.png][] * 涉及到的比较重要的文件配置 * jt\_parent中 * pom文件 # # <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.peng</groupId> <artifactId>jt_parent</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>pom</packaging> <name>jt_parent</name> <url>http://maven.apache.org</url> <properties> <!-- 编码设置 --> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!-- 集中定义依赖版本号 --> <junit.version>4.10</junit.version> <spring.version>4.1.3.RELEASE</spring.version> <mybatis.version>3.2.8</mybatis.version> <mybatis.spring.version>1.2.2</mybatis.spring.version> <mybatis.paginator.version>1.2.15</mybatis.paginator.version> <mysql.version>5.1.32</mysql.version> <bonecp-spring.version>0.8.0.RELEASE</bonecp-spring.version> <druid.version>1.0.9</druid.version> <mapper.version>2.3.2</mapper.version> <pagehelper.version>3.4.2</pagehelper.version> <jsqlparser.version>0.9.1</jsqlparser.version> <slf4j.version>1.6.4</slf4j.version> <jstl.version>1.2</jstl.version> <servlet-api.version>2.5</servlet-api.version> <jsp-api.version>2.0</jsp-api.version> <joda-time.version>2.5</joda-time.version> <commons-lang3.version>3.3.2</commons-lang3.version> <commons-io.version>2.4</commons-io.version> <commons-fileupload.version>1.3.1</commons-fileupload.version> <jackson.version>2.4.2</jackson.version> <httpclient.version>4.3.5</httpclient.version> <jedis.version>2.6.0</jedis.version> </properties> <dependencies> <!-- 单元测试 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> <!-- Spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>${spring.version}</version> </dependency> <!-- Mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>${mybatis.spring.version}</version> </dependency> <dependency> <groupId>com.github.miemiedev</groupId> <artifactId>mybatis-paginator</artifactId> <version>${mybatis.paginator.version}</version> </dependency> <!-- MySql --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.version}</version> </dependency> <!-- 通用Mapper --> <dependency> <groupId>com.github.abel533</groupId> <artifactId>mapper</artifactId> <version>${mapper.version}</version> </dependency> <!-- 分页插件 --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>${pagehelper.version}</version> </dependency> <dependency> <groupId>com.github.jsqlparser</groupId> <artifactId>jsqlparser</artifactId> <version>${jsqlparser.version}</version> </dependency> <!-- 连接池 --> <dependency> <groupId>com.jolbox</groupId> <artifactId>bonecp-spring</artifactId> <version>${bonecp-spring.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${slf4j.version}</version> </dependency> <!-- Jackson Json处理工具包 --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>${jackson.version}</version> </dependency> <!-- httpclient【跨系统调用】 --> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>${httpclient.version}</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpmime</artifactId> <version>4.3.1</version> </dependency> <!-- 消息队列 --> <dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>3.5.1</version> </dependency> <dependency> <groupId>org.springframework.amqp</groupId> <artifactId>spring-rabbit</artifactId> <version>1.4.0.RELEASE</version> </dependency> <!-- JSP相关 --> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>${jstl.version}</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>${servlet-api.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jsp-api</artifactId> <version>${jsp-api.version}</version> <scope>provided</scope> </dependency> <!-- 时间操作组件 --> <dependency> <groupId>joda-time</groupId> <artifactId>joda-time</artifactId> <version>${joda-time.version}</version> </dependency> <!-- Apache工具组件 --> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>${commons-lang3.version}</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-io</artifactId> <version>${commons-io.version}</version> </dependency> <!-- 文件上传组件 --> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>${commons-fileupload.version}</version> </dependency> <!-- jedis --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>${jedis.version}</version> </dependency> <!-- 字符加密、解密 --> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.9</version> </dependency> <!-- 数据校验 --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>5.1.3.Final</version> </dependency> </dependencies> </project> * jt\_commond中 * 基本工具(这部分略) * jt\_manager中 * 配置文件 * 2018-01-12 22:19:08 ![n9U1cOp.png][] * 具体配置 * mybatis-config.xml # # <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <settings> <!-- 开启驼峰自动映射 --> <setting name="mapUnderscoreToCamelCase" value="true" /> <!-- 二级缓存的总开关 --> <setting name="cacheEnabled" value="false" /> </settings> <plugins> <!-- 分页插件:com.github.pagehelper为PageHelper类所在包名 --> <plugin interceptor="com.github.pagehelper.PageHelper"> <!-- 方言 --> <property name="dialect" value="mysql" /> <!-- 该参数默认为false --> <!-- 设置为true时,使用RowBounds分页会进行count查询,查询数据总条数 --> <property name="rowBoundsWithCount" value="true" /> </plugin> <!-- 通用Mapper插件 :基于拦截器实现(动态的整理SQL) --> <plugin interceptor="com.github.abel533.mapperhelper.MapperInterceptor"> <!--主键自增回写方法,默认值MYSQL,详细说明请看文档 --> <property name="IDENTITY" value="MYSQL" /> <!--通用Mapper接口,多个通用接口用逗号隔开 --> <property name="mappers" value="com.peng.mapper.SysMapper" /> </plugin> </plugins> </configuration> * applicationContext-mybatis.xml # # <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd"> <!-- 构造SqlSessionFactory --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 定义数据源 --> <property name="dataSource" ref="dataSource"/> <!-- mybatis-config.xml --> <property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/> <!-- 别名包 --> <property name="typeAliasesPackage" value="com.peng.pojo"/> <!-- mapper.xml --> <property name="mapperLocations" value="classpath:mybatis/mappers/*.xml"/> </bean> <!-- 定义Mapper接口扫描器 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- 扫描mapper包 --> <property name="basePackage" value="com.peng.mapper"/> </bean> </beans> * applicationContext-transaction.xml # # <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd"> <!-- 定义事务管理器 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <!-- 定义事务策略 --> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <!--定义查询方法都是只读的 --> <tx:method name="query*" read-only="true" /> <tx:method name="find*" read-only="true" /> <tx:method name="get*" read-only="true" /> <!-- 主库执行操作,事务传播行为定义为默认行为 --> <tx:method name="save*" propagation="REQUIRED" /> <tx:method name="update*" propagation="REQUIRED" /> <tx:method name="delete*" propagation="REQUIRED" /> <!--其他方法使用默认事务策略 --> <tx:method name="*" /> </tx:attributes> </tx:advice> <aop:config> <!-- 定义切面,所有的service的所有方法 --> <aop:pointcut id="txPointcut" expression="execution(* com.peng.service.*.*(..))" /> <!-- 应用事务策略到Service切面 --> <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/> </aop:config> </beans> * appicatiionContext.xml # # <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd"> <!-- 使用spring自带的占位符替换功能,可以实现注解方式获取属性文件中的配置值 --> <bean class="com.peng.spring.exetend.ExtendedPropertyPlaceholderConfigurer"> <!-- 允许JVM参数覆盖 --> <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" /> <!-- 忽略没有找到的资源文件 --> <property name="ignoreResourceNotFound" value="true" /> <!-- 配置资源文件 --> <property name="locations"> <list> <value>classpath:jdbc.properties</value> <value>classpath:env.properties</value> </list> </property> </bean> <!-- 扫描包 --> <context:component-scan base-package="com.peng" /> <!-- 配置连接池 --> <bean id="dataSource" class="com.jolbox.bonecp.BoneCPDataSource" destroy-method="close"> <!-- 数据库驱动 --> <property name="driverClass" value="${jdbc.driver}" /> <!-- 相应驱动的jdbcUrl --> <property name="jdbcUrl" value="${jdbc.url}" /> <!-- 数据库的用户名 --> <property name="username" value="${jdbc.username}" /> <!-- 数据库的密码 --> <property name="password" value="${jdbc.password}" /> <!-- 检查数据库连接池中空闲连接的间隔时间,单位是分,默认值:240,如果要取消则设置为0 --> <property name="idleConnectionTestPeriod" value="60" /> <!-- 连接池中未使用的链接最大存活时间,单位是分,默认值:60,如果要永远存活设置为0 --> <property name="idleMaxAge" value="30" /> <!-- 每个分区最大的连接数 --> <property name="maxConnectionsPerPartition" value="150" /> <!-- 每个分区最小的连接数 --> <property name="minConnectionsPerPartition" value="5" /> </bean> </beans> * springmvc-config.xml # # <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- MVC注解驱动 --> <mvc:annotation-driven/> <!-- 配置扫描器,使得@Controller注解生效 --> <context:component-scan base-package="com.peng.controller" /> <!-- 定义视图解析器 --> <!-- prefix="/WEB-INF/jsp/", suffix=".jsp", viewname="test" -> "/WEB-INF/jsp/test.jsp" --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 前缀 --> <property name="prefix" value="/WEB-INF/views/" /> <!-- 后缀 --> <property name="suffix" value=".jsp" /> </bean> <!-- 处理静态资源被“/”所拦截的问题 --> <mvc:default-servlet-handler /> <!-- 定义文件上传解析器 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 设定默认编码 --> <property name="defaultEncoding" value="UTF-8"></property> <!-- 设定文件上传的最大值10MB,10*1024*1024 --> <property name="maxUploadSize" value="10485760"></property> </bean> </beans> * env.properties # # REPOSITORY_PATH=c:\\jt-upload IMAGE_BASE_URL=http://image.jt.com * jdbc.properties # # jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://127.0.0.1:3306/jtdb?useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true jdbc.username=root jdbc.password=root * log4j.properties # # log4j.rootLogger=DEBUG,A1 log4j.logger.org.mybatis = DEBUG log4j.appender.A1=org.apache.log4j.ConsoleAppender log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c]-[%p] %m%n ### 其他注意事项 ### * mapper.xml文件的字段名和属性的映射用JPA写、 * 即在pojo中直接加注解 * @Table(name="数据库名") * @Id() * @GeneratedValue(strategy=GenerationType.IDENTITY) * @Column(name="字段名") * 例 * ![6tVXios.png][] [2XHzMoi.png]: https://i.imgur.com/2XHzMoi.png [aGuAuSb.png]: https://i.imgur.com/aGuAuSb.png [QT29Ye8.png]: https://i.imgur.com/QT29Ye8.png [jMzZUSB.png]: https://i.imgur.com/jMzZUSB.png [6j3FVSB.png]: https://i.imgur.com/6j3FVSB.png [nlSHAd6.png]: https://i.imgur.com/nlSHAd6.png [oxLxVCm.png]: https://i.imgur.com/oxLxVCm.png [aBGss0N.png]: https://i.imgur.com/aBGss0N.png [JeWLzG3.png]: https://i.imgur.com/JeWLzG3.png [n9U1cOp.png]: https://i.imgur.com/n9U1cOp.png [6tVXios.png]: https://i.imgur.com/6tVXios.png
相关 大数据正式京淘3 大数据正式京淘3 EasyUI简介 文档 每个组件的easyui有属性、方法和事件。用户可以方便地扩展。 属性 Dear 丶/ 2022年06月02日 12:51/ 0 赞/ 221 阅读
相关 大数据正式京淘2 大数据正式京淘2 项目统一 编码:UTF-8 环境:JDK1.8 Maven:3.5 数据库:5.5 项目支撑系统搭建 新建w 末蓝、/ 2022年06月02日 12:27/ 0 赞/ 202 阅读
相关 大数据正式京淘正式14 大数据正式京淘正式14 传统的检索方式 1.文本检索/windows检索 全文检索、全文遍历 加载到内存中 缺点:数据一多,无法高效查询 蔚落/ 2022年06月01日 13:54/ 0 赞/ 173 阅读
相关 大数据正式京淘13 大数据正式13 定时任务 防止恶意订单 在订单提交之后,没有支付,但是订单没有生成效益,却减少了库存,如果大量生成这种订单,库存到0, 青旅半醒/ 2022年06月01日 12:43/ 0 赞/ 55 阅读
相关 大数据正式京淘10 大数据正式京淘10 数据库的读写分离 电商项目京淘项目的瓶颈有哪些 1. 数据库瓶颈 2. IO【图片(文件)的上传】 我就是我/ 2022年06月01日 07:19/ 0 赞/ 216 阅读
相关 大数据正式京淘9 大数据正式京淘9 redis集群总结 引入槽道:14384个虚拟槽道,扩展节点,无需修改代码 删除节点 1. 线路割接 2. 心已赠人/ 2022年06月01日 06:23/ 0 赞/ 235 阅读
相关 大数据正式京淘7 大数据正式京淘7 解决入口流量--NGINX的集群分配问题 解决:配置多台DNS域名解析器 图解 ![lzglcWQ.png][ ╰半橙微兮°/ 2022年06月01日 04:37/ 0 赞/ 174 阅读
相关 大数据正式京淘6 大数据正式京淘6 Redis基础命令 set key value【修改值】 incr key【自增】 decr key【自减】 incrby 秒速五厘米/ 2022年06月01日 02:30/ 0 赞/ 191 阅读
相关 大数据正式京淘4 大数据正式京淘4 数据库性能 数据库需要维护外键的内部关联(if语句,用代码关联) 涉及外键的操作增删改查,判断外键消耗资源 外键存在导致数据库的 冷不防/ 2022年06月01日 00:23/ 0 赞/ 73 阅读
还没有评论,来说两句吧...