opcj-如何通过一个项目征服Java

news2024/11/19 9:39:42

Java早已经不是高大山的稀世珍品了,程序员也不再是高科技工作者,而被称为码农 ,为什么呢?因为Java后台的很多基础技术都已经固定了,也就是说主要你从头到尾学一遍就能会 ,淘宝双十一搞不定,但是做个普通的网站还是没问题的。而大部分公司的流量都没有那么大,大部分工作也都是简单的正删改查做需求而已,所以程序员就慢慢变成了代码搬运工,俗称码农。

虽然Java技术从几个人的小公司到阿里头条都用,但是高级程序员和低级码农的差距也是天上低下。如果要进阶我觉得有一件事是非常重要的:全面掌握Java技术栈的大部分技术,不一定每个都很精通,但是至少常见的技术都应该很清楚的。如果一起聊天时不知道redis如何缓存同步,不知道如何分库分表、不知道如何防止消息重复消费是很丢人的事。在全局掌握之后,我们可以更加深入的理解某个技术,例如JVM、多线程、Spring、分布式和微服务的相关技术等等。

那么该如何才能很好的掌握这么多的技术呢?我觉得从头到尾自己搭建一个完整的项目是个不错的主意。在公司中,很多时候我们都是在别人的基础上干活,虽然效率最高,但是经常会失去很多学习的机会,越大的公司这种情况越明显。例如经常看到线上的服务有很多配置,你知道他们都是做啥的吗?服务启动的时候加载了一堆的文件 ,你知道哪些可以去掉吗?别人建设了分布式调度中心,你用的时候只是增加了个配置,然后迁移自己的业务,活干了不少,但是你能说自己熟悉分布式调度中心吗?等等。

自己搭建项目的好处是自己要完全理解每个细节,从0开始清晰认识整个系统。坏处自然是这个项目不能涉及太多太复杂的业务内容,是个重复造轮子的过程。而在大部分工程里,业务代码占了80%甚至更高。因此我们只能说自己搭建的项目只能征服Java的高山,而不能涵盖Java的全部。

那什么项目适合自己搞一个呢?我觉得是一个简单的电商系统。四个原因,一个是谁都知道电商咋回事,但如果换成金融等系统,估计很多人名词都看不懂。第二个是几乎后台的技术,都是为了解决电商的问题而产生的,例如安全、高并发等等,而教育类,各种各样的管理系统,反而没那么高的访问量,因此对接口限流等等没有那么高的需求。第三,我们知道的网站几乎都是买东西的,电商系统在国内至少被建造过上万次了,因此很多问题都能快速找到解决方案。第四是,电商系统能搞定,其他系统几乎都不在话下,跑过一万米的人,应该不会害怕1000米吧。

所以从今天开始我们从0开始搭建一个完整的电商系统,我们会充分参考网上很多开源的、免费的系统、说明等等,不断消化吸收,不断迭代完善,融合到我们的系统中。

这个系统按照怎么样的主线来设计呢?我们的目的是为了掌握技术,而不是真正建设能买东西的网站,所以我们首要考虑的是如何合理地逐步引入各种各样的技术和解决方案。

我打算分为四个大阶段:完成一个完整微服务架构系统,然后按照单体篇、微服务篇和云原生篇三个部分深入分析技术问题。

第一阶段:构建完整的微服务架构系统

技术是无止境的,任何一个技术例如司空见惯的数据库就会有大量的细节。我们不可能什么都会,哪边界在哪里呢?我觉得首先应该将主线把握住,将常用的内容搞清楚,将常见的方案把握好,说白了就是要会用,而且要用好。因此我们会先逐步构建一个完整的微服务架构系统,在这个过程中,我们主要解决”是什么“、”怎么用的问题“。

有了主线之后,接下来就按照单体相关技术、微服务相关技术和云原生与集群相关技术来深入分析一些重要的技术原理、源码和解决方案。不过这三个阶段只是我们专门研究技术问题的类别,不一定将一阶段彻底写完再写下一个,而是会有很多交叉,最后我们将写好的文章在这里归类起来,就像我们之前整理算法一样。

我们整个工程的名字就叫OPCJ——one project conquer Java,一个项目征服Java,以后与本项目有关的都用opcj这个标记。

第二阶段:单体篇

就是面向一台机器或者一个服务的技术,搭建一个单机完整的项目,我打算在这个篇梳理以下问题:JavaWeb、VUE前端技术、Angular前端技术、tomcat原理、数据库+JDBC+连接池、 spring、SpringMVC、ORM技术、SpringBoot、报表、文件处理、图片服务、maven,swagger并在整个过程中贯穿对项目设计的理解。

第三阶段:微服务篇

就是面向常规的微服务系统的设计,就是要构建一个如下一样的完整系统,设计的技术会非常多。

例如这里会使用分布式相关技术,例如消息队列、redis缓存、nginx、服务网关、分布式调度XXL-JOB,分布式检索ES、kafka消息等等,还有以SpringCloud为代表的微服务技术、阿里巴巴的这里会重点构建几个重要的解决方案,目前考虑的有如下这些:

  1. 微服务注册中心解决方案
  2. 微服务认证解决方案
  3. 微服务网关解决方案
  4. 微服务负载均衡解决方案
  5. 微服务集中配置解决方案
  6. 微服务熔断限流解决方案
  7. 微服务分布式事务解决方案
  8. 微服务消息中间件解决方案
  9. 微服务高性能缓存解决方案
  10. 微服务分库分表解决方案

第四阶段 云原生篇

虽然一提到云原生就想到K8s+Docker+KubeSphere+DevOps这些,但是云原生本身不是一个简单技术,而是一种行为方式和涉及理解。凡是能够提高云上资源利用率和应用交付效率的行为或方式都可以称之为云原生的。云原生由一系列技术支撑起来的,代表技术包括容器、服务网格、微服务、不可变基础设施和声明式 API。

云原生是大趋势,目前Java微服务开发越来越重,集成的功能越来越多,很多都与业务本身没有关系,而云原生的目标之一就是将那些固定的工作,例如接口限流等逐步固化到基础组件中,Java只负责业务就可以了,此外还有监控、日志、部署等很多基础功能。考虑到云原生更多是一种设计思想,我们还是做一个更具体的事情,目前考虑将以下内容归到云原生里。

  1. 微服务分布式日志解决方案
  2. 微服务持续集成解决方案
  3. 微服务链路追踪解决方案
  4. 微服务实时监控解决方案
  5. 微服务压力测试解决方案
  6. 微服务容器化部署解决方案

上面的任务每个拓展开都涵盖很多内容,而且做的时候会进行很多细化和调整,但是坚持做下去就可以了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/69892.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2022-12-07 小米pro路由(R3G) 刷固件 openwrt

环境准备:路由开启SSH 1.先登录小米开发者平台,解开小米路由的SSH http://www.miwifi.com/miwifi_open.html 2.路由连接电脑,通过SSH可直接登录到小米路由 本教程以R3G 为例 第一步: 刷入 BREED 如何刷入breed 不同设备方法不同,可以直接U…

通俗地讲讲数据降维的原理

什么是数据降维?关于这个问题,很多专家的说法都非常学术,估计很多普通人听不懂。所以,这里用通俗的语言解释一下,希望有助于更多的入门新人理解。 举一个简单的例子:假设一个小学的班级有5个学生&#xff…

Spring Boot 入门到精通(一)

文章目录一、Spring Boot 介绍1. 概念2.maven构建Spring Boot项目3. 自定义banner4. Spring Boot的全局配置文件5. Spring Boot项目的发布方式二、Spring Boot注入方式1. Value方式2. ConfigurationProperties方式3. SpringBoot默认注入方式4. SpringBoot中的默认配置三、Sprin…

Element组件库的用法步骤

Element地址:适用于pc端后台开发 Element - The worlds most popular Vue UI frameworkElement,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库https://element.eleme.io/#/zh-CN/ 下载 点击 “组件”在安装部分有下载命令&#xf…

东京大学和积水房屋启动生物多样性和健康联合研究

东京大学农业与生命科学研究生院(GSALS)和积水房屋株式会社(Sekisui House, Ltd.)将于2022年12月1日启动关于生物多样性和人类健康的联合研究项目。该项目将调查生物多样性和城市自然环境对人类健康和幸福的益处。这项全球首创的举措将全面调查居民与附近生物多样性丰富的花园环…

Java入门教程(17)——循环语句

文章目录1.while 循环2. do-while 循环3. for 循环我们表白的时候,你可以做我女朋友么,这次拒绝了,下次“你可以做我女朋友么”,直到同意做你女朋友。以后就不会再问了,这就是循环1.while 循环 语法结构: w…

从“挖土豆”到全场景营销,纷享销客CRM如何助力噢易云可持续增长?

近年来,随着云计算技术的发展和普及,桌面云也得到了越来越广泛的应用,尤其是在教育、医疗、金融、能源、连锁等对安全、成本和系统化管控有着强要求的行业中。 根据第三方研究机构的统计,2021年中国桌面云整体解决方案销量达到了…

Java Object类常用API

JavaObject类常用API\huge{Java\space Object类常用API}Java Object类常用API API 首先解释一下什么是APIAPIAPI。 API(ApplicationProgramminginterface)API(Application Programming interface)API(ApplicationProgramminginterface):应用程序编程接口。 简单来…

docker 查看容器启动命令(已运行的容器)

eg: 1 docker ps 查看正在运行的容器: 通过docker ps命令 该命令主要是为了详细展示查看运行时的command参数 docker ps -a --no-trunc | grep container_name # 通过docker --no-trunc参数来详细展示容器运行命令 通过docker inspect命令 使用docker inspect,但…

Letbook Cookbook题单——数组3

Letbook Cookbook题单——数组3 48. 旋转图像 难度中等 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 1:…

左(7)--kmp,manacher,morris

前言 仅记录学习笔记,如有错误欢迎指正。 题目: 思路:实现1个函数infect(),把1连接的位置都变为2,此时算一个岛。 如何设计一个并行算法解决这个问题? 在多个cpu中 每次存入分界线的信息,…

拓扑排序与关键路径

一、拓扑排序 1.1 什么是拓扑排序 对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序&#xff0c;是将G中所有顶点排成一个线性序列&#xff0c;使得图中任意一对顶点u和v&#xff0c;若边<u,v>∈E(G)&#xff0c;则u在线性序列中出现在v之前。通常&#x…

入驻淘宝成人用品店铺要什么证件?

在淘宝店铺开一家淘宝店铺&#xff0c;必须要有成人用品特种经营许可证&#xff0c;没有申请成人用品特种经营许可证的店铺&#xff0c;在淘宝上是发布不了成人用品类目宝贝的&#xff0c;那么&#xff0c;有的店主就有疑问了&#xff1a;成人用品特种经营许可证要在哪里去申请…

基于Spring Boot+Vue+MySQL的理财平台的设计与实现

目 录 摘 要 I Abstract II 目 录 III 图清单 V 表清单 VII 1 绪论 1 1.1 理财平台的现状与发展 1 1.2吾爱理财平台的研究内容 2 1.3 吾爱理财平台的研究目的和意义 2 1.4 本章小结 3 2 本吾爱理财平台的分析 4 2.1 可行性分析 4 2.2 需求分析 4 2.3 框架介绍 6 2.4 本章小结 …

商用、无版权图片素材网站,赶紧马住。

很多朋友不知道去哪里找图片素材&#xff0c;网上找的质量不高先不说&#xff0c;就怕使用不当造成侵权。今天给大家分享6个可商用&#xff0c;还高质量的图片素材网站。1、菜鸟图库 https://www.sucai999.com/pic.html?vNTYwNDUx菜鸟图库网站素材类型很多&#xff0c;像设计、…

【Python游戏】Python实现一个植物大战僵尸小游戏,非常简单,可以用于做毕业设计哟 | 附源码

前言 halo&#xff0c;包子们下午好 今天给打击整一个植物大战僵尸 无广告版本 哈哈 说实话&#xff0c;现在的小游戏很多都是有广告&#xff0c;多少有点难受 今天给大家直接安排 相关文件 关注小编&#xff0c;私信小编领取哟&#xff01; 当然别忘了一件三连哟~~ 源码点…

一篇博客总结深度学习与反向传播

目录 深度学习的发展过程 深度学习的步骤 定义Neural NetWork 全前向连接 softmax介绍 定义loss函数 定义优化器选择最优参数optimization 反向传播Backpropagation 深度学习介绍 反向传播视频 深度学习的发展过程 perceptron(liner model)感知机——线性模型 perc…

知识图谱-KGE-语义匹配-双线性模型-2018:CP

【paper】 Canonical Tensor Decomposition for Knowledge Base Completion【简介】 这篇是 Facebook 法国巴黎 AI 研究中心发表在 ICML 2018 上的文章&#xff0c;是对传统的张量分解方法 CP&#xff08;Canonical Tensor Decomposition&#xff09;做的分析改进。对传统的几个…

泛微文书定确保电子档案移交接收过程:真实、完整、可用和安全

电子档案的移交接收是电子档案管理流程的重要环节之一。 国家档案局发布的《电子档案移交接收操作规程》中明确了电子档案移交接收的工作流程&#xff0c;规定了电子档案移交接收准备工作和电子档案移交接收操作的要求。 在移交接收过程中&#xff0c;如何快速处理大量的电子…

当软件测试迭代测试时间不够时该如何去做好质量控制呢?

大家好&#xff0c;今天我们一起来聊聊&#xff0c;当我们在工作中尤其是快速迭代版本中测试版本的时间被压缩的很短&#xff0c;甚至不够完成用例执行时怎么去做好质量控制呢&#xff1f; 在我们的日常生活中导致软件测试时间不够的原因有很多&#xff0c;那么在这些不确定的人…