造船材料,有碳素钢、合金钢、铸铁、船用钢、有色金属及其合金,以及船用型材、板材及管材等船用金属材料。
船用钢指用于制造海船和内河船舶船体结构用的钢,通常为优质碳素钢和优质低合金钢。船用钢要求有一定的强度、韧性和 、一定的耐低温及耐腐蚀性能,并要求有较好的焊接性能。
常用的 船体结构钢有GB712规定的一般强度钢(A、B、D、E级)钢板, 高强度钢(AH32、DH32、EH32、AH36、DH36、EH36 级)钢板; GB5312规定的船舶用优质碳素钢(CIO、C20)钢管;GB9945规 定的造船用A、B级钢球扁钢等。
匈牙利造船业近年来取得了长足的发展。通过科技创新、质量优化和市场拓展,匈牙利造船企业在国际船舶制造业中逐渐崭露头角。作为一个欧洲内陆国家,匈牙利凭借其经济政策、地理优势和优秀的人才,成功地建立起了一支竞争力强的造船队伍。
匈牙利造船业起源于19世纪中叶。最初,匈牙利的造船业主要是为了满足国内需求,尤其是多瑙河和图尔河的运输需求。然而,在社会主义时期,匈牙利造船业经历了一段曲折的发展历程。随着市场经济的引入和私有化改革的推进,匈牙利造船业焕发出新的生机。
一方面,匈牙利在人才培养方面走在了前列。匈牙利拥有世界一流的船舶工程师和专业技术人才,为造船业提供了坚实的人才基础。另一方面,匈牙利的地理位置使其成为了一个重要的内陆航运中心。多瑙河和图尔河等河流使得匈牙利可以将造船产业与航运业相结合,形成了独特的优势。
此外,匈牙利的造船企业还积极引进国外先进的造船技术和设备。通过引进和吸收先进的技术,匈牙利的造船企业能够在质量和效率上保持领先地位。匈牙利造船企业追求卓越,不断提升自身的技术实力和产品质量。
随着全球经济的不断发展,海洋运输需求不断增加,匈牙利造船业面临着良好的发展机遇。匈牙利造船企业将继续加大技术创新和产品研发的力度,不断提高竞争力。
另外,匈牙利在保持质量的同时,也注重环境保护。匈牙利造船企业积极推动绿色制造,致力于减少对环境的影响,提高可持续发展能力。
此外,匈牙利还积极发展与其他国家之间的合作。通过与国际大型造船企业的合作,匈牙利的造船企业能够借鉴和吸取其他国家的先进经验,加速自身的发展步伐。
匈牙利造船业的崛起为国际船舶制造业注入了新的活力。匈牙利的优势在于其人才、地理位置和先进的技术设备,这些因素使得匈牙利的造船企业在市场竞争中占据一席之地。随着未来全球航运市场的不断扩大,匈牙利造船业有望迎来更广阔的发展前景。
以上所述是关于匈牙利造船业的一篇博客文章,旨在介绍匈牙利造船业近年来取得的长足发展。通过科技创新、质量优化和市场拓展,匈牙利的造船企业在国际船舶制造业中逐渐崭露头角。匈牙利凭借其出色的人才、地理优势和引进的先进技术设备,成功建立了一支竞争力强的造船队伍。 文章首先回顾了匈牙利造船业的历史,表明其起源于19世纪中叶,最初是为了满足国内的运输需求。然而,在社会主义时期,匈牙利造船业经历了曲折的发展历程。随着市场经济的引入和私有化改革的推进,匈牙利造船业焕发出新的生机。 匈牙利造船业的优势主要体现在人才培养和地理位置方面。匈牙利拥有世界一流的船舶工程师和专业技术人才,为造船业提供了坚实的人才基础。同时,匈牙利的地理位置使其成为了一个重要的内陆航运中心,通过与河流相结合,匈牙利形成了独特的优势。 文章还指出,匈牙利的造船企业积极引进国外先进的造船技术和设备。通过引进和吸收先进的技术,匈牙利的造船企业在质量和效率上保持了领先地位。匈牙利造船企业追求卓越,并不断提升自身的技术实力和产品质量。 文章进一步分析了匈牙利造船业的发展前景。随着全球经济的不断发展,海洋运输需求不断增加,匈牙利造船业将面临良好的发展机遇。匈牙利造船企业将继续加大技术创新和产品研发的力度,进一步提高竞争力。同时,匈牙利也注重环境保护,积极推动绿色制造,致力于减少对环境的影响,提高可持续发展能力。此外,匈牙利还积极发展与其他国家之间的合作,借鉴他国的先进经验,加速自身的发展步伐。 总而言之,匈牙利造船业的崛起为国际船舶制造业注入了新的活力。凭借其人才、地理位置和先进的技术设备,匈牙利的造船企业在市场竞争中占据一席之地。随着未来全球航运市场的不断扩大,匈牙利造船业有望迎来更广阔的发展前景。你好,亲爱的读者们!今天我们要为大家带来一个有趣的话题,那就是“梦见水里造船”。作为一个常常出现在我们梦境中的场景,梦见水里造船究竟代表着什么含义呢?下面就让我们一起来探索一下吧!
在解梦学中,梦境往往有着深刻的象征意义。梦见水里造船可以被解读为一种积极的象征,象征着梦境者的创造力和冒险精神。水是情感和无意识的象征,而造船则代表着创造和建设。因此,梦见水里造船可以被理解为在情感领域或潜意识中,梦境者正在积极探索新的创造力和建设机会。
此外,梦见水里造船还可能与个人的生活态度和心理状态有关。造船需要勇气和决心,它暗示梦境者具备克服困难和面对挑战的能力。如果你梦见自己在水中造船,并成功地完成了它,那么这可能预示着你在现实生活中将面对一些重要的机遇和挑战,需要你全力以赴、勇往直前。
梦见水里造船的具体情境和细节也会影响梦境的解读。以下是一些常见情境的解释:
除了梦见水里造船本身的象征意义之外,还有一些与梦境相关的象征意义值得我们探讨。
首先,水作为情感和无意识的象征,可能在梦境中代表你的情感状态和潜意识的思绪。如果你在梦中感觉水非常平静和宁静,那么可能暗示你在现实生活中心情平和,拥有良好的情感状态。相反,如果你在梦中感觉水很汹涌和波动,那么可能意味着你内心的情感正在经历一些动荡和波折。
其次,船作为一个工具和交通工具的象征,代表着梦境者的行动力和前进的动力。如果你梦见船在水中顺利航行,那么这可能预示你在现实生活中将迎来一段顺利和平稳的旅程。如果你梦见船在水中漂泊不定,或者遭遇一些航行困难,那么这可能预示你在现实生活中可能会遇到一些阻碍和挑战。
当你梦见水里造船时,你可以考虑以下方法来应对这个梦境:
总之,梦见水里造船是一个具有积极象征意义的梦境,代表着创造力、冒险精神和前进动力。通过理解梦境中的细节和情境,我们可以更好地了解自己的内心世界和潜意识。希望以上内容能够对你有所启发,谢谢阅读!
加尔各答造船是印度造船业的重要组成部分。位于印度东北部的加尔各答,是印度最大的工业城市之一,也是东印度公司的总部所在地。自19世纪末以来,加尔各答造船业就开始蓬勃发展,如今已成为印度造船业的领军城市之一。
加尔各答造船业的历史可以追溯到18世纪末。当时,东印度公司在加尔各答设立了一个造船厂,用于修复和建造船只。随着东印度公司的发展,加尔各答造船业逐渐崛起。
19世纪末,随着工业革命的影响,加尔各答造船业迎来了快速发展的时期。许多造船厂相继在加尔各答成立,并开始建造各类船只,包括商船、军舰以及渡轮等。加尔各答的造船厂在当时是亚洲规模最大、装备最先进的造船厂之一。
然而,在第二次世界大战期间,加尔各答造船业经历了一段低迷时期。许多造船厂被摧毁或受损严重,造船业逐渐衰落。直到印度独立后,加尔各答造船业才得到了重振。
如今,加尔各答造船业已经恢复并且持续发展。许多现代化的造船厂在加尔各答建立,采用最先进的技术和设备,生产各种类型的船只。加尔各答的造船业不仅满足国内需求,还出口到世界各地。
加尔各答造船业在印度的造船业中扮演着重要的角色。它为印度经济的发展做出了巨大贡献,提供了大量的就业机会,吸引了全国和国际的投资。许多国际知名造船公司也在加尔各答设立分支机构,与当地的造船厂合作。
加尔各答造船业的发展也带动了相关产业的兴起。许多供应商和服务提供商在加尔各答设立了办事处,为造船业提供所需的材料和服务。同时,该地区的物流和运输业也得到了放大,为船只的运输提供了便利。
展望未来,加尔各答造船业有着广阔的发展前景。随着全球经济的发展和国际贸易的增加,对海运的需求也将逐步增加。加尔各答作为印度东部地区最重要的港口城市之一,将承担起更多的船舶建造任务。
同时,加尔各答的造船厂也将继续引进最新的技术和设备,提高生产能力和产能。在数字化和自动化的推动下,加尔各答造船业将更加高效、环保和竞争力十足。不仅满足国内需求,还将继续扩大对外出口,与其他国家的造船行业展开更紧密的合作。
加尔各答造船业的发展也需要政府的支持和鼓励。政府应加大对造船业的投资,提供更多的优惠政策和税收减免,吸引更多的投资者和企业。同时,政府还应加强技术培训和人才储备,提供专业人才支持,以确保加尔各答造船业的持续发展。
综上所述,加尔各答造船业作为印度造船业的重要组成部分,扮演着重要的角色。它不仅为国内经济做出贡献,也推动了相关产业的发展。展望未来,加尔各答造船业有着广阔的发展前景,将继续发挥其重要作用。
分段造船和总段造船是两种不同的造船方法。分段造船是指将整个船体分为多个独立的部分进行建造,每个部分被称为一个分段,然后将这些分段逐一组装在一起,最终形成完整的船体。而总段造船则是将整个船体分为较少的几个大分段进行建造,每个大分段包含多个小分段,然后将这些大分段组装在一起,形成船体。分段造船和总段造船的区别主要在于分段的数量和大小。分段造船通常需要将船体分为较多的小分段,每个小分段相对独立,可以在不同的地点同时进行建造,这样可以提高生产效率。而总段造船则将船体分为较少的大分段,每个大分段包含多个小分段,这样可以减少分段之间的接缝,提高船体的整体强度和稳定性。总段造船相对于分段造船来说,需要更大的建造场地和更高的技术要求,但可以减少分段之间的连接工作,提高建造效率。总之,分段造船和总段造船是根据船体建造的不同方式而区分的,每种方法都有其适用的场合和优势。
战舰世界:关于肥前(及以后)的造船厂,各种季票的计算以这次肥前为例,一共26阶段,22阶段可肝,溢出一阶段给400&200,一般九级船价格假定520或20800(12500/313*520约等于20800)。
没门票:不买通行证也能肝阶段,但是船不能拿,最终给个两万煤之类的(就像pt服)或者2个大箱子,2级船和Yahagi照送。
普通通行证门票:20%九级船价格,105或4150dbl(实际4160,便宜你10dbl好了),最终奖励多个船,可以买阶段,每阶段20r或800dbl,26个阶段一个阶段就26分之一的九级船价格,肝和买奖励一样,溢出的阶段,随便给点蚊子腿1天高账几个旗子,或者1个wg箱子之类的东西。
买普通门票,大概105或4150,纯肝,20%价格提船(4/26约等于15%,但是4个阶段启动包为5000),来不及肝了,就按一个阶段20或800补票,也不算很黑吧。
普通门票直接提船,总共九级船价格*1.2(0.2+1),大概625或24960,因为是期间限定所以贵一些,也没太大问题吧,也不是强迫消费,买了这个就没必要肝了,因为肝就给些蚊子腿。
高级通行证门票:40%九级船价格,210或8300dbl(实为8320,便宜你20好了)dbl,最终奖励多个船,买了高级门票之后可以买高级阶段,比普通阶段贵,1.6倍的价格,32或1250(实为1280,便宜你30好了),有高级通行证再买或者肝阶段就给额外资源,直接买高级阶段给资源的多,400&200,肝就给的少,40&20。高级门票也可以买普通阶段,买普通阶段也给40&20。有高级通行证的情况下,建造完毕之后再肝阶段,仍然会给40&20+普通票的蚊子腿。
1. 买高级门票+26高级阶段一共九级船*2(0.4+1.6)价格,1040或40800dbl(8300+1250*26),直接提奖励400&200*26=10400&5200,如果愿意再肝多40&20*26。
2. 买高级门票+纯肝,约210,比普通门票+肝 多花20%的九级船价格,约等于104块买1k研发500钢,按官方定价(只考虑全款提船情况),41150/22约等于1870,一个阶段400&200,1870*2.5=4676金币,直接买大概是4676/12500*313约等于117,我这里是104或4150dbl,略微便宜一点。
3. 买高级门票+买26普通阶段+肝,约520*1.4(0.4+1)=730,一共多得40&20*26*2=2080研发点1040钢,扣除常驻九级船价格,花了大概210块钱,买了这些资源
中国船厂100名
1.大连船舶重工集团有限公司
2.上海外高桥造船有限公司
3.沪东中华造船(集团)有限公司
4.江苏新世纪造船股份有限公司
5.渤海船舶重工有限责任公司
6.广州广船国际股份有限公司
7.江苏扬子江船厂有限公司
8.江南造船(集团)有限责任公司
9.南通中远川崎船舶工程有限公司
10.上海船厂船舶有限公司
11.武昌造船厂
12.浙江造船有限公司
13.中国长江航运集团金陵船厂
14.扬州大洋造船有限公司
15.江苏熔盛重工有限公司
16.浙江欧华造船有限公司
17.中国长江航运集团青山船厂
18.扬帆集团有限公司
19.泰州口岸船舶有限公司
20.天津新港船舶重工有限责任公司
21.广州黄埔造船厂
22.青岛北海船舶重工有限责任公司
23.常石集团(舟山)造船有限公司
24.泰州三福船舶工程有限公司
25.福建省马尾造船股份有限公司
26.江苏新时代造船有限公司
27.大连今冈船务工程有限公司
28.江苏东方重工有限公司
29.厦门船舶重工股份有限公司
30.东方造船集团有限公司
31.南通惠港造船有限公司
32.黄海造船有限公司
33.烟台来福士海洋工程有限公司
34.扬州科进船业有限公司
35.舜天造船(扬州)有限公司
36.中国人民解放军第4808厂
37.福建省东南造船厂
38.天津新河船舶重工有限责任公司
39.江苏省镇江船厂有限责任公司
40.国营川东造船厂
41.大连辽南船厂(中国人民解放军第四八一零工
42.江苏韩通船舶重工有限公司
43.浙江海丰造船有限公司
44.芜湖新联造船有限公司
45.中国长江航运集团江东船厂
46.江西江洲联合造船有限责任公司
47.淮滨县江淮船业有限公司
48.山东省威海船厂
49.辽宁宏冠船业有限公司
50.大连船舶重工舾装有限公司
51.九江银星造船有限公司
52.山东大鱼岛造船有限公司
53.荣成市寻山兴海造船有限责任公司
54.浙江天时造船有限公司
55.南通明德重工有限公司
56.宁波新乐造船有限公司
57.中船桂江造船有限公司
58.南京武家嘴船舶制造有限公司
59.扬州龙川船业有限公司
60.台州枫叶船业有限公司
61.浙江振兴船舶修造有限公司(温岭市东升造船厂)
62.广州航通船业有限公司
63.国营西江造船厂
64.南通亚华船舶制造有限公司
65.南京东嘉船舶制造有限公司
66.浙江方圆造船有限公司
67.中海工业(广州)有限公司
68.浙江宏信船舶有限公司
69.青岛现代造船有限公司
70.临海市江海造船有限公司
71.临海市宏盛造船有限公司
72.南通港闸船舶制造有限公司
73.重庆东风船舶工业公司
74.吉宝(南通)船厂有限公司
75.重庆市泽胜船务(集团)有限公司
76.南京永华船业有限公司
77.湖北华舟有限公司
78.荣成伽耶船业有限公司
79.宁波市东方船舶修造有限公司
80.中国长江航运集团宜昌船厂
81.浙江合兴船厂
82.九江同方江新造船有限责任公司
83.荣成市泓运船业有限公司
84.宜昌达门船舶有限公司
85.国营青岛造船厂
86.靖江南洋船舶制造有限公司
87.温岭市长宏造船有限公司
88.荣成市石岛东海造船有限公司
89.浙江腾龙造船厂
90.台州海滨船舶修造有限公司
91.上海爱德华造船有限公司
92.临海市航畅船舶制造有限公司
93.浙江金港船业股份有限公司
94.临海市回浦船舶修造有限公司
95.乳山市造船有限责任公司
96.宁波清源造船有限公司
97.广州市番禺粤新造船有限公司
98.浙江振宇船业有限公司
99.枣庄扬帆船舶有限公司
100.蓬莱市渤海造船有限公司
中国船厂分布(按地区)
上海市
沪东中华造船(集团)公司、江南造船(集团)公司、上海外高桥船务工程公司、东海船舶修造厂、上海爱德华造船有限公司、上海船厂、上海浦东大道4805厂,立新船厂,外轮修理厂,立丰船厂,塘口船舶修理厂、上船澄西,
江苏省
中海工业(江苏)有限公司、南通中远川崎船舶工程有限公司、江苏新世纪造船股份有限公司、江苏扬子江船厂有限公司、中商集团口岸船舶工业公司、长江航运集团金陵船厂、江苏省镇江船厂、澄西船厂,扬州大洋船厂,扬子江船厂、新世纪、仪征新东海,扬州科进,东方船厂,南京金陵,南京五家嘴,南京胜华,南京亚泰,口岸,南通中远川崎,新时代,新扬子,南洋,南通明德重工,南通港闸,南通荣胜,仪征五洋船厂,仪征华为,江苏舜天,江苏索普,泰州三福
辽宁省
大连新船重工有限责任公司、大连造船厂、渤海船舶重工有限公司、大连辽南船厂、辽宁旅顺滨海船厂、中远船厂,STX、宏冠等、大连重工,大连新厂,大连大正,七星造船,山海关船厂,鸿寇船厂、新加坡万邦
广东省
广州广船国际股份有限公司、广州文冲船厂有限公司、黄埔造船厂、新中国船厂有限公司、汕头大洋船舶工业总公司、广东省新会造船厂、友联船厂
浙江省
浙江船厂、舟山扬帆船舶工业集团公司、杭州东风船舶有限公司、宁波恒富船业(集团)有限公司北仑船厂、国营海东造船厂、象山船厂,舟山船厂,台州中远,台州五洲,浩友船厂,杭州东风,宁波新乐,海东造船厂,浙江振宇、浙江和润集团
山东省
烟台莱佛士造船有限公司、青岛北海船厂、山东黄海造船有限公司、青岛前进船厂、国营青岛造船厂、烟台北方造船厂、山东威海造船厂、荣城市造船工业集团公司、大渔岛船厂、神飞船厂、百步亭船厂、三星船厂、乳山船厂、青岛现代,西霞口船厂,青岛灵山船厂,蓬莱渤海等
广西壮族自治区
西江造船厂、桂江造船厂、梧州造船厂
安徽省
芜湖造船厂(新联)、长江航运集团江东造船厂、芜湖大江船舶有限公司、蚌埠船厂
湖北省
武昌造船厂、长江航运集团青山船厂、宜昌船厂、南华高速船舶有限公司、青山
天津市
天津市造船厂、天津新港船厂、天津新河船厂
福建省
马尾造船股份有限公司、厦门造船厂、福建省东南造船厂、龙海国安船业有限公司、厦门重工,福宁重工,海军4807(白马),泉州船厂
重庆市
国营重庆造船厂、长江航运集团川江船厂、国营船东造船厂、川东船厂
江西省
江洲联合,九江银星,江新
韩国三星重工业株式会社投资建设的三星重工业(荣成)有限公司将落户山东省荣成市。三星重工业因为其国内现有造船厂扩建用地解决不了,决定在威海荣成市投资建一座较大的造船厂,船厂占地面积为200万平方米,相当于其在韩国国内造船厂面积400万平方米的一半,总投资3.5亿美元。
韩国大宇造船海洋(山东)有限公司位于烟台,是韩国大宇造船海洋株式会社(DSME)于2005年在烟台经济技术开发区独资创建的大型船舶制造企业。大宇造船海洋(山东)有限公司原设计为一个综合船厂,并将作为支持大宇造船海洋工程公司玉浦船厂的生产基地。然而,由于中国政府对外商投资的一些限制该设计没有得到中国政府的批准,该船厂一直为一个船体分段制造厂。而随着劳动力成本上升和中国税收优惠的解除,以及国内需求下降,业务分流还是相当必要的。此外,转换成综合性船厂的可负担额外成本在它的决定中也起了很重要的作用。
烟台有莱佛士船业有限公司,就是改制以前的烟台造船厂,这是中国唯一一个由外资控股、100%按国外先进模式进行管理的公司,总部在新加坡,建造的船舶以海洋工程、游艇、浮船坞为主.
大型的船厂还有青岛北海船舶重工有限责任公司(简称“北船重工”),2004年7月,中船重工集团与青岛市政府签订全面合作协议,决定在青岛海西湾建设造修船基地,两座30万吨、15万吨的两座修船坞已于2005年7月建成投产。
青岛海西湾造修船基地正在建造中国迄今为止坞容量最大的两座分别为30万吨和50万吨的造船坞,建成投产后,可建造超级油轮、海岬型散装货船、8000箱集装箱船、海上石油钻井平台等,计划于2009年4月1日完工,工期为25个月。
山东省黄海造船有限公司(黄海船厂),以造渔船为主,包括拖网渔船、金枪鱼钓船等。另外还有中小船厂比如灵山船厂、威海船厂(目前正在搬迁扩建)。
另外还有山东威海的海军的4809厂、海军的另一个船厂4808厂在青岛,除此之外还有还有4808工厂威海修船厂。
西霞口船业有限公司隶属于中国西霞口集团公司,是一家集修船、造船于一体的大型企业。以建造和修理各类渔船、货船、油船和工程船舶为主。
扬帆公司即原来的青岛造船厂,青岛造船厂是始建于1949年的老牌造船厂,曾经是全国惟一一家生产水面战斗舰艇的地方企业、生产了山东省第一艘5000载重吨的杂货船。如今,青岛造船厂已改制成为青岛扬帆船舶制造有限公司。
该厂位于四川路25号,现有职工近千人,占地面积14.8万平方米,其中建筑面积6.5万平方米,厂房如今大都已经破烂不堪。造船厂是建国后青岛首批重工企业,生产了山东省第一艘5000吨货船,全国第一艘浅吃水喷水推进多用拖船、第一艘大马力电力推进多用拖船、第一艘沿海玻璃幕墙豪华旅游观光客船,有着辉煌的历史。
之前看了Mahout官方示例 20news 的调用实现;于是想根据示例的流程实现其他例子。网上看到了一个关于天气适不适合打羽毛球的例子。
训练数据:
Day Outlook Temperature Humidity Wind PlayTennis
D1 Sunny Hot High Weak No
D2 Sunny Hot High Strong No
D3 Overcast Hot High Weak Yes
D4 Rain Mild High Weak Yes
D5 Rain Cool Normal Weak Yes
D6 Rain Cool Normal Strong No
D7 Overcast Cool Normal Strong Yes
D8 Sunny Mild High Weak No
D9 Sunny Cool Normal Weak Yes
D10 Rain Mild Normal Weak Yes
D11 Sunny Mild Normal Strong Yes
D12 Overcast Mild High Strong Yes
D13 Overcast Hot Normal Weak Yes
D14 Rain Mild High Strong No
检测数据:
sunny,hot,high,weak
结果:
Yes=》 0.007039
No=》 0.027418
于是使用Java代码调用Mahout的工具类实现分类。
基本思想:
1. 构造分类数据。
2. 使用Mahout工具类进行训练,得到训练模型。
3。将要检测数据转换成vector数据。
4. 分类器对vector数据进行分类。
接下来贴下我的代码实现=》
1. 构造分类数据:
在hdfs主要创建一个文件夹路径 /zhoujainfeng/playtennis/input 并将分类文件夹 no 和 yes 的数据传到hdfs上面。
数据文件格式,如D1文件内容: Sunny Hot High Weak
2. 使用Mahout工具类进行训练,得到训练模型。
3。将要检测数据转换成vector数据。
4. 分类器对vector数据进行分类。
这三步,代码我就一次全贴出来;主要是两个类 PlayTennis1 和 BayesCheckData = =》
package myTesting.bayes;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.util.ToolRunner;
import org.apache.mahout.classifier.naivebayes.training.TrainNaiveBayesJob;
import org.apache.mahout.text.SequenceFilesFromDirectory;
import org.apache.mahout.vectorizer.SparseVectorsFromSequenceFiles;
public class PlayTennis1 {
private static final String WORK_DIR = "hdfs://192.168.9.72:9000/zhoujianfeng/playtennis";
/*
* 测试代码
*/
public static void main(String[] args) {
//将训练数据转换成 vector数据
makeTrainVector();
//产生训练模型
makeModel(false);
//测试检测数据
BayesCheckData.printResult();
}
public static void makeCheckVector(){
//将测试数据转换成序列化文件
try {
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String input = WORK_DIR+Path.SEPARATOR+"testinput";
String output = WORK_DIR+Path.SEPARATOR+"tennis-test-seq";
Path in = new Path(input);
Path out = new Path(output);
FileSystem fs = FileSystem.get(conf);
if(fs.exists(in)){
if(fs.exists(out)){
//boolean参数是,是否递归删除的意思
fs.delete(out, true);
}
SequenceFilesFromDirectory sffd = new SequenceFilesFromDirectory();
String[] params = new String[]{"-i",input,"-o",output,"-ow"};
ToolRunner.run(sffd, params);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("文件序列化失败!");
System.exit(1);
}
//将序列化文件转换成向量文件
try {
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String input = WORK_DIR+Path.SEPARATOR+"tennis-test-seq";
String output = WORK_DIR+Path.SEPARATOR+"tennis-test-vectors";
Path in = new Path(input);
Path out = new Path(output);
FileSystem fs = FileSystem.get(conf);
if(fs.exists(in)){
if(fs.exists(out)){
//boolean参数是,是否递归删除的意思
fs.delete(out, true);
}
SparseVectorsFromSequenceFiles svfsf = new SparseVectorsFromSequenceFiles();
String[] params = new String[]{"-i",input,"-o",output,"-lnorm","-nv","-wt","tfidf"};
ToolRunner.run(svfsf, params);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("序列化文件转换成向量失败!");
System.out.println(2);
}
}
public static void makeTrainVector(){
//将测试数据转换成序列化文件
try {
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String input = WORK_DIR+Path.SEPARATOR+"input";
String output = WORK_DIR+Path.SEPARATOR+"tennis-seq";
Path in = new Path(input);
Path out = new Path(output);
FileSystem fs = FileSystem.get(conf);
if(fs.exists(in)){
if(fs.exists(out)){
//boolean参数是,是否递归删除的意思
fs.delete(out, true);
}
SequenceFilesFromDirectory sffd = new SequenceFilesFromDirectory();
String[] params = new String[]{"-i",input,"-o",output,"-ow"};
ToolRunner.run(sffd, params);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("文件序列化失败!");
System.exit(1);
}
//将序列化文件转换成向量文件
try {
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String input = WORK_DIR+Path.SEPARATOR+"tennis-seq";
String output = WORK_DIR+Path.SEPARATOR+"tennis-vectors";
Path in = new Path(input);
Path out = new Path(output);
FileSystem fs = FileSystem.get(conf);
if(fs.exists(in)){
if(fs.exists(out)){
//boolean参数是,是否递归删除的意思
fs.delete(out, true);
}
SparseVectorsFromSequenceFiles svfsf = new SparseVectorsFromSequenceFiles();
String[] params = new String[]{"-i",input,"-o",output,"-lnorm","-nv","-wt","tfidf"};
ToolRunner.run(svfsf, params);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("序列化文件转换成向量失败!");
System.out.println(2);
}
}
public static void makeModel(boolean completelyNB){
try {
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String input = WORK_DIR+Path.SEPARATOR+"tennis-vectors"+Path.SEPARATOR+"tfidf-vectors";
String model = WORK_DIR+Path.SEPARATOR+"model";
String labelindex = WORK_DIR+Path.SEPARATOR+"labelindex";
Path in = new Path(input);
Path out = new Path(model);
Path label = new Path(labelindex);
FileSystem fs = FileSystem.get(conf);
if(fs.exists(in)){
if(fs.exists(out)){
//boolean参数是,是否递归删除的意思
fs.delete(out, true);
}
if(fs.exists(label)){
//boolean参数是,是否递归删除的意思
fs.delete(label, true);
}
TrainNaiveBayesJob tnbj = new TrainNaiveBayesJob();
String[] params =null;
if(completelyNB){
params = new String[]{"-i",input,"-el","-o",model,"-li",labelindex,"-ow","-c"};
}else{
params = new String[]{"-i",input,"-el","-o",model,"-li",labelindex,"-ow"};
}
ToolRunner.run(tnbj, params);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("生成训练模型失败!");
System.exit(3);
}
}
}
package myTesting.bayes;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.PathFilter;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.mahout.classifier.naivebayes.BayesUtils;
import org.apache.mahout.classifier.naivebayes.NaiveBayesModel;
import org.apache.mahout.classifier.naivebayes.StandardNaiveBayesClassifier;
import org.apache.mahout.common.Pair;
import org.apache.mahout.common.iterator.sequencefile.PathType;
import org.apache.mahout.common.iterator.sequencefile.SequenceFileDirIterable;
import org.apache.mahout.math.RandomAccessSparseVector;
import org.apache.mahout.math.Vector;
import org.apache.mahout.math.Vector.Element;
import org.apache.mahout.vectorizer.TFIDF;
import com.google.common.collect.ConcurrentHashMultiset;
import com.google.common.collect.Multiset;
public class BayesCheckData {
private static StandardNaiveBayesClassifier classifier;
private static Map<String, Integer> dictionary;
private static Map<Integer, Long> documentFrequency;
private static Map<Integer, String> labelIndex;
public void init(Configuration conf){
try {
String modelPath = "/zhoujianfeng/playtennis/model";
String dictionaryPath = "/zhoujianfeng/playtennis/tennis-vectors/dictionary.file-0";
String documentFrequencyPath = "/zhoujianfeng/playtennis/tennis-vectors/df-count";
String labelIndexPath = "/zhoujianfeng/playtennis/labelindex";
dictionary = readDictionnary(conf, new Path(dictionaryPath));
documentFrequency = readDocumentFrequency(conf, new Path(documentFrequencyPath));
labelIndex = BayesUtils.readLabelIndex(conf, new Path(labelIndexPath));
NaiveBayesModel model = NaiveBayesModel.materialize(new Path(modelPath), conf);
classifier = new StandardNaiveBayesClassifier(model);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("检测数据构造成vectors初始化时报错。。。。");
System.exit(4);
}
}
/**
* 加载字典文件,Key: TermValue; Value:TermID
* @param conf
* @param dictionnaryDir
* @return
*/
private static Map<String, Integer> readDictionnary(Configuration conf, Path dictionnaryDir) {
Map<String, Integer> dictionnary = new HashMap<String, Integer>();
PathFilter filter = new PathFilter() {
@Override
public boolean accept(Path path) {
String name = path.getName();
return name.startsWith("dictionary.file");
}
};
for (Pair<Text, IntWritable> pair : new SequenceFileDirIterable<Text, IntWritable>(dictionnaryDir, PathType.LIST, filter, conf)) {
dictionnary.put(pair.getFirst().toString(), pair.getSecond().get());
}
return dictionnary;
}
/**
* 加载df-count目录下TermDoc频率文件,Key: TermID; Value:DocFreq
* @param conf
* @param dictionnaryDir
* @return
*/
private static Map<Integer, Long> readDocumentFrequency(Configuration conf, Path documentFrequencyDir) {
Map<Integer, Long> documentFrequency = new HashMap<Integer, Long>();
PathFilter filter = new PathFilter() {
@Override
public boolean accept(Path path) {
return path.getName().startsWith("part-r");
}
};
for (Pair<IntWritable, LongWritable> pair : new SequenceFileDirIterable<IntWritable, LongWritable>(documentFrequencyDir, PathType.LIST, filter, conf)) {
documentFrequency.put(pair.getFirst().get(), pair.getSecond().get());
}
return documentFrequency;
}
public static String getCheckResult(){
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String classify = "NaN";
BayesCheckData cdv = new BayesCheckData();
cdv.init(conf);
System.out.println("init done...............");
Vector vector = new RandomAccessSparseVector(10000);
TFIDF tfidf = new TFIDF();
//sunny,hot,high,weak
Multiset<String> words = ConcurrentHashMultiset.create();
words.add("sunny",1);
words.add("hot",1);
words.add("high",1);
words.add("weak",1);
int documentCount = documentFrequency.get(-1).intValue(); // key=-1时表示总文档数
for (Multiset.Entry<String> entry : words.entrySet()) {
String word = entry.getElement();
int count = entry.getCount();
Integer wordId = dictionary.get(word); // 需要从dictionary.file-0文件(tf-vector)下得到wordID,
if (StringUtils.isEmpty(wordId.toString())){
continue;
}
if (documentFrequency.get(wordId) == null){
continue;
}
Long freq = documentFrequency.get(wordId);
double tfIdfValue = tfidf.calculate(count, freq.intValue(), 1, documentCount);
vector.setQuick(wordId, tfIdfValue);
}
// 利用贝叶斯算法开始分类,并提取得分最好的分类label
Vector resultVector = classifier.classifyFull(vector);
double bestScore = -Double.MAX_VALUE;
int bestCategoryId = -1;
for(Element element: resultVector.all()) {
int categoryId = element.index();
double score = element.get();
System.out.println("categoryId:"+categoryId+" score:"+score);
if (score > bestScore) {
bestScore = score;
bestCategoryId = categoryId;
}
}
classify = labelIndex.get(bestCategoryId)+"(categoryId="+bestCategoryId+")";
return classify;
}
public static void printResult(){
System.out.println("检测所属类别是:"+getCheckResult());
}
}
1. 请介绍一下WebGIS的概念和作用,以及在实际应用中的优势和挑战。
WebGIS是一种基于Web技术的地理信息系统,通过将地理数据和功能以可视化的方式呈现在Web浏览器中,实现地理空间数据的共享和分析。它可以用于地图浏览、空间查询、地理分析等多种应用场景。WebGIS的优势包括易于访问、跨平台、实时更新、可定制性强等,但也面临着数据安全性、性能优化、用户体验等挑战。
2. 请谈谈您在WebGIS开发方面的经验和技能。
我在WebGIS开发方面有丰富的经验和技能。我熟悉常用的WebGIS开发框架和工具,如ArcGIS API for JavaScript、Leaflet、OpenLayers等。我能够使用HTML、CSS和JavaScript等前端技术进行地图展示和交互设计,并能够使用后端技术如Python、Java等进行地理数据处理和分析。我还具备数据库管理和地理空间数据建模的能力,能够设计和优化WebGIS系统的架构。
3. 请描述一下您在以往项目中使用WebGIS解决的具体问题和取得的成果。
在以往的项目中,我使用WebGIS解决了许多具体问题并取得了显著的成果。例如,在一次城市规划项目中,我开发了一个基于WebGIS的交通流量分析系统,帮助规划师们评估不同交通方案的效果。另外,在一次环境监测项目中,我使用WebGIS技术实现了实时的空气质量监测和预警系统,提供了准确的空气质量数据和可视化的分析结果,帮助政府和公众做出相应的决策。
4. 请谈谈您对WebGIS未来发展的看法和期望。
我认为WebGIS在未来会继续发展壮大。随着云计算、大数据和人工智能等技术的不断进步,WebGIS将能够处理更大规模的地理数据、提供更丰富的地理分析功能,并与其他领域的技术进行深度融合。我期望未来的WebGIS能够更加智能化、个性化,为用户提供更好的地理信息服务,助力各行各业的决策和发展。
这块您需要了解下stm32等单片机的基本编程和简单的硬件设计,最好能够了解模电和数电相关的知识更好,还有能够会做操作系统,简单的有ucos,freeRTOS等等。最好能够使用PCB画图软件以及keil4等软件。希望对您能够有用。