从一篇良好帖子说起

       昨天坐在长途汽车上,实在无聊之极,用手机上了下JE,无意之间发现这篇帖子:主题:关于Java开发不明白的一些问题 http://www.iteye.com/topic/947017 ,这篇帖子让我想了很多,也认真地看了很多人的回复。
      在本文开始前,我先表明下观点,很强烈地支持楼主。但这表示说认同楼主所有的观点。
      解耦,确实是个好东西,不管从前期的开发设计还是后期的扩展维护。但正如楼主所说,很多时候它的确只不过是一个显摆工具, 但更多的时候我会欣然接受解耦,并尽力解耦设计。原因也很简单:一是它确实好(这个好还真的不好举例)、二是为了显摆、三是为了¥。 
      本来我一直不愿意去比较struts1与struts2,但面对此帖子,我对楼主提到的"与Web容器完全解耦"谈谈感受,在struts1中,它把web域作为方法参数进行耦合设计,而struts2确并没有要求一定要使用web域,但事实上,作为C层框架,很多时候的确都离不开web域,由于在struts2中有了值栈技术,有时确实不会直接去使用Request这样的web域。而且有的时候action只是一个逻辑性的跳转,所以就更不会直接使用。总结:在web开发中,控制层并不是一定会直接使用web域,使用与不使用的比例也难以估定,所以与web容器解耦是有一定道理得。其实我当初也很迷茫“为啥明明是web的C层框架,却想着与web解耦”,struts2这样做至少有三个理由:一、值栈技术支持 二、很多时候的确不会直接使用WEB域 三、获取Request这样的web域很简单,且获取的WEB域既可以是sevlet耦合的也可以是非耦合的。 

     楼主提到 2)更容易测试,Web工程里面的逻辑有几个是脱离了Web环境来测试的?  略略看下struts2关于junit测试文档,发现它的确是易于测试的。
     接口的设计:在think in java中认为恰当的原则是“优先选择类而不是接口,从类开始,如果非常有必要面向接口设计,那么进行重构”。我比较认同这种观点,但略有改动,我不觉得一定得从类开始,直到发现有必要面向接口设计时才进行重构,因为有些时候我们完全可以事先确定是否来使用接口或者直接使用类。但从类开始也很好,毕竟有了像eclipse这样的开发工具的辅助,重构也很简单。接口除了大家所说的规范设计外,我觉得它看起来更容易。比如维护一个项目时,如果先看下简洁的接口设计便会对项目有宏观性有一定的把握,至到我们需要它的细节时,我们再去看它的实现。
      关于IOC、DI这类的东西,也没太深的感受,反正跟着主流走,随叫人家是牛人,其实现实就是这样,很多时候你必须适应大众。之前我在广东的时候,很多人都喜欢说“我叼你”,当时我不晓得啥子意思,我就问一个30岁左右的四川老乡,他这样回答我的“管球它这么多干啥子,跟球到他们说就是”(有点粗,但基本是原话)。生活也是这样,有的时候我们需要思考,有的时候也只好“随波逐流”,“随波逐流”的原因也很简单:一是“流”本就是前人或高人在引导 二是要生活 三是我们很难对“流”有影响。 
      注解,这个问题我最想谈谈。楼主提到  “本来很反感XML的配置文件,仿佛和我一样的人大有人在,所有现在Annoation开始盛行 不过现在看来我倒是有点觉得XML没有那么反感了 ” 注解的好,特别是在使用JPA时,我深深体会到注解的好处,然而对于控制层如果要让我放弃xml而选择注解或者使用所谓的“零配置”,正如楼主所言,我也的确反感。就目前而言,我一个肤浅的观念是“持久层用注解,控制层用xml配置文件”。
    

     我想起了当初在学校草率地开始一个练手项目后的无赖,我想起了当初不能理解为什么非要在<servlet>与<servlet-mapping>都使用<servlet-name>,而不直接写在一起。想起了第一次用eclipse这个工具的激动。想起了为了一个乱码纠结几天而不能解决。想起了某年过年的艰苦奋战。回忆这些,我只是想说谁都会有一个过程,一个对同事不断认知的过程。有思想的人也会积极地进行自我否定。

 

     正如大家所说,很多时候设计都是一个“度”的问题,没有绝对的“对与错”,关键的关键是把握这个“度”。在此感谢楼主向那些没有思想的人敲响了警钟,也向那些快没有思想的人敲响了警钟。    

    也正如大家所说,我们这样一大批人是没有什么真正意义上大项目经验,所以理解也可称之为肤浅,我也和一大批人一样期待一个真正的大项目,这样N年后再来暗笑我这篇肤浅的说词。

    

    最后的最后,再次向楼主致敬。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值