??xml version="1.0" encoding="utf-8" standalone="yes"?> 如果DispatcherServleth映射配置?/"Q则Spring MVC捕获Web容器所有的hQ包括静态资源的hQSpring MVC会将它们当成一个普通请求处理,因此找不到对应处理器导致错误?/p> 如何让Spring框架能够捕获所有URL的请求,同时又将静态资源的h转由Web容器处理Q是可将DispatcherServlet的请求映配|ؓ"/"的前提。由于REST是Spring3.0最重要的功能之一Q所以Spring团队很看重静态资源处理这Q务,l出了堪U经典的两种解决Ҏ?/p> 先调整web.xml中的DispatcherServlet的配|,使其可以捕获所有的hQ?/p> 通过上面url-pattern的配|,所有URLh都将被Spring MVC的DispatcherServlet截获?/p> 在springMVC-servlet.xml中配|?lt;mvc:default-servlet-handler />后,会在Spring MVC上下文中定义一个org.springframework.web.servlet.resource.DefaultServletHttpRequestHandlerQ它会像一个检查员Q对q入DispatcherServlet的URLq行{查Q如果发现是静态资源的hQ就该h转由Web应用服务器默认的Servlet处理Q如果不是静态资源的hQ才由DispatcherServletl箋处理?/p> 一般Web应用服务器默认的Servlet名称?default"Q因此DefaultServletHttpRequestHandler可以扑ֈ它。如果你所有的Web应用服务器的默认Servlet名称不是"default"Q则需要通过default-servlet-name属性显C指定: <mvc:default-servlet-handler />静态资源的处理l由Spring MVC框架交回Web应用服务器处理。?lt;mvc:resources />更进一步,由Spring MVC框架自己处理静态资源,q添加一些有用的附加值功能?/p> 首先Q?lt;mvc:resources />允许静态资源放在Q何地方,如WEB-INF目录下、类路径下等Q你甚至可以JavaScript{静态文件打到JAR包中。通过location属性指定静态资源的位置Q由于location属性是ResourcescdQ因此可以用诸?classpath:"{的资源前缀指定资源位置。传lWeb容器的静态资源只能放在Web容器的根路径下,<mvc:resources />完全打破了这个限制?/p> 其次Q?lt;mvc:resources />依据当前著名的Page Speed、YSlow{浏览器优化原则寚w态资源提供优化。你可以通过cacheSeconds属性指定静态资源在览器端的缓存时_一般可该旉讄Zq_以充分利用浏览器端的~存。在输出静态资源时Q会Ҏ配置讄好响应报文头的Expires ?Cache-Control倹{?/p> 在接收到静态资源的获取hӞ会检查请求头的Last-Modified|如果静态资源没有发生变化,则直接返?03相应状态码Q提C客L使用览器缓存的数据Q而非静态资源的内容输出到客LQ以充分节省带宽Q提高程序性能?/p> 在springMVC-servlet中添加如下配|: 假设WebRootq拥有images/bg1.gif ?js/test1.jsQ则也可以在|页中通过 /resources/images/bg1.gif ?/resources/js/test1.js q行引用?br />
Cause:
Solution:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<webResources>
<resource>
<directory>WebContent</directory>
</resource>
</webResources>
</configuration>
</plugin>
</plugins>
</build>
或者增?lt;webXml>配置Q如下:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<webXml>WebContent\WEB-INF\web.xml</webXml>
</configuration>
</plugin>
</plugins>
</build>
]]>
]]>
]]>
调试到凌?点多Q今天恍然发?br />
的最?#8220;/"是红色的?br />
然后用能通过的页面比较,唯一的差异是Q?br />能显C的面
<script type="text/javascript" src="${ctx}/javascript/jquery.min.js"></script>
不能昄的页?/span>
所以问题解决了
]]>
JSTL TLD: <fmt:message key="{message.key"}/>
但是我们会遇C后的问题Q?nbsp;
JSTL的标{没有解析成?br />
解决办法有二Q?br />
其一Q?nbsp;
其二Q?/span>
Z么Spring:message可以
因ؓ我们定义了:
所以我们有理由用同L方式Mؓfmt定义
<context-param>
应该问题不大?br />
参考:http://stackoverflow.com/questions/12470928/jstl-resource-bundle-for-internationalization-and-localization
]]>
If, on the other hand, you need a heavy duty cache, one that’s scalable, persistent and distributed, then Spring also comes with a built inehCache wrapper.
The good news is that swapping between Spring's caching implementations is easy. In theory it’s all a matter of configuration and, to prove the theory correct, I took the sample code from my Caching and @Cacheable blog and ran it using an EhCache implementation.
The configuration steps are similar to those described in my last blog Caching and Config in that you still need to specify:<cache:annotation-driven />
...in your Spring config file to switch caching on. You also need to define a bean with an id of cacheManager, only this time you reference Spring’s EhCacheCacheManager class instead of SimpleCacheManager.<bean id="cacheManager"
class="org.springframework.cache.ehcache.EhCacheCacheManager"
p:cacheManager-ref="ehcache"/>
The example above demonstrates an EhCacheCacheManager configuration. Notice that it references a second bean with an id of 'ehcache'. This is configured as follows:<bean id="ehcache"
class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"
p:configLocation="ehcache.xml"
p:shared="true"/>
"ehcache" has two properties: configLocation and shared.
'configLocation' is an optional attribute that’s used to specify the location of an ehcache configuration file. In my test code I used the following example file:
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd">
<defaultCache eternal="true" maxElementsInMemory="100" overflowToDisk="false" />
<cache name="employee" maxElementsInMemory="10000" eternal="true" overflowToDisk="false" />
</ehcache>
If this file is missing then the EhCacheManagerFactoryBean simply picks up a default ehcache config file: ehcache-failsafe.xml, which is located in ehcache’s ehcache-core jar file.
The other EhCacheManagerFactoryBean attribute is 'shared'. This is supposed to be optional as the documentation states that it defines "whether the EHCache CacheManager should be shared (as a singleton at the VM level) or independent (typically local within the application). Default is 'false', creating an independent instance.” However, if this is set to false then you’ll get the following exception:
1. Use one of the CacheManager.create() static factory methods to reuse same CacheManager with same name or create one if necessary
2. Shutdown the earlier cacheManager before creating new one with same name.
The source of the existing CacheManager is: InputStreamConfigurationSource [stream=java.io.BufferedInputStream@424c414]
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1360)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1118)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) stack trace shortened for clarity
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cacheManager' defined in class path resource [ehcache-example.xml]: Cannot resolve reference to bean 'ehcache' while setting bean property 'cacheManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ehcache' defined in class path resource [ehcache-example.xml]: Invocation of init method failed; nested exception is net.sf.ehcache.CacheException: Another unnamed CacheManager already exists in the same VM. Please provide unique names for each CacheManager in the config or do one of following:
1. Use one of the CacheManager.create() static factory methods to reuse same CacheManager with same name or create one if necessary
2. Shutdown the earlier cacheManager before creating new one with same name.
The source of the existing CacheManager is: InputStreamConfigurationSource [stream=java.io.BufferedInputStream@424c414]
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1360) stack trace shortened for clarity
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322)
38 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ehcache' defined in class path resource [ehcache-example.xml]: Invocation of init method failed; nested exception is net.sf.ehcache.CacheException: Another unnamed CacheManager already exists in the same VM. Please provide unique names for each CacheManager in the config or do one of following:
1. Use one of the CacheManager.create() static factory methods to reuse same CacheManager with same name or create one if necessary
2. Shutdown the earlier cacheManager before creating new one with same name.
The source of the existing CacheManager is: InputStreamConfigurationSource [stream=java.io.BufferedInputStream@424c414]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1455)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322)
48 more
Caused by: net.sf.ehcache.CacheException: Another unnamed CacheManager already exists in the same VM. Please provide unique names for each CacheManager in the config or do one of following:
1. Use one of the CacheManager.create() static factory methods to reuse same CacheManager with same name or create one if necessary
2. Shutdown the earlier cacheManager before creating new one with same name.
The source of the existing CacheManager is: InputStreamConfigurationSource [stream=java.io.BufferedInputStream@424c414]
at net.sf.ehcache.CacheManager.assertNoCacheManagerExistsWithSameName(CacheManager.java:521)
at net.sf.ehcache.CacheManager.init(CacheManager.java:371)
at net.sf.ehcache.CacheManager.(CacheManager.java:339)
at org.springframework.cache.ehcache.EhCacheManagerFactoryBean.afterPropertiesSet(EhCacheManagerFactoryBean.java:104)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452)
55 more
I think that this comes down to a simple bug Spring’s the ehcache manager factory as it’s trying to create multiple cache instances usingnew() rather than using, as the exception states, “one of the CacheManager.create() static factory methods" which allows it to reuse same CacheManager with same name. Hence, my first JUnit test works okay, but all others fail.
The offending line of code is:this.cacheManager = (this.shared ? CacheManager.create() : new CacheManager());
My full XML config file is listed below for completeness:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:cache="http://www.springframework.org/schema/cache"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd">
<!-- Switch on the Caching -->
<cache:annotation-driven />
<!-- Do the component scan path -->
<context:component-scan base-package="caching" />
<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager"
p:cacheManager-ref="ehcache"/>
<bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"
p:configLocation="ehcache.xml"
p:shared="true"/>
</beans>
文章摘自 http://www.captaindebug.com/2012/09/spring-31-caching-and-ehcache.html#.U8FilfmSxZW
]]>
具体错误如下Q?br />
1. Use one of the CacheManager.create() static factory methods to reuse same CacheManager with same name or create one if necessary
2. Shutdown the earlier cacheManager before creating new one with same name. The source of the existing CacheManager is: DefaultConfigurationSource [ ehcache.xml or ehcache-failsafe.xml ]
一般材料是q样说的Q?br />
但是l过实践是要q样做的Q?br />
一D关于完整的配置如下
<!--一D关?/span>securityManager的完整的配置如下-->
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<property name="sessionMode" value="native"/>
<property name="sessionManager" ref="sessionManager"/>
<property name="cacheManager" ref="cacheManager"/>
</bean>
<bean id="cacheManager" class="org.apache.shiro.cache.ehcache.EhCacheManager">
<property name="cacheManager" ref="ehCacheManager"/>
</bean>
<bean id="ehCacheManager"
class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"/>
<bean id="sessionManager"
class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager">
<property name="sessionDAO" ref="sessionDAO"/>
</bean>
<bean id="sessionDAO"
class="org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO">
</bean>
]]>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
采用<mvc:default-servlet-handler />
采用<mvc:resources />以上配置Web根\?/"及类路径?/META-INF/publicResources/ 的目录映ؓ/resources路径。假设Web根\径下拥有images、jsq两个资源目?在images下面有bg.gif囄Q在js下面有test.js文gQ则可以通过 /resources/images/bg.gif ?/resources/js/test.js 讉Kq二个静态资源?/span>
]]>
]]>
username:<input type="text" name="userNAME">
password:<input type="text" name="pasWD">
<input type="button" value="submit">
</form>
最基本的:依靠HttpServletRequest.getParameter
public String addUser(HttpServletRequest req) {
String username = req.getParameter("userNAME");
String passwd = req.getParameter("pasWD");
//save logic
return "user/userinfo";
}
最基本的轻松一变,可以变成lightweightQ?通过@RequestParam
public String addUser(@RequestParam(value="userNAME", required=false) String username, @RequestParam(value="pasWD") String password) {
//save logic, directly use
return "user/userinfo";
}
其实吧,@RequestParam是可以省掉的Q就变成?要点是变量名字的变化
public String addUser(String userNAME, String pasWD) {
//save logic, directly use
return "user/userinfo";
}
q有一U\径法@PathViable
public String addUser(@PathVariable(value="userName") String username) {
//save logic
return "user/userinfo";
}
使用.../add/zhangsan
暴力点的@ModelAttribute
String userNAME;
String pasWD
}
@RequestMapping(method=RequestMethod.POST)
public String addUser(@ModelAttribute(value="user") User user) {
//save logic
return "user/userinfo";
}
其实吧,@ModelAttribute是可以省掉的Q就变成?br />
String userNAME;
String pasWD
}
@RequestMapping("/add")
public String addUser(User user) {
//save logic
return "user/userinfo";
}
接下来就是两UAJAX相关的:
- JSON
var pass = $("#pasWD").val();
var user = {userName:name, password:pass};
$.ajax({
type:"POST",
url:"${pageContext.request.contextPath}/user/addUser",
data:user,
success:function(data){
alert("成功");
},
error:function(e) {
alert("出错Q?+e);
}
});
@RequestMapping("/add")
public String addUser(User user) {
//save logic
return "user/userinfo";
}
- jQuery serializeArray()
//序列化表单元素,q回json数据
var params = $("#userForm").serializeArray();
//也可以把表单之外的元素按照name value的格式存q来
//params.push({name:"hello",value:"man"});
$.ajax({
type:"POST",
url:"${pageContext.request.contextPath}/user/addUser",
data:params,
success:function(data){
alert("成功");
},
error:function(e) {
alert("出错Q?+e);
}
});
@RequestMapping("/add")
public String addUser(User user) {
//save logic
return "user/userinfo";
}
下面摘录一D学习笔?出处
public String register(@PathVariable(value = "userName") String userName) {
ModelAndView mav = new ModelAndView();
return "user/createSuccess";
}
在springmvc注解的@RequestMapping("/somepath/{userName}")如何处理默认值的情况,比如我在发送请求的时?userName有时候是没有的,所以导C不能匚wq个action
http://localhost:8080/spc/movie/somepath/׃能匹配上面的h:
http://localhost:8080/spc/movie/somepath/tom而这个才可以匚w?nbsp;
@PathVariable 会将url中的参数解析到对应的Ҏ参数上,需要在@RequestMapping()指定匚w模式
@RequestMapping("somepath/{userName}")
q时你访问地址"somepath/Tom"p?Tom"解析到方法参数userName?nbsp;
@RequestParam用于请求参数区数据映射到功能处理方法的参数?nbsp;
public String requestparam2(@RequestParam("username") String username)
h中包含username参数Q如/requestparam1?username=zhangQ,则自动传入?nbsp;
接下来我们看一下@RequestParam注解主要有哪些参敎ͼ
valueQ参数名字,卛_参的h参数名字Q如username表示h的参数区中的名字为username的参数的值将传入Q?br />
requiredQ是否必,默认是trueQ表C求中一定要有相应的参数Q否则将?04错误码;
defaultValueQ默认|表示如果h中没有同名参数时的默认|默认值可以是SpEL表达式,?#8220;#{systemProperties['java.vm.version']}”?nbsp;
public String requestparam4(@RequestParam(value="username",required=false) String username)
表示h中可以没有名字ؓusername的参敎ͼ如果没有默认为nullQ此处需要注意如下几点:
原子cdQ必L|否则抛出异常Q如果允许空D使用包装cMѝ?nbsp;
Boolean包装cdcdQ默认Boolean.FALSEQ其他引用类型默认ؓnull?nbsp;
public String requestparam5(@RequestParam(value="username", required=true, defaultValue="zhang") String username)
表示如果h中没有名字ؓusername的参敎ͼ默认gؓ“zhang”?nbsp;
如果h中有多个同名的应该如何接收呢Q如l用h权时Q可能授予多个权限,首先看下如下代码Q?nbsp;
public String requestparam7(@RequestParam(value="role") String roleList)如果h参数cM于url?role=admin&rule=userQ则实际roleList参数入参的数据ؓ“admin,user”Q即多个数据之间使用“Q?#8221;分割Q我们应该用如下方式来接收多个h参数Q?nbsp;
public String requestparam7(@RequestParam(value="role") String[] roleList)
?nbsp;
public String requestparam8(@RequestParam(value="list") List<String> list)
]]>
再次执行此命令后Q程序出现异常:Error parsing Mapper XML. Cause: java.lang.IllegalArgumentException: Result Maps collection already contains value
逐个文g排查Q终于在xxMapper.xml发现了问题:
]]>
高度怀疑是JQuery的bug
当我在jsp/html开头增加了q么一?br />
分析下来原因是这LQ?br />
]]>
The 6.1 Alpha binary is made available for free (both for development and production use) to the entire community. This allows community users who have been using the community server JBoss AS (now renamed to WildFly) a chance to get the bug fixes and possibly other features which had been added while the productization work was in progress.
The 6.1 Beta binary is made available under the zero-dollar developer subscription scheme (the terms and conditions are herehttp://www.jboss.org/developer-program/termsandconditions). This zero dollar subscription allows users to use the binray in development environments but not in production, unless of course the user additionally is also a paid subscriber/customer of EAP.
The 6.1 GA binary is available for production use only for paid subscribers/customers. Zero-dollar subscribers can use it only for development purposes. In other words, the usage terms are the same as 6.1 Beta binary.
大数据时代,数据q剩Qh才短~,来多的IT专业人士希望能够q入充满机遇的大数据领域Q但是,到底哪些具体的大数据专业岗位和h才最为吃香呢Qh力资源公司Kforceq日发布了一份报告根?a style="font-size: 1em; outline: 0px; padding: 0px; margin: 0px; border: 0px; text-decoration: none; vertical-align: baseline; color: #004276;">IT职业薪酬水^
l出?014q最热门的十大大数据工作职位Q年薪)Q?/p>一、ETL开发者(11-13万美元)
随着数据U类的不断增加,企业Ҏ据整合专业h才的需求越来越旺盛。ETL开发者与不同的数据来源和l织打交道,从不同的源头抽取数据Q{换ƈ导入数据仓库以满企业的需要?/span>
ETL软g行业相对成熟Q相兛_位的工作生命周期比较长,通常由内部员工和外包合同商之间通力完成。ETL人才在大数据时代炙手可热的原因之一是:在企业大数据应用的早期阶D,Hadoop只是Ih的ETL?br />
二、Hadoop开发者(15-17.5万美元)
Hadoop是基于Java的开源框Ӟ随着数据集规模不断增大,而传lBI的数据处理成本过高,企业?/span>Hadoop及相关的廉h数据处理技术如Hive、HBase、MapReduce、Pig{的需求将持箋增长。如今具备Hadoop框架l验的技术h员是最抢手的大数据人才?br />
三、大数据可视化工具开发者(15-17.5万美元)
量数据的分析是个大挑战Q?/span>新型数据可视化工具如SpotifreQQlikview和Tableau可以直观高效地展C数?/strong>。过去,数据可视化属于商业智能开发者类别,但是随着Hadoop的崛P数据可视化已l成了一独立的专业技能和岗位?br />
四、数据科学家Q?2-14万美元)
q去也称数据架构师,数据U学家是一个全新的工种Q能够将企业的数据和技术{化ؓ企业的商业h倹{数据科学家首先应当具备优秀的沟通技能,能够同时数据分析结果解释给IT部门和业务部门领对{?/span>
ȝ来说Q数据科学家是分析师、艺术家的合体,需要具备多U交叉科学和商业技能?br />
五、OLAP开发者(9.8-11.6万美元)
OLAP在线联机分析开发者,负责数据从关系型或非关pd数据源中抽取出来建立模型Q然后创建数据访问的用户界面Q提供高性能的预定义查询功能?/strong>
六、数据仓库一体机专家Q?.8-12.4万美元)
此类专家熟悉Teradata、Neteeza和Exadata{公司的大数据一体机。能够在q些一体机上完成数据集成、管理和性能优化{工作?br />
七、预分析开发者(10-13万美元)
营销部门l常使用预测分析预测用户行ؓ或锁定目标用戗预分析开发者有些场景看上有有些cM数据U学Ӟ卛_企业历史数据的基上通过假设来测试阈值ƈ预测未来的表现?br />
八、信息架构师Q?1.4-13.5万美元)
大数据重新激发了L据管理的热潮。充分开发利用企业数据ƈ支持决策需要非怸业的技能。信息架构师必须了解如何定义和存档关键元素,保以最有效的方式进行数据管理和利用。信息架构师的关键技能包括主数据理、业务知识和数据建模{?/span>
“大数?/span>”是在2013q被用滥了的词汇Q但实际上,׃数据量缺失、大数据清洗和分析能力不I以及数据可视化瓶颈等问题Q?/span>“大数?/span>”一直未能迟q落地。伴随着基础设施的发展,意味着大数据的发展又走到新的一个新的界点。系lY件供应商Software AG?/span>Gagan MehraQ在Venturebeat|站阐述了他对于大数据接下来发展的认识,他认为更快地数据处理、更可靠的数据质量,以及更加l分的应用市场,是大数据2.0时代的重要特征?br />
更快的数据处理速度
׃数据量指数型增长Q?/span>对于数据的快速分析的需?/strong>已经变得比以往M时候都要迫切。几乎每家大数据厂商Q都惌兜售比别家处理速度更快的品?/span>Hadoop发布的新?/span>Hadoop 2.0 / YARNQ几乎能实时分析数据。而下一代大数据的计牵引框?/span>Apache SparkQ它的速度?/span>Hadoop?/span>100倍?/span>谷风险投资机构Andreessen HorowitzQ已l以1400万美元的hQ领投了一家以Apache SparkZ务核心的初创企业Databricks。不久前Q?/span>亚马逊也上线了实时流数据服务KinesisQ来帮助没有数据处理能力的公司解册一问题?br />
许多分析供应商都已经认识C数据处理速度的重要?/strong>Qƈ建立了能够每U处?/span>TB数据的品?/span>传感器数据分析、物联网在工业和消费U市场快速发展的势头Q驱动了q次变革?/strong>比如一家企业的传感器,能够每秒产生出数百次的事Ӟ实时处理q些数据隑ֺ很高。特别是当实时处理的传感器数据,Ȁ增到一?/span>5TB的时候,速度Q就成了ؓ关键的指标?/span>
同时Q尽数据存储成本已l篏q下降,但数据存储的费用q是不小的一W支出。部分商家相比存储完整数据流而言Q更們于保存过滤掉噪音的数据?br />
清洗“垃圾数据”
在本难以计数的数据量l以指数模型Ȁ增时Q对于数据质量的强化Q便摆上了许多数据供应商的议E?/span>换句话说Q在庞大数据面前Q即使计机能够高效的处理它们,但大量无用的“垃圾”数据Q只会给pȝ带来负担Qƈ增添存储、主机等讑֤成本?/span>q就需要数据处理过E中Q根据特定的规则和参敎ͼҎq数据流q行“清洗”和分析,q自动决{该d理哪些数据,q一切不再需要h工去q预?/span>
在这L环境下,如果选择了一个坏的数据,׃像病毒一P可能引发q箋的错误决{,甚至让企业蒙受经损失?/span>一个例子就是利用算法去q行股票交易Q以毫秒计数股票市场中,M一点小的差错,都有可能引发无法巨大的损失?/strong>
所以,数据质量已成为服务别协议(service level agreementsQ最重要的参C一。无法屏蔽劣质的数据的供应商Q会因此被列入行业的黑名单,以及面严重的经处|?/span>B2B行业为早期数据质量的入局者,他们非常重视数据的质量,来保持商业运作时的稳定性。甚臻I许多企业计划为数据质量部|实时的警告pȝQ这些警告会被发送于负责相应问题的专员,׃们提供问题的解决Ҏ?br />
机器学习是另一w要保证数据质量的领域。机器学习系l部|在一个闭环的生态中Q通过模式分析与其他的数据分析技术,l化原来的数据质量规则。而高质量的数据,能够保证机器q行正确的行为模式分析?/span>
来多的基应用
大数据带来的变革Q得每一个h都想要利用它Q但技术上门槛又让许多Z得已只能充当一个看客。而应用将有助于h们去克服q一困难。在接下来的几年中,我们会看到成千上万的解?/span>某一垂直领域的专业应?/strong>Q以应对来自各行各业的大数据挑战?br />
目前Q已l小有成q数据分析公司包括eHarmony?/span> Roambi?/span> Climate Corporation{等。未来,甚至许多企业,既不用依赖特定基讑֤Q也不要雇䄦专业的数据科学家Q就能受益于对大数据分析利用?br />
比如Q一些应用将从各U渠道,攉兌的客h据,以更好地了解客户的需求。从而企业能够ؓ特定的目标客P提供特定需求的产品Q更有针Ҏ地赚到钱。当q些应用走进Z日常的吃喝玩乐、医疗保健等领域Q生zM会因此而更好?/span>
?/span>CNW.com.cn独家译稿?/span>在过Mq_Hadoop生态系l已l大范围扩展Q很多主要IT供应商都推出了Hadoopq接器,以增强Hadoop的顶层架构或是供应商自己使用的Hadoop发行版。鉴于Hadoop的部|率呈指数的增长,以及其生态系l不断地深入而广泛地发展Q我们很想知道Hadoop的崛h否会D传统数据仓库解决Ҏ的终l呢?/span>
我们也可以将q个问题攑ֈ一个更大的环境中去讨论Q在何种E度上,大数据会改变传统数据分析的环?/span>?
数据仓库是技术和软g套gQ它能够从操作系l收集数据,q将q些数据整合Qƈl一C央数据库中,然后Ҏ据A表盘上指标进行分析、可视化和追t关键性能处理?/span>
数据仓库?/span>Hadoop之间的主要区别是Q数据仓库通常部v在单个关pL据库中,而这个数据库则vC央存储的作用。相比之下,Hadoop及其Hadoop文gpȝ是跨多个机器Qƈ用来处理量数据的,而这是Q何单台机器都达不到的能力?/span>
此外Q?/span>Hadoop生态系l包括构建在Hadoop核心之上的数据仓库层/服务Q而Hadoop上层服务包括SQL(Presto)、SQL-Like(Hive)和NoSQL(Hbase)cd的数据存?/span>。相比之下,在过ȝ十年中,大型数据仓库转移C用自定义多处理器讑֤来扩展数据量Q像Netezza(被IBM收购)和Teradata所提供的数据仓库。然而,q些讑֤都非常昂贵,大多C企业都负担不v?/span>
在这U背景下Q我们很自然地要问:Hadoop是否是数据仓库的l结?
Z回答q个问题Q我们需要将数据仓库技术与数据仓库部v分开来看?/span>Hadoop(和NoSQL数据库的出现)预C着数据仓库讑֤和传l数据仓库单一数据库部|的消亡?/span>
而在q方面就有过实例?/span>Hadoop供应商Cloudera其q_作ؓ“企业数据枢纽”Q这在本质上传l数据管理解x案的U_了需求。ReadWrite.com在最q发表的一题?#8220;Z么专有大数据技术没有希望与Hadoop竞争”的文章中也发表了cM的看法。同样地Q最q一华街日报文章描述了Hadoop如何挑战甲骨文和Teradata?/span>
Hadoop或NoSQL生态系l仍l发展。很多大数据环境开始选择NoSQL、SQL甚至是NewSQL数据仓库的合方法。此外,MapReduceq行处理引擎也有变化和改q,例如Apache的Spark目。虽然这个故事还q远没有l束Q?strong>但可以说Q传l的单一服务器关pd数据库或数据库设备ƈ不是大数据或数据仓储的未?/strong>?/span>
另一斚wQ数据仓库技?/span>(包括提取—转换—?#8212;加蝲、三l徏模和商业)会应用到新的Hadoop/NoSQL环境。此外,q些技术也变w来支持更多的合环境。主要原则是因ؓq不是所有数据都是^{的Q所以ITl理们应该选择数据存储和访问机制来适应数据的用。合环境将包括关键价值存储、关pd数据库、图形存储、文档存储、柱状存储、XML数据库、元数据目录{等?/span>
正如你所看到的,qƈ不是一个简单的问题Q也不可能简单地得出一个答案。然而,一般情况下Q虽然大数据在未来五q内会改变数据仓库的部|Ԍ但它不会D数据仓库的概念和做法q时?/span>
对于向数据仓库投入巨资的联邦政府q意味着什么呢?
首先Q当现有数据仓库的容量不够时Q数据仓库将被{UdZHadoop、多机器或云托管的解x案。其ơ,企业q不会选择“放之四v而皆?#8221;的做法,而会目光{向适合其企业内部数据容量的混合存储Ҏ。(邚w~译Q?/span>
市场研究公司IDC预测Q?015q大数据市场规模从2010q的32亿美元增长到170亿美元,复合q增长率?0%。大数据是一个庞大的新的领域Q其中的数据集可以增长的非常庞大Q以至于使用传统的数据库理工具也很隑֤理。处理这U问题所需要的新工兗框架、硬件、Y件和服务是一个巨大的市场Z。随着企业用户来多地需要连l不断地讉K数据Q好的大数据工具集将以最低的成本和接q实时的速度提供可~的、高性能的分析。通过分析q种数据Q企业可得到更大的智能以及竞争优ѝ下面是Hadoop和大数据专业厂商MapR共同创始人和首席执行官约?#183;施罗PJohn SchroederQ对2014大数据市场的预测?/span>
1. SQL拥有大数据的最大潜?/span>
用于 HadoopQ分布式计算Q的SQL的发展能够让商业分析师利用自q技能和选择的SQL工具执行大数据项目。开发h员可以选择Hive、Drill?Impala{Apache目Q以及选择Hadapt、HAWQ和Splice Machine{公司的专有技术?/span>
2. 管如此 SQLq面临挑?/span>
SQL需要数据结构。而集中的l构化数据可引v延迟q且需要h工管理。SQLq限制分析类型。过分强调SQLgq机构全面利用其数据价值的努力和gq反应?/span>
3. w䆾识别是主要的数据安全问题
随着HadoopQ分布式计算Q中提供的接入控制能力的猛烈dQ机构迅速认识到U\Un份识别是必要的基。没有充分的w䆾识别QQ何更高的控刉很容易被l过Q妨预定的安全计划?/span>
4. 数据错误变成学习Z
2014q机构将出现许多数据错误。数据错误将表明基础的来源系l的问题吗?数据错误是在下游分析中出现偏差导致的数据提取问题吗?数据错误表明定义差异或者缺跨部门和业务部门的一致性吗Q?014q将看到解决数据异常问题?/span>
5. 出现可运行的Hadoop
2014q将看到Hadoop在各个行业中的生产部|显著增加。这显C出Hadoop在运营中的实力。在那里Q生产应用与分析l合在一赯够提供可以衡量的商业优势Q如在客户化零售、诈骗检和试验传感器数据进行规范的l护{应用中提供q些优势?/span>
6. 更多的数据仓库将部v企业数据中心
数据中心把数据提取处理和数据从企业数据仓库卸载到Hadoop。作Z个核心的中心企业中心Q数据中心要便宜10倍,能够寚w外的处理或者新的应用进行更多的分析?/span>
7. 新的以数据ؓ中心的应用将成ؓ强制性的
利用大数据的能力在2014q成为竞争的武器。更多的公司用大数据和Hadoop准确地针对个人消费者的偏爱q逐赚qq加销售和交叉销售的ZQ更好地~解风险以及减少生和开销成本?/span>
8. 数据成ؓ数据中心的核?/span>
机构从开发者过渡到大数据计划中?/span>IT部门越来越多地担负定义支持多种应用的数据基设施的Q务,把重炚w中在部v、处理和保护一个机构的核心资所需要的基础设施斚w?/span>
9. 搜烦成为非l构化的查询语言
2013q有大量的用于Hadoop的SQL计划?014q将是这U非l构化查询语a成ؓ重点的一q。把搜烦集成到Hadoopؓ查找重要信息的企业用h供一U简单和直观的方法。搜索引擎还是包括推荐引擎在内的许多发现和分析应用的核心?/span>
10. Hadoop获得地?/span>
Hadoopl取代其它IT开支,颠覆企业数据仓库和企业存储。例如,甲骨文的主要营收目标在过ȝ10个季度里?个季度没有实现。Teradata在过ȝ5个季度有4个季度没有实现营收和利润目标?/span>
11. Hadoop仍需要帮助才能成Z应?/span>
更多的机构认识到Apache Hadoop本nq没有准备好在企业应用。Apache Hadoop不是为系l管理或者灾难恢复等l一企业IT程设计的。企业将l箋推进混合的解x案,把架构技术创CApache Hadoop的开源Y件结合在一赗?/span>
当下Q?/span>“大数?/span>”已成?/span>2013q最火的技术词汇之一Q而在q去一q_q个市场的增速和改变也不可谓不大。同Ӟ我们q看CHadoop及其生态系l的使用门槛从顶技术h才到数据U学家的改变。越来越多的企业拥抱大数据技术,q将其运用到生环境中。那么,?/span>2014q大数据的发展趋势又会如何,q里不妨看一下来?/span>CIO?/span>12w:
2014q_大数据止于说的情况将发生改变Qh们将致力于从中获益,所有大数据的炒作也?/span>“烟消云散”。从Gainsight了解刎ͼ大数据本w也成为桌面上的筹码,Gainsight在其IaaSq_中利用大数据分析被其UC?/span>“customer success management”的服务?/span>Gainsight认ؓQ在2014q_每家云应用程序提供商都将会让其后端基设施支持大数据?/span>
2. Hadoop成Z业的关键lg
Hadoop普及,大数据也不会再l止步于云服务?/span>Alteryx认ؓQ?/span>2014q_Hadoop的适用场景超批处理和存储,成Z业数据架构中通用的核心组Ӟq意味着数据分析l成为大数据的首要用例?/span>
3. 企业更加钟情于用户数据
?/span>Gainsight了解刎ͼ各个机构对用户数据充满热情Q企业将充分利用客户与其在线产品或服务交互生的数据Qƈ从中获取价倹{ؓ了实现这点,数据分析能力比BI团队更受重视Qؓ企业提供更多的h倹{?/span>
4. 大数据玩转市场决{?/span>
Alteryx认ؓQ在2014q_大数据将首次正式登陆市场营销Q用于市销的大数据技术将在这一q扮演重要角?/span>——影响着q告、品推销和消费者行为,World Cup?/span>Winter Olympics是其最大的舞台?/span>
5. 量的数据将越数据U学家的意识
lteryx认ؓQ新型的数据分析需求将越人力可ؓQ有些情况下大数据技术将堪比成千上万的数据科学家。该公司预测Q这会毫无疑问的拉低数据科学家薪酬?/span>
6. 物联|将q军|络
IEEE的专业协会认为,2014q_可识别事物将无缝的连接到信息|络Q实现真正意义上?/span>Web of Things?/span>The Web of Things会充分利用Ud讑֤和传感器的监控能力,增强现实世界中的物体?/span>Web副本之间的协同性?/span>
The Web of Things会生成大量与现实世界相关的数据Q因而会需求智能化的解x案在现实世界与相对应的数字世界资源之间赋予连接性、网际互q和相关性?/span>
7. 从大数据到v量数?/span>
数据的体U、速度和类型(volume?/span>velocity?/span>varietyQ在2014q将会l呈指数U增长,因此需要更单的分析工具来驾驭这?/span>“数据z流”?/span>
IEEEUͼ“不止?/span>3?/span>V让大数据成了非常难以制服的老虎Q数据科学家及行业所需单工具也是个NQ许多行业尚无独立提取数据h值的能力。当前已出现的v量数据时代更需求数据管理和分析上新的范式和实践?/span>2014q_q个领域上演群雄争霸?/span>”
8. R语言取代传l?/span>SAS解决Ҏ
Alteryx认ؓQ基?/span>R~程语言的分析将数据U学?/span>“御用”模式Q这U分析在2014q将成ؓLQ将替代传统?/span>SAS?/span>SPSS模式?/span>Alteryx说道Q?/span>“过200万用户和300万的分析师都在寻找更好的解决ҎQ?/span>R恰逢其时?/span>”
9. Hadoop增加实时特?/span>
SQL-on-Hadoop供应?/span>Splice Machine共同创始人兼CEO Monte Zweben指出Q未?/span>1q徏立在Hadoopq_上的交互式应用程序将呈爆发式增长Q其中包?/span>Web应用、移动应用和C交应用Qh们可以与之进行实时的交互?/span>
Zweben说道Q?/span>“2014带来实时大数据应用E序q_Q企业将不会只能像当下一样分析历史数据,你将有能力分?/span>5分钟Q甚x1分钟之内的数据;企业拥有交互式应用E序Q以便实时的制定决策?/span>”
10. Hadoop得C业强化
Splice Machine?/span>Zweben_“毋庸|疑Q?/span>Hadoop是个了不Lq_Q但是仍然有许多工作要做?/span>”
他认为,?/span>2014Q你看?/span>Hadoop向安全、运营管理、资源管理及多站点响应方向发展?/span>Zweben补充道:“你将看到所有的企业U需求,我认些将是未来主要的焦点?/span>”
11. 2014q底Q至有一?/span>NoSQL IPO
大数据及云环境安全解x?/span>Gazzang董事长兼CEO Larry Warnock预测Q在2014Q至有一?/span>Hadoop或?/span>NoSQL供应商会IPOQ这标志着大数据^台已被广泛认可?/span>
Warnock说道Q?/span>“我不会去预测哪家?/span>IPOQ但是至会有一?/span>Hadoop?/span>NoSQL供应?/span>IPO。通过Wikibon了解刎ͼ?/span>2012q_NoSQL软g和服务创造了2.86亿美元的E收Q而在2017q_q个数据被预ؓ18.25ѝ商不断增长的企业需求推动,他们需要灵zR可扩展及负担得L数据理解决ҎQؓ新时代的云及大数据设计?/span>”
12. 一个新的分析堆栈将诞生
Alteryx 预测Q?/span>2014q_出C个新的数据及分析堆栈Qؓ数据库、分析、可视化提供新的解决ҎQ这直接威胁到传统的供应商巨头Q而这些供应商也会在匆忙中推出新的解决Ҏ?/span>
下面q是Ҏ学习Q对现在比较热门的MangoDB和Memcached以及Redis做个单的学习Q?/span>
MangoDB?/span>(document database, 盘?/span>)
a. Z盘的数据库Q只是缓存热Ҏ据在内存中?/span>
b. 文档型的非关pd数据库,
优势是查询功能强大,可存储v量数据?/span>
c. 可替?/span>MySQL{关pd数据?/span>;
在内存够的情况下,d性能不错Q可省去Cacheq一?br />
Memcached?/span>Redis?/span>(key value store, 内存?/span>)
a.内存型数据库Q数据保存在内存中,通过TCP直接存取Q?/span> 或者说是全内存Cache?/span>
优势是速度快,q发高,~点是数据类型有限,查询功能不强Q一般做~存?/span>
b. Key Value Store
c. 全内?br />
Memcached vs Redis
a. 都是Key Vale, Memory Cache
b. Memecahced?multiple-thread; 适合多核CPU的应用?/span>
Redis?single-thread.
如果再多数据l构基础上支持多U程Q加锁可能是个问?/span>Q待深入学习验证Q?/strong>?br /> c. Redish持久化机Ӟ可以定期内存的数据持久化到盘?/span>
d. Redis支持的数据类型更?/span>
e. Redis 具备binlog功能Q将所有操作写入日志,以便redis出现故障Ӟ可通过binlogq行恢复?/span>
f. Redis支持Virtual MemoryQ可限定内存大小Q当数据出阀|通过cMLRU的算法将最不常用的数据保存到硬盘的面问题中?/span>