自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 抽象需求之分析及探求实现可循之法

引子近日崇左方就路侧运营以来反复出现的问题进行了汇总并抛过来。这意味着,伴随着问题/需求,路侧即将产生一些新得开发和改动工作。不安和抵触坦白讲,对于开发人员而言,面对问题和需求,我们或疑惑,或惶恐多少是有些不安和抵触情绪的。于我司实情,我们首先可排除一种可能,就是:开发人员缺乏责任心、懒惰。除开这种不分青红皂白一棍子打死的极端,探本究源,这种不安的情绪,还是来自于不确定。一方面,来自于问题的阐述。如问题抛出方,是否自己经过了审慎思考和论证,提出了合理的问题,可明白知道自己在讲什么?如果是UE(用户体验

2023-05-26 17:48:46 811

原创 再论“边界”问题

维特根斯坦说“凡是能够说的,都能说清楚;凡是不能说的,就应保持沉默。”在我看来,这仍然是一个“边界”问题。之于软件工程,Team Leader经常教导我们一句话“编码是个次要问题”(兴许援引自《人月神话》)。当我们想要实现一个用例,一个功能时,我们的确不急于着手码代码,而是应该自问:你能否用自然语言,把这件事情(需求)像讲故事一样把它有条理有逻辑的表述出来,尤其用词要严谨,对于核心关键词的内涵...

2020-03-10 20:47:23 547 3

原创 什么是架构?

如题,是个没有统一定义的概念;尽管在不同设计层面上,架构有不同的定义;但终归我们是在做架构;而做软件最重要的思维过程就是抽象,因此既然是做架构就一定能给架构抽象出通用的定义—— 通过否定之否定逐渐划清业务边界的过程;每一个阶段性的静态表达即狭义上的架构。在哲学上的立足点就是结合康德静态的认识论和黑格尔动态的认识论。...

2020-02-11 11:50:41 264 2

原创 有关端口-适配器模型的一些总结

在鲍勃大叔的《架构整洁之道》一书中的拾遗篇,西蒙布朗阐述了代码组织结构横切还是竖切的问题。按我理解,他结合着鲍勃大叔对于架构的通篇阐述后,指出了单纯的按照传统的MVC(横切)和SOA、微服务(竖切)等各自弊端,提出了自己关于端口-适配器模型的切分方式。这是一种充分考虑语言封装特性,利用访问权限关键字和包的概念进行代码组织的方式,兼顾了前两者的优点。既解决了当业务量扩大后MVC无业务...

2020-01-20 16:39:42 3216

原创 软件工程,工夫在技术之外

我们常听说“工夫在____之外”,下划线处是个填空题,一切跟技艺相关的事情都可以填入。这本源自宋代大诗人陆游的典故。陆游为教导其儿子如何行文作诗,在《示子遹》中指出,“我初学诗日,但欲工藻绘,中年始少悟,渐若窥宏大。……汝果欲学诗,功夫在诗外”,以此告诫其子除学习作诗基本知识外,还要在生活中不断提升修为、学养、操守、道德等。之后,“功夫在诗外”慢慢被修改成“功夫在功外”,对于我们软...

2019-12-04 13:16:31 241

原创 有关python循环依赖问题

python作为脚本语言,如果程序结构设计不当,在灵活随意的模块拆分中,就很容易发生循环依赖。这就涉及导入顺序问题了。由于脚本自上至下顺序执行,并且被导入程序在第一次被导入的地方会全部执行一遍,那么以程序入口文件来说,谁先发起的引用,谁就要先得到满足;否则离着程序主入口近的脚本要求什么资源还未得到满足,而被引用的模块却反过来索要主调程序所在文件中的资源,这就产生了循环依赖。此时,最理想的方...

2019-11-25 09:20:26 864

原创 python装饰器和java拦截器有何不同?

话不多说,直接上代码和注解,先来回顾一下闭包:# 闭包,又称词法闭包或函数闭包,是引用了外部变量得函数,# 这个被引用得变量将和这个函数一同存在,即使脱离了创造它得环境也不例外。# print_msg是外围函数def print_msg(): msg = "i am a closure" # printer是嵌套函数 def printer(): ...

2019-11-16 13:19:05 623

原创 说说约束与代码实现

近日,读刘宇博(liuyubobobo)老师发表在微信公众号”是不是很酷“文章”无解“时,很有感触。摘录几句如下:”原来,这个世界上有的问题,是没有解的“;”不合理的约束合在一起,让我们的问题无解“;”一个问题为什么没有解?因为问题的条件限制。说的文绉绉一点,叫做约束“;”在大多数情况下,解决方案,都是改变约束“;”我们必须承认:这个世界上很多问题,就是无解的。数学尚且如此,生...

2019-10-29 13:49:36 337

原创 基于DCI架构的编程范式设计

近日随着对DCI编程范式的理解深入,结合java 8的语言特性,愈发觉得是时候可以把MVC架构放一放了。传统的mvc架构虽然结构清晰,但其肢解业务逻辑,使得开发跳来跳去,debug要像屡线头一样追踪代码,很是痛苦。而与MVC师出同门(同一理念提出者)的DCI架构,是基于用例驱动设计的,更加符合端侧用户的心智模型,也更符合程序员对于业务逻辑的理解,很容易上手。下面是我画的一幅丑图,并不规范,大概说明...

2019-07-16 19:23:16 1360

原创 让“上帝的归上帝,凯撒的归凯撒”

近日在研习由Trygve Reenskaug(著名的mvc架构提出者)发表的论文"The DCI Architecture - A New Vision of OOP",其中提出的框架模式就叫DCI架构。由数据、场景、交互组成。我理解,这是一种用例驱动设计的OO编程范式式。原作中似乎希望对象在运行时执行相应的逻辑来完成不同的场景用例。关于这一点我还没有理解透彻,期间我想过使用AOP为对象切入...

2019-07-12 18:22:56 455

原创 关于新技术栈的学习

最近接到领导下发的任务,研究GIS相关服务的使用。于是经过搜索引擎的帮助,大概找到了一些知名API,比如ARCGis、GeoServer、OpenLayer等;我们在项目里主要使用在线地图 的相关服务,包括但不限于坐标显示、路径规划、导航等功能;于是我从零开始接触。一般我拿到一个陌生的技术栈需求时,首先我会提取并检索其中的关键词,比如"GIS"、"Gis服务"、”在线地图API“等,大概对这些...

2019-07-08 18:23:12 380

原创 windows虚机使用IIS服务搭建ftp

一、ftp搭建首先,开启iis服务,按照服务器管理器->功能->添加功能(也可控制面板->程序或功能->启用或关闭windows功能),勾选远程管理下的“文件管理工具”和“web服务器(iis)”工具;之后iis会启动一个叫svchost.exe的系统进程占用21端口,它就是iis默认提供的网络服务,也就是说iis自带一个名为“defalut web site”ftp服...

2019-07-02 17:43:22 692

原创 Maven clean和install的区别

对于多模块相互依赖时,当产生一些环境上的问题(通常是依赖问题)时,你是是否经常看到老鸟会频繁执行mvn clean和mvn install,这是为什么呢?当你使用idea的maven插件,或者使用mvn命令执行这两个动作时,不妨去翻一翻“老巢”。在你的项目的target目录和maven本地库.m2下你的包名目录,不难发现,package将项目打包至target目录下;而install就是将该包...

2019-06-16 15:52:31 14942

转载 一篇文章搞懂对象序列化

本文转载“柚子”的博客https://www.cnblogs.com/UUUz/p/9877591.html;Ta的博客设计很有创意也很漂亮,像ta表示感谢!丶柚子java.io.Serializable浅析没有implements Serializable,你就不能通过rmi(包括ejb)提供远程调用。serialization 允许你将实现了Serializable接口的对象转...

2019-06-06 11:50:53 582

原创 谨慎使用js全局变量

最近踩了JavaScript滥用全局变量的坑。我们知道,在java中有单例模式,使用@Singleton和@Startup注解在相应类上,就可以很方便随时使用它了,既不用频繁new对象(省空间),又不需要手动去维护它。而在我写前台脚本时,也图方便随意的定义了一些js的全局变量,然后就悲催了。首先,请看以下引用https://blog.csdn.net/yangwensheng1122/articl...

2019-05-30 18:28:33 3173

原创 要不要显示的创建外键关联?

示例:表A结构如下:uidname1张飞2吕布表B结构如下:biduidboss12曹操21刘备“外键是保证数据库一致性的重要手段,可以级联更新(包括增删改),当然可以不使用显式的外键,只需要每次做操作的时候【记得】同步更新相关的表数据即可。不过有了外键,你如果忘记了,会报错,会提示,但是没有外...

2019-04-16 19:24:38 318

原创 实体类设计与ORM映射的一点经验

对于hibernate这种面向对象操作的框架,其带来方便的同时也对于业务逻辑和数据类型转换提出了更高的要求。因为做OOD设计时是从业务中抽象模型切入的;而前台和后台的DTO数据链路大体由VO-BO-PO不断进行相互转换的,实体类和业务模型虽高度契合,但要兼顾ORM的持久化问题,尤其处理数据库表关联和逻辑关联时、以及前台传参字面量对象和业务模型转换等,一定要保持清醒的头脑。一种传统办法是分开po...

2019-04-16 11:46:41 563

原创 关于OOAD的一点心得

编程中,相较于OOAD设计工作而言,编码实现是个次要问题。设计过程就是抽象归纳的过程。大抵有两种模式: 一是传统以数据模型驱动的设计思路,其特点是拿到一个需求,分析出一些基本的实体和关系(ER图)然后就去设计数据库和表关联了,这样做的好处就是建模速度快,缺点是实体类往往被数据库表牵着走,沦为数据模型的载体;由于着眼点偏于底层,没能从领域对象层面去抽出事物的本质,一旦需求发生变化,其维...

2019-04-09 16:31:29 586

原创 使用5种方式遍历list集合

关于list集合遍历方式很多,以下:package lambda;import java.util.ArrayList;import java.util.List;import java.util.function.Consumer;import java.util.Iterator;/** * 使用五种方式遍历list集合 * @author gmh * */p...

2019-03-28 22:38:28 1967

原创 pom报错的解决

关于pom.xml第一行报错问题,是用maven管理项目时经常会遇到的;其中最常见的一种是Failure to transfer ***:巴拉巴拉……比如failure to transfer xpp3:这种;那么这时我们要果断翻到maven的老巢,也就是%MAVEN_HOME%.m2/respository/xpp3,然后将xpp3_min-1.1.4c.pom.lastUpdated删掉,...

2019-03-13 21:45:17 641

原创 关于流式编程风格(fluid programming style)的小例子

我们经常看到连缀调用的写法,一大长串类似obj.method1().method2().method3()……methodn();的写法;我在《JavaEE 7精粹》里看到其中一章才知道这叫流式编程风格(fluid programming style),感慨于这种写法的优雅整洁,遂写一个小demo记录一下。之所以能实现连续调用,是因为每一次调用都返回相同类型的对象,demo示例如下:...

2019-03-11 12:21:28 687

原创 pom第一行报错

用eclipse建maven项目时,pom.xml很容易报错,其中有一种org.apache.maven.archiver.mavenarchiver.getmanifest这个错误,通常是因为m2e(maven to eclipse)扩展插件版本低造成的;此时需要到help->installsoftware->add里查找远程地址去更新;name就输入mavenarchiver,ur...

2019-03-07 00:26:43 609

原创 maven配置环境变量

maven安装非常简单,将下载好的压缩包解压即可,然后再cmd里输入mvn -version命令即可得到一些版本信息的显示;但这里也有坑,尤其配置环境变量时,如果MAVEN_HOME只是设置在用户变量里,而系统的Path里的%MAVEN_HOME%\bin是读取不到它的,cmd里的mvn命令便不识别。所以尽管用户变量优先级高,但稳妥起见,系统的MAVEN_HOME是必不可少的。...

2019-03-06 21:58:15 382

原创 关于NamingContextFactory类的异常

关于jboss容器启动后,运行客户端使用jndi寻址时,抛出javax.naming.NoInitialContextException: Cannot instantiate class: org.jnp.interfaces.NamingContextFactory[Root exception isjava.lang.ClassNotFoundException: org.jnp.inte...

2019-03-06 16:19:55 518

原创 wildfly管理员权限设置方法

由于wildfly是jboss 8.x以上的版本,并且默认jdk配置要求是1.8以上,故在启动add-user.bat文件时,如果jdk版本过低,cmd会报异常,其中原因就有可能是jdk版本低造成。此时需要检查环境变量里JAVA_HOME的配置是否为jdk1.8的安装路径。更改配置后,重启add-user.bat文件按提示回车输入username和password即可;注意password需要字母...

2019-03-01 15:57:13 2083

原创 升级java后切换jdk版本

本人从jdk1.7升级到jdk1.8,为了便于使用1.8切换开发工具包,需要将JAVA_HOME的环境变量重新配置jdk1.8安装的目录;最好用户变量和系统变量都进行配置,删除之前配置过的jdk1.7路径。...

2019-03-01 15:48:56 587

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除