佳丽斯 加厚双人/单人秋冬被子暖冬 羊毛被芯羊毛柔丝被特价包邮 忧忧鱼冬外穿打底裤女秋冬厚长裤女裤加绒加厚高腰弹力铅笔裤靴裤 韩国代购2013新款 韩版秋冬休闲女时尚磨破口袋卫衣韩版学生装 潮

有时,退一步,能一口气进几步,只是这先退一步需要勇气和自信。

用心爱你,努力工作。

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  70 随笔 :: 1 文章 :: 33 评论 :: 0 Trackbacks

2009年10月13日 #

人的生活方式有两种:

  第一种方式是像草一样活着,你尽管活着,每年还在成长,但是你毕竟是一棵草,你吸收雨露阳光,但是长不大。人们可以踩过你,但是人们不会因为你的痛苦,而他产生痛苦;人们不会因为你被踩了,而来怜悯你,因为人们本身就没有看到你。

  第二种方式是像树一样成长,即使我们现在什么都不是,但是只要你有树的种子,即使被人踩到泥土中间,你依然能够吸收泥土的养分,自己成长起来。也许两年三 年你长不大,但是八年,十年,二十年你一定能长成参天大树,当你长成参天大树以后,遥远的地方人们就能看到你,走近你,你能给人一片绿色,一片阴凉,你能 帮助别人,即使人们离开你以后回头一看,你依然是地平线上的一道美丽风景线。

  树活着是美丽的风景,死了依然是栋梁之才,活着死了都有用,这就是我们做人的标准和成长的标准。

  尽管每一条河流都有自己不同的生命曲线,但是每一个河流都有自己的梦想,那就是奔向大海。我们的生命,有的时候会是泥沙,你可能慢慢的就会像泥沙一样沉淀下去。

  一旦你沉淀下去,也许你不再为了前进而努力,但是你永远见不到阳光了。

  所以不管你现在的生命是怎样的状态,一定要有水的精神,像水一样不断的积蓄自己的力量,不断的冲破障碍,当你发现时机不到的时候,把自己的厚度给积累起来,当有一天机会来临的时候,你就能够奔腾入海,成就自己的生命。

 
  ”为了不苦一辈子,定要苦过这阵子“
posted @ 2012-01-05 14:43 王生生 阅读(255) | 评论 (0)编辑 收藏

     摘要:  教你怎样混社会   很多人混到现在一事无成,或自认为一事无成。还有很多人混到现在感觉很失败,或不成功。还有很多人混到现在就觉得过得没意思,过得很机械,过得已经不会思考和心动。我们羡慕着社会上每一个成功人士,羡慕着身边的有钱人,羡慕着身边每一辆呼啸而过的名车。我们时常有这样的念头:他妈的,我怎么混得这么差?   是啊,我怎么会混得这么差?当年班里(周围)不如我的那个家伙怎么现...  阅读全文
posted @ 2010-09-16 20:43 王生生 阅读(788) | 评论 (0)编辑 收藏

因一直很犹豫不想发表这些只言片语,但鉴于各种经历、思想、所感、所悟让我写下以下这些文字供大家参考、指正:


问题:今天我们为 什么不成功?


1、首先我们没有定义好自己的成功标准是什么(是票子、车子、房子、妻子?),不清楚自己的真正目标,是为了理想、 爱好、钱、事业、家庭、权利、欲望、还是人生价值的体现,因此我们每天依旧重复过着糊里糊涂的日子。生活是那么单调、枯燥。


2、 我们不清楚已所之长,己所之短,完全不了解自己,到底缺什么、需补什么、擅长什么、有哪些资源,是知识、钱、关系、项目、人脉、还是时势。我们缺乏核心竞 争力和不可替代性(即唯一性),所以我们往往不知道该做什么,不该做什么。永远盲目着、彷徨着。


3、我们很容易围着别人转、被别 人感染、而不能让别人围着自己转、去感染和影响别人,所以注定了把别人的思想放进自己的脑袋,把自己的钱包放进别人的口袋,自己的命运被别人牢牢把握着, 我们的灵魂和思想早被洗窃一空,剩下的只是行尸走肉。既然如此那么我们还能指望自己成就点什么。


4、我们习惯了肤浅的东西,看表 面的文章、百般无聊、如出一辙的电视,挂QQ、玩游戏、搓麻将、泡馆子、蹲酒吧、守休闲场所、谈论众说纷纭的炒作新闻等,却少读了几本有价值的书、少见了 几个有价值的人,少给了自己几分钟静夜思,严重缺乏看透事物本质的能力。所以我们今天被这个专家、明天被那个大师、后天还有某个名人,前后左右、上上下 下、媒体广告、报纸、杂志、电视、网络、轮番轰炸着,在这个混淆视听的环境里,我们缺乏起码的判断力、分析力、概括力、我们往往被迷失了方向,迷失了自 我。


5、我们缺乏勇气和魄力,习惯了三点一线的生活,没有了当年的匹夫之勇,不敢走回头路和不归路。我们觉得生活很无奈、工作很 单调,发展很受限,却往往詹前顾后,不敢改变自己,懒于学习、不敢做领导、不敢换职位、不敢换工作、不敢创业、不敢质疑、不敢反抗、不敢发表自己的意见、 不敢主动交流、不敢创新,因此我们依旧平淡无奇、素然寡味的过平凡人的日子,因为我们人生的旅途缺乏过程、缺乏那种能够品位真正酸、甜、苦、辣的勇气。


6、 我们缺乏信任、合作、资源整合,我们总在猜测和矛盾中生活,仍在学着一个人打天下。我们很少拥有真正的朋友、能帮到上忙、借的上钱、铁的了心、有心灵感应 时常挂念的朋友、平时不烧香临时抱佛脚,我们不太懂得相互宽容、理解、互补、平衡、分享、互利这些道理,所谓的兄弟、酒肉朋友太多,危难之中,我们可信任 的人太少、信任的程度太低、信任的成本太高、我们都在相互猜忌着,力量相互内耗着。我们找不到资源的整合点,其实不会合理利用,仍在感叹我能点做什么,到 底怎么办,我们认识的人层次太低,我们的胸怀太狭隘,所以很多道理,真相明白不透,我们默默的做了垫脚石而已。


7、我们缺乏行动 力、执行力、做人、处事方法,仍在日复一日,年复一年平淡、懵懂的过日子。我们每时每刻都有美妙的想法,唯独缺没有做法,没有持之以恒的信心和耐力。我们 不能时常的照镜子,予以自醒、禅悟。


8、我们缺乏总结力,纠正力,失败了,还是失败了,错误了,依旧错误着。我们的习惯依旧没有 改变,由此养成了这种性格,最终决定了这种命运。


9、我们不懂得编织关系网,其实关系网是网状结构,先从你认识和了解的人开始, 然后从认识你的人开始,最后从你朋友的朋友开始,依次类推,记得要用心和以诚相待,人与人之间其实是平等的,没有高、低、贵、贱之分(除非你真的有求于他 /她),没有什么了不起的,注意了解他/她人背景和整合资料很重要。


10、我们缺乏理财,常常不知道该买什么,该卖什么,什么是 收入,什么是支出,什么是负债,什么是资产,何谓投资,如何开源节流,我们忽视了细节,量变成了质变,因此我们的现金数字依然很尴尬。我们不清楚如何找 钱、挣钱、存钱、借钱、还钱、花钱。


11、我们严重缺知识,基础知识+社会知识,即学历太低、经历太少,缺乏不断学习补充、虚心 请教、拜师学艺的能力


缺乏海纳百川、中西合璧、文理交融的素质、缺乏一技之长、专攻和全面,我们还是怀着陈旧的思想和笨拙的方 法,我们不敢怀疑、挑战、创新新思维。


12、我们早被这个灯红酒绿、物欲横流的世界弄得焦躁不安,不能静下心来,反复,认真的思 考自己的人生,稳重走好自己的每一步。我们不懂得管理时间、合理利用时间、守时。以至老大涂伤悲。


13、我们缺乏快乐感、幸福 感、安全感,人与人之间太冷漠、太现实,许多家庭支离破碎、许多交际带着有色眼镜,许多圈子旁人所不能及,许多婚姻夹着交易,许多爱情不是爱情,许多亲情 缺乏关心、许多兄弟背后插刀、我们害怕房奴、车奴、结婚、生子、生病、失业、人情、意外、整日惶惶,我们不知道什么是快乐幸福,不知道如何寻找、不知道调 整自己的心态和位置、不明白取、舍、知足常乐、超越、分享、顺其自然这些东西。


14、我们不懂得把握时势,不懂得政治、经济的厉 害关系,不明白风水轮流转、天地合一、互利互惠的道理,不明白红海和蓝海战略,不明白水能载舟亦能覆舟、没有绝对的朋友和绝对的敌人。不懂得顺应潮流和创 造潮流,我们依旧固步自封,停滞不前。


15、最后我们看准了方向,做好充分的准备(破斧沉舟),请立即开始行动,坚持、坚持、再 坚持!熬过了今天,明天会很美好!其间我们不断的完善自我,调整自我。愿所有有心人能成功!天道酬勤!

轉自 http://topic.csdn.net/u/20100609/22/9f6cb6ec-8eaf-4aa4-a0e1-fd3a9ddda88e.html
posted @ 2010-07-06 15:46 王生生 阅读(236) | 评论 (0)编辑 收藏

有 人工作,有人上学,大家千万不要错过这篇文章,能看到这篇文章也是一种幸运,真的受益匪浅,对我有很大启迪,这篇文章将会改变你我的一生,真的太好了,希 望与有缘人分享,也希望对有缘人有所帮助!看完之后有种“相见恨晚”的感觉,特别激动,希望大家好好的珍藏这篇文章,相信多年以后,再来看这篇文章,一定 有不同的感觉。

图片

        正如"打工皇帝"唐骏说:"我觉得有两种人不 要跟别人争利益和价值回报。第一种人就是刚刚进入企业的人,头5年千万不要说你能 不能多给我一点儿工资,最重要的是能在企业里学到什么,对发展是不是有利……"
       
人总是从平坦中获得的教益少,从磨难中获得的教益多;从平坦中获得的教益浅,从磨难中获得的教益深。 一个人在年轻时经历磨难,如能正确视之,冲出黑暗,那就是一个值得敬慕的人。最要紧的是先练好内功,毕业后这5年就是练内功的最佳时期,练好内功,才有可能在未来攀得更高。

       
出路在哪里?出路在于思路!
  其实,没有钱、没有经验、没有阅历、没有社会关系,这些都不可怕。没有钱,可以通过辛勤劳动去 赚;没有经验,可以通过实践操作去总结;没有阅历,可以一步一步去积累;没有社会关系,可以一点一点去编织。但是,没有梦想、没有思路才是最可怕的,才让 人感到恐惧,很想逃避
!
  人必须有一个正确的方向。无论你多么意气风发,无论你是多么足智多谋,无论你花费了多大的心血, 如果没有一个明确的方向,就会过得很茫然,渐渐就丧失了斗志,忘却了最初的梦想,就会走上弯路甚至不归路,枉费了自己的聪明才智,误了自己的青春年华。

    
荷马史诗《奥德赛》中有一句至理名 言:"没有比漫无目的地徘徊更令人无法忍受的了。"毕业后这5年里的迷茫,会造 成10年后的恐慌,20年后的挣扎,甚 至一辈子的平庸。如果不能在毕业这5年尽快冲出困惑、走出迷雾,我们实在是无颜面对10年后、20年后的自己。毕业这5年里,我们既有很多的不确定,也有很多的可能性。
  毕业这5年里,我们既有很 多的待定,也有很多的决定。
迷茫与困惑谁都会经历,恐惧与逃避谁都曾经有过,但不要把迷茫与困惑当作可以自我放弃、甘于平庸的借口,更不要成为自怨自艾、祭奠失意的苦酒。生命需要 自己去承担,命运更需要自己去把握。在毕业这5年里,越早找到方向,越早走出困惑,就 越容易在人生道路上取得成就、创造精彩。无头苍蝇找不到方向,才会四处碰壁;一个人找不到出路,才会迷茫、恐惧。
    
生活中,面对困境,我们常常会有走投无路的感觉。不要气馁,坚持下去,要相信年轻的人生没有绝路,困境在前方,希望在拐角。只要我们有 了正确的思路,就一定能少走弯路,找到出路!
       
成功的人不是赢在起点,而是赢在转折点。
   
不少刚刚毕业的年轻人,总是奢望马上就能找到自己理想中的工作。然而,很多好工作是无法等来的,你必 须选择一份工作作为历练。职业旅程中的第一份工作,无疑是踏入社会这所大学的起点。也许你找了一份差强人意的工作,那么从这里出发,好好地沉淀自己,从这 份工作中汲取到有价值的营养,厚积薄发。千里之行,始于足下,只要出发,就有希望到达终点。

    
起点可以相同,但是选择了不同的拐点,终点就会大大不同!
    
毕业这几年,我们的生活、感情、职业 等都存在很多不确定的因素,未来也充满了各种可能。这个时候,必须学会选择,懂得放弃,给自己一个明确的定位,使自己稳定下来。如果你不主动定位,就会被 别人和社会"定型"
  可以这么说:一个人在毕业这5年培养起来的行为习惯,将决定他一生的高度。我们能否成功,在某种程度上取决于自己对自己的评价,这 就是定位。你给自己定位是什么,你就是什么。定位能决定人生,定位能改变命运。丑小鸭变成白天鹅,只要一双翅膀;灰姑娘变成美公主,只要一双水晶鞋。
   
人的命,三 分天注定,七分靠打拼,有梦就"会红",爱 拼才会赢。只要不把自己束缚在心灵的牢笼里,谁也束缚不了你去展翅高飞。
    
现实情况远非他们所想的那样。于是, 当优越感逐渐转为失落感甚至挫败感时,当由坚信自己是一块"金子"到怀疑自己是一粒"沙子"时,愤怒、迷茫、自卑就开始与日俱增。
   
其实,应该仔细掂量一下自己,你是否真是金子?是真金,手中要有绝活,才能上要有过人之处才行。一句话:真金是要靠实力来证明的,只有 先把自己的本领修炼好了,才有资格考虑伯乐的事情
   
每颗珍珠原本都是一粒沙子,但并不是每一粒沙子都能成为一颗珍 珠。
   
想要卓尔不群,就要有鹤立鸡群的资本。忍受不了打击和挫折,承受不住忽视和平淡,就很难达到辉煌。年轻人要想让自己得到重用,取得成 功,就必须把自己从一粒沙子变成一颗价值连城的珍珠。
       
天有下雨与日出,人生高峰与低谷。
       
莫为浮云遮望眼,风物长宜放眼量。

只要拂去阴霾,就能亮出 朗朗晴空。如果你在工作上有些不如意,要相信自己不会一直处于人生的低谷期,总有一天能冲破重重云层。告诉自己:我并没有失败,只是暂时没有成功!只要在 内心点亮一盏希望之灯,一定能驱散黑暗中的阴霾,迎来光明。
    
的确,论资历,他们是 不折不扣的职场菜鸟,业务涉及不深,人脉一穷二白,在工作中经常碰壁。他们的压力并不一定都像千钧大石,而是像大雨来临前的天色,灰色低沉,明明有空间, 却被灰色填满每个缝隙,只能等待大雨倾盆之后的晴空。
  "起得比鸡早,睡得比狗 晚,干得比驴多,吃得比猪差。"这是很多刚刚毕业的人喜 欢用来调侃自己生活状态的话。虽然有点儿夸张,但是,他们中的很多人的确一直都被灰色心情所笼罩--心里永远是多云转阴。记得有位哲人曾说:"我们的痛苦不是问题本身带来的,而是我们对这些问题的看法产生的。"换个角度看人生,是一种突破、一种解脱、一种超越、一种高层次的淡泊与宁 静,从而获得自由自在的快乐。
    
一位哲人说:"人生就是一连串的抉择,每个人的前途与命运,完全把握在自己手中,只要努 力,终会有成。"就业也好,择业也罢,创 业亦如此,只要奋发努力,都会成功。你是不是准备把生命的承诺全部都交给别人?
  毕业后这5年,是改变自己命运的黄金时期。在最能决定自己命运时,如果还不把握,那你 还要等到什么时候呢?我的人生我做主,命运由己不由人。
  不要活在别人的 嘴里,不要活在别人的眼里,而是把命运握在自己手里。
  别说你没有背景, 自己就是最大的背景。美国作家杰克·凯鲁亚克说过一句话:"我还年轻,我渴望上 路。"在人生的旅途中,我们永 远都是年轻人,每天都应该满怀渴望。每个人的潜能都是无限的,关键是要发现自己的潜能和正确认识自己的才能,并找到一个能充分发挥潜能的舞台,而不能只为 舞台的不合适感到不快。要客观公正地看待自己的能力,结合自己的实际情况和爱好冷静选择,尽可能到最需要自己、最适合自己的地方。
     在人力资源管理界,特别流行一个说法,即"骑马,牵牛,赶猪,打狗"理论:人品很好,能力又很强的,是千里马,我们要骑着他;人品很好但能力普 通的,是老黄牛,我们要牵着他;人品、能力皆普通的,就是"",我们要赶走他;人品很差能力很强的,那是"",我们要打击他。
   
我想,刚刚毕业几年的 你,一样胸怀大志,一样想成为一匹被人赏识、驰骋沙场的千里马吧?那么,就好好沉淀下来。低就一层不等于低人一等,今日的俯低是为了明天的高就。所谓生命 的价值,就是我们的存在对别人有价值。能被人利用是一件好事,无人问津才是真正的悲哀!
    
能干工作、干好工作是职场生存的基本保障。
   
任何人做工作的前提条件都是他的能力能够胜任这项工作。能干是合格员工最基 本的标准,肯干则是一种态度。一个职位有很多人都能胜任,都有干好这份工作的基本能力,然而,能否把工作做得更好一些,就要看是否具有踏实肯干、苦于钻研 的工作态度了。
    
在 能干的基础上踏实肯干。
    工作中,活干得比别人 多,你觉得吃亏;钱拿得比别人少,你觉得吃亏;经常加班加点,你觉得吃亏……其实,没必要这样计较,吃亏不是灾难,不是失败,吃亏也是一种生活哲学。现在 吃点儿小亏,为成功铺就道路,也许在未来的某个时刻,你的大福突然就来了。
    
能吃亏是做人的一种境界,是处世的一种睿智。
    
在工作中并不是多做事 或多帮别人干点儿活就是吃亏。如果领导让你加加班、赶赶任务,别以为自己吃了大亏,反而应该感到庆幸,因为领导只叫了你,而没叫其他人,说明他信任你、赏 识你。吃亏是一种贡献,你贡献得越多,得到的回报也就越多。乐于加班,就是这样的一种吃亏。
   
舍 得舍得,有舍才有得;学会在适当时吃些亏的人绝对不是弱智,而是大智。
  给别人留余地就是给自己留余地,予人方便就是予己方便,善待别人就是善 待自己。
  傻人有傻福,因为 傻人没有心计。和这样的人在一起,身心放松,没有太多警惕,就能相互靠近。傻在很多时候意味着执着和忠贞,也意味着宽厚和诚实,让人不知不觉站到他一边。 傻人无意中得到的,比聪明人费尽心机得到的还多。毕业这几年,你的天空中只飘着几片雪花,这样你就满足了吗?成功需要坚持与积累,与其专注于搜集雪花,不 如省下力气去滚雪球。巴菲特说:"人生就像滚雪球,最重要 的是发现很湿的雪和很长的坡。"让自己沉淀下来,学着发 现"很湿的雪",努力寻找"很长的坡"。记住:散落的雪花会很快融化,化为乌有,只有雪球才更实在,才能长久。
在毕业这几年里,你要是 能做到比别人多付出一分努力,就意味着比别人多积累一分资本,就比别人多一次成功的机会。
    
什么是职业化呢?职业化就是工作状态的标准化、规范化、制度化,即在合适的时间、合适的地点用合适的方 式说合适的话、做合适的事,使知识、技能、观念、思维、态度、心理等符合职业规范和标准。"在每个行业里,都有很 多出色的人才,他们之所以能存在,是因为比别人更努力、更智慧、更成熟。但是,最重要的是,他们比一般人更加职业化!这就是为什么我现在能当你老板的原 因。一个人仅仅专业化是不够的,只有职业化的人才能飞在别人前面,让人难以超越!"不要以为我们现在已经 生存得很安稳了。对于毕业5年的人来讲,一定要认清 即将面临的五大挑战。

一、赡养父母。
二、结婚生子。
三、升职加薪。
四、工作压力。
五、生活质量。
    
有的人为生存而雀跃,目 光总是停在身后,三天打鱼两天晒网,有始无终。
   有的人为发展而奋斗, 目光总是盯在正前方,每天进步一点点,坚持不懈。
  毕业这几年,不能没有追求和探索,不能没有理想和目标。人生如逆水行舟,不进则退。甘于现状的生活就是不再前行 的船,再也无法追上时代前进的步伐。一定要抓紧每一秒钟的时间来学习,要明白学习不是学生的专利。小聪明的人最得意的是:自己做过什么?大智慧的人最渴望 的是:自己还要做什么?
  小聪明是战术,大智慧是战略;小聪明看到的是芝麻,大智慧看到的是西瓜。
  在这个世界上,既 有大人物,也有小角色,大人物有大人物的活法,小人物有小人物的潇洒,每个人都有自己的生活方式,谁也勉强不了谁。但是,小聪明只能有小成绩和小视野,大 智慧才能有大成就和大境界。小企业看老板,中企业看制度,大企业看文化。
    
小公司与大企业都有生 存之道,没有好坏之分,但对一个人不同阶段的影响会不同。
  小公司肯定想要发展为大企业,这是一种目标,年轻人也要给自己的职业生 涯制定目标。毕业几年的你,是否经常会怯场或者是感到没有底气?居安思危绝对不是危言耸听!此刻打盹,你将做梦;此刻学习,你将圆梦。在竞争激烈的人生战 场上,打盹的都是输家!
  
每个人在年轻的时候似乎 都豪情万丈,什么都不怕,可是随着年龄的增长,每天想着房子、工作、养家糊口这些俗事儿,再也没有年轻时那种敢于"上天探星、下海捞月"的勇气了。是我们改变了生活,还是生活改变了我们?我们的思想越来越复杂, 因为有了越来越多的舍不得、越来越多的顾虑,我们总是在徘徊、总是在犹豫。毕业开始一两年,生活的重担会压得我们喘不过气来,挫折和障碍堵住四面八方的通 口,我们往往在压迫得自己发挥出潜能后,才能杀出重围,找到出路。可是两三年后,身上的重担开始减轻,工作开始一帆风顺,我们就松懈了下来,渐渐忘记了潜 在的危险。直到有一天危机突然降临,我们在手足无措中被击败……毕业这几年,仍然处于危险期,一定要有居安思危的意识,好好打拼,这样才能有一个真正的安 全人生!
    
生 于忧患,死于安乐。如果你想跨越自己目前的成就,就不能画地自限,而是要勇于接受挑战。对畏畏缩缩的人来说,真正的危险正在于不敢冒 险!
   
年轻人在社会的重压下, 适应能力已变得越来越强,只是他们不自觉地习惯被环境推着走。他们不敢冒险,怕给自己带来终身的遗憾,于是告慰自己:"我对得起自己、对得起家人,因为我已竭尽全力。"其实,人只有不断挑战和突破才能逐渐成长。长期固守于已有的安全感中,就会 像温水里的青蛙一样,最终失去跳跃的本能。
    
经历了这几年社会生 活,你应该明白:这个世界上有富也有贫,有阴也有亮,有丑也有美,到底看到什么,取决于自己是积极 还是消极。在年轻时学会勤勉地工作,用一种光明的思维对待生活,那么,只要张开手掌,你就会发现,里面有一片灿烂的人生。
    把感恩刻在石头上,深深地感谢别人帮助过你,永远铭记,这是人生应有的一种 境界;把仇恨写在沙滩上,淡淡忘掉别人伤害过你,学会宽容,让所有的怨恨随着潮水一去不复返,这也是一种人生境界。
   
学 会倒出水,才能装下更多的水。从毕业那天开始,学会把每天都当成一个新的起点,每一次工作都从零开始。如果你懂得把"归零"当成一种生活的常态, 当成一种优秀的延续,当成一种时刻要做的事情,那么,经过短短几年,你就可以完成自己职业生涯的正确规划与全面超越。
  在职业起步的短短道 路上,想要得到更好、更快、更有益的成长,就必须以归零思维来面对这个世界。不要以大学里的清高来标榜自己,不要觉得自己特别优秀,而是要把自己的姿态放 下,把自己的身架放低,让自己沉淀下来,抱着学习的态度去适应环境、接受挑战。放下"身段"才能提高身价,暂时的俯低终会促成未来的高就。
  年轻人从校园或者从 一个环境进入一个新环境,就要勇于将原来环境里熟悉、习惯、喜欢的东西放下,然后从零开始。我们想在职场上获得成功,首先就要培养适应力。从自然人转化为 单位人是融入职场的基本条件。一个人起点低并不可怕,怕的是境界低。越计较自我,便越没有发展前景;相反,越是主动付出,那么他就越会快速发展。很多今天 取得一定成就的人,在职业生涯的初期都是从零开始,把自己沉淀再沉淀、倒空再倒空、归零再归零,正因为这样,他们的人生才一路高歌,一路飞扬。
  在毕业这几年里,我 们要让过去归零,才不会成为职场上那只背着重壳爬行的蜗牛,才能像天空中的鸟儿那样轻盈地飞翔。请好好品味一下杰克·韦尔奇说过的一句话:"纠正自己的行为,认清自己,从零开始,你将重新走上职场坦途。" 吐故才能纳新,心静才能身凉,有舍才能有得,杯空才能水满,放下才能超 越。
   
归零思维五大表现:心中无我,眼中无钱,念中无他,朝中无人,学无止境。
    年轻人难免带着几分傲气,认为自己无所不能、所向披靡,其实不然,初入职场 的新人还是个"婴儿",正处在从爬到走的成长阶段。在毕业这几年里,一定要让自己逐步培养起学徒 思维、海绵思维、空杯思维,具有这样思维的人心灵总是敞开的,能随时接受启示和一切能激发灵感的东西,他们时刻都能感受到成功女神的召唤.

posted @ 2010-03-29 13:30 王生生 阅读(391) | 评论 (0)编辑 收藏

Memcache函数库是在PECL(PHP Extension Community Library)中,
主要作用是搭建大容量的内存数据的临时存放区域,
在分布式的时候作用体现的非常明显,否则不建议使用。以下為幾個例子,都很簡單。

<?php
$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die ("Could
not connect");
$version = $memcache->getVersion();
echo "Server's version: ".$version." ";
?>

<?php
$memcache = new Memcache; $memcache->connect('localhost', 11211) or die ("Could not connect");
print_r($memcache->getStats());
/** * Array * ( * [pid] => 8052 * [uptime] => 9205 * [time] => 1205898428 * [version] => 1.2.5 * [pointer_size] => 32 * [rusage_user] => 0.008000 * [rusage_system] => 0.000000 * [curr_items] => 1 * [total_items] => 17 * [bytes] => 57 * [curr_connections] => 2 * [total_connections] => 15 * [connection_structures] => 3 * [cmd_get] => 9 * [cmd_set] => 23 * [get_hits] => 5 * [get_misses] => 4 * [evictions] => 0 * [bytes_read] => 671 * [bytes_written] => 850 * [limit_maxbytes] => 10485760 * [threads] => 1 * ) */
?>

<?php
$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die ("Could not connect");
$memcache->set( 'name', 'leo', 0, 30);
if(!$memcache->add( 'name', 'susan', 0, 30)){
 echo 'susan is exist';
};
$memcache->replace( 'name', 'lion', 0, 300);
echo $memcache->get( 'name');
$memcache->delete( 'name', 5);
?>

<?php
function _callback_memcache_failure($host, $port) {
 print "memcache '$host:$port' failed";
}
$memcache = new Memcache;
$memcache->addServer('192.168.1.116', 11211);
$memcache->setServerParams('192.168.1.116', 11211, 1, 15, true,'_callback_memcache_failure');
echo $memcache->getServerStatus('192.168.1.116', 11211);
?>


<?php
$memcache = new Memcache;
$memcache->connect('localhost', 11211);
$memcache->set('test_item', 8);
$memcache->increment('test_item', 4);
echo $memcache->decrement('test_item', 7);
// 显示 5
?>

Memcach方法說明:
01.Memcache::add — 添加一个值,如果已经存在,则返回false
02.Memcache::addServer — 添加一个可供使用的服务器地址
03.Memcache::close — 关闭一个Memcache对象
04.Memcache::connect — 创建一个Memcache对象
05.memcache_debug — 控制调试功能
06.Memcache::decrement — 对保存的某个key中的值进行减法操作
07.Memcache::delete — 删除一个key值
08.Memcache::flush — 清除所有缓存的数据
09.Memcache::get — 获取一个key值
10.Memcache::getExtendedStats — 获取进程池中所有进程的运行系统统计
11.Memcache::getServerStatus — 获取运行服务器的参数
12.Memcache::getStats — 返回服务器的一些运行统计信息
13.Memcache::getVersion — 返回运行的Memcache的版本信息
14.Memcache::increment — 对保存的某个key中的值进行加法操作
15.Memcache::pconnect — 创建一个Memcache的持久连接对象
16.Memcache::replace — R对一个已有的key进行覆写操作
17.Memcache::set — 添加一个值,如果已经存在,则覆写
18.Memcache::setCompressThreshold — 对大于某一大小的数据进行压缩
19.Memcache::setServerParams — 在运行时修改服务器的参数


posted @ 2010-03-23 11:11 王生生 阅读(445) | 评论 (0)编辑 收藏

必须掌握的八个cmd 命令 

一,ping    

  它是用来检查网络是否通畅或者网络连接速度的命令。作为一个生活在网络上的管理员或者黑客来说,ping命令是第一个必须掌握的DOS命令,它 所利用的原理是这样的:网络上的机器都有唯一确定的IP地址,我们给目标IP地址发送一个数据包,对方就要返回一个同样大小的数据包,根据返回的数据包我 们可以确定目标主机的存在,可以初步判断目标主机的操作系统等。下面就来看看它的一些常用的操作。先看看帮助吧,在DOS窗口中键入:ping /? 回车,。所示的帮助画面。在此,我们只掌握一些基本的很有用的参数就可以了(下同)。    

  -t 表示将不间断向目标IP发送数据包,直到我们强迫其停止。试想,如果你使用100M的宽带接入,而目标IP是56K的小猫,那么要不了多久,目标IP就因为承受不了这么多的数据而掉线,呵呵,一次攻击就这么简单的实现了。    

  -l 定义发送数据包的大小,默认为32字节,我们利用它可以最大定义到65500字节。结合上面介绍的-t参数一起使用,会有更好的效果哦。    

  -n 定义向目标IP发送数据包的次数,默认为3次。如果网络速度比较慢,3次对我们来说也浪费了不少时间,因为现在我们的目的仅仅是判断目标IP是否存在,那么就定义为一次吧。    

  说明一下,如果-t 参数和 -n参数一起使用,ping命令就以放在后面的参数为标准,比如"ping IP -t -n 3",虽然使用了-t参数,但并不是一直ping下去,而是只ping 3次。另外,ping命令不一定非得ping IP,也可以直接ping主机域名,这样就可以得到主机的IP。    

  下面我们举个例子来说明一下具体用法。    

  这里time=2表示从发出数据包到接受到返回数据包所用的时间是2秒,从这里可以判断网络连接速度的大小。从TTL的返回值可以初步判断被ping主机的操作系统,之所以说"初步判断"是因为这个值是可以修改的。这里TTL=32表示操作系统可能是 win98。 

  (小知识:如果TTL=128,则表示目标主机可能是Win2000;如果TTL=250,则目标主机可能是Unix) 

  至于利用ping命令可以快速查找局域网故障,可以快速搜索最快的QQ服务器,可以对别人进行ping攻击……这些就靠大家自己发挥了。    

二,nbtstat    

  该命令使用TCP/IP上的NetBIOS显示协议统计和当前TCP/IP连接,使用这个命令你可以得到远程主机的NETBIOS信息,比如用户名、所属的工作组、网卡的MAC地址等。在此我们就有必要了解几个基本的参数。    

  -a 使用这个参数,只要你知道了远程主机的机器名称,就可以得到它的NETBIOS信息(下同)。    

  -A 这个参数也可以得到远程主机的NETBIOS信息,但需要你知道它的IP。 

  -n 列出本地机器的NETBIOS信息。    

  当得到了对方的IP或者机器名的时候,就可以使用nbtstat命令来进一步得到对方的信息了,这又增加了我们入侵的保险系数。    

三,netstat 

  这是一个用来查看网络状态的命令,操作简便功能强大。    

  -a 查看本地机器的所有开放端口,可以有效发现和预防木马,可以知道机器所开的服务等信息,如图4。    

  这里可以看出本地机器开放有FTP服务、Telnet服务、邮件服务、WEB服务等。用法:netstat -a IP。 

  -r 列出当前的路由信息,告诉我们本地机器的网关、子网掩码等信息。用法:netstat -r IP。 

四,tracert 

  跟踪路由信息,使用此命令可以查出数据从本地机器传输到目标主机所经过的所有途径,这对我们了解网络布局和结构很有帮助。如图5。    

  这里说明数据从本地机器传输到192.168.0.1的机器上,中间没有经过任何中转,说明这两台机器是在同一段局域网内。用法:tracert IP。    

五,net    

  这个命令是网络命令中最重要的一个,必须透彻掌握它的每一个子命令的用法,因为它的功能实在是太强大了,这简直就是 微软为我们提供的最好的入侵工具。首先让我们来看一看它都有那些子命令,键入net /?回车如图6。 

  在这里,我们重点掌握几个入侵常用的子命令。    

  net view    

  使用此命令查看远程主机的所以共享资源。命令格式为net view \IP。   

  net use 

  把远程主机的某个共享资源影射为本地盘符,图形界面方便使用,呵呵。命令格式为net use x: \IP\sharename。上面一个表示把192.168.0.5IP的共享名为magic的目录影射为本地的Z盘。下面表示和192.168.0.7 建立IPC$连接(net use \IP\IPC$ "password" /user:"name"),    

  建立了IPC$连接后,呵呵,就可以上传文件了:copy nc.exe \192.168.0.7\admin$,表示把本地目录下的nc.exe传到远程主机,结合后面要介绍到的其他DOS命令就可以实现入侵了。    

  net start 

  使用它来启动远程主机上的服务。当你和远程主机建立连接后,如果发现它的什么服务没有启动,而你又想利用此服务怎么办?就使用这个命令来启动吧。用法:net start servername,如图9,成功启动了telnet服务。    

  net stop 

  入侵后发现远程主机的某个服务碍手碍脚,怎么办?利用这个命令停掉就ok了,用法和net start同。    

  net user 

  查看和帐户有关的情况,包括新建帐户、删除帐户、查看特定帐户、激活帐户、帐户禁用等。这对我们入侵是很有利的,最重要的,它为我们克隆帐户提供了前提。键入不带参数的net user,可以查看所有用户,包括已经禁用的。下面分别讲解。 

  1,net user abcd 1234 /add,新建一个用户名为abcd,密码为1234的帐户,默认为user组成员。 

  2,net user abcd /del,将用户名为abcd的用户删除。 

  3,net user abcd /active:no,将用户名为abcd的用户禁用。 

  4,net user abcd /active:yes,激活用户名为abcd的用户。 

  5,net user abcd,查看用户名为abcd的用户的情况   

  net localgroup 

  查看所有和用户组有关的信息和进行相关操作。键入不带参数的net localgroup即列出当前所有的用户组。在入侵过程中,我们一般利用它来把某个帐户提升为administrator组帐户,这样我们利用这个帐户 就可以控制整个远程主机了。用法:net localgroup groupname username /add。    

  现在我们把刚才新建的用户abcd加到administrator组里去了,这时候abcd用户已经是超级管理员了,呵呵,你可以再使用net user abcd来查看他的状态,和图10进行比较就可以看出来。但这样太明显了,网管一看用户情况就能漏出破绽,所以这种方法只能对付菜鸟网管,但我们还得知 道。现在的手段都是利用其他工具和手段克隆一个让网管看不出来的超级管理员,这是后话。有兴趣的朋友可以参照《黑客防线》第30期上的《由浅入深解析隆帐 户》一文。    

  net time 

  这个命令可以查看远程主机当前的时间。如果你的目标只是进入到远程主机里面,那么也许就用不到这个命令了。但简单的入侵成功了,难道只是看看 吗?我们需要进一步渗透。这就连远程主机当前的时间都需要知道,因为利用时间和其他手段(后面会讲到)可以实现某个命令和程序的定时启动,为我们进一步入 侵打好基础。用法:net time \IP。    

六,at 

这个命令的作用是安排在特定日期或时间执行某个特定的命令和程序(知道net time的重要了吧?)。当我们知道了远程主机的当前时间,就可以利用此命令让其在以后的某个时间(比如2分钟后)执行某个程序和命令。用法:at time command \computer。    

  表示在6点55分时,让名称为a-01的计算机开启telnet服务(这里net start telnet即为开启telnet服务的命令)。    

七,ftp    

  大家对这个命令应该比较熟悉了吧?网络上开放的ftp的主机很多,其中很大一部分是匿名的,也就是说任何人都可以登陆上去。现在如果你扫到了一 台开放 ftp服务的主机(一般都是开了21端口的机器),如果你还不会使用ftp的命令怎么办?下面就给出基本的ftp命令使用方法。 

  首先在命令行键入ftp回车,出现ftp的提示符,这时候可以键入"help"来查看帮助(任何DOS命令都可以使用此方法查看其帮助)。    

  大家可能看到了,这么多命令该怎么用?其实也用不到那么多,掌握几个基本的就够了。    

  首先是登陆过程,这就要用到open了,直接在ftp的提示符下输入"open 主机IP ftp端口"回车即可,一般端口默认都是21,可以不写。接着就是输入合法的用户名和密码进行登陆了,这里以匿名ftp为例介绍。    

  用户名和密码都是ftp,密码是不显示的。当提示**** logged in时,就说明登陆成功。这里因为是匿名登陆,所以用户显示为Anonymous。    

  接下来就要介绍具体命令的使用方法了。    

  dir 跟DOS命令一样,用于查看服务器的文件,直接敲上dir回车,就可以看到此ftp服务器上的文件。 

  cd 进入某个文件夹。 

  get 下载文件到本地机器。 

  put 上传文件到远程服务器。这就要看远程ftp服务器是否给了你可写的权限了,如果可以,呵呵,该怎么 利用就不多说了,大家就自由发挥去吧。 

  delete 删除远程ftp服务器上的文件。这也必须保证你有可写的权限。 

  bye 退出当前连接。 

  quit 同上。 

八,telnet 

  功能强大的远程登陆命令,几乎所有的入侵者都喜欢用它,屡试不爽。为什么?它操作简单,如同使用自己的机器一样,只要你熟悉DOS命令,在成功 以 administrator身份连接了远程机器后,就可以用它来干你想干的一切了。下面介绍一下使用方法,首先键入telnet回车,再键入help查看 其帮助信息。    

  然后在提示符下键入open IP回车,这时就出现了登陆窗口,让你输入合法的用户名和密码,这里输入任何密码都是不显示的。    

  当输入用户名和密码都正确后就成功建立了telnet连接,这时候你就在远程主机上具有了和此用户一样的权限,利用DOS命令就可以实现你想干的事情了。这里我使用的超级管理员权限登陆的。   

  到这里为止,网络DOS命令的介绍就告一段落了,这里介绍的目的只是给菜鸟网管一个印象,让其知道熟悉和掌握网络DOS命令的重要性。其实和网 络有关的DOS命令还远不止这些,这里只是抛砖引玉,希望能对广大菜鸟网管有所帮助。学好DOS对当好网管有很大的帮助,特别的熟练掌握了一些网络的 DOS命令。 

  另外大家应该清楚,任何人要想进入系统,必须得有一个合法的用户名和密码(输入法漏洞差不多绝迹了吧),哪怕你拿到帐户的只有一个很小的权限,你也可以利用它来达到最后的目的。所以坚决消灭空口令,给自己的帐户加上一个强壮的密码,是最好的防御弱口令入侵的方法。 

  最后,由衷的说一句,培养良好的安全意识才是最重要的。 

========================================= 

开始→运行→命令集锦 

winver---------检查Windows版本 

wmimgmt.msc----打开windows管理体系结构(WMI) 

wupdmgr--------windows更新程序 

wscript--------windows脚本宿主设置 

write----------写字板 

winmsd---------系统信息 

wiaacmgr-------扫描仪和照相机向导 

winchat--------XP自带局域网聊天 

mem.exe--------显示内存使用情况 

Msconfig.exe---系统配置实用程序 

mplayer2-------简易widnows media player 

mspaint--------画图板 

mstsc----------远程桌面连接 

mplayer2-------媒体播放机 

magnify--------放大镜实用程序 

mmc------------打开控制台 

mobsync--------同步命令 

dxdiag---------检查DirectX信息 

drwtsn32------ 系统医生 

devmgmt.msc--- 设备管理器 

dfrg.msc-------磁盘碎片整理程序 

diskmgmt.msc---磁盘管理实用程序 

dcomcnfg-------打开系统组件服务 

ddeshare-------打开DDE共享设置 

dvdplay--------DVD播放器 

net stop messenger-----停止信使服务 

net start messenger----开始信使服务 

notepad--------打开记事本 

nslookup-------网络管理的工具向导 

ntbackup-------系统备份和还原 

narrator-------屏幕"讲述人" 

ntmsmgr.msc----移动存储管理器 

ntmsoprq.msc---移动存储管理员操作请求 

netstat -an----(TC)命令检查接口 

syncapp--------创建一个公文包 

sysedit--------系统配置编辑器 

sigverif-------文件签名验证程序 

sndrec32-------录音机 

shrpubw--------创建共享文件夹 

secpol.msc-----本地安全策略 

syskey---------系统加密,一旦加密就不能解开,保护windows xp系统的双重密码 

services.msc---本地服务设置 

Sndvol32-------音量控制程序 

sfc.exe--------系统文件检查器 

sfc /scannow---windows文件保护 

tsshutdn-------60秒倒计时关机命令 

tourstart------xp简介(安装完成后出现的漫游xp程序) 

taskmgr--------任务管理器 

eventvwr-------事件查看器 

eudcedit-------造字程序 

explorer-------打开资源管理器 

packager-------对象包装程序 

perfmon.msc----计算机性能监测程序 

progman--------程序管理器 

regedit.exe----注册表 

rsop.msc-------组策略结果集 

regedt32-------注册表编辑器 

rononce -p ----15秒关机 

regsvr32 /u *.dll----停止dll文件运行 

regsvr32 /u zipfldr.dll------取消ZIP支持 

cmd.exe--------CMD命令提示符 

chkdsk.exe-----Chkdsk磁盘检查 

certmgr.msc----证书管理实用程序 

calc-----------启动计算器 

charmap--------启动字符映射表 

cliconfg-------SQL SERVER 客户端网络实用程序 

Clipbrd--------剪贴板查看器 

conf-----------启动netmeeting 

compmgmt.msc---计算机管理 

cleanmgr-------垃圾整理 

ciadv.msc------索引服务程序 

osk------------打开屏幕键盘 

odbcad32-------ODBC数据源管理器 

oobe/msoobe /a----检查XP是否激活 

lusrmgr.msc----本机用户和组 

logoff---------注销命令 

iexpress-------木马捆绑工具,系统自带 

Nslookup-------IP地址侦测器 

fsmgmt.msc-----共享文件夹管理器 

utilman--------辅助工具管理器 

gpedit.msc-----组策略


转自 http://blog.csdn.net/ccsbb/archive/2010/01/27/5261954.aspx

posted @ 2010-02-01 11:35 王生生 阅读(414) | 评论 (0)编辑 收藏

mysql> UPDATE EACONTACTGROUPS A

SET GROUPNAME=(SELECT CONCAT(B.GROUPNAME,'-',A.GROUPNAME) FROM EACONTACTGROUPS B WHERE B.CORPID=A.CORPID AND B.USERID=A.USERID AND B.GROUPID=A.PARENTGROUPID)

WHERE A.PARENTGROUPID IS NOT NULL;

ERROR 1093 (HY000): You can't specify target table 'A' for update in FROM clause

上面是目前MYSQL5.0仍然有的限制,文档中说:

  • In general, you cannot modify a table and select from the same table in a subquery. For example, this limitation applies to statements of the following forms:

    DELETE FROM t WHERE ... (SELECT ... FROM t ...);UPDATE t ... WHERE col = (SELECT ... FROM t ...);{INSERT|REPLACE} INTO t (SELECT ... FROM t ...);

    Exception: The preceding prohibition does not apply if you are using a subquery for the modified table in the

    FROM

    clause. Example:

    UPDATE t ... WHERE col = (SELECT (SELECT ... FROM t...) AS _t ...);

    Here the prohibition does not apply because a subquery in the

    FROM

    clause is materialized as a temporary table, so the relevant rows in

    t

    have already been selected by the time the update to

    t

    takes place. 依据文档,改成下面的样子就行了:

    mysql> UPDATE EACONTACTGROUPS A

  • SET GROUPNAME=(SELECT CONCAT(B.GROUPNAME,'-',A.GROUPNAME) FROM ( SELECT GROUPNAME,CORPID,USERID,GROUPID,PARENTGROUPID FROM EACONTACTGROUPS) B

    WHERE B.CORPID=A.CORPID AND B.USERID=A.USERID AND B.GROUPID=A.PARENTGROUPID)

    WHERE A.PARENTGROUPID IS NOT NULL;

    Query OK, 16 rows affected (0.01 sec)

    Rows matched: 16 Changed: 16 Warnings: 0

    注:今天写一个删除语句时找到的一点资料.解决了一个简单的删除语句.呵呵,以后注意了,

    原句:delete  from menu_item  where parent_id =(select menu_item_id from menu_item where menu_data like '%manageVendors%');

    修改后:delete  from menu_item  where parent_id =(select temp.menu_item_id from (select m.menu_item_id,m.menu_data from menu_item m) temp where temp.menu_data like '%manageVendors%');

    posted @ 2010-01-28 12:56 王生生 阅读(3840) | 评论 (0)编辑 收藏

    bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, bool secure]]]]] )

          setcookie() 定义一个和其余的 HTTP 标头一起发送的 cookie。和其它标头一样,cookie 必须在脚本的任何其它输出之前发送(这是协议限制)。这需要将本函数的调用放到任何输出之前,包括 <html> 和 <head> 标签以及任何空格。如果在调用 setcookie() 之前有任何输出,本函数将失败并返回 FALSE。如果 setcookie() 函数成功运行,将返回 TRUE。这并不说明用户是否接受了 cookie。

         注: 自 PHP 4 起,可以用输出缓存来在调用本函数前输出内容,代价是把所有向浏览器的输出都缓存在服务器,直到下命令发送它们。可以在代码中使用 ob_start() 及 ob_end_flush() 来实现这样的功能,或者通过修改 php.ini 中的 output_buffering 配置选项来实现,也可以通过修改服务器配置文件来实现。

          除了 name 外,其它所有参数都是可选的。可以用空字符串("")替换某参数以跳过该参数。因为参数 expire 是整型,不能用空字符串掉过,可以用零(0)来代替 。下面的说明对 setcookie() 的每一个参数都进行了解释。可以对照 Netscape cookie 规范以了解 setcookie() 的每一个参数的细节以及通过阅读 RFC 2965 了解 HTTP cookie 的工作方式。

    1. setcookie() 参数详解
    参数 说明 举例
    name Cookie 的名字:   使用 $_COOKIE['cookiename'] 调用名为 cookiename 的 cookie。
    value Cookie 的值:此值保存在客户端,不要用来保存敏感数据。   假定 name 是 'cookiename',可以通过 $_COOKIE['cookiename'] 取得其值。
    expire Cookie 过期的时间:这是个 Unix 时间戳,即从 Unix 纪元开始的秒数。换而言之,通常用 time() 函数再加上秒数来设定 cookie 的失效期。或者用 mktime()来实现。   time()+60*60*24*30 将设定 cookie 30 天后失效。如果未设定,cookie 将会在会话结束后(一般是浏览器关闭)失效。
    path Cookie 在服务器端的有效路径:   如果该参数设为 '/' 的话,cookie 就在整个 domain 内有效,如果设为 '/foo/',cookie 就只在 domain 下的 /foo/ 目录及其子目录内有效,例如 /foo/bar/。默认值为设定 cookie 的当前目录。
    domain 该 cookie 有效的域名:   要使 cookie 能在如 example.com 域名下的所有子域都有效的话,该参数应该设为 '.example.com'。虽然 . 并不必须的,但加上它会兼容更多的浏览器。如果该参数设为 www.example.com 的话,就只在 www 子域内有效。细节见 Cookie 规范中的 tail matching。
    secure 指明: cookie 是否仅通过安全的 HTTPS 连接传送。当设成 TRUE 时,cookie 仅在安全的连接中被设置。默认值为 FALSE。   0 或 1

          当 cookie 被设置后,便可以在其它页面通过 $_COOKIE 或 $HTTP_COOKIE_VARS 数组取得其值。需要注意的是,autoglobals 的 $_COOKIE 形式适用于 PHP 4.1.0 或更高版本。而 $HTTP_COOKIE_VARS 则从 PHP 3 起就可以使用。Cookie 的值也会被保存到 $_REQUEST 数组中。

         注: 如果 PHP 的选项 register_globals 被设为 on 的话,cookie 的值仍然会被斌到变量内。在下面的例子中,$TestCookie 会被注册,但是仍然推荐使用 $_COOKIE 数组。

    常见缺陷:

         *       Cookies 不会在设置它的本页生效,要测试一个 cookie 是否被成功的设定,可以在其到期之前通过另外一个页面来访问其值。过期时间是通过参数 expire 来设置的。可以简单地使用 print_r($_COOKIE); 来调试现有的 cookies。

         *       Cookie 必须用和设定时的同样的参数才能删除。如果其值一个空字符串,或者是 FALSE,并且其它的参数都和前一次调用 setcookie 时相同,那么所指定名称的 cookie 将会在远程客户端被删除。

         *       由于把 cookie 的值设为 FALSE 会使客户端尝试删除这个 cookie,所以要在 cookie 上保存 TRUE 或 FALSE 时不应该直接使用 boolean 值,而应该用 0 来表示 FALSE,用 1 来表示 TRUE

         *       可以把 cookie 的名称设置成一个数组,但是数组 cookie 中的每个元素的值将会被单独保存在用户的系统中。考虑使用 explode() 函数用多个名称和值设定一个 cookie。不推荐将 serialize() 用于此目的,因为它可能会导致一个安全漏洞。

            在 PHP 3 中,在同一个 PHP 脚本中多次使用 setcookie() 来设置 cookie,将会按照倒序的方式来分别执行,如果想要在插入另外一个 cookie 之前删除一个 cookie,要把插入放到删除之前。自 PHP 4 起,多次调用 setcookie() 则是按照顺序来执行的。

    下面一些例子说明了如何发送 cookie:

    例子 1. setcookie() 发送例子
    $value = 'something from somewhere';

    setcookie("TestCookie", $value);
    setcookie("TestCookie", $value,time()+3600);   /* expire in 1 hour */
    setcookie("TestCookie", $value,time()+3600, "/~rasmus/", ".utoronto.ca", 1);

    注意 cookie 中值的部分在发送的时候会被自动用 urlencode 编码并在接收到的时候被自动解码并把值赋给与自己同名的 cookie 变量。如果不想这样并且在使用 PHP 5 的话,可以用 setrawcookie() 来代替。下面这个简单的例子可以得到刚才所设定的 cookie 的值:

    <?php
    // 输出单独的 cookie
    echo $_COOKIE["TestCookie"];
    echo $HTTP_COOKIE_VARS["TestCookie"];

    // 另一个调试的方法就是输出所有的 cookie
    print_r($_COOKIE);
    ?>

          要删除 cookie 需要确保它的失效期是在过去,才能触发浏览器的删除机制。下面的例子说明了如何删除刚才设置的 cookie:

    例子 2. setcookie() 删除例子
    // 将过期时间设为一小时前
    setcookie("TestCookie", "", time() - 3600);
    setcookie("TestCookie", "", time() - 3600, "/~rasmus/", ".utoronto.ca", 1);

          也可以通过在 cookie 名称中使用数组符号来设定数组 cookie,可以设定多个 cookie 作为数组单元,在脚本提取 cookie 时所有的值都放在一个数组中:

    例子 3. setcookie() 中使用数组的例子
    <?php
    // 设定 cookie
    setcookie("cookie[three]", "cookiethree");
    setcookie("cookie[two]", "cookietwo");
    setcookie("cookie[one]", "cookieone");

    // 刷新页面后,显示出来
    if (isset($_COOKIE['cookie'])) {
        foreach ($_COOKIE['cookie'] as $name => $value) {
            echo "$name : $value <br />\n";
        }
    }
    ?>

    上例将输出:

    three : cookiethree
    two : cookietwo
    one : cookieone

         注: 下面的一些 RFC 也具参考价值:RFC 2109 和 RFC 2695。

         注意 expire 参数的接受的是 Unix 时间戳,而不是日期格式 Wdy, DD-Mon-YYYY HH:MM:SS GMT,这是因为 PHP 在内部进行了转换。

         expire 是与客户端的时间相比较,和服务器时间可能不同。

         注: 向 Microsoft Internet Explorer 4 Service Pack 1 不能正确处理设定了 path 的 cookie。

         Netscape Communicator 4.05 及 Microsoft Internet Explorer 3.x 不能正确处理没有设定 path 和 time 的 cookie。

    参见 header(),setrawcookie()

    posted @ 2009-12-31 16:22 王生生 阅读(651) | 评论 (0)编辑 收藏

    方法主要有三种

    转换函数、强制类型转换、利用js变量弱类型转换。

    1. 转换函数

    js提供了parseInt()和parseFloat()两个转换函数。前者把值转换成整数,后者把值转换成浮点数。只有对String类型调用这些方法,这两个函数才能正确运行;对其他类型返回的都是NaN(Not a Number)。

    在判断字符串是否是数字值前,parseInt()和parseFloat()都会仔细分析该字符串。parseInt()方法首先查看位置0处的字符, 判断它是否是个有效数字;如果不是,该方法将返回NaN,不再继续执行其他操作。但如果该字符是有效数字,该方法将查看位置1处的字符,进行同样的测试。 这一过程将持续到发现非有效数字的字符为止,此时parseInt()将把该字符之前的字符串转换成数字。

    例如,如果要把字符串 "1234blue "转换成整数,那么parseInt()将返回1234,因为当它检测到字符b时,就会停止检测过程。字符串中包含的数字字面量会被正确转换为数字,因此 字符串 "0xA "会被正确转换为数字10。不过,字符串 "22.5 "将被转换成22,因为对于整数来说,小数点是无效字符。一些示例如下:

    parseInt("1234blue");   //returns   1234
    parseInt("0xA");   //returns   10
    parseInt("22.5");   //returns   22
    parseInt("blue");   //returns   NaN

    parseInt()方法还有基模式,可以把二进制、八进制、十六进制或其他任何进制的字符串转换成整数。基是由parseInt()方法的第二个参数指定的,所以要解析十六进制的值,需如下调用parseInt()方法:
    parseInt("AF",   16);   //returns   175
    当然,对二进制、八进制,甚至十进制(默认模式),都可以这样调用parseInt()方法:
    parseInt("10",   2);   //returns   2
    parseInt("10",   8);   //returns   8
    parseInt("10",   10);   //returns   10
    如果十进制数包含前导0,那么最好采用基数10,这样才不会意外地得到八进制的值。例如:
    parseInt("010");   //returns   8
    parseInt("010",   8);   //returns   8
    parseInt("010",   10);   //returns   10
    在这段代码中,两行代码都把字符串 "010 "解析成了一个数字。第一行代码把这个字符串看作八进制的值,解析它的方式与第二行代码(声明基数为8)相同。最后一行代码声明基数为10,所以iNum3最后等于10。

    parseFloat()方法与parseInt()方法的处理方式相似,从位置0开始查看每个字符,直到找到第一个非有效的字符为止,然后把该字符之前 的字符串转换成数字。不过,对于这个方法来说,第一个出现的小数点是有效字符。如果有两个小数点,第二个小数点将被看作无效的,parseFloat() 方法会把这个小数点之前的字符串转换成数字。这意味着字符串 "22.34.5 "将被解析成22.34。
    使用parseFloat()方法的另一不同之处在于,字符串必须以十进制形式表示浮点数,而不能用八进制形式或十六进制形式。该
    方法会忽略前导0,所以八进制数0908将被解析为908。对于十六进制数0xA,该方法将返回NaN,因为在浮点数中,x不是有效字符。此外,parseFloat()也没有基模式。

    下面是使用parseFloat()方法的示例:
    parseFloat("1234blue");   //returns   1234.0
    parseFloat("0xA");   //returns   NaN
    parseFloat("22.5");   //returns   22.5
    parseFloat("22.34.5");   //returns   22.34
    parseFloat("0908");   //returns   908
    parseFloat("blue");   //returns   NaN

    2. 强制类型转换

    还可使用强制类型转换(type casting)处理转换值的类型。使用强制类型转换可以访问特定的值,即使它是另一种类型的。
    ECMAScript中可用的3种强制类型转换如下:
    Boolean(value)——把给定的值转换成Boolean型;
    Number(value)——把给定的值转换成数字(可以是整数或浮点数);
    String(value)——把给定的值转换成字符串。
    用这三个函数之一转换值,将创建一个新值,存放由原始值直接转换成的值。这会造成意想不到的后果。
    当要转换的值是至少有一个字符的字符串、非0数字或对象(下一节将讨论这一点)时,Boolean()函数将返回true。如果该值是空字符串、数字0、#ff0000或null,它将返回false。

    可以用下面的代码段测试Boolean型的强制类型转换。

    Boolean("");   //false   –   empty   string
    Boolean("hi");   //true   –   non-empty   string
    Boolean(100);   //true   –   non-zero   number
    Boolean(null);   //false   -   null
    Boolean(0);   //false   -   zero
    Boolean(new   Object());   //true   –   object

    Number()的强制类型转换与parseInt()和parseFloat()方法的处理方式相似,只是它转换的是整个值,而不是部分值。还记得 吗,parseInt()和parseFloat()方法只转换第一个无效字符之前的字符串,因此 "4.5.6 "将被转换为 "4.5 "。用Number()进行强制类型转换, "4.5.6 "将返回NaN,因为整个字符串值不能转换成数字。如果字符串值能被完整地转换,Number()将判断是调用parseInt()方法还是调用 parseFloat()方法。下表说明了对不同的值调用Number()方法会发生的情况:

    用  法  结  果
    Number(false)  0
    Number(true)  1
    Number(undefined) NaN
    Number(null)  0
    Number( "5.5 ")  5.5
    Number( "56 ")  56
    Number( "5.6.7 ") NaN
    Number(new   Object())  NaN
    Number(100)  100 

    最后一种强制类型转换方法String()是最简单的,因为它可把任何值转换成字符串。要执行这种强制类型转换,只需要调用作为参数传递进来的值的 toString()方法,即把1转换成   "1 ",把true转换成 "true ",把false转换成 "false ",依此类推。强制转换成字符串和调用toString()方法的唯一不同之处在于,对null或undefined值强制类型转换可以生成字符串而不引 发错误:

    var   s1   =   String(null);   //"null"
    var   oNull   =   null;
    var   s2   =   oNull.toString();   //won’t   work,   causes   an   error

    3. 利用js变量弱类型转换

    举个小例子,一看,就会明白了。
    <script>
    var   str= '012.345 ';
    var   x   =   str-0;
    x   =   x*1;
    </script>

    上例利用了js的弱类型的特点,只进行了算术运算,实现了字符串到数字的类型转换,不过这个方法还是不推荐的。

    posted @ 2009-12-21 18:20 王生生 阅读(2291) | 评论 (0)编辑 收藏

        1、你以为最酸的感觉是吃醋吗?不是,最酸的感觉是没权吃醋。
    2、低头要有勇气,抬头要有底气。
    3、上天决定了谁是你的亲戚,幸运的是在选择朋友方面它给你留了余地。
    4、人生就像一杯茶,不会苦一辈子,但总会苦一阵子。
    5、不要见一个爱一个,爱的太多,你的爱就要贬值。
    6、当我们搬开别人架下的绊脚石时,也许恰恰是在为自己铺路。  7、不是每句 “ 对不起 ” ,都能换来 “ 没关系 ” 。
    8、世界上只有想不通的人,没有走不通的路。
    9、地球是运动的,一个人不会永远处在倒霉的位置。
    10、在事实面前,我们的想象力越发达,后果就越不堪设想。
    11、当别人开始说你是疯子的时候,你离成功就不远了 ……
    12、理想和现实总是有差距的,幸好还有差距,不然,谁还稀罕理想?  
    13、说有上辈子的人是在骗自己;说有下辈子的人是在骗别人。
    14、任何人都可以变得狠毒,只要你尝试过嫉妒。
    15、常常告诫自己不要在一棵树上吊死,结果 …… 在树林里迷路了。
    16、爱情就像攥在手里的沙子,攥的越紧,流失的越快。
    17、人生有两大悲剧:一个是得不到想要的东西,另一个是得到了不想要的东西。
    18、成熟不是心变老,而是眼泪在眼里打转却还保持微笑。  
    19、问候不一定要郑重其事,但一定要真诚感人。
    20、同样的一瓶饮料,便利店里 2 块钱,五星饭店里 60 块,很多的时候,一个人的价值取决于所在的位置。
    21、真坏人并不可怕,可怕的是假好人。
    22、把不忙不闲的工作做的出色,把不咸不淡的生活过得精彩。
    23、忙碌是一种幸福,让我们没时间体会痛苦;奔波是一种快乐,让我们真实地感受生活;疲惫是一种享受,让我们无暇空虚。
    24、就算不快乐也不要皱眉,因为你永远不知道谁会爱上你的笑容。  
    25、当大部分人都在关注你飞的高不高时,只有少部分人关心你飞的累不累,这就是友情。
    26、天使之所以会飞,是因为她们把自己看得很轻 ……
    27、试金可以用火,试女人可以用金,试男人可以用女人。
    28、喜欢一个人,就是在一起很开心;爱一个人,就是即使不开心,也想在一起。
    29、幽默就是一个人想哭的时候还有笑话的兴致。
    30、人之所以活得累,是因为放不下架子,撕不开面子,解不开情节。  
    31、漂亮只能为别人提供眼福,却不一定换到幸福。
    32、美丽让男人停下,智慧让男人留下。
    33、如果你为自己定的所有目标都已达到,那么说明你定的目标还不够远大。
    34、生活可以将就,生活也可以讲究。
    35、女人的眼泪是没用的液体,但你让女人流泪说明你很没用。
    36、付出真心,才会得到真心,却可能伤的彻底;保持距离,才能保护自己,却注定永远寂寞。
    37、说真话的最大好处就是你不必记得你都说些什么。
    38、有时候,不是对方不在乎你,而是你把对方看的太重。
    posted @ 2009-12-03 21:24 王生生 阅读(379) | 评论 (0)编辑 收藏

         摘要: Normal 0 7.8 pt 0 2 false false false MicrosoftInternetExplorer4 /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal";...  阅读全文
    posted @ 2009-11-24 13:38 王生生 阅读(251) | 评论 (0)编辑 收藏

    急事,慢慢的说;大事,清楚的说;小事,幽默的说;没把握的事,谨慎的说; 没发生的事,不要胡说; 做不到的事,别乱说; 伤害人的事,不能说; 讨厌的事,对事不对人的说; 开心的事,看场合说; 伤心的事,不要见人就说; 别人的事,小心的说; 自己的事,听听自己的心怎么说; 现在的事,做了再说。
    posted @ 2009-11-22 18:39 王生生 阅读(201) | 评论 (0)编辑 收藏

    1 echo 和 @
    回显命令
    @                        #关闭单行回显
    echo off                 #从下一行开始关闭回显
    @echo off                #从本行开始关闭回显。一般批处理第一行都是这个
    echo on                  #从下一行开始打开回显
    echo                     #显示当前是 echo off 状态还是 echo on 状态
    echo.                    #输出一个”回车换行”,空白行
                                #(同echo, echo; echo+ echo[ echo] echo/ echo)


    2 errorlevel
    echo %errorlevel%
    每个命令运行结束,可以用这个命令行格式查看返回码
    默认值为0,一般命令执行出错会设 errorlevel 为1


    3 dir
    显示文件夹内容
    dir                     #显示当前目录中的文件和子目录
    dir /a                  #显示当前目录中的文件和子目录,包括隐藏文件和系统文件
    dir c: /a:d             #显示 C 盘当前目录中的目录
    dir c: /a:-d            #显示 C 盘根目录中的文件
    dir c: /b/p            #/b只显示文件名,/p分页显示
    dir *.exe /s            #显示当前目录和子目录里所有的.exe文件


    4 cd
    切换目录
    cd                     #进入根目录
    cd                      #显示当前目录
    cd /d d:sdk            #可以同时更改盘符和目录


    5 md
    创建目录
    md d:abc             #如果 d:a 不存在,将会自动创建中级目录
    #如果命令扩展名被停用,则需要键入 mkdir abc。

    6 rd
    删除目录
    rd abc                  #删除当前目录里的 abc 子目录,要求为空目录
    rd /s/q d:temp         #删除 d:temp 文件夹及其子文件夹和文件,/q安静模式


    7 del
    删除文件
    del d:test.txt         #删除指定文件,不能是隐藏、系统、只读文件
    del /q/a/f d:temp*.*
    删除 d:temp 文件夹里面的所有文件,包括隐藏、只读、系统文件,不包括子目录
    del /q/a/f/s d:temp*.*
    删除 d:temp 及子文件夹里面的所有文件,包括隐藏、只读、系统文件,不包括子目录


    8 ren
    重命名命令
    ren d:temp tmp         #支持对文件夹的重命名

    9 cls
    清屏

    10 type
    显示文件内容
    type c:boot.ini        #显示指定文件的内容,程序文件一般会显示乱码
    type *.txt              #显示当前目录里所有.txt文件的内容


    11 copy
    拷贝文件
    copy c:test.txt d:test.bak
    复制 c:test.txt 文件到 d: ,并重命名为 test.bak
    copy con test.txt
    从屏幕上等待输入,按 Ctrl+Z 结束输入,输入内容存为test.txt文件
    con代表屏幕,prn代表打印机,nul代表空设备
    copy 1.txt + 2.txt 3.txt
    合并 1.txt 和 2.txt 的内容,保存为 3.txt 文件
    如果不指定 3.txt ,则保存到 1.txt
    copy test.txt +
    复制文件到自己,实际上是修改了文件日期


    12 title
    设置cmd窗口的标题
    title 新标题            #可以看到cmd窗口的标题栏变了


    13 ver
    显示系统版本

    14 label 和 vol
    设置卷标
    vol                     #显示卷标
    label                   #显示卷标,同时提示输入新卷标
    label c:system          #设置C盘的卷标为 system

    15 pause
    暂停命令

    16 rem 和 ::
    注释命令
    注释行不执行操作

    17 date 和 time
    日期和时间
    date              #显示当前日期,并提示输入新日期,按"回车"略过输入
    date/t            #只显示当前日期,不提示输入新日期
    time              #显示当前时间,并提示输入新时间,按"回车"略过输入
    time/t            #只显示当前时间,不提示输入新时间


    18 goto 和 :
    跳转命令
    :label            #行首为:表示该行是标签行,标签行不执行操作
    goto label        #跳转到指定的标签那一行


    19 find (外部命令)
    查找命令
    find "abc" c:test.txt
    在 c:test.txt 文件里查找含 abc 字符串的行
    如果找不到,将设 errorlevel 返回码为1
    find /i “abc” c:test.txt
    查找含 abc 的行,忽略大小写
    find /c "abc" c:test.txt
    显示含 abc 的行的行数


    20 more (外部命令)
    逐屏显示
    more c:test.txt        #逐屏显示 c:test.txt 的文件内容


    21 tree
    显示目录结构
    tree d:                #显示D盘的文件目录结构


    22 &
    顺序执行多条命令,而不管命令是否执行成功

    23 && 和 ||
    &&顺序执行多条命令,当碰到执行出错的命令后将不执行后面的命令
    | | 顺序执行多条命令,当碰到执行正确的命令后将不执行后面的命令

    find "ok" c:test.txt && echo 成功
    如果找到了"ok"字样,就显示"成功",找不到就不显示

    find "ok" c:test.txt || echo 不成功
    如果找不到"ok"字样,就显示"不成功",找到了就不显示

    24 |
    管道命令
    dir *.* /s/a | find /c ".exe"
    管道命令表示先执行 dir 命令,对其输出的结果执行后面的 find 命令
    该命令行结果:输出当前文件夹及所有子文件夹里的.exe文件的个数
    type c:test.txt|more
    这个和 more c:test.txt 的效果是一样的


    25 > 和 >> 和 ^
    输出重定向命令
    > 清除文件中原有的内容后再写入
    >> 追加内容到文件末尾,而不会清除原有的内容
    主要将本来显示在屏幕上的内容输出到指定文件中
    指定文件如果不存在,则自动生成该文件
    type c:test.txt >prn
    屏幕上不显示文件内容,转向输出到打印机
    echo hello world>con
    在屏幕上显示hello world,实际上所有输出都是默认 >con 的
    copy c:test.txt f: >nul
    拷贝文件,并且不显示"文件复制成功"的提示信息,但如果f盘不存在,还是会显示出错信息
    copy c:test.txt f: >nul 2>nul
    不显示”文件复制成功”的提示信息,并且f盘不存在的话,也不显示错误提示信息
    ^的作用是把命令符号转意成文本符号,它也可以转意自己,如:
    echo ^^W ^> ^W>c:test.txt
    生成的文件内容为 ^W > W
    ^ 和 > 是控制命令,要把它们输出到文件,必须在前面加个 ^ 符号
    set /p=^|
    |是管道命令,要显示|,就要加^

    26 '' 和 ""
    单引号的作用是,将多个命令组成的复合语句当成一条语句
    双引号的表示其内部内容为文本符号,它也可以连接两个或多个以空格间隔的文本符号
    for /f "tokens=15" %%i in ('ipconfig ^| find /i "ip address"') do set ip=%%i
    ipconfig为语句一,find /i "ip address"为语句二,用单引号合为一条语句

    IF /I "%c%"=="1" ECHO %c%
    set p="I Love You!!"
    find if set

    27 <
    从文件中获得输入信息,而不是从屏幕上
    一般用于 date time label 等需要等待输入的命令
    @echo off
    echo 2005-05-01>temp.txt
    date <temp.txt
    del temp.txt
    这样就可以不等待输入直接修改当前日期

    28 %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %*
    命令行传递给批处理的参数
    %0 批处理文件本身
    %1 第一个参数
    %9 第九个参数
    %* 从第一个参数开始的所有参数

    批参数(%n)的替代已被增强。您可以使用以下语法:

            %~1             - 删除引号("),扩充 %1
            %~f1            - 将 %1 扩充到一个完全合格的路径名
            %~d1            - 仅将 %1 扩充到一个驱动器号
            %~p1            - 仅将 %1 扩充到一个路径
            %~n1            - 仅将 %1 扩充到一个文件名
            %~x1            - 仅将 %1 扩充到一个文件扩展名
            %~s1            - 扩充的路径指含有短名
            %~a1            - 将 %1 扩充到文件属性
            %~t1            - 将 %1 扩充到文件的日期/时间
            %~z1            - 将 %1 扩充到文件的大小
            %~$PATH : 1 - 查找列在 PATH 环境变量的目录,并将 %1
                          扩充到找到的第一个完全合格的名称。如果环境
                          变量名未被定义,或者没有找到文件,此组合键会
                          扩充到空字符串

    可以组合修定符来取得多重结果:

           %~dp1           - 只将 %1 扩展到驱动器号和路径
           %~nx1           - 只将 %1 扩展到文件名和扩展名
           %~dp$PATH:1 - 在列在 PATH 环境变量中的目录里查找 %1,
                          并扩展到找到的第一个文件的驱动器号和路径。
           %~ftza1         - 将 %1 扩展到类似 DIR 的输出行。
    可以参照 call/? 或 for/? 看出每个参数的含意
    echo load "%%1" "%%2">c:test.txt
    生成的文件内容为 load "%1" "%2"
    批处理文件里,用这个格式把命令行参数输出到文件

    29 if
    判断命令
    if "%1"=="/a" echo 第一个参数是/a
    if /i "%1" equ "/a" echo 第一个参数是/a
    /i 表示不区分大小写,equ 和 == 是一样的,其它运算符参见:
        EQU - 等于
        NEQ - 不等于
        LSS - 小于
        LEQ - 小于或等于
        GTR - 大于
        GEQ - 大于或等于
    if exist c:test.bat echo 存在c:test.bat文件
    if not exist c:windows (
            echo 不存在c:windows文件夹
            )
    if exist c:test.bat (
            echo 存在c:test.bat
            ) else (
            echo 不存在c:test.bat
            )

    30 setlocal 和 endlocal
    设置”命令扩展名”和”延缓环境变量扩充”
    SETLOCAL ENABLEEXTENSIONS                #启用"命令扩展名"
    SETLOCAL DISABLEEXTENSIONS               #停用"命令扩展名"
    SETLOCAL ENABLEDELAYEDEXPANSION          #启用"延缓环境变量扩充"
    SETLOCAL DISABLEDELAYEDEXPANSION         #停用"延缓环境变量扩充"
    ENDLOCAL                                 #恢复到使用SETLOCAL语句以前的状态
    “命令扩展名”默认为启用
    “延缓环境变量扩充”默认为停用
    批处理结束系统会自动恢复默认值
    可以修改注册表以禁用"命令扩展名",详见 cmd /? 。所以用到"命令扩展名"的程
    序,建议在开头和结尾加上 SETLOCAL ENABLEEXTENSIONS 和 ENDLOCAL 语句,以确
    保程序能在其它系统上正确运行
    "延缓环境变量扩充"主要用于 if 和 for 的符合语句,在 set 的说明里有其实用例程

    31 set
    设置变量
    引用变量可在变量名前后加 % ,即 %变量名%
    set                        #显示目前所有可用的变量,包括系统变量和自定义的变量
    echo %SystemDrive%         #显示系统盘盘符。系统变量可以直接引用
    set p                      #显示所有以p开头的变量,要是一个也没有就设errorlevel=1
    set p=aa1bb1aa2bb2         #设置变量p,并赋值为 = 后面的字符串,即aa1bb1aa2bb2
    echo %p%                   #显示变量p代表的字符串,即aa1bb1aa2bb2
    echo %p:~6%                #显示变量p中第6个字符以后的所有字符,即aa2bb2
    echo %p:~6,3%              #显示第6个字符以后的3个字符,即aa2
    echo %p:~0,3%              #显示前3个字符,即aa1
    echo %p:~-2%               #显示最后面的2个字符,即b2
    echo %p:~0,-2%             #显示除了最后2个字符以外的其它字符,即aa1bb1aa2b
    echo %p:aa=c%              #用c替换变量p中所有的aa,即显示c1bb1c2bb2
    echo %p:aa=%               #将变量p中的所有aa字符串置换为空,即显示1bb12bb2
    echo %p:*bb=c%             #第一个bb及其之前的所有字符被替换为c,即显示c1aa2bb2
    set p=%p:*bb=c%            #设置变量p,赋值为 %p:*bb=c% ,即c1aa2bb2
    set /a p=39                #设置p为数值型变量,值为39
    set /a p=39/10             #支持运算符,有小数时用去尾法,39/10=3.9,去尾得3,p=3
    set /a p=p/10              #用 /a 参数时,在 = 后面的变量可以不加%直接引用
    set /a p=”1&0″             #”与”运算,要加引号。其它支持的运算符参见set/?
    set p=                     #取消p变量
    set /p p=请输入
    屏幕上显示”请输入”,并会将输入的字符串赋值给变量p
    注意这条可以用来取代 choice 命令
    注意变量在 if 和 for 的复合语句里是一次性全部替换的,如
    @echo off
    set p=aaa
    if %p%==aaa (
            echo %p%
            set p=bbb
            echo %p%
            )
    结果将显示
    aaa
    aaa
    因为在读取 if 语句时已经将所有 %p% 替换为aaa
    这里的"替换",在 /? 帮助里就是指"扩充"、"环境变量扩充"
    可以启用”延缓环境变量扩充”,用 ! 来引用变量,即 !变量名!
    @echo off
    SETLOCAL ENABLEDELAYEDEXPANSION
    set p=aaa
    if %p%==aaa (
            echo %p%
            set p=bbb
            echo !p!
            )
    ENDLOCAL
    结果将显示
    aaa
    bbb
    还有几个动态变量,运行 set 看不到
    %CD%                      #代表当前目录的字符串
    %DATE%                    #当前日期
    %TIME%                    #当前时间
    %RANDOM%                  #随机整数,介于0~32767
    %ERRORLEVEL%              #当前 ERRORLEVEL 值
    %CMDEXTVERSION%           #当前命令处理器扩展名版本号
    %CMDCMDLINE%              #调用命令处理器的原始命令行
    可以用echo命令查看每个变量值,如 echo %time%
    注意 %time% 精确到毫秒,在批处理需要延时处理时可以用到

    32 start
    批处理中调用外部程序的命令,否则等外部程序完成后才继续执行剩下的指令

    33 call
    批处理中调用另外一个批处理的命令,否则剩下的批处理指令将不会被执行
    有时有的应用程序用start调用出错的,也可以call调用

    34 choice (外部命令)
    选择命令
    让用户输入一个字符,从而选择运行不同的命令,返回码errorlevel为1234……
    win98里是choice.com
    win2000pro里没有,可以从win98里拷过来
    win2003里是choice.exe
    choice /N /C y /T 5 /D y>nul
    延时5秒


    35 assoc 和 ftype
    文件关联
    assoc 设置'文件扩展名'关联,关联到'文件类型'
    ftype 设置'文件类型'关联,关联到'执行程序和参数'
    当你双击一个.txt文件时,windows并不是根据.txt直接判断用 notepad.exe 打开
    而是先判断.txt属于 txtfile '文件类型'
    再调用 txtfile 关联的命令行 txtfile=%SystemRoot%system32NOTEPAD.EXE %1
    可以在"文件夹选项"→"文件类型"里修改这2种关联
    assoc               #显示所有'文件扩展名'关联
    assoc .txt          #显示.txt代表的'文件类型',结果显示 .txt=txtfile
    assoc .doc          #显示.doc代表的'文件类型',结果显示 .doc=Word.Document.8
    assoc .exe          #显示.exe代表的'文件类型',结果显示 .exe=exefile
    ftype               #显示所有'文件类型'关联
    ftype exefile       #显示exefile类型关联的命令行,结果显示 exefile="%1" %*
    assoc .txt=Word.Document.8
    设置.txt为word类型的文档,可以看到.txt文件的图标都变了
    assoc .txt=txtfile
    恢复.txt的正确关联
    ftype exefile="%1" %*
    恢复 exefile 的正确关联
    如果该关联已经被破坏,可以运行 command.com ,再输入这条命令

    36 pushd 和 popd
    切换当前目录
    @echo off
    c: & cd & md mp3           #在 C: 建立 mp3 文件夹
    md d:mp4                   #在 D: 建立 mp4 文件夹
    cd /d d:mp4                #更改当前目录为 d:mp4
    pushd c:mp3                #保存当前目录,并切换当前目录为 c:mp3
    popd                        #恢复当前目录为刚才保存的 d:mp4

    37 for
    循环命令
    这个比较复杂,请对照 for/? 来看
    for %%i in (c: d: e: f:) do echo %%i
    依次调用小括号里的每个字符串,执行 do 后面的命令
    注意%%i,在批处理中 for 语句调用参数用2个%
    默认的字符串分隔符是"空格键","Tab键","回车键"
    for %%i in (*.txt) do find "abc" %%i
    对当前目录里所有的txt文件执行 find 命令
    for /r . %%i in (*.txt) do find "abc" %%i
    在当前目录和子目录里所有的.txt文件中搜索包含 abc 字符串的行
    for /r . %%i in (.) do echo %%~pni
    显示当前目录名和所有子目录名,包括路径,不包括盘符
    for /r d:mp3 %%i in (*.mp3) do echo %%i>>d:mp3.txt
    把 d:mp3 及其子目录里的mp3文件的文件名都存到 d:mp3.txt 里去
    for /l %%i in (2,1,8) do echo %%i
    生成2345678的一串数字,2是数字序列的开头,8是结尾,1表示每次加1
    for /f %%i in ('set') do echo %%i
    对 set 命令的输出结果循环调用,每行一个
    for /f "eol=P" %%i in ('set') do echo %%i
    取 set 命令的输出结果,忽略以 P 开头的那几行
    for /f %%i in (d:mp3.txt) do echo %%i
    显示 d:mp3.txt 里的每个文件名,每行一个,不支持带空格的名称
    for /f "delims=" %%i in (d:mp3.txt) do echo %%i
    显示 d:mp3.txt 里的每个文件名,每行一个,支持带空格的名称
    for /f "skip=5 tokens=4" %%a in ('dir') do echo %%a
    对 dir 命令的结果,跳过前面5行,余下的每行取第4列
    每列之间的分隔符为默认的"空格"
    可以注意到 dir 命令输出的前5行是没有文件名的
    for /f "tokens=1,2,3 delims=- " %%a in ('date /t') do (
            echo %%a
            echo %%b
            echo %%c
            )
    对 date /t 的输出结果,每行取1、2、3列
    第一列对应指定的 %%a ,后面的 %%b 和 %%c 是派生出来的,对应其它列
    分隔符指定为 - 和"空格",注意 delims=- 后面有个"空格"
    其中 tokens=1,2,3 若用 tokens=1-3 替换,效果是一样的
    for /f "tokens=2* delims=- " %%a in ('date /t') do echo %%b
    取第2列给 %%a ,其后的列都给 %%b


    38 subst (外部命令)
    映射磁盘。
    subst z: serverd         #这样输入z:就可以访问serverd了
    subst z: /d                 #取消该映射
    subst                       #显示目前所有的映时

    39      xcopy (外部命令)
    文件拷贝
    xcopy d:mp3 e:mp3 /s/e/i/y
    复制 d:mp3 文件夹、所有子文件夹和文件到 e: ,覆盖已有文件
    加 /i 表示如果 e: 没有 mp3 文件夹就自动新建一个,否则会有询问


    转自http://blog.csdn.net/mydriverc/archive/2008/01/16/2047152.aspx

     

    posted @ 2009-11-19 09:02 王生生 阅读(387) | 评论 (0)编辑 收藏

    人生成功第1课

    做一个终生学习的人

    离开学校并不意味着学习就结束了。

    学习可以成为一种生活方式,帮助你发挥最大的潜能。

    我们从未停止学习,总会有新的,有趣的东西等待我们去发现。

    学习新的技能可能让人感到有一点恐惧,但每当我们在个人学习上停滞不前时,我们都需要去学习新的东西。

    积极地寻求支援和建议,突破停滞期。

    参加一些培训,进修,夜校-任何新的兴趣都将会有助于发展你的优势。

    多看,多听,让你的头脑保持活跃。活到老,学到老。

    人生成功第2课

    令自己感到沮丧的秘诀就是用空闲时间去烦恼自己是否快乐。所以不要费事去想它!摩拳擦掌干起来吧。你将热血沸腾,你会头脑清醒。很快,在你身体中的这种高涨的积极人生观将把烦恼从你的头脑中赶出去。

    行动起来,忙碌起来。这是世界上最便宜的一种药,也是最好的一种。

    人生成功第3课

    在困境中寻找成功的希望 

    逆境是一所最好的学校。每一次失败,每一次打击,每一次损失,都蕴育着成功的萌芽,都教会我在下一次有更出色的表现。我再也不会逃避现实,也不会拒绝从以往的错误中获取经验,我不再因此而促成自己的失败。因为我知道,宝玉不经磨砺就不能发光,没有,我也不能完善自我。

    现在我知道,灵魂倍受煎熬的时刻,也正是生命中最多选择与机会的时刻。任何事情的成败取决于我在寻求帮助时是抬起头还是低下头。无论何时,当我被可怕的 失败击倒,在最初的阵痛过去之后,我都要想方设法将苦难变成好事。伟大的机遇就在这一刻闪现-这苦涩的根必将迎来满园芬芳!

    我将一直在困境中寻找成功的希望。 

    人生成功第4课

    没有人可以使你感到自卑

    我选择自我感觉良好,这样我能更加开放地学习。如果人们给我负面的回应或是批评我做的事情,我不会认为他们所说的就表明我是一个“差劲的”人。我坚信自尊由我掌控,这让我毫无戒心地去听取别人的反馈,想看看是否有我可以学习的东西。

    我们每天都有两种选择。我们可以感到自己很棒,也可以感到自己很差劲。难道有人会选择后者吗?

    人生成功第5课

    紧紧抓住梦想

    我们每个人都有梦想。我们每个人都希望能发自内心地相信自已有一种特殊的天赋,相信自己能发挥重要的作用,相信自己能以一种特殊的方式感动他人,相信自己能够把世界变得更加美好。

    在一生中,我们都曾经对自己渴望并追求的生活品质抱有憧憬。然而,对我们大多数人来说,这些憧憬在日常生活的成规和挫败中已经变得如此渺茫,以到于我们 甚至不再努力去实现它们。对太多人来说,梦想已经远离,随之远离的还有塑造我们命运的意愿。很多人已经推动了坚定的信念,而正是坚定的信念为胜利者创造了 优势。

    我们所要做的就是重拴梦想,并实现梦想,让我们每个人都记住,并去运用深藏在自己身上的无限潜能。

    人生成功第6课

    毅力无法替代

    世界上没有任何东西可以替代毅力。才干不可以,无所作为的能人十分普遍;天分不可以,碌碌无为的天才尽人皆知;教育不可以,受过良好教育的没落者更是随处可见。只要有毅力和决心,就是无所不能的。

    毅力并不总是意味着永远坚持做同一件事。它意味着无论你做任何事情,你都要立刻全心投入,竭尽全力;它意味着先做艰苦的工作,再去期待随之而来的满足和 回报。它意味着开心地工作,渴望更多的知识和进步。它意味着多打几个电话,多夏装几里路,多除草,早起床,意味着总是寻求更好的方式去做你在做的事情。毅 力就是经历考验和过失的成功。

    人生成功第7课

    驻足片刻闻花香

    在现代生活的忙忙碌碌中,人们很少会停下来欣赏自然的美。

    问问自己,你有多少次倾听过鸟儿的歌唱。你最近一次抬头仰望闪耀的星空又是在什么时候?

    时光飞逝,人生苦短。不要忘记驻足闻闻花香。我们在急于谋生的过程中,往往忽视了我们生活的品质。多少次,你听见人们为这为那说“我忙死了。”多可惜啊!有一天,当他们真的找到时间能够驻足片刻闻花香时,可能已经太迟了。

    人生成功第8课

    加入到微笑者和赞美者的行列来

    当你对别人,别人也会对你报以,你自然会感觉很棒。即使他有对你报以,你也会感觉很棒,因为你认识到世界上最贫穷的人就是从不微笑的人,当你对那个人微笑,你立刻变得更加富有。

    赞美也是这个道理。当你真诚地毛病抑或恭维一个人时,他将立刻受益,更喜欢自己。当你让别人感觉更好时,你自己也会感觉更好。

    人生成功第9课

    让自己快乐

    调查表明,我们当中70%的人在生活中时间有临床性的抑郁现象。

    如今我们有这么多的机遇,为什么我们还这么不快乐呢?

    人们尝试各种东西:金钱,**,事业,婚姻,离婚,酒精,摇滚甚至毒品,但我们大多数人只是想要得到一样东西-快乐。

    快乐是人的一种自然的身心状态;我们只要去相信快乐,让自己感受快乐。

    要宣称:我应当得到快乐。说出来,唱出来,喊出来。

    优先考虑快乐,让快乐成为你最重要的事情。

    对你所拥有的一切抱以感激之情吧。

    人生成功第10课

    我拥有无与伦比的想象力   

    现在我将通过这种神奇的力量得到我想要的。如果我害怕发表演讲,我就想象自己在公众场合无所畏惧,充满信心;如果我在病魔的煎熬,我就想象我以前健康的样子;如果我感到贫穷,我就想象我将要富有。

    现在我明白了:人类惟一的限制就是想象力。我之所以没有成功,原因就在于我不知道如何使用我的想象力。现在,我精通这个技巧,我将从中受益。最大的回报将是成功和愈加快乐。(摘自网络)
    posted @ 2009-11-06 13:46 王生生 阅读(187) | 评论 (0)编辑 收藏

        命令行下具体用法如下:  mysqldump -u用戶名 -p密码 -d 數據库名 表名 脚本名;

        1、导出數據库為dbname的表结构(其中用戶名為root,密码為dbpasswd,生成的脚本名為db.sql)
        mysqldump -uroot -pdbpasswd -d dbname >db.sql;

        2、导出數據库為dbname某张表(test)结构
        mysqldump -uroot -pdbpasswd -d dbname test>db.sql;

        3、导出數據库為dbname所有表结构及表數據(不加-d)
        mysqldump -uroot -pdbpasswd  dbname >db.sql;

        4、导出數據库為dbname某张表(test)结构及表數據(不加-d)
        mysqldump -uroot -pdbpasswd dbname test>db.sql;

       

    posted @ 2009-11-06 10:14 王生生 阅读(2886) | 评论 (0)编辑 收藏

    1.$_SERVER['HTTP_ACCEPT_LANGUAGE']//浏览器语言

    显示:zh-cn

    2.$_SERVER['REMOTE_ADDR'] //当前用户 IP 。

    显示:127.0.0.1

    3.$_SERVER['REMOTE_HOST'] //当前用户主机名

    显示:

    4.$_SERVER['REQUEST_URI'] //URL

    显示:/test.php

    5.$_SERVER['REMOTE_PORT'] //端口。

    显示:3864

    6.$_SERVER['SERVER_NAME'] //服务器主机的名称。

    显示:127.0.0.1

    7.$_SERVER['PHP_SELF']//正在执行脚本的文件名

    显示:/test.php

    8.$_SERVER['argv'] //传递给该脚本的参数。

    显示:ARRAY

    9.$_SERVER['argc'] //传递给程序的命令行参数的个数。

    显示:0

    10.$_SERVER['GATEWAY_INTERFACE']//CGI 规范的版本。

    显示: CGI/1.1

    11.$_SERVER['SERVER_SOFTWARE'] //服务器标识的字串

    显示:Apache/2.0.52 (Win32) PHP/5.2.1

    12.$_SERVER['SERVER_PROTOCOL'] //请求页面时通信协议的名称和版本

    显示:HTTP/1.1

    13.$_SERVER['REQUEST_METHOD']//访问页面时的请求方法

    显示:GET

    14.$_SERVER['QUERY_STRING'] //查询(query)的字符串。

    显示:

    15.$_SERVER['DOCUMENT_ROOT'] //当前运行脚本所在的文档根目录

    显示:D:/Program Files/Apache/www

    16.$_SERVER['HTTP_ACCEPT'] //当前请求的 Accept: 头部的内容。

    显示:*/*

    17.$_SERVER['HTTP_ACCEPT_CHARSET'] //当前请求的 Accept-Charset: 头部的内容。

    显示:

    18.$_SERVER['HTTP_ACCEPT_ENCODING'] //当前请求的 Accept-Encoding: 头部的内容

    显示:gzip,deflate

    19.$_SERVER['HTTP_CONNECTION'] //当前请求的 Connection: 头部的内容。例如:“Keep-Alive”。

    显示:Keep-Alive

    20.$_SERVER['HTTP_HOST'] //当前请求的 Host: 头部的内容。

    显示:127.0.0.1:8080

    21.$_SERVER['HTTP_REFERER'] //链接到当前页面的前一页面的 URL 地址。

    显示:http://127.0.0.1:8080/

    22.$_SERVER['HTTP_USER_AGENT'] //当前请求的 User_Agent: 头部的内容。

    显示:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727)

    23.$_SERVER['HTTPS']//如果通过https访问,则被设为一个非空的值(on),否则返回off

    显示:

    24.$_SERVER['SCRIPT_FILENAME'] #当前执行脚本的绝对路径名。

    显示:D:/Program Files/Apache/www/test.php

    25.$_SERVER['SERVER_ADMIN'] #管理员信息

    显示:w@w.com

    26.$_SERVER['SERVER_PORT'] #服务器所使用的端口

    显示:8080

    27.$_SERVER['SERVER_SIGNATURE'] #包含服务器版本和虚拟主机名的字符串。

    显示:Apache/2.0.52 (Win32) PHP/5.2.1 Server at 10.145.40.150 Port 8080

    28.$_SERVER['PATH_TRANSLATED'] #当前脚本所在文件系统(不是文档根目录)的基本路径。

    显示:

    29.$_SERVER['SCRIPT_NAME'] #包含当前脚本的路径。这在页面需要指向自己时非常有用。

    显示 :/test.php

    30.$_SERVER['PHP_AUTH_USER'] #当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的用户名。

    显示:

    31.$_SERVER['PHP_AUTH_PW'] #当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的密码。

    显示:

    32.$_SERVER['AUTH_TYPE'] #当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是认证的类型

    posted @ 2009-11-05 09:31 王生生 阅读(187) | 评论 (0)编辑 收藏

    将A用户下所有的表授权给B用户;
    sqlplus A/A
    select 'grant select,insert,update,delete on A.' || table_name || ' to B;' from user_tables;
    然后选择上面出现的所有的语句,进入sysdba权限进行操作:
    sqlplus "/as sysdba"             
    然后执行上面的所有的语句就可以了;                 

    posted @ 2009-10-22 17:05 王生生 阅读(1014) | 评论 (0)编辑 收藏

    page- break-before和page-break-after CSS属性并不会修改网页在屏幕上的显示,这两个属性是用来控制文件的打印方式。每个打印属性都可以设定4种设定值:auto、always、left和 right。其中Auto是默认值,只有在有需要时,才需设定分页符号 (Page breaks)。page-break-before若设定成always,则是在遇到特定的组件时,打印机会重新开始一个新的打印页。page- break-before若设定成left,则会插入分页符号,直到指定的组件出现在一个左边的空白页上。page-break-before若设定成 right,则会插入分页符号,直到指定的组件出现在一个右边的空白页上。page-break-after属性会将分页符号加在指定组件后,而非之前。 在下列程序中您将可以看到这些属性的设定。

    <HTML>

    <HEAD>

    <TITLE>Listing 14-4</TITLE>

    </HEAD>

    <BODY>

    <DIV>This is the first DIV.</DIV>

    <DIV STYLE="page-break-before:always">This is the second DIV.</DIV>

    <DIV STYLE="page-break-after:always">This is the third DIV.</DIV>

    <DIV>This is the fourth DIV.</DIV>

    <DIV STYLE="page-break-before:right">This is the fifth DIV.</DIV>

    <DIV STYLE="page-break-after:right">This is the sixth DIV.</DIV>

    <DIV>This is the last DIV.</DIV>

    </BODY>

    </HTML>


    转自 http://www.cnblogs.com/JustinYoung/articles/710734.html
    posted @ 2009-10-22 14:00 王生生 阅读(349) | 评论 (0)编辑 收藏

        在开發中,經常遇到需要用去解析各类非结构化文本,像doc,xls,pdf,ppt,xml,html.
        本人在开發站内搜索时,需要加入对各类文件类型的支持,以方便建立索引。解析各类文档调用了几個开源的包。像dom4j-1.6.1.jar,FontBox-0.1.0-dev.jar,htmllexer.jar,htmlparser.jar,PDFBox-0.7.3.jar,poi-3.5-FINAL-20090928.jar,poi-scratchpad-3.5-FINAL-20090928.jar。这些开源的包可以讓我們很方便去解析各类非结构化文本。

    jar包的下载地址: http://www.ziddu.com/download/7017588/devlib.rar.html

    代码如下:
    package com.ducklyl;

    import java.io.File;
    import java.io.FileInputStream;
    import java.util.Iterator;
    import org.apache.poi.hslf.model.Slide;
    import org.apache.poi.hslf.model.TextRun;
    import org.apache.poi.hslf.usermodel.SlideShow;
    import org.apache.poi.hssf.usermodel.HSSFCell;
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.apache.poi.hwpf.HWPFDocument;
    import org.apache.poi.hwpf.usermodel.Paragraph;
    import org.apache.poi.hwpf.usermodel.Range;
    import org.dom4j.Document;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;
    import org.htmlparser.Parser;
    import org.htmlparser.filters.*;

    import org.htmlparser.*;
    import org.htmlparser.nodes.TextNode;
    import org.htmlparser.util.*;

    import org.pdfbox.pdfparser.PDFParser;
    import org.pdfbox.pdmodel.PDDocument;
    import org.pdfbox.util.PDFTextStripper;



    public class HandleFile {
        
    public static void main(String args[]){
            String str
    ="e:\\test.HTML";
            System.out.println(handleFile(str));
        }

        
    public static String handleFile(String filename){
            String result
    ="";
            String fileType
    =filename.substring(filename.lastIndexOf(".")+1, filename.length());
            
    if(fileType.equalsIgnoreCase("pdf"))
                result
    =handlePdf(filename);
            
    else if(fileType.equalsIgnoreCase("xls"))
                result
    =handleExcel(filename);
            
    else if(fileType.equalsIgnoreCase("doc"))
                result
    =handleDoc(filename);
            
    else if(fileType.equalsIgnoreCase("xml"))
                result
    =handleXml(filename);
            
    else if(fileType.equalsIgnoreCase("ppt"))
                result
    =handlePPT(filename);
            
    else if(fileType.equalsIgnoreCase("htm")||fileType.equalsIgnoreCase("html"))
                result
    =handleHtml(filename);
            
    return result;
        }
    /**
     * 解析HTML
     * 
    @param filename
     * 
    @return
     
    */
        
    public static String handleHtml(String filename){
            String content
    ="";
            
    try{
                File file
    =new File(filename);
                
    if(!file.exists()) return content;
                
                Parser parser
    =new Parser(filename);
                parser.setEncoding(
    "UTF-8");
                NodeFilter textFilter
    =new NodeClassFilter(TextNode.class);
                NodeList nodes
    =parser.extractAllNodesThatMatch(textFilter);
                
    for(int i=0;i<nodes.size();i++){
                    TextNode textnode
    =(TextNode)nodes.elementAt(i);
                    String line
    =textnode.toPlainTextString().trim();
                    
    if(line.equals("")) continue;
                    content
    =content+line;
                }
            }
    catch(Exception e){
                e.printStackTrace();
            }
            
    return content;
        }
        
    /**
         * 解析PPT
         * 
    @param filename
         * 
    @return
         
    */
        
    public static String handlePPT(String filename){
            StringBuffer content 
    = new StringBuffer("");
            
    try{
                File file
    =new File(filename);
                
    if(!file.exists()) {
                    
    return content.toString();
                }
                FileInputStream instream
    =new FileInputStream(file);
                SlideShow ppt 
    = new SlideShow(instream);
                Slide[] slides 
    = ppt.getSlides();
                
    for(int i=0;i<slides.length;i++){
                    TextRun[] t 
    = slides[i].getTextRuns();//为了取得幻灯片的文字内容,建立TextRun
                    for(int j=0;j<t.length;j++){
                        content.append(t[j].getText());
    //这里会将文字内容加到content中去
                    }
                    content.append(slides[i].getTitle());
                }
            }
    catch(Exception e){
                e.printStackTrace();
            }
            
    return content.toString();
        }
        
    /**
         * 解析XML
         * 
    @param filename
         * 
    @return
         
    */
        
    public static String handleXml(String filename){
            String content
    ="",value="",text="";
            
    try{
                File file
    =new File(filename);
                
    if(!file.exists()) {
                    
    return content;
                }
                  SAXReader saxReader 
    = new SAXReader();
                  Document document 
    = saxReader.read(file);
                  Element root 
    = document.getRootElement() ;
                  
                  Iterator iter
    =root.elementIterator() ;
                   
    while(iter.hasNext()){
                      Element element
    =(Element)iter.next();
                      value
    =element.getStringValue();
                      
    if(!value.trim().equals(""))    content=content+value;
                   }
            }
    catch(Exception e){
                    e.printStackTrace();
            }
            
    return content;
        }
        
    /**
         * 解析DOC
         * 
    @param filename
         * 
    @return
         
    */
        
    public static String handleDoc(String filename){
            String content
    ="";
            
    try{
                File file
    =new File(filename);
                
    if(!file.exists()) {
                    
    return content;
                }
                FileInputStream instream
    =new FileInputStream(file);
                HWPFDocument doc
    =new HWPFDocument(instream);
                Range range
    =doc.getRange();
                String text
    =range.text();
                
    for(int i=0;i<range.numParagraphs();i++){
                    Paragraph p
    =range.getParagraph(i);
                    content
    =content+p.text().trim()+"\n";
                }
            }
    catch(Exception e){
                e.printStackTrace();
            }
            
    return content;
        }
        
    /**
         * 解析PDF
         * 
    @param filename
         * 
    @return
         
    */
        
    public static String handlePdf(String filename){
            String contenttxt
    ="";
            
    try{
                File file
    =new File(filename);
                
    if(!file.exists()){
                    
    return contenttxt;
                }
                FileInputStream instream
    =new FileInputStream(file);
                PDFParser parser
    =new PDFParser(instream);
                parser.parse();
                PDDocument pdfdocument
    =parser.getPDDocument();
                PDFTextStripper pdfstripper
    =new PDFTextStripper();
                contenttxt
    =pdfstripper.getText(pdfdocument);
            }
    catch(Exception e){
                e.printStackTrace();
            }
            
    return contenttxt;
        }
        
    /**
         * 解析EXCEL
         * 
    @param filename
         * 
    @return
         
    */
        
    public static String handleExcel(String filename){
            String content
    ="";
            
    try{
                File file
    =new File(filename);
                
    if(!file.exists()) {
                    
    return content;
                }
                HSSFWorkbook workbook
    =new HSSFWorkbook(new FileInputStream(file));
                HSSFSheet sheet
    =workbook.getSheetAt(0);
                
                
    for(int i=0;i<workbook.getNumberOfSheets();i++){
                    sheet
    =workbook.getSheetAt(i);
                    
    if(sheet!=null){
                        
    for(int m=0;m<sheet.getLastRowNum();m++){
                            HSSFRow row
    =sheet.getRow(m);
                            
    if(row==nullbreak;
                            
                            
    for(int n=0;n<row.getLastCellNum();n++){
                                HSSFCell cell
    =row.getCell(n);
                                
    if(cell==nullbreak;
                                
    int type=cell.getCellType();
                                
    switch(type){
                                    
    case 0:
                                        content
    =content+cell.getNumericCellValue();
                                        
    break;
                                    
    case 1:
                                        content
    =content+cell.getStringCellValue();
                                        
    break;
                                    
    case 3:
                                        
    break;
                                    
    default:
                                        ;
                                }
                            }
                            content
    =content+"\n";
                        }
                    }
                    content
    =content+"\n";
                }

            }
    catch(Exception e){    
                e.printStackTrace();
            }
            
    return content;
        }
    }
    不想拷贝的朋友可以直接下载源代码:http://www.ziddu.com/download/7017614/src.txt.html

    以上代码比较简单,就不作说明,希望能幫到需要用的朋友。当然上面只是一個简单的例子,如果要具体应用,大家可以自己再改写。如果你有其它的想法,欢迎分享你的精彩想法。


    转载请注明出处

    posted @ 2009-10-22 10:55 王生生 阅读(1620) | 评论 (0)编辑 收藏

    在看本文之前,请确保你已掌握了PHP的一些知识以及MYSQL的查询操作基础哦。

    作为一个Web程序,经常要和不计其数的数据打交道,比如会员的数据,文章数据,假如只有几十个会员那很好办,在一页显示就可以了,可是假如你的网站是几千甚至几十万会员的话,如果都在一页打开的话无论对浏览器还是观看者都是一种折磨。

    相信每个学习PHP的新手都会对分页这个东西感觉很头疼,不过有了默默的这一水帖,你肯定会拍拍脑袋说,嘿,原来分页竟然如此简单?的确,现在请深呼吸一口新鲜的空气,仔细的听默默给你一点一点的分解。

    假设我们要处理1000条数据,要在每页中显示10条,这样的话就会分100页来显示,咱们先看一看在mysql里提取10条信息是如何操作的。

    Select * from table limit 0,10

    上面是一句很简单的mysql查询语句,它的作用是从一个名叫table的表里提取10条数据,并且把所有字段的值都获得。

    关键的地方就在这段“limit 0,10”,它其中的0是以0为起始点,后面的10则是显示10条数据,那么我们要以10为起始点,显示到第20条数据该怎么写呢?

    可能很多大大会心直口快的说“limit 10,20”嘛!啊哦,这样可就错误了哦,正确的写法是“limit 10,10”它后面的参数并非是结束点而是要提取的数目,记住哦。

    懂得了如何提取10条数据,那么提取1000条也就是做100次这种查询呀,就是说要做如下的查询:

    Limit 0,10                 //第一页
    Limit 10,10                 //第二页
    Limit 20,10                 //第三页
    Limit 30,10                 //第四页
    ……
    看出有什么规律了吗?没错,第一个参数每翻一页就增加10,可是第二个参数是不变的。
    也就是说咱们设法根据页数来改变第一个参数的值,就可以进行分页显示数据了,怎么样,原理是不是很简单?

    可是要怎么设法根据页数来改变第一个参数的值呢?首先,咱们要有一个页数的值,用url的GET方式获取。
    比如index.php?page=18
    相信大部分的大大对这个东西不陌生吧,这种url地址可是随处可见,其中的page参数的作用就是传入要显示的页数。

    咱们通过一段代码来看一看究竟是如何实现的吧:

    <?php

    /*

    Author:默默
    Date   :2006-12-03

    */

    $page=isset($_GET['page'])?intval($_GET['page']):1;        //这句就是获取page=18中的page的值,假如不存在page,那么页数就是1。
    $num=10;                                      //每页显示10条数据

    $db=mysql_connect("host","name","pass");           //创建数据库连接
    $select=mysql_select_db("db",$db);                 //选择要操作的数据库

    /*
    首先咱们要获取数据库中到底有多少数据,才能判断具体要分多少页,具体的公式就是
    总数据数除以每页显示的条数,有余进一。
    也就是说10/3=3.3333=4 有余数就要进一。
    */

    $total=mysql_num_rows(mysql_query("select id from table")); //查询数据的总数,id是数据库中的一个自动赋值的字段
    $pagenum=ceil($total/$num);                                    //获得总页数

    //假如传入的页数参数大于总页数,则显示错误信息
    If($page>$pagenum || $page == 0){
            Echo
    "Error : Can Not Found The page .";
            Exit;
    }

    $offset=($page-1)*$num;                                        //获取limit的第一个参数的值,假如第一页则为(1-1)*10=0,第二页为(2-1)*10=10。

    $info=mysql_query("select name from table limit $offset,$num");   //获取相应页数所需要显示的数据,name是数据里的一个字段
    While($it=mysql_fetch_array($info)){
            Echo
    $it['name']."<br />";
    }                                                              
    //显示数据
       
    For($i=1;$i<=$pagenum;$i++){
           
           
    $show=($i!=$page)?"<a href='index.php?page=".$i."'>$i</a>":"<b>$i</b>";
            Echo
    $show." ";
    }

    /*显示分页信息,假如是当页则显示粗体的数字,其余的页数则为超连接,假如当前为第三页则显示如下
    1 2 3 4 5 6
    */
    ?>

    假如你仔细的读过上面的代码,把数据库连接和查询的表替换成你的,那么就能看见它的执行效果哦。

    是不是很简单,只要动动脑筋,可以让它显示的更为个性化哦,给大家出一个小题,如何实现“首页 上一页 下一页 尾页”这种格式的分页呢?

    OK,水帖灌完,收工。^_^
    辉老大『阿辉』:
    好帖子啊,我来顶默默的提问,代码,如下:

    <?php
    /*
    Author:默默
    Date   :2006-12-03
    */

    $page=isset($_GET['page'])?intval($_GET['page']):1;        //这句就是获取page=18中的page的值,假如不存在page,那么页数就是1。
    $num=10;                                      //每页显示10条数据

    $db=mysql_connect("localhost","root","7529639");           //创建数据库连接
    mysql_select_db("cr_download");                 //选择要操作的数据库

    /*
    首先咱们要获取数据库中到底有多少数据,才能判断具体要分多少页,具体的公式就是
    总数据库除以每页显示的条数,有余进一。
    也就是说10/3=3.3333=4 有余数就要进一。
    */

    $result=mysql_query("select * from cr_userinfo");
    $total=mysql_num_rows($result); //查询所有的数据

    $url='test.php';//获取本页URL

    //页码计算
    $pagenum=ceil($total/$num);                                    //获得总页数,也是最后一页
    $page=min($pagenum,$page);//获得首页
    $prepg=$page-1;//上一页
    $nextpg=($page==$pagenum ? 0 : $page+1);//下一页
    $offset=($page-1)*$num;                                        //获取limit的第一个参数的值,假如第一页则为(1-1)*10=0,第二页为(2-1)*10=10。

    //开始分页导航条代码:
    $pagenav="显示第 <B>".($total?($offset+1):0)."</B>-<B>".min($offset+10,$total)."</B> 条记录,共 $total 条记录 ";


    //如果只有一页则跳出函数:
    if($pagenum<=1) return false;

    $pagenav.=" <a href='$url?page=1'>首页</a> ";
    if(
    $prepg) $pagenav.=" <a href='$url?page=$prepg'>前页</a> "; else $pagenav.=" 前页 ";
    if(
    $nextpg) $pagenav.=" <a href='$url?page=$nextpg'>后页</a> "; else $pagenav.=" 后页 ";
    $pagenav.=" <a href='$url?page=$pagenum'>尾页</a> ";

    //下拉跳转列表,循环列出所有页码:
    $pagenav.=" 到第 <select name='topage' size='1' onchange='window.location=""$url?page=""+this.value'>"n";
    for(
    $i=1;$i<=$pagenum;$i++){
    if(
    $i==$page) $pagenav.="<option value='$i' selected>$i</option>"n";
    else
    $pagenav.="<option value='$i'>$i</option>"n";
    }
    $pagenav.="</select> 页,共 $pagenum 页";

    //假如传入的页数参数大于总页数,则显示错误信息
    If($page>$pagenum){
            Echo
    "Error : Can Not Found The page ".$page;
            Exit;
    }

    $info=mysql_query("select * from cr_userinfo limit $offset,$num");   //获取相应页数所需要显示的数据
    While($it=mysql_fetch_array($info)){
            Echo
    $it['username'];
            echo
    "<br>";
    }                                                              
    //显示数据
      
    echo"<br>";
       echo
    $pagenav;//输出分页导航
    ?>


    转自 http://www.cnblogs.com/justforfun/archive/2009/04/27/1444358.html
    posted @ 2009-10-21 10:08 王生生 阅读(191) | 评论 (0)编辑 收藏

        最近在开发站内搜索,以开源的lucene作為基础框架。Lucene可以实现自定义过滤器Filter接口,也可以直接调用lucene已經提供的类。
        本文使用 FilteredQuery 进行多条件过滤。

    import java.util.*;
    import org.apache.lucene.index.Term;
    import org.apache.lucene.search.*;

    public class ezfilter{   
            private List<Filter> filterList;
            public ezfilter(){
                filterList = new ArrayList<Filter>();
            }
            public void addFilter(String Field,String Value){
                Term term=new Term(Field,Value);//添加term
                QueryWrapperFilter filter=new QueryWrapperFilter(new TermQuery(term));//添加过滤器
                filterList.add(filter);//加入List,可以增加多個过滤
            }
            public Query getFilterQuery(Query query){
                for(int i=0;i<filterList.size();i++){
                    //取出多個过滤器,在结果中再次定位结果
                    query = new FilteredQuery(query, filterList.get(i));
                }
                return query;
            }   
    }

    在查询时,调用方式如下:

    ezfilter filter = new ezfilter();
    filter.addFilter("id","1000");//过滤id=1000
    filter.addFilter("type","school");//过滤type=school
    .....
    query=filter.getFilterQuery(query);//结果过滤
    hits = searcher.search(query);


    以上代码只是简化说明,希望有碰到的朋友可以参考。





    posted @ 2009-10-13 17:28 王生生 阅读(1251) | 评论 (0)编辑 收藏

    森露2013新款豹纹打底衫 高领 女 长袖 修身长袖t恤女 加绒加厚冬 2013春秋新款女装 潮修身大码长袖小西装外套女 韩版中长款小西装 忧忧鱼2013秋冬新款直筒裤女显瘦长裤加绒黑色休闲裤修身西裤女裤