Modernizing Enterprise Java

这本书通过一个简单的微服务项目Coolstore, 一步步介绍了Cloud-Native相关的技术,框架和平台。尽管没有深入讲具体的某门技术,但是从一个更高的视角给予云原生的企业Java的开发一些技术性的介绍也是很好的。

小小总结一下这本书介绍的技术:

Chapter 1 : Revisiting Enterprise Development

Chapter 2 : The Path to Cloud Native Java

Coolstore.Architecture

Chapter 3: Travel Light on Your Pathway

Chapter 4: A Kubernetes-Based Software Development Platform

Chapter 5: Beyond Lift and Shift: Working with Legacy

Chapter 6: Building Kubernetes-Native Applications

Chapter 7: Tomorrow’s Solutions: Serverless

With this chapter, we complete this “Concise Cloud Native Guide for Developers.”
From microservices to functions, Java developers today have a complete set of frame‐
works, tools, and platforms such as Kubernetes that can help them modernize their
architectures, innovate their solutions, and look ahead to solve the next challenges in
today’s IT context. This context is one that is ever more heterogeneous, ubiquitous,
large scale, and cloud native.

描述清楚问题,才能有信心解决问题

当我被问到“我知道怎么做吗?”我有些迟疑,并回答道“我来找找”。

在速度和效率的时代,快速解决问题的能力,有一方面是经验,或者说是知识积累,另一方面是“解决问题的方式方法”。

解决问题其实只是一个方面,快速检验了知识积累,同时,也考察了解决问题的能力。

解决问题的能力,体现在对问题的分析上面,首先分析问题的第一点就是“描述清楚问题是什么”。

我遇到的问题是——替换mongodb中一个文档的集合属性。具体来说,有这样一个大致结构的文档。

{
    "_id": ObjectId("61eaa8def7310000ec007963"),
    "code": 101,
    "name": "test1",
    "validTypes": [
        "WORKDAY",
        "WEEKEND",
        "HOLIDAY"
    ],
    "notes": "haha1"
}

我需要替换validTypes数组中的”WEEKEND”为”REST”.

在解决这个问题时,我分别做了5次问题描述,体现在我用Google搜索的时候。

  • mongodb 查询对象的集合属性
  • mongodb 更新某个字段中的属性
  • mongodb 替换某个集合属性的 成员
  • mongodb 集合属性查询
  • mongodb 数组元素替换

最后一次,比较接近问题的本身。所以在看了一篇Blog——MongoDB 数据的替换方法详解

然后看了官网和两篇比较“靠谱“Blog之后,这两篇Blog比较实用,我就知道问题的解决方法,并尝试了一下,果然成功了。

其中受到第一篇Blog和”印象中的示例代码“影响,差点就走偏了。

官网是:

(1)Query Your Data

https://docs.mongodb.com/compass/current/query/filter/

(2)$elemMatch (query)

https://docs.mongodb.com/manual/reference/operator/query/elemMatch/

(3)Update Operators

https://docs.mongodb.com/manual/reference/operator/update/

一篇靠谱的Blog是——mongodb数组更新运算符($、$[]、$[<identifier>])

另外一篇是——使MongoDB用字符串替换单个数组值?

我就是在看完上面最后一个Blog之后尝试的,果然,一看方法简单可行,我就动手了,果然成了。

db.getCollection("ot-rules").updateMany(
    {
        "validTypes": "WEEKEND"
    },
    {
        "$set": {
            "validTypes.$": "REST"
        }
    }
)
;
				
				
db.getCollection("ot-rules").find({}).pretty();

上面有第一点就是理解操作函数,比如$.set ,还有.$,这些知识是官网可以获取的。

记在最后,别人可以做的,我为什么不能做。同样风华正茂,怎能甘拜下风?

进入Web2.0时代

最近三年来,我几乎一直是写后端代码,我之前熟悉的还是jQuery 和bootstrap,现在主流的前端代码几乎都是用Vue或者React写的,在去年的时候,我曾经看过了React Native, Vue.js 但是后来我并没有写前端的代码,所以学了并不等于就会了,学习的遗忘曲线是客观的事实,尤其是我不用的时候,所以对于我来说想写一个项目,我又不愿意使用jquery + bootstrap 那一套技术来实现,同时我又不熟练掌握vue或者react ,所以我矛盾的是,想自己写些代码只能是后端的接口代码。

所以我现在需要重新学习vue.并实践我的第一个项目。mybookshelf.

需要我画原型图。

但是在之前,我需要想想,我为什么需要写一个这项的项目,我的初衷是什么。

首先很明确的是,我需要使用一个真实的项目来锻炼一下自己的前端水平,所以重点应该是在前端上,后端刚开始我只打算使用一个简单的springboot项目来提供接口,这个后端项目很简单,不会使用很多的复杂技术,也不会设计得很复杂。

那首先我得想清楚,怎么展示,需要在移动端展示吗?

如果我考虑移动端的话,可能会有更多的工作量,不能快速迭代,所以我可以先考虑web端的。

我先画一个简单的原型图:(在墨刀上临时去画一下)

https://v6.modao.cc/app/bdadcf6ca49ffe0592467743e2ef1619e808312f?simulator_type=device&sticky

密码:BobJackson

ok,现在我可以编写前端页面了,尽管我在画的过程中,也是思考了一下后端的接口,甚至想了一下简单的设计和实现。