![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java设计与开发
文章平均质量分 78
windshome
这个作者很懒,什么都没留下…
展开
-
Java建立Socket慢的问题
在Java编程中,一般都是使用下面的语句来建立Socket String ip ="192.168.0.100";int port = 8090;Socket socket = new Socket(ip,port);//....... 在有些JDK和JRE的版本中,会发生这个new Socket语句非常缓慢的问题(Linux和windows...2013-03-26 17:43:37 · 565 阅读 · 0 评论 -
Java服务器端 稳定性
一篇自己写的老的文章,那会儿还有Sun和BEA呢,呵呵,就不改这些文字了,希望对大家有所帮助。 JVM中的服务器软件的稳定性 1 引言 1.1 编写目的 我们的很多产品都是基于Java的服务器软件,这些服务器软件,都需要长期(24×7)稳定运行。这些软件,都是用Java预言开发,基于JVM来运行的。这...原创 2013-02-04 22:37:42 · 513 阅读 · 0 评论 -
慎用Java 自带两种线程池!
Java5相比之前的Java版本,在并发编程上,有了非常大的提高,加了很多类,提供了很多可用于并发编程的工具包和工具类。尤其为人们所称道的,就是Java自带的线程池。 Java5线程池的介绍文章,可以说在网上比比皆是,我就不再重复了,只是简单提一下,线程池给并发程序带 来了几个好处: 1、创建和销毁线程的开销 2、保护系统资源,避免创建太...原创 2013-02-21 17:09:06 · 250 阅读 · 0 评论 -
java Out Of Memory 内存不足
OOM这个缩写就是Java程序开发过程中让人最头痛的问题:Out of Memory。在很多开发人员的开发过程中,或多或少的都会遇到这类问题,这类问题定位比较困难,往往需要根据经验来判断可能出现问题的代码。原因主要是两个:对象没有被释放(多种情况引起,往往是比较隐蔽的引用导致被Hold而无法被回收)。另一种就是真的Memory不够用了,需要增加JVM的 Heap来满足应用程序的需求。最近有同事...原创 2013-07-29 17:37:39 · 228 阅读 · 0 评论 -
用户名口令登录的一种安全增强方法
在这个时代,虽然很多人也意识到了信息安全的重要性,但是目前很多的场景里,还是用一些比较简单的方式来做身份的认证。比如网站登录,还是很多地方都是使用的用户名和口令机制。 身在信息安全产品设计这一个行当里,我当然早就清楚有哪些好的方法可以使身份认证(登录)更加安全,但是这些安全措施,很多都是要增大成本且不易实施的。在这种情况下,想方设法变得更安全,其实就是成本和安全之间的一个平衡,如何...2013-08-06 21:16:19 · 1111 阅读 · 0 评论 -
从设计不足的JDBC,说到数据库连接池
JDBC是Java里边一个很重要的组成部分,现代的很多软件应用,都和数据库相关,因此,JDBC起着日益重要的作用。即便一个Java开发工程师不怎么直接使用JDBC,而是使用ORM等框架,但是这些框架也是给予JDBC包装而来的。因此,JDBC的不足,也给这些ORM还有数据库连接池组件带来了很大的不便。 我们知道,Java的Statement(和PreparedStatemen...2013-08-06 21:48:51 · 103 阅读 · 0 评论 -
代码先行的ORM是“愚蠢的”---转发一篇架构的东西转一下,写几句自己的感想...
不管作者提倡怎么做,他的观点非常合我的脾胃,因为我本身就认为ORM是个累赘,食之无味: ==========================================================================在使用ORM构建基于数据库的项目时,开发者可以选择是先设计数据库表,还是先设计类或抽象模型。为了展开讨论,我们先列出Frans Bouma的结论...2014-01-17 11:48:21 · 169 阅读 · 0 评论 -
关注 Java 线程池的任务队列长度
Java 5.0 就开始自带线程池的实现,其中固定大小的线程池,对普通使用还是很好用的。就是 Executors.newFixedThreadPool ,指需要指定一个大小数目就可以。相对于其他几种方式,易于实现高效稳定的服务器。 但是好用归好用,一些需要非常细心的问题,还是需要关注的,尤其是高并发场景,7*24不间断运行场景下。本文就是把这些地方记录下来,在设计和实现时,在这些...2013-10-21 17:18:28 · 2926 阅读 · 0 评论 -
Java:从AOP之滥觞说起设计师的职责
从表面上来看,AOP是个好东西,但是仔细看,发现不是那么美。 AOP的不当使用,使代码失去主线索,成为“方面”的分割。而主线索代表了一个产品代码中所围绕的主要概念。“方面”应该是为“线索”和“流程”服务的,在AOP之前的编程范式中,流程会调用好多基础包完成自己的流程,而AOP之后,无须再调用,自动织入。其实想想,AOP的织入和普通用的模板模式何其相似,模板模式用的好,效果也非常接近...2013-10-22 15:29:32 · 86 阅读 · 0 评论 -
最好的ORM应该这样
我认为这个说法非常好:事实上,在数据的访问上,我们需要的,仅仅是一个小小的库, 帮助我们完成连接的管理和结果集数据的自动提取而已。 比起现在越做越大,越做越烦人且难用的东西,这才是好办法。也奉劝程序员们,不要被概念绑架。如果我需要一根棍子,那么就去找一根棍子,而不要给我一棵树让我来削棍子;如果我需要一碗水,不要给我一条河。...2015-06-01 15:14:02 · 258 阅读 · 0 评论 -
也谈什么时候Java比C++快
刚打开iteye就看到这个标题“Java什么时候比C++快”,觉得很好笑。 你要比,就比同等水平的基础上的相比,笨蛋写得C代码和C++代码,去和高手写的Java代码比效率,有什么意义呢? 我是写密码算法的,深刻知道算法C和C++实现和Java实现之间的效率差,甚至也比对过C代码和汇编代码的效率差,计算机是个死的东西,再怎么优化,Java也就是和C效率相当,也没有见过超越C...2015-07-06 20:31:31 · 174 阅读 · 0 评论 -
面向对象:我看所谓的充血模型和贫血模型
在网上看到这样一段关于对象设计的说法:充血模型其实很简单,就是面向对象设计的本质:“一个对象是拥有状态和行为的”,比如说一个人,他眼睛什么样鼻子什么样这就是状态,人可以去打游戏或是写程序,这就是行为。为什么要有一个“人Manager”这样的东西存在去帮人“打游戏”呢? 举个简单的J2EE的例子,设计一个与用户(User)相关的功能,传统的设计一般是: 类:Use...2013-07-17 19:51:36 · 433 阅读 · 0 评论 -
系统设计和开发中,方法论比技术更重要--兼谈怎样做Java服务器的性能分析和调整...
记得在前些年,有一次,在客户那里做系统的性能分析和调整时,也是一点一点的分析,也没有什么头绪。有一个客户那边的负责人,对我们当时的一些做法表示不理解,当时他说了一句话:“做性能分析和调整,首先你得有自己的方法论,然后再谈具体的技术手段”。当时我们还觉得这个客户对我们有意见,觉得自己的做法没有什么不对的。但是在后面这些年里,我深刻的感觉到,这句话真是金玉良言。 其实我并不大喜欢充满哲...2013-07-12 18:53:58 · 143 阅读 · 0 评论 -
使用Java来写shell
从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁。用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操作。在Linux GUI日益完善的今天,在系统管理等领域,Shell编程仍然起着不可忽视的作用。深入地了解和熟练地掌握Shell编程,是每一个Linux用户的必修 功课之一。 ...原创 2013-04-01 10:47:22 · 757 阅读 · 0 评论 -
Oracle 和 DB2 数据库中调用Java函数
举个例子,例如从长整型时间(毫秒数)转为java.util.Date对象: Oracle9:使用PL/SQL,创建Java函数:create or replace and compile java source named long2date aspublic class Long2Date{ public static java.lang.String entry(long dt)...原创 2013-04-14 00:19:01 · 375 阅读 · 0 评论 -
是否需要重复发明轮子--说说开源组件的使用
这不是一个全新的话题,“不要重复发明轮子”已经成为了软件开发领域里的一个金科玉律了,但是,我在这里提出我的问题:“当别人发明的轮子不适合你的时候怎么办?”,是削足适履,还是换别的轮子?,希望和大家共同探讨。 我算是比较早研究开源组件的,早在10年前,我就有有闲了就去sf.net去逛逛,看看有哪些东西我可以借鉴,我可以使用,来减少自己产品开发和项目开发的工作量。...2013-04-25 17:23:34 · 149 阅读 · 0 评论 -
Java异常处理
这是几年前我写的一篇文档,拿出来分享。可能有些内容过时和不够用了。 引言 本文对Java异常处理机制以及常用的异常处理方式进行了大致的描述。鉴于各种有关Java的文档中对于异常处理有很多的说明,因此,本文主要侧重于说明怎样在面向对象分析和设计(OOA & OOD)中进行异常设计,以及与我们常用的异常处理方式相关但容易出现问题的地方进行了探讨。目前,关于异常设计的规...2013-05-06 22:02:29 · 192 阅读 · 0 评论 -
JDK7资源自动释放的介绍与深入思考
资源自动释放是JDK7的一个重大改进。 jdk7提供了try-with-resources,可以自动关闭相关的资源(只要该资源实现了AutoCloseable接口,jdk7为绝大部分资源对象都实现了这个接口)。 try-with-resources 语句是一个声明了1到多个资源的try语句。资源是指这个try执行完成后必需close掉的对象,比如conn...原创 2013-05-13 16:10:46 · 307 阅读 · 0 评论 -
Java ServerSocket和Socket编程的经验和教训
Java的ServerSocket和Socket是开发网络应用程序的基础。ServerSocket和Socket类是java自带的,(java.net.ServerSocket和java.net.Socket)。 我不打算再重复叙述Java文档中关于这两个类的描述,只是想把使用者两个类中的一些经验写下来。 ServerSocket 的队列长度 ServerS...原创 2013-05-22 21:18:31 · 147 阅读 · 0 评论 -
关注你工程里的JAR包--Java和J2EE开发的另一种JAR地狱
这里说的JAR地狱,指类路径里JAR包太多这个问题。另外一个“JAR地狱”的解释是“反模式”中的一个概念,请见http://windshome.iteye.com/blog/1840651 我记得打开一个网上找来的工程,里边都会有一堆JAR包,尤其是web工程,里边看吧,光Apache Common的JAR包就很多,再有log4j的、日志的好多,sl...2013-06-05 17:24:57 · 98 阅读 · 0 评论 -
从一个实体类对应多个表的困难来看Hibernate的实体表,以及我对Hibernate、ORM设计理念的认识...
这几天在工作中,需要设计一个业务中需要的类,想把这个类从数据库里取出来的时候发现使用Hibernate并不容易实现。工作代码不好直接拿出来,举个差不多的例子吧。 例如用户在系统中,保存的信息包括简要信息(用户名、联系电话、Email、性别)和一些图像信息(照片)。 但是在系统设计时,我的设计方式都是遵循业务的需要,设计一个“用户”类,...2013-06-26 14:07:43 · 357 阅读 · 0 评论 -
hibernate 一个实体类映射多个表的方法
首先得承认我学Hibernate这东西时间还比较短,了解太浅,遇到这个问题的确不知道怎么处理,但是在网上搜索页没有找到资料,多亏 jinnianshilongnian 老兄给我了一个链接,看到,的确在Hibernate中有很简单的处理方式,在这里表示感谢。 真的是活到老学到老。而且,这也坚定了我自顶向下的设计理念,我坚持先从业务分析中得到对象再考虑数据库的...原创 2013-06-27 09:13:31 · 879 阅读 · 0 评论 -
我认为POJO是一个错误的概念
这篇内容其实没有经过太多的深思熟虑,只是个人一时的感觉。从个人风格上来讲,我倾向简单质朴的设计开发理念;从方法论上,我更加倾向自顶向下的设计;从做事情的目标上来看,我追求质量优先,更愿意使用较为保守和稳妥的理念和方法。 看了一些J2EE和Java/web开发方面的内容,说个个人的感受和不客气的话,感觉POJO这东西就相当于C语言的struct...2013-07-02 15:57:55 · 85 阅读 · 0 评论 -
从jvm的自愈说起-设计JVM的疯子和写java程序的疯子
http://it.deepinmind.com/jvm/2014/12/15/self-healing-jvm.html这里说了一个观点,叫做 JVM的自愈能力,就是说JVM在遇到问题时会自己发现问题解决问题,举例如下: package eu.plumbr.test;public class HealMe { private static final int ...2014-12-18 09:10:58 · 282 阅读 · 0 评论