‘壹’ 我是程序员,大家来说说,自己开发的软件做到什么程度,算是强大、健壮呢。
自身是做银行软件,基本需求是不当机,保证能24*7运行,出现问题有解决方案,仅少情况出现问题
‘贰’ 搞IT程序员有前途吗
IT程序员有前途。就业方向有:
1、架构师
这职位听起来很高大上,但它需要强大的技术实力和深厚的技术积累。建筑师的成长需要经验、技术的广度和深度。设计优雅、灵活、扩展性强的架构是架构师的主要工作。
2、java后端程序员
后端程序员主要实现业务逻辑,为前端使用提供接口。
Java是最常用,但也有其他相对小众,比如python,Ruby on Rails、php等,还有就是PHP,小网站经常用,不论哪个语言,都不难学,这一块的需求是比较大的。
(2)cc程序员有多强大扩展阅读
1、对项目经理负责,负责软件项目的详细设计、编码和内部测试的组织实施,对小型软件项目兼任系统分析工作,完成分配项目的实施和技术支持工作。
2、协助项目经理和相关人员同客户进行沟通,保持良好的客户关系。
3、参与需求调研、项目可行性分析、技术可行性分析和需求分析。
4、熟悉并熟练掌握交付软件部开发的软件项目的相关软件技术。
5、负责向项目经理及时反馈软件开发中的情况,并根据实际情况提出改进建议。
6、参与软件开发和维护过程中重大技术问题的解决,参与软件首次安装调试、数据割接、用户培训和项目推广。
7、负责相关技术文档的拟订。
8、负责对业务领域内的技术发展动态进行分析研究。
‘叁’ 月薪30万的程序员到底有多强
踩到大部分的对手,站在金字塔的中上部分,往上爬的过程其实充满了汗水和一部分的运气
‘肆’ 一个“熟练”程序员和一个“有能力”程序员谁更牛
一、宏观方面
一、 JAVA。
要想成为JAVA(高级)工程师肯定要学习JAVA。一般的程序员或许只需知道一些JAVA的语法结构就可以应付了。但要成为JAVA(高级)
工程师,您要对JAVA做比较深入的研究。您应该多研究一下JDBC、IO包、Util包、Text包、JMS、EJB、RMI、线程。如果可能,希望您
对JAVA的所有包都浏览一下,知道大概的API,这样您就发现其实您想实现的很多功能,通过JAVA的API都可以实现了,就不必自己费太多的脑经 了。
二、 设计模式。
其实写代码是很容易的事情,我相信您也有同感。但如何写得好就比较难了。这个“好”字包括代码可重用性,可维护性,可扩展性等。如何写出好的代
码往往要借助一些设计模式。当然长期的代码经验积累,只要您用心,会使您形成自己代码风格。相信您的代码也比较符合代码的可重用性,可维护性,可扩展性。
但既然前人已经给我们总结出了经验,我们何不踩着前人的肩膀前进?
三、 XML。
现在的系统中不使用XML几乎是不可能的。XML的功能非常强大,它可以做数据转换、做系统的配置、甚至可保存您的系统业务数据。因此您必须了解
XML,包括它的语法,结构。您还需要比较熟练的使用解析XML的一些API,比如JDOM,SAX等,因为在我们一般的项目中,XML往往担当系统配置
信息的作用,您需要用这些API解析这些配置信息,开发完美的项目。
四、 精通使用一种或两种框架。
“框架都会有许多可重用的代码,良好的层次关系和业务控制逻辑,基于框架的开
发使你可以省出很多的开发成本”。这里希望您能精通,更多的是希望您能通过框架的使用了解框架的思想。这样您在开发一个项目时思路会开阔一些,比如您
会想到把SQL语句与您的JAVA代码分开,再比如您会考虑把您的业务逻辑配置到XML或者数据库中,这样整个项目就很容易扩张了。
五、 熟悉主流数据库。其实真正比较大的项目都是有人专门做数据库的,但往往很多项目要求作为(高级)工程师的您也参与数据库的设计以及SQL的编写。所以为了
更好的为国家做贡献,建议您还是多了解一些主流数据库,比如SQLSERVER,ORACLE,多连接SQL和存储过程以及触发器。如果您不是“科班”出
身,您还需要补充一些数据库原理方面的知识。
六、 精通一种或两种WEBServer。
因为作为JAVA工程师,特别时
想成为高级JAVA工程师的您,您不可避免地要部署您的项目到WebServer上,而且只有当您精通一种WebServer,您才可能最大限度地使用它
的资源,这往往可以节省很多时间和精力。
七、 UML。
您肯定想成为高级工程师,因此您有必要了解或熟练或精通UML,这取决于您有多大决心想成为高级工程师和项目经理。在比较正规的开发团队
中,UML是讨论项目的交流工具,您要想做一个软件工程师,您至少要能看懂,您要想做高级工程师,您要能通过它来描述您对项目的理解,尽管这不是必须,但
却很重要。
八、 站在高度分析问题:
这不是一个知识点,也不是通过书本就能学得到的。只所以提到这一点,是因为我比您还着急,我希望您更快的成为一个高级的软件工程师,而
不是一个一般的软件工程师。希望您在工作中多向您的系统分析员、需求分析员、系统设计员学习,多站在他们角度上去看您在开发的项目。在最好在项目之初先在
您的脑海里对项目有个大致的分析、设计,然后和他们进行比较,找找差别,想想缺点。
九、 工具。
您在这个阶段可能接触到不同的工具了,尽管您还需要使用JB或者IDEA,但能可能对
ROSE,Together要多了解一些,因为您要画UML了。不要再对Dreamweaver等HTML编辑器情有独钟了,那些JSP页面让初级程序员去写吧
二、微观方面
1.Core Java部分
这是最基础的,对于一个java高级开发/设计人员,你需要对这一部分达到精通的水平,重点内容如下:
a.面向对象编程思想(封装继承多态接口)
b.字符串处理
c.java.lang包,java.util包等常用包
d.java异常处理
2.Java高级部分
a.Java I/O流
b.Java多线程技术
c.Java网络编程
d.Java Swing
后两项可以了解即可,如果项目需要可以深入研究
3.前端基本技能
* HTML + CSS网页开发
* JavaScript
* Jquery
* 浏览器兼容性 CSS hack(了解)
4.熟练使用JSP + Servlet进行开发
5.MVC设计模式,原理,以及相关框架,如Struts
6.SSH框架
7.缓存技术 session & cookie
8.熟练使用一种以上Java开发工具(Eclipse/MyEclipse/Jbuilder/Jcreator/IntelliJIEDA/NetBeans)
9.熟练使用XML
JDOM w3c.dom SAX
10.Java设计模式
工厂模式,单例模式 ==
11.Java反射机制
反射的各种用法
12.了解或熟悉 C, C++, .NET
13.熟悉JDK的配置,环境变量
14.数据库oracle必学,其他最好了解一种以上(mysql,sql server,access==)
oracle:视图,索引,存储过程,触发器,游标,包,常用函数 ==
15.数据库原理
事务的原理,锁机制,表连接,复杂查询语句(工作经验),性能调优,锁表以及解决方案==
16.JDBC,连接池
17.Ajax,反向Ajax
18.HTTP协议,request 和 response的原理,HTTP status(了解常用的),Https原理
19.熟悉Linux基本命令,使用过Linux/Unix系统,可以编写shell脚本,可以在Linux上部署项目
20.了解windows系统批处理脚本bat
21.了解HTML5,最好学习过
22.熟悉一种JS框架,如Prototype
23.J2EE原理 熟悉一种以上web容器如Tomcat,JBoss,websphere,weblogic==
24.熟悉ant或maven
25.熟悉一门脚本语言,如python ,ruby
26.了解php/ asp
27.了解ftp协议及原理
28.熟练使用Junit测试,熟悉Mockito等测试工具
29,熟悉javac,javadoc,native,native2ascii等常用命令
30.熟悉常用的排序算法,如冒泡排序,快速排序等,最好自己研究过一些的算法。
31.了解Flex(不学也没关系)
32.了解敏捷开发模式
33.工作流workflow至少用过一种,如OSworkflow,了解原理
34.使用过VPN了解其原理
35.熟悉jstl表达式和el表达式
36.熟悉webservice,WSDL,SOAP
37.图片处理,如图片上传,预览,限制大小等
38.版本控制工具,CVS VSS SVN
39,JSON技术,JSON+AJAX
40.分页技术,最好自己实现过不仅仅是用过要知道原理
41.Java Mail
42.Java读写txt,excel,JXL技术
43.JVM原理,JVM内存管理,GC,Java堆栈池
44.熟练使用下面的工具:
office办公软件,word,excel,ppt等
plsql,sqldevelop 数据库开发工具
outlook大公司都用
ue编辑器
浏览器控制台,调试
SHH/PUTTY 远程
45.UML建模工具Rational Rose等
46. 使用log4j
47.使用过开放Api如网络,腾讯街景,新浪微博等
48.页面静态化技术(伪静态页面)
49.报表技术,使用过报表制作工具,如水晶易表。
50.定时任务,如Spring batch ,学会自定义batch任务(不适用第三方工具)
51.了解uuid
52.b/s 和 c/s架构
53.正则表达式
54.了解jndi jms
55.ERP
56.UNICODE编码,乱码解决
57.开源网络编辑器,如ckEditor
58.二进制原理
59.使用过,了解过开源论坛框架,如discuzz
60.GWT,Closure框架
61.了解大数据,云计算
62.搜索引擎搜索技术
63.软件工程,项目管理
‘伍’ 大家都知道高级程序员很吃香,那么高级程序员和黑客到底谁更厉害
非从业人员对于程序员和黑客的外在形象就存在着不一样的认知,因为电视电影和网络上的段子,普通的程序员一般都是有才能却一点不风趣的男性,常年一件格子衬衣,几根稀疏的头发,虽然赚的钱不少,却不会花钱装扮自己;而黑客的形象就完全是另一种,他们很神秘,可能我们身边随便一个人在暗地里都可以是黑客,黑客还喜欢穿黑衣服,带黑色的帽子,不喜欢以真面目示人。
相对的,普通程序员也不会关注黑客关注的很多点,比如CAPTCHA这种可能就直接引入个第三方的来防御了,并不会自己去实现一遍。还有加密算法这种,也几乎只有黑客才会去研究。普通程序员可能研究的就是压缩算法。黑客的攻击手段多种多样,有的甚至不会写代码,比如《我是谁–没有绝对安全的系统》里就有一位,根本不写代码,通过翻垃圾桶,开锁偷看资料这类操作搜集很多有用的信息,从而发起攻击。一般称这种为手段‘社工攻击’。
‘陆’ cc编程是做什么的
cc编程是用C语言来进行计算机编程工作。
C语言是一种应用广泛,并且实现灵活的一种计算机编程语言,用C语言编出来的程序,可以在很多平台上运行,可移植性强。例如,计算机操作系统等大型软件都可以用C语言来编写完成。不仅如此,我们用的众多聊天工具也可以用C语言来实现。
具体的C语言编程内容请参加C或者C++等。C语言有一个突出的优点就是适合于多种操作系统, 如DOS、UNIX,也适用于多种机型。
相关信息
当然,C语言也有自身的不足,比如:C语言的语法限制不太严格,对变量的类型约束不严格,影响程序的安全性,对数族下标越界不作检查等。从应用的角度,C语言比其他高级语言较难掌握。
总之,C语言既有高级语言的特点,又具有汇编语言的特点;既是一个成功的系统设计语言,又是一个使用的程序设计语言;既能用来编写不依赖计算机硬件的应用程序,又能用来编写各种系统程序;是一种受欢迎、应用广泛的程序设计语言。
‘柒’ 做一个程序员需要达到什么样的水平
辨别一个程序员的水平唯一的办法就是看 产出质量。
算法和数据结构都是锦上添花,并非是雪中送炭。而一个程序员的水准大致上是可以通过之前的代码质量估算出来的。【如果你可以获得此程序员的真实编写的代码,比如原创的Github】。
举个栗子:下面是我最近在单位一个同事写的代码,Java语言
private boolean checkProportions(String str, Integer grades) {
String proportion = str;
for (int i = 1; i < grades; i++) {
String st = proportion.substring(proportion.lastIndexOf(",") + 1);
if (st.equals(""))
return false;
proportion = proportion.substring(0, proportion.lastIndexOf(","));
}
if (proportion.equals(""))
return false;
str = str.replace(".", "");
str = str.replace(",", "");
for (int i = str.length(); --i >= 0; ) {
int chr = str.charAt(i);
if (chr < 48 || chr > 57)
return false;
}
return true;
}
大致上的功能就是将 1,2,6.2,4,1 的字符串判断每一 ‘,’内是数字,而且长度符合规定
这样的代码看上第一眼就觉得非常的丑陋。所以在我的要求之下,进行了一次重构。
private static boolean checkProportions(String str, int grades) {
String[] proportions = str.split(",");
if (proportions.length != grades) {
return false;
}
for (String s : proportions) {
if (!NumberUtils.isNumber(s)) {
return false;
}
}
return true;
}
这里看上去差不多就Ok。这样的代码其实也并没有用到什么数据结构和算法,就是很简单的字符串处理。
实际情况:在我们写的绝大多数的代码里面,大部分属于业务逻辑,极少部分的代码需要使用到算法和数据结构,在这样的情况下,我们能使用的到的技能最为关键的是让代码如何更加合理。而让代码更加优秀的方式是通过千锤百炼的重构,而重构是极大的考验一个程序员耐心和能力的东西。
质量的范围广泛,我从下面几个小方面聊聊。
出货能力:如果一个程序,算法再精妙,不能出货都是扯淡,我看过某某大神,算法溜得很,但是一个人完全做不到按照工程需要把事情给做完。
优化能力:并没有一个程序是一步到位的,一个工程的交出去可运行了,那才是第一步,很多时候随着业务的增大,对性能的要求越来越高,有一定对于代码优化的能力也是比较重要的。
调错能力:项目越大,遇见的Bug也就是越离奇,这个时候需要强大的Debug能力,找出那个最为关键的错误点,甚至于追溯底层框架的源码。
技术掌控:你项目能用Spring,Hibernate等等框架,但是有没有想过,这些技术你真的可以掌控么,如果有一天你的框架版本需要升级,真的做得到么?甚至于从Hibernate转为MyBatis。
算法和数据结构是影响到一些核心区的问题,但是其他的一些技能,比如面向对象的架构设计,代码的低耦合,那都是对整个项目有着直观改善的技能。并非是贬低算法,而在实际工作中,有太多比算法更重要的问题了。
‘捌’ 工程师与程序员谁厉害
等于说是:
硬件程序员和软件开发程序员相比,谁发展比较好呗?
近几年,全球互联网发展迅速,让软件人才变得炙手可热。供求关系决定价格,加之软件业的成本主要是人(硬件需要更多的设备投入),软件工程师的薪资也更为丰厚。
“在大型设备比如工控和高端医疗器械领域,硬件的处境就好很多,但对知识的要求也会高一些,不光数字电路和嵌入式底层软件,模拟电路,大功率,高可靠性设计的知识也是必须的。没有现成的芯片解决方案;没有现成设计可供参考,系统的庞大,很长的生命周期,可靠性设计相关的需求(出错可能出人命),都决定了硬件有更大的空间去发挥。深度的硬件技术也有了用武之地。”不过,在这种复杂度下,硬件工程师的受重视程度也是和待遇跟软件相当。
硬件学习难度比较大,特别是开始阶段,必须从电子技术,信息方面的只是开始。这些只是基础,目前掌握计算机核心硬件技术的公司都是老外。基本上,我们更多的是应用别人的东西。但是,就电子硬件技术来说,从原理图设计,PCB线路板设计需要更多的是经验。所以作为一个电子工程师往往是越老越吃香。
软件学习难度比硬件低,而且发展速度很快。需要掌握的基础是操作系统,数据结构,数据库,软件工程等基础只是,另外就是掌握一门或多门编程语言。对软件来说,经验没有硬件那么重要,知识和一个人的智商反倒比较重要。所以这是一个年轻人热衷的行业,也是年轻人短期就可以拿到高薪的一个行业。
从发展前景看都不错,只不过硬件工程师相对人数数量会少一点,待遇方面整体来讲软件会高一些,但具体到个人在选择的时候还是以个人的兴趣点为依托,特别是起步阶段不要太在意工资高低,即使在工资非常高的行业水平达不到一样还是适应不了,从就业的广度看软件工程师就业的机会更多一些,但参与竞争的人也多,就业机会多少主要是影响刚就业,进入技术成熟期阶段就是看个人能力和发展潜力了,无论做什么都要想办法让自己迈进技术金字塔的顶峰,所以入行阶段看不出这些表面的东西,还要侧重内在驱动力,如果就是对某一方面刚兴趣直接去选择,没必要在意当前一兵一卒的得失,职业生涯路子长着那。