第一篇:DaTaStage入门学习心得
DataStage入门学习心得
DataStage是一个ETL的工具,就是对数据的抽取,转换,加载。个人通俗的理解就是一个对数据进行处理,提取的工具,这里面的数据大部分是以数据库中表的格式存在着的,所以如果要使用这个工具,首先必须对关系数据库的一些基本概念要有所了解,比如最基本的字段,键,记录等概念。
DataStage是通过设计job来实现ETL的功能的。Job的设计跟普通的IDE设计一样,通过拖拽控件,并填加脚本来完成。这里的控件称为stage,每一个不同的stage都有不同的数据处理的功能,将各个stage通过一定的方式组合起来,设计成job,对job进行编译,运行,就能够实现对数据抽取转换加载。
因此,要设计job的关键,就在于能够熟悉每个不同的stage并且能够灵活运用。在文档和指导中有对每个控件的使用方法作了图文并茂的说明,但是教材语言的一个缺点就是太过形式化,所以有些概念不能够很好的理解。比如lookup这个stage我在看教材的时候就没有太了解。所以,我就结合自己,用自己的语言对一些比较常用的stage说一下自己的理解和一些需要注意的地方。
在这么多的控件当中,实际上平时要用到的只有为数不多的几个:
Sequential File Stage:这个控件实际上是指代主机上面的一个文件,在它的属性中可以选定文件的路径,目录。一般这些文件都是以类似数据库表的格式存在的。使用这个控件关键的地方在于要设置好它的格式,包括column和format这两个标签。Column指的是文件当中的列定义,一般可以通过load列定义文件来确定。Format指的是文件当中的一些分隔符,日期格式等等,在实际文件当中字段和字段之间可以用逗号,竖线,等符号隔开,每个字段本身也可以选择是否要用引号来引起来。所有这些,stage要设置成和文件一致,否则这个stage就无法真实的指代主机上面的文件。如果不知道文件的字段格式,可以登录到unix主机下面去cat一下文件。一个验证的方法是在这个stage的属性当中选择显示数据view data,如果数据能够正常显示出来,那么就表示已经设置成功了。
Transformer stage:这个控件是个功能强大的控件,在开发的时候最经常用到。它有一个输入,而可以有多个输出。它最常用的也是最好用的功能就是对单个字段进行处理和转换。基本上想对单个字段做任何的操作都能够做到。包括拼接,转换,插入等等功能,需要自己在实际操作中熟悉。需要注意的地方是它的两个附加的功能,stage的变量和constrait限制条件。正如程序设计一样,在这个stage当中可以定义一些变量,来实现一些特定的功能。比如,我们定义某个变量var1,把输入的某个字段连到这个变量上面,然后,就可以根据输入字段来定义该变量的值,再通过判断该变量的值来设置输出字段。而constraint一般都是用来限制输出的,每个输出都有一个constraint,一般都是在constraint中限制条件,当满足这个条件时,才进行这个输出。
Join Stage:这个控件顾名思义,其实就是类似数据库当中的连接操作。因此,两个输入,一个输出。在stage属性里面可以设置left,right,inner,outer等等。只要对数据库的表连接操作了解,那么这个stage也就相应了解了。
Filter Stage:这个控件有点类似数据库sql语言中的where。一个输入,可以把这个输入理解为一张大表,在stage的属性中可以设置条件字段。多个输出,每个输出就是select * from 大表 where 条件所产生的结果。
LookUp Stage:这个控件最初看文档的时候,觉得说的不是很清楚。后来经过动手实践后,才能够真正理解。这个stage有多个输入,一个输出。有一个输入作为主输入,其它的的输入相当于是参考输入。主输入中的某些字段要来参考输入查询,然后再将结果进行输出。实际上就是一个“查表”的过程。比如主输入中有一个字段,如果值是a,到参考输入表中去查表,发现参考输入表中的a所对应的值是1,那么输出对应的字段就应该填1了。以此类推。这个控件在代码标准化的时候用到。
Change Capture Stage:这个stage是用来处理全量增量的时候用到的,在目前似乎暂时还没有用到。这个stage个人感觉是最困难的。其中的before link,after link。Key,value之间的关系比较混乱,需要在实践中逐渐熟悉。
Annotation stage:注释用的,放一块方框,用来往里面写注释。
关于reject:刚刚接触这个概念的时候,是比较难以理解的。因为这个好像是datastage自己所特有的概念。就我自己的理解来讲,每个文件都是由若干条记录组成的,而在这些记录里面,有一些记录是不符合规范的,比如说主键为空之类,或者某个字段不符合要求等等。这是时候,可以设定reject规则,把这些不符合规范的记录挑出来送到一个文件里面。而其他符合要求继续往下一步走,继续进行处理。
第二篇:Datastage学习总结
Datastage学习总结 Datastage介绍
1.1 产品概述
DataStage企业版是Ascential Software公司所有企业整合系列产品中关键产品。企业版支持大容量数据的收集、整合和转换,数据从简单结构到很复杂的结构。基于高可扩展性的软件架购,企业版使得企业能够通过高性能来解决大部分业务问题,并行处理大容量数据。强大的企业元数据管理能力使得可以在数据整合生命周期中在所有工具中共享和使用工具。
DataStage企业版发布了四个核心功能来成功实施企业数据整合: 1)先进的开发和简单化的维护; 2)企业级别的开发、监测和管理;
3)在吞吐量和性能方面提供了无限制的高扩展的体系架构; 4)端对端的企业级元数据管理。
DataStage企业版提供了全面的功能去最优化用户在建立、升级和管理数据整合架构时的速度、灵活性和效率。DataStage企业版增强的功能减少了学习的周期、简单化了管理和优化了开发资源的使用,减少了数据整合应用的开发和维护周期。结果,DataStage企业版使得企业能够花更少的时间开发他们的整合应用,更多的时间是不断的从中受益。
1.2 基础架构
1.3 客户档介绍
用户通过各个客户端工具访问DataStage企业版的开发、配置和维护功能。这些工具包括:
Designer:用来建立和编辑DataStage作业和表的定义。Designer中的“Job Sequencer”控制作业的执行,其他作业成功完成(或失败,等)的条件。
Administrator:用来执行管理任务,如建立DataStage用户、建立和删除工程并且建立清洗标准。
Manager:用来编辑管理用户工程的DataStage资料库。
Director:用来验证、时序安排、运行和监测企业版作业。日常操作
2.1 登录客户端
2.1.1 登录Datastage Administrator 客户机
点击图标
选择需要登录的服务器,输入用户名,密码登录
进去后点击项目,可进行项目增加,删除,设置项目属性
2.1.2 登录DatastageDesigner客户机
点击图标
选择需要登录的域,输入用户名,密码,选择需要登录的项目
登录成功:
2.1.3 登录DatastageDirector客户机
点击图标
选择需要登录的域,输入用户名,密码,选择需要登录的项目
登录成功:
2.2 启停服务端
以dsadm用户进入,执行以下命令:
1)Server启动命令:$HOMEDIR/uv–admin-start 注意:启动前,需要查看端口是否被释放,通过‘netstat–afinet |grep ds’查看,如果有连接,则需要等待操作系统自动释放后在启动服务。
2)Server停止命令:$HOMEDIR/uv–admin /stop 注意:停止前最好确保没有Client连接,可以通过‘onstat–a |grep ds’查看,是否还存在Client连接,否则要通知相应登录的client端彻底退出。
2.3 Job编译
登录Datastage Designer客户机,参见2.1.2,打开欲编译的Job,具体Job编译方法有两种:
1)选择菜单栏的【文件】->【编译(M)】,快捷键为F7。2)点击工具栏的编译图标。
2.4 Job运行
Datastage Job运行有两种方式:一种在Designer中,一种在Director中。1)登录Designer客户机,打开欲运行的Job,选择菜单栏的【文件】->【运行(R)】,快捷键为Ctrl+F5或者点击工具栏的运行图标。
2)登录Director客户机,选中欲运行的作业,选择菜单栏的【作业(J)】->【立即运行(N)】,或者点击工具栏的立即运行图标。
2.5 监视作业
登录Director客户机,选中欲监视的作业,右键选择【监视】,可以查看作业的运行情况。如下图所示:
2.6 查看日志
登录Director客户机,选中欲查看日志的作业,右键选择【查看日志】 出现:
2.7 作业解锁 2.7.1 方法1
如遇到断网等一些情况可能导致作业被某一锁定,从而无法对作业进行修改。解锁方法:
在浏览器输入Server端IP地址跟端口,如http://128.192.140.5:9080, 出现如下界面:
输入用户名,密码,登录后选择
【管理】->【会话管理】->【活动会话】,对那个被锁定作业的会话,选择【断开链接】
2.7.2 方法2 用管理员用户登录DataStage Administrator 打开对应PROJECT的【命令(M)】 执行 LIST.READU 查看Locks 通过最后一列item id找到被锁的对应的作业名 执行下面命令解锁 UNLOCK USERUserno ALL 其中username 为LIST.READU 所列出的信息中对应的Userno。
2.8 Job导入
登录Designer客户机,选择菜单栏的【导入(I)】->【Datastage组件(C)】,选择所需导入的dsx文件,界面如下:
2.9 Job导出
登录Designer客户机,导出Datastage Job有两种方法:
(1)选择菜单栏的【导出(X)】->【Datastage组件(C)】,界面如下:
点击添加按钮,选择所需的导出的Datastage Job,在要导出的作业组件一般选择“导出不带可执行文件的作业设计”,在导出到文件中选择本地的保存路径跟文件名。
(2)在所需导出的Job上右键单击,在弹出菜单中选择【导出(X)】,在如上界面中的导出到文件选择本地的保存路径跟文件名。
2.10 数据库表定义导入datastage 登录Designer客户机,选择菜单栏的【导入(I)】->【表定义(T)】->【插件元数据定义(M)】
选择表定义所在的数据库,输入用户名,密码
选择【导入(I)】 Datastage配置
3.1 常见目录说明
1)主机下发数据目录:/appdata/DATA#DATE 2)Datastage转码生成公共数据集目录:/appdata/DSDATA/$DATE/ 3)DataStage的配置目录,/usr/datastage/InformationServer/Configurations,其下有其配置文件,可以设置运行结点数,Dataset数据文件目录,Dataset日志文件目录。{ node “node1”
{
fastname “T219N2V3” pools “" resource disk ”/appdata/DSDATA/DATASET“ {pools ”“} resourcescratchdisk ”/appdata/DSDATA/SCRATCH“ {pools ”“}
} node ”node2“
{ fastname ”T219N2V3“ pools ”“ resource disk ”/appdata/DSDATA/DATASET“ {pools ”“} resourcescratchdisk ”/appdata/DSDATA/SCRATCH“ {pools ”“}
} } Dataset数据文件目录:resource disk ”/appdata/DSDATA/DATASET“ Dataset日志文件目录:resourcescratchdisk ”/appdata/DSDATA/SCRATCH" 4)DataStage的引擎所在目录,/usr/datastage/InformationServer/DSEngine,其下有bin,lib等,其中include里面有个dsapi.h很有用,定了很多错误,遇到错误,可以到文件里面找,不过这里只能找到常见错误,一些unexpected error无法在里面找到错误原因。
3.2 DataStage Administrator配置
登录Administrator客户机,选择【项目】标签,选择要配置的project,在General->Enviroment„中
1.在General类型下:
TMPDIR=XXX(将其指向一个相对较大的目录,不填写就是指缺省的/tmp目录,此处需要讨论)。
2.在Parallel类型下:
APT_CONFIG_FILE,配置文件及其运行节点数,其配置文件为:/usr/datastage/InformationServer/Configurations/cissuat.apt,这里需要检查一下指
向的内容是否正确。具体详见3.1中DataStage的配置目录。
APT_STRING_PADCHAR=(缺省值是0x0,我们需要填写一个空格)3.在Parallel->Operator Specific类型下
APT_COPY_TRANSFORM_OPERATOR设置为True,在做多结点运行时需要设置。
4.在User Defined类型下:
APT_IMPEXP_ALLOW_ZERO_LENGTH_FIXED_NULL设置为1。(如果目前数据统一为定长无分隔符,或者说不要设置定长的Null值,就不需要设置)。常用组件
4.1 Sequential file 功能特点:适用于一般顺序文件(定长或不定长),可识别文本文件或IBM大机ebcdic文件。使用要点:
按照命名规范命名
点住文件,双击鼠标,在general说明此文件内容,格式,存储目录等
修改文件属性,文件名称,reject方式等到
修改文件格式,比如记录结束符是什么,字段分隔符,字符串是用什么区别等
输入此文件字段内容
4.2 Annotation 功能特点:一般用于注释,可利用其背景颜色在job中分颜色区别不同功能块 使用要点:
4.3 Change Capture Stage 功能特点:Change Capture Stage有两个输入,分别标记为before link 及 after link。输出的数据表示before link和after link的区别,我们称作change set。Change Capture Stage可以和Change Apply Stage配合使用来计算after set。
key及value的说明
key值是比较的关键值,value是当key值相同是作进一步比较用的。 change mode选项说明:
All keys,Explicit Values
需要指定value,其余字段为key Explicit Keys&Values
key及value都需要指定
Explicit Keys,All Values
需要指定key,其余的字段为value 输出策略说明
Drop Output For Copy
False:保留before及afte link中key值相同的行 True:删除before及afte link中key值相同的行
Drop Output For Delete
False:保留before link中有但是after link中没有的key
值所在的行
True:删除before link中有但是afte link中没有的key值所在的行 Drop Output For Edit
False:保留key值相同,value不同的行
True:删除key值相同,value不同的行
Drop Output For Insert
False:保留before link中没有但afte link中有的key值所
在的行
True:删除before link中没有但afte link中有的key值所在的行
4.4 Copy Stage 功能说明:Copy Stage可以有一个输入,多个输出。它可以在输出时改变字段的顺序,但是不能改变字段类型。
注意:当只有一个输入及一个输出时最好将Force设置为True,这样可以在Designer里看到运行结束,否则将无法标识运行结束,但不会影响运行结果数据。
4.5 Filter Stage 功能说明:Filter Stage只有一个输入,可以有多个输出。根据不同的筛选条件,可以将数据输出到不同的output link。
4.6 Funnel Stage 功能说明:将多个字段相同的数据文件合并为一个单独的文件输出
合并策略说明
Continuous Funnel:从每一个input link中循环取一条记录
Sort Funnel:按照Key值排序合并输出
Sequence:先输出第一个input link的数据,输出完毕后再输出第二个input link的数据,依此类推,直到结束。(此时可以通过调整link Ordering调整输出顺序)4.7 Tansformer Stage 功能说明:一个功能极为强大的Stage。有一个input link,多个output link,可以将字段进行转换,也可以通过条件来指定数据输出到那个output link。在开发过程中可以使用拖拽。
Constraint及Derivation的区别
Constraint通过限定条件使符合条件的数据输出到这个output link。Derivation通过定义表达式来转换字段值。
在Constraint及Derivation中可以使用Job parameters及Stage Variables。
注意:Transformer Stage功能强大,但在运行过程中是以牺牲速度为代价的。在只有简单的变换,拷贝等操作时,最好用Modify Stage,Copy Stage,Filter Stage等来替换Transformer Stage。
4.8 Sort Stage 功能说明:只能有一个输入及一个输出,按照指定的Key值进行排列。可以选择升序还是降序,是否去除重复的数据等等。
Option具体说明
Allow Duplicates:是否去除重复数据。为False时,只选取一条数据,当Stable Sort为True时,选取第一条数据。当Sort Unility为UNIX时此选项无效。
Sort Utility:选择排序时执行应用程序,可以选择DataStage内建的命令或者
Unix的Sort命令
Output Statistics:是否输出排序统计信息到job日志
Stable Sort:是否对数据进行二次整理
Create Cluster Key Change Column:是否为每条记录创建一个新的字段:
clusterKeyChange。当Sort Key Mode为Don’t Sort(Previously Sorted)或 Don’t Sort(Previously Grouped)时,对于第一条记录该字段被设置为1,其余的记录设置为0。
Create Key Change Column:是否为每一条记录创建一个新的字段
KeyChange。
4.9 LookUp Stage
功能说明:LookUp Stage把数据读入内存执行查询操作,将匹配的字段输出,或者在在符合条件的记录中修改或加入新的字段。
4.10 Join Stage 功能说明:将多个表连接后输出
4.11 LookUp Stage 和 Join Stage的区别
LookUp Stage将数据读入到内存中,所以效率很高,但是占用了较多的物理内存。所以当reference data比较小的时候,我们推荐用LookUp Stage;当reference data比较大的时候,我们推荐用Join Stage。
4.12 Merge Stage 功能说明:将Merge Key值相同的记录合并。将其中的一个输入设定为Master,其余的为Update。把Update中Merge Key相同的记录合并入Master。
4.13 Modify Stage 功能说明:Modify stage只能有一个输入及一个输出,它可以修改表结构:删除,保留一个字段;给字段改名;修改字段的数据类型。
Specification的具体用法:
删除一个字段:DROP columnname[, columnname] 保留一个字段:
KEEP columnname[, columnname] 改变字段:new_columnname[:new_type] = [explicit_conversion_function]old_columnname
可用的explicit_conversion_function请参看《Parallel Job Developer’s Guide》page 28-7 4.14 Data Set Stage Stage类型:File stage
功能说明:从data set文件中读取数据或者写数据到data set文件中,一个Date Set Stage只能有一个输入连接(input link)或者一个输出连接(output link)。 具体用法:包括Stage Page,Inputs Page,Outputs Page Stage Page通常描述了stage的一般信息,诸如名称等;
Inputs Page描述了即要写入信息的data set文件的详细信息; 主要是Properties和Column的定义
Properties中配置了文件的存放路径和更新策略
Column详细定义文件中的各个字段
Outputs Page描述了读取信息的data set文件的详细信息;操作过程与Inputs Page类似。
4.15 File Set Stage Stage类型:File stage 功能说明:从file set文件中读取数据或者写数据到file set文件中,一个File Set Stage只能有一个输入连接(input link)、一个输出连接(output link)和一个拒绝连接(rejects link)。并且只能在并行模式下执行。 具体用法:
Stage Page:对Stage的基本定义
Inputs Page:主要是Properties和Format的配置 Properties的配置:定义文件的存取路径及其他读写的相关的参数。特别要说明的是Options下的Reject Mode的选择,当stage有reject link的时候,必须选择Output;没有reject link时,可选择其他两个选项。
Format的配置:定义了数据写到文件中的格式
Outputs Page:对stage输出的数据字段的描述,另外,reject link的输出系统将默认,不需要用户自己定义字段。
4.16 LookupFile Set Stage Stage类型:File stage 功能说明:为执行查找操作而创建的参照文件。
作为查找的参照数据,通常在参照数据比较大量或者重复使用率较高的情况下,将参照数据生成专门的Lookup File Set文件,以便提高查找的效率
具体用法:
Stage Page Inputs Page:主要定义了查找关键字和存放路径等主要信息 创建一个Lookup File Set文件:
Outputs Page:当作为参照数据进行查找操作时,因为文件是已经生成好的,所以在这里不需要再做详细的定义,只要引入即可。
4.17 OracleEnterprise Stage Stage类型:Database Stage 功能说明:从Oracle数据库中读取数据或者写数据到Oracle数据库中。通常完成的操作:
使用INSERT或UPDATWE命令更新数据库表 装入数据库表 读取数据库表
从数据库表中删除行
在库表中直接执行查询操作
将库表装入内存,然后执行查询操作
具体用法:
Inputs Page 向数据库中写数据,关键是对Properties的配置
Outputs Page:与Inputs Page类似,只是完成的是从数据库中读取数据。
4.18 Aggregator Stage Stage类型:Processing Stage
功能说明:将输入的数据分组,计算各组数据的总和或者按组进行其他的操作,最后将结果数据输出到其他的stage。
具体用法:
Stage Page:描述stage的一般信息以及字段的分组信息和选择分组计算函数
Inputs Page:详细描述输入数据信息,一般直接反映输入数据字段信息 Oupputs Page:详细描述输出数据信息,即经过分组计算后的数据字段信息
4.19 Remove Duplicates Stage Stage类型:Processing Stage 功能说明:输入根据关键字分好类的有序数据,去除所有记录中关键字重复的记录,通常与sort stage配合使用 具体用法:
Stage Page:Properties中的key值与之前sort stage的分类key值相同
Inputs Page:对输入数据字段的描述 Oupputs Page:对输出数据字段的描述
4.20 Compress Stage Stage类型:Processing Stage 功能说明:将data set文件压缩成二进制文件(与expend datastage相对应)
具体用法:
Stage Page
运行结果
Inputs Page:对输入数据字段的描述 Oupputs Page:对输出数据字段的描述
4.21 Expand Stage Stage类型:Processing Stage 功能说明:将压缩的二进制文件解压缩(解压缩compress stage生成的压缩文
件)
具体用法:
Stage Page
运行结果:
Inputs Page:对输入数据字段的描述 Oupputs Page:对输出数据字段的描述
4.22 DifferenceStage Stage类型:Processing Stage 功能说明:按字段比较两个文件,找出不同的记录。(两个文件before和after,以before为准,与after文件中的记录进行比较,找出before在after文件中没有或者有的记录) 具体用法:
Stage Page
比较策略说明
Drop Output For Copy
False:保留before及afte link中key值相同的行
True:删除before及afte link中key值相同的行
Drop Output For Delete
False:保留before link中有但是afte link中没有的key值
所在的行
True:删除before link中有但是afte link中没有的key值所在的行 Drop Output For Edit
False:保留key值相同,value不同的行 True:删除key值相同,value不同的行
Drop Output For Insert
False:保留before link中没有但afte link中有的key值所
在的行
True:删除before link中没有但afte link中有的key值所在的行
调整before和after的顺序:
Inputs Page:对输入数据字段的描述
Oupputs Page:对输出数据字段的描述
4.23 CompareStage Stage类型:Processing Stage 功能说明:按字段对比两个已经分类的有序的文件
具体用法:
Stage Page Inputs Page:对输入数据字段的描述 Oupputs Page:对输出数据字段的描述
4.24 SwitchStage Stage类型:Processing Stage 功能说明:将文件按照一定的条件(一般为字段的值)分割成多个子文件。具体是将输入的每一条记录按照各自符合的条件(关键字的值)分配到不同的输出(Switch Stage 有一个input link 和多个output link,一个 reject link,output link最多可达128个;此功能很类似与C函数中的switch函数)。
具体用法:
Stage Page 定义分配记录的关键字及其值
Inputs Page:对输入数据字段的描述
Oupputs Page:对输出数据字段的描述,通过Mapping自定义各个输出文件中的字段
4.25 Column ImportStage Stage类型:Restructure Stage 功能说明:将一个字段中的数据输出到多个字段中。(也可以用这个stage完成分割单个字段数据到多个字段的目的,此时,输入数据应为定长或者有可以被识别的可分割的界限,必须是String或者Binary类型的,输出数据可以是任何数据类型)
具体用法:
Stage Page:关键是对Properties的配置
Inputs Page:对输入数据字段的描述
Oupputs Page:对输出数据字段的描述,在Column自定义输出字段
经过stage的前后数据的对比
字段分割后:
4.26 Column ExportStage Stage类型:Restructure Stage 功能说明:与Column ImportStage相反,将多个类型不同的字段合并成一个string或者binary类型的字段。
第三篇:理财学入门学习心得
学习理财学入门的学习心得
班级:2010级对外汉语姓名:李娜学号:201040103042理财学入门周四班
通过一学期的认真学习,收获良多,首先在观念上转变了,以前觉得理财离我还是很远的事,其实不然,其次,对理财知识也有了一些了解,最后对理财产品也有了全新的认识。理财学知识内容广泛,博大精深,短暂的学习只能说了有了初步认识,要想有更多收获,还需要不断涉猎和专研,所谓学无止境嘛。在此也很感谢老师兢兢业业的教诲和指导,让我收获到了很多和自己生活息息相关的理财知识。
有句话叫你不理财,财不理你。首先我们要在观念上转变对理财学的认识,很多人一说到理财都觉得和自己没关系,觉得自己无财可理,觉得理财只是专属于有钱人的事情。很多在校学生也觉得理财和自己没关系,觉得自己现在还没工作,没财可理,所以就事不关己高高挂起。其实不是这样的,理财学和我们每一个人息息相关,我们可以通过规划让自己的生活过得更加有滋有味,据说通过合理理财拿三千块的工资可以过出拿五千块的生活水准,这就是理财的神奇魅力所在。那么合理理财到底有哪些现实意义呢?首先,理财有助于提高家庭生活水平,规避风险和保障生活。其次,可以满足个人多方面的需要,为子女的健康成长打好经济基础。而且个人理财也有利于金融创新并分散整个社会的金融风险。
那么理财都包括哪些内容呢?很多人一说到理财,马上就会说,哎,理财不就是搞投资嘛!以前我也这样认为,一说到理财瞬间就想到股票债券基金等金融工具。在学习力理财学才知道自己理解的仅仅是狭义的理财学,真正的理财学包括的内容涉及职业规划,储蓄,保险,房地产,艺术品,人际等方方面面。而我们人生中最重要的投资是对人的投资和对自己大脑的投资。人与人之间的不同就是在脖子以上的地方,脑袋空空导致口袋空空,今天不为学习买单,明天将会为贫穷买单。任何生意都有赚有赔,但是对自己大脑的投资绝对是只赚不赔。
在我国大家的买保险意识还不是很强,大部分人除了在单位买社会保险后,(大多还是在不是很情愿的情况下买的,宁愿单位把钱算工资里发到自己手里)一般是不会买商业保险的,打个不是非常恰当的比方,就像很多人宁愿花一百块钱看病,也不远花十块钱做保健以次来抵御疾病。大家都有一种侥幸心理,认为倒霉事并不会发生在自己身上,但是如果没有买保险,意外降临的时候对一个家庭的打击可以说是致命的。尤其是在家里的顶梁柱发生意外的时候,这种灾难可以说是毁灭性的。如果买了保险,这个时候我们的生活就多了一份保障。无论花多少钱在买保险上,首先这个观念是必须要有的。具体情况可以根据自己的需要制定不同的方案。
沃伦.巴菲特曾说:“一生能够积累多少财富,不取决于你能够赚多少钱,而取决于你如何投资理财,钱找人胜过人找钱,要懂得钱为你工作,而不是你为钱工作。”看到这句话我就想到一个关于可持续收入的说法,有这样一个故事,有两个和尚分别住在两座山上,一个和尚叫一休,另一个叫二休,他们每天都会到山下的一口井去挑水,长此以往两人就成了好朋友。这天二休去挑水的时候没有见到一休,他就想,一休是肯定病了,第二天他去挑水还是没有见到一休,他就想这家伙肯定病的不轻,于是决定去看看一休,当他爬到山顶的时候见到一休正气定神闲的在树下打太极,二休这个时候就纳闷了,一问才知道原来一休在过去几年除了挑水以外,还会花一点时间来挖井,终于在前两天把井挖好了,于是再也不用到山下去挖井了。于是就有了戏称“一不做,二不休”。在这个故事中,一休之所以可以过得那么怡然自得,就是因为他为自己创造了可持续收入。那么在我们的生活中哪些算可持续收入呢?首先,我们能很容易想到的,利息,当我们把钱存入银行的时候,不需要我们做任何事我们就能得到一笔额外的收入。但是把钱存入银行要考虑到通货膨胀的因素。(所以有时候
把钱存入银行并不是最恰当的理财方式,而这却恰恰是很多人选择的)其次,如果我们有多余的房屋商铺可以出租,这个时候租金也是我们可持续收入的一部分。最后一种呢,也算是级别比较高的一种,也是最难做到的一种,那就是有自己运转良好的公司,即使不打理也能为自己带来一笔可观固定的收入。如果我们的可持续收入占了我们总收入的大部分,我们还会担心失业吗?我们还会担心我们的生活得不到保障吗?
在我们传统观念里会觉得男性更擅长理财一些,但是据调查研究发现,一个家庭的大部分的金钱都是通过女性花出去的,比如买基本生活日用品和衣服甚至家具,大部分都是女性在做决定,所以女性也要学习一点理财知识,不要总说理财和自己无关,这个社会越来越强调男女平等,不仅男儿要自强,女孩子也要自强,只有掌握在自己手中的知识才能真正为自己所用。学习理财不仅让我们的物质生活更丰富,也能让我们未来的家庭生活更加幸福和谐。我自己关注的一个“她理财网”上面的理财知识挺好的,而且马云阿里巴巴推出的余额宝也很适合我们这种“草根”的理财,门槛低,收益也相对不错。在这里做一下分享。学习的最高境界应该是学了就要拿来练习,学以致用才是学习的最终目的。让我们一起共勉之。
第四篇:德语入门学习心得(模版)
德语入门学习心得
姓名;张宇
专业;测控一班
学号;1567112104
一.为什么要学习德语
谁会讲德语,代写留学生论文谁就能顺利地与大约一亿欧洲人用他们的母语进行交流,因为,讲德语的国家和地区不仅有德国,还有奥地利、瑞士的大部分地区、列支敦士登、卢森堡以及意大利北部、比利时东部及法国东部等地区。除俄语外,德语是欧洲说得最多的母语,并且属于世界上讲得最多的十种语言之一。
二.德语的基本常识
德语属于印欧语系,日尔曼语族。属于同一语族的还有:英语,荷兰语,挪威语,瑞典语,冰岛语。法语和德语不属于同一语族。法语属于罗曼语族德语是世界上最常被学的外语(在欧洲第二常被学).在日本,德语而不是拉丁语是医学的术语。德语是最重要的文化.科学及沟通语言之一,是世界上十大最通用语言之一.在中欧及东欧,德语为地区性的沟通语言也日益重要,在欧盟中,德语是英语和法语以外的最重要语言.在下面这些国家德语是唯一的官方语言:德国、奥地利、列支敦士登在下面这些国家德语是官方语言之一:比利时(还有法语和荷兰语)、意大利(还有意大利语、法语和斯洛文尼亚语)、卢森堡(还有卢森堡语和法语)、瑞士(还有法语、意大利语和罗曼什语)在下面这些国家德语是少数民族语言(按说的人的多少排列):丹麦、法国、俄罗斯、哈萨克斯坦、波兰、罗马尼亚、多哥、纳米比亚、巴拉圭、匈牙利、捷克和斯洛伐克、荷兰、乌克兰、克罗地亚、摩尔多亚、拉脱维亚、爱沙尼亚、立陶宛
三.怎样学德语
德语是一种难学的语言,说德语难学,是说他的语法规则.很多很复杂.名词有性、数、格的问题,动词有人称变位,时态,语态,体和式的问题,形容词有升级的问题,做附加语时还要跟着中心名词发生性数格的变化,介词对名词的支配在不同的情况下有不同的要求,各类小品词的语义和使用很难一下子说清楚,句型复杂,变化多端,德语句式与汉语和英语差别较大,动词往往放在句首或句末.这给同声传译工作带来了很大的困难.德语的名词有性、数、格之分,背德语单词,如果是名词,不仅要记住他的词性,还要记住他的复数形式.而这些没有很明显的规律.例如,德语中太阳(die Sonne)是阴性,月亮(der Mond)是阳性,女孩(das M? dchen)是中性.这给初学者带来了很多的困难.但是随着对德语单词掌握数量的增加,就可以摸索出一定的规律.但更重要的还是死记.德语的动词最复杂,一个动词有很多种变化,第一人称,第二人称,第三人称,过去时,第一,留学论文第二分词,虚拟式,有的还要变音(特殊变化).除了及物与不及物之分外,还有特定的支配(支配第三格还是第四格).一个动词就能让学习者发怵.除了动词,德语的形容词,冠词等都要根据所修饰的词在句子中的成分进行变形或变格.如此等等.难怪马克·吐温说它是“一种可怕的语言”。马克.吐温说,一个聪明的人学英语需要 30 个小时,学法语需要 30 天,而学德语则需要 30 年。这些多而复杂的语法规则就可能把初学者吓住了,刚一接触就想“退避三舍”.但它又是一种好学的语言。德语单词一般都不列出音标,即使是新单词也不例外,在一般的词典中你是看不到德语的音标的,除非特殊发音或外来词才予以注明.所以只要掌握了德语的发音规则后就能流利阅读德语文章.也能够根据德语单词的读音在不认识这个单词的情况下拼写出来.而且他是非常规则的语言,逻辑性很强,词有形态变化,词的形态变化说明语法关系,再有已经进入语法关系的词构成句子.每句必有主语和谓语,谓语必须由动词来承担,主语和动词的变位形态必须保持一致,所以句子的辨认比较容易.句子成分之间的语法关系都很明确,从句与主句之间又有形态标志(连词)说明两者之间的关系.一句话语层次分明,结构严谨,可以有条不紊地分析句子地最小单位----词.只要你记住这些规则,就可以“举一反三”.采取滚雪球的办法,越滚越大,经过千百次的训练,最终可以达到“张口就来”的程度.但正如德国人所说的那样,“没有一种规则没有例外”,对于“例外”我们就不能“举一反三”,必须强记,把它背的“滚瓜烂熟”.对于绝大多数初学者来说,都是成年人学德语.成年人学德语切忌拿自己的母语规则或者你的第一外语英语去理解德语.各种语言都有他们自己的特点, 即使具体到一个词也不尽相同.必须采取先“死记”而后“活用”的办法.怎么“死记”?“死记”不能搞“单打一”,要综合性地“记”.作者认为,“句型记忆”是最好地“综合性记忆”, 这种方法既可以记住相关地单词,又可以记住某种语法规则.怎么“活用”呢?采取“替换法”把已经“死记”下来地相关句型, 用其他的跟原句型中各句子成分相似的单词和词组代进去,进行操练.这样,句型虽然是一个,但可以造出很多内容不同的句子来,收到事半功倍的效果.掌握的句型越多,就意味着自己的语汇越丰富.学习的劲头也就越大.这样还可以顺便扩大自己的词汇量。达到越学越顺手的良性循环。
四.英语对德语的影响
虽然德文在世界政治和经济方面作为国际通用语言的作用较少,但它在文化领域的地位却是比较重要的。德语作业论文另外,随着德语区国家的经济对世界的影响日益增加,德文也被越来越多地使用。世界上出版的每 10本书中就有 1 本是用德语写的。作为被翻译的文字,德语仅次于英文和法文,居第 3 位。而在将他种文字译成德语方面,德语则占首位。20 世纪以来,随着社会的进步,经济的高速发展,新事物的不断涌现,尤其是高科技的飞速发展,德语也经历了一个突飞猛进的发展过程,尤其是在语言词汇方面,德语词汇已超过 1000 万,达到了惊人的地步。
但同时,过多的外来语的引入,对德语造成了巨大的冲击.说到外来语言对德语的影响,除了拉丁语外,感觉最大的要数英语了。第二次世界大战后,英语对德语的冲击尤为明显。一方面这和德国的国际化程度高有关(当然也有历史原因,二战后美国人和英国人在德国占据了较长时间.),另一方面,德国人对本国语言的保护和净化意识比较淡薄,与法国人对法语的保护相比,相差较大。许多有影响的报刊和电视文化节目抨击这个趋势,但它们往往不能摆脱和忽视这个趋势的要求。英语有时被戏称为“新标准德语”。据曼海姆的德语研究所 2004 年初统计,在过去 10 年中德语中共产生了约700 个新词,其中40%以上直接来自英语或是英语与德语组成的混合词。这在德国学习中可以明显体会到,好多英语单词直接搬进了德语.有的只是因为发音变了一两个字母.五.总结
由此可见,德语是一门学了很有用的语言。而学习的效果不在于德语本身是否难学,而在于你的学习方法是否合适,是否能在学习德语的过程中找到德语学习的规律。大部分学习德语的人都是把德语作为第二外语来学习的,而他们的第一外语基本上都是英语。英语对于后面学习的德语肯定是有影响的,但是,是积极的影响还是消极的影响就因人而异了。当然,首先要过的是发音关,有些读音写法一样,发音却迥异,容易混淆;论文代写其次是单词关,有些单词读音差不多,拼写却略有差别,容易弄错;最后是语法关,由于学英语的时间太长,有时候会不自觉的把英语的语法用到德语中来,只要我们在应用这两种语言的时候再稍微小心一点就可以了。然而学无止尽,任何学习都是没有尽头的,这里提供的只是德语学习入门的一点小心得,更多的经验要大家在学习中自己发现和积累。
第五篇:php入门学习心得
php入门学习心得.txt和英俊的男人握握手,和深刻的男人谈谈心,和成功的男人多交流,和普通的男人过日子。我想简单介绍一下新入门php的感受.php开发以简单快捷著称;学它做项目比java要快(3天就可以入门);
但我认为php简单的是外表;其实它的功能非常强大;要学精恐怕须多做几年的实战项目才干敢自称呢.php也有架构(但没有java强);也有连接池;不过比较麻烦.下面简单介绍一下PHP的语法。(和java对比;我会用程序说明比较直观)
1、嵌入方法:
类似JSP的<%,PHP可以是。
2、引用文件:
引用文件的方法有两种:require 及 include。(最好用require_once和include_once;效率会略高)
require 的使用方法如 require(“test.php”)。这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份。
常用的函数,亦可以这个方法将它引入网页中。
include 使用方法如 include(“test.php”)。这个函数一般是放在流程控制的处理部分中。
PHP 程序网页在读到 include 的文件时,才将它读进来。这种方式,可以把程序执行时的流程简单化。
3、注释方法:
和java一样;3种(1:/**abc */ 2:/*abc */ 3://abc)
4、变量类型:
$str = “test”;
$int1 = 66;
$float1 = 1.653;
$float2 = 1.3E+5;
$array1 = array(“甲” , “乙” , “丙” , “丁”);
这里引出两个问题,首先PHP变量以$开头,第二PHP语句以;结尾。
5.php输出方法:
以下有3种方法输出:
echo
printf 却一定要有圆括号;用来格式化数字的输出。可以把一个数作为整数,或者用科学计数法显示出来。
print 可有可无圆括号
你可以用“,”号来分隔多个要显示得内容;包括变量.字符.数字.函数等类型.可以用iconv('gb2312', 'utf-8', $response)来把gb2312的字符转成utf-8的字符输出.php退出函数用“exit”;java用“return”.6.了解php的系统信息方法:
以下可以看到php的系统变量:
echo “
”;
print_r($GLOBALS);
?>
举例:可以查到远程访问的ip
以下可以看到php的系统环境:
php echo phpinfo();?>
7.数据库编程:
//数据库连接 3个参数 ip, 用户, 密码
$conn=mysql_connect(“127.0.0.1”, “test”, “test”);
//选择名为“mysee”数据库
mysql_select_db(“mysee”);
//执行sql语句;得到输出结果$result
$result = mysql_query(“select channel_name, channel_url from live_channel where isactive=1”);
$response=“{”;
$i=0;
//循环得到$result的单记录行值$row
while($row = mysql_fetch_array($result)){
//注意:php字符相加用'.'和java不一样(java用'+');$row[“channel_name”]可以行记录的字段名'channel_name'的值
$response.= “'”.$i.“':['”.$row[“channel_name”].“', '”.$row[“channel_url”].“'],”;
$i++;
}
/*关闭数据库连接(不写当这个php文件执行完后会自动关闭的;手工关闭会节省数据库连接时间)
这一点和java不一样;java一定要语句关闭*/
mysql_close($conn);
/*
截取字符串函数substr(字符,起始位子,截取长度):
有一点需要说明的:第三个参数是负数;代表从后倒数截取的字符长度;正数:代表从头截取的字符长度;
赫赫...php是不是很聪明哟
*/
$response=substr($response,0,-1).“}”;
//把$response从gb2312的字符转成utf-8的字符输出
echo iconv('gb2312', 'utf-8', $response);
?>
8.得到页面form提交的参数值:
例如:http://127.0.0.1/test.php?parm1=zjh1&parm2=zjh2
方法一:
//可以得到doget所有参数;
extract($_GET);
//可以得到dopost所有参数
extract($_POST);
echo $parm1.“---”.$parm2
?>
得到结果: zjh1--zjh2
方法二:
//可以得到dopost参数
echo $_GET[“$parm1”].“---”.$_GET[“$parm2”]
//或者得到dopost参数
//echo $_POST[“$parm1”].“---”.$_POST[“$parm2”]
?>
得到结果: zjh1--zjh2
9.发送邮件:
php发邮件很简单,可以使用mail()函数;不过mail()需要服务器(有邮件服务)的支持;
这一点和java不同(java需要j2ee的2个包:active.jar和mail.jar;但不需要邮件服务的支持;编程略微复杂些);
以下实例说明:
extract($_GET);
extract($_POST);
//返回值 0:内容为空;1:发送邮件成功;2:发送邮件失败;
if(empty($content)){echo 0;return;}
//mail(“收件人地址”,“主题”,“正文”,“From:发件人 Reply-to:发件人的地址”);$deal=mail($e_mail,“[主题]”,//stripslashes()函数可以原样输出内容;不用加安全处理字符
stripslashes($content),//默认是文本格式发送;加了“Content-Type:Text/Html”后就可以解析html了“From:mysee.monitor@gaov-inc.comnContent-Type:Text/Htmln”);
if($deal){echo 1;}else{echo 2;}
?>