0%

一本纯粹堆积概念的书,没什么干货,就不具体写心得了。
下面简单的就主数据进行一些整理。

1、产生的背景

其实主数据因为是IT系统在发展过程当中,缺乏整体的规划(包括业务和技术),导致各部门自产自销,只关心本部门本系统的数据,导致各系统中重用的关键的基础信息编码及口径都不一致。

2、处理流程

所以目前主数据管理首先要做的是各源系统的主数据合并和清理问题。主要的流程是“合并->清洗->审核->分发”;然后在实际运行过程当中,对新增、变更的部分进行管理,其中新增和变更可以在各个源系统维护,然后提交到MDM系统审核、分发,也可以在MDM系统统一维护,然后分发。

3、分发技术

分发可以采用同步WebService接口,也可以采用JMS消息的异步机制

4、特殊说明

有一些主数据,例如组织架构,虽然是主数据,但是变化频率还是很高。针对组织架构、项目的架构(期区、单位工程、楼栋)经常发生变化的情况,关键是业务数据必须绑定到原子层面上,如果在原子层面上没有变化,那么业务数据不需要重新绑定。但是,如果原子层面都发生了变化,那就需要调整了。如果原子层面的变化,前后是有映射关系,也可以通过系统来处理。

阅读全文 »

转自一组图详解元数据、主数据与参考数据
在数据资产管理领域,有着许多相似的概念和词汇。譬如说“数据管理”和“数据治理”,像孪生兄弟一样让人纠结不已。上周,与一个朋友聊起元数据、主数据和参考数据的关系是什么。这个话题我们足足聊了二十分钟。这三个概念我在一开始做数据管理相关工作的时候也纠结了挺久,于是我根据聊起来的内容稍稍总结了一下,就有了这篇文章,希望能给读者减少些许疑惑。

阅读全文 »

MetaData意思是元数据,也称之为数据的数据。
数据的数据?
一个数据存储在共享卷里时,我们可以直接看到它是一个文档、或图片、或视频、或数据库文件,这些都是数据本身。然而在存储该数据时,文件系统还会产生很多无法直接看到的,与该数据有关的数据,如文件系统中文件检索表,路径信息、地址信息等,而这些数据就称之为文档、图片、视频等在共享卷中的元数据。
SAN网络存储共享软件管理的主要内容就是元数据,控制元数据在多主机之间的传输。
我们可以在很多地方看到元数据的存储,网上DOWN下来的电影本身一个视频文件数据,而点击右键查到看的视频文件属性,如存储路径、码率、文件大小、及导演、演员、制作单位等就是视频文件的元数据。
在地理空间信息中用于描述地理数据集的内容、质量、表示方式、空间参考、管理方式以及数据集的其他特征,它是实 现地理空间信息共享的核心标准之一。

阅读全文 »

1、生产过程

借:生产成本(成本类科目-5001)
贷:原材料(资产类科目-1403)

2、生产完成

借:库存商品(资产类科目-1405)
贷:生产成本(成本类科目-5001)

3、销售(一般纳税人)

借:现金/银行存款/应收账款
贷:主营业务收入
应交税费-增值税-销项税额

4、结转成本

借:主营业务成本(损益类科目-6401)
贷:库存商品(资产类科目-1405)

5、一级会计科目表

阅读全文 »

一、大型网站架构演化

初始阶段的网站架构(单台服务器)-> 应用服务器和数据服务分离(数据库和文件服务器都单独成一个服务器) -> 使用缓存改善网站性能(本地缓存、分布式缓存) -> 使用应用服务器集群改善网站的并发处理能力 -> 数据库读写分离 -> 使用反向代理(网站中心机房)和CDN(网络运营商那里)加速网站响应(缓存静态、热点内容)->使用分布式文件系统和分布式数据库系统(更常用的是业务分库) ->使用NoSQL和搜索引擎 -> 业务拆分 ->分布式服务

阅读全文 »

散列表的应用

涉及到数据查找比对,首先考虑到使用HashSet。HashSet最大的好处就是实现查找时间复杂度为O(1)。使用HashSet需要解决一个重要问题:冲突问题。对比研究了网上一些字符串哈希函数,发现几乎所有的流行的HashMap都采用了DJB Hash Function,俗称“Times33”算法。Times33的算法很简单,就是对字符串逐字符迭代乘以33,见下面算法原型:hash(i)=33*hash(i-1)+str[i]

1
2
3
4
5
6
7
8
uint32_t time33(char const *str, int len)   
{
unsigned long hash = 0;
for (int i = 0; i < len; i++) {
hash = hash *33 + (unsigned long) str[i];
}
return hash;
}

把乘法操作换成位操作(Java版)

1
2
3
4
5
6
7
8
9
10
public String time33(String skey) {  
if (skey == null) return null;
int hash = 5381;
for (int i = 0, len = skey.length(); i < len; ++i) {
int cc = skey.charAt(i);
hash += (hash << 5) + cc;
}
hash &= 0x7fffffff;
return String.valueOf(hash);
}
阅读全文 »

现在敏捷开发是越来越火了,人人都在谈敏捷,人人都在学习Scrum和XP...
为了不落后他人,于是我也开始学习Scrum,今天主要是对我最近阅读的相关资料,根据自己的理解,用自己的话来讲述Scrum中的各个环节,主要目的有两个,一个是进行知识的总结,另外一个是觉得网上很多学习资料的讲述方式让初学者不太容易理解;所以我决定写一篇扫盲性的博文,同时试着也与园内的朋友一起分享交流一下,希望对初学者有帮助。

一、什么是敏捷开发?

敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。
怎么理解呢?首先,我们要理解它不是一门技术,它是一种开发方法,也就是一种软件开发的流程,它会指导我们用规定的环节去一步一步完成项目的开发;而这种开发方式的主要驱动核心是人;它采用的是迭代式开发;

阅读全文 »

一、燃尽图介绍

Burn down chart翻译为燃尽图或燃烧图,很形象,是Scrum中展示项目进展的一个指示器。我一直认为用户故事、每日站立会议、燃尽图、sprint review、sprint retrospective真是越琢磨越有味道的好东西,也因此很喜欢scrum这种方法,这些实践简单有效、经典!
燃尽图的样例如下:

阅读全文 »

在多线程并发编程中Synchronized一直是元老级角色,很多人都会称呼它为重量级锁,但是随着Java SE1.6对Synchronized进行了各种优化之后,有些情况下它并不那么重了,SE1.6中为了减少获得锁和释放锁带来的性能消耗而引入的偏向锁和轻量级锁,以及锁的存储结构和升级过程。

最近了解下基于 Token 的身份验证,跟大伙分享下。很多大型网站也都在用,比如 Facebook,Twitter,Google+,Github 等等,比起传统的身份验证方法,Token 扩展性更强,也更安全点,非常适合用在 Web 应用或者移动应用上。Token 的中文有人翻译成 “令牌”,我觉得挺好,意思就是,你拿着这个令牌,才能过一些关卡。

一、传统身份验证的方法

HTTP 是一种没有状态的协议,也就是它并不知道是谁是访问应用。这里我们把用户看成是客户端,客户端使用用户名还有密码通过了身份验证,不过下回这个客户端再发送请求时候,还得再验证一下。
解决的方法就是,当用户请求登录的时候,如果没有问题,我们在服务端生成一条记录,这个记录里可以说明一下登录的用户是谁,然后把这条记录的 ID 号发送给客户端,客户端收到以后把这个 ID 号存储在 Cookie 里,下次这个用户再向服务端发送请求的时候,可以带着这个 Cookie ,这样服务端会验证一个这个 Cookie 里的信息,看看能不能在服务端这里找到对应的记录,如果可以,说明用户已经通过了身份验证,就把用户请求的数据返回给客户端。
上面说的就是 Session,我们需要在服务端存储为登录的用户生成的 Session ,这些 Session 可能会存储在内存,磁盘,或者数据库里。我们可能需要在服务端定期的去清理过期的 Session 。

阅读全文 »