其实这种事情都会有两个观点。
一个观点是:建议使用自己熟悉的技术,采用简单的架构去实现项目,等到你把项目做出来了,能用起来了,客户认可了。以后的升级,那是你就可以比较轻松的采用其 它的架构来重构,这样你的风险,压力就相对减少很多了。
而这回,我想顶一下第二个观点:
其实如果你对代码要求比较严格的话,你就会经常发现,你的代码有很多东西可以抽取出来,或者做在公共的模块,或者作为框架的底层,我们就简单的拿jdbc来说吧,
首先,是connection的管理,这点一般用jdbc熟一些的话,都会有管理connection的公共模块,虽然偶尔会碰到性能的问题,但是这点我们暂且压下不表。
我们查询的时候,每次都要用
rs.get...("name"),
rs.get...("id"),
rs.get...("age"),
rs.get...("gender"),
rs.get...("hobby"),
然后修改数据库的时候,还要拼写update语句跟insert语句,经常还要费很多时间来调试这些多余代码的问题,这时候你就想,不行,我一定要写一个公共模块,省得让我每次都要定这么多代码,于是你的第一个公共模块产生了,然后测试啊测试,改进啊改进,叮叮响,过了几天时间的考验,这个公共模块终于可以放心使用了,项目进度开始快一些了,总算不用再拼SQL了。
后来在做统计模块的时候,突然又发现,之前在用到的一些SQL函数,好像在客户要求的数据库上不怎么行啊,于是又去查了一下资料,又过了几天(可能这次不用几天),然后终于放心,所有的函数都正常了。
接着又不可避免的碰到了分页的问题,你对自己说,不用怕,我上回就写了一个分页的,没有问题!可是Ya的你突然发现,上回的那个分页是用游标实现的,这回客户是要求用SQLServer,唉,SQLServer的游标,不提也罢,想来想去,只好自己拼SQL语句来写分页了,又是count又是top,测了又测之后,又过了几天,啊哈,终于分页的公共模块也做好的,可以放心使用了,好,项目的进度又可以加快了。
做着做着的时候,发现,咦,好像这表得增加一个字段才行,增加了,然后所有查询的SQL语句加一下,所有insert跟update的代码修改一下,页面修改一下,嗯,现在应该正常了,看起来倒是没什么问题,咦,报表好像不怎么对啊,靠,这边还有调用这个表的代码,妈的,改吧改吧。磨蹭了好几个小时(当然,熟练的话,并不用几个小时),总算看起来都正常了。
这一回,这个功能中有一次用户请求,访问了好几次数据库,不行,这里应该用个cache,否则性能上会有问题啊,算了,用算法解决一下,尽量少访问数据库好了,我对cache还不熟呢。(写啊写啊,Batch Size,这样多,那样多,Fetch Size。。。,终于,看起来正常一些了)。过了一段时间,靠,这边又要访问好几次数据库,Ya的受不鸟了,性能爱咋的咋的,反正一个地方慢又不要紧。Oh !!!这边也是好几次,这边又是好几次,那边又是好几次。不行了,我老老实实写个cache支持吧,于是又叮叮当当了好几天,终于,有个粗糙的cache出来了,终于速度可以看一些了。后来改进又改进,测试又测试,累死了,老子好不爽啊。
好像天下有点太平了,啊,你说我这个地方忘记更新你增加的那个子表啊,算了,没关系,我明天看一下代码,这个容易解决点。嗯,我改了那边的代码了,会更新子表信息了。什么?你说取主表的记录跟相应的子表记录列表麻烦啊,没关系,我更新一下处理resultset的公共模块,明天再说。
Oh ......对这样子复杂的查询好像现在的公共模块支持不了啊,算了,这样子的查询不要用这个公共模块,我们手动写一些代码好啊,别跟我讲这样代码结构很难看,你以为我不知道啊,TMD。
TMD的,怎么这边的SQL老是运行不了啊,不会是分页底层模块的问题吧,靠,怎么你的SQL语句有这么多order,group by,靠,还有top啊,这当然过不了了,不要吵了,现在时间改,不理它,直接用个假分页就行了。你又说代码结构难看,小心我抽你哦。
公司新来一个程序员,看了几天代码,不停的抱怨说,这代码写得真差啊。。。。。。
分享到:
相关推荐
Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密 Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。 设定字符串为“张三,你好,我是李四”...
环境配置:选一款IDE即可,基于谷歌开源项目 提供所有数据与代码,追随热点持续更新 【自然语言处理通用解决方案】 需要熟悉word2vec,RNN网络模型,了解词向量如何建模 重点在于Transformer网络架构,BERT训练方法...
Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。 设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang...
Bootstrap是美国Twitter公司的设计师Mark Otto和Jacob Thornton合作基于HTML、CSS、JavaScript 开发的... [2] 国内一些移动开发者较为熟悉的框架,如WeX5前端开源框架等,也是基于Bootstrap源码进行性能优化而来。 [3]
本书共介绍了10个项目案例,涵差了目前几个比较流行的开源框架,如Srruts、Spring、Hibemue、JSF,同时还有用于分布式企业锯开发的EJB技术,在项目的开发过程中,笔者还多次使用到了Ajax技术,以增强用户体验。...
1、 Struts是一个为开发基于模型(Model)-视图(View)-控制器(Controller)(MVC)模式的应用架构的开源框架,是利用Servlet,JSP和custom tag library构建Web应用的一项非常有用的技术。由于Struts能充分满足应用开发...
Bootstrap是美国Twitter公司的设计师Mark Otto和Jacob Thornton合作基于HTML、CSS、JavaScript 开发的简洁、... 国内一些移动开发者较为熟悉的框架,如WeX5前端开源框架等,也是基于Bootstrap源码进行性能优化而来。
1、 Struts是一个为开发基于模型(Model)-视图(View)-控制器(Controller)(MVC)模式的应用架构的开源框架,是利用Servlet,JSP和custom tag library构建Web应用的一项非常有用的技术。由于Struts能充分满足应用开发...
本毕业设计将采用SpringBoot技术和vue技术开发一个基于Eclipse的项目管理...本毕业设计旨在通过开发一个项目管理系统,熟悉和运用SpringBoot、vue等主流技术,提高自身的实际开发能力,为将来的工作打下良好的技术基础。
熟悉Springmvc,Spring,MyBatis,了解Struts2, Hibernate等开源框架 熟练使用Eclipse、SVN、Maven项目管理和项目构建工具。 熟悉应用服务器软件Tomcat等容器配置和部署,能够使用Linux操作系统。 掌握JavaScript...
基于Cesium时空数据可视化后台Java SSM框架的毕业设计项目是一个技术含量较高且实践性强的项目。Cesium是一个开源的WebGL地图渲染库,它可以用来创建丰富的地理信息系统(GIS)和地球表面模拟应用。而Java SSM框架指...
由于本人比较熟悉ssh框架技术编程,熟练使用了sqlserver数据库,所以开发本系统我们采用SSH框架技术设计模式,采用了开源框架Struts,它采用了当今软件设计的最新技术,具有开发效率高、设计灵活、生成的软件界面友好...
你可以按照熟悉程度的顺序列出你熟悉的编程语言、开发框架、数据库技术以及其他相关技能,如版本控制、测试工具等。 工作经历:在这一部分,你可以列举你过去的工作经历。对于每个工作经历,包括公司名称、职位、...
熟练掌握java基础知识,具有良好的编码习惯; 熟悉java高级特性,比如多线程编程、网络编程、反射、注解等; 熟练掌握javaweb技术,具有独立的开发能力... 了解阿里分布式开源框架dubbo,有一定的使用经验;
并且随着云计算的普及以及对虚拟化技术的大量需求,使得云计算人才供不应求,所以一些大型企业对Docker专业技术人才需求较大,在此背景下,制作本课程,目的是让更多的学员能够熟悉Docker,熟悉云计算,胜任日常企业...
小米公司的 Rose 是一个 Java 的 Web 开发框架,但不仅仅是框架。Rose是面向使用Java开发的同仁们的。Rose 提供的各种特性和约束惯例,目的就是为了使您在能够轻松地开发web程序。如果您觉得Grails的想法很好,您...
一个简单的Flutter应用程序,用于管理客户端加密帐户。 您可以在找到相关的后端应用程序。 设置 设置颤振。... 克隆项目。 git clone https://github.com/janos-gonye/pass-manager-frontend.git 开发。
AJAX支持:WSTMall继承了thinkphp内置AJAX数据返回方法,支持JSON、XML和EVAL格式返回客户端,WSTMall不绑定任何AJAX类库,可随意使用自己熟悉的AJAX类库进行操作。 多语言支持:系统支持语言包功能,项目和模块都...
例如,对于前端开发者来说,他们需要熟悉UNIAPP框架的使用,掌握HTML、CSS、JavaScript等前端技术,以及熟悉网络请求、数据交互等后端技术。而对于后端开发者来说,他们需要熟悉数据库设计、API接口开发、服务器部署...