自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

geomon的博客

来自学习者的博客

  • 博客(155)
  • 资源 (15)
  • 收藏
  • 关注

原创 Java如何对一个对象进行深拷贝?

Java如何对一个对象进行深拷贝

2022-08-08 14:51:03 2536 1

转载 CMS GC启动参数优化配置

简介:#java启动参数共分为三类;其一是标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容;其二是非标准参数(-X),默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容;其三是非Stable参数(-XX),此类参数各个jvm实现会有所不同,将来可能会随时取消,需要慎重使用;-XX:+<option> 启用option,例如:-XX:+PrintGCDetails启动打印GC信息的选项,其中+号表示true,开启的意思-XX:-

2022-03-28 19:03:50 681

转载 synchronized详解

前言synchronized,是解决并发情况下数据同步访问问题的一把利刃。那么synchronized的底层原理是什么呢?下面我们来一层一层剥开它的心,就像剥洋葱一样,看个究竟。github.com/whx123/Java…Synchronized的使用场景synchronized关键字可以作用于方法或者代码块,最主要有以下几种使用方式,如图:接下来,我们先剥开synchronized的第一层,反编译其作用的代码块以及方法。synchronized作用于代码块.

2022-03-09 22:38:33 1300

原创 说说互斥锁、自旋锁、读写锁、悲观锁、乐观锁的应用场景

自旋锁是最比较简单的一种锁,一直自旋,利用 CPU 周期,直到锁可用。需要注意,在单核 CPU 上,需要抢占式的调度器(即不断通过时钟中断一个线程,运行其他线程)。否则,自旋锁在单 CPU 上无法使用,因为一个自旋的线程永远不会放弃 CPU。自旋锁开销少,在多核系统下一般不会主动产生线程切换,适合异步、协程等在用户态切换请求的编程方式,但如果被锁住的代码执行时间过长,自旋的线程会长时间占用 CPU 资源,所以自旋的时间和被锁住的代码执行的.

2022-03-09 22:34:17 410

原创 Java之jvm和线程的内存

在jvm内存调整过程中,我们经常使用的参数就是: -Xms为jvm启动时分配的初始堆的大小,也是堆大小的最小值,比如-Xms200m,表示分配200M -Xmx为jvm运行过程中分配的最大堆内存,比如-Xmx500m,表示jvm进程最多只能够占用500M内存 -Xss为jvm启动的每个线程分配的内存大小,默认JDK1.4中是256K,JDK1.5+中是1M 一般jvm出现Cannt’ allocate memory的错误就是机器的内存不够,导致系统无法...

2022-03-09 22:33:16 1893

原创 Mac ERROR launching JD-GUI

更新系统后,打开jd-gui报如下错误:ERROR launching 'JD-GUI'No suitable Java version found on your system!This program requires Java 1.8+Make sure you install the required Java version.解决办法:1、右键JD_GUI图标,显示包内容2、找到文件universalJavaApplicationStub 文件,使用文本编辑器打开

2021-12-14 20:02:52 919

原创 Java中静态代码块、构造代码块、构造函数、普通代码块

1

2021-10-16 17:54:07 387

原创 elastic-job-lite运维管理界面

下载编译最新elastic-job地址https://github.com/apache/shardingsphere-elasticjob $ git clone https://github.com/elasticjob/elastic-job-lite.git $ cd elastic-job-lite $ mvn clean install -Dmaven.test.skip=true 编译完毕后会生成一个压缩包,这里的版本是以3.0.0.M1为例。$ ls

2021-02-05 18:22:07 1534

原创 jq 监听select 选中值

<select id="select_id" lay-ignore> <option value="1" selected>Frist Time</option> <option value="2">Second time </option> <opt.

2021-01-09 20:37:47 3401 2

原创 Java 嵌套类基础详解

Java 嵌套类基础详解目录1. 什么是嵌套类? 2. 为什么要使用嵌套类? 3. 嵌套类的类型 4. 静态嵌套类 5. 非静态嵌套类 5.1 成员内部类 5.2 局部内部类 5.3 匿名内部类 6. 嵌套接口1. 什么是嵌套类?在 Java 语言中允许在另外一个类中定义一个类,这样的类被称为嵌套类。包含嵌套类的类称为外部类(outer class),也可以叫做封闭类,在本文中统一叫做外部类。内部类的语法:class OuterClass { ..

2020-11-07 17:31:16 938

原创 SpringBoot替换jar包中引用的jar包(Unable to open nested entry ‘BOOT-INF/lib/**.jar‘. It has been compressed)

背景spring boot项目,使用jar方式打包部署需求有时候我们需要替换项目中某个引用jar,又不想将整个项目重新打包。问题通过一般方式,用好压等压缩软件直接打开jar包,如果直接替换.class、.html、.yml格式的文件,可正常替换成功并生效。但是替换jar包中引用的jar包,用这样的方式是不可以的,在替换完成后启动项目,会报以下错误:Caused by: java.lang.IllegalStateException: Unable to open nested e

2020-10-27 18:35:35 5559 7

原创 Shell 脚本启动jar包

#!/bin/bash#这里可替换为你自己的执行程序,其他代码无需更改APP_NAME=epas.jar#使用说明,用来提示输入参数usage() { echo "Usage: sh demo.sh [start|stop|restart|status]" exit 1}#检查程序是否在运行is_exist() { pid=`ps -ef | grep $APP_NAME | grep -v grep | awk '{print $2}' ` #如果不存.

2020-10-27 18:31:14 2403 1

原创 解决百度网盘二维码加载不出来问题

win+R运行 inetcpl.cpl 点击上方的高级, 点击下面重置, 勾选删除个人配置 ,重置就好。

2020-07-26 10:26:50 41232 20

原创 去除字符串的首尾空格(全角,半角)

/** * 去除空格(全角|半角),其中\\s后的全角空格=\\u3000 * @param source * @return */private String trimSpace(String source) { return source == null ? source : source.replaceAll("^[\\s ]*|[\\s ]*$", "");}@Testpublic void testTrimSpace() { assertEquals("..

2020-07-20 15:59:04 706

转载 G1 垃圾收集器配置参数

如下列表为 G1 GC垃圾收集器常用配置参数:可选项及默认值 描述 -XX:+UseG1GC 采用 Garbage First (G1) 收集器 -XX:MaxGCPauseMillis=n 设置最大GC 暂停时间。这是一个大概值,JVM 会尽可能的满足此值 -XX:InitiatingHeapOccupancyPercent=n 设置触发标记周期的 Java 堆占用率阈值。默认占用率是整个 Java 堆的 45%。默认值 45. -XX:NewR

2020-06-23 18:41:44 2474

原创 收集免费的接口服务,做一个api的搬运工

为了方便广大的开发者,特此统计了网上诸多的免费API,为您收集免费的接口服务,做一个api的搬运工,以后会每月定时更新里面的接口。有些接口来自第三方,在第三方注册就可以成为他们的会员,免费使用他们的部分接口。https://github.com/fangzesheng/free-api...

2020-05-05 21:36:59 423

原创 Git 快捷键的操作指南包

浏览地址:https://www.git-tower.com/blog/git-cheat-sheet/

2020-05-05 20:53:02 236

原创 为什么说Enum实现单例模式是最佳实践

在《Effective Java》中,作者提出利用Enum是实现单例模式的最佳实践。本文从Enum单例特点及Enum反编译源码介绍了解Enun单例。实现单例模式几个特点无法通过new来随意创建对象,构造函数为private 提供获取唯一实例对象的方法,通常是getInstance 多线程并发的情况下保证唯一 避免反射创建单例对象(反射攻击) 避免通过序列化创建单例对象(如果单例类实...

2020-05-03 15:35:15 470

原创 深挖nginx 限流配置

nginx 限流配置限流算法令牌桶算法算法思想是:令牌以固定速率产生,并缓存到令牌桶中; 令牌桶放满时,多余的令牌被丢弃; 请求要消耗等比例的令牌才能被处理; 令牌不够时,请求被缓存。漏桶算法算法思想是:水(请求)从上方倒入水桶,从水桶下方流出(被处理); 来不及流出的水存在水桶中(缓冲),以固定速率流出; 水桶满后水溢出(丢弃)。 这个算法的核心是:...

2020-05-03 13:59:57 212

原创 Nginx直接返回Json的实例

Nginx直接返回Json的实例下面小编就为大家分享一篇Nginx直接返回Json的实例,我们这次拿limit_req_zone 限流规则为案例。具有很好的参考价值,希望对大家有所帮助。如有疑问可留言。 server { listen 80; server_name test.com; location /rest/ { ...

2020-05-03 13:47:37 1645

原创 浅谈敏捷开发

浅谈敏捷开发敏捷开发(agile development)是非常流行的软件开发方法。据统计,2018年90%的软件开发采用敏捷开发。但是,到底什么是敏捷开发,能说清的人却不多。本文尝试用简洁易懂的语言,解释敏捷开发。章节什么是敏捷开发(What)为什么使用敏捷开发 (Why)如何使用敏捷开发 (How)采用敏捷开发的产品开发效果1.什么是敏捷开发(What)1.1 迭代开发...

2020-04-11 14:26:37 952

原创 Java 14 开箱 新玩法

Java 14 开箱 新玩法JDK14下载链接:http://jdk.java.net/14/JDK14 RELEASE_NOTE: http://jdk.java.net/14/release-notesJDK14 Features: http://openjdk.java.net/projects/jdk/14/Java 14 已经发布有两周时间了,接下里我们一起来看看JDK14中的...

2020-04-05 16:58:55 197

转载 Java 程序该怎么优化?工具篇

Java 程序该怎么优化?工具篇程序员:为什么程序总是那么慢?时间都花到哪里去了?面试官:若你写的 Java 程序,出现了性能问题,该怎么去排查呢?工欲善其事必先利其器,为你呈上一箩筐性能优化工具,必有一款满足你,废话不多说,直奔主题。1. hprof 工具hprof 工具是通过织入监控代码,来对 Java 程序进行监控的一款工具。可以监控 Java 程序在运行时占用的 CPU,及统...

2020-04-05 14:43:33 139

原创 安利一波window好用的工具

安利一波window好用的工具好用的工具可以帮助大家提高生产效率,以下是常用的window便捷工具。NO、1 ScreenToGif屏幕,摄像头和白板录像机集成编辑器不知道这个有多少人听说过,或者用过,反正我是爱了,没办法,它就是这么的优秀,软件下载下来之后打开是这样的:NO、2 Bandizip应该不少人用过吧,不过,也许就你不知道啊,哈哈????,这是个解压缩软件,之前一直被人安利...

2020-04-05 10:58:26 417

转载 JDK9新特性详解

1、Java9新特性之目录结构包含jdk8及以前的jdk版本,所有目录结构以及目录含义如图:​ jdk9之后,目录结构发生变化如图:这个新特性只要了解下就可以了,这个目录结构是方便为了接下来新特性做保证2、Java9新特性之JShell工具怎么理解,怎么用呢?这个只是针对于java9来说,相当于cmd工具,你可以和cmd一样,直接写方法等等,不过我认为只是适用于初学者做一些最...

2020-04-04 21:53:56 400

转载 JDK8新特性详解

JDK8新特性详解本文将介绍JDK8的四个主要新特性:Lambda、Stream、Date、新注解,前两者主要用于集合中。1、Lambda演变过程@Data@ToString@NoArgsConstructor@AllArgsConstructorpublic class Student { //名字 private String name; //性别 ...

2020-04-04 21:30:12 606

原创 解决jenkins中运行docker无权限问题 以root用户运行jenkins中shell命令

以centOS系统为例,如采取的yum 安装jenkins ,默认安装到/var/lib 下,记录下修改Jenkins以root用户运行的方法。修改Jenkins配置文件# 打开配置文件vim /etc/sysconfig/jenkins# 修改$JENKINS_USER,并去掉当前行注释$JENKINS_USER="root"修改Jenkins相关文件夹用户权限...

2019-11-29 17:59:09 6152 1

转载 成为一流软件开发者的 34 条建议

我们列出了一张包含 34 条建议的清单,来帮助你成为一流的软件开发者,在技术行业中打造出成功的职业生涯。这些建议中,有一些是特别针对增强编程技能的,其他的一些建议则是软件开发职业生涯中的软技能,还有些甚至能够帮助你成为一个更好的人。1. 规划方法 & 在编码前先写伪代码当你试图构建一个项目或者完成一个任务时,如果没有规划就直接开始编写代码,可能会浪费大量时间,还会经历很多不同程...

2019-11-14 15:32:56 276

转载 JVM调优总结 -Xms -Xmx -Xmn -Xss

Xms 是指设定程序启动时占用内存大小。一般来讲,大点,程序会启动的快一点,但是也可能会导致机器暂时间变慢。Xmx 是指设定程序运行期间最大可占用的内存大小。如果程序运行需要占用更多的内存,超出了这个设置值,就会抛出OutOfMemory异常。Xss 是指设定每个线程的堆栈大小。这个就要依据你的程序,看一个线程大约需要占用多少内存,可能会有多少线程同时运行等。以上三个参数的设置都是默认...

2019-11-01 17:13:34 511

原创 Twitter的分布式自增ID算法snowflake (Java版)

:0 - 0000000000 0000000000 0000000000 0000000000 0 - 00000 - 00000 - 000000000000第一位为未使用,接下来的41位为毫秒级时间(41位的长度可以使用69年),然后是5位datacenterId和5位workerId(10位的长度最多支持部署1024个节点) ,最后12位是毫秒内的计数(12位的计数顺序号支持每个节...

2019-10-13 20:45:04 134

原创 ShardingSphere in ApacheCon LasVega

9月9号至12号,ApacheCon 2019在拉斯维加斯如期而至。Apache ShardingSphere社区作为Apache基金会的孵化项目全程参与了本次会议。文章发布时,为期4天的会议刚刚结束第2天,本文将ApacheCon的点滴进行记录,并和大家分享,希望能带读者一同感受下世界最顶级的开源基金会举办的技术大会氛围。拉斯维加斯印象 First impression...

2019-09-16 10:24:09 251

原创 github----向开源框架提交pr的过程

github----向开源框架提交pr的过程1. 先来复习下新本地文件到远程仓库过程第一步:创建本地文件夹,并初始化。git init第二步:在Github上创建一个空的repository(仓库),按照提示输入以下命令。git remote add origin git@github.com:你的用户名/仓库名.git 第三步:提交修改后的文件,如创建了一个新的文件,或者修...

2019-09-08 15:16:42 1568 1

原创 Apache 开源项目 | 分布式数据库中间件 ShardingSphere 4.0.0-RC2发布

处暑无三日,新凉直万金。处暑之日,Apache ShardingSphere 4.0.0-RC2已经发布,欢迎测试使用!本次发布的4.0.0-RC2版本将前不久发布的4.0.0-RC1版本的核心功能不断打磨优化,修复社区反馈的问题,且持续进行微内核重构打磨;在社区建设方面,不断践行Apache Way,致力于打造充满活力、规范、互助的社区。❖❖CHAPTER 1前序Ap...

2019-09-03 20:06:16 484

原创 DQL、DML、DDL、DCL的概念与区别

1. 数据查询语言DQL数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE子句组成的查询块:SELECT <字段名表>FROM <表或视图名>WHERE <查询条件>2 .数据操纵语言DML(data manipulation language)数据操纵语言DML主要有三种形式:1) 插入:INSERT2) 更新:UPDAT...

2019-08-27 18:33:35 550

转载 MYSQL5.7版本sql_mode=only_full_group_by问题

目录具体出错提示: 1、查看sql_mode 查询出来的值为: 2、去掉ONLY_FULL_GROUP_BY,重新设置值。 3、上面是改变了全局sql_mode,对于新建的数据库有效。对于已存在的数据库,则需要在对应的数据下执行: 解决办法大致有两种: 二:修改my.cnf(windows下是my.ini)配置文件,删掉only_full_gr...

2019-08-26 16:17:06 275

转载 Mybatis3.3.x技术内幕(十五):Mybatis之foreach批量insert,返回主键id列表(修复Mybatis返回null的bug)

Mybatis在执行批量插入时,如果使用的是for循环逐一插入,那么可以正确返回主键id。如果使用动态sql的foreach循环,那么返回的主键id列表,可能为null,这让很多人感到困惑;本文将分析问题产生的原因,并修复返回主键id为null的问题。该问题在开源中国社区,以及网络上,已经有很多人遇到并发帖咨询,似乎都没有得到期望的解决结果。今天,我将带领大家,分析并解决该问题,让foreach批...

2019-08-17 17:07:57 377

转载 谈谈Redis的SETNX

在 Redis 里,所谓SETNX,是「SETifNot eXists」的缩写,也就是只有不存在的时候才设置,可以利用它来实现锁的效果,不过很多人没有意识到 SETNX 有陷阱!比如说:某个查询数据库的接口,因为调用量比较大,所以加了缓存,并设定缓存过期后刷新,问题是当并发量比较大的时候,如果没有锁机制,那么缓存过期的瞬间,大量并发请求会穿透缓存直接查询数据库,造成雪崩效应,如果有...

2019-07-22 09:23:13 906

转载 Spring Cloud 组件解读

目录一、业务场景介绍二、Spring Cloud核心组件:Eureka三、Spring Cloud核心组件:Feign四、Spring Cloud核心组件:Ribbon五、Spring Cloud核心组件:Hystrix六、Spring Cloud核心组件:Zuul七、总结概述毫无疑问,Spring Cloud是目前微服务架构领域的翘楚,无数的书籍博客都在...

2019-07-18 11:09:01 219

转载 简单聊聊SOA和微服务

简单聊聊SOA和微服务架构设计中的朴素主义前两天和一个朋友聊天,他向我咨询如何从零开始构建一个健壮、强大的软件系统,聊着聊着他忽然问我,「听大家都在说微服务(下文中有的地方会使用MSA),还有人会提到SOA,那么他们的区别到底在哪里?」。我想了想,一时也列不出来一个详细的列表,只能跟他讲说其实他们在概念上是相似的。关于软件系统的架构设计,是一个太多人喜欢讨论的问题,尤其...

2019-07-16 23:17:07 170

转载 干货满满!10分钟看懂Docker和K8S

2010年,几个搞IT的年轻人,在美国旧金山成立了一家名叫“dotCloud”的公司。这家公司主要提供基于PaaS的云计算技术服务。具体来说,是和LXC有关的容器技术。LXC,就是Linux容器虚拟技术(Linux container)后来,dotCloud公司将自己的容器技术进行了简化和标准化,并命名为——Docker。Docker技术诞生之后,并没有引起行业的关注。...

2019-07-16 23:06:47 245

基于百度api使用js实现的人脸识别Demo.zip

基于百度api使用js实现的人脸识别 简单上手

2020-05-02

超清原版《Python深度学习》2018中文版pdf+英文版pdf+源代码

Keras之父、谷歌大脑人工智能和深度学习研究员François Chollet 近日接受采访,对自己的新书《Python深度学习》、Python为何广受欢迎、深度学习面临的挑战等议题进行回答。他认为,大多数深度学习论文都没有遵循科学的研究方法,并未产出有意义的新知识,学术界应该更严

2019-03-18

深度学习入门:基于Python的理论与实现_高清+源代码

第一章:python入门;第二章:感知机;第三章:神经网络;第四章:神经网络的学习......等

2018-12-05

2018人工智能培训资料(机器视觉)

2018人工智能培训资料(机器视觉):安装python3.6.4工具,安装pip工具,安装pycharm,编写运行helloword程序,静态人脸识别案例,动态人脸识别案例,人脸检测案例

2018-12-02

《TensorFlow实战Google深度学习框架(第2版)》源代码详细《TensorFlow实战Google深度学习框架(第2版)》源代码详细

2018人工智能培训资料(机器视觉):安装python3.6.4工具,安装pip工具,安装pycharm,编写运行helloword程序,静态人脸识别案例,动态人脸识别案例,人脸检测案例

2018-12-02

全套EasyUI示例源码 百度网盘链接 详细

一整套EasyUI的示例源码,三十几个组件全部包括在内.学习 详细 转载

2018-09-04

Hadoop+Spark大数据巨量分析与机器学习

Hadoop+Spark大数据巨量分析与机器学习 整合开发实战 书本源码 练习 详细

2018-09-04

2018最新JAVA架构师培训视频教程(附笔记、源码 、视频 网盘链接 详细)

018最新JAVA架构师培训视频教程(附笔记、源码、视频教程 全网盘链接) 内含完整资料及代码: 一、互联网并发编程 二、互联网网络通信编程 三、JAVA虚拟机 四、Linux部分 五、数据库设计与优化 六、互联网中间件架构设计 七、互联网框架应用 八、互联网分布式综合项目实战(转载)

2018-08-21

《Tensorflow:实战Google深度学习框架》高清完整PDF版 网盘链接

《Tensorflow:实战Google深度学习框架》为使用TensorFlow深度学习框架的入门参考书使用,帮助读者以最快、最有效的方式上手TensorFlow和深度学习。书中省略了深度学习繁琐的数学模型推导,从实际应用问题出发,通过具体的TensorFlow样例程序介绍如何使用深度学习解决这些问题。《Tensorflow:实战Google深度学习框架》包含了深度学习的入门知识和大量实践经验,是走进这个最新、最火的人工智能领域的首选参考书。

2018-08-17

后台页面UI 模板详细 INSPINIA 2.7.1汉化版

后台页面UI 模板详细 INSPINIA 2.7.1汉化版,完整参考使用

2018-08-15

前台UI 框架 源码 bootstrup 后台页面 H+4.2正版源码

前台UI 框架 源码 bootstrup 后台页面 H+4.2正版源码

2018-08-15

最新Java面试题附答案

最新Java面试题(附答案,供学习参考使用,利用好资源

2018-08-15

100家大公司 java笔试题 汇总

100家大公司java笔试题汇总,供参考学习用。利用好资源,以求进步

2018-08-15

t淘淘商城项目 商城项目 视频和源码教程 详细

淘淘商城 第一天 讲师:传智.入云龙 1. 聊聊电商行业 1.1. 电商行业发展     近年来,中国的电子商务快速发展,交易额连创新高,电子商务在各领域的应用不断拓展和深化、相关服务业蓬勃发展、支撑体系不断健全完善、创新的动力和能力 不断增强。电子商务正在与实体经济深度融合,进入规模性发展阶段,对经济社会生活的影响不断增大,正成为我国经济发展的新引擎。     中国电子商务研究中心数据显示,截止到2012年底,中国电子商务市场交易规模达7.85万亿人民币,同比增长30.83%。其中,B2B电子商务交易额 达6.25万亿,同比增长27%。而2011年全年,中国电子商务市场交易额达6万亿人民币,同比增长33%,占GDP比重上升到13%;2012年,电 子商务占GDP的比重已经高达15%。预计2013年我国电子商务规模将突破十万亿大关。      图1.2009-2014年中国电子商务市场交易规模(万亿元) 1.2. 11.11 1.3. 电商行业技术特点 Ø 技术新 Ø 技术范围广 Ø 分布式 Ø 高并发、集群、负载均衡、高可用 Ø 海量数据 Ø 业务复杂 Ø 系统安全 2. 淘淘商城 2.1. 淘淘商城简介 淘淘网上商城是一个综合性的B2C平台,类似京东商城、天猫商城。会员可以在商城浏览商品、下订单,以及参加各种活动。 管理员、运营可以在平台后台管理系统中管理商品、订单、会员等。 客服可以在后台管理系统中处理用户的询问以及投诉。 2.2. 功能架构 2.2.1. 系统功能图 2.2.2. 功能描述 后台管理系统:管理商品、订单、类目、商品规格属性、用户管理以及内容发布等功能。 前台系统:用户可以在前台系统中进行注册、登录、浏览商品、首页、下单等操作。 会员系统:用户可以在该系统中查询已下的订单、收藏的商品、我的优惠券、团购等信息。 订单系统:提供下单、查询订单、修改订单状态、定时处理订单。 搜索系统:提供商品的搜索功能。 单点登录系统:为多个系统之间提供用户登录凭证以及查询登录用户的信息。 2.3. 技术架构 2.3.1. 传统架构 思考:有什么问题? 1、 模块之间耦合度太高,其中一个升级其他都得升级 2、 开发困难,各个团队开发最后都要整合一起 3、 系统的扩展性差 4、不能灵活的进行分布式部署。 2.3.2. 分布式系统架构 分布式架构: 把系统按照模块拆分成多个子系统。 优点: 1、把模块拆分,使用接口通信,降低模块之间的耦合度。 2、把项目拆分成若干个子项目,不同的团队负责不同的子项目。 3、增加功能时只需要再增加一个子项目,调用其他系统的接口就可以。 4、可以灵活的进行分布式部署。 缺点: 系统之间交互需要使用远程通信,接口开发增加工作量。 2.3.3. 技术选型(主要技术) l Spring、SpringMVC、Mybatis l JSP、JSTL、jQuery、jQuery plugin、EasyUI、KindEditor(富文本编辑器)、CSS+DIV l Redis(缓存服务器) l Solr(搜索) l httpclient(调用系统服务) l Mysql l Nginx(web服务器) 2.4. 开发工具和环境 Eclipse 4.5.0(Mars),自带maven插件,需要手工安装svn插件。 Maven 3.3.3(开发工具自带) Tomcat 7.0.53(Maven Tomcat Plugin) JDK 1.7 Mysql 5.6 Nginx 1.8.0 Redis 3.0.0 Win7 操作系统 SVN(版本管理) 2.5. 人员配置 产品经理:3人,确定需求以及给出产品原型图。 项目经理:1人,项目管理。 前端团队:5人,根据产品经理给出的原型制作静态页面。 后端团队:20人,实现产品功能。 测试团队:5人,测试所有的功能。 运维团队:3人,项目的发布以及维护。 3. 后台管理系统工程结构 3.1. maven管理的好处 1、项目构建。Maven定义了软件开发的整套流程体系,并进行了封装,开发人员只需要指定项目的构建流程,无需针对每个流程编写自己的构建脚本。 2、依赖管理。除了项目构建,Maven最核心的功能是软件包的依赖管理,能够自动分析项目所需要的依赖软件包,并到Maven中心仓库去下载。 A)管理依赖的jar包 B)管理工程之间的依赖关系。 3.2. Maven本地仓库 在当前系统用户的文件夹下。例如当前用户是Administrator那么本地仓库就是在 C:\Users\Administrator\.m2目录下。 只需要用老师提供的.m2覆盖本地的就可以。 Maven插件使用eclipse mars自带maven插件。只需要统一开发环境。 3.3. 依赖管理 传统工程结构: Maven管理的工程结构: 不使用maven:工程部署时需要手动复制jar包。完成工程构建。非常繁琐。 使用maven进行工程构建: 使用maven可以实现一步构建。 3.3.1. 后台管理系统的工程结构 继承: 依赖: 后台管理系统工程结构: taotao-parent -- 管理依赖jar包的版本,全局,公司级别 |--taotao-common  --- 通用组件、工具类 |--taotao-manage  -- 后台系统   |--com.taotao.manage.web   |--com.taotao.manage.service   |--com.taotao.manage.mapper   |--com.taotao.manage.pojo 3.4. 创建taotao-parent 3.4.1. 创建maven工程 3.4.2. 修改pom文件 4.0.0 com.taotao taotao-parent 0.0.1-SNAPSHOT pom &lt;!-- 集中定义依赖版本号 --&gt; 4.12 4.1.3.RELEASE 3.2.8 1.2.2 1.2.15 5.1.32 1.6.4 2.4.2 1.0.9 4.3.5 1.2 2.5 2.0 2.5 3.3.2 1.3.2 3.3 3.4.2-fix 0.9.1 1.3.1 2.7.2 4.10.3 &lt;!-- 时间操作组件 --&gt; joda-time joda-time ${joda-time.version} &lt;!-- Apache工具组件 --&gt; org.apache.commons commons-lang3 ${commons-lang3.version} org.apache.commons commons-io ${commons-io.version} commons-net commons-net ${commons-net.version} &lt;!-- Jackson Json处理工具包 --&gt; com.fasterxml.jackson.core jackson-databind ${jackson.version} &lt;!-- httpclient --&gt; org.apache.httpcomponents httpclient ${httpclient.version} &lt;!-- 单元测试 --&gt; junit junit ${junit.version} test &lt;!-- 日志处理 --&gt; org.slf4j slf4j-log4j12 ${slf4j.version} &lt;!-- Mybatis --&gt; org.mybatis mybatis ${mybatis.version} org.mybatis mybatis-spring ${mybatis.spring.version} com.github.miemiedev mybatis-paginator ${mybatis.paginator.version} com.github.pagehelper pagehelper ${pagehelper.version} &lt;!-- MySql --&gt; mysql mysql-connector-java ${mysql.version} &lt;!-- 连接池 --&gt; com.alibaba druid ${druid.version} &lt;!-- Spring --&gt; org.springframework spring-context ${spring.version} org.springframework spring-beans ${spring.version} org.springframework spring-webmvc ${spring.version} org.springframework spring-jdbc ${spring.version} org.springframework spring-aspects ${spring.version} &lt;!-- JSP相关 --&gt; jstl jstl ${jstl.version} javax.servlet servlet-api ${servlet-api.version} provided javax.servlet jsp-api ${jsp-api.version} provided &lt;!-- 文件上传组件 --&gt; commons-fileupload commons-fileupload ${commons-fileupload.version} &lt;!-- Redis客户端 --&gt; redis.clients jedis ${jedis.version} &lt;!-- solr客户端 --&gt; org.apache.solr solr-solrj ${solrj.version} ${project.artifactId} &lt;!-- 资源文件拷贝插件 --&gt; org.apache.maven.plugins maven-resources-plugin 2.7 UTF-8 &lt;!-- java编译插件 --&gt; org.apache.maven.plugins maven-compiler-plugin 3.2 1.7 1.7 UTF-8 &lt;!-- 配置Tomcat插件 --&gt; org.apache.tomcat.maven tomcat7-maven-plugin 2.2 3.4.3. 将taotao-parent安装到本地仓库。 3.5. taotao-common 3.5.1. 创建工程 3.5.2. 修改pom文件 修改taotao-common工程的pom文件,在文件中添加对taotao-parent的继承。   4.0.0      com.taotao   taotao-parent   0.0.1-SNAPSHOT      com.taotao   taotao-common   0.0.1-SNAPSHOT 3.5.3. 更新工程 工程点击右键→maven→update Project Configuration 3.6. taotao-manage 3.6.1. 创建taotao-manager 修改pom文件: 3.6.2. taotao-manage-pojo 3.6.3. Taotao-manager-mapper 3.6.4. Taotao-manager-service 3.6.5. Taotao-manager-web   1. 配置工程: 2. Web.xml &lt;?xml version="1.0" encoding="UTF-8"?&gt; taotao-manager index.html index.htm index.jsp default.html default.htm default.jsp 3.6.6. 配置tomcat插件 运行web工程需要添加一个tomcat插件。插件必须添加到taotao-manager工程中。因为taotao-manager是聚合工程。在运行时需要把子工程聚合到一起才能运行。 &lt;!-- 配置Tomcat插件 --&gt; org.apache.tomcat.maven tomcat7-maven-plugin 2.2 8080 / 启动tomcat命令:tomcat7:run 3.6.7. taotao-manage子模块依赖关系 依赖关系: web è service service è mapper mapper è pojo 4. 提交代码到SVN 4.1. 提交代码 注意:提交到SVN的Maven项目,只提交src和pom.xml 4.2. 从SVN检出项目 1、 从trunk检出项目,并且重命名项目名称 2、 转化为maven项目 3、 聚合项目中子项目需要从父工程中【导入】,选择 【已经存在的maven项目】,不能从SVN再次检出子项目

2018-08-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除