中国各一级行政区名称及简称的来历

1、北京(京)
  北京有据可查的第一个名称为“蓟”,是春秋战国时燕国的都城。辽金是将北京作为陪都,称为燕京。金灭辽后,迁都于此,称中都。元代改称大都。明成祖朱棣从南京迁都于此,改称“北京”。名称一直沿用至今。1949年设为直辖市。
  取全称中的“京”字作为简称。
  2、天津(津)
  唐宋以前,天津称为直沽。金代形成集市称“直沽寨”。元代设津海镇,这是天津建城的开始。明永乐2年(1404年)筑城设卫,始称天津卫,取“天子经过的渡口”之意。1949年设为直辖市。
  取全称中的“津”字作为简称。
  3、上海(沪)
  上海之称始于宋代,当时上海已成为我国的一个新兴贸易港口,那时的上海地区有十八大浦,其中一条叫上海浦,它的西岸设有上海镇。1292年,上海改镇为县。这是上海这一名称的由来。1949年,上海设为直辖市。
  古时,上海地区的渔民发明了一种竹编的捕鱼工具“扈”,当时还没有上海这一地名,因此,这一带被称为“沪渎”,故上海简称“沪”。春秋战国时上海是楚春申君黄歇封邑的一部分,故上海别称“申”。
  4、重庆(渝)
  重庆古称“巴”。秦时称江州。隋称渝州。北宋称恭州。重庆之名始于1190年,因南宋光宗赵敦先封恭王,后登帝位,遂将恭州升为重庆府,取“双重喜庆”之意。1997年,重庆设为直辖市。
  隋时,嘉陵江称渝水,重庆因位于嘉陵江畔而置渝州,故重庆简称“渝”。
  1、内蒙古自治区(内蒙古)
  蒙古原为部落名,始见于唐代记载。1206年,成吉思汗统一蒙古各部,建立蒙古国。元灭后,蒙古族退居塞北。明清形成内、外蒙古之称。晚清以后,泛指大漠以南、长城以北、东起哲里木盟、西至套西厄鲁特所以盟旗为内蒙古。
  取全称中“内蒙古”三字作为简称。
  2、维吾尔自治区(新)
  辖区古称西域。西汉设西域都护府。东汉魏晋改都护为长史。唐代设伊、西、庭三州和安西、北庭两个都护府。17世纪中叶以后,清朝平定了准噶尔部叛乱,在天山南北设伊犁将军。清光绪10年(1884年),改为新疆省,意为“故土新归”。1955年,设新疆维吾尔自治区。
  取全称中的“新”字作为简称。
  3、西藏自治区(藏)
  元时称西藏地区为“乌思藏”。“乌思”是藏语“中央”的意思,“藏”是“圣洁”的意思。明代设立两个都指挥使司。清代称西藏东部为“康”(喀木),中部为“卫”,西部日喀则一带为“藏”(包括阿里),因其在中国西部,故称西藏。1965年设立西藏自治区。取全称中的“藏”字作为简称。另一说认为简称源于故称“乌思藏”。
  4、宁夏回族自治区(宁)
  公元5世纪处,匈奴贵族赫连勃勃自以为是夏后氏后裔,故将建立的割据政权定国号为 “夏”。宋代,党项族拓拔氏首领李元昊称帝,定都兴庆府(今银川),立国号“夏”,创立文字,建西夏王朝。13世纪,元灭西夏,取“平定西夏永远安宁”之意,在这里设宁夏行省,始有宁夏之名。1958年设宁夏回族自治区。
  取全称中的“宁”字作为简称。
  5、广西壮族自治区(桂)
  宋设广南西路,简称广西路,“广西”一名产生。元设广西两江道。明设广西省。1958年设广西僮族自治区,1965年改为广西壮族自治区。
  因自宋至清,广西的行政中心在桂州(或桂林府),故广西简称“桂”。另一说认为广西秦时曾设桂林、象郡、南海三郡,而历史上广西2/3地域属桂林郡,故广西简称“桂”。
  1、香港特别行政区(港)
  宋代以前,这里是海上渔民捕鱼歇息的地方。宋元以后,岛上有个小村,叫“香港村“,为转运南粤香料的集散港,香港因此得名。1997年成立香港特别行政区。
  取全称中的“港”字作为简称。
  2、澳门特别行政区(澳)
  名字最早记录于明朝史书,叫做“蚝镜”(濠镜),意为海湾如明镜,盛产“蚝”。后又称做“澳”,即船只停航寄泊的地方,故称“蚝镜澳”,因隶属广东香山,亦称“香山澳”。“门”字的来历有多种说法,一说是本地内港的妈祖庙,隔海同湾仔的银坑相望,形成的海峡象门;另一说是本地南面的氹仔、小横琴、路环、大横琴四岛离立对峙,海水贯流其中呈十字门状;再一说是本地南台山(妈阁庙山)和北台山(莲峰山)相封成门。总之,既是澳,又是门,故曰澳门。 1999年成立澳门特别行政区。
  取全称中的“澳”字作为简称。
  1、黑龙江省(黑)
  1671年为抵御沙俄东侵,清政府在黑龙江沿岸修筑黑龙江城(黑河旧城),设置黑龙江将军,管辖黑龙江流域。1907年改为黑龙江省。取全称中的“黑”字作为简称。一说简称源于河流黑龙江。
  2、吉林省(吉)
  吉林一名源于“吉林乌拉”,满语意为“沿松花江的城市”。1673年建城。1676年置吉林将军。1907年将其辖区改称吉林省。
  取全称中的“吉”字作为简称。
  3、辽宁省(辽)
  秦汉魏晋时代,在辽河以东设辽东郡,以西设辽西郡。北宋时,在今河北、辽宁一带,契丹族建立辽国。辽金时代设置辽阳府。元设辽阳行省。明设辽东都司。清设辽东将军。后因辽河流域为清朝发源地,取“奉天承运”之意,改为奉天省。1929年,取“辽河流域永远安宁”之意,改称辽宁省。
  取全称中的“辽”字作为简称。一说因境内有辽河,故简称“辽”。
  4、河北省(冀)
  战国时,黄河以北的齐国土地称为河北。汉设河北县。唐设河北道。辖区与今有出入。1928年设河北省。
  辖区相当于我国最早的地理著作《禹贡》中的冀州,故简称“冀”。
  5、山西省(晋)
  战国至秦汉时,崤山、函谷关以西的地区称为山西。元时,称太行山以西为山西,设河东山西道宣慰司,这是山西作为政区名称的开始。明处设山西省。
  辖区为春秋时晋国地,故简称“晋”。
  6、青海省(青)
  因境内有青海湖,故得名青海省。据《水经注》记载,早在公元前5世纪时,这里就称青海了,也有写作西海的。唐以后多以青海为正名。1928年设青海省。
  取全称中的“青”字作为简称。一说认为因境内有青海湖故简称“青”。
  7、山东省(鲁)
  战国至秦汉时,崤山、函谷关以东的地区称为山东。金时,在开封以东地区设山东东路、山东西路,这是山东作为政区名称的开始。清初设山东省。
  辖区为春秋时鲁国地,故简称“鲁”。
  8、河南省(豫)古称
  古称黄河以南地区为河南。汉设豫州部。唐置河南道。宋置河南路。元置河南江北行省。明初设河南省。
  辖区相当于《禹贡》中的豫州,故简称“豫”。还有一种说法,河南简称“豫”甲骨文的字形是一个人牵着一头大象,引申意就是出产大象的地方。在殷墟的殉葬坑里,有大象的遗骸。
  9、江苏省(苏)
  清康熙6年(1667年)设江苏省,取两江总督驻所江宁(今南京市)和巡抚驻所苏州(今苏州市)两府首字组成江苏省。
  取全称中的“苏”字作为简称。
  10、安徽省(皖)
  1667年,取当时的政治中心安庆(今安庆市)和经济都会徽州(今歙县)二府首字组成安徽省。
  安庆府是春秋时皖国故地,别称为皖,故安徽简称“皖”。一说认为因境内最早的名山天桂山古称皖公山,故简称“皖”。
  11、浙江省(浙)
  浙江即江流盘回曲折之意。战国时浙江指今天的富春江、钱塘江和新安江。东汉将浙江分为浙东、浙西两个地区。唐以后这两个地区转化为政区名称。明初设浙江省。
  取全称中的“浙”字作为简称。一说认为因富春江、钱塘江和新安江古称浙江,故简称“浙”。
  12、福建省(闽)
  秦始皇统一中国后,在此设闽中郡。汉时称福建为闽越国。唐开元年间设福建节度使,管辖福、建、泉、漳、汀五州,福建是前两州的名字组成的。元设福建行省。明设福建省至今。辖区古为闽越族聚居地,故简称“闽”。一说因境内有闽江,故简称“闽”。
  13、江西省(赣)
  唐代设江南西道,简称江西道,江西由此得名。宋设江南西路。元设江西行省。后皆设江西省。
  因赣江纵贯全省,故简称“赣”。
  14、湖南省(湘)
  唐代在洞庭湖以南,包括湘姿二水流域设湖南节度使,始出现湖南一名。宋置荆湖南路,简称湖南路。元明两代设湖南道。清代设置湖南省。
  因湘江纵贯全省,故简称“湘”。
  15、湖北省(鄂)
  宋代自洞庭湖以北至荆山,西包沅澧二水流域设荆湖北路,简称湖北路,湖北一名产生。元明两代设湖北道。清代设置湖北省。
  清代湖北的行政中心宜昌,为隋以后鄂州的治所,故湖北简称“鄂”。
  16、广东省(粤)
  宋置广南东路,简称广东路,由此出现广东一名。元设广东道。明设广东省。
  辖区汉初为南粤之地,故简称“粤”。
  17、台湾省(台)
  台湾一名源于西拉雅族的台窝湾支族。台湾在秦汉时称“东鳀”。
  三国时称“东夷”。元时称“瑠求”。明万历年间正式在公文上使用台湾一名。清光绪11年(1885年)设台湾省。取全称中的“台”字作为简称。
  18、海南省(琼)
  因其位于南中国海域,境内最大岛屿又称海南岛,故名海南省。1988年建省。
  因秦以后称这一带为琼台、琼州或琼崖,故简称“琼”。
  19、甘肃省(甘或陇)
  甘肃一名始于11世纪西夏王朝设置的十二监军之一,治所在甘州(今张掖县),辖甘州、肃州(今酒泉)二州,取二州首字组成甘肃。元设甘肃行省,明代并入陕西省,清代恢复省治。
  取全称中的“甘”字作为简称。一说认为西夏时行政中心在甘州,故简称“甘”。
  由于甘、陕两省间有陇山,甘肃古时别称陇西,故又简称“陇”。
  20、陕西省(陕或秦)
  陕西一名,源于周代周、召二公“分陕而治”,今陕县张汴塬一带古称陕塬,当时的陕西就是陕塬以西的泾渭平原。唐安史之乱后设陕西节度使,陕西始转化为政区名称。宋设陕西路。元设陕西行省。清设陕西省。
  取全称中的“陕”字作为简称。
  又因辖区春秋时为秦国地,故又简称“秦”。
  21、四川省(川或蜀)
  辖区秦时设蜀郡。汉设益州部。唐设剑南道,又分剑南东川、剑南西川两节度使。宋设西川路和峡路,后将西川、峡二路分为益州、梓州、利州、夔州四路,合称“川峡四路”,简称“四川路”,四川一名由此产生。元时合并四路,设为四川行省。自此,四川省治沿用至今。
  取全称中的“川”字作为简称。
  又因辖区西部古为蜀国地,故又简称“蜀”。
  22、贵州省(贵或黔)
  宋代以前设矩州,因当地语音“贵”“矩”难分,故也写做贵州,元初正式命名为贵州。明设贵州布政使司。清设贵州省。
  取全称中的“贵”字作为简称。一说认为因境内有贵山,故简称“贵”。
  辖区东北部秦时属黔中郡,唐属黔中道,故又简称“黔”。一说认为境内有黔灵山、黔灵河,故简称“黔”。
  23、云南省(云或滇)
  因在云岭以南,故名云南。西汉时设云南县。三国蜀汉时设云南郡。元设云南行省。明设云南布政使司。清设云南省。取全称中的“云”字作为简称。
  又因行政中心昆明一带,属战国时滇国地,故又简称“滇”。一说因境内有滇池,故简称“滇”。
  一、地理位置命名:如河北、河南、山东、山西、湖北、湖南、西藏、海南、陕西、云南、江西、广东、广西等。
  二、古代官府名称或辖区名称命名:如安徽、甘肃、江苏、福建、四川等。
  三、赋予一定纪念意义的命名:如重庆、天津、新疆、宁夏、辽宁等。
  四、以境内中心城镇命名:如吉林、上海、北京等。
  五、以境内河湖名称命名:如浙江、青海、黑龙江等。
  六、与民族名称相关的命名:如内蒙古、台湾等。
  七、其他:如贵州、香港、澳门等。
  一、以历史名称命名:如沪、渝、桂、冀、晋、鲁、豫、鄂、粤、琼、秦、蜀等。
  二、以境内河湖山脉名称命名:如赣、湘、贵、浙、陇等。
  三、以全称中的一或多个字代替。
  四、综合上述几类情况命名:如闽、皖、黔、滇、黑、辽、青、藏、甘等。

北戴河-祖山 两日游

昨天上午8:00 从公司出发,12:20 到达北戴河附近的一个餐厅,彼时菜已备齐,都凉了,加上一路颠簸劳累,实在也吃不下什么,就简单吃了一下,基本12:50了,然后就上车去北戴河,大概用了20分钟的时间,13:00 多一点点了。

我们提前也了解到里面大概有哪些项目了;首先映入眼帘的是沙雕,确实还行;然后又看到了滑沙、滑草,这两个项目是比较烂的,就是从一个高高的土堆上往下滑,实在没啥意思,但是因为是免费的,所以玩的人还很多,所以就要排队,老长老长的队,我立马决定不玩这个了。

顺着欣赏沙雕的线路向里走,路边有“关羽夜读春秋”“中国龙”“炎黄二帝”等等;
还有一个用竹子(是已经没有了生命的竹子)插的迷宫,走了一遍,发现简单的要死;
再往前走,就是跑马场了,因为收费,就没有去尝试,说是跑马场,其实能看到的沙土跑到不到200米,可能里面还远着呢,但是乍一看去,没有一点让人喜悦的生机;
往前走吧,哎,原来这就是射箭啊,总面积不到100㎡,这个也是免费的,过去看看吧,好家伙,队排的也是老长,问服务员怎么个玩法,服务员爱理不理地用手指指桌子上的一个小本子,原来上面写着一些规则的,说是免费,但是你不小心触犯了他的规则,就不是免费了;在看看他们的弓和箭,根本就像我小时候自制的那种,还是往前走吧。
哦,前面就是海了,因为天气不太好,我根本也没想下水,不过这里也提一下,傍边有一排小木屋,里面是换衣服的,一次两元,比上厕所都贵,够黑的;还有,你游泳之后肯定要冲个澡吧,那个也在小木屋里,没人8元;这也都无所谓了,主要是海边的景观真是够烂的,允许下水的海岸线应该不超过200米,而且水也根本不是蓝色的,我只在河边走了走,15:20 左右我和杜松就开始离开海边,去看看其它有好玩的没有;

回到滑沙、滑草的地方,我们没有排队,意外地看到那个土堆后面是很大很大的高尔夫球场,大概这里能算得上级别的也就是这个高尔夫球场了;然后我俩就找了一颗柳树,坐下来休息,知道17:00,上车离开北戴河,我想我不会再来北戴河了;北戴河在我眼里曾经是非常向往的地方,现在却成了非常想尽快离开的地方。

我们先开车去吃饭,大概20分钟的时间,饭店的名字也给忘了,饭食还很丰盛,有:鱼、虾、蟹等等,因为中午没有吃好,很饿了,所以吃的也很快,吃完后,上车去住宿的地方,大概又是20分钟的时间,这天尽和20分钟打交道了。

住宿是在东北大学北戴河校区,虽然是个学校,但是里面已经看不到教室了,除了住宿楼就是餐厅,应该不再是学校了,晚上安排完房间之后,我们又一起穿过马路,去了对面的鸽子湾,那也是海边,那晚没有月亮,偶有几颗星星,接近于漆黑了,我们下了马路,顺着一条一尺宽的小路进入了一片草丛,有点像演恐怖片了,我们相互取笑着,也不知道前面会是什么,我们期望是鸽子湾,但是因为是第一次来,也不敢确定,我们足足走了500多米,终于听到了海的声音,然后踏上一段木板小路,就看到海了,虽然看不到海的浩瀚(因为还黑了),但是用脚亲近一下海水,也是那么的惬意;

回去之后,洗个澡,看会儿电视,23:23了,睡觉,第二天6:30就得起床了;

第二天6:00就醒了,可能别人家的床睡着不习惯吧,迷迷糊糊睡到6:30,起来洗漱一下,第一个感到餐厅用早餐;早餐是咸菜+馒头+粥+一个鸡蛋;吃完后到校园里转了一圈,一点也不美丽的校园。

8:00 我们离开这个学校,赶往祖山,大概一个半小时的时间,我睡了一路,9:30到了祖山山脚,这是一个很大的石头山,看到这片大山,才感觉我原来爬的山根本就不算山;

我们没有从山脚开始爬,这里也挺特殊,我们先坐车,大概不到10分钟的时间,车把我们拉到一个可以看到泉水的地方,我们从这里开始爬的,我曾经爬过的山都是没有水的,我还以为这个的水也是用水泵抽到上面然后再流下来的,听导游解说才知道这里的水确实是泉水,非常清澈甘甜的泉水,很凉很凉的;这时大概9:40了,然后我们顺着一条小路向上爬,路大概是故意顺着泉水修建的,一路都能听到泉水哗哗的声响,里面绿树成荫,低头是哗哗的泉水,抬头是鬼斧神工的高山,简直就是人间仙境,上上下下,蜿蜒曲折,移步易景,空气新鲜,凉气袭人,我用相机不断地拍摄,可惜,拍得了精致,但是拍不走这里的新鲜空气,拍不走这里的阴凉;以后又机会还会再来的。

中午12:10,准时回到山脚吃饭,13:10,开始返回,17:10,正好4个小时的时间,回到了公司,因为很累了,我睡了一路,一点晕车的感觉都没有;回到公司,然后就写下了这篇游记,现在19:20了,该吃晚饭了。

自是人生长恨水长东

乌夜啼

【南唐】李煜

林花谢了春红,
太匆匆,
无奈朝来寒雨晚来风。

胭脂泪,
相留醉,
几时重,
自是人生长恨水长东。

【注释】

  ①此调原为唐教坊曲,又名《相见欢》、《秋夜月》、《上西楼》。三十六字,上片平韵,下片两仄韵两平韵。
  ②谢:凋谢。
  ③胭脂泪:指女子的眼泪。女子脸上搽有胭脂泪水流经脸颊时沾上胭脂的红色,故云。
  ④几时重:何时再度相会。

【简析】

  此词将人生失意的无限怅恨寄寓在对暮春残景的描绘中,是即景抒情的典范之作。起句“ 林花谢了春红 ”,即托出作者的伤春惜花之情;而续以“太匆匆”,则使这种伤春惜花之情得以强化。狼藉残红,春去匆匆;而作者的生命之春也早已匆匆而去,只留下伤残的春心和破碎的春梦。因此,“太匆匆”的感慨,固然是为林花凋谢之速而发,但其中不也糅合了人生苦短、来日无多的喟叹,包蕴了作者对生命流程的理性思考?“无奈朝来寒雨晚来风”一句点出林花匆匆谢去的原因是风雨侵龚,而作者生命之春的早逝不也是因为过多地栉风沐雨?所以,此句同样既是叹花,亦是自叹。“无奈”云云,充满不甘听凭外力摧残而又自恨无力改变生态环境的感怆。换头“胭脂泪”三句,转以拟人化的笔墨,表现作者与林花之间的依依惜别之情。这里,一边是生逢末世,运交华盖的失意人,一边是盛时不再、红消香断的解语花,二者恍然相对,不胜缱绻。“胭脂泪”,遥按上片“林花谢了春红”句,是从杜甫《曲江对雨》诗“林花著雨胭脂湿”变化而来。林花为风侵欺,红^叟鲛肖(左应加鱼旁),状如胭脂。“胭脂泪”者,此之谓也。但花本无泪,实际上是惯于“以我观物”的作者移情于彼,使之人格化 —— 作者身历世变,泣血无泪,不亦色若胭脂?“相留醉”,一作“留人醉”,花固怜人,人亦惜花;泪眼相向之际,究竟是人留花抑或花留人,已惝恍难分。着一“醉”字,写出彼此如醉如痴、眷变难舍的情态,极为传神,而“几时重”则吁出了人与花共同的希冀和自知希冀无法实现的怅惘与迷茫。 结句“自是人生长恨水长东”, 一气呵成益见悲慨。“人生长恨”似乎不仅仅是抒写一已的失意情怀,而涵盖了整个人类所共有的生命的缺憾,是一种融汇和浓缩了无数痛苦的人生体验的浩叹。

 

摘自:http://zhidao.baidu.com/question/10438435.html

js提交的数据的编码

js 提交的数据的编码都是utf-8的吗?

这个问题问的不太对,我们使用js的encodeURIComponent()函数或者escape()函数编码对数据进行编码,都是按照utf-8 来编码的,所以js提交后的数据才是utf-8的,和js没有必然联系。

关于url的编码?

如果url里面含有中文字符,则浏览器会按照设置对这些字符做编码。默认utf-8编码,可以设置为ansi编码。

IE中: 选项=》高级=》总是以utf-8编码发送url

Firefox: 地址栏输入“about:config”,选项“network.standard-url.encode-utf8”,即可改变发送URL的编码方式。

相关文章:http://www.cnlei.com/blog/article.asp?id=453

动态script标签加载js文件需要注意的问题

对于下面一段js代码

<?php
var excuteScript = function (id, scriptSource, charset
) {
var
head = document.getElementsByTagName(‘head’)[0
];
var
oldScript = document.getElementById(id
);
if (
oldScript
) {
head.removeChild(oldScript
);
}
var
newScript = document.createElement(‘script’
);
if (
charset
) {
newScript.charset = charset
;
} else {
newScript.charset = ‘gb2312’
;
}
newScript.id = id
;
newScript.type = ‘text/javascript’
;
scriptSource += (/?/.test(scriptSource)?"&":"?") + "_=" + (new Date()).getTime
();
newScript.src = scriptSource
;
head.appendChild(newScript
);
};
?>

对于IE和firefox是有所不同的:
IE: 请求发起在给script标签的src属性赋值的时候,至少ie8是这样
Firefox: 请求发起于appendChild的时候,如果创建的标签没有append操作,将不会发起请求; 至少firefox 3.0.11 是这样

我们可以通过下面的脚本测试一下:

<html>
<
head><title>test script </title></head>
<
body>
<
script>
scriptSource = "http://phpor.net/404.js";
var
head = document.getElementsByTagName(‘head’)[0];
var
oldScript = document.getElementById(id);
if (
oldScript) {
head.removeChild(oldScript);
}
var
newScript = document.createElement(‘script’);
newScript.charset = ‘gb2312’;
newScript.id = "testid";
newScript.type = ‘text/javascript’;

newScript.src = scriptSource;
newScript.src = scriptSource +"?2";
//head.appendChild(newScript);

</script>
</body>
</html>

http://phpor.net/samples/html/test_script.html

陈奎家住陕西延安城

歌手名:曲剧
歌曲名:陈奎家住陕西延安城
专辑名:陈三两

陈奎家住陕西延安城,南门以里有他的门庭。
他是个独生子,七岁把书攻,不幸遭大火,家财被烧清;
可怜他的二爹娘,火坑丧性命,单撇下陈奎自己孤苦伶仃。
无奈何武定州去投亲朋,只可惜世态炎凉无人照应。
走投无有路,流落大街中,挨门去讨饭,谁能把他疼。
偶遇衙前班头,收他去打更。打一更钱一个,二更二文铜。
那一日正半夜,大祸从天生。衙门失了盗,窃贼无影踪,拿住了小陈奎下绝情。
这才是屋漏偏遇连阴雨,行船遇着顶头风。打更钱一文不能要,苦苦逼他招口供。
打得他死去活来险些丧命,衙内不要他再不能打更。
小陈奎万般无计奈,又只得左提棍右挎篮挨门挨户沿街讨要去操旧营生。
那一日陈奎讨饭去到富春院,我见他衣褴褛面憔悴真是可怜。
我将他唤上北楼问一遍,俺们二人身世苦都似黄连。
我赠他纹银二十两,周济他糊口把衣添。
小陈奎得银两不买衣饭,到大街买诗文只把书观。
我见他人穷志不短,就有心周济他奇儿男。

读起书来了——
我陈奎操碎我一片心肠,老鸨儿打得我周身是伤。
苦口又婆心,教他读文章,我与他又订下提铃计一桩。
大街上买来了铜铃绒线,从北楼扯到了西楼上边。陈奎在西楼把书念,我在北楼把文观。
夜半内听不到书音贯耳,就知那小陈奎昏昏入眠。
在北楼扯动红绒线,响铜铃惊醒陈奎又把书观。
日月如梭光阴似箭,西楼上读书有好几年。我教会他文章有三百篇,梅花篆字我亲手传。
北京城里开科选,陈奎进京去求官。
伸手拉住小兄弟,有几句金石良言你牢记在心间。
得中要把清官做,且莫要草菅人命做贪官。
得中后搭救姐姐出离苦海,再与我屈死二老报仇冤。
这几件大事要牢牢记下,也不枉我苦口婆心教读你几年。


陈奎好比一只虎,陈三两好比捕鼠猫。猛虎跟着猫学艺,胆大狸猫把虎教。
窜山跳涧都教会,得第把我恩忘了。大老爷你替我想一想,这样的门徒可教不可教。
我好比一只孤舟在顺水漂,船到江心失了篙。有前因无后果,有了上枝无下梢。
指河南我把陈奎骂,你的文章是谁教。得恩不报非君子,忘恩负义小儿曹。
陈三两越骂我心越恼……

apache异常分析全过程

关于apache中的异常:

现象:
1、 10.49.4.61 的httpd访问不了,但是访问却又不是立即退出,而是一直等待
2、 10.49.4.61 的httpd子进程240个,不再变化
3、 netstat 发现很多close_wait 的连接; 就是客户端已经断开,但是服务器还没有断开的情况 

分析:
1. tcpdump 发现连接已建立,也发送了一些请求数据,接着就什么也没有了; 说明请求并没有被apache子进程给接走
2. netstat 查看一下,发现Recv-Q 里面确实有数据
3. strace httpd子进程发现每个子进程都如下:
 write(11, "10.49.4.21 – – [12/Jul/2009:10:2"…, 101 <unfinished …>

 显然,要写apache日志,而且是今天10点20多时的日志,但是被某种原因给阻塞了,下面就是要知道为什么阻塞了
4. 看一下fd = 11 是个什么东西:
 [root@sso115 htdocs]# ll /proc/17151/fd/
 total 0
 lr-x—— 1 root root 64 Jul 12 10:53 0 -> /dev/null
 l-wx—— 1 root root 64 Jul 12 10:53 1 -> /dev/null
 lr-x—— 1 root root 64 Jul 12 10:53 10 -> eventpoll:[41846266]
 l-wx—— 1 root root 64 Jul 12 10:53 11 -> pipe:[41551707]
 lrwx—— 1 root root 64 Jul 12 10:53 12 -> socket:[41846267]
 l-wx—— 1 root root 64 Jul 12 10:53 13 -> pipe:[41551708]
 l-wx—— 1 root root 64 Jul 12 10:53 2 -> /data1/apache2/logs/error_log
 lrwx—— 1 root root 64 Jul 12 10:53 3 -> socket:[39585452]
 lrwx—— 1 root root 64 Jul 12 10:53 4 -> socket:[39585453]
 lr-x—— 1 root root 64 Jul 12 10:53 5 -> pipe:[41551704]
 l-wx—— 1 root root 64 Jul 12 10:53 6 -> pipe:[41551704]
 l-wx—— 1 root root 64 Jul 12 10:53 7 -> /data1/apache2/logs/access_log
 l-wx—— 1 root root 64 Jul 12 10:53 8 -> pipe:[41551705]
 l-wx—— 1 root root 64 Jul 12 10:53 9 -> pipe:[41551706]

 原来是个管道,可能是管道写满了;那么这个管道是做什么的呢?

5. 应该是和rotatelogs程序共有的pipe,验证如下:
 rotatelogs 只剩下三个进程了,应该有四个呢,肯定被谁误杀了一个!!!
 [root@sso115 ~]# ps aux | grep rot                    
 root     29709  0.0  0.0  61116   736 pts/1    S+   14:04   0:00 grep rot
 root     31469  0.0  0.0  23524   696 ?        S    Jul10   0:00 /data1/apache2/bin/rotatelogs /data1/apache2/logs/%Y%m/online.internal.sina.com.cn-80-error_log.%Y%m%d 86400 480
 root     31470  0.0  0.0  23524   692 ?        S    Jul10   0:00 /data1/apache2/bin/rotatelogs /data1/apache2/logs/%Y%m/online.sso.sina.com.cn-80-error_log.%Y%m%d 86400 480
 root     31472  0.0  0.0  23524   692 ?        S    Jul10   0:00 /data1/apache2/bin/rotatelogs /data1/apache2/logs/%Y%m/online.sso.sina.com.cn-80-access_log.%Y%m%d 86400 480
 [root@sso115 ~]#
 
 每个进程里面都没有这个管道
 [root@sso115 ~]# ll /proc/31469/fd
 total 0
 lr-x—— 1 root root 64 Jul 12 10:53 0 -> pipe:[41551705]
 l-wx—— 1 root root 64 Jul 12 10:53 1 -> /dev/null
 l-wx—— 1 root root 64 Jul 12 10:53 2 -> /data1/apache2/logs/error_log

 [root@sso115 ~]# ll /proc/31470/fd
 total 0
 lr-x—— 1 root root 64 Jul 12 10:53 0 -> pipe:[41551706]
 l-wx—— 1 root root 64 Jul 12 10:53 1 -> /dev/null
 l-wx—— 1 root root 64 Jul 12 10:53 2 -> /data1/apache2/logs/error_log
 [root@sso115 ~]#

 [root@sso115 ~]# ll /proc/31472/fd
 total 0
 lr-x—— 1 root root 64 Jul 12 10:53 0 -> pipe:[41551708]
 l-wx—— 1 root root 64 Jul 12 10:53 1 -> /dev/null
 l-wx—— 1 root root 64 Jul 12 10:53 2 -> /data1/apache2/logs/error_log
 [root@sso115 ~]#

 显然,那个rotatelogs进程肯定是被谁给杀掉了,或者是出现意外死亡了;
 查了一下系统log,有看了一下用户的.bash_history 都没有发现和rotatelogs相关的信息

6. 没法查下去了,不过可以做一个测试,就是把rotatelogs进程杀掉,是否就肯定出现这种现象
 使用graceful的办法重启apache,原以为不能凑效,因为请求都是为处理完的,而且不可能处理完的;但是还是都死掉了

7. 重启apache,两个虚拟机,四个rotatelogs 进程; 试图杀死一个rotatelogs进程,但总是立即又出现了一个新的,以为该进程具有自派生机制,
 就用 kill -9 来杀,结果还是立即重新启动一个;
 观察了一下新的进程的ppid,发现时apache守护进程的pid,于是用strace监视一下apache的守护进程; 因为rotatelogs 进程是apache守护
 进程的子进程,所以rotatelogs进程死掉的时候会给apache守护进程发送一个信号,apache守护进程就可以根据自己保存的管道在启动一个
 rotatelogs进程,于是这个进程就有了杀不死的功能了。
 可以用这个办法做杀不死进程。
 
 跟踪apache守护进程的主要信息
 22934 14:34:35.057195 wait4(-1, [{WIFSIGNALED(s) && WTERMSIG(s) == SIGKILL}], WNOHANG|WSTOPPED, NULL) = 31358
 22934 14:34:35.057365 write(2, "piped log program \’/data1/apache"…, 154) = 154
 22934 14:34:35.057490 dup(10)           = 14
 22934 14:34:35.057561 dup(11)           = 15
 22934 14:34:35.057619 dup(1)            = 16
 22934 14:34:35.057689 dup(2)            = 17
 22934 14:34:35.057893 access("/data1/apache2/bin/rotatelogs", X_OK) = 0
 22934 14:34:35.057991 clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x2aaaab123c70) = 31463

应用程序如何立即知道网络的连接状态

当网络断开时,UC可以立即知道,MSN也能立即知道;

当网络重新已连接时,UC没有立即发现,MSN能立即发现。

为什么呢?MSN是如何立即知道网络状态的变化的呢?

 

google了一下,发现一篇相关的文章:http://www.flextheworld.com/2009/01/adobe-air-web-status.html/comment-page-1

它使用了每3s测试一次网络状态的办法,显然这没有实现“立即”,更可恨的是,它是用别人的网页(google的首页)来测试的;可能这人脑袋被驴踢过。

 

继续寻找答案,感觉是系统底层提供了这样的事件通知。

看一下这篇文章:http://blog.csdn.net/luozhenyu/archive/2009/04/27/4130223.aspx

是C#写的一个例子,基本原理是调用系统的API,当然是.net Framework 里的方法,检查网络连接的状态,至少这种检查是不需要真正连网的,所以循环检查是可以接受的。

 还有就是可以直接调用windows的API,可能是:InternetGetConnectedState函数