动力节点CRM项目开发【准备篇】
CRM项目开发【准备篇】
(参考B站视频CRM项目)
01-基本技术框架
视图层(View):展示数据,负责跟用户交互
html
,css
,js
,jquery
,bootstrap
控制层(Controller):控制业务处理流程,(接收请求,接收参数,封装参数;根据不同的请求调用业务层处理业务;根据处理结果,返回响应信息)
Servlet
、SpringMVC
业务层(Service):处理业务逻辑(处理业务的步骤以及操作的原子性)
Spring
、JavaSE
持久层(Dao):操作数据库
MyBatis
02-项目开发流程
招标
甲方、乙方、标书
可行性分析——可行性分析报告
需求分析——需求文档
产品经理:需求调研
项目原型:主要是静态网页,方便确定需求
分析与设计
架构设计——架构文档(架构师)
物理架构设计:如应用服务器、数据库服务器的设计
逻辑架构设计:代码分层(视图层–控制层–业务层–持久层–数据库)
项目设计——项目设计文档(项目经理)
物理模型设计:表、字段、关系
逻辑模型设计:类、属性、方法、返回值和参数、类之间的关系
界面设计:企业级应用一般要求朴素、互联网应用一般要求炫酷一些
算法设计:算法设计文档
搭建开发环境——技术架构文档
编码实现(程序员编码常在的阶段)
测试(程序员编码常在的阶段)
试运行——使用手册
上线—实施时文档
运维——运维手册(国内软件能用到5年的就已经很不错了,运维基本上留个2年就挺好了)
文档编纂
该流程贯穿于上述过程之中,包括标书、可行性分析报告、需求文档、架构文档、项目设计文档、算法设计文档、技术架构文档、使用手册、实施文档、运维手册
03-项目核心业务
CRM项目的简介:
Customer Relationship Management
客户关系管理系统
企业级应用,传统应用;给销售或者贸易型公司使用,在市场、销售、服务等各个环节中维护客户关系。
CRM项目的宗旨:增加新客户,留住老客户,把已有客户转化为忠诚客户。- 传统应用相对的就是互联网应用。
CRM是一类项目,我们的CRM是给一个大型的进出口贸易公司来使用的,做大宗商品的进出口贸易;商品是受国家管制的。
CRM项目的核心业务:
系统管理功能:不是直接处理业务数据,为了保证业务管理的功能正常安全运行而设计的功能。
比如:用户登录、安全退出、登录验证等,给超级管理员,开发和运维人员使用。
业务管理功能:处理业务数据
- 市场活动:市场部,设计市场活动营销活动
- 线索:销售部(初级销售),增加线索
- 客户和联系人:销售部(高级销售),有效地区分和跟踪客户和联系人
- 交易:销售部(高级销售),更好地区分和统计交易的各个阶段。
- 售后回访:客服部,妥善安排售后回访。主动提醒。
- 统计图表:管理层,统计交易表中各个阶段数据量。
04-主键id
的生成方式
关于分布式
id
问题的小总结
- 分布式
id
:在数据量不大的时候,单库单表完全可以支撑现有业务,数据量再大一点搞个MySql主从同步也可以。数据量增长,到后期,需要进行分库分表,显然,这个时候需要一个全局唯一ID,而这个订单号就是分布式ID。- 需要满足的条件:全局唯一、高可用、高性能、简单可用
- 方案:
算法 优点 缺点 UUID/GUID 容易实现、ID唯一、无需中心化服务器、不会泄露机密 可读性差、占用空间过多、影响数据库性能 数据库递增 容易产生、可读性好、存储空间小 需要中心化的服务器、ID暴露不安全、需要访问数据库获取 id
随机数 可以有可读性、存储空间小、随机且安全 需要中心化的服务、需要两步操作 随机字符串 短、可读性高、随机且安全 ID可能不唯一 雪花算法 存储少、可读性高、性能好 时间回拨会出问题、ID生成有一定规律不安全 MongoDB的ID 可读性高、性能好 占用存储过多、时间回拨有问题、ID生成有规律
数据库自增
利用数据库主键可以设定为自增的特点来设置对应表的
id
字段。【缺陷】运行效率低、并发场景表现很差
【优势】开发容易
hilo
算法转载自HILO
private class HiloOptimizer {private String prefix;private int maxLo;private int lo;private long hi;private long lastValue;public HiloOptimizer(String prefix, int maxLo) {this.prefix = prefix != null ? prefix.replace("{", "${") : "";this.maxLo = maxLo; //最大低位this.lo = maxLo + 1; //最低初始位}public synchronized String generate() {if (lo > maxLo) { //当低位超过最大高位lastValue = getLastValue(); //表示hi位的进位次数,从数据库id管理表获取lo = lastValue == 0 ? 1 : 0; //低位归0hi = lastValue * (maxLo + 1); //高位进位}return String.valueOf(hi + lo++); //低位最后自增lo++} }
为了避免每次的生成都从数据库中查询,开发了该算法,不使用
synchronized
也能产生不重复的序号。基本公式:
hi∗(maxlo+1)+lohi * (max_lo + 1) + lo hi∗(maxlo+1)+lo雪花算法
SnowFlake
参看原文
定义:一种分布式的
id
生成算法,核心思想是使用64位的long
数字作为全局唯一id
。64位的含义(0-63)
0:无意义,仅仅为了标识是正数,负数部分我们不使用
1-41:时间戳(时间范围在69年,以毫秒为最小粒度)
42-46:机房
id
(32个机房)47-51:机器
id
(每个机房内可表示32个电脑)52-63:序号(这一毫秒内的第多少个请求,最大支持4096个)
将上述各个逐次拼接,就可以得到一个基本上唯一的分布式
id
。【优点】高性能、高可用:生成时不依赖于数据库,完全在内存中生成;容量大:每秒能生成百万的自增
id
;id
是自增的:存入数据库中的索引效率比较高。【缺点】依赖与宜通世纪间的一致性,如果时间被回调或者改变,就会造成
id
冲突或者重复。UUID
参考原文
UUID
的基本定义:Universally Unique Identifier
,一定的范围内(从特定的名字空间到全球)唯一的机器生成的标识符。基本特点:经由一系列的算法机器生成、非人工指定和识别的、在特定的范围内重复的可能性极小
基本模式:是一个16字节共128位长的数字,通常以36字节的字符串表示,如:
3F2504E0-4F89-11D3-9A0C-0305E82C3301
128位的含义(0-127)
0-59:时间戳
60-63:UUID版本号
64-76:clock sequence
77-79:保留字段
80-127:节点标识
UUID
的版本包括基于时间的和DEC安全的。java
中的使用:import java.util.UUID; String uuid = UUID.randomUUID().toString();
【优点】能够保证独立性,程序可以在不同的数据库间迁移,效果不受影响;保证生成的ID不仅是表独立的,而且是库独立的,这点在你想切分数据库的时候尤为重要。
【缺点】比较占地方,和INT类型相比,存储一个UUID要花费更多的空间;使用UUID后,URL显得冗长,不够友好。
共享主键
由另一张表的类型和长度决定。
联合主键
由多个字段的类型和长度共同决定。
动力节点CRM项目开发【准备篇】相关推荐
- 动力节点crm项目中登录无响应记录
项目场景: 利用thymeleaf+ssm完成crm项目,使用jquery实现登录功能. 问题描述 在到达登录页面后,点击登录,页面没有跳转,并且没有出现报错,但是没有填写账号点击登录和密码有弹窗提示 ...
- CRM项目开发【实操篇----市场活动模块】
CRM项目开发[实操篇----市场活动模块] 前言:本项目来源于B站动力节点视频,CRM项目开发 使用的后端技术栈主要是SSM框架,不涉及boot,老师讲的非常细致,推荐 关于流程图部分,由于是老师创 ...
- CriminalIntent项目开发--后篇
CriminalIntent项目开发--后篇 为Criminal Intent应用添加对话框 创建DiaologFragment,使用FragmentManager管理对话框,可以灵活的显示对话框. ...
- 动力节点-javaweb项目入门到实战教程-下
继续上文的内容,are you ready?let's go !!! 熟悉的配方搭配精美的视频:动力节点最新JavaWeb视频教程,javaweb零基础入门到精通IDEA版-持续更新中_哔哩哔哩_bi ...
- 动力节点-javaweb项目入门到实战教程-上
Java Web,是用Java技术来解决相关web互联网领域的技术栈.web包括:web服务端和web客户端两部分.Java在客户端的应用有Java Applet,不过使用得很少,Java在服务器端的 ...
- 第2章搭建CRM项目开发环境(搭建开发环境)
2.2搭建开发环境 2.2.1创建crm项目 使用IDEA创建Empty Project,作为项目的工作空间 2.2.2创建crm模块 创建maven类型的模块,作为开发工程 2.2.3为项目添加me ...
- CRM 项目总结——工作篇
在项目即将结束时,当站在全局的角度去看整个项目时,发现了我们平时忽略的很多问题,以下是我在OCS_CRM项目开发时所看到的一些问题,希望以后我们做项目时能注意以下问题: 1:效率:CRM很大一部份是报 ...
- 第2章搭建CRM项目开发环境(数据库设计)
2.1CRM数据库设计 2.1.1数据库设计原则 我们可以结合项目原型来考虑数据库设计,市场活动,用户,这些都是需要是持久化的,所以都需要设计成表.表和表之间通常还会有一定的关系.看每一个创建表单上都 ...
- python3 项目开发-中级篇(二)
本篇内容讲述图形化界面的聊天室的搭建过程. 用到的知识点: 1,tkinter模块 2,udp协议构建聊天室 3,多进程接收消息和发送消息 4,进程间的通信 难点: 1,用tkinter编写的图形化界 ...
最新文章
- java 老年代回收_Java垃圾回收之老年代垃圾收集器
- linux shell脚本 引入外部shell文件
- 长沙望城:以“速”大干一百天,以“质”实现双过半
- Kindle使用技巧
- 怎么将aspx网站改为静态页面?
- vue中Ajax(axios)及Ajax(vue-resource)的使用方法
- Python+OpenCV4:读写输入和输出的简单实践(图片、视频、摄像头)
- python中存储坐标_最好使用元组或numpy数组来存储坐标
- ssma5.3_适用于Oracle的Microsoft SQL Server迁移助手(SSMA)v7.1
- 《编码规范和测试方法——C/C++版》学习笔记 ·002
- C# 浏览器控件 谷歌、火狐内核
- jquery $.post 超时_详解如何实现前端jquery中的ajax方法,看这一篇就够了
- html5音乐播放器格式midi,HTML5 Audio时代的MIDI音乐文件播放
- 山东联通中兴B860 AV1.1机顶盒 刷机问题解决
- 桌面超简单小代码 bat形式
- 使用C#创建快捷方式
- STM32F401 / STM32F411 WeAct Studio 资料以及翻版说明
- veeam安装及使用
- 高效建站(华为云服务器建站IIS篇)
- 极客日报第123期:华为鸿蒙商标被驳回复审;《王者荣耀》蝉联全球手游畅销榜冠军;苹果承认iOS 14.5.1令旧款iPhone性能下降