作为Java新手,如何才能快速的看透一个Java项目?
前言
技术学习是一个总结、纠错、触类旁通的过程,而不是单纯重复练习的过程,如果你问一个做过5年以上Java的老码农,他们很多人都会有很强的“搬砖感”,这种“搬砖感”其实就是对Java项目的触类旁通、看出套路来了,比如:
(1)绝大部分Java应用系统,绝大部分功能归根到底都是数据库的“CRUD增删改查”,中间加了一些数据的校验、转换和逻辑运算,不同之处就是有的功能流程拐弯多一些、性能要求高一些、界面交互炫酷一些等。
(2)绝大部分应用系统,核心架构其实都是展示层、业务处理层和数据访问层。所谓的不同就是增加了一系列看似高大上的非功能性组件(缓存、分布式、并发、安全验证等)。
那么作为一个Java新手,如何才能快速的看透一个Java项目呢?
(1)DEBUG,对于程序员来讲,DEBUG是一个最核心的技能,挑选一个典型流程,从展示层、业务处理层、数据访问层一层一层的DEBUG下来,就可以搞清楚界面上发起的请求是如何进行业务处理,如何完成数据库操作并如何返回结果给前端界面的。
(2)读懂配置文件,其实现在Java项目的配置文件相比以前已经比较少了,配置文件里面往往配置了一些请求映射、访问路径、参数设置等重要信息,熟悉这些信息会对自己掌握系统运作方式有很大帮助。
(3)看文档,找出系统里面用到的开源框架/组件,把他们的官方文档通读一遍,搞清楚这些框架/组件是如何搭建、配置和运作的。如果能把官方文档搞熟搞懂,其实绝大部分遇到的BUG根本不用搜索引擎,都在文档里面有答案了。
(4)实际动手做一个功能,不要抄代码,而是仿照其他功能做一个类似的功能(搬砖),做完一个功能其实你就能大概理解系统的技术工作原理了。
(5)如果身边有资深的老程序员,能让他花个半小时一个小时的跟你整体讲一下,效果更佳显著。
一个在线考试系统,练手项目用他很香
项目介绍
学之思在线考试系统是一款 java + vue 的前后端分离的考试系统。主要优点是开发、部署简单快捷、界面设计友好、代码结构清晰。目前支持web端和微信小程序,能覆盖到pc机和手机等设备。整理了100+个Java项目视频+源码+笔记
开源版使用须知
(1)仅用个人学习,商用请购买授权
(2)禁止将本项目的代码和资源进行任何形式的出售,产生的一切任何后果责任由侵权者自负
学生系统功能
(1)登录、注册:注册时要选年级,过滤不同年级的试卷, 账号为student/123456
(2)首页:任务中心、固定试卷、时段试卷、可以能做的一部分试卷
(3)试卷中心:包含了所有能做的试卷,按学科来过滤和分页
(4)考试记录:所有的试卷考试记录在此处分页,可以查看试卷结果、用时、得分、自行批改等
(5)错题本:所有做错的题目,可以看到做题的结果、分数、难度、解析、正确答案等
(6)个人中心:个人日志记录
(7)消息:消息通知
(8)试卷答题和试卷查看:展示出题目的基本信息和需要填写的内容
管理系统功能
(1)登录:账号为 admin/123456
(2)主页:包含了试卷、题目、做卷数、做题数、用户活跃度的统计功能,活跃度和做题数是按月统计
(3)用户管理:对不同角色 学生、教师、管理员 的增删改查管理功能
(4)卷题管理:
1)试卷列表:试卷的增删改查,新增包含选择学科、试卷类型、试卷名称、考试时间,试卷内容包含添加大标题,然后添加题目到此试卷中,
组成一套完整的试卷
2)题目列表:题目的增删改查,目前题型包含单选题、多选题、判断题、填空题、简单题,支持图片、公式等。
(5)教育管理:对不同年级的学科进行增删改查
(6)消息中心:可以对多个用户进行消息发送
(7)日志中心:用户的基本操作进行日志记录,了解用户使用过情况
软件架构图
学生考试系统
后台管理系统
SpringBoot库存管理系统,拿来学习真香
项目介绍
Finer进销存是一款面向中小企业的供销链管理系统,基于J2EE快速开发平台Jeecg-Boot开发,采用前后端分离架构:SpringBoot2.x,Ant Design&Vue,Mybatis-plus,Shiro,JWT。项目基于十多年的中小企业管理经验,由ERP领域的资深专家设计;产品分为基础版、标准版、企业版三个版本,可适应不同的管控流程;对于灵活多样的个性化的管理需求,在Jeecg-Boot支撑下,利用其强大的代码生成器,无需写任何代码就可以快速实现大多功能,也可手工加入复杂的业务逻辑!整理了100+个Java项目视频+源码+笔记
(1)基础版:管结果,直接出入库,生成应收应付,进行收付款并核销
(2)标准版:管过程,业务从合同、申请、订单开始
(3)企业版:管协同,全过程跟踪管理,集成协同办公
(4)本发布为基础版
功能模块
开发环境
(1)语言:Java 8
(2)IDE(JAVA):IDEA / Eclipse,安装lombok插件
(3)IDE(前端):IDEA / WebStorm
(4)依赖管理:Maven
(5)数据库:MySQL5.7+ & Oracle 11g & SqlServer2017
(6)缓存:Redis
项目下载和运行
(1)拉取项目代码
it clone https://gitee.com/FINERS/psi.git
cd psi/ant-design-jeecg-vue
(2)安装node.js
(3)切换到ant-design-jeecg-vue文件夹下
# 安装yarn
npm install -g yarn
# 下载依赖
yarn install
# 启动
yarn run serve
# 编译项目
yarn run build
# Lints and fixes files
yarn run lint
系统登录
采购入库
树结构数据
总结
要了解一个项目,首先要知道这个项目的业务背景是什么,为什么要存在该系统。这个在理解项目的过程中非常重要。整理了100+个Java项目视频+源码+笔记
我们维护或者开发一个项目,不仅仅用到的是技术,当然技术是很重要的,在学习的过程中要结合业务去理解,过了10天半个月就想不起来这个项目是什么东西,这种就是因为单纯想学技术,而没有理解到业务,所以就忘了。
关于学习项目我这里总结了几个步骤分享给大家:
1、了解系统的业务背景,改系统产生的原因是什么
2、粗读系统的代理工作流程和一些重要的分支
3、基于业务去精读代码,如果使用到了某个你不懂的技术栈,那就想想为什么要用这个技术栈A而不是用另外一个技术栈B,在这个过程中学习
4、画个总结的系统架构图,如果流程比较多,可以话重要分支的流程图
作为Java新手,如何才能快速的看透一个Java项目?的更多相关文章
- java程序保护如何知识产权,特别提供一个java 开发的java 源代码级的混淆器
java程序保护如何知识产权,特别提供一个java 开发的java 源代码级的混淆器 下载地址:http://yunpan.cn/QXhEcGNYLgwTD 运行方式:java -jar Encryp ...
- 混淆器:java程序保护如何知识产权,特别提供一个java 开发的java 源代码级的混淆器
java程序保护如何知识产权,特别提供一个java 开发的java 源代码级的混淆器 下载地址:http://yunpan.cn/QXhEcGNYLgwTD 运行方式:java -jar Encryp ...
- “全栈2019”Java第四章:创建第一个Java程序
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- Java程序的编写与执行、Java新手常见问题及解决方法|乐字节Java学习
今天,我们来写一段Java程序.然后看看Java程序是如何执行的,以及Java新手小白遇到的问题和解决办法. 一.HelloWorld的编写 ① 新建一个XXX.java (文件的扩展名显示出来) ...
- 《Java编程思想》读书笔记-第一个Java程序
积少成多,欢迎大家关注我的微信公众号,共同探讨Java相关技术 今天的重点是:编写源代码.编译.运行.查看成果.除此之外,还需要搭建起与前面学习的知识的联系. 写本文时依据的系统环境是Windows1 ...
- 遗传算法 | Java版GA_TSP(我的第一个Java程序)
嗯哼,第一次写博客,准确说是第一次通过文字的方式记录自己的工作,闲话少叙,技术汪的博客就该直奔技术主题(关于排版问题,会在不断写博客的过程中慢慢学习,先将就着用吧,重在技术嘛~~~). 遗传算法(Ge ...
- ReactNative新手学习之路02第一个RN项目
开始第一个RN项目(iOS版)我的电影列表0.1版,后面做列表版 打开上一节项目 index.ios.js,android打开index.android.js.我这里使用的是Atom编辑器,你也可以使 ...
- Java开发笔记(一)第一个Java程序
安装完Java的开发环境Eclipse之后,正是初学者大展身手的时候了,接下来不妨跟着笔者一步一步来,看看第一个Java程序是怎么跑起来的.一开始双击桌面上的Eclipse图标,稍等片刻便弹出Ecli ...
- windows环境30分钟从0开始快速搭建第一个docker项目(带数据库交互)
前言 小白直接上手 docker 构建我们的第一个项目,简单粗暴,后续各种概念边写边了解,各种概念性的内容就不展开,没了解过的点击 Docker 教程 进行初步了解. Docker 是一个开源的应用 ...
随机推荐
- 「LOJ 537」「LibreOJ NOIP Round #1」DNA 序列
description NOIP 复赛之前,HSD 桑进行了一项研究,发现人某条染色体上的一段 DNA 序列中连续的\(k\)个碱基组成的碱基序列与做题的 AC 率有关!于是他想研究一下这种关系. 现 ...
- Win10定期执行python程序
一:windows10自带的计划程序 第一步:在 计算器右击 --> 选择管理 进入如下界面: 第二步:选择 系统工具 --> 任务计划程序 ,点击右侧的 "创建基本任务&q ...
- 在Spring data中使用r2dbc
目录 简介 依赖关系 数据库连接配置 数据库初始化 DAO操作 Service操作和Transaction controller 测试 简介 上篇文章我们讲到了怎么在Spring webFlux中使用 ...
- 你知道第一个C语言C++编译器是如何诞生的吗?
当今几乎所有的实用的编译器/解释器(以下统称编译器)都是用 C 语言编写的,有一些语言比如 Clojure,Jython 等是基于 JVM 或者说是用 Java 实现的,IronPython 等是基于 ...
- java线程与内存的关系
转载: https://blog.csdn.net/hellozhxy/article/details/91972846
- 第15.37节 PyQt(Python+Qt)入门学习:containers容器类部件QMdiArea多文档界面部件详解及编程开发案例
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.引言 老猿在前期学习PyQt相关知识时,对每个组件的属性及方法都研 ...
- PyQt(Python+Qt)学习随笔:QStandardItemModel指定行和列创建模型中的项以及索引
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.引言 QStandardItemModel有两种构造方法: QStandardItemModel ...
- PyQt(Python+Qt)学习随笔:QListView的viewMode属性
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QListView的viewMode属性用于控制QListView的视图模式,该属性类型为枚举类型Q ...
- Gradle上传依赖到私服(nexus)
子模块配置 buildscript { repositories { mavenLocal() maven { url "http://maven.aliyun.com/nexus/cont ...
- 彻底搞懂js this指向问题
在这里必须要提一句的是,this指向是学习js必须要掌握的(必须),再开始之前先看底部的总结,然后回上面看例子便一目了然. 例子1: function a(){ var user = "Ta ...