最近在公司内部做技术交流的时候,说起技能提升的问题,调研大家想要培训什么,结果大出我意料,很多人想要培训:面向对象编码.于是我抛出一个问题:你觉得我们现在的代码是面向对象的吗?有人回答:是,有人回答否.我对这个问题的回答是:语法上,是了,但是架构上或者思想上,不是.我们现在的大部分代码,如果要死扣一个名词的话,那就是:事务脚本. 1:最开始的事务脚本 在 Martin Fowler 的书中,存在一个典型的 应用场景,即“收入确认”(Revenue Recognition).该“收入确认”的描述:…
阅读目录: 1.背景介绍 2.简单介绍表模块模式.事务脚本模式 3.正确的编写表模块模式.事务脚本模式的代码 4.总结 1.背景介绍 要想正确的设计系统架构就必须能正确的搞懂每个架构模式的用意,而不是胡子眉毛一把抓.现在有一个现象是什么呢,项目的结构从表面上看是很不错,层分的很合理,其实对业务系统来说也就那么几种层设计方法,但是现在很多项目的逻辑架构的设计不是理想,有很多概念大家并不是很了解,当然也许每个人对技术的追求不同罢了.不管你追求不追求,事实我们还是要去往正确的方向努力才对的. 很多人包…
某个朋友问为什么不推首页或者允许评论,我说一直没怎么写博客,也习惯了先随便乱画再开始写文档,担心公开后一些不经意的"呓语“中得出的错误的结论会给别人错误的观点,所以这个系列只是当做熟悉写博客的习作和研究笔记.等过后有时间了再修改完善或者另开一个更系统的专题. EF出来不短的时间了,为什么一直没用?因为其实有很长一段时间没有负责架构搭建的工作了,更多的时间花在前端,数据库,文档,客户需求方面.当然精力不足只是借口,更多的是形成了一种不好的技术惰性,总认为能理解是怎样的就行了,如果没有项目需求,没必…
DDD与数据事务脚本 扯淡 相信点进来看这篇文章的同学,大部分是因为标题里面的"DDD"所吸引!DDD并不是一个新技术,如果你百度一下它的历史就会知道,实际上它诞生于2004年, 到现在已经18年,完全是个"古董",软件开发技术日新月异,DDD确显得很独特,一直不温不火,也未淘汰.有些人为了使用DDD"苦思冥想".有些人对它保持敬畏,觉得是一种高端的技术,当然也有人觉得这玩意垃圾根本没用.废话不多说. 下面我尝试使用一个最基本的业务场景来讨论下d…
# -*- coding: cp936 -*-#本脚以最左边.Y值最大的点为起始点按顺时针为多边形节点编码,生成一个包含记录编码值和多边形FID字段的点要素类 #注意:#1.本脚本作为arcgis脚本工具使用.脚本测试版本为10.0中文,未装sp5补丁#2.暂不支持带环多边形,处理带环多边形程序直接崩溃#3.本工具脚本用到系统工具"多部分(Multipart)至单部分(Singlepart)",因该工具无法完美处理所有的CAD多边形要素类,#  所以本脚本工具只支持简单CAD多边形要素…
查看oracle undo segment段的信息: SELECT T1.USN, T2.NAME, T1.STATUS, T1.LATCH, T1.EXTENTS, T1.WRAPS, T1.EXTENDS FROM V$ROLLSTAT T1, V$ROLLNAME T2 WHERE T1.USN = T2.USN; 检查事务使用undo segment的情况: SELECT s.username, s.sid, pr.PID, s.OSUSER, s.MACHINE, s.PROGRAM,…
1.1 抽象过程 1.所有编程语言都提供抽象编程机制. 2.人们所能够解决的问题的复杂性直接取决于抽象的类型(所抽象的是什么)和质量. 3."命令式"语言(basic,c等)都是对汇编语言的抽象,但是仍然要求解决问题时依赖计算机的结构,程序员必须建立起在机器模型(如计算机)和实际待解决问题(例如一项业务)之间的关联. 4.对机器建模的方式就是只针对待解问题建模.如 lisp和apl,只能解决某个特定问题. 5.面向对象方式则通过向实际待解问题提供表示问题元素的工具而更进一步.这种表示方…
一:面向对象设计中最简单的部分与最难的部分 如果说事务脚本是 面向过程 的,那么领域模型就是 面向对象 的.面向对象的一个很重要的点就是:“把事情交给最适合的类去做”,即:“你得在一个个领域类之间跳转,才能找出他们如何交互”,Martin Flower 说这是面向对象中最难的部分,这具有误导的成份.确切地说,我们作为程序员如果已经掌握了 OOD 和 OOP 中技术手段,那么如何寻找类之间的关系,可能就成了最难的部分.但在实际的情况中,即便我们不是程序员,也总能描述一件事情(即寻求关系),所以,找…
领域模型(Domain Model) 一:面向对象设计中最简单的部分与最难的部分 如果说事务脚本是 面向过程 的,那么领域模型就是 面向对象 的.面向对象的一个很重要的点就是:“把事情交给最适合的类去做”,即:“你得在一个个领域类之间跳转,才能找出他们如何交互”,Martin Flower 说这是面向对象中最难的部分,这具有误导的成份.确切地说,我们作为程序员如果已经掌握了 OOD 和 OOP 中技术手段,那么如何寻找类之间的关系,可能就成了最难的部分.但在实际的情况中,即便我们不是程序员,也总…
这篇主要说的是程序设计思想发展历史,分为概述和详细发展历史 一,概述 1940年以前:面向机器 最早的程序设计都是采用机器语言来编写的,直接使用二进制码来表示机器能够识别和执行的 指令和数 据.简单来说,就是直接编写 0 和 1 的序列来代表程序语言.例如:使用 0000 代表 加载(LOAD),0001 代表 存储(STORE)等. 机器语言由机器直接执行,速度快,但一个很明显的缺点就是:写起来实在是太困难了,一旦你 发现自己 写错了,改起来更蛋疼!这样直接导致程序编写效率十分低下,编写程序花…
概述 1940年以前:面向机器 1940年以前:面向机器 最早的程序设计都是采用机器语言来编写的,直接使用二进制码来表示机器能够识别和执行的指令和数 据.简单来说,就是直接编写 和 的序列来代表程序语言.例如:使用 代表 加载(LOAD), 代表 存储(STORE)等. 机器语言由机器直接执行,速度快,但一个很明显的缺点就是:写起来实在是太困难了,一旦你发现自己写错了,改起来更蛋疼!这样直接导致程序编写效率十分低下,编写程序花费的时间往往是实际运行时间的几十倍或几百倍. 有一个关于机器语言和比尔…
Martin Fowler在<企业应用架构模式>一书中写道: I found this(business logic) a curious term because there are few things that are less logical than business logic. 初略翻译过来可以理解为:业务逻辑是很没有逻辑的逻辑. 的确,很多时候软件的业务逻辑是无法通过推理而得到的,有时甚至是被臆想出来的.这样的结果使得原本已经很复杂的业务变得更加复杂而难以理解.而在具体编码实现…
写在前面 Martin Fowler在<企业应用架构模式>一书中写道: I found this(business logic) a curious term because there are few things that are less logical than business logic. 初略翻译过来可以理解为:业务逻辑是很没有逻辑的逻辑. 的确,很多时候软件的业务逻辑是无法通过推理而得到的,有时甚至是被臆想出来的.这样的结果使得原本已经很复杂的业务变得更加复杂而难以理解.而在具…
Java OOP 思想深度刨析 Java面向对象编程 面向对象编程简称OOP(Object--对象.Oriendted--导向的.Programming--程序设计) 面向对象通俗来讲,就是指使用丰富的对象内容进行的程序设计 OOP的引入 在一个项目中,如果在不同的class中存在相同的方法,这样会使得程序编码效率降低,代码冗余复用性变差.所以提出了一种方式,就是用一个class去封装不同class中相同的方法,然后在使用该方法的时候,创建出一个实例去编码,这样一来程序的编码效率就会提高,也不会…
面向对象 面向对象是一种对世界理解和抽象的方法.那么对象是什么呢? 对象是对世界的理解和抽象,世界又代称为万物.理解世界是比较复杂的,但是世界又是由事物组成的. 正是这样的一种关系,认识事物是极其重要的.那什么是事物呢? 事物:由事和物两个方面组成.事即事情,物即物体,那什么是事情?什么是物体呢? 意志的行为是为事. 存在的一切是为物,物体又是由属性和行为组成的. 由于对象是对事物的理解和抽象,所以对象就是对一个事物的属性和行为的理解和抽象.正是这样的一种关系,面向对象就是对一个事物的属性和行为…
阅读目录: 1.背景介绍 2.过程式代码的真正困境 3.工作单元模式的简单示例 4.总结 1.背景介绍 一直都在谈论面向对象开发,但是开发企业应用系统时,使用面向对象开发最大的问题就是在于,多个对象之间的互操作需要涉及数据库操作.两个业务逻辑对象彼此之间需要互相调用,如果之间的互相操作是在一个业务事务范围内的,很容易完成,但是如果本次业务逻辑操作涉及到多个业务对象一起协作完成时问题就来了. 在以往,我们使用过程式的代码(事务脚本模式),将所有与本次业务事务范围内相关的所有逻辑都写在一个大的代码中…
工作需要,闲暇之余,仔细研究了一下脚本乱码的问题 1. vim新建的文件 1)在linux命令行 vim命令建立的文件,如果内容中不出现中文,默认是ASCII.那么用notepad++打开的时候,就是“以ASC格式编码”.如下面的: 99.txt2) 如果vim在建立文件的时候,故意在文件中插入中文(我的secureCRT是utf8的),此时文件内容不会乱码,而且vim保存文件后,再用vim打开也会看到中文,没有乱码.我猜测应该是Linux碰到中文,自动就转换成文档应该用utf8而不是asc保存…
SmartBear 数据表明,如果 Amazon 的加载时间延长 1 秒,那么一年就会减少 16 亿美元的营收.用户与网站互动的过程中,如果加载时间超过3秒,57% 的用户会流失.可见,网站的加载时间是多么重要. OneAPM-CloudTest 加班加点给大家上线事务录制.监控功能,能够录制事务过程,对事务24小时监控,在用户访问网站前,清楚的知道网站的响应时间. 添加事务监控时,首先需要下载脚本录制器,录制脚本. 下载完脚本录制器后,双击OneAPMRecorder.exe,如下: 打开录制…
这几天遇到一个BUG,问题很简单,解决却花了3.4天,特意记录下来. linux环境下,将默认编码设置为GBK以后,运行GBK编码的脚本,调用一个Java的jar包,然后总jar包中返回GBK字符串.但是不知道是哪里出了问题,返回的参数一直是问号乱码. 放上脚本代码: #!/bin/bash #str="\"$1 $2 $3\"" str="\"http://iap.zh.gmcc.net/WebService/Notify.asmx chenl…
阅读文件夹: 1.背景介绍 2.过程式代码的真正困境 3.工作单元模式的简单演示样例 4.总结 1.背景介绍 一直都在谈论面向对象开发.可是开发企业应用系统时.使用面向对象开发最大的问题就是在于,多个对象之间的互操作须要涉及数据库操作.两个业务逻辑对象彼此之间须要互相调用,假设之间的互相操作是在一个业务事务范围内的,非常easy完毕,可是假设本次业务逻辑操作涉及到多个业务对象一起协作完毕时问题就来了. 在以往,我们使用过程式的代码(事务脚本模式),将全部与本次业务事务范围内相关的全部逻辑都写在一…
众所周知MySQL的DDL语句是非事务的,即不能对DLL语句进行回滚操作,哪在事务中包含DDL语句会怎样呢? 如: #禁用自动提交 set autocommit=off; #创建tb1 create table tb1(id int auto_increment primary key,c1 int); #开始事务 start transaction; #插入数据 ; ; ; #创建tb2 create table tb2(id int auto_increment primary key,c1…
编写Shell脚本的最佳实践 http://kb.cnblogs.com/page/574767/ 需要记住的 代码有注释 #!/bin/bash # Written by steven # Name: mysqldump.sh # Version: v1. # Parameters : 无 # Function: mysqldump备份mysql # Create Date: -- 缩进有规矩 编码要统一 在写脚本的时候尽量使用UTF-8编码 太长要分行 巧用heredocs 学会查路径 sc…
一.前言 由于工作需要,最近重新开始拾掇shell脚本.虽然绝大部分命令自己平时也经常使用,但是在写成脚本的时候总觉得写的很难看.而且当我在看其他人写的脚本的时候,总觉得难以阅读.毕竟shell脚本这个东西不算是正经的编程语言,他更像是一个工具,用来杂糅不同的程序供我们调用.因此很多人在写的时候也是想到哪里写到哪里,基本上都像是一段超长的main函数,不忍直视.同时,由于历史原因,shell有很多不同的版本,而且也有很多有相同功能的命令需要我们进行取舍,以至于代码的规范很难统一. 考虑到上面的这…
Python中的字符编码与解码困扰了我很久了,一直没有认真整理过,这次下静下心来整理了一下我对方面知识的理解. 文章中对有些知识没有做深入的探讨,一是我自己也没有去深入的了解,例如各种编码方案的实现方式等:二是我觉得只要提能对理解Python字符编码与解码的关键知识即可,想深入可以查其它资料. 文中的观点肯定有纰漏,只做参考,欢迎指正. Unicode 参考:http://baike.baidu.com/view/40801.htm Unicode是什么,这里不多说了,百科上面讲的很清楚了,这里…
powershell的-enc参数允许传入一个base64编码过的powershell脚本字符串作为参数来执行该powershell脚本,该方法常被用于绕过杀毒软件的主动防御机制. 今天下午在做一个后门程序时,通过在线base64编码网站编码的字符串竟然没法被powershell的-enc参数解析,解析时全是乱码,通过查找资料终于解决了这个问题 故将这个问题记录下来以备后续使用 方法引用自:http://www.pstips.net/question/5827.html 可以使用如下脚本,对所需…
场景:Android APP多表操作事务管理 使用Android自带的sql操作类操作的时候需要手动处理事务,使用GreenDao的时候不用管了,啥都处理好了.但是,如果是多表操作的话,怎么统一管理事务? 关键思想是事务嵌套,具体方法使用: DaoSession().callInTx() 看源码可以知道callInTx里面有一层事务管理,实际调用insert.update之类的具体方法的时候,里面还有一层事务.进行事务嵌套后,只要内层的事务有一个操作失败,最外层的事务就认为整个事务都失败,其他操…
需要养成的习惯如下: 代码有注释 #!/bin/bash # Written by steven # Name: mysqldump.sh # Version: v1.0 # Parameters : 无 # Function: mysqldump备份mysql # Create Date: 2016-08-27 缩进有规矩 编码要统一 在写脚本的时候尽量使用UTF-8编码 太长要分行 巧用heredocs 学会查路径 script_dir=$(cd $(dirname $0) && pw…
转自:http://kb.cnblogs.com/page/574767/ 前言 由于工作需要,最近重新开始拾掇shell脚本.虽然绝大部分命令自己平时也经常使用,但是在写成脚本的时候总觉得写的很难看.而且当我在看其他人写的脚本的时候,总觉得难以阅读.毕竟shell脚本这个东西不算是正经的编程语言,他更像是一个工具,用来杂糅不同的程序供我们调用.因此很多人在写的时候也是想到哪里写到哪里,基本上都像是一段超长的main函数,不忍直视.同时,由于历史原因,shell有很多不同的版本,而且也有很多有相…
搭建weblogic服务,前期准备都已经完成,安装包都是已上传,执行install_wls1213.sh脚本,出现以下报错: install_wls1213.sh: line 1: rectory: command not found : command not found line 3: : command not found line 6: : command not found line 9: : command not found line 12: : command not found…
目录 1 关于脚本 2 脚本使用的最佳实践 2.1 创建脚本并存储 2.2 脚本的缓存 2.3 Script Field - 脚本字段 本文以 ES 6.6.0 版本为例进行演示. 1 关于脚本 ES提供了脚本支持 -- 可以通过Groovy外置脚本(已过时).内置painless脚本实现各种复杂操作. -- painless有轻便之意, 使用时直接在语法中调用即可, 无需外置, 也就是不支持通过外部文件存储painless脚本并调用的方法. // 向ES中插入一条数据: PUT employe…