- 博客(146)
- 收藏
- 关注
原创 专访Tiny框架创始人悠然:好的软件设计是“品”出来的
Tiny是基于Java开发的一款开源框架,主要技术领域为J2EE及应用开发平台领域。日前,笔者采访了Tiny开源框架创始人悠然(罗果)请他分享Tiny的构建之路以及对开源的解读。在他看来,好的软件设计是“品”出来的,信奉好的软件架构一定是简单的。Tiny开源框架创始人 悠然优快云:和大家认识一下,介绍一下你的技术背景、目前所负责的领域。悠然:大家好!我是悠然,Tiny(官
2015-09-10 10:39:47
1071
原创 [置顶]《开源框架那点事儿25》:对框架模板引擎实现方式的改造实录
点滴悟透设计思想,Tiny模板引擎优化实录!加入框架设计兴趣小组:http://bbs.tinygroup.org/group-113-1.html Tiny模板引擎的实现方式原来是采用的编译方式,最近发生了一些问题,因此我觉得有必要把编译方式调整为解释方式,为此就开始了此次实现活动。 编译方式存在的问题当时采用编译方式,主要是考虑到编译方式在运行时不必再去遍历语法树,因此
2015-09-10 09:42:48
473
原创 [置顶]完整版:《开源框架实战宝典电子书V1.0.0》内测版下载地址!
经过一个多月的整理,《J2EE开源框架实战宝典》——Tiny文档PDF电子书开始发放,共有将近600页,为喜爱Tiny、热爱Java开源框架的朋友提供更加体贴的文档服务!下载地址:http://bbs.tinygroup.org/group-112-1.html(加入查看下载地址)下面是部分目录的截图。 1.jpg (62.15 KB, 下载次数:
2015-09-10 09:42:46
526
原创 《开源框架那些事儿27》一段SQL引发的性能危机及其背后隐藏的设计缺陷
有个同学,说是系统中出现性能问题了,说是让我帮助诊断一下。本来是不想花这时间的,结果耐不住对方的死缠乱打,只要答应帮看看。 故事发生的背景是,在文件上传的时候,有时间会有人上传了文件,但是最后没有使用上传的文件,这样就会产生一些垃圾文件。 原来软件作者就想写一个后台定时任务程序,来清除这些垃圾文件? 由于作者坚定的不让我发她的SQL语句(这个我也理解,这么丑陋的SQL),所以这里就不发源代码了,
2015-09-10 09:42:37
397
原创 《开源框架那些事儿26》:“最好的模板引擎”Beetl剖析及与Tiny模板引擎对比
查找最好的模板引擎,发现这个搜索词出来的是beetl,于是就仔细学习了Beetl,试图找寻“最好的”三个字表现在哪里?于是搭建环境,阅读代码,与鄙人所做的TinyTemplate进行了粗略的对比,在征得beetl作者@闲.大赋 的同意后,编写了此对比文章。由于时间关系,对Beetl的认知深度还有不足,分析不当之处在所难免,还请广大同学纠正,定当有错误和不当必改。 点滴悟透设计思想,加入框架
2015-09-10 09:42:32
388
原创 《开源框架那点事儿24》:开着跑车换轮胎
开着跑车换轮胎,这样的情形您能想象吗? 最近,一段拍摄于沙特阿拉伯的视频就记录了这样的超牛特技。地址给大家分享一下:http://www.douban.com/group/topic/52087839。从短片中可以看到,这辆汽车在沙漠中前进,一名男性就站在车门外,在几个大转弯之后,汽车成功地侧翻了约45度,仅靠2个轮子贴在地上行驶着。画面显示五个戴着头巾的男子探身从一辆正在行驶的银色跑车
2015-09-10 09:42:25
563
原创 《开源分享1》:前端开发必备《Html-CSS中文手册》
一直想做一些优秀的资源分享内容,今天尝试整理了一下,以后会每天抽点时间发一些自认为不错的资料出来。帮助大家提高学习效率。 今天分享的内容:前端开发:《Html-CSS中文手册》! 本手册针对的是已有一定网页设计制作经验的读者。其目的是提供完整清晰的样式表内容的快速索引及进阶帮助。所以对于网页制作和样式表的基础知识,仅简单介绍,恕不赘述。手册提供了完整的 CSS2.0 的属性(P
2015-09-10 09:42:21
711
原创 《开源框架那点事儿23》:采用TinyDB组件方式开发
采用TinyDB组件方式开发步骤Icon 前文介绍四则运算的流程编程开发时,说过流程编排在开发重复功能时,可以利用已有的组件库快速开发。对于开发人员而言只需要简单配置流程就可以完成工作了。 开发增删改查的组件接口。本来这部分很花费时间,如果采用组件复用的话,就可以实现一次开发,终生受益。配置curd.beans.xml和tinydb.xml。使用流程编辑器定制组件流程curd.
2015-09-10 09:42:14
418
原创 《开源框架那些事儿22》:UI框架设计实战
UI是User Interface的缩写,通常被认为是MVC中View的部分,作用是提供跟人机交互的可视化操作界面。MVC中Model提供内容给UI进行渲染,用户通过UI框架产生响应,一般而言会由控制层调用业务逻辑进行处理,并把处理结果以Model方式返回View,再次渲染。UI框架的大致过程就是如此,按实现方式可以分为RIA和瘦客户端方式,目前基于B/S的瘦客户端方式比较流行。 UI框架套路上很
2015-09-10 09:42:10
333
原创 《开源框架那些事儿21》:巧借力与借巧力
同样做前端UI,为什么有人花了一点力气,就可以做好?而有的人费尽全力,仍然错误百出?我们可以先看看几个故事。故事1:巧借力,乌鸦也可以吃核桃有一个盛产核桃的村子,每年秋末冬初,成群的乌鸦总会来到这里,到果园里捡拾那些被果农们遗落的核桃。核桃仁虽然美味,但是外壳那么坚硬,乌鸦怎么才能吃到呢?原来乌鸦先把核桃叼起,然后飞到高高的树枝上,再将核桃摔下去,核桃落到坚硬的地面上,被撞破了,于是,
2015-09-10 09:42:05
291
原创 《开源框架那点事儿20》:发布TinyUI前端框架
以前发表过一篇文章:TinyAdmin前端展现框架,其在线演示路径为:http://www.tinygroup.org/tinyadmin/,应该说有许多人还是感觉兴趣的,但是由于这个是基于SmartAdmin框架改写的,虽然我们自己买了SmartAdmin的授权,但是广大用户如果要用的时候,就会有授权相关的问题,这会大大影响一些人的使用决策--尤其是会再发行的朋友。 再一个原因是SmartAdm
2015-09-10 09:42:01
553
原创 像写SQL一样编写Java数据应用-TinySqlDsl
前言话说企业应用,一般离不开数据库。要做数据库,可以有N种方案,比如:直接采用JDBC层自己封装下使用的,采用一些框架的,如:iBatis,Hiberate,Spring JDBC Template等等(这个太多了,因此不一一列举)的,这些方案也都在各自的领域展示了自己的特点,解决了相当部分的技术问题,并取得了相当好的应用效果。 但是不管是哪种方案,其优点和缺点往往也是连在一起的,究其原因是因为S
2015-09-10 09:41:56
338
原创 Tiny示例:对整个目录中的POM树进行批量处理
原来我的POM中groupId是org.tinygroup,artifactId是对应的工程名,如parser。后出有一个处理上的原因,而且便于进行分隔,还可以避免与别人的冲突,想把所有的artifactId前面增加个“org.tinygroup.”前缀,比如parser就变成org.tinygroup.parser。但是这样一来,所有的依赖信息也全都对不上了,也就是要对工程的artifactId
2015-09-10 09:41:53
249
原创 Tiny快速入门之Web界面快速开发实践
目录[-]一、寻找网站模板二、开工制作 1.编写default.layout布局文件2.编写UI组件定义文件3.编写通用宏定义4.编写业务宏5.定义演示网站布局文件6.定义相关页面首页:关于:日志:画廊:三、运行关于日志画廊联系我们四、总结前面讲了基于Tiny做服务,这篇来讲讲用Tiny怎么做界面。f下面是一些常用的链接,供大家使用:GIT地址(必须是OSC家的):https://git.osch
2015-09-10 09:41:51
945
原创 TinyDBF-用200行的DBF解析器来展示良好架构设计
由于工作关系,需要工作当中,需要读取DBF文件,找了一些DBF读取开源软件,要么是太过庞大,动不动就上万行,要么是功能有问题,编码,长度,总之是没有找到一个非常爽的。在万般无奈之下,我老人家怒从心头起,恶向胆边生,决定自己写一下。结果只用了不到300行代码就搞定了,当然搞定不是唯一目标,还要优雅简洁的搞定,亲们跟随我的脚步一起感受一下简洁的设计与实现吧。 在开始编码之前,先介绍一下DBF,这个DB
2015-09-10 09:41:49
289
原创 如何让程序员更容易的开发Web界面?重构SmartAdmin展示TinyUI
如何让程序员更容易的开发Web界面,是一个持久的话题,所有的从事相关开发的公司都会碰到这个问题,并且被这个问题所深深困扰。 Tiny框架也不得不直视这个问题,确实来说,想解决这个问题,也是非常有难度与深度的,业界也有各种各样的尝试,这也是有各种各样不同框架出现的原因。 Tiny框架构建者认为,完全采用一种框架解决所有问题,是不现实的。而且即使目前找得到一种非常好的框架,暂时可以满足应用需要,但是随
2015-09-10 09:41:46
1017
原创 Linux下搭建Tiny开发环境
有一朋友在Linux下编译Tiny时出错了,偶在Windows下编译是OK的,但是说明不了问题。因此就想着搭建一个Linux下的编译环境进行验证,实际搭建过程碰到了一些问题--主要是NTLM ISA代理服务器的问题。由于整个过程比较复杂,因此就写此文志之,有需要的朋友也正好用一下。 Step 1:搭建Linux环境 考虑到fedora各方面不错,本人选用了fedora,在vSphere中创建一个虚
2015-09-10 09:41:43
324
原创 《自己动手写框架7》:关于框架体系与战术的思考
什么是框架?这个问题实际上许多“做框架”的人也不明白。 框架和库的本质不同在于:框架考虑的是机制的复用,而库主要考虑的是代码的复用框架考虑的是在机制不变的情况下进行扩展,而库则基本不考虑扩展方面的问题框架本身是不完整的,在大多数的情况下它自己是干不了啥事情的,而库自身是完整的,可以解决某个领域的问题。框架是活的,通过不断的扩展与衍生,它就更加强大,而库而是死的,发布时是怎样
2015-09-10 09:41:40
317
原创 Velocity宏定义的坑与解决办法
使用Velocity,当然就免不了要使用宏,或者说使用Velocity而不使用其宏,就相当于废了Velocity一半以上的武功,非常可惜的。 怎么使用Velocity的宏呢,才最大程度的发挥其作用但是又避免掉入其中的坑呢?且听悠然乱弹乱弹: 官方文档中,关于Macro是这么说的: #macro - Allows users to define a Velocimacro (VM)
2015-09-10 09:41:38
356
原创 Tiny Formater
昨天看了@Brin想写程序 的文章 几行Java代码实现的简单模板(不是引擎),呵呵,就非常想去掏掏偶滴小兜兜,果然发现一个类似的东西,因为东西太小,没有准备怎么写,但是看到@Brin想写程序的文章,就想着也发篇文章,说一下当时我的想法与思路。格式化提供者,用于对字符串进行转换:123456789101112public interface FormatProvider {
2015-09-10 09:41:35
263
原创 Tiny之Web工程构建
友情提醒:阅读此文需要java、Maven环境搭建技能,关于java开发环境及maven环境搭建请咨询谷哥和度娘。 搭建TinyWeb工程环境 搭建一下TinyWeb的开发环境,是非常简单的 如果你没有下载过Tiny框架,请在命令行中输入下面的命令: 1mvn archetype:generate -DarchetypeGroupId=org.tinygroup -Darc
2015-09-10 09:41:33
289
原创 开源框架Tiny之内容组成
源码快照:https://git.oschina.net/tinyframework/tiny上手之前,默认已经熟悉Maven和Git,对于Maven和Gig相关问题,女生请问谷哥,男生请问度娘,他二位的细致耐心一定会让你满意的。 install之前需要进行环境准备,确认你的机器可以联得上外网,或者有好用的Maven代理。 请确认在编译环境中存在jdk1.5和1.6以上版本。 在你的Mav
2015-09-10 09:41:30
298
原创 TinyUI组件开发示例
TinyUI实际上并不是一个具体的UI展现组件,它只是一个UI构建体系。它可以适应于各种Html+CSS+JS的体系架构中。 TinyUI主要解决下面的问题: UI中JS的引入与顺序,JS合并的问题UI中css的引入与顺序,CSS合并的问题UI中碰到性能问题时的影响范围,比如:一个树出现问题,要改动许多用到树的地方代码重复的问题,同样的内容在许多地方都有,如果要改动就要改动许多
2015-09-10 09:41:27
426
原创 一个Maven工程中,不同的模块需要不同的JDK进行编译
本人在构建数据库分区,分表的时候,由于jdbc3(jdk1.5中实现)和jdbc4(jdk1.6后实现)两个规范上存在相当大的差异,导致无论采用哪个jdk进行编译,都会导致整个pom树无法正确构建,总有一个要出问题。 说实际的这个问题卡了比较长的时候,最后还是研究maven编译插件,才真正解决。 解决的办法就是,在主Pom中定义下面的编译插件: 12345678910111213
2015-09-10 09:41:25
760
原创 在Linux下搭建Tiny开发环境
有一朋友在Linux下编译Tiny时出错了,偶在Windows下编译是OK的,但是说明不了问题。因此就想着搭建一个Linux下的编译环境进行验证,实际搭建过程碰到了一些问题--主要是NTLM ISA代理服务器的问题。由于整个过程比较复杂,因此就写此文志之,有需要的朋友也正好用一下。 Step 1:搭建Linux环境 考虑到fedora各方面不错,本人选用了fedora,在vSphere中创建一个虚
2015-09-10 09:41:20
246
原创 业务流程引擎
一般的时候,我们都采用编程式开发,编程式开发的好处非常明显:直接、高效、自由,当然其缺点也是有的,与其优点刚好相对,因为直接,所以有些变化都要进行代码上的修改;因为高效,所以一旦出问题,导致的结果也比较严重,因为自由,所以带来的修改风险也比较大。 这也就是许多大的公司都在进行流程化开发的重要原因之一,比如:上海普元,Livebos, Justep,还有许许多多知名不知名的公司都有类似的流程化开发
2015-09-10 09:41:18
2203
原创 Tiny并行计算框架之复杂示例
问题来源 非常感谢@doctorwho的问题: 假如职业介绍所来了一批生产汽车的工作,假设生产一辆汽车任务是这样的:搭好底盘、拧4个轮胎、安装发动机、安装4个座椅、再装4个车门、最后安装顶棚。之间有的任务是可以并行计算的(比如拧4个轮胎,安装发动机和安装座椅),有的任务有前置任务(比如先装好座椅,才能装车门和顶棚)。让两组包工头组织两种类型的工作:将工人分成两种类型,即可并行计算的放在同一组内,
2015-09-10 09:41:15
246
原创 Tiny并行计算框架之实现机理
这一篇呢,主要介绍其实现机理。 当然,秉承偶的一向的观点,让新手也能看得懂。 首先看工作的接口: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768public interf
2015-09-10 09:41:13
257
原创 Tiny并行计算框架之使用介绍Tiny并行计算框架之使用介绍
呵呵,昨天看到两新粉,一激动,就想着今天来写这篇文章。 其实一直在关注这个领域,但是一直没有信心来写,所以一直期望着有一个开源的来用。 看到了彭渊大师的淘宝分布式框架Fourinone介绍,确实有一种相见恨晚的感觉,于是就准备去研究一番,详细见本人的感想文章由fourinone初步学习想到的,确实来说,感觉到有一种啃不动的感觉,当然也可能是本人水平不足的原因所致。但是不管怎么说,促动了本人来写一
2015-09-10 09:41:10
288
原创 TinyHtmlParser开源喽
优点: 高效、简单、易用的Html解析器。 学习时间,分分钟。 解析速度超过,查找速度超快,支持格式化。 有强悍的容错性,即使HTML标签不规范,也会尽可以进行匹配,弥补,正确纠错率达95%以上。即使不能正确纠错,也不会导致解析不下去。 支持大小写混合匹配,即开始标签与结束标签为和也可以正确的进行匹配。 Maven引用坐标: 1
2015-09-10 09:41:07
262
原创 TinySpider开源喽
TinySpider是一个基于Tiny HtmlParser的网络数据抓取框架。 Maven引用坐标: ?12345org.tinygrouptinyspider0.0.12网络爬虫,一般用在全文检索或内容获取上面。 Tiny框架对此也做了有限的支持,虽然功能不多,但是想做全文检索或从网页上获取数据也是非常方便的。 框架特性强大的节点过滤
2015-09-10 09:41:05
269
原创 TinyXmlParser开源喽
优点: 高效、简单、易用的Xml解析器。 学习时间,分分钟。 支持中文标签名与属性名,支持下划线,减号等分隔符。 解析速度超过,查找速度超快,支持格式化。 缺点:不支持Xml Schema,DTD校验。 Maven引用坐标: 12345org.tinygroupxmlparser0.0.12解析下面xml 12345678910
2015-09-10 09:41:03
251
原创 Tiny快速入门之控制层开发
前面讲了Tiny快速入门之服务开发和Tiny快速入门之Web界面快速开发实践,也就是说开发服务和界面都没有问题了,很明显要做一个完整的系统还是不够的,因此肯定有控制层,才可以把整个过程打通。控制层充当着界面和服务之间协作的角色。控制器从界面层接收用户输入的信息,然后调用服务来执行特定的处理,并把最终的结果回传给界面层进行渲染。Tiny框架中控制层的写法可以有许多种:集成Struts
2015-09-10 09:41:00
309
原创 TinyDBRouter
20205451_b4IV.jpg (86.56 KB, 下载次数: 0)下载附件2015-5-27 21:43 上传 20205452_tXbK.jpg (90.51 KB, 下载次数: 0)下载附件2015-5-27 21:43 上传 20205453_U42q.jpg (79.42 KB, 下载次数: 0)下载附
2015-09-10 09:40:57
590
原创 TinyIOC
在动不动就是SSH的年代,IOC,AOP不是啥新东东。Spring之所以庞大,是因为集成了太多太多的功能。 验证性的开发了一下,仅实现IOC、AOP、子容器简单实践一下。 当然了,必须以HelloWorld示例: 接口: 123public interface Hello { void sayHello(String name);}
2015-09-10 09:40:54
332
原创 开源前要做好哪些准备工作?
最近看到OSC上一些大牛小牛在开源,偶也心里毛毛乎乎的,也有一些朋友说,快开源吧,开源了参考参考。其实偶也想快点开源,但是还是一直捂着,没有拿出来。 原因是这样的: 第一印象是相当重要的,如果第一印象不好,许多人不会给你第二次机会再来了解你的。 如果要开源,必须是要比较完整的,如果拿出来一个不完整的,如果期望使用者能跟着你一步一步的调整、学习,是完全不可想象的。 如果要开源,必要的文档是必须的,
2015-09-10 09:40:52
352
原创 分布式锁的简单实现
分布式锁在分布式应用当中是要经常用到的,主要是解决分布式资源访问冲突的问题。 一开始考虑采用ReentrantLock来实现,但是实际上去实现的时候,是有问题的,ReentrantLock的lock和unlock要求必须是在同一线程进行,而分布式应用中,lock和unlock是两次不相关的请求,因此肯定不是同一线程,因此导致无法使用ReentrantLock。 接下来就考虑采用自己做个状态来进行
2015-09-10 09:40:48
190
原创 TinyDBCluster Vs routing4db
routing4db的作者是@CodeFurtur,主页详见:https://code.google.com/p/routing4db/ 阅读了routing4db的源码,当然理解上与作者还是有差距的,如果有错误之处,欢迎指正。 底层实现差异 实现层次 TinyDBCluster选择在Jdbc Driver层实现,因此不依赖各种Spring等框架;routing4db选择在应用层解决,对dat
2015-09-10 09:40:46
411
原创 文档生成框架
序言 Word文档生成在许多项目中都是需要的,目前来看有两种方案,一种是通过Apache POI工具包、iText来生成,另外一种是利用Office Open Xml规范来进行生成。各种方案各有优缺点,这里不对其进行详细比较,已经有许多人进行过深入的比较,详细请咨询谷哥和度娘。这里采用的方案是利Office Open Xml的方式进行文档生成。 对于采用POI,iText来说,要生成复杂的Doc文
2015-09-10 09:40:44
394
原创 数据库分区分片框架
序言 一直在做企业应用,目前要做一些互联网应用,当然只是应用是放在互联网的,数据量距离真正的互联网应用还是有相当大的差距的。但是不可避免的,在数据库出现瓶颈的情况还是有的,现在做互联网上的应用,当然也要未雨绸缪,要考虑数据量大的时候的解决方案。 这个目前开源的商用的也都有不少解决方案,一来,做技术的都有这么个臭毛病,即使是使用别人的方案,自己也要搞清楚内部的一些实现机制,这样才会有真正的体会,否
2015-09-10 09:40:41
621
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人