精华内容
下载资源
问答
  • 互联网是技术发展的一个必然产物,本文仅仅试图从资源配置角度来理解一下这些趋势背后的推动力,非业内人士,假语村言,博君一笑。 话说世界诞生之初,天地混沌如鸡子,盘古开天辟地,清上升为天、浊下沉...
    最近十几年来,以阿里巴巴、腾讯为代表的互联网公司快速崛起,呈现出以互联网为平台,各种产品和服务百花齐放百家争鸣,在方便人们的生产生活的同时,也改变了几代人的工作生活方式。比如,外出买东西无需现金信用卡,出现了所谓的“无现金城市”,出行可以手机叫滴滴或者骑共享单车,医院挂号、缴水电费都能够网上办理了,如果用网上流传的“吓尿指数”来看,这十几年应该可以算是一个吓尿周期了。
    互联网产业急速膨胀也带来软硬件技术的更新换代,比如云计算、大数据、人工智能、ICT融合等,在这些大概念的下面是各种不胜枚举的新的语言、框架、架构等,比如golang、异步IO、generator、容器、微服务、NoSQL、tensorflow等。
    互联网是技术发展的一个必然产物,本文仅仅试图从资源配置的角度来理解一下这些趋势背后的推动力,非业内人士,假语村言,博君一笑。

    话说世界诞生之初,天地混沌如鸡子,盘古开天辟地,清上升为天、浊下沉为地。我们已经无法回到过去,去体会盘古的一斧神威开创了世界的进化,但是小时玩过泥浆的同学可能有体会,如果把一把泥沙放到装满水的瓶子里使劲晃晃,慢慢地,随着泥浆的旋转,大粒的沙石最先沉淀下来,然后是粗粒度的土块,最后在上面的非常纤细的泥土,时间足够的话,水又变得澄清了。从瓶子外面能够清楚地看到从下往上,粒度越来越细,越来越紧凑。作为一个彻底的无神论者,我时常感觉社会的进步、技术的发展都能够在简单的现象中找到某种隐喻,用程序员的语言讲,是某种映射(map)。
    互联网从来就没有凭空创造一个行业,它对传统产业进行了转换,以一种新的形态提供传统产业同样的服务或产品,比如,传媒+广告行业=>Google、百度,零售+商业地产收租=>电商阿里、京东,通信及周边=>微信、Facebook,出租车+租车=>Uber、滴滴。用一个数学公式表达的话就是g=f(x),x是传统产业,f是互联网,g就是互联网对传统产业改造的结果。

    如果以泥浆沉淀过程来对资源配置的发展做隐喻的话,我们能够从中悟到什么道理呢?那就是资源配置正从粗放变得集约,从笨重变得精细,从低效变得高效。如果将这个过程比作是在曲面上滚动的小球的话,那提升资源配置效率就是那个最快梯度,大势所趋、势不可挡。
    回过头来考虑一下互当今社会的几大场景:
    1.电商。没有人能否认电商对人们生活的巨大影响,淘宝、京东等B2C业务大大方便了人们的生活,释放了无数的购买欲望,产生了无数的“剁手党”。从资源配置的角度讲,电商首先将各种商品名录种类齐全地送到消费者手中,消费者足不出户就能够货比三家,了解商品的属性,挑选到符合自己需求的商品;其次,电商能够省去众多中间环节,商品交易链更短,交易更便捷,同时,现代物流业能够将商品快速直接从商家交到消费者手中;第三,大数据的运用,让电商能够揣摩消费者心理,精确推送商品广告,促进潜在需求的消费。以上种种,都提高了商品的流通精度和速度,更好地满足了消费者对各种“资源”的需求。
    2.共享经济。这个词应该是从滴滴开始的吧?顺风车,且不说政策上限制的问题,让广大车主在用车过程中,在有空闲座位、路线比较吻合的情况下,既方便了乘客,缓解了公共交通压力,利用了闲置资源,又给自己带来了一定的收益。进一步的,今年刚刚出现的共享单车、共享汽车,让出行工具在充分发挥代步功能的同时,省去了个人对工具的购买和维护。如果照这个趋势发展下去的话,公共交通和共享交通相互补充,用户只要为本次出行买单,不需要考虑车辆的维修保养、停车等,这样,强化使用权、弱化所有权,车辆的总量会下降,但是利用效率大大提高。
    3.农村土地的集中。这个不是IT领域的,但是代表了一类场景,就是资源的集中利用。一滴水不是资源,但是一口井、一片湖面可以认为是资源,这体现了资源的聚集性。现代大机械化生产让农村土地改革以来形成的一家一户分散经营成了阻碍生产力提高的一个障碍,近年来,随着城市化和新农村政策等的推出,农村土地又呈现出由分散到集中的现象,让农场主拥有几百上千亩地成为可能,这就为机械化大生产提供了必要条件。这个场景比较特殊,因为从微观角度看,机械化对土地的利用不是更精细,而是更粗放,但是从宏观看,机械化生产提高了生产效率,节约了人力成本。原来一家一户用镰刀一上午能收割一亩的麦子,现在一台联合收割机一上午可能就可以收割几十上百亩地。

    再从软件工程师的角度看一下软件技术发展的几个场景:
    1.开源。且不管各种开源License背后的商业逻辑是什么,从实际效果看,开源软件可以称为现在软件行业的基石。经常有些“牛人”抱怨开源软件这个不好、那个不行,总想自己发明一个轮子,但是往往最终不是走了开源的老路,就是自己也看不下去,无力维护了。开源,体现了在软硬件行业对智力资源的共享利用,是将开发者的场景分析、架构设计、代码开发测试等资源全部共享出来,满足大家共同的需求。
    2.云计算。XaaS可能是在IT领域对资源配置优化说法最有力的一个证明了,比如Aws提供的IaaS,最初就是亚马逊将自己公司内部空闲的基础设施资源作为服务对外暴露出来,提供给外部用户,在使用过程中,所有用户共享计算、存储、网络等基础资源。是不是可以理解为,通过这样的资源优化配置,亚马逊将空闲的CPU时间、空闲的磁盘、空闲的带宽进行了变现?私有云,感觉有点类似于上面土地集中的场景,企业内部为了提高资源利用率,将各部门分散配置的服务器等软硬件设施集中起来,组建成私有云,对企业内部提供各种共享服务。
    3.面向对象。OOP这个概念现在可能挑不起程序员的任何胃口了,就像米饭一样,天天吃。但是在1995年对乔布斯的一次采访中,乔帮主在自豪地声称PC是人类历史上最伟大的发明,而他就在其中之后,预言OOP和互联网将是计算机行业发展的方向,可见OOP在当时的重要意义。如果说开源是在全世界程序员中共享资源的话,OOP就是在代码内部的微观层面进行的资源优化配置。高扇入、低扇出讲的是什么?就是我这里有资源,你们都用我这个就行,不要自己写了。

    假设资源的优化配置是各领域发展的驱动力,那如何发现下一个方向或者机会点呢?不妨做一个矩阵,横向是业务领域,纵向是发展方式:

    通过将已有的互联网公司填入上述表格,就不难发现哪里有空白了。
    当然上面的表格有些粗糙,肯定还有更多的维度可以去更好地理解这个过程,相信成功的创业者都是在对现状和趋势进行了多维度分析之后发现了相关空白领域,从而找到机会点。
    但是需要清醒地认识到,找到机会点只是万里长征第一步,如果不能有爬雪山、过草地的精神,没有四渡赤水的智慧和勇气,那找到机会点也毫无意义。


    展开全文
  • 对国内外高等教育资源配置转型程度的研究现状、本课题的理论研究假设、基本推论、分析模式和指标体系进行综述和概括,构建我国高等教育资源配置转型程度研究的分析框架,以期推动该领域的研究不断深入。 关键词:高等...

    摘要:伴随着我国经济全球化、市场化、现代化进程的不断深入,高等教育资源配置方式已经和正在发生着巨大的变化,这一变化是在由计划经济向市场经济转轨过程中,两种不同制度环境约束条件下资源管理系统不断优化发展的变迁过程,是这一时期制度安排的必然结果。本文借助新制度经济学和比较制度经济学派的研究方法,对国内外高等教育资源配置转型程度的研究现状、本课题的理论研究假设、基本推论、分析模式和指标体系进行综述和概括,构建我国高等教育资源配置转型程度研究的分析框架,以期推动该领域的研究不断深入。

    关键词:高等教育;资源配置

    我国在经济体制由计划经济向市场经济转型的二十三年间,高等教育的规模和速度、结构和效益、数量和质量、内涵和处延都发生了巨大而深刻的变化。所有变化都涉及到人、财、物等资源变化,而高等教育资源变化的核心是资源配置方式的改变。这里所指的配置方式从广义角度看,是指在计划经济与市场经济两种不同制度环境约束下的资源管理系统。研究表明,二十三年间,伴随着这两种制度约束条件的转化,我国高等教育资源配置方式始终处于变革过程中②。文献研究表明,以市场机制为导向的政府宏观调控的资源配置方式正在逐步替代原计划经济条件下的以政府计划行政垄断为特征的资源配置方式。这一替代过程在以渐进性为特点的我国经济体制改革过程中呈现为一个缓慢、递进、反复渐变的过程,本文把这一过程描述为高等教育资源配置方式的转型过程。到目前为止,高等教育资源配置方式的转型程度如何?转型过程中政府和市场中的各资源主体之间的作用机制如何变化?运用哪些理论和方法来有效地解释这一变化过程,并对未来发展做出预测?“我国高等教育资源配置方式转型程度研究”课题组将针对这些问题,运用制度经济学的分析方式,试图建立一种新的关于我国高等教育资源配置方式转型程度的研究模式。本文则是对整个课题研究的基本架构,包括已有的研究基础、理论假设和基本推论、分析模式和指标体系做一综述。

    一、高等教育资源配置研究现状

    1、国外关于高等教育资源配置研究现状

    西方发达国家市场经济的制度安排已有几百年的历史,近百年间,虽然社会动荡和局部战争促使了一些国家的制度创新,但从市场经济这一基本经济制度看,这些国家并没有发生根本性变革,而只是因经济增长和国际竞争的影响引发的一些制度微调,这些影响因素还包括战争需求、技术进步、民主化发展、全球贸易壁垒和国家战略性需要等。随着高等教育在全球经济增长和国际竞争中的特殊战略地位的上升,各国高等教育的发展重点也相应地随国家战略的转移进行了一些制度性调整。这一调整具有鲜明的阶段性,高等教育的研究重点也随之体现为以下不同的特点。

    二战后到20世纪90年代以前,西方国家的经济制度基本上由注重国家宏观调控下的市场经济向以全面自由的市场经济方向发展,这一时期的高等教育资源配置的研究内容偏重以下方面:以发展经济学及人力资本理论为基础的人力资源开发的研究,以高等教育大众化和民主化思想为主导的高等教育规模扩张研究和政府干预公立教育与扶持私立教育研究,以投资效益理论分析高等教育的经费来源渠道的研究,以质量管理理论分析高校质量评估与高校教学与管理领域的研究等。进入20世纪90年代,以经济全球化、信息化为特征的知识经济的迅猛发展,市场化、全球化、信息化的趋势全面影响着国家之间的竞争方式,人才成为重要的战略物资,全球竞争性人才战略研究、网络资源教育战略研究、高等教育资源竞争和重新整合研究成为各国高等教育面临的世界性新课题。各国更加重视高等教育面向全球资源流动与整合的发展,寻找适合自身条件的发展模式,特别是对本国人才资源的培育、激励、保护研究、高等教育竞争力与可持续发展的制度创新研究,以及跨国人才资源争夺和知识产权保护的研究等成为高等教育资源配置研究的重要领域。但这类研究刚刚兴起,由于各国政治、经济、文化等的本土化和多样化,要形成具有本土化的解释观点尚需进一步拓展,要形成比较成熟的理论假设与研究模型尚需继续努力。

    另外值得关注的是,80年代末苏联东欧等原社会主义国家发生了转型现象,对高等教育资源配置的关注点转移到了由计划体制向市场体制转变过程中,政府与市场配置资源的变化上。这些国家在高等教育资源配置问题上遇到了与我国程度不同的类似问题。由于在转型战略改革目标和操作政策上的不同,这些国家的转型特点与我国有很大差异,加上目前对转型国家高等教育体制与机制的研究文献有限,理论研究的观点分歧比较大。

    2、我国关于高等教育资源配置研究状况

    改革开放20多年来,由于社会制度的转型,国内对高等教育资源配置的研究热点不断,围绕高等教育改革的规范性与实证性研究不少,产生了许多优秀的研究成果,这些成果主要集中在以下几方面:

    一是建立在高等教育大众化理论基础上的对高等教育规模扩张的研究;二是以教育经济学理论为基础的对高等教育多渠道筹资、教育成本分担与补偿机制、教育经费使用效率和效益、高等教育个人收益率、高等学校拨款方式、毕业生就业等方面的研究;三是从高等教育宏观与微观管理理论和改革实践入手对高等教育管理体制和运行机制、高等学校内部管理体制的研究;四是以高等教育系统理论为基础展开的对转型期高等教育结构、布局、层次、类型,以及高等学校学科与专业发展等方面的研究。从管理体制的研究和改革成效评价的研究看,前期的研究多为思辩的、定性的,基本上是经验总结式的归纳式研究;后期的研究是以经典的社会学、经济学等学科知识为基础的高等教育组织模式研究。所有这些研究成果均以我国转型期高等理论模型为依据,针对某些具体内容展开的,如高等教育产品性质的界定,高等教育生产函数的量化研究,高等教育教学评价模式研究等。这些研究成果为我国转型过程中的教育改革积累了大量的、多角度的研究经验和方法,为人们寻求更具解释力的理论分析模式开创了先河,是本课题研究的重要基础。

    但是,国内对高等教育资源配置转型程度的研究还缺乏深层次的制度性解释,对高等教育资源存量与增量的关系,以及资源配置转型程度的原因与趋势研究不够,尤其是对反映高等教育资源配置状况的指标模拟和分析更显不足,对此问题的研究还只停留在描述层次上,还没有一套完整的体系来深入地剖析这一发展变化过程,以及未来的发展变化趋势。可以说,国内关于反映这一变化过程的完整的指标分析体系还没有建立起来。

    二、高等教育资源配置转型程度研究的理论假设和基本推论

    本课题将主要应用新制度经济学和比较制度学派的分析方法,着重对我国转型期高等教育资源配置方式的转型及其约束条件进行多元的、动态的、相对的过程性研究;侧重从资源增量对资源存量的转换、让渡和替代过程,资源配置主体的行为变化,资源配置方式的组织结构及变化,资源配置的制度创新和制度变迁等角度,对我国二十多年来高等教育资源配置方式转型程度和因素进行多元分析研究,并在此基础上构建反映这一变化过程和程度进展的指标体系,力图能够全面反映和描述我国高等教育资源配置的特点和整个转型过程的规律,并对今后发展作出预测。这一选题将拓展以往的研究视野,提供一个能够对我国高等教育资源配置方式的发展过程作出客观分析和解释的理论框架,目的是对我国转型期高等教育资源配置的变化趋势作出直观描述和合理解释,能够对我国高等教育资源配置的制度创新产生现实影响。

    新制度经济学在研究稀缺资源的有效制度安排及其约束条件方面具有独特的解释力。本课题重点选择制度创新理论与制度变迁理论,研究在不同制度环境下,高等教育资源配置方式的选择可能不同,在选择了不同资源配置方式的条件下,高等教育资源整合与优化的程度不同。其研究假设为:

    我国二十年多来的改革是以政府为主导、以建立社会主义市场经济为目标、以制度创新为标志的渐进式改革,是社会主义计划经济体制向社会主义市场经济体制过渡的过程,是资源由完全的政府计划调配向以市场为基础的配置方式根本转变的过程。同时,高等教育的改革也是一个高等教育资源重新配置的过程,更准确地说是一个高等教育资源配置方式不断选择、不断优化的过程,即是一个新制度安排的变迁过程。依据制度变迁理论,这一转型过程是高等教育资源在原有存量基础上不断派生出新的增量,并逐步带动和引起存量变化的渐变过程。对高等教育资源配置转型程度的影响主要是由外生性变化(社会经济制度环境)和内生性变量(高等教育内部制度安排)的交互作用产生的。这些变量既决定着高等教育关键性资源配置方式转型的性质、程度和方向,又影响着高等教育资源配置方式的选择。事实上,研究这些变量与高等教育资源配置转型程度的关系,就是研究高等教育资源配置制度创新的约束条件。
     http://www.60016.net/xueshulunwen/jiaoyulunwen/gaodengjiaoyu/4822.html

    展开全文
  • 源码来分析spring-batch的itemReader怎么工作的

    想要成为技术大牛,必需要看源码,从源码分析。下面分析几种springBatch里的ItemReader子类。

    ItemReader<T>(泛型)是所有Reader的父类。且只有一个方法Tread() throws Exception, UnexpectedInputException, ParseException,NonTransientResourceException;

    所以子类的参数或通过spring注入或创建默认。

    所有子类如下图:


    挑几个常用的做介绍。

    文件读取类

    FlatFileItemReader:文件读取类,属性及方法如下:


    原来该类通过BufferedReader一行一行读取文件数据,同时以#开头的视做注释,跳过读取。真正做事的是doRead方法。而doRead():

    protected T doRead() throws Exception {
    		if (noInput) {
    			return null;
    		}
    
    		String line = readLine();
    
    		if (line == null) {
    			return null;
    		}
    		else {
    			try {
    				return lineMapper.mapLine(line, lineCount);
    			}
    			catch (Exception ex) {
    				throw new FlatFileParseException("Parsing error at line: " + lineCount + " in resource=["
    						+ resource.getDescription() + "], input=[" + line + "]", ex, line, lineCount);
    			}
    		}
    	}
    

    在读取之前会有打开的操作doOpen():

    protected void doOpen() throws Exception {
    		Assert.notNull(resource, "Input resource must be set");
    		Assert.notNull(recordSeparatorPolicy, "RecordSeparatorPolicy must be set");
    
    		noInput = true;
    		if (!resource.exists()) {
    			if (strict) {
    				throw new IllegalStateException("Input resource must exist (reader is in 'strict' mode): " + resource);
    			}
    			logger.warn("Input resource does not exist " + resource.getDescription());
    			return;
    		}
    
    		if (!resource.isReadable()) {
    			if (strict) {
    				throw new IllegalStateException("Input resource must be readable (reader is in 'strict' mode): "
    						+ resource);
    			}
    			logger.warn("Input resource is not readable " + resource.getDescription());
    			return;
    		}
    
    		reader = bufferedReaderFactory.create(resource, encoding);
    		for (int i = 0; i < linesToSkip; i++) {
    			String line = readLine();
    			if (skippedLinesCallback != null) {
    				skippedLinesCallback.handleLine(line);
    			}
    		}
    		noInput = false;
    	}
    

    见红色字体,必需保证资源存在可读,同时初始化一个BufferedReader实例。

     

     

    配置例子:

    假设数据是

    那reader可如下配置:


    <bean id="playerFileItemReader" class="org.springframework.batch.item.file.FlatFileItemReader">
    		<property name="resource" value="classpath:data/footballjob/input/${player.file.name}" />
    		<property name="lineMapper">
    			<bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper">
    				<property name="lineTokenizer">
    					<bean class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer">
    						<property name="names" value="ID,lastName,firstName,position,birthYear,debutYear" />
    					</bean>
    				</property>
    				<property name="fieldSetMapper">
    					<bean class="org.springframework.batch.sample.domain.football.internal.PlayerFieldSetMapper" />
    				</property>
    			</bean>
    		</property>
    	</bean>
    

    这样数据和红色字段指定的names字段就会自动映射。

    故,想要使用FlatFileItemReader必需配resourcelineMapper两个属性,其它可选配。指定names字段,这样,字段映射成一个对象传给ItemWriter<T>

     

    数据库操作:

    由于持久层有hiberate,ibatis,mybatis,所以不同的框架读取不一样:

     

    游标读取方式:JdbcCursorItemReader。通过查看JdbcCursorItemReader


    及其父类AbstractCursorItemReader:


    的代码,我们发现必要参数是sql, dataSource及rowMapper必需注入。

    AbstractCursorItemReader.doRead():

    protected T doRead() throws Exception {
    		if (rs == null) {
    			throw new ReaderNotOpenException("Reader must be open before it can be read.");
    		}
    	
    		try {
    			if (!rs.next()) {
    				return null;
    			}
    			int currentRow = getCurrentItemCount();
    			T item = readCursor(rs, currentRow);
    			verifyCursorPosition(currentRow);
    			return item;
    		}
    		catch (SQLException se) {
    			throw getExceptionTranslator().translate("Attempt to process next row failed", getSql(), se);
    		}
    	}
    

    不难发现rs是执行sql语句返回的结果集,该方法返回当前游标的的item,注意类型是T即泛型。所以,dataSource指定数据源,sql即指定查询语句,rowMapper对当前游标位置的数据进行包装,得到的结果即是指定的结构对象,我一直强调泛型,因为我们用返回的结果即是泛型指定的类型。

    配置例子:

    <bean id="customerSqlItemReader" class="org.springframework.batch.item.database.JdbcCursorItemReader">
    		<property name="dataSource" ref="dataSource" />
    		<property name="sql" value="SELECT id, name, credit FROM CUSTOMER " />
    		<property name="rowMapper">
    			<bean class="org.springframework.batch.sample.domain.trade.internal.CustomerCreditRowMapper" />
    		</property>
    	</bean>
    CustomerCreditRowMapper.java:
    
    public class CustomerCreditRowMapper implements RowMapper<CustomerCredit> {
    	
    	public static final String ID_COLUMN = "id";
    	public static final String NAME_COLUMN = "name";
    	public static final String CREDIT_COLUMN = "credit";
    
    	@Override
    	public CustomerCredit mapRow(ResultSet rs, int rowNum) throws SQLException {
            CustomerCredit customerCredit = new CustomerCredit();
    
            customerCredit.setId(rs.getInt(ID_COLUMN));
            customerCredit.setName(rs.getString(NAME_COLUMN));
            customerCredit.setCredit(rs.getBigDecimal(CREDIT_COLUMN));
    
            return customerCredit;
    	}
    

    Ibatis读取方式:

    先看IbatisPagingItemReader的父类AbstractPagingItemReader类结构图:

    分别可设置页号page,页尺寸pageSize默认10等,重点看看doRead()方法:

    @Override
    	protected T doRead() throws Exception {
    
    		synchronized (lock) {
    
    			if (results == null || current >= pageSize) {
    
    				if (logger.isDebugEnabled()) {
    					logger.debug("Reading page " + getPage());
    				}
    
    				doReadPage();
    				page++;
    				if (current >= pageSize) {
    					current = 0;
    				}
    
    			}
    
    			int next = current++;
    			//返回下一个item
    			if (next < results.size()) {
    				return results.get(next);
    			}
    			else {
    				return null;
    			}
    
    		}
    
    	}
    

    具体读操作由子类doReadPage方法完成,故现在看看IbatisPagingItemReader



    配queryId(映射文件xml里的方法名称),sqlMapCLient实例即是ibatis的配置文件,还要配dataSource.看看它是怎么完成查询的

    @Override
    	@SuppressWarnings("unchecked")
    	protected void doReadPage() {
    		Map<String, Object> parameters = new HashMap<String, Object>();
    		if (parameterValues != null) {
    			parameters.putAll(parameterValues);
    		}
    		parameters.put("_page", getPage());
    		parameters.put("_pagesize", getPageSize());
    		parameters.put("_skiprows", getPage() * getPageSize());
    		if (results == null) {
    			results = new CopyOnWriteArrayList<T>();
    		}
    		else {
    			results.clear();
    		}
    		results.addAll(sqlMapClientTemplate.queryForList(queryId, parameters));//过程以目了然
    	}
    

    所以IbatisPagingItemReader必需配的参数为queryId,sqlMapCLient, dataSource,其它选配。

    配置例子:

    <bean id="itemReader"
    		class="org.springframework.batch.item.database.IbatisPagingItemReader">
    		<property name="queryId" value="getAllCustomerCredits" />
    		<property name="sqlMapClient" ref="sqlMapClient" />
    		<property name="dataSource" ref="dataSource"/>
    	</bean>
    <bean id="sqlMapClient" class="com.ibatis.sqlmap.client.SqlMapClientBuilder" factory-method="buildSqlMapClient">
    		<constructor-arg value="ibatis-config.xml"/>
    	</bean>
    

    ibatis-config.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
    	"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
    
    <sqlMapConfig>
      <sqlMap resource="ibatis-customer-credit.xml"/>
    </sqlMapConfig>
    

    ibatis-customer-credit.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
    	"http://ibatis.apache.org/dtd/sql-map-2.dtd">
    
    <sqlMap namespace="Customer">
      <resultMap id="result" class="org.springframework.batch.sample.domain.trade.CustomerCredit">
        <result property="name" column="NAME" />
        <result property="credit" column="CREDIT" />
      </resultMap>
    
      <select id="getAllCustomerCreditIds" resultClass="int">
        select ID from CUSTOMER
      </select>
      
      <select id="getAllCustomerCredits" resultMap="result">
     	select ID, NAME, CREDIT from CUSTOMER 
      </select>
      
      <select id="getCustomerCreditById" parameterClass="int" resultMap="result">
      	select NAME, CREDIT from CUSTOMER where ID = #value#
      </select>
      
      <update id="updateCredit" parameterClass="org.springframework.batch.sample.domain.trade.CustomerCredit" >
      	update CUSTOMER set CREDIT = #credit# where NAME = #name#
      </update>
    </sqlMap>
    

    Ps:不需要对结果集包装,因为ibatis里将读取的数据映射。和spring-batch框架没关系

    总结,以上只介绍了几咱读取的类,常用读取的要么文件要么数据库,会这两种类型即可,其实简单。




    展开全文
  • 软件配置管理解析

    千次阅读 2009-04-09 14:42:00
    软件配置管理解析转载地址:http://www.rjgc.net/control/content/content.php?nid=5997 配置管理的三大误区 国内软件公司实施配置管理,已经取得了很多进步...专家们的讨论中,我们了解到国内的软件配置管理主要有

    软件配置管理解析

    转载地址:http://www.rjgc.net/control/content/content.php?nid=5997

     

      配置管理的三大误区
      国内软件公司实施配置管理,已经取得了很多进步,也提高了软件的质量。但是对于软件配置管理,有很多公司对它的理解比较模糊,或者在真正的配置管理实施过程中存在着误区。从专家们的讨论中,我们了解到国内的软件配置管理主要有三个方面的误区。
      误区一:版本控制=软件配置管理
      也许很多人不承认自己对于软件配置管理的理解局限在版本控制上,但在具体实施配置管理的过程中,就只见版本控制,而不见真正的配置管理。其实版本控制只是配置管理最基本的层次和功能。当然只有进行了版本控制,其他的功能才可能会逐渐提升。就是一个基本的版本控制,在部分软件公司中也并不是一个非常正规和完善的过程。
      这种问题,归根到底在于软件公司对软件开发流程的管理在意识上不够重视。国内软件企业的开发管理不是很规范,即使在大的软件公司里面,项目组对于开发管理的关注也是有限的。另外一个原因是由于开发管理中资源的不足,比如:资金的缺乏(导致不能购买功能齐全、价格昂贵的商业产品)、人力资源(不能招聘专业的配置管理人员),因此不能在公司内部实施体系化的配置管理。
      误区二:编码水平最差=配置管理员
      配置管理人员是配置管理具体实施的人。可以说公司制定了配置管理的流程和规章只是配置管理实施的基础,而真正配置管理能否实施,能否有效,关键在于从事配置管理的人员。但国内的一个误区是:在选择配置管理人员的时候,是寻找开发团队中编码水平最差的人。比如张三写代码不行,测试也不行,那就只好去从事配置管理工作了。
      谷炼对此深有体会。谷炼有在日本Rational和国内在配置管理领域工作的经历。相比国内低水平的配置管理人员,国外公司一般都由有丰富编程经验的人担任软件配置管理人员,有的时候配置管理部分的工作职责直接由开发经理担任。配置管理人员的级别也相当高,被认为是项目经理的左右手,拿的是双薪。
      其实一个SCM人员的责任相当重大,一个团队所有的代码、文档都由其负责,国内好像是处于一个相当尴尬的境地,认为一个什么都不懂的人担任,才能保证这些代码文档的安全。
      当然国内也不泛重视配置管理的公司。据传说华为就非常重视软件配置管理,除了设置CTO、CEO,好像还设置了一个CMO(Configuration Management Officer,或者叫配置经理)。
      误区三:采用配置管理工具=有效的配置管理
      配置管理工具在软件配置管理中起着不可替代的作用。没有工具的支持,实施一个完整合格的配置管理是不可想象的。也许正是因为工具的重要,造成了很多软件公司对于工具的迷信,以为只要部署了配置管理工具,尤其是一个专业的商业工具,就自以为建立了配置管理体系。
      使用好的工具并不能代表就能实施好配置管理。因为工具就是工具,工具不能代替管理。否则为什么总是说配置“管理”而不单单说配置“工具”呢?一个成功的配置管理工具实施,需要两个方面的条件:一是规范的软件开发流程;二是合格的配置管理参与人员,这里的配置管理参与人员包括了配置管理员、开发人员、项目经理等。
      对此,邓小年认为:“无论怎么样,没有流程和规范地使用工具,那么再强的工具也没有灵魂。比如简单的一个check in操作,不同的人用起来可不一样。有人修改后,进行build,然后check in;有人修改后,进行build,并简单的测试再check in,也有人修改后马上check in,……可看出不同的人使用工具的同一操作有不同的后果。”
      人——为何如此重要?
      配置管理员在配置管理中是一个比较奇妙的角色,对于一个实施了配置管理、建立了配置管理工作平台的团队来说,他是非常重要的,整个开发团队的工作成果都在他的掌管之下。如果他管理和维护的配置管理系统出现了问题,轻则影响团队其他成员的工作效率,重则可能出现丢失工作成果、发布错误版本等严重的后果。
      配置管理员应该做什么
      一般而言,配置管理人员在软件公司中应该具有下面的几项主要职责:
      1、 提交配置管理计划;
      2、 软件配置管理工具的日常管理与维护,各配置项的管理与维护;
      3、 执行版本控制和变更控制方案;
      4、 完成配置审计并提交报告;
      5、 对开发人员进行相关的配置管理培训;
      6、 识别软件开发过程中存在的问题并拟出解决方案。
      你是合格的配置管理员吗?
      一个高水平的配置管理人员,对开发团队在整体上有非常重要的作用。如果在一个企业中实施了配置管理工具如ClearCase,但没有专业的配置管理人员管理,就像一个拖拉机安装了一个奔驰的马达,还是跑不快。早期在国内企业中,找一个合适的配置管理人员很困难,最后由系统管理人员来担任。并且使用不同的配置管理工具,对配置管理人员的要求就不一样,如VSS对配置管理人员的技术水平要求就较低。
      按照配置管理的职责要求,一个合格的配置管理人员需要具备哪些素质呢?
      1、职业道德是第一位的,这是由于配置管理人员负责管理软件公司最为重要的资产。
      2、软件配置管理的专业知识,最好要精通一种配置管理工具,没有工具是不可能实施软件配置管理的,否则那只能是效率极其低下的纸上谈兵。
      3、项目管理的知识,对于软件开发流程非常熟悉。一般而言,最好要经历几个软件项目的开发管理过程,或者担任过项目经理,对软件开发的全过程有比较清晰的了解;有软件开发经验可以增强说服力,降低实施的难度,并且能够切身以开发人员的身份去体会配置管理,才能改进配置管理过程。
      4、有一定的大局观,有一定的IT背景知识,对系统(操作系统、网络、数据库等方面)比较熟悉。
    除了个人素质上的要求,在性格上也有一些共性的东西。
      1)、沟通技巧:在部署和实施配置管理的时候,肯定会遇到一些抵触,对于程序员而言,使用配置管理之前,没有什么约束,但是在实施后,会有一些约束,认为这并不是自己的工作。如果在使用中出现了问题,就需要配置管理人员进行沟通,并且能够解决问题。
      2)、稳重、细心、有耐心。配置管理工作需要和开发人员、测试人员、项目经理打交道,但是他们对于遵循配置管理流程和工具不会非常的热心,因此需要配置管理人员能够稳重、有耐心。
      3)、能够吵架。有的时候,如果沟通不行,就需要采取强迫的手段来保证具体配置工作的要求得到执行。记得在网上见到这样的一句话:搞配置管理原来很好玩,就是要——凶~!
      配置管理员的困惑
      用友软件工程公司的耿延煜现在担任一个项目的配置管理员,她对于软件配置管理人员的看法更有代表性。在用友软件工程公司,采取的是一个项目设置一个配置管理人员,主要工作是项目产品的版本管理,并配合项目经理对项目中的文档、代码进行检查。但是这个配置管理人员并不是专职的,在承担配置管理职责之外,还会承担一些项目的开发、测试工作。作为一个兼职的SCM人员,耿延煜认为,有两个问题需要注意:
      一是如何在工作任务紧张的时候保证配置管理工作?
      作为一个配置管理人员,并不是仅仅从事配置管理工作,很多时候,会接受项目经理指派的开发工作,这个时候如何处理配置管理工作和开发工作的权重就非常重要,尤其是在一个项目处于紧要关头的时候,开发进度紧,很多公司就忽视了配置管理,但是往往这个时候,配置管理才是最为重要的,并且这个时候出了问题,对于项目的影响会更大。因此在很多情况下,必须付出时间从事配置管理工作,如加班。出现了问题,配置管理人员必须立即进行修复。
      二是定位模糊。很多SCM人员对自己的定位都比较模糊,没有将自身置于一个项目管理者的角色。感觉自己只是项目组的一个无关紧要的角色。国内软件开发中,向来就重开发人员,轻视测试人员,配置管理人员就更得不到重视了。然而,配置人员应该是一个项目经理的Backup,应该向项目经理发展。
      配置管理员的最佳实践
      对于配置管理人员的部门设置,邓小年认为,一般国内大中型软件公司在配置管理部门可以设置如下的三个职位:
      1、配置管理经理:负责公司全面的配置管理方面的工作;
      2、创建发布工程师:主要负责创建和发布,部署产品;
      3、工具管理工程师:主要负责开发、维护配置管理工具,对工具的使用进行培训。
      考虑到我国的现实情况,在一个软件公司中的每个项目专门设置一个SCM人员还不现实。从上面可以看出,配置管理员的最佳实践和推广方式可以采用是“兼职+专职”的形式来进行。具体而言,可以这样安排:
      1、软件公司在公司级必须有一个整体的配置管理解决方案和策略,对于各个具体开发的项目也有一个适合项目需要的配置管理策略。
      2、公司级的SCM策略上,设置专职的配置管理人员,一般由水平较高的人员担任,符合上面提到的配置管理员的素质要求。
      3、项目级的SCM策略上,设置兼职的配置管理人员,一般可以由开发人员或者质量人员来兼任。
      4、专职SCM人员和兼职SCM人员之间的沟通协调。并且对于SCM工具,如ClearCase,一般在前期部署的时候,任务比较紧张,在实施以后,操作就比较简单,只需要一个兼职人员就可以了。通过专职SCM人员和兼职SCM人员之间不断地反复沟通,才能将一个SCM过程具体实施好。
      实施——从老板的角度思考
      配置管理应该如何实施?软件配置管理活动是一项支持性、保障性的工作,它本身并不直接为企业产生直接赢利的工作成果,它每一项活动都需要消耗企业的资源,还需要购置配置管理工具,这些都会导致企业生产成本的增加。因此对一个软件公司来说,实施配置管理就需要从老板的角度进行思考。
      什么是成功的配置管理?
      一个没有实施配置管理的软件项目,常常出现的问题有:版本混乱、文档不统一、工件遗缺等。这些问题归根到底是软件质量的问题。因此对于什么是成功的软件配置管理,一个最简单的方法是比较配置管理实施活动前后,软件产品的质量是不是得到了提高、开发团队是不是能够工作在一个有助于提高整体工作效率的配置管理平台上。
      具体到配置管理中的每项活动,是否成功的标准是:这项活动是不是真正有助于我们实施配置管理的活动?它对于提高我们产品的质量有多大的帮助?能否帮助开发团队更高效地工作?
      配置管理流程再造
      软件配置管理的实施首先需要有一个规范的软件开发流程,因此对于一个软件公司而言,要实施配置管理,首先是需要对自身的软件开发流程进行再造。再造水平的好坏决定了配置管理是否仅仅是版本控制,是否能够有效的实施配置管理。流程不好,也许就仅仅到达版本控制的水平,不能达到变更控制、过程管理等“配置管理”的较高水平上。
      选择合适的配置管理工具
      有了配置管理流程,为了保证配置管理的效果、范围和质量,就需要应用配置管理工具。对于如何选择一个合适的配置管理工具,在这次的研讨会上也是我们讨论的热点。我们认为,公司在选择SCM工具的时候,可以遵循下面四个原则。
      首先是工具的价格。一般国内中小型软件企业都没有足够的资金来实施一些商业工具。因此就只能退而求其次了,采用一些变通的方法来实施。比如:对于变更管理,采用签发变更单解决。有些公司采用一些简单的MIS来管理,数据保存到数据库,能够做到查询、保存等目的。
      二是在功能上,满足需要就可以,太过复杂的产品使用也麻烦,对配置管理人员的要求也高,价格也昂贵。工具只要符合需要就行,不必追求功能齐全。
      三是性能。由于配置管理的都是开发中最为重要的资源,一旦崩溃,损失就会很大。因此配置管理工具的运行需要非常稳定,不出故障,出了故障应该有补救措施。
      四是实施的过程是否顺利,售后服务和技术支持是否完善。
      正确实施配置管理工具
      在实施配置管理工具的时候,工具必须和开发管理流程良好的结合起来,这样才能保证工具的正确实施。而这点也是目前软件公司在使用各种工具时一个最大的难点。
      1、配置管理应该更自动化
      变更管理应该支持从项目开始到维护整个生命周期不同的变更类型;代码的版本管理到发布应该一气呵成;版本的配置关系可以简单表现出来。这些方面虽然配置管理工具涉及到,但没有一个工具能够完全的自动化。很多时候,我们需要额外的工作来维护配置管理系统本身。可以说:项目总的复杂度不变,实施配置管理后,降低了软件开发的复杂度,却增加了管理的复杂度。因此配置管理的自动化非常重要。
      2、配置管理应该基于流程
      没有流程来执行配置管理是不切实际的,而现有的配置管理工具大多支持流程的管理,但是流程不一定适合于每个公司。如ClearCase的UCM流程,虽然很好,但是很难定制,我们只能让公司项目环境来适应这个工具,而不是让工具来适应现有的开发环境,这样的做法并不少最好的。配置管理工具不仅要支持流程,并且能够定制流程。
      3、策略和标准化更加容易使用
      实施配置管理的时候,需要定义许多的标准,比如版本名称规则、文档命名规则、什么时候check in、什么时候创建分支等。目前的一些配置工具,都没有提供这方面的专门定义,需要配置管理员另外写脚本或者程序来限制执行。这些地方都是需要改进的。
    展开全文
  • spring boot实战(第五篇)配置源码解析

    万次阅读 2015-10-02 22:56:51
    上一篇中讲述了spring boot配置文件的使用,本篇开始源码的角度来看看配置文件。 环境(Environment) 学习过spring的同学都清楚,在bean中注入Enviroment实例即可调用配置资源信息,如以下代码 package ...
  • WAS配置存储库结构 WAS 的所有资源配置信息都是以 XML 形式存储在 WAS 配置存储库中的。无论用户使用管理控制台还是 wsadmin 里的 AdminConfig 或 AdminTask 命令对 WAS 进行配置,本质上都是对 WAS ...
  • Yarn资源请求处理和资源分配原理解析

    万次阅读 热门讨论 2017-12-14 09:57:31
    FairScheduler的资源调度原理和代码 FairScheduler的调度概览 两种调度时机-心跳调度和持续调度 开始进行资源调度 判断这个application是否适合在这个节点上分配资源运行 YARN请求资源时的locality和relaxility限定 ...
  • 数学建模高教社杯2015B “互联网+”时代的出租车资源配置论文解读 真题 首先展示一下2015B的原题是什么,如下 1B27002-B013解读 我们先大概的看看这篇论文的结构 模型假设 因为在现实中,许多情况没有我们想象的那么...
  • 本文在互联网虚拟大脑结构图的基础上,分析了互联网与物联网,云计算和大数据的关系,标识出物联网,云计算,大数据和传统互联网在互联网虚拟大脑结构图的位置。说明基于神经学建立的互联网虚拟大脑架构可以有效的...
  • 在阅读这篇文章之前,建议先阅读一下我之前写的两篇文章,对理解这篇...如果你想获得更好的阅读体验,可以点击这里:Mybatis底层原理学习(二):源码角度分析一次查询操作过程 (1)在使用Mybatis操作数据库...
  • android 配置文件解析

    千次阅读 2011-09-20 15:05:08
    gradient 产生颜色渐变 android:angle 哪个角度开始变 只有90的整数倍可以 --> < solid android:color ="#ff4100ff" /> <!-- solid表示图形是实心的,填充里面,#ff4100ff为填充颜色 --> < stroke ...
  • 继上一篇《SpringSecurity | spring security oauth2.0 配置源码分析(一)》简单的分析配置之后,今天源码的角度分析配置是如何生效的,Oauth2.0如何和 Spring Security 整合的。 1)先看下Spring ...
  • CentOS7上搭建FTP服务+VSFTPD配置解析

    千次阅读 2017-10-28 08:49:38
    CentOS7上搭建FTP服务+VSFTPD配置解析 Published On October 13, 2017 FTP 服务    FTP是早期的应用级协议之一,是一种基于C/S结构的双通道协议。    可以作为FTP服务器的软件有很多,比如Wu-ftpd,...
  • 对于创业的人来讲,选择...今天开发环境、配置、UX设计、语言、API、网络、分享、碎片化、发布等九个方面把Android和iOS平台做一次PK。网络通信实现当今大多数应用都采用互联网API,iOS和Android都提供了一整...
  • 图解PCIE原理(软件角度

    万次阅读 多人点赞 2017-07-08 09:50:01
    1 PCIE基本概念1.1 PCIE拓扑架构图1.2 PCIE Switch内部结构图1.3 PCIE协议结构图2 PCIE枚举原理2.1 Type0&Type1配置头空间2.2 拓扑示例连接Device0的端口设为Port0,连接Device1的端口设为Port1 (Port可以看作PCI...
  • 随着游戏制作技术的不断发展,在经历...本文将游戏中的”复活”和”暂停/恢复”这两个应用场景的角度来谈谈在游戏开发中如何对游戏中的数据进行管理和配置。为什么要谈游戏数据的配置和管理不知道大家是不是会和博主
  • 1.tomcat配置文件中有一部分是作为监听器使用的,但英文就应该知道其各部分的作用 分别是版本日志监听器,tomcat 虚拟机内存防止溢出监听器,全局资源配置,防止线程溢出监听器 2.这里是全局资源配置的...
  • 虽然很多时候一个api接口的业务,数据逻辑是后端提供的,但真正使用这个接口的是客户端,一个前端功能的实现流程与逻辑,有时候只有客户端的RD才清楚,某种意义来说,客户端算是接口的需求方。所以建议在前期接口...
  • 我们以访问百度为例,来一步步分析一...1、首先,会进行一次DNS域名解析(就是找到对应的IP地址),DNS解析有将近10步,分别是 1a、检查浏览器缓存中是否有对应映射,有就结束;1b、检查操作系统缓存(hosts文件)中是
  • 主流典型各类应用服务器硬件配置分析 为了更好的理解服务器应用,我们应用角度,结合服务器技术规格要求不同,可大致分三类:    快速处理型是指对服务器的性能要求较高,反应速度要求快,如门户型网站...
  • 人力资源管理系统需求分析樊永伟 人力资源管理系统的功能要求人力资源管理系统的总目标是:在计算机网络,数据库和先进的开发平台上,利用现有的软件,配置一定的硬件,开发一个具有开放体系结构的、易扩充的、易...
  • 运维的角度看微服务和容器

    万次阅读 2016-08-31 08:55:18
    这两个例子中,我们可以看出,单体应用存在如下两个问题:一个是横向扩展时需要整体扩展,资源分配最大化,不能按需扩展和分配资源;另一个是如果单体中有一个业务模块出现问题,就会是全局性灾难,因为所有业务跑...
  • MySQL参数配置

    千次阅读 2019-06-09 17:44:03
    通过根据服务器目前状况,修改Mysql的系统参数,达到合理利用服务器现有资源,最大合理的提高MySQL性能。 2、服务器参数: 32G内存、4个CPU,每个CPU 8核。 3、MySQL目前安装状况。 MySQL目前安装,用的是MySQL...
  • 干货|FOF资产配置方案全解析

    千次阅读 2017-06-29 17:30:26
    一、国外FOF市场简介 1.1美国FOF市场概况  FOF(fund of fund)也被称作组合基金,... 2002年以来,美国FOF快速发展,总规模2002年的689.6亿美元一举上涨到2015年的17216.2亿美元,并且除2008年金融危机以外
  • redis配置文件

    千次阅读 2018-12-29 15:02:48
    Redis配置文件解析 Redis 3.2.100 配置文件解析 Redis 5.0.0 配置文件解析 Redis配置文件解析 Redis 3.2.100 配置文件解析 # redis版本 3.2.100 # 如果想要使用到配置文件,Redis服务必须以配置文件的...
  • 672, 704, 736, 768, 800) # 训练图片的最小尺寸 MIN_SIZE_TRAIN_SAMPLING: choice #训练样本的抽样方式 MODEL: ANCHOR_GENERATOR: # anchor生成的相关配置 ANGLES: [[-90, 0, 90]] # anchor的角度 ASPECT_RATIOS: ...
  • 近期看了点Spring boot的框架源码,研究了一下WEB Mvc的视图解析器,记录一下,以备以后查阅.如果认知错误,还请小伙伴指教讨论. ViewResolver 视图解析
  • Netconf配置及其RPC和Notification下发流程解析 最近两个月一直在捣鼓netconf,现在搞得小有成效,因此总结一番,以便和广大网友进行深入探讨。 我们是基于libnetconf开源软件...
  • TUXEDO配置参数详解 远程客户端配置

    千次阅读 2019-01-15 14:43:51
    TUXEDO应用系统的配置 1.1 TUXEDO应用系统的常见配置 配置文件UBBCONFIG介绍 一个TUXEDO应用系统的所有资源都在一个文本文件中进行定义,该文件称为UBBCONFIG,在配置完成后,UBBCONFI...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 124,309
精华内容 49,723
关键字:

从资源配置的角度分析