山城棒棒儿军 @ 2018-01-01 22:38

摘自三峡组诗之一

‖山城棒棒军——三句半

山城棒棒军  村汉子进城
小巷搬运没得我——不行

山城棒棒军  渝中一风景  
我为市民解疾苦 ——高兴

山城棒棒军   棒棒汗水浸   
为了建设新重庆 ——掏心
1997 11 11


 



 
山城棒棒儿军 @ 2017-01-01 12:42

1. 本blog应用了大量网上资源,有时属于二次引用,其来源也不详,因此无法给出确定的原创作
者信息,在此对那诸多不知名的原作者表示深深的谢意,如果对您的利益造成了损害,请留言寓
于说明,本人将尽快给予删除;

2. 本处的初衷只是本人的资料集散地,另外,本人认为资源共享更有利于大家的共同进步,不存
在利益目的。

3. 请需要电子版书籍的朋友自行先利用天网搜索或者是星空互联搜索引擎等搜索工具搜索好么?
谁的时间都是时间,再说,搜索资料也算是你的一个能力的方面!


 
山城棒棒儿军 @ 2009-06-13 00:13

中科大学长的经验:如何走向成功的人生 【转贴】 信区: Intern 标 题: jack师兄----如何走向成功(5月29日报告会全文) 发信站: 瀚海星云 (2009年05月30日20:24:26 星期六), 站内信件 WWWPOST 如何走向成功的人生 如何走向成功的人生 同学好!很高兴跟你们见面,看着你们就想着20年前的自己,也曾经是如此年轻而充满激情的,我的心情很激动。 非常感谢大家来参加这个报告会,谢谢大家的捧场! 在校友当中,我并不是很杰出的,去年五十周年校庆,我也来了,张健让我来做个报告会,我拒绝了,五十周年那时,来了四五十个学部委员,几十个将军,还有五四青年奖章获得者,还有全国十大杰出青年,好几个上市公司的董事长,很多国际著名公司的CEO,COO等,我算什么呢,只不过是一个丰衣足食的小老板,在五十周年做讲座,我的头也太大了,会被很多人耻笑的,所以拒绝了。 今天为什么来了呢,不是因为我的头变大了,是因为这几天的环境不敏感,加上现在正是毕业求职的最后一段时间,我来给大家聊聊天,希望能给大家带来帮助。 我想知道你们最希望那些人来给你们做来时这样的报告呢,我这里有几个选择: 1, 学部委员或终生教授 2, 上市公司的董事长, 3, 类似如马云、王石、任正非这样著名的企业家 4, 中型企业老板或股东,年收入超过200万 5, 500强的高层,年收入100左右 6, 博士生导师 7, 国内课题的的领军人物 8, 教授、研究员、CTO、外企金领、私企老板、 总之年收入30-50万或以上 请部分同学上来发表意见,投个票吧。希望大家不要录音。我的文章会在网上公布 我不是什么很成功、很了不起的人物,我是一个很普通的校友,但是我有着很大的热情,来介绍自己的思想和经验,希望给同学们带来真真切切的帮助。 我们千辛万苦的考上科大,大学生活不是我们人生的终点,应该只是一个起点。我们是青年一代中的佼佼者,我们希望自己有个成功的人生,对不对!同意的请给掌声,不鼓掌的就是是不同意。 如何走向成功的人生呢,这是我们报告会的主题 1,有理想、有追求 在大学初期,特别是中期,千万不要在晚期,你一定要确立好自己未来发展的方向,首先是搞自然科学研究,还是做公司的技术干部,还是去做市场销售、金融管理的等方面的方向,越快定下来,越有利 怎么来确定呢 第一: 是兴趣,兴趣可能决定于的你的性格,性格决定命运,所以千万不要强行去做一些 事情,明明你是一个很忠厚的人不要强行去做销售。我提供一个参考如下: 性格、特点 比较适合的行业 忠厚 研究、技术类,行政 机灵 市场、销售,人事 有思路、果断又细致周到 管理,行政人事 心理坚定、赌性重 投资 数理基础好,思路好 精算、理财 各个行业工种的职位的优劣比较 行业 起步入行 中期 收入 工作稳定性 生活稳定性 终极 研究类 容易 容易 偏低 很好 很好 好 技术类 较容易 较容易 中等 好 常加班、一般 好 销售类 一般 好 好 一般 常出差 好 行政人事 一般 一般 中等 一般 一般 好 投资 难 还好 很好 不稳定 长出差,差 好 我认为无论以上那个行业,最后(40岁左右吧)你一定能够过上很好的生活的。 在确定这个目标的过程中,你可以多一些与朋友同学讨论,多一些参加各种各样的社会活动, 包括一些心理测验,正确判断自己的性格。 每一种性格独既有缺点,又有优点,老天爷、大自然是公平的,没有说那一种性格特别优秀,那种性格特别不好。比如很多人觉得直爽的人好,我告诉你们我就是一个很直爽的性格,很多时候得罪了别人都不知道,有些人喜欢含蓄,觉得你直爽的人太张扬,根本看不惯你,一些时候你很主动去帮助别人,别人还很不高兴,因为别人想自己做这件事,做着玩的,比如下棋的时候,你很快给别人支招,别人觉得你剥脱了人家自己的乐趣。又比如你这个人很老实,不太会说话,有人会觉得你很闷,但如果你很幽默,很多话讲,谈笑风生,又有人会觉得你太烦,浅薄。这个世界,有什么样的性格就有相应的性格来配,千万不要对自己的性格失望,甚至绝望。 只有这样,这个世界才能够这么丰富多彩,如果只有一种性格的人,那么这个地球上的人好像全部是通过一个人克隆出来一样,你就是我,我就是你,那要那么多人干什么,只要一个男人一个女人就可以了。 理想可以虚高一点的,甚至有点幻想,追求到时要实际一些,接近现实一些。 2,尽快建立一个正确的方法去开始实现自己的理想 当你确定你想成为什么样的人以后,你就要针对性地做准备了。 如果你想做研究,那么你要把书念好,考试考好,尽量去国外留学。在学校里尽量去过认识搞研究的老师,想办法尽早自己做些小的研究,也可以主动跟一些认可老师谈谈你的理想,让他帮助你确定一些方向。 如果你想做企业技术类的方向,那你要尽快接触社会,了解社会上最先进最流行的技术是什么,未来将流行什么,最需要什么技术,了解清楚后,尽快自己去学习。这个时候成绩不是特别重要,反而是你有没有比别人早掌握一些重要的应用技术,你要设法去接触社会,可以找已经毕业的师兄,有成绩的师兄,去学习课堂上学不到的东西。 如果你要成为市场、管理类的人才,你要多看一些西方的书籍,对一些理论,你要记得非常清楚,熟记案例,特别是著名的案例,你要能倒背如流。很多时候,诊断市场如同一个医生看病,如同一个法官判案,他们是怎么做的呢,问二个同学?(互动) 他们首先是找相同的案例,大家爱都有看病的经验,你一坐下,医生就问“有什么症状啊,发不发烧啊,张开嘴巴,啊一下”然后把那个小木头啪的一声丢掉,很潇洒的样子,然后拿个听筒在你胸前背后听一下,心肺没什么问题,就说:“感冒了,吃点药,不用打针,休息二天就好了,多喝水”,他们为什么这么快就给你下结论,因为他们是专家吗?是专家,但是这个专家是怎么来的呢,他们熟记了大量的案例,然后一边给你看病,一边在对比,只要主要症状符合某个病种,那么他马上给你下这个结论,然后按照这个给你开药。可能95%的病就这样看好了,剩下5%看不好,怎么办,住院,找专家会诊,找出不同的特别的症状,附加上一些仪器测验数据,做判断,拿方案。专家为什么成为专家,是因为他经历的5%多了,可能到了99%了。那你们一开始不用期望自己成为专家的,成为拿个95%就好了。在市场、管理是有很多案例的,很多很经典的案例,读起来发人省心、让你很难忘记的案例,你多读,多记,将来会对你的工作生涯带来很多好处的。 严挺,你们都知道吧,我这段时间跟他处了不少时间,他跟我说,为什么,他在学校后期吧计算机学的很好,他说他突然明白一个道理、一个方法,就是背代码,我不知道他说的对不对,我有没有听错,但我哦记得他是这样说的,背熟了很多代码以后,很多事情对他来说就很简单了。 投资理财方面呢,你除了牢记那些理论以外,你要尽快开始实践,实际操作,如果没有任何实际的经验,只知道理论,没人会很轻易录取你的。 WuWeiWei,就是我们深圳校友网,现在叫神州网上面的刺猬,顺便问一下,你们这里有多少人知道我们这个网站,有多少人上过我们这个网站,请举手。有多少人发过帖子?很少吧!从周三开始,这个网站已经突破了深圳校友的这个范围,正式成为所有校友的网站。不要以为这个网站跟你们没有任何关系,你们现在是学生,毕业以后你们是什么?是校友。学生身份,就这么几年,校友身份呢,一辈子。你们说这个校友网站跟你们有没有关系?转回来刺猬,他是976级的,硕博连读的,在科大呆了十年,他说他在科大做了二件事,其中一件就是确定工作方向,然后开始实践,他在本科的时候就开始炒股票,实践理论,2007年他博士毕业,选择去一家私募,他有没有换过我不知道,反正现在在的这家跟涌金有些关联,是做对冲的,基本上是国外市场,他去年做空江苏尚德,76块钱开始,5块前平的仓。你们知道怎么叫做空、怎么做空呢?(请学生回答)当然他也很坏,他跑去人家公司,真而八经的跟人说要投资人家,来调研的,了解清楚实情以后,就决定做多做空,尚德的这次空,他们公司挣了很多钱,他自己也发了很多奖金。当然他也不是神仙,他去年做多联想,也亏了钱,所以今年下定决心在了解高科技行业,努力把损失夺回来。 你要成为保险理财方面的,你要学会精算,你要去考该考的证书。我们831的祝光健是中国平安财险的副总,首席精算师,他跟我说过,你去他们那儿面试,首先就是要有这些证书。 总之,但你确定目标,在大学时代一定要有所准备,针对性的准备,这样你才能取得主动。 实际上也是超前学习吧,你们很多人在中学是拿过这个那个竞赛的奖的,除了你们天资聪明以外,还有一个重要原因就是超前教学了。我讲这个道理,你们就明白我说的这些话的道理了。 在推荐几个很有前途的行业, A) 物流、物流管理、物流电子 B) 人事行政, C) 公共关系 3,准备就绪,开始出发,就是找工作了。 首先选择一个城市,选好城市后,你就去找工作。 选城市的依据,有很多,资源啊,气候啊,交通啊,社会关系啊等等, 我提出第一条理由,也是最重要的理由,跟你的另一半在一起,如果你准备跟他结婚,那他就是这辈子跟你时间最长的人,那么你一定要马上跟他在一起。在现在社会,校园爱情是非常脆弱的,经不起社会上的风吹雨打。你们尽快在一起,经历工作初期的很多事情,实际上相当于重新恋爱,而且这次恋爱的基础更扎实、更坚固,只要共同经历过这几年,你们的爱情就非常牢固了。因为你们有着共同的奋斗经历。 WuWeiWei就是这样去了上海 第二条 选择你的专业或者对你的理想最有利于发展的城市 出国不知道,我没搞过出国。下次xionghui来你们问问他。 如果你搞研究,你去北京中科院,或科学院各地各大研究所。 如果你搞电子技术,你就去深圳、北京 如果你搞金融,就去北京上海深圳 如果你想搞外贸,就去深圳、上海。 例子: 严挺的选择,上海人,放弃7000元月薪,去到北京做1500的工作,因为他认为上海没有计算机的环境 怎么准备找工作,怎么准备简历,怎么准备面试,不在这里讨论,等一下如果有时间的话,我们来几个模拟面试,我来做面试官,来问问题,有兴趣的同学上面面试,然后我来点评。 500强与民企的分别。。。,建议不要忽视民企,分分钟中大彩,要看老板、团队和他们的追求。。。 4,工作初始,心态调整非常重要 由于我们这种教育体制,大学生在学校里是非常封闭的,特别是科大,讲究的是一个学风纯洁,所以我们的同学们很单纯。当然也只有科大,我上个星期在深圳,面试一个西南财大的女生,我问她在学校时对自己工作场景是怎么想象的,她说:她穿的整整齐齐的,领着公文包,进入一栋非常漂亮、非常现代的大厦,办公室内明窗静几,所有地方都是整整齐齐的,同事们个个高雅文明。。。我想你们很多人也是这样想象自己的工作场景的(现场问同学,特别是女同学),然后我问她对我们公司怎么感觉,她说要差一些。。。 其次是工作内容,可能很简单,枯燥,一点也没有成就感,很机械,很没创造力,加班,无休止地加班,偏偏还地处郊外,想找个同学聚一下,坐车一个半小时。 例: 我的徒弟小谢。。。 这种情况你们要怎么调整呢? 工作以后,可以多上我们的神州网来交流、沟通,在深圳的校友请加入我们的师徒计划, 你们有多少人知道我们这个师徒计划?知道的请举手,请一个同学解释。。。 然后补充,社会上的师徒现象,一日为师。。。详情请在网上看,我们写的很清楚的 一份工作要超过一年,否则大家会觉得你没有耐心。 不要轻易换工作,36行,行行出状元,每个行业都能成功 那么还没出校门怎么办呢? 你们早点做准备,准备就是: A,早日接触社会,尽量多点机会去社会上实习 B,多参加学校里的社团活动,包括同乡会,问三个同学有关同乡会的情况,建议他们成立同乡会,以及其他专业小组,兴趣小组,问“科考协会”的事。。。? 社团活动的特点是必须要有付出精神,牺牲精神,介绍剑桥学院的实情。。。2008年夏天我到了剑桥。。。 C, 早日接触校友会,你要早日接触你老家的校友会,或者你想去的那个城市的校友会,去认识学长。 D, 最简答的办法,就是上现在这个神州网,几乎可以交流任何事情。 E, 多读书,杂志,看看别人写的文章、心得, 推荐文章:《华为十年》89校友徐家骏写的,也是我中学师弟,诸暨出美女,也出人才啊, 在座的有没有诸暨的? 推荐杂志:读者,青年文摘 推荐书: 杜拉拉升职记 明朝那些事儿 No excuse 我没有任何借口 还有一些外国著名企业家写的自传,一些励志的书,象代尔。卡耐基的书,李开复的书,我上次送给张健一套。中国企业家的书基本上建议不看,那里边最多只讲了90%,最重要的10%没有讲,那就是政府关系,在中国要做大做强企业,一定要有很强的政府关系,因为政府太强大了,绝大多数资源都在政府手上,你不运用他的关系,基本上做不大。随便举例:雅戈尔、浪莎。。。这样的企业你怎么学啊。有什么经验,传奇可讲啊,经常可以看到,这个人刚刚出了名,那边他的企业就出了问题了,最大的例子是谁? 黄光裕,好像蒙牛等,谁知道巨人是怎么回事。。。 你们必须要认识到,刚开始的几年工作一定是打杂一样的,做的是最基本的,以前大学生分 配到企业,第一年必须到车间锻炼,主要是要你了解基本生产情况,。。。 所有工作基本上都是不断简单重复、很枯燥的,绝对没有惊天动地、惊心动魄的,所有工作都是由很细小的部分一部分、一部分组成的,慢慢地要学会从中去发现快乐,寻找成就感,当你有这样的心态的时候,工作开始给你带来快乐了。记住不要抱怨、不要郁闷,当你改变不了环境时,试着去改变自己。 5,度过适应期,快马扬鞭,直奔成功而去 当你度过了最初二年的适应期,慢慢再过一个几年的调整期,你会慢慢地能把握人生、把握工作了,这时候你开始觉得人生是美好的,你遇到的都是好人。。。 只要你努力地坚持,踏实的前进,你会离成功越来越近的,在你工作大约10年到十五年的时候,某一天,你突然发现,你已经被人称作成功人士了,那个时候,你就是成功了,你可以回到科大,回到这里来作报告了!大吹特吹,老子当初如何如何,象我现在这样。 什么是成功啊? 我的定义: 身体健康,家庭和睦,已婚,有二个小孩,最好一子一女, 跟父母或岳父岳母住在一起,有个合适的房子,有部车,收入30-50万一年。 我为什么来这里做这个报告呢,就是因为我完全符合这个标准。。。。。。各位同学,我们一开始列出的条件中1,2,3条件是很难达到的,可能在这里的人将来一个也没有,但是满足我这个成功标准的人可能是全部,我们不用过分去追求这样的巨大成功,只需顺其自然的发展下去,达到我们这样的成功是没有问题的。 下面,我给出一些概念,在校时尽量要去确立的一些思想、概念 1, 优秀是一种习惯:要养成很多优秀的习惯,如读书、社交,适当地打扮自己,尤其女生,要学会化一点点妆,女生不要盘头发,不要太瘦,起码要涂唇膏,要有一些业余爱好,等等 2, 生命是一个过程,所以要珍惜生命,善待人生,要通达人生,就是要看得通,看得透,虽然说四十而不惑,但现在社会高度发达,不惑的年龄要提前,如果想的通这点,失恋了、失败了,不会去自杀。 要尽量的去体验人生、体会人生,即使三十岁你一无所有,但有的丰富的人生经历就是你的最大财富,学会把人生尽量去组织得开心快乐。 3, 对生活要有热情。 4, 要善良,真诚,不要狡猾,搞阴谋,现在社会如此发达,只有大方、光明才是正道,靠手段啥的最后会导致失败 5, 要开放、外向,要善于、敢于表达自己的想法,要有表现自己的欲望,要有个性但把握得好度,要有开精神,不要保守、不要不争,不要过分谦让。 6, 要明白只有付出才有收获、才有回报,要明白付出就是收获,要善于付出、敢于付出,要明白捧场哲学。。。 7, 要明白爱的真谛就是 付出 不是得到,只有付出才能让你快乐,不是得到,女孩子爱上你的,不是你得到她的爱了,是你的付出被她接受了,你才真正快乐。 8, 要学会、锻炼很多能力:善于表现自己的能力,我把他叫做“show me",交流沟通的能力,在大众面前演说的的能力(对面试最有利), 公关能力(曲折找人,搭上关系,人事协调),交际能力,组织能力,协调能力 9, 要明白善有善报,恶有恶报,不是不报,时候未到,你看看古今多少英雄豪杰,能得善终的有几个 10, 男孩要仗义,讲义气,女孩要体贴,要善解人意,男孩要有责任性,女孩要学会宽容 11, 要培养好与异性交往的能力,要了解男、女的性格特点,男孩一般大气、粗心,在哥们面前好面子,女的小心眼、爱吃醋、更好面子,要互相给面子 12, 要有恋爱的经历,最好二次以上,要学会如何去爱人,如何被人爱,WuWeiWei的第二件事,在学校搞掂老婆 13, 恋爱: 门当户对还是很重要的,例:沈阳血案          14, 遇到困难,一定要学会寻求帮助,切不可孤军奋战,这里也看出团队精神 15, 要建立乐观的人生态度,对任何事情要有乐观的想法 16, 愉快地接受别人的帮助,记得感谢别人;愉快地去帮助别人,不要图回报,助人为快乐之本 17, 一定要有一些高年级的朋友,这些人将来是你一辈子的财富,可以是老乡,同门师兄,或者是学生社团的成员,这里可以看出社团的重要 18, 要学会开始与社会沟通,没事多上上神州网,多认识一些以工作的师兄师姐;尽可能地去实践社会,早日在假期去研究所、企业实习,实在家里没钱、穷怎么办,我们深圳校友会在考虑一个小额贷款,免息的, 主要用于实习、找工作使得一些生活费,但如果你的用途不正,你可能一辈子失去名声 19, 身体健康,要有一二项爱好的体育运动,并且养成锻炼的习惯 20, 学会尊重父母,理解父母,开始孝顺父母 21, 学会宽容,不要记仇,不要树敌,可以不是你的朋友,但千万不要是敌人 22, 要重重别人,理解别人,出去办事要尊重每一个人,每个人都有发达的时候,例:王总 23, 人无完人,对自己也要学会宽容,会原谅别人,也要敢于原谅自己 24, 做事情全力以赴,不到最后决不放弃;真正没办法了,要勇于承认失败,迅速放弃,要开始明白谋事在人成事在天,要开始学会认命 25, 要学会感恩,别人给你帮助你要感谢,要学会表达出这种感谢,怒要放在心里不说,女生可以用小卡片,男生可以请喝酒。 26, 最主要的是:要具备发现问题、寻找解决问题的方法、解决问题的综合能力 27, 要建立信心,信心是很多事情的根本,当然信心基本上就来源于以上的这些 28, 要充分确立自己的核心价值,就是别人没办法取代你的各种技能,工作如此,爱情也是如此。。。有了核心价值,你就可以在社会上利于不败之地了! 重点推荐城市: 深圳 1, 深圳是个移民城市,很少原居民,很像美国,社会精英全是来自全国各地的人才,很多是大学精英,我很多时候会为这个城市感动,经常看到年轻人在畅谈人生,没有文化包袱,没有传统束缚 2, 深圳是市场化最充分的城市 3, 深圳是很竞争的城市,可以让你一直进步 4, 深圳是文明最高的城市,因为移民精英,大家互相体谅 5, 深圳是一个崇尚个性,甚至个人英雄主义的城市 6, 深圳市国内最富的城市,人均国民收入全国最高 7, 广东省的GDP 1 广东 35696亿元    2 山东 31072.1亿元    3 江苏 31000 亿元    台湾 3932亿美元    4 浙江 21486.9亿元    5 河南 18200亿元    6 河北 16188.6亿元    香港 2238 亿美元    7 上海 13698.15亿元    8 辽宁 13461.6亿元    9 四川 12506.3亿元    10 湖北 11330.38亿元 香港大约是14000亿元 粤、港、澳大约50000亿元,上海、江苏、浙江约65000亿元 上海市 12001.16亿  北京市  9006.20亿  广州市  7050.78亿  深圳市  6765.41亿  苏州市  5700.85亿  天津市  5018.28亿  重庆市  4111.82亿  杭州市  4103.89亿  无锡市  3858.00亿  青岛市  3786.52亿  深港 大约20000亿元,可以排在省级第五,与浙江差不多,超过上海。 深圳2008年的财政收入约2800亿元,仅次于上海北京 8, 深圳交通方便,城市不大,有很多出租屋,生活成本不高,气候好,生活方便 9, 深圳是一个很漂亮的海滨城市,有山有水,这个上海北京无法跟深圳比的,在一个小时内,你可以从海边到繁华的市区,然后去到幽静的山谷 10, 深圳的绿化非常好,空气素质很好,2000年被评为中国第一个百万人口以上的国际花园城市 11, 2011年大运会前,6条地铁要开通,深圳市区会扩大1倍,这几年深圳处在一个巨变当中 12, 珠三角一体化,再造第二个洛衫矶(洛城110000平方英里),珠三角差不多大 13, 深港一体化,“五个中心” 14,  深圳女子多,男子少,男生找个老婆也容易 15, 深圳市国内唯一一个跟国际城市差距最小的城市,无论经济和文化 面试技巧: 1, 个人形象, 2, 要有所准备,要了解该公司,了解同行业,要知道一些故事 3, 要认真听讲,要看着面试官 4, 要针对问题回答,千万不要答非所问 5, 要诚实回答问题,不要猜测,更不要说假话 6, 要记得住面试官花的思路,并往下走 7, 记得要回举一反三 8, 要表现出信心,个性,又能表现出你虚心,会他踏实的工作 9, 要表现出你对工作的热爱,喜欢加班 10, 不要过分强调工资,要看工作环境,发展前途,还有你的直接老板,很多时候一个好公司不如一个好老板。要记住你一辈子会挣很多钱,一二年的的差别你历史的场合中根本不算什么, 不要去计较1000元以下的差别,几年后就差不多了。 11, 要对重要问题有所关注 12, 要有礼貌,注重细节 更多的请陈波介绍,他拿的offer很不错,比我更有经验。 最后,我借用马太福音里的一句话作为我的结束语,是我读EMBA时 北京的一个刘教授送给我们的,我转送给大家,祝大家成功: 你寻找,你发现; 你追求,你得到; 你敲门,门为你开。。。。。。! 谢谢大家!


 
山城棒棒儿军 @ 2007-11-18 15:36





 
山城棒棒儿军 @ 2007-05-20 01:10






















 
山城棒棒儿军 @ 2007-04-17 20:10

http://www.ccwblog.cn/panstrgh/post/20061210/13638.htm

分水岭算法(Watershed Algorithm)

所谓分水岭算法有好多种实现算法,拓扑学,形态学,浸水模拟和降水模拟等方式。要搞懂就不容易了。Watershed Algorithm(分水岭算法),顾名思义,就是根据分水岭的构成来考虑图像的分割。现实中我们可以或者说可以想象有山有湖的景象,那么那一定是水绕山,山围水的情形。而区分高山(plateaus)与水的界线,以及湖与湖之间的间隔或都是连通的关系,就是我们可爱的分水岭(watershed)。为了得到一个相对集中的集水盆,那么让水涨到都接近周围的最高的山顶就可以了,再涨就要漏水到邻居了,而邻居,嘿嘿,水质不同诶,会混淆自我的。那么这样的话,我们就可以用来获取边界高度大,中间灰阶小的物体区域了,它就是集水盆。

浸水法,就是先通过一个适当小的阈值得到起点,即集水盆的底;然后是向周围淹没也就是浸水的过程,直到得到分水岭。当然如果我们要一直淹没到山顶,即是一直处理到图像灰阶最高片,那么,当中就会出现筑坝的情况,不同的集水盆在这里想相遇了,我们要洁身自爱,到这里为止,因为都碰到边界了。不再上山。构筑属于自己的分水岭。

在计算机图形学中,可利用灰度表征地貌高。图像中我们可以利用灰度高与地貌高的相似性来研究图像的灰度在空间上的变化。这是空域分析,比如还可以通过各种形式的梯度计算以得到算法的输入,进行浸水处理。分水岭具有很强的边缘检测能力,对微弱的边缘也有较好的效果。

为会么这么说呢?为什么有很强的边缘检测能力,而又能得到相对集中的连通的集水盆?现实中很好办,我们在往凹地加水的时候,直到它涨到这一块紧凑的山岭边缘就不加了;但是如果有一条小山沟存在,那没办法,在初始阈值分割的时候,也就是山沟与集水盆有同样的极小值,而且它们之间是以这个高度一直连接的。那没关系,我们将它连通。在图像上呢?如何实现?

看看算法,算法思想是这样的:

首先准备好山和初始的水。这山就是我们的初始图像了,比如用自然获取的图像的梯度来表征山地的每一点的高度吧;而初始的水就是在阈值记为Thre底下,所有的低于这个高度的整个山地都加水,直到这个阈值Thre高度。从而有三个初始量:unsigned char** Ori_image、char** Seed_image和int** Label_image。最后一个是为最终的结果做准备的。当然要做好初始化,比如,Ora_image赋值为原图像(256色灰度图)的梯度值,Seed_image则是初始状态下有水的置位,无水的复位,而Label_image则全初始化为0,最终得到的是各点对应的区域号。

接下来是考虑将已加的水进行记录,记录成连通的区域,也就是看看有多少个互不相关的集水盆,有五个,那么我们就涨出五个湖,而且尽可能的高,只要大家想到不溢出。在算法上,有多少个连通的区域就记录成多少个数据结构,工夫就在于如何将这些连通的区域连接成一块,并由一个数据结构来表达了。很好,我们准备用一个向量容器来实现初始保存,保存所有标记区域种子队列的数组,里面放的是种子队列的指针vector*> vque,而且这个队列是由一系列属于同一个区域的图像点组成,我们来自一个集水盆:);其保存方式是这样的:queue *pque=new queue [256];vque.push_back(pque),这样便将一个成员放进到这个区域来了,即容器--集水盆的保管都,容器中的每个指针,都指向一个集水盆,也就是我们要的连通区域;所以我们可以方便地由这个容器数据结构直接读值的方便性进行操作,一个脚标就可以得到一个区域(队列指针)的指针;而每个队列还不简单,并不是一列整形数那么易搞,所以说啊,这个算法,真头痛,这个队列的一个成员是一个点;而注意到vque里存放的一256个队列的的起始指针,真够残忍的。也就是说vque[i][j]就表达了一个队列,这个队列里可以存储操作一系列的点;显然容量取256是因为所有的初始或者是最终的区域中可能有0-256之间的不同的灰阶的点,那么我一个区域分用256个队列来记录这些成员点啦,很有可能,这里就只有一个集水盆,那么,256个灰阶的点都存在一个区域就有可能了。

统计初始连通区域的方法是,八连通邻域法,即从逐一扫描输入的Seed_image的每个像素点,将所有的标记了的初始集水盆一一纳入各自的区域,这是整修图像的扫描,形成外循环。先创建一个临时队列quetem,用来处理当前初始集水盆的连通连接,将逐一扫描到的属于一个特定的初始集水盆区域的可生长点暂存,并形成一个内循环。对当前扫描点的处理是,首先判断该点是否为某个初始集水盆的点,如果不是跳过;接下来是,如果是初始集水盆的点,那么它的八连通域中是否存在不可生长的点(这里的不可生长是指Seed_image中没有标记的点),扫描的八连通邻域中的点是可生长的,即有标记的,则将之加入到临时队列中quetem;如果扫描到的连通邻域中有不可生长的至少一个点存在,那么加入到种子队列,记当前区域号为Num,当前扫描点为(m,n),从而当前的灰阶为Ori_image[m][n],将当前点添加到种子队列:vque[Num-1][Ori_image[m][n]].push(POINT(m,n))。这里有两个循环,一个是quetem,另一个是Seed_image。直到两个循环完整结束,那么就得到了各个连通初始集水盆的记录,保存标记是区域号Num;而我们同时得到了初始的分水岭,那就放在了保存地点vque,这里面标识了它们对应的区域号,和区域里面对应的点的灰阶,即是特定区域特定灰阶对应的点的集合;我们可以获取这些分水岭的点所在的区域号,可以得到该区域的所有的灰阶的点信息。一句话,统计连通区域的功能有两个,一是标记初始区域,二是找分水岭。

初始的区域标记好了,分岭也找到了,那么可以开始“水漫梁山”了。这就是淹没过程。淹没过程由也是由一个内嵌循环的循环来实现的:外循环是做水位上升(这里循环次数一定要256以内),waterlevel的上升,原来是已经做过了初始的水位分割,那么现在可以从Thre开始了,让水位慢慢上升,让它原本的湖慢慢扩张,尽量利用其应有的空间,而又不至于淹没到其它的邻居湖泊。内循环是扫描每个初始区域(当前Num,从而有Num个循环)的分水岭的点(在vque[][]中),按照给定的水位进行扩张。扩张过程是这样的:扫描到的分水岭的当前点,对其进行四连通邻域进行逐一检查,如果四连通域中有点没有标记的(那这一定是高度较高的点,较低的前面一定扫描过),那么先对该点以本区域号做标记Num(注意是当前的Num);再判断它在当前水位下是否可生长(灰阶是否小于等于waterlevel),如果可生长那么加入到vque[Num][waterlevel]种子队列中,将会再次进入内循环,否则如果在当前水位下不可生长,则加入到这个邻域点的分水岭集合中vque[Num][Ori_image[邻域点]]队列中。如此往复循环,直到对应区域完成,一个水位,扫描所有的区域的分水岭,这样各自同时在一个水位下扩张,保证了不出现跳跃的情况出现(就是一个水位一个区域全局扩张)。

最终,所有的区域在每个水位都扩张完毕,得到了分割图,我们的大湖泊形成了。

这是分水岭算法的一种实现方式。仔细考察不难发现这种实现方式不能产生新的集水盆,也就是说,由于初始集水盆的局限性,很可能会浪费大部分没有发掘出来的起始点较高的集水盆地。这样,我们就要对算法进行修改了。实现方式是:在淹没的过程中,我们是由阈值Thre的水位开始淹没的,那么我们可以对初始区域之外的没有标记的点(从Seed_image中考察),对之进行标记,条件是先把这一轮的内循环做好,然后在剩下的没标记区域中发掘新的集水盆,并加入到我们的种子队列中,下一个水位开始,就又多了一个新成员了,让它们不断膨胀,成长,拥有自己的小天的成员就会逐一的被分割出来。不过话说回来,我们这里是采用梯度图像,一般情况下,阈值初始分割能够满足我们的要求,把灰阶变化平滑的先截取出来,梯度信息已然足够强大;而如果采用了新盆地扩张,则比较适用于原始图像。

分水岭算法主要的分割目的在于找到图像的连通区域。利用梯度信息作为输入图像,会有一个矛盾点,如果对原始图像进行梯度计算时不作滤波平滑处理,很容易将物体分割成多个物体,那是因为噪声的影响;而如果进行滤波处理,又容易造成将某些原本几个的物体合成一个物体。当然这里的物体主要还是指图像变化不大或者说是灰度值相近的目标区域。

 

//算法实现代码如下

/*====================================================================
函数名:          Watershed
功能:            用标记-分水岭算法对输入图像进行分割
算法实现:        无
输入参数说明:    OriginalImage --输入图像(灰度图,0~255)
                  SeedImage     --标记图像(二值图,0-非标记,1-标记)
                  LabelImage    --输出图像(1-第一个分割区域,2-第二个分割区域,...)
                  row           --图像行数
                  col           --图像列数
返回值说明:      无       
====================================================================*/
void WINAPI CDib::Watershed(unsigned char **OriginalImage, char** SeedImage, int **LabelImage, int row, int col)
{
// using namespace std;
 
 //标记区域标识号,从1开始
 int Num=0;
 int i,j;
 
 //保存每个队列种子个数的数组
 vector<int*> SeedCounts;
 //临时种子队列
 queue<POINT> quetem;
 //保存所有标记区域种子队列的数组,里面放的是种子队列的指针
 vector<queue<POINT>*> vque;
 
 int* array;
 //指向种子队列的指针
 queue<POINT> *pque;
 POINT temp;
 
 for(i=0;i<row;i++)
 {
  for(j=0;j<col;j++)
   LabelImage[i][j]=0;
 }
 
 
 int m,n,k=0;
 BOOL up,down,right,left,upleft,upright,downleft,downright;//8 directions...
 
 //预处理,提取区分每个标记区域,并初始化每个标记的种子队列
 //种子是指标记区域边缘的点,他们可以在水位上升时向外淹没(或者说生长)
 //pan's words:我的理解是梯度值较小的象素点,或者是极小灰度值的点。
 for(i=0;i<row;i++)
 {
  for(j=0;j<col;j++)
  {
   //如果找到一个标记区域
   if(SeedImage[i][j]==1)
   {
    //区域的标识号加一
    Num++;
    //分配数组并初始化为零,表示可有256个灰阶
    array=new int[256];
    ZeroMemory(array,256*sizeof(int));
    //种子个数数组进vector,每次扫描则生成一个数组,并用区域标识号来做第一维。灰度级做第二维。
    //表示某个盆地区域中某灰阶所对应的点的数目。
    SeedCounts.push_back(array);
    //分配本标记号的优先队列,256个种子队列,
    //表示对应一个灰阶有一个队列,并且每个队列可以存储一个集合的点信息
    pque=new queue<POINT>[256];
    //加入到队列数组中,对应的是本标记号Num的
    vque.push_back(pque);
    //当前点放入本标记区域的临时种子队列中
    temp.x=i;
    temp.y=j;
    quetem.push(temp);
    //当前点标记为已处理
    LabelImage[i][j]=Num;
    SeedImage[i][j]=127;//表示已经处理过
    
    //让临时种子队列中的种子进行生长直到所有的种子都生长完毕
    //生长完毕后的队列信息保存在vque中,包括区域号和灰阶,对应点数存储在seedcounts中
    while(!quetem.empty())
    {
     up=down=right=left=FALSE;
     upleft=upright=downleft=downright=FALSE;
     //队列中取出一个种子
     temp=quetem.front();
     m=temp.x;
     n=temp.y;
     quetem.pop();
     //注意到127对扫描过程的影响,影响下面的比较,但是不影响while语句中的扫描
     
     if(m>0)
     {
      //上方若为可生长点则加为新种子
      if(SeedImage[m-1][n]==1)
      {
       temp.x=m-1;
       temp.y=n;
       quetem.push(temp);//如果这样的话,那么这些标记过的区域将再次在while循环中被扫描到,不会,因为值是127
       //新种子点标记为已淹没区域,而且是当前区域,并记录区域号到labelImage
       LabelImage[m-1][n]=Num;
       SeedImage[m-1][n]=127;
      }
      else//否则上方为不可生长
      {
       up=TRUE;
      }
     }
     if(m>0&&n>0)
     {
      if(SeedImage[m-1][n-1]==1)//左上方若为可生长点则加为新种子
      {
       temp.x=m-1;
       temp.y=n-1;
       quetem.push(temp);
       //新种子点标记为已淹没区域,即下一个循环中以127来标识不再扫描,而且是当前区域
       LabelImage[m-1][n-1]=Num;
       SeedImage[m-1][n-1]=127;
      }
      else//否则左上方为不可生长
      {
       upleft=TRUE;
      }
     }
     
     if(m<row-1)
     {
      if(SeedImage[m+1][n]==1)//下方若为可生长点则加为新种子
      {
       temp.x=m+1;
       temp.y=n;
       quetem.push(temp);
       //新种子点标记为已淹没区域,而且是当前区域
       LabelImage[m+1][n]=Num;
       SeedImage[m+1][n]=127;
      }
      else//否则下方为不可生长
      {
       down=TRUE;
      }
     }
     if(m<(row-1)&&n<(col-1))
     {
      if(SeedImage[m+1][n+1]==1)//下方若为可生长点则加为新种子
      {
       temp.x=m+1;
       temp.y=n+1;
       quetem.push(temp);
       //新种子点标记为已淹没区域,而且是当前区域
       LabelImage[m+1][n+1]=Num;
       SeedImage[m+1][n+1]=127;
      }
      else//否则下方为不可生长
      {
       downright=TRUE;
      }
     }
     
     if(n<col-1)
     {
      if(SeedImage[m][n+1]==1)//右方若为可生长点则加为新种子
      {
       temp.x=m;
       temp.y=n+1;
       quetem.push(temp);
       //新种子点标记为已淹没区域,而且是当前区域
       LabelImage[m][n+1]=Num;
       SeedImage[m][n+1]=127;
      }
      else//否则右方为不可生长
      {
       right=TRUE;
      }
     }
     if(m>0&&n<(col-1))
     {
      if(SeedImage[m-1][n+1]==1)//右上方若为可生长点则加为新种子
      {
       temp.x=m-1;
       temp.y=n+1;
       quetem.push(temp);
       //新种子点标记为已淹没区域,而且是当前区域
       LabelImage[m-1][n+1]=Num;
       SeedImage[m-1][n+1]=127;
      }
      else//否则右上方为不可生长
      {
       upright=TRUE;
      }
     }
     
     if(n>0)
     {
      if(SeedImage[m][n-1]==1)//左方若为可生长点则加为新种子
      {
       temp.x=m;
       temp.y=n-1;
       quetem.push(temp);
       //新种子点标记为已淹没区域
       LabelImage[m][n-1]=Num;
       SeedImage[m][n-1]=127;
      }
      else//否则左方为不可生长
      {
       left=TRUE;
      }
     }
     if(m<(row-1)&&n>0)
     {
      if(SeedImage[m+1][n-1]==1)//左下方若为可生长点则加为新种子
      {
       temp.x=m+1;
       temp.y=n-1;
       quetem.push(temp);
       //新种子点标记为已淹没区域
       LabelImage[m+1][n-1]=Num;
       SeedImage[m+1][n-1]=127;
      }
      else//否则左方为不可生长
      {
       downleft=TRUE;
      }
     }
     
     //上下左右只要有一点不可生长,那么本点为初始种子队列中的一个
     //这里可否生长是由seedimage中的值来决定的。
     if(up||down||right||left||
      upleft||downleft||upright||downright)
     {
      temp.x=m;
      temp.y=n;
      //下面这个矢量数组:第一维是标记号;第二维是该图像点的灰度级
      //m,n点对应的是while循环里面扫描的像素点。
      //Num是当前的区域号
      //这样这个二维信息就表示了,某个区域中对应某个灰度级对应的成员点的集合与个数
      //分别由下面两个量来表达
      vque[Num-1][OriginalImage[m][n]].push(temp);//这两句中我把Num-1改成了Num...pan's codes...
      SeedCounts[Num-1][OriginalImage[m][n]]++;
     }     
                }//while结束,扫描到quetem为空而止。也就是对应所有的节点都得到不可生长为止(或者是周围的点要么不可生长,要么已生长)
            }//if结束
  // if(Num==5)
   // return;
        }
    }
 //在上述过程中,如果标记的点为0则表示,没有扫描到的点,或者表明不是输入的种子点
 //这里相当于是找seedimage传过来的初始区域的分水岭界线的所有的点;并且用标号记录每个区域,同时集水盆的边缘点进入队列。
 //上面是找集水盆的程序。同时也是连通区域。

/*************************************/
 //test 这里测试一下剩下的非水盆地的点数。
 int seednum;
 for(i=0;i<row;i++)
 {
  for(j=0;j<col;j++)
  {
   if(SeedImage[i][j]==0)
    seednum++;
  }
 }
 
 CString str;
 str.Format("pre region num:%d",Num);
 AfxMessageBox(str);
/*************************************/
 

    bool actives;//在某一水位处,所有标记的种子生长完的标志
    int WaterLevel;
 
 //淹没过程开始,水位从零开始上升,水位对应灰度级,采用四连通法
 for(WaterLevel=0;WaterLevel<180;WaterLevel++)//第二维。。。
 {
  actives=true;
  while(actives)
  {
   actives=false;
   //依次处理每个标记号所对应的区域,且这个标记号对应的区域的点的个数在SeedCounts里面
   for(i=0;i<Num;i++)//第一维。。。
   {
    if(!vque[i][WaterLevel].empty())//对应的分水岭不为空集,i表示区域号,waterlevel表示灰阶
    {
     actives=true;
     while(SeedCounts[i][WaterLevel]>0)
     {
      SeedCounts[i][WaterLevel]--;//取出一个点,个数少一
      temp=vque[i][WaterLevel].front();//取出该区域的一个点,清空这个边缘点,表示当前
                                      //灰度级该像素已经处理掉了。
      vque[i][WaterLevel].pop();
      m = temp.x;
      n = temp.y;//当前种子的坐标
      if(m>0)
      {
       if(!LabelImage[m-1][n])//上方若未处理,表示没有标号,应该在输入前已经作过初始化为0
                           //本函数中在开头也作过初始化
       {
        temp.x=m-1;
        temp.y=n;
        LabelImage[m-1][n]=i+1;//上方点标记为已淹没区域
                               //注意到这个标记是与扫描点的区域号相同,一定在这个标号所属的区域吗?是的
                               //这样在下一轮至少会扫描到这个点,确保不遗漏,但是下一轮的处理会使它合理
                               //归类吗?问题还有这样标记并没有一定将它加入到种子队列。也就是说它
                               //只是被淹没而不能向上淹没。只有满足下述可生长条件才行。
        if(OriginalImage[m-1][n]<=WaterLevel)//上方若为可生长点则加入当前队列,当前高度的队列
        {
         vque[i][WaterLevel].push(temp);
        }
        else//否则加入OriginalImage[m-1][n]对应的灰度级的队列,为什么?
        {
         vque[i][OriginalImage[m-1][n]].push(temp);
         SeedCounts[i][OriginalImage[m-1][n]]++;
        }
       }
      }
      
      if(m<row-1)
      {
       if(!LabelImage[m+1][n])//下方若未处理
       {
        temp.x=m+1;
        temp.y=n;
        LabelImage[m+1][n]=i+1;//下方点标记为已淹没区域
        
        if(OriginalImage[m+1][n]<=WaterLevel)//下方若为可生长点则加入当前队列
        {
         vque[i][WaterLevel].push(temp);
        }
        else//否则加入OriginalImage[m+1][n]级队列
        {
         vque[i][OriginalImage[m+1][n]].push(temp);
         SeedCounts[i][OriginalImage[m+1][n]]++;
        }
       }
      }
      
      if(n<col-1)
      {
       if(!LabelImage[m][n+1])//右边若未处理
       {
        temp.x=m;
        temp.y=n+1;
        LabelImage[m][n+1]=i+1;//右边点标记为已淹没区域
        
        if(OriginalImage[m][n+1]<=WaterLevel)//右边若为可生长点则加入当前队列
        {
         vque[i][WaterLevel].push(temp);
        }
        else//否则加入OriginalImage[m][n+1]级队列
        {
         vque[i][OriginalImage[m][n+1]].push(temp);
         SeedCounts[i][OriginalImage[m][n+1]]++;
        }
       }
      }
      
      if(n>0)
      {
       if(!LabelImage[m][n-1])//左边若未处理
       {
        temp.x=m;
        temp.y=n-1;
        LabelImage[m][n-1]=i+1;//左边点标记为已淹没区域
        
        if(OriginalImage[m][n-1]<=WaterLevel)//左边若为可生长点则加入当前队列
        {
         vque[i][WaterLevel].push(temp);
        }
        else//否则加入OriginalImage[m][n-1]级队列
        {
         vque[i][OriginalImage[m][n-1]].push(temp);
         SeedCounts[i][OriginalImage[m][n-1]]++;
        }
       }
      }
     }//while循环结束
     SeedCounts[i][WaterLevel]=vque[i][WaterLevel].size();
    }//if结束
   }//for循环结束
  }//while循环结束
    }//for循环结束


/**********************************
//test whether the origional segmentation num is changed...
 int nonzeronum=Num;
 for(m=0;m<Num;m++)
 {
  for(i=0;i<row;i++)
  {
   for(j=0;j<col;j++)
   {
    if(LabelImage[i][j]==m)
     break;
   }
   if(LabelImage[i][j]==m)
    break;
  }
  if(j==col-1 && i==row-1 && LabelImage[i][j]!=m)
   nonzeronum--;
 }

 str.Format("new region num:%d",nonzeronum);//这表示的是可扩张的点
 AfxMessageBox(str);
/*********************************/ 

 while(!vque.empty())
 {
  pque=vque.back();
  delete[] pque;
  vque.pop_back();
 }
 while(!SeedCounts.empty())
 {
  array=SeedCounts.back();
  delete[] array;
  SeedCounts.pop_back();
 }
}

 

//在主程序中的调用代码如下(用于处理8位图)

/**************************************/

 //get one image...
 CAPCountMDoc *pDoc=GetDocument();
 HDIB m_hDIBOptFlo=OnReadimage();//HDIB 是Dib图像句柄
 LPSTR lpDIB2 = (LPSTR) ::GlobalLock((HGLOBAL) m_hDIBOptFlo);
 int m_imageH = viewdib.DIBHeight(lpDIB2);
 int m_imageW = viewdib.DIBWidth(lpDIB2);
// viewdib.MedianFilter(lpDIB2,m_imageW,m_imageH,3,3,1,1);//filter

 LPSTR lpDIBBits=viewdib.FindDIBBits(lpDIB2);
 DWORD DWidth=WIDTHBYTES(m_imageW*8);

 //watershed...
 LPSTR lpDIBG=viewdib.MakeGray8Bmp(lpDIB2);
 lpDIBG=viewdib.GetGrad(lpDIBG);
 LPSTR lpDIBBitsG=viewdib.FindDIBBits(lpDIBG);
 int i,k,num=0;
 int m=0,n=0;
 //get oritional image
 unsigned char** ori_image;
 ori_image=alloc_uszchar_space(m_imageH,m_imageW);
 for(i=0;i<m_imageH;i++)
 {
  for(k=0;k<m_imageW;k++)
   ori_image[i][k]=*(lpDIBBitsG+i*DWidth+k);  
 }
 //get seedimage and initialize it
 char** seed_image;
 seed_image=alloc_char_space(m_imageH,m_imageW);
 for(i=0;i<m_imageH;i++)
 {
  for(k=0;k<m_imageW;k++)
   seed_image[i][k]=0;
 }
 unsigned char uszThre=3; 
 unsigned char uszTem=0;
 for(i=2,num=0;i<m_imageH-2;i++)
 {
  for(k=3;k<m_imageW-3;k++)
  {
   uszTem = (BYTE)*(lpDIBBitsG+i*DWidth+k);
   if(uszTem<uszThre)
   {
    seed_image[i][k]=1;
    num++;
   }
  }
 }
 //get labelimage, and initialize it
 int** labelimage=alloc_int_space(m_imageH,m_imageW);
 for(i=0;i<m_imageH;i++)
 {
  for(k=0;k<m_imageW;k++)
   labelimage[i][k]=0;
 }
 //call watershed..
 viewdib.Watershed(ori_image,seed_image,labelimage,m_imageH,m_imageW);
 //get the maximum number in labelimage[][]
 int nregion=0;
 for(i=0;i<m_imageH;i++)
 {
  for(k=0;k<m_imageW;k++)
  {
   if(nregion<labelimage[i][k])
    nregion=labelimage[i][k];
  }
 }
  
/****************************/



 
山城棒棒儿军 @ 2007-04-11 22:17

创业二字让多少人为之热血沸腾,守业时的艰辛又让多少人觉得力不从心,此文送给各位创业路上的英雄们,让我们为创业做足准备:

  1.好眼光,中国有句好话叫男怕选错行,女怕嫁错郎,许多人能“一夜成名”,关键的因素就在于眼光之绝妙。

  2.懂领导,什么叫做领导,就是能让一大堆人各自找到自己的位置,又能让他们彼此做事情做到最好。

  3.会合作,上个世纪末有句话大家还记得吗?21世纪是团队英雄时代,个人英雄时代已经结束。

  4.擅谈判,三寸不烂,去成语字典里查查,再去找找成语的出处,看完以后我想你应该明白一个人的口才和智慧有多重要了吧!

  5.精营销,企业成功的关键是什么,营销、营销、再营销。

  6.勤推销,很多成功人士都是从推销员起家,所谓人生就是推销,对客户推销产品,对员工推销梦想,对上司推销自己...

  7.通会计,财务报表,会计,出纳,总得懂一点。

  8.学管理,管理不同于领导,初入创业之路的人,公司企业管理还得从0开始,在此只需打好心理准备,做些铺垫,当然最好能有高人在旁指点一二,方可入门。

  9.搞生产,生产说白了就是创新,求质,东西好才能有发展,才能留住客户啊,万万不可有偷工减料之心!

  10.多沟通,与朋友,与师长,与对手,与伙伴!


 
山城棒棒儿军 @ 2007-03-14 19:24

刚才那张我自己都不晓得了


 
山城棒棒儿军 @ 2007-03-14 19:17

我的现在的照片在前面的帖子中有



 
山城棒棒儿军 @ 2007-03-12 13:59



这个是紫荆花? 感觉与香港的旗帜上的不完全一样啊