只接受发布货源信息,不可发布违法信息,一旦发现永久封号,欢迎向我们举报!
1064879863
16货源网 > 餐饮行业新闻资讯 > 软件开发 >  java后端怎么避免只会写CRUD?


java后端怎么避免只会写CRUD?

发布时间:2019-09-12 16:26:53  来源:网友自行发布(如侵权请联系本站立刻删除)  浏览:   【】【】【
不用框架去实现,这招就能避免
java后端怎么避免只会写CRUD?

不用框架去实现,这招就能避免

第一步,学会思考。

在提问之前先想想这会不会是个常见的问题,会不会已经有人被这个问题困扰很久,会不会有前人已经给出了解答。

为什么只会CRUD,因为很多人都习惯了按照别人的指示去做具体的任务,而从来没想过,自己还能做点什么让工作做的更好、更快、更轻松,从而摆脱这些枯燥的基本工作。没想过,自己想做什么,是做一辈子基础岗位工人,还是去实现个什么稍微高级一点的理想。

第二步,学会收集信息。

在知乎点击提问之前先点击搜索。以本题为例,在知乎搜索“java后端怎么避免只会写CRUD”出现一堆类似的问题和答案,迅速从中提取出有价值的回答,发现并没有完美解决自己的问题,但是提供了一些“方向”,把这些“方向”放到搜索框继续搜索,直到进入无人问津的领域,这时才是该提问的时候。

不告诉你

没法避免CRUD,因为一定用到。

如果只写CRUD,可能你干着也没劲。你就可以主动提出一些新想法,微服务啊、分库分表啊整一整,这时候出现了CRUD的不一致性,你会考虑分布式事务。如果SQL效率不高, 还要学会SQL优化。如果做好这些,CRUD就不只是CRUD了。

一份JAVA进阶知识点大纲

本系列知识出自中华石杉,我对这部分知识做了一个系统的整理,方便学习查阅。

一点小建议:学习本系列知识之前,如果你完全没接触过 MQESRedisDubboHystrix 等,那么我建议你可以先在网上搜一下每一块知识的快速入门,玩一下入门 Demo,然后再开始每一块知识的学习。这样效果更好噢~

高并发架构

消息队列

  • 为什么使用消息队列?消息队列有什么优点和缺点?Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么优点和缺点?
  • 如何保证消息队列的高可用?
  • 如何保证消息不被重复消费?(如何保证消息消费时的幂等性)
  • 如何保证消息的可靠性传输?(如何处理消息丢失的问题)
  • 如何保证消息的顺序性?
  • 如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时,说说怎么解决?
  • 如果让你写一个消息队列,该如何进行架构设计啊?说一下你的思路。

搜索引擎

  • es 的分布式架构原理能说一下么(es 是如何实现分布式的啊)?
  • es 写入数据的工作原理是什么啊?es 查询数据的工作原理是什么啊?底层的 lucene 介绍一下呗?倒排索引了解吗?
  • es 在数据量很大的情况下(数十亿级别)如何提高查询效率啊?
  • es 生产集群的部署架构是什么?每个索引的数据量大概有多少?每个索引大概有多少个分片?

缓存

  • 在项目中缓存是如何使用的?缓存如果使用不当会造成什么后果?
  • Redis 和 Memcached 有什么区别?Redis 的线程模型是什么?为什么单线程的 Redis 比多线程的 Memcached 效率要高得多?
  • Redis 都有哪些数据类型?分别在哪些场景下使用比较合适?
  • Redis 的过期策略都有哪些?手写一下 LRU 代码实现?
  • 如何保证 Redis 高并发、高可用?Redis 的主从复制原理能介绍一下么?Redis 的哨兵原理能介绍一下么?
  • Redis 的持久化有哪几种方式?不同的持久化机制都有什么优缺点?持久化机制具体底层是如何实现的?
  • Redis 集群模式的工作原理能说一下么?在集群模式下,Redis 的 key 是如何寻址的?分布式寻址都有哪些算法?了解一致性 hash 算法吗?如何动态增加和删除一个节点?
  • 了解什么是 Redis 的雪崩和穿透?Redis 崩溃之后会怎么样?系统该如何应对这种情况?如何处理 Redis 的穿透?
  • 如何保证缓存与数据库的双写一致性?
  • Redis 的并发竞争问题是什么?如何解决这个问题?了解 Redis 事务的 CAS 方案吗?
  • 生产环境中的 Redis 是怎么部署的?

分库分表

  • 为什么要分库分表(设计高并发系统的时候,数据库层面该如何设计)?用过哪些分库分表中间件?不同的分库分表中间件都有什么优点和缺点?你们具体是如何对数据库如何进行垂直拆分或水平拆分的?
  • 现在有一个未分库分表的系统,未来要分库分表,如何设计才可以让系统从未分库分表动态切换到分库分表上?
  • 如何设计可以动态扩容缩容的分库分表方案?
  • 分库分表之后,id 主键如何处理?

读写分离

  • 如何实现 MySQL 的读写分离?MySQL 主从复制原理是啥?如何解决 MySQL 主从同步的延时问题?

高并发系统

  • 如何设计一个高并发系统?

分布式系统

系统拆分

  • 为什么要进行系统拆分?如何进行系统拆分?拆分后不用 Dubbo 可以吗?

分布式服务框架

  • 说一下 Dubbo 的工作原理?注册中心挂了可以继续通信吗?
  • Dubbo 支持哪些序列化协议?说一下 Hessian 的数据结构?PB 知道吗?为什么 PB 的效率是最高的?
  • Dubbo 负载均衡策略和集群容错策略都有哪些?动态代理策略呢?
  • Dubbo 的 spi 思想是什么?
  • 如何基于 Dubbo 进行服务治理、服务降级、失败重试以及超时重试?
  • 分布式服务接口的幂等性如何设计(比如不能重复扣款)?
  • 分布式服务接口请求的顺序性如何保证?
  • 如何自己设计一个类似 Dubbo 的 rpc 框架?

分布式锁

  • Zookeeper 都有哪些应用场景?
  • 使用 Redis 如何设计分布式锁?使用 Zookeeper 来设计分布式锁可以吗?以上两种分布式锁的实现方式哪种效率比较高?

分布式事务

  • 分布式事务了解吗?你们如何解决分布式事务问题的?TCC 如果出现网络连不通怎么办?XA 的一致性如何保证?

分布式会话

  • 集群部署时的分布式 Session 如何实现?

高可用架构

  • Hystrix 介绍
  • 电商网站详情页系统架构

高可用系统

  • 如何设计一个高可用系统?

限流

  • 如何限流?在工作中是怎么做的?说一下具体的实现?

熔断

  • 如何进行熔断?
  • 熔断框架都有哪些?具体实现原理知道吗?

降级

  • 如何进行降级?


最后,CRUD也见水平,有些人代码写的很漂亮,阅读性很高,看着很舒服;有些代码写完,可能自己都不想看第二遍了,所以有一定CRUD经验后,设计模式是绕不开的,这里列23种设计模式的极简教程:

设计模式内容聚合

这些看完,琢磨琢磨,应该会有不少提升。最后,欢迎安利一下我的公众号:【Java知音】。专注于Java技术方面的文章分享,目前已有十几万关注,有兴趣欢迎来瞅瞅,一定会有所收获的。

原文链接:http://www.github.com/doocs/advanced-java

CRUD不是你想的那么简单,先把CRUD做好吧。

业务也是很重要的。

写好CRUD就不错了, 见过太多自以为是的, 什么项目都上spring cloud, 一个接口一个jar, 连事务都没搞明白, 微服务回滚起来一地鸡毛. 服务都没个测试,升级出问题调试都没法调

计算机世界里,复杂的东西拆解到后面都会变成crud。

继续拆解,就是与或非,0和1。

怎么样把复杂问题拆成简单问题,或者通过简单的方式去解决复杂的问题,这才是你能力所在。

这个问题问的是“怎么避免只会CRUD”。

先回答Java后端除了CRUD还能干什么,然后再说“怎么避免”只会CRUD。

其实不仅仅Java后端,任何服务器端技术都做差不多的事。具体包含什么,看Spring的文档:

截屏把下面的人名单都包含进来,是为了纪念排在第一位的Rod Johnson。

除了Core、Testing、Language之外,最重要的就是三部分:Data Access、Web和Integration,其中由于Spring 5引入了WebFlux,Web分成了两部分。

所以,其实Java后端主要就是做三件事:

  1. Web部分,负责人机交互。
  2. Data Access,就是数据库交互,也就是CRUD。
  3. Integration,其他第三方服务交互。

Web包含传统阻塞的基于Servlet的Spring MVC,也包含新引入的非阻塞的Spring WebFlux。

Data Access呢?当然包含JDBC、Hibernate/JPA,这写都是spring官方推荐的。具体还有哪些呢?Spring有另外一个项目群,被称为Umbrella Projects:

包括对不同底层数据库的操作,例如:JPA、MongoDB、Redis、ElasticSearch、Cassandra....

Integration呢?包含JMS、JMX、EMAIL等等。还有Spring另外一个项目Integration专门做集成的:

包括Web Services、RabbitMQ等等。针对Karfka,还有专门的Spring for Apache Kafka。

总结一下。Java后端做三件事,向前一件事,向后两件事。向前负责API交互,也就是Web。向后集成第三方服务,不同类型的数据库是一类,其他第三方技术是另一类。在这三件事之上都是架构范畴的事情,例如微服务等等。

如何避免只写CRUD呢?

首先不要以为CRUD就是JDBC或Mybatis,或者再加上Hibernate/JPA。因为他们只能操作RDBMS,还有很多的CRUD需要学。非关系型数据库,MongoDB等等都可能会用到。也不要以为CRUD很Low。仅仅是RDBMS的操作其实就很复杂,很有技术含量的。

其他的集成技术,要做到:平时要了解,需要的时候能迅速上手

平时要了解,就是不能因为当前项目不用就不去学,不要视而不见。

例如Kafka,了解它是做什么的,解决了什么问题,Spring是如何集成它的。如果在深入一点,就自己搭建一个开发环境,实际操作一下。

平时要了解,就是不用太深入。因为深入掌握一门技术必须要有实战环境。缺少实战环境,很难深入到一门技术中去,所以没必要强求。有时候自己用业余时间学一门技术,以为掌握差不多了,但由于长期没有实战机会,最终还会降维到了解的程度。

如果真的打算一直走技术路线,那就尽量给自己创造实战环境。不断挑战自己,不要永远呆在舒适区。始终在一家公司,由于所在行业和技术架构都有限,你能实际接触到的技术肯定业有限。

不要用Java (大雾


实际上Java后端想要深入除了CRUD还有好多可以做的呀,比如写各种中间件,比如写框架,比如各种服务组件例如ES、Kafka、ZK……对吧


用Java自己撸一套MyBatis是不是很有成就感

如果与数据库打交道,那本质都是CRUD,但分很多种,有

  • 高并发的CRUD
  • 分布式事务的CRUD
  • 深入MyBatis底层的CRUD
  • 分布式缓存的CRUD
  • 分库分表的CRUD
  • 基于MySQL底层的CRUD

不知道题主想要哪种CRUD?

其实我们都很懒,技术也完全需要工作需求来驱动,如果工作中没遇到这种情况,我们根本不会花时间去学习其他技术,比如RabbitMQ,Kafka,Zookeeper,Dubbo,Netty,ES,Shell,Docker,K8S,MyCat,AlibabaCloud,设计模式,微服务,分布式,服务网格,JUC,AQS,CAS,等等,太多了,这辈子也学不完,继续CRUD吧,还避免个锤子

我也有类似的疑问

1.厨师怎么避免只会炒菜?

2.老师怎么避免只会上课?

3.杀手怎么避免只会杀人?

……

不学java?

之前在网上看到过一篇文章,一个程序员因为公司倒闭去面试,结果因为只会CRUD被刷了下来,整个面试过程持续不到10分钟,面试官还在网上吐槽:

他这番言论虽有好意,但其他程序员却并不认同:

其中有一条评论特别精辟“面试造火箭,工作拧螺丝”


其实,除了你所问的这个问题外,从学习Java之初我们就一直面临这许许多多的问题和选择,例如:

  • 我已经学完JDBC了,那样参加工作够用了吗?
  • Java SE学到什么样的程度算是OK了呢?
  • 东西好多,我该怎么学啊?我想做项目,不想学原理!
  • …………


下面的内容将会带你理清这些甚至更多疑问。

1.1 Java学习总体方向

对于刚学习Java的同学,应该了解Java学习的大致结构。当然你能在Oracle Java的主页上看到还有如Java FX、Java DB这样的技术。但是既然要和市场接轨,必然要有所取舍。

对于Java SE是我们Java入门的开端,这块内容也就是大家所熟悉的坦克大战、聊天软件、五子棋这些桌面级项目所组成的。学完了Java SE部分,接下来就该选择方向了。

这里有两点需要提出:1) 往分布式方向并不是一定要经过Java EE阶段,但是,学习Java EE对后续分布式的开发有莫大的好处。

2) Java ME虽然还在Oracle官网上屹立,但就市场来看,它的地位已经明显不如android高了。所以从目前来看,没有必要学习Java ME。


1.2 Java SE中应该关注的内容

现在我们列出Java SE的学习中应该关注的方面,以及这些方面里主要涉及哪些核心内容。大家可以根据自己的学习情况,对照这些条目,看看有没有缺漏的内容。在之前提到过如坦克大战这样的项目,这些确实能很好的涵盖了大部分Java SE的内容,所以必要的项目是很关键的。 Java SE大致可分为以下几块内容:

  • 对象导论:如何用面向对象的思路来开发
  • 深入JVM:Java运行机制以及JVM原理
  • 面向对象的特征:封装、继承、抽象、多态n 数组和容器:容器的线程安全问题
  • I/O和NIO:NIO工作原理和应用
  • 并发编程:concurrent包
  • 网络编程:TCP/IP+BIO/NIO UDP/IP+BIO/NIOn JDBC框架和反射:JNDI、连接池、annotation等
  • 其他:正则表达式、字符串等

在这里多提一点,关于Java SE学到什么深度才合适。其实对于后续学习Java EE或者是Android来说,Java SE你只要学会皮毛就足够应付了,当然这里的皮毛是要求你熟练Java语法结构和基本CRUD操作。


1.3 Java EE中该学点什么

Java EE很杂,但是也很容易学,因为你做几个网站大概就能把所有知识点串联起来。所以Java EE方向说好听点儿的叫企业级应用开发,说难听点儿的其实就是做网站。当然并不局限于做网站。

对于Java EE方向的学习,重点在于能够熟练的运用各种框架,以及掌握各种框架构成的核心思想。至于学什么框架,用什么应用服务器,在学习的时候可以采用容易配置的,所有的同类服务都是类似的,精通了一个,相似的学习就很快了。 Java EE方向学习内容

下面来具体的看各个模块应该学点儿什么:

  • 序列化:XML、JSON与Java之间的序列化和反序列化
  • ORM:推荐学习 JSP/Servlet:可以顺带着把JS学习了
  • Spring:IOC、AOP、Spring MVCn MVC:推荐学习 Web Service:JDK自带web service、CXF等框架
  • SOA:了解ESB、MQ等企业级应用架构。
  • EJB:主要了解思路。可顺带着学习JBOSSn 其他:会使用JMS。了解JTA。

还是一点,Java EE方向的学习主要是会熟练运用即可。大点儿的企业都会有自己的框架,技术含量大同小异。会用即可。当然到了这个阶段设计模式的学习也必不可少,设计模式可以穿插于各个框架中进行学习。


1.4 关于Java EE之后应该学点儿什么

对于大多数企业来说,如果你能掌握上面提到的相关技术,并且熟悉SQL和Linux,那找个Java相关工作应该是没有问题的了。如果你想更深入的去应用上面所学的知识,分布式、搜索引擎、大数据处理等互联网热门技术都是你扩宽技能的方向。

开源的Lucene是搜索引擎技术最好的入门,简单易学,而且很多企业对搜索引擎的需求越来越大。诸如MINA、Kafka这样的开源框架,是你步入分布式方向很好的基石。如果你能了解HBase、Mongo这样的非关系型数据库,那就更有利于你思考大数据的问题。

技术是学不完的,而且更新的速度一定比你学习的速度还要快。所以了解市场需求,了解技术的核心理念尤为重要。至于这一阶段可以看什么书,有如下推荐:《分布式Java应用 基础与实践》、《Hadoop权威指南》等。

上述,主要是关于零基础的Java学习路线一个小小的总结,而从基础项目的学习与实践,了解学习那些技术才能胸有成竹的去面试、拿高薪你更需要一个完整的、系统的学习路线来辅佐:

第一:工程协作专题

工欲善其事必先利其器,磨刀不误砍柴工,掌握高效的开发工具能让开发事半功倍

  • Maven
  • Nexus
  • IDEA
  • Git
  • Jenkins

专题特色:最快速、最直接、最清晰的课程设计可以让你轻松搞定开发必备工具;

学习人群:有工作经验,希望快速和系统地提升自我的人群;

学习目的:明明白白掌握开发必备工具,解除你的工具烦恼;

第二:源码分析专题

让思想顿悟,提高自身编程思维

  • Spring
  • Spring 5新特性
  • Spring MVC
  • Mybatis

专题特色:俯下身子、抽丝剥茧、层层深入、领悟开源作者的设计思维;

学习人群:有工作经验,希望快速和系统地提升自我的人群;

学习目的:通过学习、阅读一线技术大咖代码,掌握开源代码的阅读方式,建立独立的源码阅读能力;


第三:分布式专题

高并发大流量,互联网高薪必备,互联网架构师必备技术

  • 分布式框架Dubbo
  • 分布式协调Zookeeper
  • 分布式缓存Redis
  • 分布式消息ActiveMQ
  • 分布式消息RabbitMQ
  • 数据存储MongoDB
  • 分布式数据扩容MyCat
  • 分布式Spring Session

专题特色:来自一线的实战经验,全面、系统、深入,求职高薪必备技术;

学习人群:有工作经验,希望快速和系统地提升自我的人群;

学习收获:深入系统掌握分布式高薪必备技术,提升自我核心竞争力;


第四:微服务专题

拒绝模拟两可,深入详解微服务开发

  • Spring Boot
  • Spring Cloud
  • Docker

专题特色:最透彻的微服务架构讲解、源码级的分析;

学习人群:有工作经验,希望快速和系统地提升自我的人群;

学习收获:深入全面掌握微服务技术;


第五:性能优化专题

深入内核,直击一线故障现场,知其然亦知其所以然

  • JVM优化
  • MySQL优化
  • Tomcat优化

专题特色:浓缩一线实战经验之精华,全面揭秘优化的那些事;

面向人群:有工作经验,希望快速和系统地提升自我的人群;

学习收获:深入理解优化的本质,建立独立的性能优化能力;


第六:并发编程专题

深入理解多线程本质,剖析底层原理,而不满足于基础使用

  • 并发编程Executors线程池
  • 并发编程locks锁
  • 并发编程工具类
  • 并发编程aotmic原子操作
  • 并发编程容器collections容器
  • 并发编程Fork/Join框架
  • 内存模型

专题特色:深入底层、源码剖析,揭开并发编程的内部奥秘;

面向人群:有工作经验,希望快速和系统地提升自我的人群;

学习收获:明明白白、清清楚楚掌握Java并发编程的奥秘;


第七:电商项目实战

大型分布式电商项目实战,各类技术综合运用,多种设计思路、解决方案、架构理念融为一体,全方位提升项目实战能力

  • 项目介绍
  • 用户认证
  • 商品中心
  • 订单中心
  • 支付中心
  • 数据分析
  • 后台管理

专题特色:来自一线的架构与设计、直击电商系统痛点、全程手撸代码;

面向人群:有工作经验,希望快速和系统地提升自我的人群;

学习收获:掌握一线项目实战经验,复杂场景的驾驭能力,综合技术的应用能力;

综上,这七个专题包含了当下热门的刚需技术,也是通往架构师的一个必经桥梁。

架构师目前有公开课:

基本上每周都会有新的课程可以学习

关于公开课、完整路线图学习大纲,有需要或者有什么疑问的,各位可以评论留言,或者私信我,有任何关于学习上的问题,也可以留言,诸多经验丰富的老师都在等待着解答你的疑惑:知无不言、言无不尽……

其实讲道理,java后端基本围绕着CRUD,哪怕是搞分布式也是为了提高CRUD的效率

同样是Java程序员,为什么你每日都在crud,别却能靠跳槽涨薪17K?
今天小编就带您来看看这一份Java进阶架构知识图谱!
今天在这分享一份最完整详细的Java架构进阶学习路线最完整,没有之一!同时需要一份完整的Java后端进阶学习路线导图的可以私信我回复【架构】即可免费路线导图下载地址,文章有点长,请大家耐心看完,话不多说直接上干货!
架构师筑基必备技能
并发编程
JVM性能优化
网络编程与高效IO
Tomcat架构
MySQL性能优化
架构基础必备Linux


设计思想解读开源框架
每周比别人多花6小时,知道别人不知道的底层技术
设计模式六大原则
23种设计模式
Spring5源码解读
SpringMVC框架源码解读
MyBatis框架源码解读


高并发分布式架构技术—解决性能的源泉
分布式架构思维
Zookeeper
Nginx
ActiveMQ消息中间件
RabbitMQ消息中间件
RocketMQ消息中间件
kafka
EklastlcSearch


高性能存储—项目性能起飞
Redis
缓存方案
MongoDB
MySQL高可用
Mycat
Sharding-Sphere
FastDFS


分布式扩展到微服务架构
RPC框架
Dubbo服务框架
SpringBoot
Spring Cloud Netflix
Spring Cloud Alibaba
Docker
Kubernetes
Service Mesh


分布式方案及团队协作工具
分布式事务解决方案
单点登录方案
分布式任务调度方案
Maven
Jenkins
git


如何学习呢?有没有免费资料?
针对上面的学习路线还整理总结的Java进阶学习笔记和Java进阶核心知识笔记,在这也是免费分享给那些有需要的朋友,其中囊括了Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发等架构资料和完整的Java架构学习进阶导图!
资料免费获取方式:转发,转发+关注后私信【架构】即可获取资料免费领取方式!






学习某种语言的初始动机很多时候是一个随机事件,你追问到底,也许没有答案,也没有意义。


但是未来的发展切是理性的,逻辑的。

相信很多人都有这个问题,换一个问题来说,Java程序员如何进阶?

当你会CRUD时,至少你会基于的语法了,可以说能独立开发完成一些基本的功能。那如何更强?

总结下来有三条路:

1、被动的,公司有新的研发方向需要你;

2、主动的,对某种技术有极强的兴趣;

3、主动的,思考如何以更好的效率与质量完成类似的项目。

以上三种情况都是需要你更多的付出与研究,再配上一些运气,才可以让你有所得。


其中第1路需要更多的运气,基本上80%的公司都不会去研究什么新的技术方案,都是在老方案上继续扩展,重多注重公司业务的方向。就算你在那20%里头的公司,可能也只有1%的几率落在你头上,因为有研发想法的公司,基本上要不是技术大佬自已想出来,都已经研究一定底了,仅仅需要一个人来做执行落实。如果技术大佬没有相关技术或没有时间,很有功能会外招一个有技术底子的大牛。所以,你仅有1%的机会去尝试新的研发方向。


其中第2路是主动的,你可以掌握的一个路子。但是这种也代表前期无法有充足的时间去研究。这仅仅是你有个人行为,没有其他资源可以有帮你完成技术研究。如果是需要一些比较复杂的环境,或昂贵 的设施的话,基本上你仅仅只是做一些浅层的研究,能做到纸上谈兵就很不错了。当你的研究上不去的时候,你想跳去相关领导的公司里头,基本是从初级的方式进入。

其中第3路是我非常支持的,你现在做的东西肯定是适合你,而且有机会的,也是你可以掌握控制。

很多时候人选以上两种路子的主要原因是迷上一些高大的技术名词,对这些技术本质上的东西其实根本不了解,或是出于一种显摆的心态。能会一些平时别人不懂的技术,其实自已也就学佣皮毛,就可以在竞争中显示出优越感或者安全感。


假如沉下心来,好好研究CRUD,也可以发现很多需要研究的问题。问题再多也好,无非围绕两个目标:

效率与质量

效率与质量这两个包含的内容太多,抓出其中几点都可以让你脱离普通程序员的常规思想,达到进阶的效果。


关于效率

所说的效率主要指开发效率,并非所说的软件性能,性能其实算是软件质量的范围。开发效率应该是发下问题:

如何更快地完成编写?

我这先着手一些代码层面的小问题出发,再讨论一些团队层面的提升思想与方案。

先提一个问题,开发一个类ERP系统时,系统有大量有表单。其中一个业务需求是需要所有的表单都需要知道创建人,创建时间,更新人,更新时间,甚至需要修改操作日志。

这些你应如何开发?普通的CRUD的程序员是不是在每一个业务对象实体上加入相应的字段呢?

如果现在是一个新项目,有30+个表单,是不是需要考虑一个更好的设计方案。而有没有在实现这个功能前就有考虑到这个问题?

如果可以提出这个问题的一套解决方案,则算是一个相对高阶点的CRUD写手,这个优越感是值得有的。

讨论一些所谓的高级技术,其实很多时候都是服务于开发效率,如果你搞清楚技术的着重点与思考方向,你是无法真正深入某项技术。像Spring,Struts这些工具,本质上是为了提高你的开发效率。你首先得搞清楚它是从什么方面去提高。如果往深地去思考,很多时候是处理人心理特征与机器间存在矛盾的地方,减少人的思考负担。


关于质量

程序最大的问题是如何避免出现bug,bug率可以说是衡量一个程序员最重要的指标了。

如果一个程序员没有处理好自已的bug率,无论你还在写CRUD还在搞一些高级的技术,都是难以提升。减少bug也是很多所谓高级技术的目标。一些技术如JUnit就是一个减少bug率的方案。测试驱动编程并不简单,但也没有很多人预想的那样高级高仿,本质上还是bug率的问题。

其中一些是煅练好编程的习惯,很多编码的细节都是需要花时间去思考与调整。虽然不能太过于完美主义,关键在于你肯去重写原来写的代码,不各种不同的方式去实现,最终观察不同编码方式的bug率。


公司与个人

当你存在CRUD迷惑时,很显示你是到了某一个阶段,暂时没有明确的目标,或是想着去研究一门新的技术。或者是你发现你感兴趣的的东西太多了,每一样的东西都想学。这种状态在很多公司的领导都会认为你是浮躁的。其实这是一种思想上的懒。有问题是好事,这时需要公司与员工之间更好地沟通,员工需要公司的支持,给出时间,资料,机会。公司需要员的专注,动力。如果在上边三种条路子都没有机会,那么可以考虑换一家公司。你是公司管理人员话,手上没有问题这些问题的员工,也可以试着换一些新的血液。

2点

第一、选一家大厂

第二、进这家大厂

只会低级的增删改查还是不行的,要写就写一些高级的

下降一个抽象层去理解不同维度的痛点并学习相应的解决思路。

责任编辑:
热门阅读排行
© 16货源网 1064879863