
2006年7月25日
發布21個已知被微軟黑屏的序列號提醒相關用戶不要冒險去驗證升級
發布21個已知被微軟黑屏的序列號,提醒使用該序列號的用戶就不要冒險去驗證升級了。
已知被黑屏的序列號(這21個序列號是我今天一個個通過驗證測試出來的結果):
XP8BF-F8HPF-PY6BX-K24PJ-TWT6M
F4297-RCWJP-P482C-YY23Y-XH8W3
HH7VV-6P3G9-82TWK-QKJJ3-MXR96
HCQ9D-TVCWX-X9QRG-J4B2Y-GR2TT
MRX3F-47B9T-2487J-KWKMF-RPWBY
T72KM-6GWBP-GX7TD-CXFT2-7WT2B
QHYXK-JCJRX-XXY8Y-2KX2X-CCXGD
DG8FV-B9TKY-FRT9J-6CRCC-XPQ4G
MFBF7-2CK8B-93MDB-8MR7T-4QRCQ
MRX3F-47B9T-2487J-KWKMF-RPWBY
DFXFM-DKWTG-MYDWJ-68DQF-YBCYG
TB7JC-3VJKY-J3VMR-PP8TP-HMTWY
KR88V-RCBCB-D78QP-V4FF9-JW77M
HWCTG-CQPWK-D22DQ-JD7TQ-GXVW8
Q7TG8-MQ3BK-RHXQC-YDXJD-6Q6M3
BP6XM-YXMKY-V4Q74-KJP8X-VW3CQ
BFBPF-TF64Y-BT8T9-DQJFY-3TH7W
GQ9CX-QDFPR-XFRMF-T3M94-2JG9Y
XPF44-PDM32-XT4B8-R8W8C-CPP6T
RC7QJ-KX66J-V4R9W-32HC4-CJH2B
DDQXW-THQ8M-79V6K-2YFGH-R793Q
注:但有網友反映MRX3F-47B9T-2487J-KWKMF-RPWBY這個序列號有些地方能通過正版驗證,有些地方不能通過正版驗證,看來微軟這次驗證還分蠻細的,并可以按地區來判斷序列號是否為盜版和正版呀。
posted @
2008-10-26 00:40 崛起的程序員 閱讀(375) |
評論 (0) |
編輯 收藏
AJAX 流行之后,總想好好學習一下。但是眾多的框架實在難以選擇。說明一下 ASP.NET AJAX 并不包括在 AJAX 框架之中。
剛開始學了 JQuqery, 眾多的 $get(),...等等符號早已把我搞暈了。暫時就放棄了。
后來學習 ASP.NET AJAX ,在微軟的領導下,逐漸由服務器端轉向客戶端編程。 激起我客戶端編程的興趣,
才想起學習一下了 Jquery.
隨著WEB2.0及ajax思想在互聯網上的快速發展傳播,陸續出現了一些優秀的Js框架,其中比較著名的有Prototype、YUI、jQuery、mootools、Bindows以及國內的JSVM框架等,通過將這些JS框架應用到我們的項目中能夠使程序員從設計和書寫繁雜的JS應用中解脫出來,將關注點轉向功能需求而非實現細節上,從而提高項目的開發速度。
jQuery是繼prototype之后的又一個優秀的Javascript框架。它是由 John Resig 于 2006 年初創建的,它有助于簡化 JavaScript™ 以及Ajax 編程。有人使用這樣的一比喻來比較prototype和jQuery:prototype就像Java,而jQuery就像ruby. 它是一個簡潔快速靈活的JavaScript框架,它能讓你在你的網頁上簡單的操作文檔、處理事件、實現特效并為Web頁面添加Ajax交互。
它具有如下一些特點:
1、代碼簡練、語義易懂、學習快速、文檔豐富。
2、jQuery是一個輕量級的腳本,其代碼非常小巧,最新版的JavaScript包只有20K左右。
3、jQuery支持CSS1-CSS3,以及基本的xPath。
4、jQuery是跨瀏覽器的,它支持的瀏覽器包括IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+。
5、可以很容易的為jQuery擴展其他功能。
6、能將JS代碼和HTML代碼完全分離,便于代碼和維護和修改。
7、插件豐富,除了jQuery本身帶有的一些特效外,可以通過插件實現更多功能,如表單驗證、tab導航、拖放效果、表格排序、DataGrid,樹形菜單、圖像特效以及ajax上傳等。
jQuery的設計會改變你寫JavaScript代碼的方式,降低你學習使用JS操作網頁的復雜度,提高網頁JS開發效率,無論對于js初學者還是資深專家,jQuery都將是您的首選。
jQuery適合于設計師、開發者以及那些還好者,同樣適合用于商業開發,可以說jQuery適合任何JavaScript應用的地方,可用于不同的Web應用程序中。
官方站點:http://jquery.com/ 中文站點:http://jquery.org.cn/
1.2、目的
通過學習本文檔,能夠對jQuery有一個簡單的認識了解,清楚JQuery與其他JS框架的不同,掌握jQuery的常用語法、使用技巧及注意事項。
二、使用方法
在需要使用JQuery的頁面中引入JQuery的js文件即可。
例如:<script type="text/javascript" src="js/jquery.js"></script>
引入之后便可在頁面的任意地方使用jQuery提供的語法。
三、學習教程及參考資料
請參照《jQuery中文API手冊》和http://jquery.org.cn/visual/cn/index.xml
推薦兩篇不錯的jquery教程:《jQuery的起點教程》和《使用 jQuery 簡化 Ajax 開發》
四、語法總結和注意事項
1、關于頁面元素的引用
通過jquery的$()引用元素包括通過id、class、元素名以及元素的層級關系及dom或者xpath條件等方法,且返回的對象為jquery對象(集合對象),不能直接調用dom定義的方法。
2、jQuery對象與dom對象的轉換
只有jquery對象才能使用jquery定義的方法。注意dom對象和jquery對象是有區別的,調用方法時要注意操作的是dom對象還是jquery對象。
普通的dom對象一般可以通過$()轉換成jquery對象。
如:$(document.getElementById("msg"))則為jquery對象,可以使用jquery的方法。
由于jquery對象本身是一個集合。所以如果jquery對象要轉換為dom對象則必須取出其中的某一項,一般可通過索引取出。
如:$("#msg")[0],$("div").eq(1)[0],$("div").get()[1],$("td")[5]這些都是dom對象,可以使用dom中的方法,但不能再使用Jquery的方法。
以下幾種寫法都是正確的:
$("#msg").html();
$("#msg")[0].innerHTML;
$("#msg").eq(0)[0].innerHTML;
$("#msg").get(0).innerHTML;
3、如何獲取jQuery集合的某一項
對于獲取的元素集合,獲取其中的某一項(通過索引指定)可以使用eq或get(n)方法或者索引號獲取,要注意,eq返回的是jquery對象,而get(n)和索引返回的是dom元素對象。對于jquery對象只能使用jquery的方法,而dom對象只能使用dom的方法,如要獲取第三個<div>元素的內容。有如下兩種方法:
$("div").eq(2).html(); //調用jquery對象的方法
$("div").get(2).innerHTML; //調用dom的方法屬性
4、同一函數實現set和get
Jquery中的很多方法都是如此,主要包括如下幾個:
$("#msg").html(); //返回id為msg的元素節點的html內容。
$("#msg").html("<b>new content</b>");
//將“<b>new content</b>” 作為html串寫入id為msg的元素節點內容中,頁面顯示粗體的new content
$("#msg").text(); //返回id為msg的元素節點的文本內容。
$("#msg").text("<b>new content</b>");
//將“<b>new content</b>” 作為普通文本串寫入id為msg的元素節點內容中,頁面顯示<b>new content</b>
$("#msg").height(); //返回id為msg的元素的高度
$("#msg").height("300"); //將id為msg的元素的高度設為300
$("#msg").width(); //返回id為msg的元素的寬度
$("#msg").width("300"); //將id為msg的元素的寬度設為300
$("input").val("); //返回表單輸入框的value值
$("input").val("test"); //將表單輸入框的value值設為test
$("#msg").click(); //觸發id為msg的元素的單擊事件
$("#msg").click(fn); //為id為msg的元素單擊事件添加函數
同樣blur,focus,select,submit事件都可以有著兩種調用方法
5、集合處理功能
對于jquery返回的集合內容無需我們自己循環遍歷并對每個對象分別做處理,jquery已經為我們提供的很方便的方法進行集合的處理。
包括兩種形式:
$("p").each(function(i){this.style.color=['#f00','#0f0','#00f'][i]})
//為索引分別為0,1,2的p元素分別設定不同的字體顏色。
$("tr").each(function(i){this.style.backgroundColor=['#ccc','#fff'][i%2]})
//實現表格的隔行換色效果
$("p").click(function(){alert($(this).html())})
//為每個p元素增加了click事件,單擊某個p元素則彈出其內容
6、擴展我們需要的功能
$.extend({
min: function(a, b){return a < b?a:b; },
max: function(a, b){return a > b?a:b; }
}); //為jquery擴展了min,max兩個方法
使用擴展的方法(通過“$.方法名”調用):
alert("a=10,b=20,max="+$.max(10,20)+",min="+$.min(10,20));
7、支持方法的連寫
所謂連寫,即可以對一個jquery對象連續調用各種不同的方法。
例如:
$("p").click(function(){alert($(this).html())})
.mouseover(function(){alert('mouse over event')})
.each(function(i){this.style.color=['#f00','#0f0','#00f'][i]});
8、操作元素的樣式
主要包括以下幾種方式:
$("#msg").css("background"); //返回元素的背景顏色
$("#msg").css("background","#ccc") //設定元素背景為灰色
$("#msg").height(300); $("#msg").width("200"); //設定寬高
$("#msg").css({ color: "red", background: "blue" });//以名值對的形式設定樣式
$("#msg").addClass("select"); //為元素增加名稱為select的class
$("#msg").removeClass("select"); //刪除元素名稱為select的class
$("#msg").toggleClass("select"); //如果存在(不存在)就刪除(添加)名稱為select的class
9、完善的事件處理功能
Jquery已經為我們提供了各種事件處理方法,我們無需在html元素上直接寫事件,而可以直接為通過jquery獲取的對象添加事件。
如:
$("#msg").click(function(){alert("good")}) //為元素添加了單擊事件
$("p").click(function(i){this.style.color=['#f00','#0f0','#00f'][i]})
//為三個不同的p元素單擊事件分別設定不同的處理
jQuery中幾個自定義的事件:
(1)hover(fn1,fn2):一個模仿懸停事件(鼠標移動到一個對象上面及移出這個對象)的方法。當鼠標移動到一個匹配的元素上面時,會觸發指定的第一個函數。當鼠標移出這個元素時,會觸發指定的第二個函數。
//當鼠標放在表格的某行上時將class置為over,離開時置為out。
$("tr").hover(function(){
$(this).addClass("over");
},
function(){
$(this).addClass("out");
});
(2)ready(fn):當DOM載入就緒可以查詢及操縱時綁定一個要執行的函數。
$(document).ready(function(){alert("Load Success")})
//頁面加載完畢提示“Load Success”,相當于onload事件。與$(fn)等價
(3)toggle(evenFn,oddFn): 每次點擊時切換要調用的函數。如果點擊了一個匹配的元素,則觸發指定的第一個函數,當再次點擊同一元素時,則觸發指定的第二個函數。隨后的每次點擊都重復對這兩個函數的輪番調用。
//每次點擊時輪換添加和刪除名為selected的class。
$("p").toggle(function(){
$(this).addClass("selected");
},function(){
$(this).removeClass("selected");
});
(4)trigger(eventtype): 在每一個匹配的元素上觸發某類事件。
例如:
$("p").trigger("click"); //觸發所有p元素的click事件
(5)bind(eventtype,fn),unbind(eventtype): 事件的綁定與反綁定
從每一個匹配的元素中(添加)刪除綁定的事件。
例如:
$("p").bind("click", function(){alert($(this).text());}); //為每個p元素添加單擊事件
$("p").unbind(); //刪除所有p元素上的所有事件
$("p").unbind("click") //刪除所有p元素上的單擊事件
10、幾個實用特效功能
其中toggle()和slidetoggle()方法提供了狀態切換功能。
如toggle()方法包括了hide()和show()方法。
slideToggle()方法包括了slideDown()和slideUp方法。
11、幾個有用的jQuery方法
$.browser.瀏覽器類型:檢測瀏覽器類型。有效參數:safari, opera, msie, mozilla。如檢測是否ie:$.browser.isie,是ie瀏覽器則返回true。
$.each(obj, fn):通用的迭代函數。可用于近似地迭代對象和數組(代替循環)。
如
$.each( [0,1,2], function(i, n){ alert( "Item #" + i + ": " + n ); });
等價于:
var tempArr=[0,1,2];
for(var i=0;i<tempArr.length;i++){
alert("Item #"+i+": "+tempArr[i]);
}
也可以處理json數據,如
$.each( { name: "John", lang: "JS" }, function(i, n){ alert( "Name: " + i + ", Value: " + n ); });
結果為:
Name:name, Value:John
Name:lang, Value:JS
$.extend(target,prop1,propN):用一個或多個其他對象來擴展一個對象,返回這個被擴展的對象。這是jquery實現的繼承方式。
如:
$.extend(settings, options);
//合并settings和options,并將合并結果返回settings中,相當于options繼承setting并將繼承結果保存在setting中。
var settings = $.extend({}, defaults, options);
//合并defaults和options,并將合并結果返回到setting中而不覆蓋default內容。
可以有多個參數(合并多項并返回)
$.map(array, fn):數組映射。把一個數組中的項目(處理轉換后)保存到到另一個新數組中,并返回生成的新數組。
如:
var tempArr=$.map( [0,1,2], function(i){ return i + 4; });
tempArr內容為:[4,5,6]
var tempArr=$.map( [0,1,2], function(i){ return i > 0 ? i + 1 : null; });
tempArr內容為:[2,3]
$.merge(arr1,arr2):合并兩個數組并刪除其中重復的項目。
如:$.merge( [0,1,2], [2,3,4] ) //返回[0,1,2,3,4]
$.trim(str):刪除字符串兩端的空白字符。
如:$.trim(" hello, how are you? "); //返回"hello,how are you? "
12、解決自定義方法或其他類庫與jQuery的沖突
很多時候我們自己定義了$(id)方法來獲取一個元素,或者其他的一些js類庫如prototype也都定義了$方法,如果同時把這些內容放在一起就會引起變量方法定義沖突,Jquery對此專門提供了方法用于解決此問題。
使用jquery中的jQuery.noConflict();方法即可把變量$的控制權讓渡給第一個實現它的那個庫或之前自定義的$方法。之后應用Jquery的時候只要將所有的$換成jQuery即可,如原來引用對象方法$("#msg")改為jQuery("#msg")。
如:
jQuery.noConflict();
// 開始使用jQuery
jQuery("div p").hide();
// 使用其他庫的 $()
$("content").style.display = 'none';
posted @
2008-09-21 21:24 崛起的程序員 閱讀(314) |
評論 (0) |
編輯 收藏
1377-4167-5844-4698-0048-5821
posted @
2008-03-02 19:35 崛起的程序員 閱讀(336) |
評論 (0) |
編輯 收藏
Flex License:
1307-1581-4356-2616-4951-7949 (Commercial Version)
1307-1581-4356-2939-1231-4484 (Education Version)
Charting License:
1301-4581-4356-7349-9369-3351 (Commercial Version)
posted @
2008-02-24 21:43 崛起的程序員 閱讀(404) |
評論 (0) |
編輯 收藏
Today we shipped Visual Studio 2008 and .NET 3.5. You can download the final release using one of the links below:
-
If you are a MSDN subscriber, you can download your copy from the MSDN subscription site (note: some of the builds are just finishing being uploaded now - so check back later during the day if you don't see it yet).
-
If you are a non-MSDN subscriber, you can download a 90-day free trial edition of Visual Studio 2008 Team Suite here. A 90-day trial edition of Visual Studio 2008 Professional (which will be a slightly smaller download) will be available next week. A 90-day free trial edition of Team Foundation Server can also be downloaded here.
-
If you want to use the free Visual Studio 2008 Express editions (which are much smaller and totally free), you can download them here.
-
If you want to just install the .NET Framework 3.5 runtime, you can download it here.
Quick Tour of Some of the New Features
Visual Studio 2008 and .NET 3.5 contain a ton of new functionality and improvements. Below are links to blog posts I've done myself as well as links to videos you can watch to learn more about it:
VS 2008 Multi-Targeting Support
VS 2008 enables you to build applications that target multiple versions of the .NET Framework. This means you can use VS 2008 to open, edit and build existing .NET 2.0 and ASP.NET 2.0 applications (including ASP.NET 2.0 applications using ASP.NET AJAX 1.0), and continue to deploy these application on .NET 2.0 machines. You can learn more about how this works from my blog post here:
ASP.NET AJAX and JavaScript Support
.NET 3.5 has ASP.NET AJAX built-in (no separate download required). In addition to including all of the features in ASP.NET AJAX 1.0, ASP.NET 3.5 also now includes richer support for UpdatePanels integrating with WebParts, ASP.NET AJAX integration with controls like <asp:menu> and <asp:treeview>, WCF support for JSON, and many other AJAX improvements.
VS 2008 and Visual Web Developer 2008 also now have great support for integrating JavaScript and AJAX into your applications. You can learn more about this from my blog posts here:
You can watch some videos that discuss ASP.NET AJAX and Visual Studio 2008 support for it here.
I also highly recommend the excellent ASP.NET AJAX in Action book to learn more about ASP.NET AJAX (both client-side and server-side).
VS 2008 Web Designer and CSS Support
VS 2008 and Visual Web Developer 2008 Express includes a significantly improved HTML web designer (the same one that ships with Expression Web). This delivers support for split-view editing, nested master pages, and great CSS integration. Below are some articles I've written that discuss this more:
ASP.NET 3.5 also has a new <asp:ListView> control that provides the ability to perform rich data scenarios with total control over the markup. It works nicely with the new CSS support in VS 2008. You can learn more about it from my article here:
You can watch some videos that discuss the new Visual Studio 2008 web designer features and the new ListView/DataPager controls here.
Language Improvements and LINQ
The new VB and C# compilers in VS 2008 deliver significant improvements to the languages. Both add functional programming concepts that enable you to write cleaner, terser, and more expressive code. These features also enable a new programming model we call LINQ (language integrated query) that makes querying and working with data a first-class programming concept with .NET.
Below are some of the articles I've written that explore these new language features using C#:
Here are a few additional blog posts I've written that show off some of the new VS 2008 code editing support and some cool ways to use these new language features:
The Visual Basic team has also created some great free videos that cover LINQ. You can watch them here.
Data Access Improvements with LINQ to SQL
LINQ to SQL is a built-in OR/M (object relational mapper) in .NET 3.5. It enables you to model relational databases using a .NET object model. You can then query the database using LINQ, as well as update/insert/delete data from it. LINQ to SQL fully supports transactions, views, and stored procedures. It also provides an easy way to integrate business logic and validation rules into your data model. Below are some of the articles I've written that explore how to use it:
I think you'll find that LINQ and LINQ to SQL makes it much easier to build much cleaner data models, and write much cleaner data code. I'll be adding more posts to my LINQ to SQL series in the weeks and months ahead (sorry for the delay in finishing them earlier - so much to-do and so little time to-do it all!).
Scott Stanfield is also working on creating some great LINQ to SQL videos for the www.asp.net site based on my article series above (all videos are in both VB and C#). You can watch the first 4 videos in this series here.
Browsing the .NET Framework Library Source using Visual Studio
As I blogged a few weeks ago, we will be releasing a reference version of the .NET Framework library source code as part of this release. Visual Studio 2008 has built-in debugger support to automatically step-into and debug this code on demand (VS 2008 can pull down the source for the appropriate .NET Framework library file automatically for you).
We are deploying the source servers to enable this right now, and will be publishing the steps to turn this feature on in the next few weeks.
Lots of other improvements
The list above is only a small set of the improvements coming. For client development VS 2008 includes WPF designer and project support. ClickOnce and WPF XBAPs now work with FireFox. WinForms and WPF projects can also now use the ASP.NET Application Services (Membership, Roles, Profile) for roaming user data.
Office development is much richer - including support for integrating with the Office 2007 ribbon, and with Outlook. Visual Studio Tools for Office support is also now built-into Visual Studio (you no longer need to buy a separate product).
New WCF and Workflow projects and designers are now included in VS 2008. Unit testing support is now much faster and included in VS Professional (and no longer just VSTS). Continuous Integration support is now built-in with TFS. AJAX web testing (unit and load) is now supported in the VS Test SKU. And there is much, much more...
Installation Suggestions
People often ask me for suggestions on how best to upgrade from previous betas of Visual Studio 2008. In general I'd recommend uninstalling the Beta2 bits explicitly. As part of this you should uninstall Visual Studio 2008 Beta2, .NET Framework Beta2, as well as the Visual Studio Web Authoring Component (these are all separate installs and need to be uninstalled separately). I then usually recommend rebooting the machine after uninstalling just to make sure everything is clean before you kick off the new install. You can then install the final release of VS 2008 and .NET 3.5 on the machine.
Once installed, I usually recommend explicitly running the Tools->Import and Export Settings menu option, choosing the "Reset Settings" option, and then re-pick your preferred profile. This helps ensure that older settings from the Beta2 release are no longer around (and sometimes seems to help with performance).
Note that VS 2008 runs side-by-side with VS 2005 - so it is totally fine to have both on the same machine (you will not have any problems with them on the same box).
Silverlight Tools and VS Web Deployment Project Add-Ins
Two popular add-ins to Visual Studio are not yet available to download for the final VS 2008 release. These are the Silverlight 1.1 Tools Alpha for Visual Studio and the Web Deployment Project add-in for Visual Studio. Our hope is to post updates to both of them to work with the final VS 2008 release in the next two weeks. If you are doing Silverlight 1.1 development using VS 2008 Beta2 you'll want to stick with with VS 2008 Beta2 until this updated Silverlight Tools Add-In is available.
posted @
2007-12-02 02:24 崛起的程序員 閱讀(852) |
評論 (0) |
編輯 收藏
PYHYP-WXB3B-B2CCM-V9DX9-VDY8T
在開始>設置>控制面版>添加或刪除程序>卸載vs.net2008>出現卸載界面>點擊Next>輸入上面CD-key ->出現Success畫面。。激動ING
本人使用的是VS2008 RTM版..
Microsoft.Visual.Studio.Team.System.2008.Team.Suite-ZWTiSO
ed2k: Microsoft.Visual.Studio.Team.System.2008.Team.Suite-ZWTiSO.iso [3.83 Gb] 
ed2k: Microsoft.Visual.Studio.Team.System.2008.Team.Suite-ZWTiSO.nfo [5.8 Kb] 
[ Add all 2 links to your ed2k client ]
Microsoft.Visual.Studio.2008.Professional.Edition-ZWTiSO
ed2k: Microsoft.Visual.Studio.2008.Professional.Edition-ZWTiSO.iso [3.31 Gb] 
ed2k: Microsoft.Visual.Studio.2008.Professional.Edition-ZWTiSO.nfo [5.5 Kb] 
[ Add all 2 links to your ed2k client ]
Microsoft.Visual.Studio.Team.System.2008.Development.Edition
ed2k: Microsoft.Visual.Studio.Team.System.2008.Development.Edition-ZWTiSO.iso [3.81 Gb] 
ed2k: Microsoft.Visual.Studio.Team.System.2008.Development.Edition-ZWTiSO.nfo [5.5 Kb] 
[ Add all 2 links to your ed2k client ]
Microsoft.Visual.Studio.Team.System.2008.Team.Foundation.Server.Workgroup.Edition-ZWTiSO
ed2k: Microsoft.Visual.Studio.Team.System.2008.Team.Foundation.Server.Workgroup.Edition-ZWTiSO.iso [1.29 Gb] 
ed2k: Microsoft.Visual.Studio.Team.System.2008.Team.Foundation.Server.Workgroup.Edition-ZWTiSO.nfo [5.7 Kb] 
[ Add all 2 links to your ed2k client ]
Microsoft.Visual.Studio.Team.System.2008.Test.Load.Agent-ZWT
ed2k: Microsoft.Visual.Studio.Team.System.2008.Test.Load.Agent-ZWTiSO.iso [551.01 Mb] 
ed2k: Microsoft.Visual.Studio.Team.System.2008.Test.Load.Agent-ZWTiSO.nfo [5.7 Kb] 
[ Add all 2 links to your ed2k client ]
posted @
2007-12-02 02:21 崛起的程序員 閱讀(20625) |
評論 (30) |
編輯 收藏
注冊機下載地址
http://www.tkk7.com/Files/ioriqw/Altova%202008.rar
posted @
2007-10-30 16:23 崛起的程序員 閱讀(1001) |
評論 (1) |
編輯 收藏
摘要: 在網上找了一圈Ajax的Java框架,感覺不錯的只有兩個,一個是被提到比較多的DWR(Direct Web Remoting),另一個是剛剛1.0的Ajax4JSF。本文先用代碼說話,各用兩個框架開發同樣功能的Ajax輸入驗證的小程序。在最后表達一下鄙人對這兩個框架的淺見。·程序功能 頁面上有兩個輸入框,一個填用戶名,一個填密碼。兩個框空著時提示...
閱讀全文
posted @
2007-08-27 20:17 崛起的程序員 閱讀(566) |
評論 (0) |
編輯 收藏
Go to window-preferences-java-installed jre's- edit
and add the values
-Xms512m -Xmx512m -Xss256k
(or the amount of memory you want)
eclipse starts tomcat with those values, so your memory problems should be solved
posted @
2007-06-10 22:26 崛起的程序員 閱讀(381) |
評論 (0) |
編輯 收藏
有個系統隱藏的文件夾System Volume Information會達到1G甚至20G,這是系統還原的文件夾,這個目錄是WINDOWS對于大硬盤搜索方便的索引記錄文件!會在WINDOWS空閑時自動記錄,所以這個文件夾會越來越大,然后PF使用率不斷上升,導致機器卡住!&W&D.C g V b j [ a
我們可以禁用這個自動索引功能!打開搜索功能->改變首選項->不使用制作索引服務->不,不要啟用制作索引服務->確定。還有一件事,就是回到剛才的地方,下面還有一個“改變制作索引服務設置(高級)”,按下去,右鍵彈出的窗口中的那個索引服務->刪除,就好了!海騰數據中心服務器論壇 Y \ M z(R1{ O f ?&f t j9Y&] B `
SystemVolumeInformation\catalog.wci的文件用來存放索引文件,而且在系統空閑時,Windows會自動讀硬盤更新索引,安裝的文件越多,索引文件會越來越大。 D Y }&X
刪除索引服務:海騰數據、服務器論壇聯盟、win服務器、代理服務器,郵件服務器、代碼、程序、游戲下載、軟件、電腦技術、設計、圖片、信息發布 N i$y l z:M } 運行msconfig,然后選擇服務選項,找到IndexingService,將前面的小勾去掉,再刪掉文件夾即可。
|
posted @
2007-04-11 10:36 崛起的程序員 閱讀(1433) |
評論 (0) |
編輯 收藏
Introduction
Changing proxy settings of IE is a frequent requirement of mine. Then I got the idea of writing a tool by myself, at last. I have not found clear instructions on this. Many articles recommend to modify registry directly, but unfortunately their instruction is not enough. Most of them direct me to modify the following values in registry :-
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings]
"ProxyEnable"=dword:00000001
"ProxyServer"=":"
"ProxyOverride"=""
"DisablePasswordCaching"=dword:00000001
Details
I tested it and find that it does not work at least on my computer.( I access internet by ADSL connection.) So I backed up registry and modified proxy settings via Internet Explorer, finding that [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections] is also changed. So I wrote the following code snippet to change proxy settings:
Collapse
void ShowError(long lerr)
{
LPVOID lpMsgBuf;
if (!FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
lerr,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR) &lpMsgBuf,
0,
NULL ))
{
return;
}
MessageBox( NULL, (LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION );
LocalFree( lpMsgBuf );
}
void CieproxyDlg::OnBnClickedOk()
{
UpdateData();
GetDlgItemText(IDC_EDIT1,m_sIEProxy);
HKEY hk;
LONG lret=RegOpenKeyEx(HKEY_CURRENT_USER,
"Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings",
NULL,KEY_WRITE|KEY_SET_VALUE,&hk);
if(lret==ERROR_SUCCESS&&NULL!=hk)
{
TCHAR* pbuf=m_sIEProxy.GetBuffer(1);
lret=RegSetValueEx( hk,"ProxyServer",NULL,REG_SZ,pbuf,m_sIEProxy.GetLength());
DWORD dwenable=1;
lret=RegSetValueEx(hk,"ProxyEnable",NULL,REG_DWORD,
(LPBYTE)&dwenable,sizeof(dwenable));
RegCloseKey(hk);
}
const TCHAR* keyname3=_T(
"software\\Microsoft\\windows\\currentversion\\Internet Settings\\Connections");
lret=RegOpenKeyEx(HKEY_CURRENT_USER,keyname3,NULL,
KEY_READ|KEY_WRITE|KEY_SET_VALUE,&hk);
if(lret==ERROR_SUCCESS&&NULL!=hk)
{
DWORD dwtype;
char pbuf[256];
DWORD dwlen=sizeof(pbuf);
constchar* valname="Connection to adsl3";
lret=RegQueryValueEx(hk,valname,NULL,&dwtype,pbuf,&dwlen);
if(lret!=ERROR_SUCCESS)
{
ShowError(lret);
}
pbuf[8] = 3;
pbuf[4]=pbuf[4]+1;
constchar* p=m_sIEProxy.GetBuffer(1);
memcpy(pbuf+16,p,m_sIEProxy.GetLength());
char c=0;
for(int i=m_sIEProxy.GetLength();i<20;i++)
pbuf[16+i]=c;
m_sIEProxy.ReleaseBuffer();
lret=RegSetValueEx(hk,valname,NULL,REG_BINARY,pbuf,dwlen);
RegCloseKey(hk);
}
DWORD dwret;
SendMessageTimeout(HWND_BROADCAST,WM_SETTINGCHANGE,NULL,NULL,
SMTO_NORMAL,1000,&dwret);
}
void CieproxyDlg::OnBnClickedDisableProxy()
{
UpdateData();
GetDlgItemText(IDC_EDIT1,m_sIEProxy);
HKEY hk;
LONG lret=RegOpenKeyEx(HKEY_CURRENT_USER,
"Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings",
NULL,KEY_WRITE|KEY_SET_VALUE,&hk);
if(lret==ERROR_SUCCESS&&NULL!=hk)
{
DWORD dwenable=0;
lret=RegSetValueEx(hk,"ProxyEnable",NULL,REG_DWORD,
(LPBYTE)&dwenable,sizeof(dwenable));
RegCloseKey(hk);
}
const TCHAR* keyname3=_T(
"software\\Microsoft\\windows\\currentversion\\Internet Settings\\Connections");
lret=RegOpenKeyEx(HKEY_CURRENT_USER,keyname3,
NULL,KEY_READ|KEY_WRITE|KEY_SET_VALUE,&hk);
if(lret==ERROR_SUCCESS&&NULL!=hk)
{
DWORD dwtype;
char pbuf[256];
DWORD dwlen=sizeof(pbuf);
constchar* valname="Connection to adsl3";
lret=RegQueryValueEx(hk,valname,NULL,&dwtype,pbuf,&dwlen);
if(lret!=ERROR_SUCCESS)
{
ShowError(lret);
}
pbuf[8] = 1;
pbuf[4]=pbuf[4]+1;
lret=RegSetValueEx(hk,valname,NULL,REG_BINARY,pbuf,dwlen);
RegCloseKey(hk);
}
DWORD dwret;
SendMessageTimeout(HWND_BROADCAST,WM_SETTINGCHANGE,NULL,NULL,SMTO_NORMAL,
1000,&dwret);
}
Problem with above code is that existing Internet Explorer instances don't know the change of settings. What is more, changing registry directly is not an elegant method. Then the following must be more attractive :
Collapse
BOOL SetConnectionOptions(LPCTSTR conn_name,LPCTSTR proxy_full_addr)
{
INTERNET_PER_CONN_OPTION_LIST list;
BOOL bReturn;
DWORD dwBufSize = sizeof(list);
list.dwSize = sizeof(list);
list.pszConnection = conn_name;
list.dwOptionCount = 3;
list.pOptions = new INTERNET_PER_CONN_OPTION[3];
if(NULL == list.pOptions)
{
OutputDebugString("failed to allocat memory in SetConnectionOptions()");
return FALSE;
}
list.pOptions[0].dwOption = INTERNET_PER_CONN_FLAGS;
list.pOptions[0].Value.dwValue = PROXY_TYPE_DIRECT |
PROXY_TYPE_PROXY;
list.pOptions[1].dwOption = INTERNET_PER_CONN_PROXY_SERVER;
list.pOptions[1].Value.pszValue = proxy_full_addr;
list.pOptions[2].dwOption = INTERNET_PER_CONN_PROXY_BYPASS;
list.pOptions[2].Value.pszValue = "local";
bReturn = InternetSetOption(NULL,
INTERNET_OPTION_PER_CONNECTION_OPTION, &list, dwBufSize);
delete [] list.pOptions;
InternetSetOption(NULL, INTERNET_OPTION_SETTINGS_CHANGED, NULL, 0);
InternetSetOption(NULL, INTERNET_OPTION_REFRESH , NULL, 0);
return bReturn;
}
BOOL DisableConnectionProxy(LPCTSTR conn_name)
{
INTERNET_PER_CONN_OPTION_LIST list;
BOOL bReturn;
DWORD dwBufSize = sizeof(list);
list.dwSize = sizeof(list);
list.pszConnection = conn_name;
list.dwOptionCount = 1;
list.pOptions = new INTERNET_PER_CONN_OPTION[list.dwOptionCount];
if(NULL == list.pOptions)
{
OutputDebugString("failed to allocat memory in DisableConnectionProxy()");
return FALSE;
}
list.pOptions[0].dwOption = INTERNET_PER_CONN_FLAGS;
list.pOptions[0].Value.dwValue = PROXY_TYPE_DIRECT ;
bReturn = InternetSetOption(NULL,
INTERNET_OPTION_PER_CONNECTION_OPTION, &list, dwBufSize);
delete [] list.pOptions;
InternetSetOption(NULL, INTERNET_OPTION_SETTINGS_CHANGED, NULL, 0);
InternetSetOption(NULL, INTERNET_OPTION_REFRESH , NULL, 0);
return bReturn;
}
The usage is very straightforward:
const
char* connection_name="Connection to adsl3";
SetConnectionOptions(connection_name,"62.81.236.23:80");
DisableConnectionProxy(connection_name);
Existing Internet Explorer instances are notified by INTERNET_OPTION_SETTINGS_CHANGED
and INTERNET_OPTION_REFRESH
posted @
2007-01-25 20:13 崛起的程序員 閱讀(887) |
評論 (0) |
編輯 收藏
Written by Halatu Hubisi
引言
有JAVA開發經驗的朋友們一定碰到過下面的這種情況,那就是自己所開發的應用運行了一段時間后其性能或者響應速度會有明顯的降低.這是由多方面的原因造成的即有程序本身的優化問題,也有運行環境問題.此運行環境即包括硬件環境也包括軟件環境.大多數人第一個能想到的解決方法是提升硬件的配置而忽略了程序本身的運行環境JVM也提供了比較多的調優選項.本文將重點描述利用JVM的一些選項對GC進行調優.
約定:
1.讀者應具備一定JAVA的知識.
2.本文中的JVM選項均以SUN公司發布的HotSpot JVM 5為準(不過大多數的選項在JVM1.3,JVM1.4中也是可用的).
3.以JAVA_HOME下demo/jfc/SwingSet2/SwingSet2.jar為例進行說明.
4.閱讀本文需要一些關于GC的知識,可以到附錄A中了解這些知識。
關鍵字:
JVM(java虛擬機),調優,GC(垃圾回收)
JVM GC調優
為了能夠將JVM GC的調優能夠使用在具體的實踐當中,下面將利用若干個例子來說明GC的調優.
例1:Heap size 設置
JVM堆的設置是指java程序運行過程中JVM可以調配使用的內存空間的設置.JVM在啟動的時候會自動設置Heap size的值,其初始空間(即-Xms)是物理內存的1/64,最大空間(-Xmx)是物理內存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等選項可進行設置。Heap size 的大小是Young Generation 和Tenured Generaion 之和。
當在JAVA_HOME下demo/jfc/SwingSet2/目錄下執行下面的命令。
java -jar -Xmn4m -Xms16m -Xmx16m SwingSet2.jar
系統輸出為:
Exception in thread "Image Fetcher 0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "Image Fetcher 3" java.lang.OutOfMemoryError: Java heap space
Exception in thread "Image Fetcher 1" java.lang.OutOfMemoryError: Java heap space
Exception in thread "Image Fetcher 2" java.lang.OutOfMemoryError: Java heap space
除了這些異常信息外,還會發現程序的響應速度變慢了。這說明Heap size 設置偏小,GC占用了更多的時間,而應用分配到的執行時間較少。
提示:在JVM中如果98%的時間是用于GC且可用的Heap size 不足2%的時候將拋出此異常信息。
將上面的命令換成以下命令執行則應用能夠正常使用,且未拋出任何異常。
java -jar -Xmn4m -Xms16m -Xmx32m SwingSet2.jar
提示:Heap Size 最大不要超過可用物理內存的80%,一般的要將-Xms和-Xmx選項設置為相同,而-Xmn為1/4的-Xmx值。
例2:Young Generation(-Xmn)的設置
在本例中看一下Young Generation的設置不同將有什么現象發生。
假設將Young generation 的大小設置為4M ,即執行java -jar -verbose:gc -Xmn4m -Xms32m -Xmx32m -XX:+PrintGCDetails SwingSet2.jar,屏幕輸出如下(節選)
[GC [DefNew: 3968K->64K(4032K), 0.0923407 secs] 3968K->2025K(32704K), 0.0931870 secs]
[GC [DefNew: 4021K->64K(4032K), 0.0356847 secs] 5983K->2347K(32704K), 0.0365441 secs]
[GC [DefNew: 3995K->39K(4032K), 0.0090603 secs] 6279K->2372K(32704K), 0.0093377 secs]
[GC [DefNew: 3992K->23K(4032K), 0.0057540 secs] 6325K->2356K(32704K), 0.0060290 secs]
[GC [DefNew: 3984K->27K(4032K), 0.0013058 secs] 6317K->2360K(32704K), 0.0015888 secs]
[GC [DefNew: 3981K->59K(4032K), 0.0023307 secs] 6315K->2422K(32704K), 0.0026091 secs]
將程序體制并將Young Generation的大小設置為8M,即執行java -jar -verbose:gc -Xmn8m -Xms32m -Xmx32m -XX:+PrintGCDetails SwingSet2.jar,屏幕輸出如下(節選)
[GC [DefNew: 7808K->192K(8000K), 0.1016784 secs] 7808K->2357K(32576K), 0.1022834 secs]
[GC [DefNew: 8000K->70K(8000K), 0.0149659 secs] 10165K->2413K(32576K), 0.0152557 secs]
[GC [DefNew: 7853K->59K(8000K), 0.0069122 secs] 10196K->2403K(32576K), 0.0071843 secs]
[GC [DefNew: 7867K->171K(8000K), 0.0075745 secs] 10211K->2681K(32576K), 0.0078376 secs]
[GC [DefNew: 7970K->192K(8000K), 0.0201353 secs] 10480K->2923K(32576K), 0.0206867 secs]
[GC [DefNew: 7979K->30K(8000K), 0.1787079 secs] 10735K->4824K(32576K), 0.1790065 secs]
那么根據GC輸出的信息(這里取第一行)做一下Minor收集的比較。可以看出兩次的Minor收集分別在Young generation中找回3904K(3968K->64K)和7616K(7808K->192K)而對于整個jvm則找回1943K(3968K->2025)和5451K(7808K->2357K)。第一種情況下Minor收集了大約50%(1943/3904)的對象,而另外的50%的對象則被移到了tenured generation。在第二中情況下Minor收集了大約72%的對象,只有不到30%的對象被移到了Tenured Generation.這個例子說明此應用在的Young generation 設置為4m時顯的偏小。
提示:一般的Young Generation的大小是整個Heap size的1/4。Young generation的minor收集率應一般在70%以上。當然在實際的應用中需要根據具體情況進行調整。
例3:Young Generation對應用響應的影響
還是使用-Xmn4m 和-Xmn8m進行比較,先執行下面的命令
java -jar -verbose:gc -Xmn4m -Xms32m -Xmx32m -XX:+PrintGCDetails -XX:+PrintGCApplicationConcurrentTime -XX:+PrintGCApplicationStoppedTime SwingSet2.jar
屏幕輸出如下(節選)
Application time: 0.5114944 seconds
[GC [DefNew: 3968K->64K(4032K), 0.0823952 secs] 3968K->2023K(32704K), 0.0827626 secs]
Total time for which application threads were stopped: 0.0839428 seconds
Application time: 0.9871271 seconds
[GC [DefNew: 4020K->64K(4032K), 0.0412448 secs] 5979K->2374K(32704K), 0.0415248 secs]
Total time for which application threads were stopped: 0.0464380 seconds
Young Generation 的Minor收集占用的時間可以計算如下:應用線程被中斷的總時常/(應用執行總時?L+應用線程被中斷的總時常),那么在本例中垃圾收集占用的時?L約為系統的5%~14%。那么當垃圾收集占用的時間的比例越大的時候,系統的響應將越慢。
提示:對于互聯網應用系統的響應稍微慢一些,用戶是可以接受的,但是對于GUI類型的應用響應速度慢將會給用戶帶來非常不好的體驗。
例4:如何決定Tenured Generation 的大小
分別以-Xmn8m -Xmx32m和-Xmn8m -Xmx64m進行對比,先執行
java -verbose:gc -Xmn8m -Xmx32m-XX:+PririntGCDetails -XX:+PrintGCTimeStamps java類,命令行將提示(只提取了Major收集)
111.042: [GC 111.042: [DefNew: 8128K->8128K(8128K), 0.0000505 secs]111.042: [Tenured: 18154K->2311K(24576K), 0.1290354 secs] 26282K->2311K(32704K), 0.1293306 secs]
122.463: [GC 122.463: [DefNew: 8128K->8128K(8128K), 0.0000560 secs]122.463: [Tenured: 18630K->2366K(24576K), 0.1322560 secs] 26758K->2366K(32704K), 0.1325284 secs]
133.896: [GC 133.897: [DefNew: 8128K->8128K(8128K), 0.0000443 secs]133.897: [Tenured: 18240K->2573K(24576K), 0.1340199 secs] 26368K->2573K(32704K), 0.1343218 secs]
144.112: [GC 144.112: [DefNew: 8128K->8128K(8128K), 0.0000544 secs]144.112: [Tenured: 16564K->2304K(24576K), 0.1246831 secs] 24692K->2304K(32704K), 0.1249602 secs]
再執行java -verbose:gc -Xmn8m -Xmx64m-XX:+PririntGCDetails -XX:+PrintGCTimeStamps java類,命令行將提示(只提取了Major收集)
90.597: [GC 90.597: [DefNew: 8128K->8128K(8128K), 0.0000542 secs]90.597: [Tenured: 49841K->5141K(57344K), 0.2129882 secs] 57969K->5141K(65472K), 0.2133274 secs]
120.899: [GC 120.899: [DefNew: 8128K->8128K(8128K), 0.0000550 secs]120.899: [Tenured: 50384K->2430K(57344K), 0.2216590 secs] 58512K->2430K(65472K), 0.2219384 secs]
153.968: [GC 153.968: [DefNew: 8128K->8128K(8128K), 0.0000511 secs]153.968: [Tenured: 51164K->2309K(57344K), 0.2193906 secs] 59292K->2309K(65472K), 0.2196372 secs]
可以看出在Heap size 為32m的時候系統等候時間約為0.13秒左右,而設置為64m的時候等候時間則增大到0.22秒左右了。但是在32m的時候系統的Major收集間隔為10秒左右,而Heap size 增加到64m的時候為30秒。那么應用在運行的時候是選擇32m還是64m呢?如果應用是web類型(即要求有大的吞吐量)的應用則使用64m(即heapsize大一些)的比較好。對于要求實時響應要求較高的場合(例如GUI型的應用)則使用32m比較好一些。
注意:
1。因為在JVM5運行時已經對Heap-size進行了優化,所以在能確定java應用運行時不會超過默認的Heap size的情況下建議不要對這些值進行修改。
2。Heap size的 -Xms -Xmn 設置不要超出物理內存的大小。否則會提示“Error occurred during initialization of VM Could not reserve enough space for object heap”。
例5:如何縮短minor收集的時間
下面比較一下采用-XX:+UseParNewGC選項和不采用它的時候的minor收集將有什么不同。先執行
java -jar -server -verbose:gc -Xmn8m -Xms32m -Xmx32m SwingSet2.jar
系統將輸出如下信息(片段〕
[GC 7807K->2641K(32576K), 0.0676654 secs]
[GC 10436K->3108K(32576K), 0.0245328 secs]
[GC 10913K->3176K(32576K), 0.0072865 secs]
[GC 10905K->4097K(32576K), 0.0223928 secs]
之后再執行 java -jar -server -verbose:gc -XX:+UseParNewGC -Xmn8m -Xms32m -Xmx32m SwingSet2.jar
系統將輸出如下信息(片段〕
[ParNew 7808K->2656K(32576K), 0.0447687 secs]
[ParNew 10441K->3143K(32576K), 0.0179422 secs]
[ParNew 10951K->3177K(32576K), 0.0031914 secs]
[ParNew 10985K->3867K(32576K), 0.0154991 secs]
很顯然使用了-XX:+UseParNewGC選項的minor收集的時間要比不使用的時候優。
例6:如何縮短major收集的時間
下面比較一下采用-XX:+UseConcMarkSweepGC選項和不采用它的時候的major收集將有什么不同。先執行
java -jar -verbose:gc -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -Xmn64m -Xms256m -Xmx256m SwingSet2.jar
系統將輸出如下信息(片段〕
[Full GC 22972K->18690K(262080K), 0.2326676 secs]
[Full GC 18690K->18690K(262080K), 0.1701866 secs
之后再執行 java -jar -verbose:gc -XX:+UseParNewGC -Xmn64m -Xms256m -Xmx256m SwingSet2.jar
系統將輸出如下信息(片段〕
[Full GC 56048K->18869K(260224K), 0.3104852 secs]
提示:此選項在Heap Size 比較大而且Major收集時間較長的情況下使用更合適。
例7:關于-server選項 在JVM中將運行中的類認定為server-class的時候使用此選項。SUN 的Hot Spot JVM5 如果判斷到系統的配置滿足如下條件則自動將運行的類認定為server-class,并且會自動設置jvm的選項(當沒有手工設置這選項的時候〕而且HOTSPOT JVM5提供了自動調優的功能,他會根據JVM的運行情況進行調整。如果沒有特別的需要是不需要太多的人工干預的。SUN形象的稱這個機制為“人體工學”(Ergonomics〕。具體可以參考http://java.sun.com/docs/hotspot/gc5.0/ergo5.html
*.具有2個或更多個物理的處理器
*.具有2G或者更多的物理內存
提示:此選項要放在所有選項的前面。例如:java -server 其他選項 java類
附錄A:預備知識
.JVM中對象的劃分及管理
JVM根據運行于其中的對象的生存時間大致的分為3種。并且將這3種不同的對象分別存放在JVM從系統分配到的不同的內存空間。這種對象存放空間的管理方式叫做Generation管理方式。
1。Young Generation:用于存放“早逝”對象(即瞬時對象)。例如:在創建對象時或者調用方法時使用的臨時對象或局部變量。
2。Tenured Generation:用于存放“駐留”對象(即較長時間被引用的對象)。往往體現為一個大型程序中的全局對象或長時間被使用的對象。
3。Perm Generation:用于存放“永久”對象。這些對象管理著運行于JVM中的類和方法。
.JVM選項的分類
JVM有這么幾種選項供使用.
1.供-X選項使用的項目,又稱為非標準選項,不同廠商的此類型選項是有所不同的。例如:IBM的JVM用的一些選項在Sun的JVM中就不一定能生效。這種選項的使用方式如下:
java -Xmn16m -Xms64m -Xmx64m java類名
2.供-XX選項使用的項目,這種類型的選項可能要求有對系統信息訪問的權限。所以要慎用。這種選項的使用方式如下:
java -XX:MaxHeapFreeRatio=70 -XX:+PrintGCDetails java類名
3.java選項(即在命令行執行java后提示的選項).
java -server -verbose:gc -d64 java類名
.垃圾收集分類
在JVM中有兩種垃圾方式,一種叫做Minor(次收集),另一種叫做Major(主收集)。其中Minor在Young Generation的空間被對象全部占用后執行,主要是對Young Generation中的對象進行垃圾收集。而Major是針對于整個Heap size的垃圾收集。其中Minor方式的收集經常發生,并且Minor收集所占用的系統時間小。Major方式的垃圾收集則是一種“昂貴”的垃圾收集方式,因為在Major要對整個Heap size進行垃圾收集,這會使得應用停頓的時間變得較長。
.GC信息的格式
[GC [<collector>: <starting occupancy1> -> <ending occupancy1>, <pause time1> secs] <starting occupancy3> -> <ending occupancy3>, <pause time3> secs]
<collector> GC為minor收集過程中使用的垃圾收集器起的內部名稱.
<starting occupancy1> young generation 在進行垃圾收集前被對象使用的存儲空間.
<ending occupancy1> young generation 在進行垃圾收集后被對象使用的存儲空間
<pause time1> minor收集使應用暫停的時間長短(秒)
<starting occupancy3> 整個堆(Heap Size)在進行垃圾收集前被對象使用的存儲空間
<ending occupancy3> 整個堆(Heap Size)在進行垃圾收集后被對象使用的存儲空間
<pause time3> 整個垃圾收集使應用暫停的時間長短(秒),包括major收集使應用暫停的時間(如果發生了major收集).
.GC信息的選項
-XX:+PrintGCDetails 顯示GC的詳細信息
-XX:+PrintGCApplicationConcurrentTime 打印應用執行的時間
-XX:+PrintGCApplicationStoppedTime 打印應用被暫停的時間
提示:1.":"后的"+"號表示開啟此選項,如果是"-"號那么表示關閉此選項。
?????2.在不同的選項和不同的收集方式和類型下輸出的格式會有所不同。
附錄B:HotSpot JVM 選項
請參考JavaTM HotSpot VM Options
附錄C:其他資源
http://java.sun.com/docs/hotspot/gc5.0/gc_tuning_5.html
http://java.sun.com/docs/hotspot/gc5.0/ergo5.html
posted @
2006-11-28 19:23 崛起的程序員 閱讀(441) |
評論 (0) |
編輯 收藏
清晨的時候,
在近春園曲折的小路上走,
看見一個老人坐在湖邊悠閑地垂釣
依稀聽見濕漉漉的笛聲
婉約進樹林深處,
老人專注的神情似乎能
漾起水中的波影,
然后目光被長長的眉須剪斷,
撲閃在晨霧中捕捉著空氣.
這是怎樣一種美妙啊!
我在他身邊坐下,靜靜等待
魚兒的到來.半個小時過去了,
我的心情開始煩躁,
可老人的微笑一如既往.
"你們二十幾歲的年輕人啊,
心就像一個玻璃杯,
透明,盛滿了陽光."
老人說話跟垂釣一樣,安詳.
和仙風道骨的老人話別后,
我決定從粉綠的湖邊繼續往前走,
去探尋校園極致的景色,
享受年輕的心情,
呵呵,像玻璃杯……???????????????????????????????????
posted @
2006-11-19 19:57 崛起的程序員 閱讀(293) |
評論 (0) |
編輯 收藏
String strs = request.getParameter("yourstrs");
byte b[] = strs.getBytes("ISO-8859-1");
strs = new String(b);
簡潔寫法:
String convert = new String(request.getParmater("inputname").trim().getBytes("ISO8859_1"), "GBK");
posted @
2006-11-10 09:53 崛起的程序員 閱讀(240) |
評論 (0) |
編輯 收藏
關于tomcat4.0配置digest認證注意事項:
MemoryRealm作為事例
在server.xml中需要配置 紅色字體為注意事項
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
???????????????? debug="0" resourceName="UserDatabase"
digest="MD5"/>
密碼轉換成密文的加密格式為:
{username}:{realm}:{cleartext-password}.
到bin/目錄下找到digest.bat?文件執行如下命令得到密文
digest -a md5 admin:realm:admin
其中admin分別用戶和密碼,realm為所配置域名
admin:realm:admin:
ae7cdd2406201487bcce77064b5fe10c
紅色部分為加密后的密碼。
完:
作者: Liming
posted @
2006-11-09 04:30 崛起的程序員 閱讀(2006) |
評論 (0) |
編輯 收藏
這是一篇很有趣的文檔,所以摘要一下,其實類似閱讀筆記,好像是3/25發布的:
不知怎么翻譯Sweet Spots,難道翻譯為甜處、甜頭、蜜點、蜜穴?
本文基于對以下人的采訪(最后兩位的看法獨到還是自己看吧!):
JSF???????????? Jacob Hookom
RIFE????????????Geert Bevin
Seam????????????Gavin King
Spring MVC??????Rob Harrop
Spring Web Flow Rob Harrop and Keith Donald
Stripes???????? Tim Fennell
Struts Action 1 Don Brown
Tapestry????????Howard Lewis Ship
Trails??????????Chris Nelson
WebWork???????? Patrick Lightbody
Wicket??????????Eelco Hillenius
JSF(Jacob Hookom)
1、你認為你的framework的"甜點"在哪里?他最適合哪種類型的項目?
當你希望瀏覽器程序像桌面程序一樣工作的時候,你可以遵循標準并獲得大量第三方支持。它致力于降低復雜度。它允許你不與view和特定的action、參數傳遞、狀態傳遞、渲染打交道就可以進行高質量的開發,不管是否使用工具。
2、它不適合于什么樣的場景?在這些場景你推薦什么fremework?它是哪個?
它不適合大規模的、只讀(其實指讀為主)的網站。在這種情況推薦Struts,因為知識庫豐富(應該指文檔和用戶群)。
3、在下面提到的framework中,你試驗過他們么?如果試驗過,你比較喜歡哪個?你不喜歡哪個?
Seam:
優點:非常簡單直接
缺點:對于大項目過于簡單;沒有模塊化開發的好例子
Struts:
優點:巨大的文檔和用戶群;跟著它沒錯
缺點:狀態/行為的分離過于教條化
WebWork:
優點:比Struts易于使用
缺點:復雜的UI難于維護,UI代碼過于復雜(JSF作者對action
Framework都攻擊這一點)
Tapestry:
優點:概念新穎;可以應付復雜的UI
缺點:對于一個組件化(JSF主要競爭對手),它依然依附于page/action的概念
4、你的framework的未來會怎樣?對于用戶開發會有什么方便使用的變化?你會原生支持Ajax么?你們計劃支持它了么?
他認為JSF這個標準下這些應該有第三方提供。JSF(2.0)會提供"Partial Faces Request",它是Ajax實現。JSF也會增強annotation組建編程。
5、有對你們的framework的傳言需要澄清么?如果有,是哪個?很多JSF書都拿Struts作為對比。他認為這不能體現JSF的特點。他認為Struts和WebWork能做到的JSF也能做到。
6、你對Ruby on Rails的看法如何?
它與WebWork一樣好用,它的CoC(Convention over Configration)和腳手架非常好用。他認為CoC可以被應用在任何framework,他認為這是RoR最大的優點。他還認為RoR會走上其它framework的路(復雜性),因為人們需要自己的擴展。
RIFE(Geert Bevin)
1、你認為你的framework的"甜點"在哪里?他最適合哪種類型的項目?
你可以付出10%的工作量,得到其它framework的90%的......,它是一個full-stack framework(如RoR)。它吸收了成熟的分層框架的架構,并將共同的優點匯集在一起。提供了web continuation,POJO驅動的CRUD生成,可擴展的基于組建的架構,無session的狀態控制,關注REST作為API,雙向無邏輯模版引擎,集成了內容控制框架(CMS?)。每個層次的組建提供了可復用性(AOP,site,sub-site,page,widget,portlet等)。適合于團隊快速開發公共Web項目,適合喜歡開發可復用組件的人。
2、它不適合于什么樣的場景?在這些場景你推薦什么fremework?它是哪個?
團隊中的每個人都有其它framework的知識,難于培訓他們。開發狀態相關的服務器端Web組件,而不是用RIA或Ajax去實現。第三方支持很重要的情況下(可憐RIFE用戶群還不大)。他推薦這種情況下使用JSF。或者在XML為主要發布形式的情況下,推薦Cocoon。
3、在下面提到的framework中,你試驗過他們么?如果試驗過,你比較喜歡哪個?你不喜歡哪個?
他試驗過WebWork,JSF,Wicket。他喜歡WebWork的簡單,但是不喜歡它的模版方式(tag的template,應該),它也不提供組件封裝。他認為JSF的工具支持非常吸引人。Wicket的純Java實現很不錯,可惜XML配置很不爽。
4、你的framework的未來會怎樣?對于用戶開發會有什么方便使用的變化?你會原生支持Ajax么?你們計劃支持它了么?
關于Ajax,RIFE剛剛集成了DWR,而且選定以后也使用這個。集成Dojo,Scriptaculous,Prototype都很容易集成進來。
5、有對你們的framework的傳言需要澄清么?如果有,是哪個?這些錯誤理念:
??1)、RIFE的XML配置繁瑣
??2)、RIFE是continuations server
??3)、RIFE重新造輪子沒有提供新鮮東西
??4)、RIFE的模版語法很蹩腳過于簡單和業余
??5)、RIFE是基于request的framework
??6)、RIFE的功能太多,學習曲線陡峭
6、你對Ruby on Rails的看法如何?
RoR對Java社區的沖擊非常棒,元編成也得到了信任。RoR沒什么特殊之處,也沒有從Ruby語言獲益很多。
我討厭:它的模版。Partials(RoR中的組件)。URL的分散處理。Active Record提供了從數據庫schema而來的DSL,但是卻不是從domain model而來。沒有l10n和i18n支持。手動狀態轉換。不能在JVM運行(......)。實際上腳手架生成了實際代碼。Ruby缺少工具和IDE。
Seam(Gavin King)
1、你認為你的framework的"甜點"在哪里?他最適合哪種類型的項目?
擁有豐富用戶交互體驗的應用。方便實現多窗口的操作,回退的支持,單窗口多工作區,無狀態瀏覽。對商務流程(BPM)的集成是獨一無二的。Seam方便使用數據驅動的ORM。遵循JSF和EJB3,多任務支持(多窗口/多工作區),BPM的領先解決方案。
2、它不適合于什么樣的場景?在這些場景你推薦什么fremework?它是哪個?
不適合只是將數據從數據庫顯示到網頁的應用,這時應該使用PHP或RoR。不適合需要設計特別的HTML組件的情況,此時應該選用Tapestry或Wicket。還在使用JDK1.4的人們。還有那些喜歡Struts的人(嘿嘿,夠狠)。
3、在下面提到的framework中,你試驗過他們么?如果試驗過,你比較喜歡哪個?你不喜歡哪個?
JSF:喜歡他的事件/交互模型。喜歡他的EL和模型綁定。不喜歡那么多XML(為什么沒有annotation)。創建自己的controls太難了。
Tapestry:非常好。form驗證是它的殺手锏!模版方式很有創意。不過非基于POJO的組件模型則讓我對它失去興趣。
RIFE:這個東西很怪,但是有創業也有趣。我想進一步學習。如果學習先要自費武功:D
Struts:這個東西的模型view綁定太復雜了。東西已經過時了。
WebWork:比Struts好一點,不過也過時了。XWork曾經是個很好的實現,不過現在也過時了。
4、你的framework的未來會怎樣?對于用戶開發會有什么方便使用的變化?你會原生支持Ajax么?你們計劃支持它了么?
Portal支持。遠程框架Seam Remoting Framework(Ajax)。模版消息的工具支持。以后還要集成ESB,計劃引擎和異步支持。
5、有對你們的framework的傳言需要澄清么?如果有,是哪個?
這些都不是真的:JSF不能處理GET requests。JSF post后無法redirect。JSF不能與REST共存。
6、你對Ruby on Rails的看法如何?
它是PHP的很好替代品。如果它有一個正經一點的持久化層它就可以和Java競爭了。
Spring MVC(Rob Harrop)和Spring Web Flow(Rob Harrop and Keith Donald)
1、你認為你的framework的"甜點"在哪里?他最適合哪種類型的項目?
Spring MVC:
穩定可擴展,支持了i18n、文件上傳、異常處理,這些穩定的支持給開發者堅實的工作基礎。是最佳實踐,告訴你怎么做是最好的。與Spring集成,領先的IoC遠生支持。支持,Spring社區活躍和龐大。Struts開發者可以平滑過渡。適合多種項目,可選的多種result類型。
Spring Web Flow:內置任務處理引擎,支持線性處理過程中的持續狀態。抽象,減少開發的關注點。適合多種項目類型,插件支持Spring MVC、Struts、JSF等。
2、它不適合于什么樣的場景?在這些場景你推薦什么fremework?它是哪個?
Spring MVC:不適合需要組件化開發的場景。它是一個request驅動的MVC。那些場景推薦JSF或Tapestry。
Spring Web Flow:處理線性頁面流,不適合一般的"自由瀏覽"。當然Spring Web Flow可以與request驅動或者組件驅動共存。
3、在下面提到的framework中,你試驗過他們么?如果試驗過,你比較喜歡哪個?你不喜歡哪個?
Spring框架支持Struts和JSF集成。
4、你的framework的未來會怎樣?對于用戶開發會有什么方便使用的變化?你會原生支持Ajax么?你們計劃支持它了么?
Spring MVC:簡化JSP標簽。更多的MVC配置schema。CoC風格的默認控制器、URL影射、view,學習Rails和Stripes的優點。增強數據綁定和驗證(支持范型綁定)。Portlet支持。Spring也要接受Ajax,使用DWR庫。
Spring Web Flow:一大堆,關心的可以自己看......
5、有對你們的framework的傳言需要澄清么?如果有,是哪個?
Spring MVC難于配置。在Spring 2.0,將會改善,可以使用自己定義的基于schema的配置。
6、你對Ruby on Rails的看法如何?
Spring MVC:RoR非常有趣。不過現在就拿出來用還有點幼稚。這里舉了個例子,關于變量的復數形式的處理,RoR會使用這樣的CoC風格來處理變量list,而Spring MVC也實驗了種種風格,但是受到的結果卻很差。人們認為英語的復數很古怪,沒有一定的規則,所以會帶來混亂,如(person -> people)。所以Spring ...
Stripes(Tim Fennell)
1、你認為你的framework的“甜點”在哪里?他最適合哪種類型的項目?
與Spring MVC、WebWork等相同。它提供高質量action驅動的框架的同時,盡量簡化配置,增進開發效率。Stripes適合復雜的數據交互的場合。這種情況下綁定驗證的強項就完全體現出來了,能夠很好的處理form和map轉換等。
2、它不適合于什么樣的場景?在這些場景你推薦什么fremework?它是哪個?
所有的action驅動的framework都適合用戶在非Ajax驅動的情況下在一個頁面進行松關聯(loosely
related)和無狀態交互的情況。適合每次都刷新的頁面。管理多窗口間持續狀態的應用會比較麻煩,此時應該選擇JSF。不過我認為90%以上的Web程序都是前者,JSF只適合剩下的那9%,AJAX對于管理無狀態UI更加適合。客戶端不需要AJAX,則可以看看Wicket,它更加簡單。
3、在下面提到的framework中,你試驗過他們么?如果試驗過,你比較喜歡哪個?你不喜歡哪個?
用過Struts、WebWork、Spring MVC。其中Struts做過商業項目,不過這個東西帶來的麻煩遠比帶來的效率提升要多。它認為這些MVC都有三個缺點:暴露了過多的復雜性給可發者。沒有提供足夠的開發便利性,沒有提供足夠多的錯誤和提示信息,也沒有date格式化等小的便利(其實有)。穩當太差。
4、你的framework的未來會怎樣?對于用戶開發會有什么方便使用的變化?你會原生支持Ajax么?你們計劃支持它了么?
1.3要加入Inteceptor,實現AOP功能。驗證系統要加強。支持Ajax。我還在尋找一個好的Ajax/javascript庫。
5、有對你們的framework的傳言需要澄清么?如果有,是哪個?
這些觀點:1、Stripes使用了annotation代替XML,只是換湯不換藥:由于元數據更接近代碼,所以修改默認的配置非常方便,不像XML那樣復雜,這是實質的變化。2、Annotation意味著你只能有一套配置:我認為90%的action都有自己的一套配置!Stripes會根據繼承關系尋找Annotations,子類的annotation會覆蓋父類的,因為像validation都是可以繼承的,如果特別需要還可以覆蓋。這樣很合理。在1.3中允許validations基于UI事件進行。它向后兼容,不需要可以不用。
6、你對Ruby on Rails的看法如何?
我認為Java社區有很多可以從RoR學習的地方。Stripes學習了RoR的前端部分,開發者可以減少配置量。但是RoR的RHTML讓我想到了以前的JSP中混亂的scriptlet。而后面的ActiveRecord是一個很好的理念,實現的也很好。ActiveRecord比Hibernate等復雜的ORM工具要容易理解,因為這樣的特點RoR才引起了這么大的波瀾。
Struts Action 1(Don Brown)
1、你認為你的framework的“甜點”在哪里?他最適合哪種類型的項目?
文檔和用戶基礎,書籍和背后的支持。容易雇到人(也容易找工作)。雖然其他項目的理念比這個要先進,但是這些不算什么。實際上,Web層是很容易也很直接的。
2、它不適合于什么樣的場景?在這些場景你推薦什么fremework?它是哪個?
如果你需要portlets或者復雜的頁面(顯示很多東西),那么Struts要么無法工作要么太枯燥。這種情況你需要一個基于組件的framework,如JSF、Tapestry/Wicket。
3、在下面提到的framework中,你試驗過他們么?如果試驗過,你比較喜歡哪個?你不喜歡哪個?
這些我基本都試驗過,他們每個都工作的很不錯。
4、你的framework的未來會怎樣?對于用戶開發會有什么方便使用的變化?你會原生支持Ajax么?你們計劃支持它了么?
Struts Action2基于WebWork2,很快會開始。現在已經支持Ajax了,我們在尋找更加容易的開發方式,JSF支持(Struts Shale),continuation支持,還有支持更多的腳本語言(BSF擴展腳本撰寫Action)。
5、有對你們的framework的傳言需要澄清么?如果有,是哪個?
Struts太過時了,而且也不酷,難于使用。但是你可以自己修改或者擴展它。我認為團隊對于你的限制遠大于framework對你的限制。
6、你對Ruby on Rails的看法如何?
不需要D&D工具,旨在幫助開發人員提高開發效率的好例子。我們在Action2中將學習它的先進理念。
Tapestry(Howard Lewis Ship)
1、你認為你的framework的“甜點”在哪里?他最適合哪種類型的項目?
我想Tapestry對于中等規模或者大規模的應用會帶來很多好處(甚至你可以在單頁面的應用程序中獲得好處)。這里有允許你創建新的組件的良好工具。Tapestry不關心數據從哪里來,很多“項目類型”都基于切面(aspect)(如CRUD vs. RSS feed vs. etc.)。我認為Tapestry非常容易與IoC集成(HiveMind或與Spring),方便進行測試。
2、它不適合于什么樣的場景?在這些場景你推薦什么fremework?它是哪個?
我在其它Java framework中沒有找到到強于Tapestry的優點。但是對于RoR,我自己沒有使用過使用,很難說RoR中的項目應該是什么樣子。我沒有仔細對比過RIFE,它看起來受了RoR影響,尤其是類似ActiveRecord的數據訪問層。但是如果你的應用需要特定的URL格式,那么在Tapestry中奮戰勝算不大。
3、在下面提到的framework中,你試驗過他們么?如果試驗過,你比較喜歡哪個?你不喜歡哪個?
在這兩年來我沒怎么嘗試過Tapestry以外的東西。我沒怎么學習RoR,因為時間太有限了。
4、你的framework的未來會怎樣?對于用戶開發會有什么方便使用的變化?你會原生支持Ajax么?你們計劃支持它了么?
Tapestry 4.0有很好的Ajax支持,通過Tacos庫。而Tapestry4.1還要進一步強化這方面的支持。
Tapestry 5.0提供了明顯的改進:沒有abstract類(Tapestry的怪癖:)。沒有強迫的繼承關系。對屬性進行annotation而不是方法。沒有XML,只有模版和annotaions。只能類裝載,自動尋找類的變化。最小化API,超越annotaion。面向方面(Aspect-oriented)模塊構造,使用mix-ins。
5、有對你們的framework的傳言需要澄清么?如果有,是哪個?
Tapestry3.0還不容易測試,4.0改善了一些。Tapestry只是個人秀;實際上我們有很多活躍的貢獻者。Tapestry的學習曲線非場陡峭。它只有漂亮的模版實現;實際上Tapestry的特點在于狀態管理(允許對象存儲狀態,而不是多線程的單例來管理requests之間的游離和持久狀態)
6、你對Ruby on Rails的看法如何?
很有影響力。但是模版的實現非常丑陋。我聽到了很多意見,關于RoR的優缺點。基于我的基本理解,這些觀念對Tapestry4產生了影響(它對Tapestry 5影響更深)。
RoR意味著限制了你的選擇:如果你選擇RoR那么就要尊旬它的實踐(CoC..),看起來你的錢會花的恨值。這些類似Microsoft的哲學。而Java更崇尚給你更寬松的選擇,不限定你使用的工具,但是曖昧的說這需要你對你的工具理解更深。不僅對Tapestry,還對于JEE、Spring這寫entire stack的框架,需要從RoR學習,不僅提供工具,還需要提供整套的解決方案。
Trails(Chris Nelson)
1、你認為你的framework的“甜點”在哪里?他最適合哪種類型的項目?
Trails的應用程序只需要Web界面和持久化的domain model就可以了。Trails給你的domain
model快速的提供一個界面,除了POJO自己不需要附加的代碼。Trails允許你修改界面的外觀和行為,包括驗證、i18n、安全。這些都不需要java代碼生成,不喜歡代碼生成的人應該感覺很舒適。
2、它不適合于什么樣的場景?在這些場景你推薦什么fremework?它是哪個?
Trails講究夠用就好。它允許你快速交付,問問你的客戶:“這樣夠好么?”。這會改變你的工作流程,當然這不是可以覆蓋所有需求的解決方案。當UI需求很高,Trails沒有優勢。我認為Trails適合于混合的應用,對于管理員他們只需要夠用就好,那么就可以使用Trails。其它的部分我們可以訂制開發,我們在使用Tapestry、Hibernate、Spring來實現這些部分,Trails正是基于它們。對于非交互的應用,Trails也不適合,如報表應用,可以考慮Eclipse BIRT。
3、在下面提到的framework中,你試驗過他們么?如果試驗過,你比較喜歡哪個?你不喜歡哪個?
我用Struts很多。它曾經是偉大的framework。主要的缺陷是它不能自動幫定數據到domain model。我也研究過JSF,它比Struts強,但是自定義組建非常難。Tapestry非常便于自定義組建,尤其對于建立高階組件(有其它組件組成的)非常方便,Trails正在使用它。
4、你的framework的未來會怎樣?對于用戶開發會有什么方便使用的變化?你會原生支持Ajax么?你們計劃支持它了么?
對于Trails來說我們站在巨人的肩膀上。Tapestry在ajax功能作了很多努力,所以Trails也不難與其共舞。但是我們需要創建更多的例子來演示這些。我們也致力于讓Trails容易介入到已經進行的項目中。以后Trails還要加入基于實例的安全(instance-based security)(目前正在使用基于角色的role-based),還有method invocation。
5、有對你們的framework的傳言需要澄清么?如果有,是哪個?
Trails是對RoR的移植。Trails的名字來自Rails。它是基于Rails的理念,但不是對它的移植。
6、你對Ruby on Rails的看法如何?
我認為我們有很多需要從RoR學習的地方,那將幫助我們享受開發Web程序的愜意。
posted @
2006-08-18 00:02 崛起的程序員 閱讀(189) |
評論 (0) |
編輯 收藏
程序員創業三關
當人們還在浩嘆第一次網絡泡沫破滅的時候,互聯網已經悄悄迎來了它的第二個春天;從某種意義上看,甚至已經進入了夏天——熱烈但不乏浮躁、興奮但失之膚淺。某位投資人聲稱今年總共有三十億美金資本進入中國,言下之意,大家都可以甩開膀子大干快上,登陸納市不好說,搞筆錢進來花差花差多半是沒問題的。
另一方面,程序員創業,在中國乃至國外,都不是什么新鮮事兒。我們是那么一群聰明、優秀的家伙,大腦發達,點子就像啤酒的泡沫,撲騰撲騰直往外冒,天生我才,有什么做不到的呢?遙想比爾蓋茨當年,西裝革履,談笑間,多少豪杰灰飛煙滅……
于是我看到,無數公司成立了,眼看他雄心勃勃,眼看他一敗涂地。成敗固然不足以論英雄,然而英雄卻不得不面對可能的成敗。可惜的是,程序員朋友們在創業的時候,往往沒有做好充分準備。據一些資料顯示,百分之七十五的新創公司,會在兩、三年內倒閉。筆者也曾經見過許多程序員創業失敗的個案;成功或不成功,有很多因素制約;對于立志創業的程序員,至少應該突破三關。
第一是模式關。你的創業計劃,也許起源于靈機一動。可惜的是,好點子并不能保證你創業成功。我相信多數程序員的點子,尚不至于低級到靠軟色情、盜版、惡性SEO等等下作手段去騙取廣告費的地步,但怎么從點子變成盈利模式,卻是讓很多創業者迷惑的事情。在一些業界聚會上,總聽到類似“只要有流量,總有辦法賺錢”之類的說法,在2000年持同樣言論的創業者,多數已經成為失敗的先烈,因為他們始終沒明白,賺現錢的生意才是好生意。三大門戶成功的要點,在于他們想出辦法,把流量轉化為盈利模式。缺乏有效的模式,流量只是成本。確定有效經營模式、組建有力創業團隊,是首要任務。
第二是管理關。從程序員變成管理者,是艱難的過程。你得明白兩件事:一、管理和寫程序一樣,是門科學;二、人和計算機不一樣,人有感情、會出錯。協調溝通能力,是程序員創業必備的素質。曾經眼見一些項目經理,和手下技術人員通過郵件爭辯不休,甚至發展到在Blog上互相嘲諷,這樣的管理,可謂徹底失敗。另一個極端是,和手下稱兄道弟、一團和氣,工作被感情所左右,酒肉害了朋友。管理有那么難嗎?我看未必。只做對公司有利的事,就是根本原則。在和你的手下打交道時,請三思:我這么做,對公司有好處嗎?對事業有好處嗎?如果答案是否定的,那你需要另一個解決方案。
第三是堅持關。一位多次創業不成功的朋友告訴我,他總結了一條“三年定律”,即任何事如果不能堅持三年,則一定失敗。誠哉斯言!另一位朋友說,中國人相信機會,西方人相信方向和時間,雖有些偏激,卻也不乏道理。許多程序員都屬于思維活躍、點子特多的一類人,當有新鮮的想法出來時,他們傾向于放棄或冷落手上正在執行的計劃。點子復點子,點子何其多,每天新點子,萬事成蹉跎。西諺有云,雙鳥在林不如一鳥在手;吃到嘴里的鴨子才是好鴨子,湖里那只鴨子看起來比較肥?也許吧,不過,吃了這只鴨子再去涉水抓那只,是不是更有把握呢?
文短意深,未盡之處不及一一道來。奉上忠言數句,與程序員朋友們共勉:你永遠不是最聰明的人;手下比你強是好事;創業不怕起步晚,只怕起個不停。
posted @
2006-08-15 14:49 崛起的程序員 閱讀(278) |
評論 (0) |
編輯 收藏
在前些日子舉辦的2005年中國國際廣播電視信息網絡展覽會上,瑞福特集團推出了“視訊夢網”的互動視訊運營平臺,在網絡電視正在火熱的時候,“視訊夢網”的出現引起了很多人的關注。
推出“視訊夢網”品牌的互聯天下將提供代收費服務,成為連接各SP與用戶之間的紐帶;并立志成為優秀的客戶聚集者,通過統一的服務品牌和平臺品牌建立并維持商業價值鏈上的多種客戶關系,集中業務流量,形成龐大的用戶規模。從這個商業模式上來看,很明顯有模仿移動夢網的意味,從而使得移動夢網的模仿者又多了一個——自從移動夢網為中國移動帶來巨大的成功以來,“聯通在線”、“互聯星空”、“天天在線”等都可以看到它的影子。有趣的是,移動夢網實際上也是模仿日本NTT DoCoMo的i-mode模式,模仿一定能夠帶來成功嗎?
即便是中國成功的企業家在談到創新和模仿時也有不同的看法,在不久前的一次論壇上,遠大空調的張躍和泰康人壽的陳東升對此的觀點截然不同,陳東升有一個著名的觀點:"創新就是率先模仿"。他兩次創業,"模仿"都起了很重要的作用。而張躍對“模仿”卻不以為然,遠大走的就完全是一條創新的路子。張躍總是時時不忘創新,認為這才是企業的生命力所在。
兩個人的觀點雖然不同,但他們達到的結果卻很相似——他們都成功了。有人把創新分成不同的層次,原始性創新可算是“視訊夢網”的尖端、中間是創意型的技術改造、而處于金字塔底座的是大量的模仿性創新。張躍可能更重視前兩個層次的創新,而陳東升更重視低層的創新。事實上模仿性創新可以發揮很重要的作用,日本企業其實就是這方面的典范,而在“學習日本經驗”的運動中施樂公司率先實行的標桿管理,里面也有模仿性創新的因素。
所以,單純地談模仿是否能成功恐怕并沒有多大意義,模仿移動夢網的瑞福特能否成功關鍵是看模仿中有沒有創新,移動夢網的成功也是在于模仿中有創新。陳東升走遍各國探訪先進的保險公司,其實是有選擇的學習,集眾家之長為己所用,也是一種創新。
模仿中最重要的就是不要失去自我,如果只是一味的模仿,沒有創新,那最終的結果可能就會像邯鄲學步的燕人一樣,沒學會別人,自己也不會走路了,只有爬著回去了。
Re:企業戰略:創新還是模仿?
日本人的創新能力強嗎?日本的科技我想在世界上應該有一定地位的.小日本的企業堅持一點:模仿+改良=創新.你有能力創新嗎??沒有或者不值得的話,那就請模仿吧!等把人家的技術的消化了再去創新!我想管理思想發展到今天我們都提倡學習型組織,遲早要到思考型組織,接下來就是創新型組織.創新是永遠的主題,是大創新還是小創新?不同階段的企業其策略重點也是不一樣的,總的來說中國的企業大部分還是應該走模仿的道路,因為制造工廠說白了就是成本打天下!我們慈溪有個非常了不起的企業叫做"卓力"做電器的,大部分是出口生意.他的技術永遠不會落后于他人,因為他會把全世界最新的產品買過來模仿.他的核心競爭力就是不斷提高的比別人快一步的模仿力,這是一種能力!所以模仿和創新不是矛盾,也許會有一個境界的問題,但是我認為側重點應該在模仿上,因為我們的發展階段跟人家不一樣.小企業多.連國家都說我們要抓大放小,小的一放,任何技術資源優勢都沒有,國家又不管,怎么辦,唯一的優勢就是流動----人才的流動,更重要的是信息的流動!
posted @
2006-08-07 14:41 崛起的程序員 閱讀(282) |
評論 (0) |
編輯 收藏
?????康盛世紀首席執行官戴志康(25歲),
PC
POP首席執行官李想(25歲),MySee首席執行官鄧迪(25歲)、總裁高燃(25歲)、技術主管張鶴翔(24歲),163888翻唱網首席執行官鄭立(24歲),MaJoy總裁茅侃侃(23歲),非常在線首席執行官趙寧(23歲),“創智贏家”暢網科技首席技術官陳曦(24歲)……當這樣一批二十多歲的精英集中出現在人們的視線中時,不由得讓人驚呼,“80后”財富新生代正在崛起。
????似乎是數位少年作家的嶄露頭角,讓人們開始注目“80后”。而當在人們眼中的“80后”還是代表著浮躁和反叛時,這個詞卻在悄悄地與財富畫上連接符號,一批極為年輕的財富新貴的出現似乎是一夜之間,同時顛覆了人們心目中
企業家
的傳統印象。
???
???也正由于他們的年紀之輕和擁有的財富之重,這段時間來,他們不斷受到媒體和公眾的追捧。
????看看上述這些代表人物從事的行業就知道,這批“80后”財富新貴的共同特點是夾了一本叫“互聯網”的大課本匆匆上路了。互聯網這座虛擬時空里的“大學”,在很多層面上反叛著以一間講堂、一套書本、一種方言、一個系統為依托的傳統
教育
。
????在李想看來,這正是“80后”的一代人所具有的互聯網精神:完全不顧忌那些別人認為是必須去做的傳統,破除墨守成規,只做最正確的事。
????和李想說話,你會發現他始終思路清晰、方向明確,回答每個問題不超過3句話,也挑不出一點廢話。“我的方向和目標很明確,一開始我就知道我的事業方向就是互聯網,然后我會確定每一個階段的目標,一個一個去實現,所以我不會受到誘惑去燒錢,也不會因為碰到困難就放棄。”
????“像李想、戴志康這批‘80后’創業家的優勢就在于他們創新能力很強,敢于嘗試,想了就做。不像70年代的人干什么都思前想后,以致錯過很多機會。”中華英才網總裁、著名人力資源專家張建國說:“但他們的問題是自我意識太強,而管理企業是要靠組織體系和團隊協作的,因此,靠一個好的創意可以成就一個企業,但企業做大以后怎么管理好,這可能是‘80后’企業家應該注意的問題。”
????和張建國基本同齡的戴光對于兒子戴志康也有類似的擔心,“你可以憑一項技術創業,但公司做大以后,如何從一個技術天才的角色中脫離出來,完成一個管理者的轉型,是一個大問題”。
這些擔心已經是李想們正在思考并一直著力解決的問題。
????“2003年時我的性格還是典型的‘80后’,太自我,不太考慮他人的感受。這給了我很多教訓,讓我慢慢改變,慢慢學會跳出來觀察自己,學會了解每一個員工的性格和想法。”李想說,“而且我開始嘗試用心跟別人溝通,而不是用腦子。用腦子太累,大家互相猜來猜去,我喜歡直截了當,怎么想的就怎么說。后來我發現其實大部分人都喜歡這種溝通方式,包括那些很有名的CEO們。所以規則不是不可以改寫的,關鍵是你去不去做。”
????這正是“80后”財富新貴的共同特點,他們擁有與年齡不相符的成熟和老練。
????本期,我們走近“80后”財富新貴中的兩位:李想和戴志康,也走訪了其中一位的父親,希望能從父輩的教育方式上對這批財富新貴的成功緣由有所挖掘。
????一個沒有上過大學,一個做了大學的“半路逃兵”,李想和戴志康都沒有受過完整的高等教育,但他們卻創造了奇跡。
????這批沒有接受正規高等教育卻創業成功的年輕企業家的崛起,再次引發對現行高等教育的爭議,中國高校究竟該培養什么樣人才的問題又一次被提起。
????在關注他們成長的同時,我們也期待他們在今后的路上走得更加穩健和長久。
????見到25歲的PCPOP網首席執行官李想時,他的公司一片忙亂,所有的會議室都被騰出來接待面試者,李想準備繼續擴大已有的100多人的團隊,而他們2004年還顯得空蕩的公司變得擁擠不堪。李想說他已經在中關村一個新建的寫字樓里租下了比現在大一倍的“新家”,馬上就要搬家了。
????作為中國第三大中文
IT
專業網站——PCPOP網的創始人,李想持有公司50%以上的股份,身家在1億元以上,網站去年的營業額收入近兩千萬元,利潤一千萬元,取20倍的市盈率,市場價值兩億元。但李想的野心決不僅限于此,“今年的營業額要達到去年的2.5倍,明年要超過1億元,然后2008年達到一個上市的標準,這是我們未來幾年發展的一個方向。”
????這個野心勃勃的年輕人8年前還是一個上不起網的高中生,當時一小時8元的上網費外加一小時4元的電話費對于一個孩子來說實在昂貴,后來上網費用降到只需一小時1元,他就是那時候開始接觸互聯網的,“我一碰互聯網馬上就迷上了,當時很單純,就是因為可以在網上跟志同道合的人交流、學習知識”。
李想很快就開始做自己的IT資訊網站,網站的訪問量很快就達到五六千人。當達到一萬人時,就有
廣告
商開始找他,要做廣告,訪問量一千次10元,‘我當時想,閑著也是閑著,就給他掛上了”。
????沒有在意的李想兩個月后收到了廣告商6000元的付款,“我當時也很吃驚,這比我父母一個月加起來掙的還多。”不經意間挖到自己的第一桶金,本來心思就不在讀書上的李想終于在高三畢業時作出了一個大膽決定:放棄考大學,自己創業。
????與李想同歲、同樣靠互聯網起家的康盛世紀科技有限公司CEO戴志康卻是個從小和電腦泡到大的人。戴志康出生在大慶一個高級知識分子家庭,父親戴光是大慶石油學院的博士后。還在上小學的戴志康沒事就去鼓搗家里的電腦,從286到586,家里的電腦一次次為他升級,戴志康編程的本事也越來越高。
????2000年,戴志康竟然經過高考前一個月的突擊準備考進一所知名大學的
通信
工程專業,這讓老師同學大跌眼鏡。然而進入大學一年級后,戴志康便很少在學校,而是自己在外創業。“我當時在外面租了個月租300塊錢的房子,一天差不多15個小時都泡在電腦前面,悶頭開發Discuz!”。
????Discuz!是一套能自動生成社區的軟件,能讓不懂技術的人也能管理自己設計的網絡社區。剛開始研發時,戴志康并沒打算以此創業,“我想畢業后找個好工作,所以開始研發Discuz!時只是興趣,就想證明自己的能力。但在研發過程中,當我產生以此掙錢的念頭時,就不再想找工作了。”
????現在,Discuz!已經是社區軟件領域的老大,戴志康也開始進行公司的轉型,把產品免費供應給客戶,轉而從為客戶提供服務中獲取收入。這個仍習慣于吃學校食堂、穿地攤衣服卻開著銀灰色
寶馬
的年輕人,談起自己公司的發展方向頭頭是道,老練得讓人有些超出想像。
????寬松的家庭教育造就了創業素質
????戴志康的辦公室立著一個空空的書架,“我不喜歡看書,我認為書是用來查的,不是用來翻的,我討厭被動地接收信息,我喜歡從生活中掘取信息”。戴志康的學習與常人理解的不同,他既不靠學校也不靠書本,而是從生活的細節中學習。
????經常和朋友聊天到凌晨的戴志康,從中“偷學”到不少東西。
“另外,我喜歡獨立思考。只有獨立的人才會堅強。當遇到看似解決不了的困難時,不獨立的人馬上想到的是尋求幫助。但在一個商業社會里如果沒有利益的關聯,沒有人會幫你,你獲得了別人的幫助也就意味著自己商業利益的損失。”戴志康說,“再有,勇氣和執著是創業必須的基本素質,而這兩點獨立的人很容易獲得。”
????戴志康把這種獨立思考能力的養成歸功于家庭教育,“我父母的教育方式比較西化,給我很大的空間。當然,父母同時也要我自己負責任,什么都靠自己,不到萬不得已他們不會伸手幫忙。而且我父母都是老師,每天和年輕人接觸,心態也比較年輕。”
????戴志康的父親戴光在向筆者總結他的教育方式時說,對孩子的培養不能限制得太死,要給孩子建議而不是命令,孩子覺得對的要采納,要讓他自己思考,不能給現成的答案,這樣孩子才能有自信、有想法,不是一塊只會跟著別人的木頭。
????“我覺得戴志康之所以能取得一些成就,是他發揮了自己的特長,大學里就有了自己的產品,他的創造能力和創新思維特別強,又有敢想敢干的冒險精神,還有就是這孩子是個踏踏實實干事的人,能容得下事、容得下人。”戴光這樣評價自己的兒子。
????無獨有偶,李想同樣來自一個環境寬松的家庭,他也把自己最重要的創業素質歸結為“獨立思考和總結能力強”以及不斷學習的能力。“我小學時父母給的是命令,初中時給的是建議,高中時是從朋友的角度提出參考,到了高中以后就是信任了。父母給了我很多獨立思考的機會,我基本沒有受過什么束縛。”李想說。
????財富新貴引發教育新思考
????“因為出了我們這樣一批人而在社會上引起什么‘高等教育無用論’,純屬瞎扯。現實是大學里沒有目標、隨波逐流的人太多了,所以我們這樣目標明確并堅持下來的人才顯現出來。
????”沒有上過大學的李想說。
????李想坦言,沒有上大學的確是自己的一個遺憾,因為人生中缺少了一份體驗。“如果你有明確的目標,大學絕對是一個非常好的學習場所。但相對于上學來說,更重要的是一個人要有目標和方向。”
????李想把現在的大學生分為兩類:畢業后可以挑單位的和畢業后“海投”簡歷也找不到工作的,“凡是可以挑單位的學生,絕對是從大一起就有明確的目標并一直為之努力。現在很多大學生或者是迷茫,或者雖有目標,但一遇到困難,就‘喜新厭舊’,常立志而不立長志。”
????上了重點大學卻半路“逃跑”的戴志康這樣看待自己4年的大學生活:“我考通信專業時本來以為會學到數字通信,接觸到一些大型的
交換機
,結果到大三才學到收音機原理,大四才學了黑白
電視
機原理。大學的課程設置太落后于時代,與用人單位的實際需求太脫節。”
????本身就是大學教授的戴光坦言,現在大學的課程設置的確存在滯后問題。“雖然現在高等教育已進入
大眾
化時代,但很多老師和高校管理者的思維還停留在精英教育上。精英教育是細線條的,什么都要講到,是培養理論家的,而大眾教育是粗線條的,應該給學生一定的空間,應該多一些應用性的東西。”
????清華大學科技園副主任、被譽為清華“創業之父”的羅建北認為,像戴志康、李想這樣的人,在現有的大學體系中很難培養出來,因為在應試教育模式下,很難把創業所需的一些素質加入到教學中,“創業素質的培養和應試教育就是一對矛盾,因為你要學生多了解社會,從而發現市場的需求和商機,這都需要時間來實踐,那考試怎么辦?”
posted @
2006-08-03 15:55 崛起的程序員 閱讀(217) |
評論 (0) |
編輯 收藏
合肥留學生創業園 劉濤 ?
易趣網上開店的人不少,而曲劍秋是其中比較特別的一個。小曲的特別之處是他經營自己的易趣網店的獨特思路,和他的MBA(工商管理碩士)歸國留學生的背景。小曲是英國名校愛丁堡商學院的MBA學生。
小曲在網上賣的是玩具。他的網上商店名叫“Toys4U”。在易趣網按店鋪名:Toys4U開心玩具檢索就可以找到小曲的網上商店。打開網店的首頁,你可以看到一個紅色方塊中的“:)”字符號正對你張開著笑臉。這是小曲的商標和網上商店的店標。“All U BUY IS NOT JUST TOYS”(你在這里得到的不僅僅是玩具!)這句意味深長的話向我們表達著這個小小網店的不同尋常的經營理念。
小曲的小店才開了4個月每個月銷售額上萬元利潤約在4000元左右,算是小有收獲。
抱著幾分好奇和驚訝,我輾轉聯系上了這位放棄了很好的工作機會而選擇網上開店創業的MBA歸國留學生。電話里的小曲很是坦誠,對我的問題的回答應對之中還是可以感受到一位經過英國名校系統培訓過的MBA的敏銳思路。
小曲在英國呆了3年,其中一年半是在上學,另一年半是在實習。小曲上學的地點在愛丁堡。
小曲家在大連辦著企業,望子成龍的父母鐵了心要掏30萬元把小曲送到英國讀MBA。小曲雖覺得MBA最好是有一定的閱歷再讀比較好。但還是服從了父母的安排。小曲從小喜歡玩具,一到英國就好比如魚得水。小曲說在英國二三十歲的人隔一段時間給自己買一個心儀的玩具已成家常便飯,成人玩玩具已是再普通不過的事情。小曲說我不抽煙不喝酒,有點零錢就買玩具。在英國3年,小曲在網上就是eBay(www.ebay.com)和雅虎的玩具拍賣店的常客,對英國的玩具文化也是深有體會。小曲回國時玩具裝滿了箱,價值有幾萬元人民幣的。小曲多年收藏了從美國、英國以及歐洲其它國家購買來的玩偶精品(從英國運回玩具的運費就高達1000英鎊),其中不乏“花木蘭”、“獅子王”、“小雞快跑”和“星戰前傳”等全套造型玩偶。
小曲的家境不錯加上每到周末有時還有華人家庭請小曲去為孩子教鋼琴一小時20英磅小曲小時候學過鋼琴到英國后因參加了使館組織的春節聯歡會表演了彈鋼琴算是打響了自己的品牌),讓自己的個人愛好有了賺錢的機會,同時也讓自己有了買玩具的零花錢。
在結束了MBA的一年半課程后小曲爭取到了一個機會,到玩具反斗城(Toys″R″us)做銷售助理。玩具反斗城是一個非常有名的大型玩具超市它的分店遍及歐洲、北美乃至亞洲一些國家和地區。小曲實習的這家超市位于倫敦最繁華的牛津街上的Hamleys哈姆雷 。在玩具反斗城小曲對歐美的玩具文化有了更深的理解。小曲心想以后回國就以在中國建這樣一個管理有序的大型玩具專營店為事業。
在英國呆了3年后,小曲決定回國,上海是小曲的首選城市。小曲在上海與人合租了房子。小曲心目中的工作還是玩具行業,但小曲很快發現國內的大多玩具公司都是家族管理和家庭作坊,理念上并不能夠彼此認同。后來終于打聽到玩具反斗城在廣州的公司可能在上海要招一個人,但小曲很快發現對方要的不過是大專畢業生。就算自己愿意從底層做起,恐怕別人會懷疑自己另有企圖,而高級的職位人家更傾向于非公開招聘的方式。
一次偶然的機會,小曲從一本講述歸國MBA的書上知道了易趣網,也知道了易趣網的掌門人BO(邵亦波先生,易趣網CEO)和譚海音小姐的創業故事。同樣的歸國留學背景讓小曲對易趣網有了好感。易趣管理和操作的規范化、國際化,另外低成本的網上操作既是新商品發布的絕佳平臺,又是一個最有效的市場信息搜集反饋的工具。小曲心想我為啥不選擇創業作為自己的起點呢?MBA最終目標不都是能干出點事兒嗎?無非是使創業的過程更加理性化。小曲開始在易趣建立自己的網上商店。一開始就堅信易趣提供的這個平臺會被越來越多的人認可。在英國的3年多時間里一直在雅虎和eBay的英國網站上競拍喜愛的動作玩偶(Action Figures)也是Toys″R″us網站(和亞馬遜合并后證明了電子商務一樣可以做得很好)的忠實顧客,3年下來竟也積攢了近十大箱子玩具運回國內。 絕大部分玩具都是中國制造的,但因為在國內沒有銷售而且終端顧客根本無法看到,這更加堅定小曲回國投身玩具銷售,帶給國人更多更好玩具的信念。就這樣,回國沒有多久的小曲制定了先在易趣開玩具店鋪,通過其間和廠家以及顧客建立的良性紐帶,進而鞏固網上店鋪并適時向外尋求加盟以拓展實體店鋪的計劃。
小曲用自己租的住處作為自己網上商店的庫房,客廳作為接待網上顧客看樣的場所。自己在國外收藏的玩具當然是作為非賣品展示給客戶,培養客戶對玩具的愛好和對玩具文化的理解。同時也提高自己專業經營者的形象。同時小曲托在外貿工作的同學幫忙落實了國內的生產廠家。
網店一開張小曲就感受到國內消費者對玩具的渴望。連續4個月每月都贏利4000元左右,月銷售額在一萬多。
從香格里拉紀念版紅毛熊熊的熱銷到由正版迪斯尼DISNEY系列玩偶所引起的不俗反響,小曲都是苦心經營,由于現在交易量很大,自己的女朋友也來幫忙,負責成交后網下的聯系和交貨發貨。
面對如此好的業績,小曲說,這只是個開始,在以后的日子,仍會秉承一貫誠實經營、價格公道原則,誠心對待每一位新老顧客。還說,隨著規模的擴大,買家將直接得到由于相關成本的降低而帶來的實惠。
問及在易趣開店的感受,小曲坦言說:體力和腦力的透支,但是精神上絕對放松,因為在做一件真正喜歡做的事情。賺錢絕不是第一位的(但絕對必要),否則一張英國MBA文憑加上在海外近三年學習工作的積累,也一定讓小曲過得很好,但是那不是他所要追求的。他還說,每上傳一件新商品,每看到買家收到玩具后滿意的回復,打心眼兒里開心!
小曲說起網上經營心得是:盡量及時回復買家留言和E-mail,沒有人喜歡等待;商品選擇要有自己的風格,物以稀為貴;買家永遠是挑剔的,所以作為賣家的自己要不斷改進商品和服務的質量。做玩具這一行,如同做時裝店一樣靠的是你進貨的眼光,要了解你的客戶。
談到4個月來通過網上商店對中國玩具市場的初步探索,小曲覺得相比之下中國的玩具消費市場還不是很發達,也不成熟。正因為如此才有了自己生存與發展的空間與機會。小曲說,既然我選擇了這一行作為我的事業,我就要與市場一起成長。目前小曲的客戶大多為收入2000元左右的年輕人。
我問小曲想沒想過將中國的玩具賣到國外去,小曲說不想,至少暫時不想,他更愿意為中國的消費者服務,“他們從我這里得到快樂,與國內的消費者之間我們更能夠彼此認同。而如果賣給國外的消費者,他可能因我是個中國人而存有偏見,這是我無法接受的,萬一我哪些方面做得不夠,他又會說中國人怎樣怎樣,這也是我不愿看到的。我做這個不純粹是為錢,如果單純為錢我就不干這個了。”
說到開網店的不足之處,小曲說,雖然網上開網店創業門檻低、投資小,但每次上傳圖片網上打理也怪費心費力的,一忙就精神高度緊張兩個多小時。與網下店鋪比,腦力的投入大多了。
通過充足的準備和網上的練兵,小曲準備利用自己經營網上商店建立起來的進貨渠道,投資10萬元在網下開一個玩具專營店。小曲的第一家以顧客為導向的先進管理的網下玩具專營店將在今年夏天于大連繁華地段開張營業。
案例分析
看完了故事我們再做點兒分析,小曲特別之處在于他是一位MBA,而且是一位留學歸來的MBA。但良好教育的最終目標是能干出點事兒,小曲也不例外,對玩具的強烈渴望夢想著擁有屬于自己的玩具店,而后來所受的教育使得這種想法更加理性化。創業學也是MBA必修課之一。
小曲現在初步展現在人們眼前的是一個充滿生氣、有自己獨到經營理念、操作規范的網上店鋪,三個月就成為在易趣有很高知名度和信用度的商鋪。這是小曲將所學的知識在實踐中給以應用的體現。 在同樣做到初步開店成功的易趣個人網店店主中,小曲有著更廣闊的視野、更好的策劃、更詳盡的目標、更高的目標。從一開始,小曲就認為易趣的模式必定可行,而且制定了“先在易趣開玩具店鋪,通過其間和廠家以及顧客建立的良性紐帶,進而鞏固網上店鋪并適時向外尋求加盟以拓展實體店鋪”的計劃。千里之行,始于足下。我們相信小曲會走的更遠。
另外再來看一下目前小曲提供的一些數據:4個月來小曲共成交的客戶有500多人。其中60%的客戶會要求上門看貨,上門看貨后,全對小曲的專業性更加認可,并增大購買量。有本來在網上只不過是定了十幾元的玩具,網下來一看定了幾百元走。
因此,我們可以看到即便是網上商店,網絡也不是一切。網下的貨要經得起推敲,網下看貨等環節也要下功夫。網上商店只不過讓客戶通過網絡知道你網下的地址。另外,網上不過是宣傳聯系客戶,網下你也要做專業。開個玩具店也要開出水平來。
我們再來看看對小曲的客戶的一次性購買的情況:一次性購買最多的是1000元。買了500元以上商品的有20%,買了300元以上的有60%。
因此,我們可以看到對于小曲這種產品單價在幾十元上百元上下的玩具,這樣的圖表數據說明,大多購買者一次會挑好幾樣,這說明網上有這樣的消費人群在你的網店可以提供比網下價格更好,品種更多的產品時,他們是愿意“瘋狂”購物的。
在小曲的500多個客戶中有10%的人在四個月內重復購買了三四次。其中有十幾個外地個體戶上門來批發。批發的金額在幾千元,對于批發的客戶,小曲加上很少一點利潤就出。小曲說這些生意我賺得很少,但我在幫廠家出貨,我通過這些生意加強了與廠家的關系。
因此,可見小曲的經營理念實施得比較到位,4個月內重復購買的客戶已達30%。因此如果全年來統計會更高。因此,有沒有回頭客很重要,網店一定要有特色。另外,批發的客戶數達到10%,交易額也不錯,但創利在總利潤額中所占比例很低,這與小曲的價格策略有關。
可見,網絡可以虛擬,生意還應以誠相待。小生意也要有遠大目光,要做別人一輩子的生意,而不是一次兩次。
posted @
2006-07-28 09:29 崛起的程序員 閱讀(309) |
評論 (0) |
編輯 收藏
posted @
2006-07-27 19:03 崛起的程序員 閱讀(241) |
評論 (0) |
編輯 收藏
諸位,咱當電子工程師也是十余年了,不算有出息,環顧四周,也沒有看見幾個有出息的!回顧工程師生涯,感慨萬千,愿意講幾句掏心窩子的話,也算給咱們師弟師妹們提個醒,希望他們比咱們強!
[1]好好規劃自己的路,不要跟著感覺走!根據個人的理想決策安排,絕大部分人并不指望成為什么院士或教授,而是希望活得滋潤一些,爽一些。那么,就需要慎重安排自己的軌跡。從哪個行業入手,逐漸對該行業深入了解,不要頻繁跳槽,特別是不要為了一點工資而轉移陣地,從長遠看,這點錢根本不算什么,當你對一個行業有那么幾年的體會,以后錢根本不是問題。頻繁地動蕩不是上策,最后你對哪個行業都沒有摸透,永遠是新手!
[2]可以做技術,切不可沉湎于技術。千萬不可一門心思鉆研技術!給自己很大壓力,如果你的心思全部放在這上面,那么注定你將成為孔乙己一類的人物!適可而止為之,因為技術只不過是你今后前途的支柱之一,而且還不是最大的支柱,除非你只愿意到老還是個工程師!
[3]不要去做技術高手,只去做綜合素質高手!在企業里混,我們時常瞧不起某人,說他“什么都不懂,憑啥拿那么多錢,憑啥升官!”這是普遍的典型的工程師的迂腐之言。8051很牛嗎?人家能上去必然有他的本事,而且是你沒有的本事。你想想,老板搞經營那么多年,難道見識不如你這個新兵?人家或許善于管理,善于領會老板意圖,善于部門協調等等。因此務必培養自己多方面的能力,包括管理,親和力,察言觀色能力,攻關能力等,要成為綜合素質的高手,則前途無量,否則只能躲在角落看示波器!技術以外的技能才是更重要的本事!!從古到今,美國日本,一律如此!
[4]多交社會三教九流的朋友!不要只和工程師交往,認為有共同語言,其實更重要的是和其他類人物交往,如果你希望有朝一日當老板或高層管理,那么你整日面對的就是這些人。了解他們的經歷,思維習慣,愛好,學習他們處理問題的模式,了解社會各個角落的現象和問題,這是以后發展的巨大的本錢,沒有這些以后就會笨手笨腳,跌跌撞撞,遇到重重困難,交不少學費,成功的概率大大降低!
[5]知識涉獵不一定專,但一定要廣!多看看其他方面的書,金融,財會,進出口,稅務,法律等等,為以后做一些積累,以后的用處會更大!會少交許多學費!!
[6]抓住時機向技術管理或市場銷售方面的轉變!要想有前途就不能一直搞開發,適當時候要轉變為管理或銷售,前途會更大,以前搞技術也沒有白搞,以后還用得著。搞管理可以培養自己的領導能力,搞銷售可以培養自己的市場概念和思維,同時為自己以后發展積累龐大的人脈!應該說這才是前途的真正支柱!!!
[7]逐漸克服自己的心里弱點和性格缺陷!多疑,敏感,天真(貶義,并不可愛),猶豫不決,膽怯,多慮,臉皮太薄,心不夠黑,教條式思維。。。這些工程師普遍存在的性格弱點必須改變!很難嗎?只在床上想一想當然不可能,去幫朋友守一個月地攤,包準有效果,去實踐,而不要只想!不克服這些缺點,一切不可能,甚至連項目經理都當不好--盡管你可能技術不錯!
[8]工作的同時要為以后做準備!建立自己的工作環境!及早為自己配置一個工作環境,裝備電腦,示波器(可以買個二手的),仿真器,編程器等,業余可以接點活,一方面接觸市場,培養市場感覺,同時也積累資金,更重要的是準備自己的產品,咱搞技術的沒有錢,只有技術,技術的代表不是學歷和證書,而是產品,拿出象樣的產品,就可技術轉讓或與人合作搞企業!先把東西準備好,等待機會, 否則,有了機會也抓不住!
[9]要學會善于推銷自己!不僅要能干,還要能說,能寫,善于利用一切機會推銷自己,樹立自己的品牌形象,很必要!要創造條件讓別人了解自己,不然老板怎么知道你能干?外面的投資人怎么相信你?提早把自己推銷出去,機會自然會來找你!搞個個人主頁是個好注意!!特別是培養自己在行業的名氣,有了名氣,高薪機會自不在話下,更重要的是有合作的機會...
[10]該出手時便出手!永遠不可能有100%把握!!!條件差不多就要大膽去干,去闖出自己的事業,不要猶豫,不要彷徨,干了不一定成功,但至少為下一次沖擊積累了經驗,不干永遠沒出息,而且要干成必然要經歷失敗。不經歷風雨,怎么見彩虹,沒有人能隨隨便便成功!
posted @
2006-07-25 10:22 崛起的程序員 閱讀(213) |
評論 (1) |
編輯 收藏
美國東部時間2004年9月29日早上10:58分(北京時間2004年9月29日晚10時58分),中國互聯網人才招聘服務網站51job(前程無憂)成功登陸美國納斯達克,開盤價為每存托股18.98美元,當天收市價為21.15美元,比發行價每股14美元上漲51%。前程無憂此次共發行了604萬股美國存托股(ads),共籌得資金8453萬美元……作為51job的創始人之一,首席執行長甄榮輝擁有公司30.6%的股份,是公司的第一大股東。”在國慶長假前的9月30日,國內各大媒體、網站紛紛報道了上述消息。
隨著前程無憂的成功上市,又一個十億(人民幣)級的富翁走進了人們視線。也許人們津津樂道的是富豪們的身價排名,或是艷羨于他們“一夜暴富”的傳奇,但是,在故事中的主人公看來,“事實上,成功一點都不難!最難的是:想成功,但沒有計劃!如果你有一個5年或者10年的成功目標,而且能夠周密地計劃,堅定地執行,那么,因為計劃,成功率還是很高的。”
如果成功是能夠被計劃的,那么,出身于香港平民家庭的寒門“虎子”甄榮輝(1962年出生,屬虎)依靠清晰的人生定位、嚴謹的職業發展路徑計算、鍥而不舍的努力與堅持,一步一步實現人生目標的創富故事將是可以被復制的……懵懂少年初識愁滋味無知貪玩的少年第一次經受了人生磨難,置之死地而后生的遭遇警醒了他內心深處的精英夢;洗澡排隊、上廁所排隊、做飯排隊,香港平民的生存環境給他上了人生第一課:做任何事必須把握好時間與效率,看準了時機一定要毫不遲疑地沖上去。
少年時期的甄榮輝并沒有顯露出大器將成的先兆,反而以“懶”著稱。
1962年甄榮輝出生在香港一個最普通的平民家庭。其父母是從廣東“移居”到香港的,他和媽媽以及另外七八家20多口人“蜂居”在一套總面積不到80平米的公寓內,在這種高度擁擠狀況下,做飯要排隊,洗澡要排隊,上廁所也要排隊。做任何事必須要把握好時間與效率,這是家庭環境帶給甄榮輝的重要一課。
炎熱的夏天是最難過的。為了排隊洗澡,他一放學就把洗漱用品準備好,然后每隔5分鐘去洗澡間探查一次,一俟對方洗完走出房門,他一個箭步馬上就沖了進去。生存的艱難,教育了一個十幾歲的孩子,一定要抓住機會,看準了時機一定要毫不遲疑地沖上去。就從“搶”洗澡室開始,甄榮輝小小年紀便有了競爭意識。
因為父母都忙于打工掙錢養家,沒有人顧及他的功課,于是那個時候的他每天回家把書包一扔就坐在沙發上看電視,然后看到很晚就去睡覺,盡可能地睡,一天睡16個小時。“我不是幾天,幾個月,而是幾年的時間我都在跟自己說,哎呀,你怎么可以這么懶呢?每天到睡覺的時候我也會自責:今天一天又什么活也沒干!明天一定不能這樣!但是到了明天,依然還是看電視、睡覺,睡覺、看電視……”這樣懶的直接后果是,在1979年他中學會考時,全香港30多家預科學校,沒有一家愿意要他,因為他的中學實在太爛了。如果不能念預科,不能念大學,對于他這樣一個毫無背景的平民家庭的孩子而言,前途是渺茫的。他第一次開始考慮前途問題,告訴自己:再苦再難一定要考上大學。“有一天我在烈日下排了很長很長的隊去報名,好不容易擠上去,人家一看我的中學,皺皺眉說不要。拿著報名表出來,后面還有一大群人在排隊。在太陽下烤得太久,我都幾乎有些中暑了,但我還要打起精神去找下一所學校。我一邊打著出租車找學校,一邊告訴自己,如果過了這一關,一定要努力讀書。”
人是需要一些難關才會成長的。經過這一次的打擊,甄榮輝的自我意識開始覺醒,他仿佛變了一個人似的,開始知道發奮努力了。最后,他進入了一所位于偏遠而荒涼的山上的預科學校。經過1979年到1981年兩年預科的努力,他以優異成績考入了香港中文大學工程系。
小小工程師胸懷鴻鵠志
香港這個成熟的商業社會教育他,走工程師的路很穩定,但是不會有大的成功,而走商業的路,就像在滿布鯊魚的大海,游得快就會贏,否則會被吃掉。為了獲得更大的成功,他進入hp香港公司,成為一名頂級sales。
成長時期的磨難都是鍛煉。不管是從小學、中學還是高中,甄榮輝和他的同代人一樣,一直處于一種熙熙攘攘的競爭環境中,千軍萬馬要擠一條踏向成功的獨木橋。“所以,對于競爭來說,我從小也就習慣了。”
在英國統治下的香港,甄榮輝接受的是英國精英教育的熏陶,一定要成為社會精英人士,爬上去了就是爬上去了。香港這個成熟的商業社會教給他的第一課,是讓他對商業的重要性有了認識,他的創業意識亦有所萌芽了。
1984年甄榮輝大學畢業時,大學組織了一次就業輔導,有來自ibm sales的銷售總監及香港電訊的總工程師來給學生講課。那時他想:如果我要成功的話,20年后我會是他們中的哪一位?了解他們的工作及看過當場表現后,甄榮輝直覺上很想做sales的工作。“走工程師的路肯定是很穩定,走商業的路,就好像在滿布鯊魚的大海,游得快就會贏,否則會被吃掉。”自信自己會游得快,向往有更大的成功,甄榮輝選擇了挑戰度高的商業工作,進入hp的sales & marketing部門,成為一名銷售工程師。
hp的工作薪水不錯而且穩定。他第一個月工資就是4900港元。甄榮輝似乎天生具有銷售才干,三年后,他就成為公司的銷售冠軍。而到第四年,他每天只需工作不到兩個小時,就可以完成業績。“那個時候是蠻舒服的。因為你有一批大客戶在你的手里面,你把他們伺候好了,這個客戶其實是很難丟掉的。”那時他每天十點鐘出去拜訪客戶,之后就沒事了,但他不敢回家,怕回家老媽操心說,你干嘛這么早回來,是不是給炒魷魚了?于是他就去電影院看電影,一個禮拜看兩三場電影,看到后來電影都沒得看了,就跑到圖書館睡覺。
輕輕松松就能拿到30萬(港元)的年薪收入(包括銷售提成),而且作為銷售狀元,在hp的發展前景光明,這樣的環境是很多人所羨慕的,但是甄榮輝卻開始不滿足,覺得挑戰不夠大。“我分析自己的現狀,覺得這么發展下去,只有兩個選擇。一種選擇是改變自己,適應環境。哎呀,你不要要求這么高了。還有一個就是改變環境。其實你會發現mba是一個很好的換環境的踏腳石。你可以在高科技公司里做事,你也可以去做咨詢管理顧問,或者是去投資銀行,還可以去消費品行業工作……學一個mba可以給你好多路的。”甄榮輝決定放棄hp的工作去讀mba。
“小聰明”贏得大機會
mba畢業后的年薪將會在15萬美元以上,而且有機會成為企業高級管理人員。他放棄了hp30萬港元的年薪和穩定而輕松的工作,將全部的積累用作mba學費。他最終選擇去歐洲念書,“因為歐洲學校只需要1年時間,不僅花錢少,而且還能早掙錢。”
1984年加入hp時,月工資是4900港元,當甄榮輝1988年離開hp的時候,他的年薪達到30萬港元,他把在hp攢下的積蓄作為念mba的學費。當時他申請的是法國insead商學院。之所以選擇這所學校,是因為它學時只有一年,而且學校知名度并不遜于美國院校。“讀美國學校mba需要2年時間,而歐洲學校只需要1年時間。因此,去歐洲讀書不僅花錢少,而且還能早掙錢。”他是這樣計算的。
當他決定離開hp時,他接受了平生第一次專訪,正是在那次訪問上,他第一次清晰表達了自己的人生愿望。“我記得是一份計算機周刊方面的雜志,他們到惠普來采訪銷售架構。后來發現我是銷售冠軍,結果我又去念書,他們就來采訪我。他們問我的人生目標,我說我希望畢業20年以后成為一個企業高級管理人員。”那時,他是25歲。
要去法國念書,必須會法語,可是甄榮輝當時沒有任何法語基礎,他又一次要挑戰自己的極限了。他花了三個月來突擊強化法語,但是在考試那天,他依然沒有太多把握。不過,他發現法語考試主要是面試,由主考老師問幾個問題,時間大約為15至20分鐘。他擔心自己的語言不過關,如果讓老師放開問,自己聽不懂再答不上來不就麻煩了!他事先準備好20多分鐘的講演內容。當面試老師提出第一個問題后,他就一口氣地回答下去,一直回答了20分鐘,根本沒有給主考老師提問下一個問題的工夫。結果,他就這樣通過了入學語言考試。
勤奮成就百萬年薪經理人
“我要先在國外工作一段時間,看看國外公司是如何運作的。而有國外工作的經歷,即使以后回香港也能對我的簡歷更有幫助。”在四個不同的工作意向中,他最后選擇進入貝恩國際策略顧問公司英國辦事處。
mba畢業以后,甄榮輝面臨著幾種選擇:一是回香港工作,二是留在國外工作,或者加入高科技企業,或者進入咨詢管理公司。四個方向的工作他都有選擇的機會,“我決定要先在國外工作一段時間,因為剛出來一年就回香港,沒有機會看看國外是怎么運作的,對我的簡歷可能也不是很有幫助。而選擇做咨詢,是因為它比較新鮮,可以接觸不同的事情,見識面廣。”最后,他選擇了貝恩國際策略顧問公司(bain & company),先在其英國辦事處工作。
盡管選擇進入貝恩公司,對他是反復權衡之后的理性選擇,他很喜歡這份工作,但貝恩卻給了他一個下馬威。上班三天之后有一個項目匯報會,他參加了這個兩小時的會議,卻發現有70%的內容都聽不懂。連會議都聽不懂,還怎么開展工作?他給遠在香港的媽媽打電話說可能很快要回香港了。在這次會議上的受“辱”經歷給他以巨大的打擊,他明白自己還得要拼命努力,就像當初考大學,當初學習法語一樣,愛拼才能贏。
經過半年的磨合,他發現和其他英國同事相比,語言是自己的短處,而分析推理能力是自己的長處。于是,甄榮輝把工作重點放到了項目調查方面,收集了大量數據,進行調查分析,并從中找出許多從前別人沒有看到的東西。最初,他的工作是咨詢顧問,當他把事先經過大量調查分析后的資料提供給項目經理時,項目經理似乎驚呆了,因為很少有一個咨詢顧問工作像他那樣深入。慢慢地,所有貝恩英國公司的經理們都點名要求甄榮輝加入他們的隊伍。正是由于這樣苦干加巧干,當該年貝恩英國要裁員三分之一時,他一個華人卻被保留下來。
在加入貝恩兩年多后,甄榮輝順利地從咨詢顧問升到經理。1991年他被派駐香港建立辦事處,業務發展迅速。很快,在他一手策劃下,貝恩又在北京開設了辦事處,他出任貝恩中國總裁。1994年,32歲的甄在加入貝恩4年半后,成為貝恩公司歷史上最年輕的副總裁以及最年輕的合伙人之一。這在“不up(提升)就out(離職)”、聰明人成堆的咨詢公司實屬難得。
“億萬富翁夢”的誘惑
做一個百萬年薪的職業經理人,“薪水很高,職務也很穩定”,但是永遠不會成為有影響力的企業家。“中國未來20年高速發展的經濟環境將造就一批百億級的富豪”,這一誘惑使得他不辭辛苦,屢次創業。
“作咨詢顧問,每天接觸到不同的客戶,為不同的案子服務。今天你可能是被客戶用直升機直接接到他們公司總部的樓頂上,你感受了大公司的豪華氣派;明天你沒準又要坐長途汽車在農村奔波,與泥土牛糞為伴。二者的巨大差異,讓你深深感受到這個世界好像不公平。錢好像很重要,但是有些東西還不只是金錢帶來的差異。然后你就會想,人生到底追求什么呢?”在成為年薪百萬的財務自由人后,甄榮輝不再是那個為搶廁所而煞費苦心的少年小伙,不再是因為有錢能多吃一碗飯而高興的大學生,不再是那個第一次擁有自己愛車而在雨中飆車的浪漫青年,他開始思考“人活著為什么”等哲學層面的問題,能夠做一些更有社會影響力的事情,成為他的追求目標。
在甄榮輝的記憶中,1995年的一段經歷對他觸動很大:“那時我正負責百威啤酒的項目,貝恩總部也過來了一個高級合伙人專門負責這個項目。我們陪著百威啤酒董事長august busch在中國各地考察,貝恩的高級合伙人從來沒來過中國,我全程陪同。有一天晚上,我們和老外在一起喝酒聊天,他們說在中國未來發展的二十年里面一定會出現十幾位十億美元家產的富翁。聽到這句話,我心中咯噔一下,因為我以前沒想過這個問題,但仔細一想覺得很有道理。香港在60年代到80年代的高速發展中,產生了十多個十億美元的大富翁,大陸未來20年的高速發展難道不能產生新的富翁嗎?你既然相信了在中國未來?0年會有幾十個富豪出現,那你再想一想,自己還有機會排上嗎?”
在大陸經濟快速發展的大潮中,香港人甄榮輝做起了“億萬富翁夢”。對他而言,“這個出發點不是錢的問題,而是一種成就感。錢不一定就代表成就,但是在某種程度上還是反映了事業的成功,或者在市場上的影響力。”
天上不會掉下餡餅,更不會掉下財富。要實現“億萬富翁”的理想,坐在辦公室等待,或者安于做一個朝九晚五的打工族肯定是不可能的,必須要投資,要創立自己的企業。去管理顧問公司的人一般做了兩三年就都想出來自己做事,甄榮輝最初其實也是有過創業的想法與嘗試。早在1991年,他就投資做了一種用聲音傳遞郵件的系統,后來他還投資做過磁性材料等等,兩次創業均以失敗告終,但也使他學到了不少東西,“創業需要很大的精力,你必須全職去做;同時,團隊也很重要。”
遭受過兩次創業失敗的打擊,如果不敢再嘗試,就此放棄,也就沒有今天的前程無憂以及今天的甄榮輝了。從失敗中總結出了一些經驗與教訓,1998年甄榮輝又開始嘗試新的投資項目——人力資源服務。
互聯網創造了新機會
互聯網經濟的興起,給甄榮輝帶來新的機會,風險投資成了最熱的話題。甄榮輝想借此良機把網站作大,決定引入風險投資。他為前程無憂網設計了一個美好的前程:引入投資、上市、做成國際品牌。
1998年甄榮輝和他的創業伙伴成立了一家人力資源服務公司。
之所以選擇這個領域,與他的一段經歷分不開。1994年,當時任貝恩公司中國區總裁的甄榮輝需要招募新人,他先在一份英文媒體上刊登了招聘信息,但效果很差。后來,經北京同事指點,他選擇了北京人愛看的一份當地媒體,結果反饋很好。但甄榮輝自己卻感到當時報紙的印刷質量太差。當時香港的《南華早報》每周有多達200多頁的招聘專版,人力資源市場十分活躍。但是,比香港人口還多的北京卻沒有這樣一份專業的招聘紙媒體。他隱約找到了市場的需求空白。
到了1998年,大陸的人才交流市場日趨活躍,無論是用人單位還是求職者個人,他們迫切需要一個更專業的、定位于白領青年的招聘渠道。市場已經成熟!甄榮輝經人介紹,和《中國貿易報》合作,首先在北京推出了《中國貿易報.前程招聘專版》。北京《前程招聘專版》的推出,獲得了很大成功,受到了企業以及求職者的普遍歡迎。受到北京市場的啟發與鼓舞,甄榮輝和他的創業團隊,開始在全國復制北京模式。五年多,在全國19個城市與當地媒體合作,推出了針對當地市場的《前程招聘專版》。
1999年,互聯網經濟正在全球興起,網絡給甄榮輝帶來了新的機遇。
1999年1月,甄榮輝先在上海推出了career-post.com網站,當然內容只能算是《前程招聘專版》的電子版,是一些企業招聘信息的集納。1999年底,互聯網經濟開始膨脹,風險投資成了最熱的話題。甄榮輝想借此良機把網站作大,決定引入風險投資。他為自己設計了一個美好的夢想:引入投資、上市、做成國際品牌。網站也因此易名為無憂工作網(51job.com)。無憂工作網的贏利模式十分符合中國國情,也受到國外風險投資者的青睞,很快,在2000年2月,一筆金額為1400萬美元的投資進入了甄榮輝的創業公司。
2000年以前,甄榮輝在前程無憂的角色還只是一個“天使投資人”,不參與具體的經營管理。等到2000年1400萬美元的風險投資進入后,公司發展需要他全力以赴地投入,這時,他再次面臨著人生的選擇:是繼續做一個百萬美金年薪的打工皇帝,還是放棄眼前的舒適去做一個前途未卜的小公司的ceo,領取6萬美元的年薪?此時,甄榮輝已經37歲,在貝恩干了11年,如果繼續待下去,“薪水很高,職務也很穩定”,但“那時就有些怕,覺得可能再干20年還是這樣”。同時,互聯網的起飛讓他看到挑戰背后的巨大機會:“在互聯網業,即使你去年做得成功,過了一個年頭必須重新洗牌。這種充滿刺激的感覺很過癮。可以贏得很大,也可以輸得很大,完全看自己的機遇與功力。”
2000年4月,甄榮輝經過慎重考慮,決定離開貝恩,出任前程無憂ceo。
做中國人的ge公司
也許你看不清路,但你能看得見那里有一座山,那就是你的目標。我一直相信人才服務這塊業務有前景,我相信我們有一天是能做到10億美元的;我希望有一天,前程能像ge公司那樣成為行業典范,影響更多的中國企業乃至跨國企業。
甄榮輝認為他的成功“一半是運氣,一半是努力”。一直有好運氣的甄這次也不例外。
2000年2月,前程無憂的1400萬美元風險投資到位,而到了2000年4月,網絡經濟的泡沫開始破滅,很多創業網站不能再在投資市場上拿到錢了。而有了這筆投資,前程無憂卻獲得一個空間去慢慢成長。“有了這幾年的時間給我們成長,我們可以把我們的規模做大,把我們的管理做好,把我們的市場地位鞏固。”中國的人才市場正處在發育階段,機會無限,前程無憂得以隨著中國人才市場的成熟而成長,在甄榮輝看來,“這是非常幸運、非常快意的事”。
前程無憂的發展,其實并非一帆風順,也有過十分艱難的時候。2000年、2001年網絡泡沫破滅,全球經濟放緩,9.11事件后眾多跨國企業招聘計劃凍結,2003年又遇到sars事件,形勢似乎從來不是一片光明。在最艱難的時候,甄榮輝有沒有過后悔,有沒有想過放棄?
“我們知道人才服務這一塊肯定是值得做的,即使最早在北京的東花市小學起步的時候我們也看得見。香港《南華早報》的招聘周刊有200多頁,我們的《前程招聘專版》到現在還沒有發展到200多頁。所以,我知道成功的機會肯定是有的,而且這個機會只有在中國才能找到。日本的人才網站每年幾十個億美元的營業收入,我相信我們有一天是能做十億美元的。但是你說是哪一天呢,我也說不出來。你說到底有多長時間呢,你到底要做多少東西才能得到呢,這個可能是摸著石頭過河。但是信心我是一直有的。”甄榮輝從來沒有懷疑過自己的選擇。
據新浪財經報告顯示:從1999年到2002年的三年間,前程無憂營業收入就增長了25倍。到2002年,整個財年度實現盈利,銷售收入約2000萬美元,2003年銷售收入為3544萬美元,增長77%。2004年前三季度銷售收入為4386萬美元,較去年同期增長80%。“我們不斷加快速度開設辦事處,現在已在全國20個城市開設有分公司或辦事處;我們又不斷開發新產品,為客戶提供招聘獵頭、培訓測評和人事外包等十多項專業的人力資源服務……我們的產品線很長,服務很深入,和客戶的聯系緊密。這就是我們的競爭優勢。”
四年前甄榮輝放棄貝恩的百萬年薪而出任前程無憂6萬年薪的ceo時,他的計劃是將51job運作上市,但這只是一個開始,他心中還有一個更宏偉的夢想——要做一間中國人的ge公司。在甄榮輝理想中,“當企業成為一個行業或企業群里的典范,它的影響力可以超過它規模的數倍甚至數十倍。譬如ge公司,它的影響力是全球的,經營ge不再是經營一個企業那么簡單,它在經營企業人的思想,它在與世人分享領先的管理經驗。現在,前程無憂還很小,但我希望有一天,前程能像ge公司那樣成為行業典范,影響更多的中國企業乃至跨國企業。”
這不是一個5年10年的工程,20年夠不夠呢?“在我退休之前,我希望能夠實現這個愿望。”甄榮輝又開始了一個新的人生計劃!
posted @
2006-07-25 10:22 崛起的程序員 閱讀(383) |
評論 (0) |
編輯 收藏