- 博客(39)
- 资源 (2)
- 收藏
- 关注

原创 无代码表格数据库——一个企业数字化新物种
一种可以自定义业务模型、业务流程和协作规则的软件工具,它要有Excel的灵活方便性,同时还要有Excel不具备的多人在线协作处理能力。目前市场已经逐渐形成了一个称为“无代码表格数据库”的赛道,也出现了一些代表性的产品。
2023-02-22 14:43:59
624

原创 一个35+岁程序员的反思:精通那么多技术为何还是做不好一个项目?
编写高质量可维护的代码既是程序员的基本修养,也是能决定项目成败的关键因素,本文试图总结出问题项目普遍存在的共性问题并给出相应的解决方案。
2020-11-29 18:54:28
983
1

原创 弹性事务框架ETF4J——面向Java微服务的交易最终一致性解决方案
弹性事务概述ACID事务虽好,但局限性也是很明显的——仅适于单体系统的本地事务处理,分布式的ACID事务不仅性能差、无法scale,而且使用限制很大(对中间件和数据库XA的要求),即便在企业应用领域也越来越被遗弃,在微服务和互联网开放架构时代已经远远无法满足要求。你不可能要求外部第三方的系统跟你绑定在同一个ACID事务上下文,更何况很多时候你集成的服务或API本身就是非事务性的,HTTP也...
2019-08-16 19:11:18
877

原创 前任3:由圣经故事通天塔想到公司部门间沟通协作
巴别塔是《圣经·旧约·创世记》第11章记载当时人类联合起来兴建希望能通往天堂的高塔;为了阻止人类的计划,上帝让人类说不同的语言,使人类相互之间不能沟通,计划因此失败,人类自此各散东西。通天塔(巴别塔)的故事有很多喻意,其中之一就是——因语言不同导致的沟通不畅 会让大型组织和项目最终失败。上周四的会议 最后一个议题是爱投金融部门间协作问题。会后我继续思考这个问题,隐约感觉深层次的原因还没有找...
2019-03-01 17:27:45
522

原创 一次Java烂代码重构之旅——Template Method设计模式的经典实践
我们项目中一段典型的代码,问题明显违反职责单一原则(一个method做了4件事)且 updateFromMQ命名过于抽象模糊 面向过程平铺直叙(变量作用域大、难以维护) @Override public void updateFromMQ(String compress) { try { JSONObject object = JSO...
2019-03-01 17:11:23
806

原创 ZK(The leading enterprise Ajax framework)入门指南
JavaEE领域从来就不缺少Framework尤其是Web Framework,ZK作为一个小众的框架却具有很多独特优势:•纯Java“端到端”Web解决方案•提供丰富的页面组件和声明式的用户界面描述语言(ZUML)•支持MVVM模式数据绑定•支持自动化功能测试这几点每一个都非常有价值,解决了我们多年以来开发Web应用过程中很头疼的几个问题。
2013-07-11 22:25:27
9151
1
原创 Save POJO to MongoDB
例如,直接用mongoTemplate报错下面这个document会报错:can't find a codec for CodecCacheKey...采用如下mongoTemplate.getDb().withCodecRegistry方式,可以将自定义Pojo正确持久化到mongodb。通常情况下,向mongodb插入的document中的每一个value只能是基本类型(字符串、数字、时间等),不支持自定义Pojo类型;
2023-09-08 15:28:04
566
原创 mongodb聚合查询$filter不支持$exists问题
对数组字段进行过滤的时候,如果要根据数组元素的某个字段存在与否来过滤,例如数组字段viewList中包含多个view,希望返回结果的viewList中只包含那些view.permissionSetting非空的。
2023-02-21 18:06:45
615
原创 Java前端框架ZK的分页组件
本文只针对ZK的分页数据表格这个主题,关于ZK框架的入门介绍见《ZK(The leading enterprise Ajax framework)入门指南》https://blog.youkuaiyun.com/daquan198163/article/details/9304897?spm=1001.2014.3001.5501概述zk框架虽然提供了大量方便的开箱即用的组件,但是不得不说分页是个例外,无论是listbox还是grid,对于大数据量的场景都没有给出开箱即用的分页解决方案。<l...
2021-05-18 10:33:50
432
原创 Eclipse配置web工程Context root cannot be empty问题
今天把一个比较老的不规范web工程导入eclipse后,编译都ok了,但是tomcat9启动一直报错——wtpwebapps目录中找不到fabric对应的部署目录;该目录也确实不存在。其它工程 添加到servers 发布后会创建对应目录。于是判断这个工程哪里配置有问题。查看工程属性 Project Properties:WebWeb Project Settings中果然有问题—— C...
2019-12-18 11:30:10
1152
1
原创 前任2:2012年的一封邮件,当时对项目管理的思考
《关于年会上PPT中提到的一些公司管理问题的看法》关于管理体系我平时思考比较多的是关于项目管理、团队管理方面的问题,对于公司层面的管理体系并不了解。但是由于我们是一个项目型的公司,大多数员工都是身处一个个项目团队中的,因此项目团队管理体系在公司管理体系中所占的比重应该是很大的。而且事实上,除了财务和日常行政事务较少涉及以外,管理一个大型项目涉及到的方方面面 基本与管理一个公司差不了多少...
2019-03-01 17:22:23
347
原创 基于 TxFlow"分步"式服务交易保证框架 构建灵活可靠的分布式系统
过去十几年的分布式计算从十多年前ejb盛行的年代,到后来的soa时代,一直到今天的微服务时代,虽然技术在不断飞速的进化,但是分布式计算这只“怪兽”却一直没有被打败,反倒是随着互联网浪潮 更加肆意的兴风作浪 为害人间。分布式意味着数据一致性难以保障 性能开销大 开发和测试成本高 运维难度大。。。多少程序员架构师多少个黑白颠倒的加班人月 多少深夜的版本上线 多少运维人员的血汗,都是拜分布式...
2018-12-12 15:18:49
391
原创 Layered Web Application In Action——Web应用分层架构实施总结
问题/现象时间来到2018年,分层架构似乎已不是一个需要讨论的问题,因为大概已经不存在不是分层架构的项目了,甚至在SpringFramework成为标配的影响下,很多项目的架构都是雷同和千篇一律的,只是在各个层的选型上会有差异。 虽然这样的局面相对于之前的年代是巨大进步,但是事情并没有这么简单,新的问题和挑战出现了,其中最突出的就是Service层开始失控。以我们的互金和小...
2018-07-12 09:59:50
341
原创 论软件架构设计中被普遍误读误用的原则——分层
在看到一个又一个的项目、一批又一批的程序员不断掉进同一个坑里以后,我决定写此文把这个问题好好梳理总结一下,很可能大多数人根本没有意识到这是一个问题,也就注定了不可避免的重复这样的错误。被误解和滥用的分层原则,结局必然是API泥潭自十多年前Spring Framework大范围流行以来,java项目的架构质量“看上去“有了巨大改善——组件化、分层架构、依赖注入、面向接口编程 这些优秀的实践...
2018-01-31 12:46:27
636
1
原创 开发接口的正确姿势
背景在这个SOA都已经称为过气概念的年代,为什么还要写一篇文章讲接口开发呢?一两句话可能解释不清楚,打个简单的比方,上面那个问题就好比在问:现今智能手机、即时通讯工具都已经普及了,为什么还要写一篇文章就如何沟通呢?
2017-04-03 15:03:38
581
原创 ZK集成jqueryui 实现图片鼠标滚轮缩放以及拖拽位置
//@off image是一个zul中 的image组件 image.setWidgetOverride("bind_", "function(){\r\n"+ "this.$supers('bind_', arguments);\r\n"+ "var node = this.$n();\r\n"+ "if (node
2016-12-07 20:42:34
1407
原创 Ionic学习笔记
Ionic概述Ionic是一个主要面向移动端的Html5快速开发框架,具体的 它可以支持以下几种场景:移动浏览器Web App Ionic通过精心定义的CSS 为我们提供了一组适用于移动端屏幕尺寸和操作习惯 以及模仿原生组件风格的UI组件,使得我们开发出的Web界面能够在手机Pad等移动设备上完美运行(风格与App一致 浏览器兼容 体积小 下载和运行流畅),是开发WAP站点和微信站点的最佳选择
2016-01-15 14:34:16
1575
原创 我受够了目前企业软件市场的这种运作模式
先吐个槽抛块砖,希望能够抛砖引玉。由于今天状态不佳,越写越乱,所以干脆把我的想法总结放前面吧,分割线后的内容如果觉得没营养可以忽略了,可以只针对这个主题讨论。主题:现有的甲乙方合同制项目模式严重制约了软件开发活动的经济效益以及成功率,造成双输甚至多输的局面;具体的,现有模式的弊端:项目周期短与软件成熟过程慢的矛盾:软件的开发过程有着固有的规律;有点篝火经验或
2015-05-07 23:55:05
2033
原创 ZK高级特性:Style定制与客户端集成
1、ZK与传统MVC框架的集成由于ZK应用本质上也是基于标准Web技术Servlet框架,因此与其它MVC框架的集成没有什么特别的,以一个典型场景为例——为一个现有的Web项目(前端采用WebWork+Freemarker+prototype)引入ZK技术开发新的页面和模块,主要集成工作包括:页面集成方式1:在freemarker中嵌入iframe指向zul页面;页面集成方式2:p
2013-12-19 23:04:24
3805
1
原创 ZK开发关键知识点
本文是对ZK开发过程中必须掌握的关键知识点的总结,针对目前对新版本zk-6.5.2关于ZK是什么参见前一篇博客 《ZK(The leading enterprise Ajax framework)入门指南》 http://blog.youkuaiyun.com/daquan198163/article/details/9304897
2013-09-12 23:31:35
10919
原创 数据库Scheme的版本控制——DB Migrations
当今的大多数软件开发团队已经掌握了使用SVN等SCM工具对源代码和文档进行有效的版本控制,但是,如何将DB的变更也纳入到版本控制中却是一个亟待解决的难题;这个问题普遍存在却被严重忽视,常见的最“正规”的做法就是在工程的DB目录下随意堆放sql脚本,在需要的时候从里面挑选出要执行的脚本或脚本片段拿去执行;这种做法非常的繁琐而容易出错,严重拖累了软件开发团队前进的脚步。本文介绍了一款强大的开源的DB版本控制工具——MyBatis Schema Migrations tool(http://code.g
2013-07-09 19:04:15
5210
1
原创 一个数据分页排序查询框架——SmartPagination
项目主页:http://code.google.com/p/smartpagination/SVN:http://smartpagination.googlecode.com/svn/trunk/源码直接下载:http://code.google.com/p/smartpagination/downloads/list文档:http://code.google.com/p
2009-10-30 11:15:00
1154
原创 前任1:离开公司前写给在一起奋斗了半年多的兄弟们
对敏捷软件开发方法的一些体会:我觉得推行一个新技术最大的阻力还是来自程序员自身管理层一般不会关心开发方法和技术细节的问题struts的流行恐怕主要也是技术人员发自内心的认可和推崇造成的吧毕竟这牵涉到他的切身利益(工作效率、成就感、乐趣。。。)同样的道理,单元测试和其他敏捷方法也要首先打动技术人员的心,然后想不流行都难目前的情况与这两种技术本身的特点也有关,单元测试是阳春白雪,stru...
2006-10-16 15:07:00
2031
1
原创 分享一个通用数据库分页方案
这个分页方案采用设计模式中的“模板方法”模式,把分页逻辑的"工作流"封装在了一个抽象的前端控制器,扩展这个抽象父类并重写几个方法(返回总记录数、构造查询条件,当然还有控制器的其他逻辑)即可实现一个具有分页功能的Action(Struts)或Controller(SpringMVC)我在实践中发现分页最麻烦的地方就是在action里面算页数、记录数这些东西,而具体的数据访问策略每个项目都回不同,所以
2006-09-22 09:57:00
1701
原创 辩论演变为争吵
我:大家有时间把ut都完善一下奥,现在很多都是错的呢ronny:lee,我觉得你说得太理想化了,咱们现在时间这么紧,你叫我写测试不现实;我:写ut是可以提高效率,怎么会因为时间不够不写呢?ronny:这不适合中国国情,你没做过项目验收,我以前参加过,都是。。。。。。我:这跟ut有什么关系吗?你在项目里不需要它保证质量吗?ronny:我是写了一些呀,现在开发速度这么慢,所以不写了。我重复到:ut是可
2006-09-14 09:56:00
994
原创 项目中的一次典型TDD实践
##解决账单生成的一些需求和设计上的变化修改测试testIsReconFinished:对账可能跨天,以TransTime为准;增加测试testGenerateVOU101ReallyWithAReconFailure:只对对账成功(recon_status=2)的交易生成清单;修改测试testFindReceivableVoucherTxesByRecons:查出对账对应的应收交易(只包括那
2006-09-02 00:45:00
1212
原创 拥抱敏捷
在我进入软件开发这个行业的第三个年头,我终于可以自信的说我是一名合格的程序员了,因为我确信我已经找到了开发高质量软件的那把钥匙——敏捷方法。 在这个从来不缺少新概念的软件世界里,它是与众不同的。敏捷方法不是那种能极大满足程序员好奇心和成就感的时髦技术,它是一种软件工艺、一种能让你高效率的写出高质量软件的开发方法;对于公司,它是一种务实的技术,能给公司、项目和客户带来直接效益和长远
2006-09-02 00:42:00
943
原创 持续集成(持续构建)服务器luntbuild的一些配置细节
安装(官方文档参见http://luntbuild.javaforge.com/docs/installguide/installguide.html#installer):1、下载一份luntbuild-xxx-installer.jar,然后java -jar luntbuild-xxx-installer.jar 运行安装向导;2、安装过程中指定数据库属性、deploy位置,应该不会有问
2006-07-08 18:22:00
2545
原创 工作流的一些想法
亮点:任务分类、任务预览、缺点:工作流系统与业务系统互操作性差,难以同步(数据)工作流定义的更新、版本控制、平滑过渡问题改进:流程仿真:使得用户设计出一个流程后,不需要编写驱动就可以对其进行调试,验证流程的正确性;支持动态语言:如脚本语言(BeanShell或Groovy),进一步提高业务的可配置性、简化驱动;新的驱动架构:去除对特定Web框架的绑定,方便驱动开发;
2006-03-22 20:52:00
1006
原创 给同事们讲单元测试
构思了一天,只写出一页word提纲(如下),不过心里还是有了些把握。什么是单元测试?l单元测试是对一个独立的工作单元进行的测试l单元测试是测试其它程序的程序,由开发人员编写lJUnit是编写java单元测试的标准框架为什么要进行“烦人”的单元测试?l具有很高的测试覆盖度l回归测试,保护你的程序,防止她衰退、被破坏l给你修改、重构你的程序的勇气,提高团队士气l帮助
2006-03-22 20:51:00
1022
原创 迎接挑战:把系统迁移到Java5平台
上午在优快云上看了《迎接挑战:沃尔玛网站如何迁移到Java 1.5平台》http://news.youkuaiyun.com/news/newstopic/22/22233.shtml碰巧又有个人在自己的blog里面宣称《多家权威机构、几十篇权威证据证明:Java比C++更快。如果反对,请举反证。 》http://blog.youkuaiyun.com/liigo/archive/2005/06/15/39522
2006-03-05 21:38:00
2928
原创 解决dao层单元测试问题
其实问题已经存在很久,自从使用了Open Session In Test模式后,dao的单元测试就出现了奇怪行为——数据的修改操作不能提交事务,由此导致了一些"违反唯一约束条件"的错误。由于当时只有一个测试报了错,我就偷懒把它屏蔽掉了。由于最近老给同事们讲单元测试、要求他们严格测试,越发觉得心虚了,于是决定把欠下的账还上。昨天下午一直鼓捣到8点多了,越改越乱,还是找不到原因,情绪很低落
2006-03-05 21:36:00
2562
原创 解决了Hibernate+Spring+Struts架构使用OpenSessionInView的问题
昨天caosq向我报告他的OpenSessionInView过滤器不起作用,我检查了半天,配置、编码没有一点问题,真是一筹莫展!中 午回来看见huangsongsheng在给他们做同样的检查,了解到zhengping也遇到同样的问题,唯独小黄没事,原来他和我一样用了 SpringMVC,难道问题出在struts上?那yangshaoyan的ERM怎么没出错呢,仔细询问之下才知道,她根本没用上这
2006-03-05 21:34:00
1210
原创 发现springmodules validation的问题
the solution for the error "does not support command class" error is that your validator xml form name does not match the class name (w/lower case 1st letter) My redux redux is: for a domain/entity cl
2006-03-05 21:31:00
1482
原创 使用Spring OpenSessionInViewFilter的缺点
终于理解了Karl所说的“If any errors occur while attempting to lazy load relationships in the view (JSP) it would be hard to present a nice error to the user”,其实更痛苦的是我自己没办法定位错误,这不,今天就领教了。我的任务列表莫名其妙的报错了:17:05:
2006-03-05 21:28:00
1793
原创 Spring MVC意外更新PO的问题
原来是Spring MVC处理POST请求过程中,(默认)还要回调一次formBackingObject来获取commond,然后填充数据,所以,如果formBackingObject返回了PO(Hibernate容器内对象),就会被修改,并波及到数据库。 package org.powerstone.ca.web;public class MyInfoFormController{…………………
2006-03-05 21:06:00
1403
原创 把工程从spring1.1/Hibernate2迁移到spring1.2-rc1/Hibernate3.0
1、下载spring1.2-rc1,里面的lib目录包含了Hibernate32、修改源代码:替换net.sf.hibernate 为 org.hibernate替换org.springframework.orm.hibernate 为 org.springframework.orm.hibernate3由 于spring1.2-rc1“deprecated HibernateTe
2006-03-05 20:39:00
1232
原创 终于把luntbuild跑了起来,开始持续集成之旅
项目网站 http://luntbuild.javaforge.com/配置过程中遇到的问题:1、需要修改applicationContext.xml使其在启动服务时建数据库表;2、 设置VCS adaptors:Cvs root( :pserver:cvsuser@localhost:/cvsroot)、Source path(PowerStone)、Disable "-S" option f
2006-02-25 12:14:00
1231
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人