锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 濡傛灉灝咲ispatcherServlet璇鋒眰鏄犲皠閰嶇疆涓?/"錛屽垯Spring MVC灝嗘崟鑾稺eb瀹瑰櫒鎵鏈夌殑璇鋒眰錛屽寘鎷潤鎬佽祫婧愮殑璇鋒眰錛孲pring MVC浼?xì)灏嗗畠浠綋鎴愪竴涓櫘閫氳姹傚鐞嗭紝鍥犳鎵句笉鍒板搴斿鐞嗗櫒灝嗗鑷撮敊璇?/p> 濡備綍璁㏒pring妗嗘灦鑳藉鎹曡幏鎵鏈塙RL鐨勮姹傦紝鍚屾椂鍙堝皢闈欐佽祫婧愮殑璇鋒眰杞敱Web瀹瑰櫒澶勭悊錛屾槸鍙皢DispatcherServlet鐨勮姹傛槧灝勯厤緗負(fù)"/"鐨勫墠鎻愩傜敱浜嶳EST鏄疭pring3.0鏈閲嶈鐨勫姛鑳戒箣涓錛屾墍浠pring鍥㈤槦寰堢湅閲嶉潤鎬佽祫婧愬鐞嗚繖欏逛換鍔★紝緇欏嚭浜嗗牚縐扮粡鍏哥殑涓ょ瑙e喅鏂規(guī)銆?/p> 鍏堣皟鏁磜eb.xml涓殑DispatcherServlet鐨勯厤緗紝浣垮叾鍙互鎹曡幏鎵鏈夌殑璇鋒眰錛?/p> 閫氳繃涓婇潰url-pattern鐨勯厤緗紝鎵鏈塙RL璇鋒眰閮藉皢琚玈pring MVC鐨凞ispatcherServlet鎴幏銆?/p> 鍦╯pringMVC-servlet.xml涓厤緗?lt;mvc:default-servlet-handler />鍚庯紝浼?xì)鍦⊿pring MVC涓婁笅鏂囦腑瀹氫箟涓涓猳rg.springframework.web.servlet.resource.DefaultServletHttpRequestHandler錛屽畠浼?xì)鍍忎竴涓鏌ュ憳錛屽榪涘叆DispatcherServlet鐨刄RL榪涜絳涙煡錛屽鏋滃彂鐜版槸闈欐佽祫婧愮殑璇鋒眰錛屽氨灝嗚璇鋒眰杞敱Web搴旂敤鏈嶅姟鍣ㄩ粯璁ょ殑Servlet澶勭悊錛屽鏋滀笉鏄潤鎬佽祫婧愮殑璇鋒眰錛屾墠鐢盌ispatcherServlet緇х畫澶勭悊銆?/p> 涓鑸琖eb搴旂敤鏈嶅姟鍣ㄩ粯璁ょ殑Servlet鍚嶇О鏄?default"錛屽洜姝efaultServletHttpRequestHandler鍙互鎵懼埌瀹冦傚鏋滀綘鎵鏈夌殑Web搴旂敤鏈嶅姟鍣ㄧ殑榛樿Servlet鍚嶇О涓嶆槸"default"錛屽垯闇瑕侀氳繃default-servlet-name灞炴ф樉紺烘寚瀹氾細(xì) <mvc:default-servlet-handler />灝嗛潤鎬佽祫婧愮殑澶勭悊緇忕敱Spring MVC妗嗘灦浜ゅ洖Web搴旂敤鏈嶅姟鍣ㄥ鐞嗐傝?lt;mvc:resources />鏇磋繘涓姝ワ紝鐢盨pring MVC妗嗘灦鑷繁澶勭悊闈欐佽祫婧愶紝騫舵坊鍔犱竴浜涙湁鐢ㄧ殑闄勫姞鍊煎姛鑳姐?/p> 棣栧厛錛?lt;mvc:resources />鍏佽闈欐佽祫婧愭斁鍦ㄤ換浣曞湴鏂癸紝濡俉EB-INF鐩綍涓嬨佺被璺緞涓嬬瓑錛屼綘鐢氳嚦鍙互灝咼avaScript絳夐潤鎬佹枃浠舵墦鍒癑AR鍖呬腑銆傞氳繃location灞炴ф寚瀹氶潤鎬佽祫婧愮殑浣嶇疆錛岀敱浜巐ocation灞炴ф槸Resources綾誨瀷錛屽洜姝ゅ彲浠ヤ嬌鐢ㄨ濡?classpath:"絳夌殑璧勬簮鍓嶇紑鎸囧畾璧勬簮浣嶇疆銆備紶緇焀eb瀹瑰櫒鐨勯潤鎬佽祫婧愬彧鑳芥斁鍦╓eb瀹瑰櫒鐨勬牴璺緞涓嬶紝<mvc:resources />瀹屽叏鎵撶牬浜嗚繖涓檺鍒躲?/p> 鍏舵錛?lt;mvc:resources />渚濇嵁褰撳墠钁楀悕鐨凱age Speed銆乊Slow絳夋祻瑙堝櫒浼樺寲鍘熷垯瀵歸潤鎬佽祫婧愭彁渚涗紭鍖栥備綘鍙互閫氳繃cacheSeconds灞炴ф寚瀹氶潤鎬佽祫婧愬湪嫻忚鍣ㄧ鐨勭紦瀛樻椂闂達(dá)紝涓鑸彲灝嗚鏃墮棿璁劇疆涓轟竴騫達(dá)紝浠ュ厖鍒嗗埄鐢ㄦ祻瑙堝櫒绔殑緙撳瓨銆傚湪杈撳嚭闈欐佽祫婧愭椂錛屼細(xì)鏍規(guī)嵁閰嶇疆璁劇疆濂藉搷搴旀姤鏂囧ご鐨凟xpires 鍜?Cache-Control鍊箋?/p> 鍦ㄦ帴鏀跺埌闈欐佽祫婧愮殑鑾峰彇璇鋒眰鏃訛紝浼?xì)妫鏌ヨ姹傚ご鐨凩ast-Modified鍊鹼紝濡傛灉闈欐佽祫婧愭病鏈夊彂鐢熷彉鍖栵紝鍒欑洿鎺ヨ繑鍥?03鐩稿簲鐘舵佺爜錛屾彁紺哄鎴風(fēng)浣跨敤嫻忚鍣ㄧ紦瀛樼殑鏁版嵁錛岃岄潪灝嗛潤鎬佽祫婧愮殑鍐呭杈撳嚭鍒板鎴風(fēng)錛屼互鍏呭垎鑺傜渷甯﹀錛屾彁楂樼▼搴忔ц兘銆?/p> 鍦╯pringMVC-servlet涓坊鍔犲涓嬮厤緗細(xì) 鍋囪W(wǎng)ebRoot榪樻嫢鏈塱mages/bg1.gif 鍙?js/test1.js錛屽垯涔熷彲浠ュ湪緗戦〉涓氳繃 /resources/images/bg1.gif 鍙?/resources/js/test1.js 榪涜寮曠敤銆?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>閰嶇疆錛屽涓嬶細(xì)
<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>
]]>
]]>
]]>
璋冭瘯鍒板噷鏅?鐐瑰錛屼粖澶╂亶鐒跺彂鐜?br />
鐨勬渶鍚?#8220;/"鏄孩鑹茬殑銆?br />
鐒跺悗鐢ㄨ兘閫氳繃鐨勯〉闈㈡瘮杈冿紝鍞竴鐨勫樊寮傛槸錛?br />鑳芥樉紺虹殑欏甸潰
<script type="text/javascript" src="${ctx}/javascript/jquery.min.js"></script>
涓嶈兘鏄劇ず鐨勯〉闈?/span>
鎵浠ラ棶棰樿В鍐充簡
]]>
JSTL TLD: <fmt:message key="{message.key"}/>
浣嗘槸鎴戜滑浼?xì)閬囧堫C互鍚庣殑闂錛?nbsp;
JSTL鐨勬爣絳炬病鏈夎В鏋愭垚鍔?br />
瑙e喅鍔炴硶鏈変簩錛?br />
鍏朵竴錛?nbsp;
鍏朵簩錛?/span>
涓轟粈涔圫pring:message鍙互
鍥犱負(fù)鎴戜滑瀹氫箟浜嗭細(xì)
鎵浠ユ垜浠湁鐞嗙敱鐢ㄥ悓鏍風(fēng)殑鏂瑰紡鍘諱負(fù)fmt瀹氫箟
<context-param>
搴旇闂涓嶅ぇ浜?br />
鍙傝冿細(xì)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
]]>
鍏蜂綋閿欒濡備笅錛?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 ]
涓鑸潗鏂欐槸榪欐牱璇寸殑錛?br />
浣嗘槸緇忚繃瀹炶返鏄榪欐牱鍋氱殑錛?br />
涓孌靛叧浜庡畬鏁寸殑閰嶇疆濡備笅
<!--涓孌靛叧浜?/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 />浠ヤ笂閰嶇疆灝哤eb鏍硅礬寰?/"鍙?qiáng)绫昏矾寰勪?/META-INF/publicResources/ 鐨勭洰褰曟槧灝勪負(fù)/resources璺緞銆傚亣璁網(wǎng)eb鏍硅礬寰勪笅鎷ユ湁images銆乯s榪欎袱涓祫婧愮洰褰?鍦╥mages涓嬮潰鏈塨g.gif鍥劇墖錛屽湪js涓嬮潰鏈塼est.js鏂囦歡錛屽垯鍙互閫氳繃 /resources/images/bg.gif 鍜?/resources/js/test.js 璁塊棶榪欎簩涓潤鎬佽祫婧愩?/span>
]]>
]]>
username:<input type="text" name="userNAME">
password:<input type="text" name="pasWD">
<input type="button" value="submit">
</form>
鏈鍩烘湰鐨勶細(xì)渚濋潬HttpServletRequest.getParameter
public String addUser(HttpServletRequest req) {
String username = req.getParameter("userNAME");
String passwd = req.getParameter("pasWD");
//save logic
return "user/userinfo";
}
鏈鍩烘湰鐨勮交鏉句竴鍙橈紝鍙互鍙樻垚lightweight錛?閫氳繃@RequestParam
public String addUser(@RequestParam(value="userNAME", required=false) String username, @RequestParam(value="pasWD") String password) {
//save logic, directly use
return "user/userinfo";
}
鍏跺疄鍚э紝@RequestParam鏄彲浠ョ渷鎺夌殑錛屽氨鍙樻垚浜?瑕佺偣鏄彉閲忓悕瀛楃殑鍙樺寲
public String addUser(String userNAME, String pasWD) {
//save logic, directly use
return "user/userinfo";
}
榪樻湁涓縐嶈礬寰勬硶@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鏄彲浠ョ渷鎺夌殑錛屽氨鍙樻垚浜?br />
String userNAME;
String pasWD
}
@RequestMapping("/add")
public String addUser(User user) {
//save logic
return "user/userinfo";
}
鎺ヤ笅鏉ュ氨鏄袱縐岮JAX鐩稿叧鐨勶細(xì)
- 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("鍑洪敊錛?+e);
}
});
@RequestMapping("/add")
public String addUser(User user) {
//save logic
return "user/userinfo";
}
- jQuery serializeArray()
//搴忓垪鍖栬〃鍗曞厓绱狅紝榪斿洖json鏁版嵁
var params = $("#userForm").serializeArray();
//涔熷彲浠ユ妸琛ㄥ崟涔嬪鐨勫厓绱犳寜鐓ame value鐨勬牸寮忓瓨榪涙潵
//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("鍑洪敊錛?+e);
}
});
@RequestMapping("/add")
public String addUser(User user) {
//save logic
return "user/userinfo";
}
涓嬮潰鎽樺綍涓孌靛涔?fàn)绗旇?鍑哄
public String register(@PathVariable(value = "userName") String userName) {
ModelAndView mav = new ModelAndView();
return "user/createSuccess";
}
鍦╯pringmvc娉ㄨВ鐨凘RequestMapping("/somepath/{userName}")濡備綍澶勭悊榛樿鍊肩殑鎯呭喌,姣斿鎴戝湪鍙戦佽姹傜殑鏃跺?userName鏈夋椂鍊欐槸娌℃湁鐨勶紝鎵浠ュ鍒頒簡涓嶈兘鍖歸厤榪欎釜action
http://localhost:8080/spc/movie/somepath/灝變笉鑳藉尮閰嶄笂闈㈢殑璇鋒眰:
http://localhost:8080/spc/movie/somepath/tom鑰岃繖涓墠鍙互鍖歸厤銆?nbsp;
@PathVariable 浼?xì)灏唘rl涓殑鍙傛暟瑙f瀽鍒板搴旂殑鏂規(guī)硶鍙傛暟涓婏紝闇瑕佸湪@RequestMapping()鎸囧畾鍖歸厤妯″紡
@RequestMapping("somepath/{userName}")
榪欐椂浣犺闂湴鍧"somepath/Tom"灝辮兘鎶?Tom"瑙f瀽鍒版柟娉曞弬鏁皍serName涓?nbsp;
@RequestParam鐢ㄤ簬灝嗚姹傚弬鏁板尯鏁版嵁鏄犲皠鍒板姛鑳藉鐞嗘柟娉曠殑鍙傛暟涓?nbsp;
public String requestparam2(@RequestParam("username") String username)
璇鋒眰涓寘鍚玼sername鍙傛暟錛堝/requestparam1?username=zhang錛夛紝鍒欒嚜鍔ㄤ紶鍏ャ?nbsp;
鎺ヤ笅鏉ユ垜浠湅涓涓婡RequestParam娉ㄨВ涓昏鏈夊摢浜涘弬鏁幫細(xì)
value錛氬弬鏁板悕瀛楋紝鍗沖叆鍙傜殑璇鋒眰鍙傛暟鍚嶅瓧錛屽username琛ㄧず璇鋒眰鐨勫弬鏁板尯涓殑鍚嶅瓧涓簎sername鐨勫弬鏁扮殑鍊煎皢浼犲叆錛?br />
required錛氭槸鍚﹀繀欏伙紝榛樿鏄痶rue錛岃〃紺鴻姹備腑涓瀹氳鏈夌浉搴旂殑鍙傛暟錛屽惁鍒欏皢鎶?04閿欒鐮侊紱
defaultValue錛氶粯璁ゅ鹼紝琛ㄧず濡傛灉璇鋒眰涓病鏈夊悓鍚嶅弬鏁版椂鐨勯粯璁ゅ鹼紝榛樿鍊煎彲浠ユ槸SpEL琛ㄨ揪寮忥紝濡?#8220;#{systemProperties['java.vm.version']}”銆?nbsp;
public String requestparam4(@RequestParam(value="username",required=false) String username)
琛ㄧず璇鋒眰涓彲浠ユ病鏈夊悕瀛椾負(fù)username鐨勫弬鏁幫紝濡傛灉娌℃湁榛樿涓簄ull錛屾澶勯渶瑕佹敞鎰忓涓嬪嚑鐐癸細(xì)
鍘熷瓙綾誨瀷錛氬繀欏繪湁鍊鹼紝鍚﹀垯鎶涘嚭寮傚父錛屽鏋滃厑璁哥┖鍊艱浣跨敤鍖呰綾諱唬鏇褲?nbsp;
Boolean鍖呰綾誨瀷綾誨瀷錛氶粯璁oolean.FALSE錛屽叾浠栧紩鐢ㄧ被鍨嬮粯璁や負(fù)null銆?nbsp;
public String requestparam5(@RequestParam(value="username", required=true, defaultValue="zhang") String username)
琛ㄧず濡傛灉璇鋒眰涓病鏈夊悕瀛椾負(fù)username鐨勫弬鏁幫紝榛樿鍊間負(fù)“zhang”銆?nbsp;
濡傛灉璇鋒眰涓湁澶氫釜鍚屽悕鐨勫簲璇ュ浣曟帴鏀跺憿錛熷緇欑敤鎴鋒巿鏉冩椂錛屽彲鑳芥巿浜堝涓潈闄愶紝棣栧厛鐪嬩笅濡備笅浠g爜錛?nbsp;
public String requestparam7(@RequestParam(value="role") String roleList)濡傛灉璇鋒眰鍙傛暟綾諱技浜巙rl?role=admin&rule=user錛屽垯瀹為檯roleList鍙傛暟鍏ュ弬鐨勬暟鎹負(fù)“admin,user”錛屽嵆澶氫釜鏁版嵁涔嬮棿浣跨敤“錛?#8221;鍒嗗壊錛涙垜浠簲璇ヤ嬌鐢ㄥ涓嬫柟寮忔潵鎺ユ敹澶氫釜璇鋒眰鍙傛暟錛?nbsp;
public String requestparam7(@RequestParam(value="role") String[] roleList)
鎴?nbsp;
public String requestparam8(@RequestParam(value="list") List<String> list)
]]>
鍐嶆鎵ц姝ゅ懡浠ゅ悗錛岀▼搴忓嚭鐜板紓甯革細(xì)Error parsing Mapper XML. Cause: java.lang.IllegalArgumentException: Result Maps collection already contains value
閫愪釜鏂囦歡鎺掓煡錛岀粓浜庡湪xxMapper.xml鍙戠幇浜嗛棶棰橈細(xì)
]]>
楂樺害鎬鐤戞槸JQuery鐨刡ug
褰撴垜鍦╦sp/html寮澶村鍔犱簡榪欎箞涓鍙?br />
鍒嗘瀽涓嬫潵鍘熷洜鏄繖鏍風(fēng)殑錛?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.
澶ф暟鎹椂浠o紝鏁版嵁榪囧墿錛屼漢鎵嶇煭緙猴紝瓚婃潵瓚婂鐨処T涓撲笟浜哄+甯屾湜鑳藉榪涘叆鍏呮弧鏈洪亣鐨勫ぇ鏁版嵁棰嗗煙錛屼絾鏄紝鍒板簳鍝簺鍏蜂綋鐨勫ぇ鏁版嵁涓撲笟宀椾綅鍜屼漢鎵嶆渶涓哄悆棣欏憿錛熶漢鍔涜祫婧愬叕鍙窴force榪戞棩鍙戝竷浜嗕竴浠芥姤鍛婃牴鎹?a style="font-size: 1em; outline: 0px; padding: 0px; margin: 0px; border: 0px; text-decoration: none; vertical-align: baseline; color: #004276;">IT鑱屼笟钖叕姘村鉤
緇欏嚭浜?014騫存渶鐑棬鐨勫崄澶уぇ鏁版嵁宸ヤ綔鑱屼綅錛堝勾钖級(jí)錛?/p>涓銆丒TL寮鍙戣咃紙11-13涓囩編鍏冿級(jí)
闅忕潃鏁版嵁縐嶇被鐨勪笉鏂鍔狅紝浼佷笟瀵規(guī)暟鎹暣鍚堜笓涓氫漢鎵嶇殑闇姹傝秺鏉ヨ秺鏃虹洓銆侲TL寮鍙戣呬笌涓嶅悓鐨勬暟鎹潵婧愬拰緇勭粐鎵撲氦閬擄紝浠庝笉鍚岀殑婧愬ご鎶藉彇鏁版嵁錛岃漿鎹㈠茍瀵煎叆鏁版嵁浠撳簱浠ユ弧瓚充紒涓氱殑闇瑕併?/span>
ETL杞歡琛屼笟鐩稿鎴愮啛錛岀浉鍏沖矖浣嶇殑宸ヤ綔鐢熷懡鍛ㄦ湡姣旇緝闀匡紝閫氬父鐢卞唴閮ㄥ憳宸ュ拰澶栧寘鍚堝悓鍟嗕箣闂撮氬姏瀹屾垚銆侲TL浜烘墠鍦ㄥぇ鏁版嵁鏃朵唬鐐欐墜鍙儹鐨勫師鍥犱箣涓鏄細(xì)鍦ㄤ紒涓氬ぇ鏁版嵁搴旂敤鐨勬棭鏈熼樁孌碉紝Hadoop鍙槸絀蜂漢鐨凟TL銆?br />
浜屻丠adoop寮鍙戣咃紙15-17.5涓囩編鍏冿級(jí)
Hadoop鏄熀浜嶫ava鐨勫紑婧愭鏋訛紝闅忕潃鏁版嵁闆嗚妯′笉鏂澶э紝鑰屼紶緇烞I鐨勬暟鎹鐞嗘垚鏈繃楂橈紝浼佷笟瀵?/span>Hadoop鍙?qiáng)鐩稿叧鐨勫粔洵h(huán)鏁版嵁澶勭悊鎶鏈Hive銆丠Base銆丮apReduce銆丳ig絳夌殑闇姹傚皢鎸佺畫澧為暱銆傚浠婂叿澶嘓adoop妗嗘灦緇忛獙鐨勬妧鏈漢鍛樻槸鏈鎶㈡墜鐨勫ぇ鏁版嵁浜烘墠銆?br />
涓夈佸ぇ鏁版嵁鍙鍖栧伐鍏峰紑鍙戣咃紙15-17.5涓囩編鍏冿級(jí)
嫻烽噺鏁版嵁鐨勫垎鏋愭槸涓ぇ鎸戞垬錛岃?/span>鏂板瀷鏁版嵁鍙鍖栧伐鍏峰Spotifre錛孮likview鍜孴ableau鍙互鐩磋楂樻晥鍦板睍紺烘暟鎹?/strong>銆傝繃鍘伙紝鏁版嵁鍙鍖栧睘浜庡晢涓氭櫤鑳藉紑鍙戣呯被鍒紝浣嗘槸闅忕潃Hadoop鐨勫礇璧鳳紝鏁版嵁鍙鍖栧凡緇忔垚浜嗕竴欏圭嫭绔嬬殑涓撲笟鎶鑳藉拰宀椾綅銆?br />
鍥涖佹暟鎹瀛﹀錛?2-14涓囩編鍏冿級(jí)
榪囧幓涔熺О鏁版嵁鏋舵瀯甯堬紝鏁版嵁縐戝瀹舵槸涓涓叏鏂扮殑宸ョ錛岃兘澶熷皢浼佷笟鐨勬暟鎹拰鎶鏈漿鍖栦負(fù)浼佷笟鐨勫晢涓氫環(huán)鍊箋傛暟鎹瀛﹀棣栧厛搴斿綋鍏峰浼樼鐨勬矡閫氭妧鑳斤紝鑳藉鍚屾椂灝嗘暟鎹垎鏋愮粨鏋滆В閲婄粰IT閮ㄩ棬鍜屼笟鍔¢儴闂ㄩ瀵箋?/span>
鎬葷殑鏉ヨ錛屾暟鎹瀛﹀鏄垎鏋愬笀銆佽壓鏈鐨勫悎浣擄紝闇瑕佸叿澶囧縐嶄氦鍙夌瀛﹀拰鍟嗕笟鎶鑳姐?br />
浜斻丱LAP寮鍙戣咃紙9.8-11.6涓囩編鍏冿級(jí)
OLAP鍦ㄧ嚎鑱旀満鍒嗘瀽寮鍙戣咃紝璐熻矗灝嗘暟鎹粠鍏崇郴鍨嬫垨闈炲叧緋誨瀷鏁版嵁婧愪腑鎶藉彇鍑烘潵寤虹珛妯″瀷錛岀劧鍚庡垱寤烘暟鎹闂殑鐢ㄦ埛鐣岄潰錛屾彁渚涢珮鎬ц兘鐨勯瀹氫箟鏌ヨ鍔熻兘銆?/strong>
鍏佹暟鎹粨搴撲竴浣撴満涓撳錛?.8-12.4涓囩編鍏冿級(jí)
姝ょ被涓撳鐔熸?zhèn)塗eradata銆丯eteeza鍜孍xadata絳夊叕鍙哥殑澶ф暟鎹竴浣撴満銆傝兘澶熷湪榪欎簺涓浣撴満涓婂畬鎴愭暟鎹泦鎴愩佺鐞嗗拰鎬ц兘浼樺寲絳夊伐浣溿?br />
涓冦侀嫻嬪垎鏋愬紑鍙戣咃紙10-13涓囩編鍏冿級(jí)
钀ラ攢閮ㄩ棬緇忓父浣跨敤棰勬祴鍒嗘瀽棰勬祴鐢ㄦ埛琛屼負(fù)鎴栭攣瀹氱洰鏍囩敤鎴楓傞嫻嬪垎鏋愬紑鍙戣呮湁浜涘満鏅湅涓婃湁鏈変簺綾諱技鏁版嵁縐戝瀹訛紝鍗沖湪浼佷笟鍘嗗彶鏁版嵁鐨勫熀紜涓婇氳繃鍋囪鏉ユ祴璇曢槇鍊煎茍棰勬祴鏈潵鐨勮〃鐜般?br />
鍏佷俊鎭灦鏋勫笀錛?1.4-13.5涓囩編鍏冿級(jí)
澶ф暟鎹噸鏂版縺鍙戜簡涓繪暟鎹鐞嗙殑鐑疆銆傚厖鍒嗗紑鍙戝埄鐢ㄤ紒涓氭暟鎹茍鏀寔鍐崇瓥闇瑕侀潪甯鎬笓涓氱殑鎶鑳姐備俊鎭灦鏋勫笀蹇呴』浜嗚В濡備綍瀹氫箟鍜屽瓨。鍏抽敭鍏冪礌锛尲嫯淇濅互鏈鏈夋晥鐨勬柟寮忚繘琛屾暟鎹鐞嗗拰鍒╃敤銆備俊鎭灦鏋勫笀鐨勫叧閿妧鑳藉寘鎷富鏁版嵁綆$悊銆佷笟鍔$煡璇嗗拰鏁版嵁寤烘ā絳夈?/span>
“澶ф暟鎹?/span>”鏄湪2013騫磋鐢ㄦ互浜嗙殑璇嶆眹錛屼絾瀹為檯涓婏紝鐢變簬鏁版嵁閲忕己澶便佸ぇ鏁版嵁娓呮礂鍜屽垎鏋愯兘鍔涗笉瓚籌紝浠ュ強(qiáng)鏁版嵁鍙鍖栫摱棰堢瓑闂錛?/span>“澶ф暟鎹?/span>”涓鐩存湭鑳借繜榪熻惤鍦般備即闅忕潃鍩虹璁炬柦鐨勫彂灞曪紝鎰忓懗鐫澶ф暟鎹殑鍙戝睍鍙堣蛋鍒版柊鐨勪竴涓柊鐨勪復(fù)鐣岀偣銆傜郴緇熻蔣浠朵緵搴斿晢Software AG鐨?/span>Gagan Mehra錛屽湪Venturebeat緗戠珯闃愯堪浜嗕粬瀵逛簬澶ф暟鎹帴涓嬫潵鍙戝睍鐨勮璇嗭紝浠栬涓烘洿蹇湴鏁版嵁澶勭悊銆佹洿鍙潬鐨勬暟鎹川閲忥紝浠ュ強(qiáng)鏇村姞緇嗗垎鐨勫簲鐢ㄥ競鍦猴紝鏄ぇ鏁版嵁2.0鏃朵唬鐨勯噸瑕佺壒寰併?br />
鏇村揩鐨勬暟鎹鐞嗛熷害
鐢變簬鏁版嵁閲忔寚鏁板瀷澧為暱錛屼嬌寰?/span>瀵逛簬鏁版嵁鐨勫揩閫熷垎鏋愮殑闇瑕?/strong>宸茬粡鍙樺緱姣斾互寰浠諱綍鏃跺欓兘瑕佽揩鍒囥傚嚑涔庢瘡瀹跺ぇ鏁版嵁鍘傚晢錛岄兘鎯寵鍏滃敭姣斿埆瀹跺鐞嗛熷害鏇村揩鐨勪駭鍝併?/span>Hadoop鍙戝竷鐨勬柊鍝?/span>Hadoop 2.0 / YARN錛屽嚑涔庤兘瀹炴椂鍒嗘瀽鏁版嵁銆傝屼笅涓浠eぇ鏁版嵁鐨勮綆楃壍寮曟鏋?/span>Apache Spark錛屽畠鐨勯熷害姣?/span>Hadoop蹇?/span>100鍊嶃?/span>紜呰胺椋庨櫓鎶曡祫鏈烘瀯Andreessen Horowitz錛屽凡緇忎互1400涓囩編鍏冪殑浠鋒牸錛岄鎶曚簡涓瀹朵互Apache Spark涓轟笟鍔℃牳蹇冪殑鍒濆垱浼佷笟Databricks銆備笉涔呭墠錛?/span>浜氶┈閫婁篃涓婄嚎浜嗗疄鏃舵祦鏁版嵁鏈嶅姟Kinesis錛屾潵甯姪娌℃湁鏁版嵁澶勭悊鑳藉姏鐨勫叕鍙歌В鍐寵繖涓闂銆?br />
璁稿鍒嗘瀽渚涘簲鍟嗛兘宸茬粡璁よ瘑鍒頒簡鏁版嵁澶勭悊閫熷害鐨勯噸瑕佹?/strong>錛屽茍寤虹珛浜嗚兘澶熸瘡縐掑鐞?/span>TB鏁版嵁鐨勪駭鍝併?/span>浼犳劅鍣ㄦ暟鎹垎鏋愩佺墿鑱旂綉鍦ㄥ伐涓氬拰娑堣垂綰у競鍦哄揩閫熷彂灞曠殑鍔垮ご錛岄┍鍔ㄤ簡榪欐鍙橀潻銆?/strong>姣斿涓瀹朵紒涓氱殑浼犳劅鍣紝鑳藉姣忕浜х敓鍑烘暟鐧炬鐨勪簨浠訛紝瀹炴椂澶勭悊榪欎簺鏁版嵁闅懼害寰堥珮銆傜壒鍒槸褰撳疄鏃跺鐞嗙殑浼犳劅鍣ㄦ暟鎹紝嬋澧炲埌涓澶?/span>5TB鐨勬椂鍊欙紝閫熷害錛屽氨鎴愪簡灝や負(fù)鍏抽敭鐨勬寚鏍囥?/span>
鍚屾椂錛屽敖綆℃暟鎹瓨鍌ㄦ垚鏈凡緇忕瘡騫翠笅闄嶏紝浣嗘暟鎹瓨鍌ㄧ殑璐圭敤榪樻槸涓嶅皬鐨勪竴絎旀敮鍑恒傞儴鍒嗗晢瀹剁浉姣斿瓨鍌ㄥ畬鏁存暟鎹祦鑰岃█錛屾洿鍊懼悜浜庝繚瀛樿繃婊ゆ帀鍣煶鐨勬暟鎹?br />
鏅鴻兘娓呮礂“鍨冨溇鏁版嵁”
鍦ㄦ湰灝遍毦浠ヨ鏁扮殑鏁版嵁閲忕戶緇互鎸囨暟妯″瀷嬋澧炴椂錛屽浜庢暟鎹川閲忕殑寮哄寲錛屼究鎽嗕笂浜嗚澶氭暟鎹緵搴斿晢鐨勮紼嬨?/span>鎹㈠彞璇濊錛屽湪搴炲ぇ鏁版嵁闈㈠墠錛屽嵆浣胯綆楁満鑳藉楂樻晥鐨勫鐞嗗畠浠紝浣嗗ぇ閲忔棤鐢ㄧ殑“鍨冨溇”鏁版嵁錛屽彧浼?xì)缁櫨p葷粺甯︽潵璐熸媴錛屽茍澧炴坊瀛樺偍銆佷富鏈虹瓑璁懼鎴愭湰銆?/span>榪欏氨闇瑕佹暟鎹鐞嗚繃紼嬩腑錛屾牴鎹壒瀹氱殑瑙勫垯鍜屽弬鏁幫紝瀵規(guī)秾榪涙暟鎹祦榪涜“娓呮礂”鍜屽垎鏋愶紝騫惰嚜鍔ㄥ喅絳栬鍘誨鐞嗗摢浜涙暟鎹紝榪欎竴鍒囦笉鍐嶉渶瑕佷漢宸ュ幓騫查銆?/span>
鍦ㄨ繖鏍風(fēng)殑鐜涓嬶紝濡傛灉閫夋嫨浜嗕竴涓潖鐨勬暟鎹紝灝變細(xì)鍍忕梾姣掍竴鏍鳳紝鍙兘寮曞彂榪炵畫鐨勯敊璇喅絳栵紝鐢氳嚦璁╀紒涓氳挋鍙楃粡嫻庢崯澶便?/span>涓涓緥瀛愬氨鏄埄鐢ㄧ畻娉曞幓榪涜鑲$エ浜ゆ槗錛屼互姣璁℃暟鑲$エ甯傚満涓紝浠諱綍涓鐐瑰皬鐨勫樊閿欙紝閮芥湁鍙兘寮曞彂鏃犳硶宸ㄥぇ鐨勬崯澶便?/strong>
鎵浠ワ紝鏁版嵁璐ㄩ噺宸叉垚涓烘湇鍔$駭鍒崗璁紙service level agreements錛夋渶閲嶈鐨勫弬鏁頒箣涓銆傛棤娉曞睆钄藉姡璐ㄧ殑鏁版嵁鐨勪緵搴斿晢錛屼細(xì)鍥犳琚垪鍏ヨ涓氱殑榛戝悕鍗曪紝浠ュ強(qiáng)闈復(fù)涓ラ噸鐨勭粡嫻庡緗氥?/span>B2B琛屼笟涓烘棭鏈熸暟鎹川閲忕殑鍏ュ眬鑰咃紝浠栦滑闈炲父閲嶈鏁版嵁鐨勮川閲忥紝鏉ヤ繚鎸佸晢涓氳繍浣滄椂鐨勭ǔ瀹氭с傜敋鑷籌紝璁稿浼佷笟璁″垝涓烘暟鎹川閲忛儴緗插疄鏃剁殑璀﹀憡緋葷粺錛岃繖浜涜鍛婁細(xì)琚彂閫佷簬璐熻矗鐩稿簲闂鐨勪笓鍛橈紝鐢變粬浠彁渚涢棶棰樼殑瑙e喅鏂規(guī)銆?br />
鏈哄櫒瀛︿範(fàn)鏄彟涓欏歸渶瑕佷繚璇佹暟鎹川閲忕殑棰嗗煙銆傛満鍣ㄥ涔?fàn)绯痪l熼儴緗插湪涓涓棴鐜殑鐢熸佷腑錛岄氳繃妯″紡鍒嗘瀽涓庡叾浠栫殑鏁版嵁鍒嗘瀽鎶鏈紝緇嗗寲鍘熸潵鐨勬暟鎹川閲忚鍒欍傝岄珮璐ㄩ噺鐨勬暟鎹紝鑳藉淇濊瘉鏈哄櫒榪涜姝g‘鐨勮涓烘ā寮忓垎鏋愩?/span>
瓚婃潵瓚婂鐨勫熀紜搴旂敤
澶ф暟鎹甫鏉ョ殑鍙橀潻錛屼嬌寰楁瘡涓涓漢閮芥兂瑕佸埄鐢ㄥ畠錛屼絾鎶鏈笂闂ㄦ鍙堣璁稿浜轟笉寰楀凡鍙兘鍏呭綋涓涓湅瀹€傝屽簲鐢ㄥ皢鏈夊姪浜庝漢浠幓鍏嬫湇榪欎竴鍥伴毦銆傚湪鎺ヤ笅鏉ョ殑鍑犲勾涓紝鎴戜滑灝嗕細(xì)鐪嬪埌鎴愬崈涓婁竾鐨勮В鍐?/span>鏌愪竴鍨傜洿棰嗗煙鐨勪笓涓氬簲鐢?/strong>錛屼互搴斿鏉ヨ嚜鍚勮鍚勪笟鐨勫ぇ鏁版嵁鎸戞垬銆?br />
鐩墠錛屽凡緇忓皬鏈夋垚灝辯殑鏁版嵁鍒嗘瀽鍏徃鍖呮嫭eHarmony銆?/span> Roambi銆?/span> Climate Corporation絳夌瓑銆傛湭鏉ワ紝鐢氳嚦璁稿灝忎紒涓氾紝鏃笉鐢ㄤ緷璧栫壒瀹氬熀紜璁懼錛屼篃涓嶈闆囦劍涓撲笟鐨勬暟鎹瀛﹀錛屽氨鑳藉彈鐩婁簬瀵瑰ぇ鏁版嵁鍒嗘瀽鍒╃敤銆?br />
姣斿錛屼竴浜涘簲鐢ㄥ皢浠庡悇縐嶆笭閬擄紝鏀墮泦鍏寵仈鐨勫鎴鋒暟鎹紝浠ユ洿濂藉湴浜嗚В瀹㈡埛鐨勯渶姹傘備粠鑰屼紒涓氳兘澶熶負(fù)鐗瑰畾鐨勭洰鏍囧鎴鳳紝鎻愪緵鐗瑰畾闇姹傜殑浜у搧錛屾洿鏈夐拡瀵規(guī)у湴璧氬埌閽便傚綋榪欎簺搴旂敤璧拌繘浜轟滑鏃ュ父鐨勫悆鍠濈帺涔愩佸尰鐤椾繚鍋ョ瓑棰嗗煙錛岀敓媧諱篃浼?xì)鍥犳鑰屾洿緹庡ソ銆?/span>
銆?/span>CNW.com.cn鐙璇戠ǹ銆?/span>鍦ㄨ繃鍘諱笁騫達(dá)紝Hadoop鐢熸佺郴緇熷凡緇忓ぇ鑼冨洿鎵╁睍錛屽緢澶氫富瑕両T渚涘簲鍟嗛兘鎺ㄥ嚭浜咹adoop榪炴帴鍣紝浠ュ寮篐adoop鐨勯《灞傛灦鏋勬垨鏄緵搴斿晢鑷繁浣跨敤鐨凥adoop鍙戣鐗堛傞壌浜嶩adoop鐨勯儴緗茬巼鍛堟寚鏁扮駭鐨勫闀匡紝浠ュ強(qiáng)鍏剁敓鎬佺郴緇熶笉鏂湴娣卞叆鑰屽箍娉涘湴鍙戝睍錛屾垜浠緢鎯崇煡閬揌adoop鐨勫礇璧鋒槸鍚︿細(xì)瀵艱嚧浼犵粺鏁版嵁浠撳簱瑙e喅鏂規(guī)鐨勭粓緇撳憿銆?/span>
鎴戜滑涔熷彲浠ュ皢榪欎釜闂鏀懼埌涓涓洿澶х殑鐜涓幓璁ㄨ錛氬湪浣曠紼嬪害涓婏紝澶ф暟鎹細(xì)鏀瑰彉浼犵粺鏁版嵁鍒嗘瀽鐨勭幆澧?/span>?
鏁版嵁浠撳簱鏄妧鏈拰杞歡濂椾歡錛屽畠鑳藉浠庢搷浣滅郴緇熸敹闆嗘暟鎹紝騫跺皢榪欎簺鏁版嵁鏁村悎錛屽茍緇熶竴鍒頒腑澶暟鎹簱涓紝鐒跺悗瀵規(guī)暟鎹華琛ㄧ洏涓婃寚鏍囪繘琛屽垎鏋愩佸彲瑙嗗寲鍜岃拷韙叧閿ц兘澶勭悊銆?/span>
鏁版嵁浠撳簱鍜?/span>Hadoop涔嬮棿鐨勪富瑕佸尯鍒槸錛氭暟鎹粨搴撻氬父閮ㄧ講鍦ㄥ崟涓叧緋繪暟鎹簱涓紝鑰岃繖涓暟鎹簱鍒欒搗鍒頒腑澶瓨鍌ㄧ殑浣滅敤銆傜浉姣斾箣涓嬶紝Hadoop鍙?qiáng)鍏禜adoop鏂囦歡緋葷粺鏄法澶氫釜鏈哄櫒錛屽茍鐢ㄦ潵澶勭悊嫻烽噺鏁版嵁鐨勶紝鑰岃繖鏄換浣曞崟鍙版満鍣ㄩ兘杈句笉鍒扮殑鑳藉姏銆?/span>
姝ゅ錛?/span>Hadoop鐢熸佺郴緇熷寘鎷瀯寤哄湪Hadoop鏍稿績涔嬩笂鐨勬暟鎹粨搴撳眰/鏈嶅姟錛岃孒adoop涓婂眰鏈嶅姟鍖呮嫭SQL(Presto)銆丼QL-Like(Hive)鍜孨oSQL(Hbase)綾誨瀷鐨勬暟鎹瓨鍌?/span>銆傜浉姣斾箣涓嬶紝鍦ㄨ繃鍘葷殑鍗佸勾涓紝澶у瀷鏁版嵁浠撳簱杞Щ鍒頒嬌鐢ㄨ嚜瀹氫箟澶氬鐞嗗櫒璁懼鏉ユ墿灞曟暟鎹噺錛屽儚Netezza(琚獻(xiàn)BM鏀惰喘)鍜孴eradata鎵鎻愪緵鐨勬暟鎹粨搴撱傜劧鑰岋紝榪欎簺璁懼閮介潪甯告槀璐碉紝澶у鏁頒腑灝忎紒涓氶兘璐熸媴涓嶈搗銆?/span>
鍦ㄨ繖縐嶈儗鏅笅錛屾垜浠緢鑷劧鍦拌闂細(xì)Hadoop鏄惁鏄暟鎹粨搴撶殑緇堢粨鑰?
涓轟簡鍥炵瓟榪欎釜闂錛屾垜浠渶瑕佸皢鏁版嵁浠撳簱鎶鏈笌鏁版嵁浠撳簱閮ㄧ講鍒嗗紑鏉ョ湅銆?/span>Hadoop(鍜孨oSQL鏁版嵁搴撶殑鍑虹幇)灝嗛紺虹潃鏁版嵁浠撳簱璁懼鍜屼紶緇熸暟鎹粨搴撳崟涓鏁版嵁搴撻儴緗茬殑娑堜骸銆?/span>
鑰屽湪榪欐柟闈㈠氨鏈夎繃瀹炰緥銆?/span>Hadoop渚涘簲鍟咰loudera灝嗗叾騫沖彴浣滀負(fù)“浼佷笟鏁版嵁鏋㈢航”錛岃繖鍦ㄦ湰璐ㄤ笂灝嗕紶緇熸暟鎹鐞嗚В鍐蟲柟妗堢殑綰沖叆浜嗛渶姹傘俁eadWrite.com鍦ㄦ渶榪戝彂琛ㄧ殑涓綃囬涓?#8220;涓轟粈涔堜笓鏈夊ぇ鏁版嵁鎶鏈病鏈夊笇鏈涗笌Hadoop绔炰簤”鐨勬枃绔犱腑涔熷彂琛ㄤ簡綾諱技鐨勭湅娉曘傚悓鏍峰湴錛屾渶榪戜竴綃囧崕灝?dāng)琛楁棩鎶ユ枃绔犳弿杩颁簡Hadoop濡備綍鎸戞垬鐢查鏂囧拰Teradata銆?/span>
Hadoop鎴朜oSQL鐢熸佺郴緇熶粛灝嗙戶緇彂灞曘傚緢澶氬ぇ鏁版嵁鐜寮濮嬮夋嫨NoSQL銆丼QL鐢氳嚦鏄疦ewSQL鏁版嵁浠撳簱鐨勬販鍚堟柟娉曘傛澶栵紝MapReduce騫惰澶勭悊寮曟搸涔熸湁鍙樺寲鍜屾敼榪涳紝渚嬪Apache鐨凷park欏圭洰銆傝櫧鐒惰繖涓晠浜嬭繕榪滆繙娌℃湁緇撴潫錛?strong>浣嗗彲浠ヨ錛屼紶緇熺殑鍗曚竴鏈嶅姟鍣ㄥ叧緋誨瀷鏁版嵁搴撴垨鏁版嵁搴撹澶囧茍涓嶆槸澶ф暟鎹垨鏁版嵁浠撳偍鐨勬湭鏉?/strong>銆?/span>
鍙︿竴鏂歸潰錛屾暟鎹粨搴撴妧鏈?/span>(鍖呮嫭鎻愬彇—杞崲—鍜?#8212;鍔犺澆銆佷笁緇村緩妯″拰鍟嗕笟鏅鴻兘)灝嗕細(xì)搴旂敤鍒版柊鐨凥adoop/NoSQL鐜銆傛澶栵紝榪欎簺鎶鏈篃灝嗗彉韜潵鏀寔鏇村鐨勬販鍚堢幆澧冦備富瑕佸師鍒欐槸鍥犱負(fù)騫朵笉鏄墍鏈夋暟鎹兘鏄鉤絳夌殑錛屾墍浠T緇忕悊浠簲璇ラ夋嫨鏁版嵁瀛樺偍鍜岃闂満鍒舵潵閫傚簲鏁版嵁鐨勪嬌鐢ㄣ傛販鍚堢幆澧冨皢鍖呮嫭鍏抽敭浠峰煎瓨鍌ㄣ佸叧緋誨瀷鏁版嵁搴撱佸浘褰㈠瓨鍌ㄣ佹枃妗e瓨鍌ㄣ佹煴鐘跺瓨鍌ㄣ乆ML鏁版嵁搴撱佸厓鏁版嵁鐩綍絳夌瓑銆?/span>
姝e浣犳墍鐪嬪埌鐨勶紝榪欏茍涓嶆槸涓涓畝鍗曠殑闂錛屼篃涓嶅彲鑳界畝鍗曞湴寰楀嚭涓涓瓟妗堛傜劧鑰岋紝涓鑸儏鍐典笅錛岃櫧鐒跺ぇ鏁版嵁鍦ㄦ湭鏉ヤ簲騫村唴灝嗕細(xì)鏀瑰彉鏁版嵁浠撳簱鐨勯儴緗詫紝浣嗗畠涓嶄細(xì)瀵艱嚧鏁版嵁浠撳簱鐨勬蹇靛拰鍋氭硶榪囨椂銆?/span>
瀵逛簬鍚戞暟鎹粨搴撴姇鍏ュ法璧勭殑鑱旈偊鏀垮簻榪欐剰鍛崇潃浠涔堝憿?
棣栧厛錛屽綋鐜版湁鏁版嵁浠撳簱鐨勫閲忎笉澶熸椂錛屾暟鎹粨搴撳皢琚漿縐誨埌鍩轟簬Hadoop銆佸鏈哄櫒鎴栦簯鎵樼鐨勮В鍐蟲柟妗堛傚叾嬈★紝浼佷笟騫朵笉浼?xì)閫夋嫨“鏀句箣鍥涙搗鑰岀殕鍑?#8221;鐨勫仛娉曪紝鑰屼細(xì)灝嗙洰鍏夎漿鍚戦傚悎鍏朵紒涓氬唴閮ㄦ暟鎹閲忕殑娣峰悎瀛樺偍鏂規(guī)硶銆傦紙閭歸摦緙栬瘧錛?/span>
甯傚満鐮旂┒鍏徃IDC棰勬祴錛?015騫村ぇ鏁版嵁甯傚満瑙勬ā灝嗕粠2010騫寸殑32浜跨編鍏冨闀垮埌170浜跨編鍏冿紝澶嶅悎騫村闀跨巼涓?0%銆傚ぇ鏁版嵁鏄竴涓簽澶х殑鏂扮殑棰嗗煙錛屽叾涓殑鏁版嵁闆嗗彲浠ュ闀跨殑闈炲父搴炲ぇ錛屼互鑷充簬浣跨敤浼犵粺鐨勬暟鎹簱綆$悊宸ュ叿涔熷緢闅懼鐞嗐傚鐞嗚繖縐嶉棶棰樻墍闇瑕佺殑鏂板伐鍏楓佹鏋躲佺‖浠躲佽蔣浠跺拰鏈嶅姟鏄竴涓法澶х殑甯傚満鏈轟細(xì)銆傞殢鐫浼佷笟鐢ㄦ埛瓚婃潵瓚婂鍦伴渶瑕佽繛緇笉鏂湴璁塊棶鏁版嵁錛屽ソ鐨勫ぇ鏁版嵁宸ュ叿闆嗗皢浠ユ渶浣庣殑鎴愭湰鍜屾帴榪戝疄鏃剁殑閫熷害鎻愪緵鍙幾緙╃殑銆侀珮鎬ц兘鐨勫垎鏋愩傞氳繃鍒嗘瀽榪欑鏁版嵁錛屼紒涓氬彲寰楀埌鏇村ぇ鐨勬櫤鑳戒互鍙?qiáng)绔炰簤浼樺娧潃備笅闈㈡槸Hadoop鍜屽ぇ鏁版嵁涓撲笟鍘傚晢MapR鍏卞悓鍒涘浜哄拰棣栧腑鎵ц瀹樼害緲?#183;鏂界綏寰鳳紙John Schroeder錛夊2014澶ф暟鎹競鍦虹殑棰勬祴銆?/span>
1. SQL鎷ユ湁澶ф暟鎹殑鏈澶ф綔鍔?/span>
鐢ㄤ簬 Hadoop錛堝垎甯冨紡璁$畻錛夌殑SQL鐨勫彂灞曡兘澶熻鍟嗕笟鍒嗘瀽甯堝埄鐢ㄨ嚜宸辯殑鎶鑳藉拰閫夋嫨鐨凷QL宸ュ叿鎵ц澶ф暟鎹」鐩傚紑鍙戜漢鍛樺彲浠ラ夋嫨Hive銆丏rill鍜?Impala絳堿pache欏圭洰錛屼互鍙?qiáng)閫夋嫨Hadapt銆丠AWQ鍜孲plice Machine絳夊叕鍙哥殑涓撴湁鎶鏈?/span>
2. 灝界濡傛 SQL榪橀潰涓存寫鎴?/span>
SQL闇瑕佹暟鎹粨鏋勩傝岄泦涓殑緇撴瀯鍖栨暟鎹彲寮曡搗寤惰繜騫朵笖闇瑕佷漢宸ョ鐞嗐係QL榪橀檺鍒跺垎鏋愮被鍨嬨傝繃鍒嗗己璋僑QL灝嗗歡榪熸満鏋勫叏闈㈠埄鐢ㄥ叾鏁版嵁浠峰肩殑鍔姏鍜屽歡榪熷弽搴斻?/span>
3. 韜喚璇嗗埆鏄富瑕佺殑鏁版嵁瀹夊叏闂
闅忕潃Hadoop錛堝垎甯冨紡璁$畻錛変腑鎻愪緵鐨勬帴鍏ユ帶鍒惰兘鍔涚殑鐚涚儓鏀誨嚮錛屾満鏋勮繀閫熻璇嗗埌綰胯礬綰ц韓浠借瘑鍒槸蹇呰鐨勫熀紜銆傛病鏈夊厖鍒嗙殑韜喚璇嗗埆錛屼換浣曟洿楂樼駭鐨勬帶鍒墮兘寰堝鏄撹緇曡繃錛屽Θ紕嶉瀹氱殑瀹夊叏璁″垝銆?/span>
4. 鏁版嵁閿欒鍙樻垚瀛︿範(fàn)鏈轟細(xì)
2014騫存満鏋勫皢鍑虹幇璁稿鏁版嵁閿欒銆傛暟鎹敊璇皢琛ㄦ槑鍩虹鐨勬潵婧愮郴緇熺殑闂鍚楋紵鏁版嵁閿欒鏄湪涓嬫父鍒嗘瀽涓嚭鐜板亸宸鑷寸殑鏁版嵁鎻愬彇闂鍚楋紵鏁版嵁閿欒灝嗚〃鏄庡畾涔夊樊寮傛垨鑰呯己灝戣法閮ㄩ棬鍜屼笟鍔¢儴闂ㄧ殑涓鑷存у悧錛?014騫村皢鐪嬪埌瑙e喅鏁版嵁寮傚父闂銆?/span>
5. 鍑虹幇鍙繍琛岀殑Hadoop
2014騫村皢鐪嬪埌Hadoop鍦ㄥ悇涓涓氫腑鐨勭敓浜ч儴緗叉樉钁楀鍔犮傝繖灝嗘樉紺哄嚭Hadoop鍦ㄨ繍钀ヤ腑鐨勫疄鍔涖傚湪閭i噷錛岀敓浜у簲鐢ㄤ笌鍒嗘瀽緇撳悎鍦ㄤ竴璧瘋兘澶熸彁渚涘彲浠ヨ 閲忕殑鍟嗕笟浼樺娍錛屽鍦ㄥ鎴峰寲闆跺敭寤鴻銆佽瘓楠楁嫻嬪拰璇曢獙浼犳劅鍣ㄦ暟鎹繘琛岃鑼冪殑緇存姢絳夊簲鐢ㄤ腑鎻愪緵榪欎簺浼樺娍銆?/span>
6. 鏇村鐨勬暟鎹粨搴撳皢閮ㄧ講浼佷笟鏁版嵁涓績
鏁版嵁涓績鎶婃暟鎹彁鍙栧鐞嗗拰鏁版嵁浠庝紒涓氭暟鎹粨搴撳嵏杞藉埌Hadoop銆備綔涓轟竴涓牳蹇冪殑涓績浼佷笟涓績錛屾暟鎹腑蹇冭渚垮疁10鍊嶏紝鑳藉瀵歸澶栫殑澶勭悊鎴栬呮柊鐨勫簲鐢ㄨ繘琛屾洿澶氱殑鍒嗘瀽銆?/span>
7. 鏂扮殑浠ユ暟鎹負(fù)涓績鐨勫簲鐢ㄥ皢鎴愪負(fù)寮哄埗鎬х殑
鍒╃敤澶ф暟鎹殑鑳藉姏灝嗗湪2014騫存垚涓虹珵浜夌殑姝﹀櫒銆傛洿澶氱殑鍏徃灝嗕嬌鐢ㄥぇ鏁版嵁鍜孒adoop鍑嗙‘鍦伴拡瀵逛釜浜烘秷璐硅呯殑鍋忕埍榪介愯禋閽辯殑榪藉姞閿鍞拰浜ゅ弶閿鍞殑鏈轟細(xì)錛屾洿濂藉湴緙撹В椋庨櫓浠ュ強(qiáng)鍑忓皯鐢熶駭鍜屽紑閿鎴愭湰銆?/span>
8. 鏁版嵁鎴愪負(fù)鏁版嵁涓績鐨勬牳蹇?/span>
鏈烘瀯灝嗕粠寮鍙戣呰繃娓″埌澶ф暟鎹鍒掍腑銆?/span>IT閮ㄩ棬灝嗚秺鏉ヨ秺澶氬湴鎷呰礋瀹氫箟鏀寔澶氱搴旂敤鐨勬暟鎹熀紜璁炬柦鐨勪換鍔★紝鎶婇噸鐐歸泦涓湪閮ㄧ講銆佸鐞嗗拰淇濇姢涓涓満鏋勭殑鏍稿績璧勪駭鎵闇瑕佺殑鍩虹璁炬柦鏂歸潰銆?/span>
9. 鎼滅儲(chǔ)灝嗘垚涓洪潪緇撴瀯鍖栫殑鏌ヨ璇█
2013騫存湁澶ч噺鐨勭敤浜嶩adoop鐨凷QL璁″垝銆?014騫村皢鏄繖縐嶉潪緇撴瀯鍖栨煡璇㈣璦鎴愪負(fù)閲嶇偣鐨勪竴騫淬傛妸鎼滅儲(chǔ)闆嗘垚鍒癏adoop灝嗕負(fù)鏌ユ壘閲嶈淇℃伅鐨勪紒涓氱敤鎴鋒彁渚涗竴縐嶇畝鍗曞拰鐩磋鐨勬柟娉曘傛悳绱㈠紩鎿庤繕鏄寘鎷帹鑽愬紩鎿庡湪鍐呯殑璁稿鍙戠幇鍜屽垎鏋愬簲鐢ㄧ殑鏍稿績銆?/span>
10. Hadoop灝嗚幏寰楀湴浣?/span>
Hadoop灝嗙戶緇彇浠e叾瀹僆T寮鏀紝棰犺浼佷笟鏁版嵁浠撳簱鍜屼紒涓氬瓨鍌ㄣ備緥濡傦紝鐢查鏂囩殑涓昏钀ユ敹鐩爣鍦ㄨ繃鍘葷殑10涓搴﹂噷鏈?涓搴︽病鏈夊疄鐜般俆eradata鍦ㄨ繃鍘葷殑5涓搴︽湁4涓搴︽病鏈夊疄鐜拌惀鏀跺拰鍒╂鼎鐩爣銆?/span>
11. Hadoop浠嶉渶瑕佸府鍔╂墠鑳芥垚涓轟富嫻佸簲鐢?/span>
鏇村鐨勬満鏋勮璇嗗埌Apache Hadoop鏈韓榪樻病鏈夊噯澶囧ソ鍦ㄤ紒涓氬簲鐢ㄣ侫pache Hadoop涓嶆槸涓虹郴緇熺鐞嗘垨鑰呯伨闅炬仮澶嶇瓑緇熶竴浼佷笟IT嫻佺▼璁捐鐨勩備紒涓氬皢緇х畫鎺ㄨ繘娣峰悎鐨勮В鍐蟲柟妗堬紝鎶婃灦鏋勬妧鏈垱鏂頒笌Apache Hadoop鐨勫紑婧愯蔣浠剁粨鍚堝湪涓璧楓?/span>
褰撲笅錛?/span>“澶ф暟鎹?/span>”宸叉垚涓?/span>2013騫存渶鐏殑鎶鏈瘝姹囦箣涓錛涜屽湪榪囧幓涓騫達(dá)紝榪欎釜甯傚満鐨勫閫熷拰鏀瑰彉涔熶笉鍙皳涓嶅ぇ銆傚悓鏃訛紝鎴戜滑榪樼湅鍒頒簡Hadoop鍙?qiáng)鍏剁敓鎬佺郴緇熺殑浣跨敤闂ㄦ浠庨《灝栨妧鏈漢鎵嶅埌鏁版嵁縐戝瀹剁殑鏀瑰彉銆傝秺鏉ヨ秺澶氱殑浼佷笟鎷ユ姳澶ф暟鎹妧鏈紝騫跺皢鍏惰繍鐢ㄥ埌鐢熶駭鐜涓傞偅涔堬紝鍦?/span>2014騫村ぇ鏁版嵁鐨勫彂灞曡秼鍔垮張浼?xì)濡備綍锛寴q欓噷涓嶅Θ鐪嬩竴涓嬫潵鑷?/span>CIO鐨?/span>12欏歸嫻嬶細(xì)
2014騫達(dá)紝澶ф暟鎹浜庤鐨勬儏鍐靛皢鍙戠敓鏀瑰彉錛屼漢浠皢鑷村姏浜庝粠涓幏鐩婏紝鎵鏈夊ぇ鏁版嵁鐨勭倰浣滀篃灝?/span>“鐑熸秷浜戞暎”銆備粠Gainsight浜嗚В鍒幫紝澶ф暟鎹湰韜篃灝嗘垚涓烘闈笂鐨勭鐮侊紝Gainsight鍦ㄥ叾IaaS騫沖彴涓埄鐢ㄥぇ鏁版嵁鍒嗘瀽琚叾縐頒箣涓?/span>“customer success management”鐨勬湇鍔°?/span>Gainsight璁や負(fù)錛屽湪2014騫達(dá)紝姣忓浜戝簲鐢ㄧ▼搴忔彁渚涘晢閮藉皢浼?xì)璁╁叾鍚庣鍩杭媭璁炬柦鏀寔澶ф暟鎹?/span>
2. Hadoop灝嗘垚涓轟紒涓氱殑鍏抽敭緇勪歡
Hadoop灝嗘櫘鍙?qiáng)锛屽ぇ鏁版嵁涔熶笉浼?xì)鍐嶇戶緇姝ヤ簬浜戞湇鍔°?/span>Alteryx璁や負(fù)錛?/span>2014騫達(dá)紝Hadoop鐨勯傜敤鍦烘櫙灝嗚秴瓚婃壒澶勭悊鍜屽瓨鍌紝灝嗘垚涓轟紒涓氭暟鎹灦鏋勪腑閫氱敤鐨勬牳蹇冪粍浠訛紝榪欐剰鍛崇潃鏁版嵁鍒嗘瀽灝嗙戶緇垚涓哄ぇ鏁版嵁鐨勯瑕佺敤渚嬨?/span>
3. 浼佷笟灝嗘洿鍔犻挓鎯呬簬鐢ㄦ埛鏁版嵁
浠?/span>Gainsight浜嗚В鍒幫紝鍚勪釜鏈烘瀯灝嗗鐢ㄦ埛鏁版嵁鍏呮弧鐑儏錛屼紒涓氬皢鍏呭垎鍒╃敤瀹㈡埛涓庡叾鍦ㄧ嚎浜у搧鎴栨湇鍔′氦浜掍駭鐢熺殑鏁版嵁錛屽茍浠庝腑鑾峰彇浠峰箋備負(fù)浜嗗疄鐜拌繖鐐癸紝鏁版嵁鍒嗘瀽鑳藉姏灝嗘瘮BI鍥㈤槦鏇村彈閲嶈錛屼負(fù)浼佷笟鎻愪緵鏇村鐨勪環(huán)鍊箋?/span>
4. 澶ф暟鎹帺杞競鍦哄喅絳?/span>
Alteryx璁や負(fù)錛屽湪2014騫達(dá)紝澶ф暟鎹皢棣栨姝e紡鐧婚檰甯傚満钀ラ攢錛岀敤浜庡競鍦鴻惀閿鐨勫ぇ鏁版嵁鎶鏈皢鍦ㄨ繖涓騫存壆婕旈噸瑕佽鑹?/span>——褰卞搷鐫騫垮憡銆佷駭鍝佹帹閿鍜屾秷璐硅呰涓猴紝World Cup鍙?/span>Winter Olympics灝嗘槸鍏舵渶澶х殑鑸炲彴銆?/span>
5. 嫻烽噺鐨勬暟鎹皢瓚呰秺鏁版嵁縐戝瀹剁殑鎰忚瘑
lteryx璁や負(fù)錛屾柊鍨嬬殑鏁版嵁鍒嗘瀽闇姹傚皢瓚呰秺浜哄姏鍙負(fù)錛屾湁浜涙儏鍐典笅澶ф暟鎹妧鏈皢鍫瘮鎴愬崈涓婁竾鐨勬暟鎹瀛﹀銆傝鍏徃棰勬祴錛岃繖灝嗕細(xì)姣棤鐤戦棶鐨勬媺浣庢暟鎹瀛﹀钖叕銆?/span>
6. 鐗╄仈緗戝皢榪涘啗緗戠粶
IEEE鐨勪笓涓氬崗浼?xì)璁や负锛?/span>2014騫達(dá)紝鍙瘑鍒簨鐗╁皢鏃犵紳鐨勮繛鎺ュ埌淇℃伅緗戠粶錛屽疄鐜扮湡姝f剰涔変笂鐨?/span>Web of Things銆?/span>The Web of Things灝嗕細(xì)鍏呭垎鍒╃敤縐誨姩璁懼鍜屼紶鎰熷櫒鐨勭洃鎺ц兘鍔涳紝澧炲己鐜板疄涓栫晫涓殑鐗╀綋涓?/span>Web鍓湰涔嬮棿鐨勫崗鍚屾с?/span>
The Web of Things灝嗕細(xì)鐢熸垚澶ч噺涓庣幇瀹炰笘鐣岀浉鍏崇殑鏁版嵁錛屽洜鑰屼細(xì)闇姹傛櫤鑳藉寲鐨勮В鍐蟲柟妗堝湪鐜板疄涓栫晫涓庣浉瀵瑰簲鐨勬暟瀛椾笘鐣岃祫婧愪箣闂磋祴浜堣繛鎺ユс佺綉闄呬簰榪炲拰鐩稿叧鎬с?/span>
7. 浠庡ぇ鏁版嵁鍒版搗閲忔暟鎹?/span>
鏁版嵁鐨勪綋縐侀熷害鍜岀被鍨嬶紙volume銆?/span>velocity鍜?/span>variety錛夊湪2014騫村皢浼?xì)鐟艟l憟鎸囨暟綰у闀匡紝鍥犳闇瑕佹洿綆鍗曠殑鍒嗘瀽宸ュ叿鏉ラ┚椹繖浜?/span>“鏁版嵁媧祦”銆?/span>
IEEE縐幫紝“涓嶆鏄?/span>3涓?/span>V璁╁ぇ鏁版嵁鎴愪簡闈炲父闅句互鍒舵湇鐨勮佽檸錛屾暟鎹瀛﹀鍙?qiáng)琛屼笟鎵闇綆鍗曞伐鍏蜂篃鏄釜闅鵑錛岃澶氳涓氬皻鏃犵嫭绔嬫彁鍙栨暟鎹環(huán)鍊肩殑鑳藉姏銆傚綋鍓嶅凡鍑虹幇鐨勬搗閲忔暟鎹椂浠f洿闇姹傛暟鎹鐞嗗拰鍒嗘瀽涓婃柊鐨勮寖寮忓拰瀹炶返銆?/span>2014騫達(dá)紝榪欎釜棰嗗煙灝嗕笂婕旂兢闆勪簤闇搞?/span>”
8. R璇█灝嗗彇浠d紶緇?/span>SAS瑙e喅鏂規(guī)
Alteryx璁や負(fù)錛屽熀浜?/span>R緙栫▼璇█鐨勫垎鏋愬皢鏁版嵁縐戝瀹?/span>“寰$敤”妯″紡錛岃繖縐嶅垎鏋愬湪2014騫村皢鎴愪負(fù)涓繪祦錛屽皢鏇夸唬浼犵粺鐨?/span>SAS鍙?/span>SPSS妯″紡銆?/span>Alteryx璇撮亾錛?/span>“瓚呰繃200涓囩敤鎴峰拰300涓囩殑鍒嗘瀽甯堥兘鍦ㄥ鎵炬洿濂界殑瑙e喅鏂規(guī)錛?/span>R鎭伴㈠叾鏃躲?/span>”
9. Hadoop灝嗗鍔犲疄鏃剁壒鎬?/span>
SQL-on-Hadoop渚涘簲鍟?/span>Splice Machine鍏卞悓鍒涘浜哄吋CEO Monte Zweben鎸囧嚭錛屾湭鏉?/span>1騫村緩绔嬪湪Hadoop騫沖彴涓婄殑浜や簰寮忓簲鐢ㄧ▼搴忓皢鍛堢垎鍙戝紡澧為暱錛屽叾涓寘鎷?/span>Web搴旂敤銆佺Щ鍔ㄥ簲鐢ㄥ拰紺句氦搴旂敤錛屼漢浠彲浠ヤ笌涔嬭繘琛屽疄鏃剁殑浜や簰銆?/span>
Zweben璇撮亾錛?/span>“2014灝嗗甫鏉ュ疄鏃跺ぇ鏁版嵁搴旂敤紼嬪簭騫沖彴錛屼紒涓氬皢涓嶄細(xì)鍙兘鍍忓綋涓嬩竴鏍峰垎鏋愬巻鍙叉暟鎹紝浣犲皢鏈夎兘鍔涘垎鏋?/span>5鍒嗛挓錛岀敋鑷蟲槸1鍒嗛挓涔嬪唴鐨勬暟鎹紱浼佷笟灝嗘嫢鏈変氦浜掑紡搴旂敤紼嬪簭錛屼互渚垮疄鏃剁殑鍒跺畾鍐崇瓥銆?/span>”
10. Hadoop灝嗗緱鍒頒紒涓氱駭寮哄寲
Splice Machine鐨?/span>Zweben璇達(dá)細(xì)“姣嬪焊緗枒錛?/span>Hadoop鏄釜浜嗕笉璧風(fēng)殑騫沖彴錛屼絾鏄粛鐒舵湁璁稿宸ヤ綔瑕佸仛銆?/span>”
浠栬涓猴紝鍦?/span>2014錛屼綘灝嗙湅鍒?/span>Hadoop鍚戝畨鍏ㄣ佽繍钀ョ鐞嗐佽祫婧愮鐞嗗強(qiáng)澶氱珯鐐瑰搷搴旀柟鍚戝彂灞曘?/span>Zweben琛ュ厖閬擄細(xì)“浣犲皢鐪嬪埌鎵鏈夌殑浼佷笟綰ч渶姹傦紝鎴戣涓鴻繖浜涘皢鏄湭鏉ヤ富瑕佺殑鐒︾偣銆?/span>”
11. 2014騫村簳錛岃嚦灝戞湁涓瀹?/span>NoSQL IPO
澶ф暟鎹強(qiáng)浜戠幆澧冨畨鍏ㄨВ鍐蟲柟妗?/span>Gazzang钁d簨闀垮吋CEO Larry Warnock棰勬祴錛屽湪2014錛岃嚦灝戞湁涓瀹?/span>Hadoop鎴栬?/span>NoSQL渚涘簲鍟嗕細(xì)IPO錛岃繖鏍囧織鐫澶ф暟鎹鉤鍙板凡琚箍娉涜鍙?/span>
Warnock璇撮亾錛?/span>“鎴戜笉浼?xì)鍘婚娴嬪摢瀹朵?/span>IPO錛屼絾鏄嚦灝戜細(xì)鏈変竴瀹?/span>Hadoop鎴?/span>NoSQL渚涘簲鍟?/span>IPO銆傞氳繃Wikibon浜嗚В鍒幫紝鍦?/span>2012騫達(dá)紝NoSQL杞歡鍜屾湇鍔″垱閫犱簡2.86浜跨編鍏冪殑紼庢敹錛岃屽湪2017騫達(dá)紝榪欎釜鏁版嵁琚嫻嬩負(fù)18.25浜褲傚晢鍦鴻涓嶆柇澧為暱鐨勪紒涓氶渶姹傛帹鍔紝浠栦滑闇瑕佺伒媧匯佸彲鎵╁睍鍙?qiáng)璐熸媴寰楄碉L(fēng)殑鏁版嵁綆$悊瑙e喅鏂規(guī)錛屼負(fù)鏂版椂浠g殑浜戝強(qiáng)澶ф暟鎹璁°?/span>”
12. 涓涓柊鐨勫垎鏋愬爢鏍堝皢璇炵敓
Alteryx 棰勬祴錛?/span>2014騫達(dá)紝灝嗗嚭鐜頒竴涓柊鐨勬暟鎹強(qiáng)鍒嗘瀽鍫嗘爤錛屼負(fù)鏁版嵁搴撱佸垎鏋愩佸彲瑙嗗寲鎻愪緵鏂扮殑瑙e喅鏂規(guī)錛岃繖灝嗙洿鎺ュ▉鑳佸埌浼犵粺鐨勪緵搴斿晢宸ㄥご錛岃岃繖浜涗緵搴斿晢涔熶細(xì)鍦ㄥ寙蹇欎腑鎺ㄥ嚭鏂扮殑瑙e喅鏂規(guī)銆?/span>
涓嬮潰榪樻槸鏍規(guī)嵁瀛︿範(fàn)錛屽鐜板湪姣旇緝鐑棬鐨凪angoDB鍜孧emcached浠ュ強(qiáng)Redis鍋氫釜綆鍗曠殑瀛︿範(fàn)錛?/span>
MangoDB鏄?/span>(document database, 紜洏鍨?/span>)
a. 鍩轟簬紓佺洏鐨勬暟鎹簱錛屽彧鏄紦瀛樼儹鐐規(guī)暟鎹湪鍐呭瓨涓?/span>
b. 鏂囨。鍨嬬殑闈炲叧緋誨瀷鏁版嵁搴擄紝
浼樺娍鏄煡璇㈠姛鑳藉己澶э紝鍙瓨鍌ㄦ搗閲忔暟鎹?/span>
c. 鍙浛鎹?/span>MySQL絳夊叧緋誨瀷鏁版嵁搴?/span>;
鍦ㄥ唴瀛樿凍澶熺殑鎯呭喌涓嬶紝璇誨啓鎬ц兘涓嶉敊錛屽彲鐪佸幓Cache榪欎竴灞?br />
Memcached鍜?/span>Redis鏄?/span>(key value store, 鍐呭瓨鍨?/span>)
a.鍐呭瓨鍨嬫暟鎹簱錛屾暟鎹繚瀛樺湪鍐呭瓨涓紝閫氳繃TCP鐩存帴瀛樺彇錛?/span> 鎴栬呰鏄叏鍐呭瓨Cache銆?/span>
浼樺娍鏄熷害蹇紝騫跺彂楂橈紝緙虹偣鏄暟鎹被鍨嬫湁闄愶紝鏌ヨ鍔熻兘涓嶅己錛屼竴鑸仛緙撳瓨銆?/span>
b. Key Value Store
c. 鍏ㄥ唴瀛?br />
Memcached vs Redis
a. 閮芥槸Key Vale, Memory Cache
b. Memecahced鏄?multiple-thread; 閫傚悎澶氭牳CPU鐨勫簲鐢ㄣ?/span>
Redis鏄?single-thread.
濡傛灉鍐嶅鏁版嵁緇撴瀯鍩虹涓婃敮鎸佸綰跨▼錛屽姞閿佸彲鑳芥槸涓棶棰?/span>錛堝緟娣卞叆瀛︿範(fàn)楠岃瘉錛?/strong>銆?br /> c. Redis鍏鋒湁鎸佷箙鍖栨満鍒訛紝鍙互瀹氭湡灝嗗唴瀛樼殑鏁版嵁鎸佷箙鍖栧埌紜洏涓?/span>
d. Redis鏀寔鐨勬暟鎹被鍨嬫洿澶?/span>
e. Redis 鍏峰binlog鍔熻兘錛屽皢鎵鏈夋搷浣滃啓鍏ユ棩蹇楋紝浠ヤ究redis鍑虹幇鏁呴殰鏃訛紝鍙氳繃binlog榪涜鎭㈠銆?/span>
f. Redis鏀寔Virtual Memory錛屽彲闄愬畾鍐呭瓨澶у皬錛屽綋鏁版嵁瓚呭嚭闃鍊鹼紝灝遍氳繃綾諱技LRU鐨勭畻娉曞皢鏈涓嶅父鐢ㄧ殑鏁版嵁淇濆瓨鍒扮‖鐩樼殑欏甸潰闂涓?/span>