Ⅰ java培训哪个机构比较好
Java课程培训哪家好?在这里不给你推荐任何一家培训机构,提点意见:
1、如果选择一个靠谱的Java培训机构,你可以从培训班的规模,课程、费用、就业、师资、口碑等多个方面去考虑,当然,如果能实际去试听,那么,实地考察是最重要的!这才是最能对比出哪家机构好!
2、如果你确定了要去培训机构学习,那么请做好准备,培训机构学费还是需要两三万的,脱产学习,如果你没有做好死命学,不学好不睡觉的准备,那么,建议做好准备!毕竟钱花了还是要学到东西的!
3、如果在培训机构学习,那么预习复习很重要,不会的一定要问老师,如果你不问,可能随时都跟不上,学习效果也不好,慢慢的学习就懈怠了!所以,一定要注意预习复习,不会的多问,如果你自己掌握了,也可以去写写博客,加深自己对知识的印象!
另外,我这里有一套Java的成长图谱,你也可以跟着学习(从黑马那边课程上老师给的)
Ⅱ 城市中女性之间的关系是什么关系
诺贝尔经济学奖得主、美国经济学家斯蒂格利茨曾称,中国的城市化是21世纪对世界影响最重大的事件之一。中国城市化的进程,涉及社会的每一个层面,也必然对女性的教育、就业、家庭地位乃至精神气质产生巨大影响。
城市在塑造女性的同时,女性也并非毫无作为,她们在不断成长中,变得更加自信和独立,用自己的力量改变着身处的城市。城市与女性互相成就,在时代的浪潮中携手并进,书写着属于彼此的新篇章。
城市为何让女性如此着迷
女性为什么要进城?
其实大多数女性最初进入城市的目的很简单,就是为了寻找更多的工作机会。乡村能从事的工作以农业生产为主,城市能提供的工作则种类繁多,让女性多了很多选择。
老家在湖南湘西山区的丁萍(化名),如今在省城长沙一家老字号饭店当服务员。饭店生意一直不错,她在这里工作快10年了。虽然有时候会很怀念故乡的山水,但她并不打算回去,因为回去只能继续种地,在山多地少的湘西,种地的收益没法与在城市里打工相比。就算县城她也不想去,因为那里的工作机会远不如省城多。丁萍个子小,种地很吃力,而她在城里的工作虽然也很辛苦,但毕竟对体力要求不高,收入却好很多,她觉得自己可以坚持。进城后,她在这里成家置业,完成了人生中许多重要的事情。她说她喜欢城市,城市改变了她的命运。
其实,城市为女性提供的不仅是工作机会。“城市”是“城”与“市”的组合,最初的“城”是由城墙围合而成的安全封闭空间,而“市”,则是指交易场所。“城”锋袜为女性提供了更有保障更有安全感的生活工作环境,“市”则为女性提供了发展所需要的基本支持。
陈晓(化名)是一名“北漂”,她在北京上的大学,毕业后就留在了北京。虽然地铁很挤,工作很辛苦,合租的房子也有点老旧,但是她却很珍惜现在的生活。湖北老家的堂姐给她打电话,有时候会抱怨,从家里走到干活的地里要经过一段很僻静的山路,让她很害怕。陈晓安慰堂姐,鼓励她也来城市找工作。
因为城市的先进性,“进城”在相当长的一段时间内,是一件令人羡慕的事情。现代化的时尚生活、“城里人”的高端形象,往往成为乡村人们的谈资。能不此竖能留在城市,成为衡量一个女性个人能力的重要标志。而女性自身,也对城市文化充满了渴望。
湖北襄樊的农村女孩贾玲,是很具典型意义的一个样本。2000年,18岁的她为了改变命运,报考了中央戏剧学院和北京电影学院,最终落选。第二年,她再次努力,终于考上了中央戏剧学院。经历了漫长的打拼,她终究得到了认可,成为家户喻晓的喜剧明星,如今又成了着名的新晋女导演。如果贾玲一直留在农村,或许也有一定发展,但很难想象她能拥有现在这样多彩的人生。城市的发展机会是多元化的,城市化程度越高,多元化越明显。
此外,相比农村,城市更加开放,更加包容,能够容纳多种多样的生活方式和人生追求。在城市,人与人的关系更多地建立在合作基础上,而受血缘、家族、邻里的束缚比较少。人们习惯了尊重彼森基大此的习惯和独立,没有太多人会过度干预他人的生活。一个人是单身还是已婚,是坐班还是做自由职业者,有没有固定工作岗位,都属于不宜过问的“个人问题”。城市里的人,有着清晰的生活边界线。
苏北姑娘孙静(化名)今年35岁,如今住在无锡的一个小公寓里,她自称单身生活过得很开心,除了过年回家的那几天。她是个不婚主义者,一个人在城市里,虽然有时候会感到孤独,但城市丰富的生活内容抵消了这种感觉。她努力工作,业余时间则去健身、学习或者旅行,日子过得很充实。而她幼年的伙伴李玉(化名)则早早地结了婚,虽然对象并不那么理想,但也没办法。28岁那年的她并不想结婚,但是经不住父母催逼,还是选择了顺从。毕竟在农村,一个女生快30岁了还不结婚,是会被认为有问题的,甚至家里人会因此觉得抬不起头来。
城市让人失去了传统宗族社会的紧密感,从某个角度来说,人与人之间的关系也许会显得有些“淡漠”,但同时它也给予人们更多的空间。对于女性来说,城市给予的自由度,会让她们在日常生活里更轻松一些,也会让她们在面对人生重大选择的时候,更从容不迫一些。
城市始终是文明的先行者,在文化上对女性有着“天然的友好”。那些在城市接受高等教育的女性,对于这一点更是深有感触,这也是为什么毕业后的她们,会更多地选择留在城市的原因。在城市,她们更能发挥自己的优势,更容易实现自我价值。未来,也许乡村会变得更好,但现阶段,城市承载了女性更多的梦想。
女性在成长中影响着城市的发展
最初的城市,并不属于女性,男性才是城市的主宰。即使在19世纪末的工业城市,女性外出还需要男性陪伴,她们去一趟闹市中心新开张的百货大楼,都像一场小小的冒险。旧时代的女性,很难自主选择人生,“男主外,女主内”的传统观念,让很多女性在家庭的小小圈子里度过了一生,从未涉足外面的世界。别说施展抱负开创不平凡的事业了,她们就算养活自己、经济独立都是不能想象的。
只有在人类进入城市化后,女性的地位才日渐重要起来,女性的自我意识也开始慢慢觉醒。如今,女性迈着自信的步伐,在城市里自如地穿梭,去上班,去购物,去娱乐,去相亲,去做她们想做的一切。在城市里,她们越来越知道自己想要什么,能做什么,她们如鱼得水,游刃有余。就像女作家王安忆在其小说《长恨歌》中所描写的那样,城市使女性再生,女性又对城市进行新的诠释,城市与女性是水乳交融、合而为一的。
2019年底,中国常住人口城镇化率达到了60.6%,城市常住人口达到了8.48亿人。这样快的发展速度,是勤奋的中国人多年努力的结果,而女性作为“半边天”,在这个过程中同样功不可没。国际劳工组织数据显示,2018年中国女性的劳动参与率为61.1%,远超过47.4%的国际平均水平。中国女性的勤奋努力,对于国家经济的发展是不可或缺的,结合我国城市化进程和具体国情,上述数据至少间接说明了中国女性对于城市发展的贡献。
过去,城市在工业化的过程中,吸纳了大量从事轻工业的女工。随着现代化进程的深入,城市对知识女性和服务业女性的需求也在快速增长。现在,女性进入了城市里几乎所有的行业。女性越来越活跃在职场,在城市化伴随的工业革命、信息革命、智能化革命中逐步扩大自己的领域和影响力。
陈鸣(化名)2007年大学毕业后留在北京工作,在一家互联网公司做程序员。那时候公司大部分程序员都是男性,她是绝无仅有的一个女孩子,显得格外引人注目。十年后,她已经跳槽过三家公司,每一次跳槽都涨一次工资,甚至还有了上升的机会。后来,她在一家主做移动阅读的互联网公司安稳地干到了中层。她发现,现在女性程序员越来越多,她再也不是唯一的那个了。陈鸣的经历不是个案,数据显示,程序员领域不再是男性的专属领地了,2018年至2020年,女性程序员的增长率将近70%,涨幅显着。2019年,在互联网行业,女性程序员占比高达17%,这意味着6个程序员中有一位是女性。而在餐饮、卫生、教育、金融等行业,女性从业人员数量已经超过了男性,她们利用自己特有的细腻、温柔、善于沟通的优势,在职场上开疆拓土。
女性不仅是城市的奉献者,还是城市的保护者。2020年,广大女性医务人员、疾控人员、科技人员、社区工作者、志愿者等不畏艰险、日夜奋战,坚守在疫情防控第一线。女性再也不是弱者的代称,她们用自己的勇气和能力,书写着保护生命、拯救生命的壮丽诗篇。在最危险的时刻,她们与城市同在。
女性的需求也改变着城市。传统上,城市规划是由男性主导和操作的,较少专门考虑女性的需求。但现在,越来越多城市开始注重女性的需求和感受。2021年1月,建设“女性友好型城市”,这一透着满满善意和尊重的“城市定位”,在长沙“两会”审议通过的《长沙市国民经济和社会发展第十四个五年规划和2035年远景目标纲要》(草案)首次提出。从公共厕所增加女厕位到鼓励育儿假、从支持“她经济”发展到湘江两岸夜景体现女性审美……长沙市将性别意识纳入城市规划,并细致入微地进行布局,足以让人看到这个城市对女性发自内心的关心和爱护。
事实上,城市化程度越高,女性的地位就越高。以中国城市化程度最高的上海为例。这座被称作“女性天堂”的城市里,上海市统计局社情民意调查中心2016年数据显示,有64%的受访者认为男女地位平等,22.1%的女性认为女人家庭地位高于男性,只有12.6%的人认为男性家庭地位高于女性。这一组有趣的数据与上海女性有着极强的经济独立性、对家庭的财务贡献率极高是分不开的。强大的女性意识在上海这座中国近代兴起的城市里形成了尊重女性的良好文化氛围。女性影响着这座城市的气质,也让上海成为中国一流的现代化都市。
女性如何与城市相处
任何事物都有两面性,城市亦然。城市为女性提供了挥洒自我的空间,但这个空间同时也是残酷的战场。中国女性被认为是最累的群体,她们事业家庭兼顾,因此承担了超乎历史所有时期的竞争压力。
在网剧《北京女子图鉴》中,女主角陈可从四川来到繁华的都市北京,从小公司前台、外企小白领、商务代理再到自媒体从业者,职业生涯不断上升,但感情生活却异常曲折。城市给与了她太多,也让她失去了太多。
陈可的失落感,正是当代许多城市女性心态的写照。女性独立,看起来很美好,但并不是一个随便说说就可以实现的愿景。它需要女性付出极大的个人努力,这对所有女性而言,都是重大的考验。而生育问题,则让这种考验变得尤其严峻。对于大部分女性来说,生育都会对其事业产生重大影响。压力之下,越来越多的城市女性抗拒婚姻和生育,这是中国结婚率和生育率下降的重要原因之一。
城市机会多,陷阱也多,城市里蔓延的消费主义也在考验着女性的独立精神。当一个人不再自我奋斗,成为欲望的奴隶,丧失自我意识,就会被城市“吞噬”。更何况,城市不是万能的,城市女性依然会被就业歧视、性骚扰、家庭暴力所困扰。女性与城市的和谐相处,是一个复杂而又亟待解决的课题。
从城市的角度来说,主动对女性释放出更大的善意,能够引领彼此关系的良性发展。从宏观层面而言,地方政府在做城市规划和决策过程中要考虑到女性问题和观点;支持和鼓励女性与男性平等地参与城市生活的所有领域;城市的所有居民,不分性别,都能平等地从城市的经济、社会和政治机会中获益。而从更具体的层面上,为女性提供基础支持,让她们能够获取高质量和全面的城市服务(如出行、购物和休闲);提供资源,让女性获得更好的医疗、教育和社会服务;创造更多就业机会,减少就业歧视;建立健全女性保护机制,让女性在遭受暴力或其他不公待遇时,有获取帮助的渠道。
当然女性也不能等待,不能等到环境变得完美了,才慢吞吞地成长。女性要学会积极主动地去改变自己的命运,克服困难,自我成长,抓住城市给与的机会,规避城市带来的风险。即使是身处底层的普通女性,能够自立自强,也便有了被尊重的资本。而那些更有能力的女性,也要有更多的社会责任感,更多地参与社会事务,推进城市发展和性别平等。
即使城市让女性倍感压力,女性依然向往城市,城市历练了女性,让她们寻找到了从未有过的自我存在感。女性与城市同呼吸,共命运。城市让女性更优秀,女性让城市更有生命温情。女性走向城市的本质就是走向“现代性”,成为一个真正的现代人。重构自我,不迷失于欲望,用女性的特质来重构城市精神,城市才能真正成为“她们的城”。
Ⅲ 有人了解编程猫吗
产品宣传
看来是比较低调的一个团队,网上的信息不多,主要集中在官微和知乎。整体感觉年轻活力,很有“编程”的极客范,比如下图这样的。
人人都是程序员:初识《编程猫》
萌死人不偿命
官网
浓浓的卡通风,相信比较吸引主要受众——小朋友。不过整体来说,画面质感还有提升空间(可以考虑天天爱消除这种风格)。
人人都是程序员:初识《编程猫》
官网首页
官网内容当然是以“编程教学”为核心,分为以下板块:
首页
创作:进入编程猫的代码世界(需先登录),这里是我最喜欢的一部分,下文再具体介绍。
代码岛:类似于“我的世界”的一个页面,但是没有任何介绍,目前没去研究如何使用。
编程猫热点:即最近的新闻。
公开课:编程猫系统使用的常规操作,也是我收获最大的一部分,下文具体介绍。
精选作品、小说、部落、活动、最近作品:UGC内容的推荐。
人人都是程序员:初识《编程猫》
官网小说推荐.png
创作:同上
发现:主要是作品(用户发布的编程作品)和部落(即编程社区)。
网络:问题讨论、官方角色资料,还包括漫画和小说。
素材:这里提供了一些可以用到编程中的素材,比如背景、角色、道具等。
学校:与学校合作的一些介绍与接入。
下载:相关APP以及chrome的下载(系统运行需要chrome内核)
个人中心:用户的主页与信息,还包括代码、小说等作品的管理。
一个建议
编程猫官网应该归类到内容(代码/小说/漫画)+学习社区,那么主要用户就是两类:
创作者:主要需求是通过平台创造内容,提升自己、收获粉丝。偶尔需要学习知识,以及收集素材。
消费者:主要需求是消费这些内容(小游戏/小说/漫画)。偶尔需要泡社区、与创作者互动。
当然,对于真实用户,是完全可以在两种角色之间切换的。
基于以上两点,再次整理如下:
“发现”中的“作品”是给消费者的(发现好作品),而“部落”又是给创作者的(发现好社区)。
“网络”中的“讨论中心”是给创作者的(提问/答问),而“漫画/图书馆”又是给消费者的(看漫画/小说)。
“素材”是给创作者,“学校”是面向学校,这些都比较清晰。
所以不妨基于两类用户的特点,对板块进行重新划分。
面向消费者:主栏目是“发现作品”,下设子栏目:游戏、漫画、小说,每个栏目可以加上“我要创作”,来引导其成为创作者。
面向创作者:主栏目是“源码社区”,下设子栏目:热门源码、讨论、部落、素材。
(PS:网络中的“资料图鉴”目前还未了解,暂不讨论。)
公开课
这部分是我“入门”编程猫的关键,17个短视频,看完你也能轻松学会在编程猫“写代码”。
人人都是程序员:初识《编程猫》
编程主界面
每个视频也是一个小故事,比如《编程猫初见阿短》,“编程猫”就告诉“阿短”如何在屏幕内移动(设置“碰到边缘即反弹”)
下面贴出我印象比较深的几点:
1、初见阿短
动作—移到鼠标指针:角色跟随鼠标移动
动作—面向鼠标:使角色面向鼠标方向
动作—碰到边缘就反弹:使角色不再会走到屏幕之外
2、重复执行
控制—重复执行:使角色不断重复执行某个动作
3、坐标
动作—移动到(X,Y):可以改变角色的坐标
4、广播
很有意思的功能,可以理解为传参,或者全局变量,可以让一个角色的动作对另一个角色造成影响。
比如示例中通过点击“礼帽”触发动作“广播:1”。然后对“动物”设置动作当收到“广播:1”时,将自己设为可见。实现的是玩家点击礼帽“变”出动物的效果。
位置在:”事件—当收到广播/收到广播时“。
5、如果
这里演示了经典的if-else的写法。整个函数在一个循环体“重复执行”中。
游戏很像前几年流行的Flip Bird(哈哈当年我玩到过200多分),玩家按下鼠标时,角色往上跳一下,然后慢慢下落。
那么角色就包括3个动作,对应if的三个情况:
飞行/下落:鼠标按下时移动12px,否则向下移动3px
碰到障碍物:游戏结束,停止脚本
碰到南瓜怪:闯关成功,退出循环
人人都是程序员:初识《编程猫》
经典的If-else
6、外观
基本是结合之前几课,实现了“人物进入飞船、飞船飞走”的动作。
拆解如下:灯光在1秒内亮起,并发送广播”进舱“——人物接收到”进舱“,在1秒内隐藏,并发送广播”出发“——飞碟收到广播”出发“后闪灯、变小、改变坐标值
人人都是程序员:初识《编程猫》
Paste_Image.png
Tips:图层顺序是右侧覆盖左侧
7、声音
为角色添加造型与声音(三头龙的5个造型对应着5种不同的血量)
添加声音很简单,这里一个新方法是:两个角色之间的信息交互是用另一个的造型编号触发,而没有用“广播”。
人人都是程序员:初识《编程猫》
三头龙与胜利动画
人人都是程序员:初识《编程猫》
利用角色编号来传递信息
8、画笔
这里提供了一个简单的画笔工具,可以直接将屏幕变为一个画板。
代码不复杂,重点是起笔/落笔的设置,如下
人人都是程序员:初识《编程猫》
画笔设置
9、变量
本章稍微复杂,需要实现的效果是:鲤鱼在河道不断左右运动,玩家点击后消失,并计分+1。
鲤鱼的运动,可以这样写(注意碰到边缘反弹,是可以设置旋转模式的):
人人都是程序员:初识《编程猫》
呆鲤鱼的运动
得分的计算,可以这样写(初始设置为0,每次点中呆鲤鱼+1):
人人都是程序员:初识《编程猫》
得分计算
最后这里有一个链表。它设定了游戏时间只有6秒钟,根据玩家得分数来返回一个“击败80%玩家”的信息。当然也是用于结束游戏(脚本)的计时器。
人人都是程序员:初识《编程猫》
结束脚本与返回结果
10、克隆
这一part,需要的效果是:在一个固定高度,每秒在水平任意位置出现一个飞镖,并依此落下。使用的方法是“克隆”,代码的解析如下。
设置角色“飞镖”,将其隐藏,
每秒创建一个自己的克隆体,克隆体移动到Y=500,X=随机的位置
作为克隆体启动时,不断下落、旋转
Tips:注意最后加上“如果碰到下边缘就删除自己”,相当于释放内存,不然浏览器会悲剧。
人人都是程序员:初识《编程猫》
飞镖的运动
练习作品
目前我在上面做了一个飞机大战,踩了几个坑,不过也算是完成了。已实现的需求:
玩家键盘控制飞机的移动、发射子弹;
敌方飞机随机从上空出现;
击落敌机,得分+1;
被敌机撞到,生命值-1,获得3秒无敌状态回屏幕中央;
生命值将为0,游戏结束。
人人都是程序员:初识《编程猫》
飞机大战
一些思考
图形化界面,很容易上手。但是完成这个小作品也是非常有成就感(像程序员一样创造世界)。
代码思维:比如“面向对象”的思维(将飞机、子弹、场景都视为对象),比如“清理内存”思维(克隆体一定要有删除机制),相信这些对小朋友的思维也很有启发作用。
遇到困难的时候,我是回到公开课去看的,因为“网络”和社区(包括我加入了QQ群)能了解到的信息不多,就像FCC推崇的“Read-Search-Ask“,这部分的内容其实也有待完善。
比如作为新手,我需要的信息包括:编程界面各个功能的使用说明,常见场景(Read);能搜到一些常见错误的解答(Search);可以学习和讨论其他人的优秀作品(Ask)。这三点做好以后,相信能吸引更多人在这里创作。
其实做为一个开发者,有一个学习的氛围跟一个交流圈子特别重要这里我要推荐c++交流群:“648778840”,不管你是小白还是大牛欢迎入住,大家一起交流成长。小编会在群中不定期分享干货源码,包括我精心整理的一份c++零基础教程。欢迎各位感兴趣的的小伙伴。
学习思路:
人人都是程序员:初识《编程猫》
学习资料:
Ⅳ Java的自学过程中怎么能有个清晰的学习路线
Java是一种平台,也是一种程序设计语言,如何学好程序设计不仅仅适用于Java,对C++等其他程序设计语言也一样管用。有编程高手认为,Java也好C也好没什么分别,拿来就用。为什么他们能达到如此境界?我想是因为编程语言之间有共通之处,领会了编程的精髓,自然能够做到一通百通。如何学习程序设计理所当然也有许多共通的地方。
学习路线图可以看看动力节点的,比较清晰,专业性也比较强。下面说说java具体如何学习。
1.1 培养兴趣
兴趣是能够让你坚持下去的动力。如果只是把写程序作为谋生的手段的话,你会活的很累,也太对不起自己了。多关心一些行业趣事,多想想盖茨。不是提倡天天做白日梦,但人要是没有了梦想,你觉得有味道吗?可能像许多深圳本地农民一样,打打麻将,喝喝功夫茶,拜拜财神爷;每个月就有几万十几万甚至更多的进帐,凭空多出个"食利阶层"。你认为,这样有味道吗?有空多到一些程序员论坛转转,你会发现,他们其实很乐观幽默,时不时会冒出智慧的火花。
1.2 慎选程序设计语言
男怕入错行,女怕嫁错郎。初学者选择程序设计语言需要谨慎对待。软件开发不仅仅是掌握一门编程语言了事,它还需要其他很多方面的背景知识。软件开发也不仅仅局限于某几个领域,而是已经渗透到了各行各业几乎每一个角落。
如果你对硬件比较感兴趣,你可以学习C语言/汇编语言,进入硬件开发领域。如果你对电信的行业知识及网络比较熟悉,你可以在C/C++等之上多花时间,以期进入电信软件开发领域。如果你对操作系统比较熟悉,你可以学习C/Linux等等,为Linux内核开发/驱动程序开发/嵌入式开发打基础。
如果你想介入到应用范围最广泛的应用软件开发(包括电子商务电子政务系统)的话,你可以选择J2EE或.NET,甚至LAMP组合。每个领域要求的背景知识不一样。做应用软件需要对数据库等很熟悉。总之,你需要根据自己的特点来选择合适你的编程语言。
1.3 要脚踏实地,快餐式的学习不可取
欲速则不达,浮躁是现代人最普遍的心态,能怪谁?也许是贫穷落后了这么多年的缘故。现在的软件公司、客户、政府、学校、培训机构等等到处弥漫着浮躁之气。就拿我比较熟悉的大连大工IT职业培训来说吧,居然打广告宣称"20多年的计算机职业教育,辽宁省十佳学校",殊不知中国计算机发展才几年,软件发展才几年,居然去报名的学生不少,简直是藐视天下程序员。培训出来的“程序员”大多不知道OO,OP为何物?社会环境如是,我们不能改变,只能改变自己,闹市中的安宁,弥足珍贵。许多初学者C++/Java没开始学,立马使用VC/JBuilder,会使用VC/JBuilder开发一个Hello World程序,就忙不迭的向世界宣告,"我会软件开发了",简历上也大言不惭地写上"精通VC/Java"。结果到软件公司面试时要么被三两下打发走了,要么被驳的体无完肤,无地自容。到处碰壁之后才知道捧起《C++编程思想》《Java编程思想》仔细钻研,早知如此何必当初呀。
"你现在讲究简单方便,你以后的路就长了",好象也是佛经中的劝戒。
1.4 多实践,快实践
彭端淑的《为学一首示子侄》中有穷和尚与富和尚的故事。
从前,四川边境有两个和尚,一个贫穷,一个有钱。一天,穷和尚对富和尚说:"我打算去南海朝圣,你看怎么样?"富和尚说:"这里离南海有几千里远,你靠什么去呢?"穷和尚说:"我只要一个水钵,一个饭碗就够了。"富和尚为难地说:"几年前我就打算买条船去南海,可至今没去成,你还是别去吧!" 一年以后,富和尚还在为租赁船只筹钱,穷和尚却已经从南海朝圣回来了。
这个故事可解读为:任何事情,一旦考虑好了,就要马上上路,不要等到准备周全之后,再去干事情。假如事情准备考虑周全了再上路的话,别人恐怕捷足先登了。软件开发是一门工程学科,注重的就是实践,"君子动口不动手"对软件开发人员来讲根本就是错误的,他们提倡"动手至上",但别害怕,他们大多温文尔雅,没有暴力倾向,虽然有时候蓬头垢面的一副"比尔盖茨"样。有前辈高人认为,学习编程的秘诀是:编程、编程、再编程,笔者深表赞同。不仅要多实践,而且要快实践。我们在看书的时候,不要等到你完全理解了才动手敲代码,而是应该在看书的同时敲代码,程序运行的各种情况可以让你更快更牢固的掌握知识点。
1.5 多参考程序代码
程序代码是软件开发最重要的成果之一,其中渗透了程序员的思想与灵魂。许多人被《仙剑奇侠传》中凄美的爱情故事感动,悲剧的结局更有一种缺憾美。为什么要以悲剧结尾?据说是因为写《仙剑奇侠传》的程序员失恋而安排了这样的结局,他把自己的感觉融入到游戏中,却让众多的仙剑迷扼腕叹息。
多多参考代码例子,对Java而言有参考文献[4.3],有API类的源代码(JDK安装目录下的src.zip文件),也可以研究一些开源的软件或框架。
1.6 加强英文阅读能力
对学习编程来说,不要求英语, 但不能一点不会,。最起码像Java API文档(参考文献[4.4])这些东西还是要能看懂的,连猜带懵都可以;旁边再开启一个"金山词霸"。看多了就会越来越熟练。在学Java的同时学习英文,一箭双雕多好。另外好多软件需要到英文网站下载,你要能够找到它们,这些是最基本的要求。英语好对你学习有很大的帮助。口语好的话更有机会进入管理层,进而可以成为剥削程序员的"周扒皮"。
1.7 万不得已才请教别人
笔者在Martix与Java论坛的在线辅导系统中解决学生问题时发现,大部分的问题学生稍做思考就可以解决。请教别人之前,你应该先回答如下几个问题。
你是否在google中搜索了问题的解决办法?
你是否查看了Java API文档?
你是否查找过相关书籍?
你是否写代码测试过?
如果回答都是"是"的话,而且还没有找到解决办法,再问别人不迟。要知道独立思考的能力对你很重要。要知道程序员的时间是很宝贵的。
1.8 多读好书
书中自有颜如玉。比尔盖茨是一个饱读群书的人。虽然没有读完大学,但九岁的时候比尔盖茨就已经读完了所有的网络全书,所以他精通天文、历史、地理等等各类学科,可以说比尔?茨不仅是当今世界上金钱的首富,而且也可以称得上是知识的巨富。
笔者在给学生上课的时候经常会给他们推荐书籍,到后来学生实在忍无可忍开始抱怨,"天呐,这么多书到什么时候才能看完了","学软件开发,感觉上了贼船"。这时候,我的回答一般是,"别着急,什么时候带你们去看看我的书房,到现在每月花在技术书籍上的钱400元,这在软件开发人员之中还只能够算是中等的",学生当场晕倒。(注:这一部分学生是刚学软件开发的)
1.9 使用合适的工具
工欲善其事必先利其器。软件开发包含各种各样的活动,需求收集分析、建立用例模型、建立分析设计模型、编程实现、调试程序、自动化测试、持续集成等等,没有工具帮忙可以说是寸步难行。工具可以提高开发效率,使软件的质量更高BUG更少。组合称手的武器。到飞花摘叶皆可伤人的境界就很高了,无招胜有招,手中无剑心中有剑这样的境界几乎不可企及。
2.软件开发学习路线
两千多年的儒家思想孔孟之道,中庸的思想透入骨髓,既不冒进也不保守并非中庸之道,而是找寻学习软件开发的正确路线与规律。
从软件开发人员的生涯规划来讲,我们可以大致分为三个阶段,软件工程师→软件设计师→架构设计师或项目管理师。不想当元帅的士兵不是好士兵,不想当架构设计师或项目管理师的程序员也不是好的程序员。我们应该努力往上走。让我们先整理一下开发应用软件需要学习的主要技术。
A.基础理论知识,如操作系统、编译原理、数据结构与算法、计算机原理等,它们并非不重要。如不想成为计算机科学家的话,可以采取"用到的时候再来学"的原则。
B.一门编程语言,现在基本上都是面向对象的语言,Java/C++/C#等等。如果做WEB开发的话还要学习HTML/JavaScript等等。
C.一种方法学或者说思想,现在基本都是面向对象思想(OOA/OOD/设计模式)。由此而衍生的基于组件开发CBD/面向方面编程AOP等等。
D.一种关系型数据库,ORACLE/SqlServer/DB2/MySQL等等
E.一种提高生产率的IDE集成开发环境JBuilder/Eclipse/VS.NET等。
F.一种UML建模工具,用ROSE/VISIO/钢笔进行建模。
G.一种软件过程,RUP/XP/CMM等等,通过软件过程来组织软件开发的众多活动,使开发流程专业化规范化。当然还有其他的一些软件工程知识。
H.项目管理、体系结构、框架知识。
正确的路线应该是:B→C→E→F→G→H。
还需要补充几点:
1).对于A与C要补充的是,我们应该在实践中逐步领悟编程理论与编程思想。新技术虽然不断涌现,更新速度令人眼花燎乱雾里看花;但万变不离其宗,编程理论与编程思想的变化却很慢。掌握了编程理论与编程思想你就会有拨云见日之感。面向对象的思想在目前来讲是相当关键的,是强势技术之一,在上面需要多投入时间,给你的回报也会让你惊喜。
2).对于数据库来说是独立学习的,这个时机就由你来决定吧。
3).编程语言作为学习软件开发的主线,而其余的作为辅线。
4).软件工程师着重于B、C、E、D;软件设计师着重于B、C、E、D、F;架构设计师着重于C、F、H。
3.如何学习Java?
3.1 Java学习路线
3.1.1 基础语法及Java原理
基础语法和Java原理是地基,地基不牢靠,犹如沙地上建摩天大厦,是相当危险的。学习Java也是如此,必须要有扎实的基础,你才能在J2EE、J2ME领域游刃有余。参加SCJP(SUN公司认证的Java程序员)考试不失为一个好方法,原因之一是为了对得起你交的1200大洋考试费,你会更努力学习,原因之二是SCJP考试能够让你把基础打得很牢靠,它要求你跟JDK一样熟悉Java基础知识;但是你千万不要认为考过了SCJP就有多了不起,就能够获得软件公司的青睐,就能够获取高薪,这样的想法也是很危险的。获得"真正"的SCJP只能证明你的基础还过得去,但离实际开发还有很长的一段路要走。
3.1.2 OO思想的领悟
掌握了基础语法和Java程序运行原理后,我们就可以用Java语言实现面向对象的思想了。面向对象,是一种方法学;是独立于语言之外的编程思想;是CBD基于组件开发的基础;属于强势技术之一。当以后因工作需要转到别的面向对象语言的时候,你会感到特别的熟悉亲切,学起来像喝凉水这么简单。
使用面向对象的思想进行开发的基本过程是:
●调查收集需求。
●建立用例模型。
●从用例模型中识别分析类及类与类之间的静态动态关系,从而建立分析模型。
●细化分析模型到设计模型。
●用具体的技术去实现。
●测试、部署、总结。
3.1.3 基本API的学习
进行软件开发的时候,并不是什么功能都需要我们去实现,也就是经典名言所说的"不需要重新发明轮子"。我们可以利用现成的类、组件、框架来搭建我们的应用,如SUN公司编写好了众多类实现一些底层功能,以及我们下载过来的JAR文件中包含的类,我们可以调用类中的方法来完成某些功能或继承它。那么这些类中究竟提供了哪些方法给我们使用?方法的参数个数及类型是?类的构造器需不需要参数?总不可能SUN公司的工程师打国际长途甚至飘洋过海来告诉你他编写的类该如何使用吧。他们只能提供文档给我们查看,Java DOC文档(参考文献4.4)就是这样的文档,它可以说是程序员与程序员交流的文档。
基本API指的是实现了一些底层功能的类,通用性较强的API,如字符串处理/输入输出等等。我们又把它成为类库。熟悉API的方法一是多查Java DOC文档(参考文献4.4),二是使用JBuilder/Eclipse等IDE的代码提示功能。
3.1.4 特定API的学习
Java介入的领域很广泛,不同的领域有不同的API,没有人熟悉所有的API,对一般人而言只是熟悉工作中要用到的API。如果你做界面开发,那么你需要学习Swing/AWT/SWT等API;如果你进行网络游戏开发,你需要深入了解网络API/多媒体API/2D3D等;如果你做WEB开发,就需要熟悉Servlet等API啦。总之,需要根据工作的需要或你的兴趣发展方向去选择学习特定的API。
3.1.5 开发工具的用法
在学习基础语法与基本的面向对象概念时,从锻炼语言熟练程度的角度考虑,我们推荐使用的工具是Editplus/JCreator+JDK,这时候不要急于上手JBuilder/Eclipse等集成开发环境,以免过于关注IDE的强大功能而分散对Java技术本身的注意力。过了这一阶段你就可以开始熟悉IDE了。
程序员日常工作包括很多活动,编辑、编译及构建、调试、单元测试、版本控制、维持模型与代码同步、文档的更新等等,几乎每一项活动都有专门的工具,如果独立使用这些工具的话,你将会很痛苦,你需要在堆满工具的任务栏上不断的切换,效率很低下,也很容易出错。在JBuilder、Eclipse等IDE中已经自动集成编辑器、编译器、调试器、单元测试工具JUnit、自动构建工具ANT、版本控制工具CVS、DOC文档生成与更新等等,甚至可以把UML建模工具也集成进去,又提供了丰富的向导帮助生成框架代码,让我们的开发变得更轻松。应该说IDE发展的趋势就是集成软件开发中要用到的几乎所有工具。
从开发效率的角度考虑,使用IDE是必经之路,也是从一个学生到一个职业程序员转变的里程碑。
Java开发使用的IDE主要有Eclipse、JBuilder、JDeveloper、NetBeans等几种;而Eclipse、JBuilder占有的市场份额是最大的。JBuilder在近几年来一直是Java集成开发环境中的霸主,它是由备受程序员尊敬的Borland公司开发,在硝烟弥漫的Java IDE大战中,以其快速的版本更新击败IBM的Visual Age for Java等而成就一番伟业。IBM在Visual Age for Java上已经无利可图之下,干脆将之贡献给开源社区,成为Eclipse的前身,真所谓"柳暗花明又一村"。浴火重生的Eclipse以其开放式的插件扩展机制、免费开源获得广大程序员(包括几乎所有的骨灰级程序员)的青睐,极具发展潜力。
3.1.6 学习软件工程
对小型项目而言,你可能认为软件工程没太大的必要。随着项目的复杂性越来越高,软件工程的必要性才会体现出来。参见"软件开发学习路线"小节。
3.2学习要点
确立的学习路线之后,我们还需要总结一下Java的学习要点,这些要点在前文多多少少提到过,只是笔者觉得这些地方特别要注意才对它们进行汇总,