架构设计
渭水飞熊
这个作者很懒,什么都没留下…
展开
-
面向对象语言三大特征和“边界"
人类解决复杂问题的重要办法之一就是“分解”,那么依据什么去分解?这里必须提到一个概念:边界。我们回归软件架构设计,清晰的边界是一个系统是否足够优秀的首要标准,我们常说“高内聚,低耦合”实际上也是在强调一个边界问题。如果没有边界,我们怎么能知道哪些功能、类、函数应该划归到一起?如果没有边界,怎么来谈两个模块、类之间的耦合度关系是高还是低呢? 倘若系统、模块、类的边界不够...原创 2019-11-18 14:50:02 · 498 阅读 · 0 评论 -
架构设计5步曲
狭义上的架构设计过程就是“分+合”的过程,一个系统=架构元素+架构+整合机制。那么怎么切,依据什么切?切了以后怎么往一起整合?我们这里做个简单的介绍。 架构设计大的步骤:理清楚要建设的系统的环境上下文要求和需求、梳理出关键核心问题、根据核心问题定义边界、根据边界切分架构元素(子系统、模块、服务、类)、定义架构元素之间的交互机制。一共5个步骤,按照这5个步骤进行...原创 2019-11-16 20:02:09 · 1150 阅读 · 0 评论 -
架构设计的目的和意义
架构设计,简单说就是“切分”和“组合”的艺术,主要目的是解决软件系统建设过程中的主要矛盾。这个和我们人类社会划分组织机构的目的是一样的。我们可以比较粗浅地认为架构就是:模块(子系统)+交互机制,以及一些约束规则和指导原则,那么为甚要做架构设计呢?我们只有理解这个目的才能做的更好,我个人认为可以归类为以下几个理由: 第一:做事情正确的方法,应该是从粗到细、层...原创 2019-11-13 10:26:33 · 6025 阅读 · 0 评论 -
java web应用文件无法上传的一个原因
前天还好好的程序,昨天就无法进行图片上传,开始以为是nginx的原因,因为之前nginx加载网页总是加载不全,所以修改了下nginx的配置。可是经过排查以后没有nginx有啥问题。最后怀疑是硬盘是不是满了,使用df -h命令,结果得到以下结果: 本来以为是放图片文件的硬盘满了,结果却偶尔发现是:/dev/xvda1达到了100%。 解决办法:清理各种tomcat日志、ngin原创 2016-10-27 09:44:14 · 1187 阅读 · 0 评论 -
用Maven自动生成带有sh和bat启动脚本的java应用
java做web开发,导致很多人不知道使用Java如何开发普通的项目,这里我们做个简单的介绍。java项目一般都是使用脚本启动,比如windows上的bat文件和linux上的sh文件,而要写这些文件常常需要花费不少精力,很多人肯能会改这种文件,但是要凭空写一个就比较费劲。现在有maven插件帮我们解决这个问题,效果也是不要不要的,具体步骤如下:第一步:使用maven自带骨架maven-arch原创 2016-08-08 13:00:42 · 14242 阅读 · 2 评论 -
HttpClient的工具类
经常需要使用HttpClient进行交互,有的时候需要保存和携带cookie,以及保持客户端和服务端的Session,比如在Android客户端访问服务端的时候可能需要满足以上的要求,则可以使用以下的方式。package com.mobile.android.yiloneshop.utils;import java.io.IOException; import java.io.Unsupporte原创 2016-07-10 00:07:19 · 585 阅读 · 0 评论 -
solaris10上tomcat无法使用64位JVM
同事在solaris10上装了,但是tomcat跑起来后,却发现tomcat使用的JVM是32位的,“震惊”之余最后发现是以下原因: solaris上JDK比较特殊,64位是在32的基础上封装的,所以装JDK的时候需要装32位,也要装64位。同时在运行java命令时默认是32位,如果需要用64位则需要加上“-d64”这个参数,所以只需要在tomcat的catalina.sh上的启原创 2016-03-09 13:20:19 · 774 阅读 · 1 评论 -
ehcache报:java.net.UnknownHostException: xxx: xxx: 未知的名称或服务错误的原因和解决
系统使用到ehcache,部署到linux上,结果系统在启动的时候报:java.net.UnknownHostException: XYPTAPP1: XYPTAPP1: 未知的名称或服务的错误。网上搜到一个文章说的解决办法:http://bjyzxxds.iteye.com/blog/2155347,但是这是啥原因呢?记得ehcache中并没有配置和网络有关的东西啊,不管了打开源码看,按照报错的原创 2016-03-18 16:13:22 · 6758 阅读 · 1 评论 -
java序列化时如何遍历复杂对象嵌套的所有对象
先说开发环境,我们是OSGI环境,使用的是struts2自带的OSGI插件的环境(当然了,我们对该插件做了升级,Struts2自带的插件支持felix版本比较低)。在解决项目问题时需要对系统中的一些对象进行序列化和反序列化,而要序列化的对象是放在OSGI环境中的bundle中,但是我们的序列化工具因为某种原因必须放在war包的lib下,而ObjectInputStream类在反序列化的时候不但需要原创 2015-12-03 18:22:00 · 5811 阅读 · 0 评论 -
activiti的一些记录
1、根据task的id获取task: TaskService taskService = getTaskService(); Task task = taskService.createTaskQuery().taskId(taskId).singleResult();原创 2015-12-29 23:46:06 · 1148 阅读 · 0 评论 -
activiti流程设计器activiti designer在eclipse中的安装。
网上很多地方建议使用eclipse的“help->Install New software”的在线安装方式,我试了下不但慢,而且几乎不能成功。所以建议直接下载该eclipse插件到本地后安装,由于这个插件还需要依赖其他的eclipse插件,所以这些插件也需要安装,我这里都整理好了,大家可以直接下载安装。否则会报类似于:“Cannot complete the install because o原创 2015-12-29 23:34:47 · 4093 阅读 · 1 评论 -
POJO属性对拷(支持嵌套和继承)
网上不少支持属性值对拷的工具,但是很多不支持嵌套对拷,比如apche的bean工具,这里自己造了个轮子,代码只实现了最粗糙的功能,如果网友要使用则需要稍微加工下,现在支持复合类型、数组类型、List类型,至于其他的Map类型等,网友可以自己扩展,参考已有的思路,很简单。 这里主要使用了反射的机制。import java.beans.IntrospectionExcepti原创 2015-10-26 21:23:02 · 2900 阅读 · 0 评论 -
eclipse中项目名称修改后部署到tomcat中应用名称仍然是旧的
使用eclipse进行项目开发,有的时候需要修改项目的名称,可是在eclipse中部署到tomcat中访问的时候仍然只能使用旧的项目名称进行访问。 比如下图原来项目的名称是test,现在我在eclipse中改成了pc-shop-web,可是Path仍然是test,这个时候只能通过http://localhost:8080/test进行访问。 的确,可以通过“Edit原创 2015-04-23 16:30:15 · 36845 阅读 · 7 评论 -
关于跨域的一些实验结论
关于cookie的一些实验结论,如果有错误,环境指正。原创 2014-11-05 14:13:44 · 957 阅读 · 0 评论 -
自己设计的SSO登录流程图
这个图上不考虑安全加密,为本身SSO流程图已经比较复杂了,可能还有问题,欢迎大家拍砖。原创 2014-11-17 18:38:01 · 3664 阅读 · 0 评论 -
XMLConfiguration中不能使用英文逗号的解决办法
最近使用apache common的XMLConfiguration来解析XML文件,最后发现这个工具在截取XML时遇到英文逗号,会自动原创 2014-10-11 15:12:55 · 6066 阅读 · 4 评论 -
关于SpringIOC的一些思考
IOC是“依赖倒置原则”的一个特例,说其是特例,就是说其具有“依赖倒置原则”的性质。依赖倒置原则强调的两点是:上层模块和下次模块都依赖于抽象,二者之间通过这种抽象的东西联系在一起;具体可以依赖于抽象,而抽象不能依赖于具体。我认为Spring提倡的“基于接口编程”就是为了遵循“依赖倒置原则”。其中所谓的“上层模块”和“下层模块”是一个比较抽象的概念,其中“上层模块”就是调用者,而“下层模块”就是被调原创 2012-04-19 18:08:55 · 571 阅读 · 0 评论