0%

有人说过,读书是获得第二人生的过程。
《建筑的永恒之道》是一本很有哲学感的讲述建筑的书,作者试图探究建筑的永恒之道,探究什么样的建筑能给人们带来活力、带来生机。
作者认为,建筑是为人服务的,一个和谐的、自然的,能让你感觉到自己、感觉到生活气息、有活力的地方是建筑追求的目标。
本书先是介绍了永恒建筑应该具有的特质(作者命名为无名特质,因为无法确切的用某个词语来下定义),然后为了满足这些特质,作者联系我们的语言、自然的进化,提出了用一种模式语言来构建满足这种无名特质的建筑,从私人住宅、到街区、到城市,一切都能涵盖在这种模式语言中。

阅读全文 »

奥勒留:古罗马皇帝+苦修哲学家,以一世英主而身兼苦修哲学家的人历史唯一一个。
本书是作者的随笔,在行军中记录人生的感悟,所以结构比较零散、内容重复,也没有分主题归门别类。
作者重点记录了如何为人处世、如何理性思考、如何秉承自然之道等等的感悟。
比较特别的是,作者在理性以及自然之道之上,讲述了人应该如何坦然面对死亡的问题,作者认为死亡也是自然变化的结果,死亡也是元素之间的转换,这是自然之道。
关于死亡,早在两千多年前,有人问孔老夫子死是怎么回事,孔子回答说,“未知生,焉知死。”;而法国哲学家蒙田说过:“学习哲学即是学习如何去死。”所以,学习哲学让人能更平静的面对死亡。
对于哲学,作者说到,哲学就像亲娘,在你需要慰藉的时候,可以投入它的怀里。 确实是,哲学能让人从更高的境界、更高的角度去思考和看待问题,能让人从日常的短视的观念中解脱出来。像作者一直强调的“你遭遇外界挫折而烦恼的时候,使你困扰的不是那件事情的本身,而是你自己对那件事情的判断。”
在做人方面,有一点作者讲得非常好,我们要追求人性中美好的部分,而不是成功。

阅读全文 »

三段论在传统逻辑中,是在其中一个命题(结论)必然地从另外两个命题(叫做前提)中得出的一种推论。这个定义是传统的,可以宽松地从亚里士多德的《前分析篇》Book I, c. 1中推出来。希腊语“sullogismos”的意思是“演绎”。
三段论由三个部分组成:大前提、小前提和结论,它在逻辑上是从大前提和小前提得出来的。大前提是一般性的原则。小前提是一个特殊陈述。在逻辑上,结论是从应用大前提于小前提之上得到的。

阅读全文 »

芝诺悖论是古希腊数学家芝诺(Zeno of Elea)(盛年约在公元前464-前461)提出的一系列关于运动的不可分性的哲学悖论。这些悖论由于被记录在亚里士多德的《物理学》一书中而为后人所知。芝诺提出这些悖论是为了支持他老师巴门尼德关于“存在”不动、是一的学说。这些悖论是芝诺反对存在运动的论证其中最著名的两个是:“阿基里斯追乌龟”和“飞矢不动”。这些方法现在可以用微积分(无限)的概念解释。

阅读全文 »

一本介绍了数据仓库(DW)和商业智能(BI)的建模过程,不过因为主要的难度是在后端的ETL过程,所以本书理论上说重点还是介绍了DW的建模过程,BI更多指向的是前端的报表开发,技术上难度没有后端的ETL大。
本书最大的特点是,针对我们常见行业重点业务过程的建模进行了详细描述,让用户对数据建模有个直观的了解。
在启动BI项目之前,我们必须明白,BI的主要收益是,获得高质量的决策。

阅读全文 »

一、概念

1、排它锁和共享锁

在数据库中有两种基本的锁类型:排它锁(Exclusive Locks,即X锁)和共享锁(Share Locks,即S锁)。
当数据对象被加上排它锁时,其他的事务不能对它读取和修改。
加了共享锁的数据对象可以被其他事务读取,但不能修改。
数据库利用这两种基本的锁类型来对数据库的事务进行并发控制。

阅读全文 »

ODI:Oracle Data Integrator
CDC概念:CDC全称Changed Data Capture,顾名思义就是捕获变化的数据。
换句话说,这也可用于增量的ETL,否则的话,每次ETL都要进去全量抽取的话,效率必然极大的下降,实用性也不高。
CDC其实是增量抽取的概念,但在ODI中,却意味着ODI独特的增量抽取方法。

阅读全文 »

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/*Oracle 业务表添加时间戳触发器*/  
CREATE OR REPLACE PROCEDURE "P_ADD_KETTLE" (
table_name VARCHAR2) AS
BEGIN
DBMS_OUTPUT.PUT_LINE(table_name);
--添加时间戳列
EXECUTE IMMEDIATE 'Alter Table "'|| table_name || '" add KETTLE_LASTMODIFY TIMESTAMP (6) DEFAULT current_timestamp';
COMMIT;
--添加触发器
EXECUTE IMMEDIATE 'CREATE OR REPLACE TRIGGER KL_'|| SUBSTR('KL_' || table_name,4,27) || '
BEFORE Insert or Update ON "'|| table_name || '"
FOR EACH ROW
DECLARE
-- local variables here
BEGIN
:NEW.KETTLE_LASTMODIFY := current_timestamp;
END;';
COMMIT;
DBMS_OUTPUT.PUT_LINE('PROCESS OK...');

END p_add_kettle;

这里代理键指使用非business column作为主键字段的情况,通常就是我们想给每条记录添加的ID。

一.MSSqlServer的代理键

  1. 最简单的方法是使用自增字段,这样就不必在代码中处理自增字段。
    缺点:用过的值删除后不会很难再被使用
  2. 采用最大值表的方法保存所有代理键的最大值。可以将处理算法放在服务器端的存储过程中,也可以采用客户端算法生成代理键,但这都就需要在代码中明确给代理键字段赋值。采用这种方法还要注意防止同时读写代理键候选值。

二.Oracle的代理键

1. Oracle中没有自增字段

所以不管采取什么方法,都免不了要明确处理代理键字段。最接近MSSqlServer自增字段的方法步骤如下:

阅读全文 »

Oracle DML触发器实现功能:
很多时候我们或者客户有如下需求:
在A.B表上添加触发器.
触发事件:UPDATE,DELETE,INSERT 后触发;对表的每一行触发器执行一次;记录用户名,操作类型,操作时间,修改或删除前的数据,新增的数据。

阅读全文 »