⑴ 一个程序员要具备的基本素质是什么
团队精神和协作能力 :
把它作为基本素质,并不是不重要,恰恰相反,这是程序员应该具备的最基本的,也是最重要的安身立命之本。
文档习惯:
作为代码程序员,30%的工作时间写技术文档是很正常的,而作为高级程序员和系统分析员,这个比例还要高很多。缺乏文档,一个软件系统就缺乏生命力,在未来的查错,升级以及模块的复用时就都会遇到极大的麻烦。
规范化,标准化的代码编写习惯:
作为一些外国知名软件公司的规矩,代码的变量命名,代码内注释格式,甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和纠错,也有助于不同技术人员之间的协作。
需求理解能力:
作为程序员需要评估该模块在系统运营中所处的环境,将要受到的负荷压力以及各种潜在的危险和恶意攻击的可能性。就这一点,一个成熟的程序员至少需要2到3年的项目研发和跟踪经验才有可能有心得。
复用性,模块化思维能力:
复用性设计,模块化思维就是要程序员在完成任何一个功能模块或函数的时候,要多想一些,不要局限在完成当前任务的简单思路上,想想看该模块是否可以脱离这个系统存在,是否可以通过简单的修改参数的方式在其他系统和应用环境下直接引用,这样就能极大避免重复性的开发工作。
测试习惯:
软件研发作为一项工程而言,一个很重要的特点就是问题发现的越早,解决的代价就越低,程序员在每段代码,每个子模块完成后进行认真的测试,就可以尽量将一些潜在的问题最早的发现和解决,这样对整体系统建设的效率和可靠性就有了最大的保证。
学习和总结的能力:
善于学习,对于任何职业而言,都是前进所必需的动力,对于程序员,这种要求就更加高了。但是学习也要找对目标,一些小coding fans们,他们也津津乐道于他们的学习能力,一会学会了asp,一会儿学会了php,一会儿学会了jsp,他们把这个作为炫耀的资本,盲目的追逐一些肤浅的,表面的东西和名词,做网络程序不懂通讯传输协议,做应用程序不懂中断向量处理,这样的技术人员,不管掌握了多少所谓的新语言,永远不会有质的提高。
⑵ 如何激励程序员让他们自愿多加班
我感觉想要激励程序员,让他们多加班,最重要的是让他们从内心里去想要做这件事情。比如让他们获得成就感,给开发者一个有意义的工作机会。工作本身,分配任务时应该让开发任务是觉得工作是有意义的,赶到要为结果负责并且能看到结果。个人技术生活,向开发人员表明你尊重他们的兴趣及个人爱好。技术管理机会,为每一个开发人员在一些领域提供技术领导地位。提出为他们增加工资,这些都可以激励程序员,让他们自愿多加班。
⑶ 适合做人生信条的句子
丑小鸭之所以能成为白天鹅,是因为它本来就是白天鹅
没有一个煤老板是因为努力挖矿,挖的又快又好而当上老板的
绝大部分人的努力程度都远不到拼天赋的地步
我可以为你做牛做马,前提是你要给我草
没有一个程序员是因为认真学习技术,代码写的又快又好而当上CEO的
说到底,傻逼之所以傻逼,是因为没有和你傻到一块儿
要是不努力你永远都不知道天赋有多重要
自己做不到的事不要认为别人也做不到
信心满满的参加考试的时候不经意瞥见桌子上刻了一句“你这么努力为什么还不成功”···
成功的秘诀就是,坚持,不要脸,坚持不要脸
《疯狂原始人》里面有句台词:“你那能叫活着么?你那只能叫没死。”
我对这个世界失望过,但我从未对自己失望过
自己选的路,跪着也要走完!
你是活了一万多天?还是活了一天 却重复了一万多次?
说出来被人嘲笑的梦想,才有实现的价值
将来的你一定会感激现在拼命的自己
如果不走出去,你就会认为你看到的就是你的全部
现在努力的你,未来的事情谁说得清楚呢?但你不努力,未来是怎样大概都知道了
你必须非常努力,才能看起来毫不费力
理想就像一辆车,如果你认为一切都在你的掌控之中,那么说明你还开得不够快!
不要把这个世界让给你鄙视的人
如果不试的话,你怎么知道自己能做到多少
在一个你不满意的地方,你都无法做领跑者,那么你就没有资格对它不满
这个世界把你磨圆是为了让你滚得更远
当你的野心支撑不了你的梦想的时候,该努力了
生活不可能像你想象得那么好,但也不会像你想象得那么糟
人如果没有梦想和咸鱼有什么差别
没有时间学习的人,是有了时间也不会学习的人!
能被毁灭,但不能被打败
总是有人要赢的,那为什么不能是我呢?
比你优秀的人比你还努力,你还有什么资格懒惰下去!
别人要把你放到最低,把你贬到最低,那你就先把自己放到最低,剩下的只有往上的空间,因为往下的空间已经没有了
我之所以这么努力,是为了有一天这个世界也可以属于弱者
梦想还是要有的,万一实现了呢?
⑷ 鼓励你向前走的人生信条是什么
鼓励我向前走的人生信条就是努力加赚钱,不想平平庸庸一辈子,人的一生有信仰,有追求,做一个对社会有用的人
⑸ 祝福程序员的一句话
程序员祝福语
1、一台电脑,一个键盘,尽情挥洒智慧的人生;几行数字,几个字母,认真编写生活的美好;一个灵感,一段程序,推动科技进步...
1、一台电脑,一个键盘,尽情挥洒智慧的人生;几行数字,几个字母,认真编写生活的美好;一个灵感,一段程序,推动科技进步,促进社会发展。程序员节,用心编写程序,用智慧照亮人生!
2、你把抽象符号变成快乐笑容,你把简单代码变出复杂意义,你演绎枯燥变情趣的游戏,你把辛苦留下捧出生活的神奇。程序员节日里,祝福程序员被幸福刷屏,被快乐链接。
3、点击开快乐的界面,编写下幸福的程序,好运就在你运算的脑海里,成功就在你敲击的双手中。程序员节,我把祝福编辑,愿你把吉祥安康永远保存!
4、一条网线连接四面八方,敲打键盘帅气的模样,“蜗居”生活胸怀天下,编一套快乐的程序,让世界欢畅,程序员日愿程序员朋友好好休息,身体健康,“不着病毒”,祝福你们明天再次创造辉煌。
5、你很有能力,幸福密码来破译;你很有张力,浏览开心与如意;你很有耐力,删除烦恼与失意;你很有实力,快乐福气你点击;程序员节里,祝程序员朋友们,运行幸福程序,愿你们永远有魄力,散发耀眼魅力!
6、一个键盘一根网线你便能打下一片天下,几个字母一些数字你便能创造辉煌人生,一个指令一次回车你便能成就世界,程序员节到了,复制一份快乐给你,粘贴一堆幸福送你,保存一世如意给你,愿你开心永在。
⑹ 什么是价值观,人生观我想成为一个程序员需要什么样的价值观,人生观
价值观就是你认为每一件应该付出多少努力合适,人生观自然就是你认为人应该怎么样活着。但如果做为一个程序员,首先应该有精益求精的价值观。因为你是程度的实现者,实现的方法可能有很多种,你要选其中最准确,最大扩展度,最精练的方法去实现。绝不能凑合。第二,一定要认真。每一种可能出现的情况都要想到,想全,做出正确的判断执行程序。至于人生观,和具体的职业联系不很紧密,还要自己在生活的道路上去探索。
⑺ 如何防止程序员反编译
java从诞生以来,其基因就是开放精神,也正因此,其可以得到广泛爱好者的支持和奉献,最终很快发展壮大,以至于有今天之风光!但随着java的应用领域越来越广,特别是一些功能要发布到终端用户手中(如Android开发的app),有时候,公司为了商业技术的保密考虑,不希望这里面的一些核心代码能够被人破解(破解之后,甚至可以被简单改改就发布出去,说严重点,就可能会扰乱公司的正常软件的市场行为),这时候就要求这些java代码不能够被反编译。
这里要先说一下反编译的现象。因为java一直秉持着开放共享的理念,所以大家也都知道,我们一般共享一个自己写的jar包时,同时会共享一个对应的source包。但这些依然与反编译没有什么关系,但java的共享理念,不只是建议我们这样做,而且它自己也在底层上“强迫”我们这么做!在java写的.java文件后,使用javac编译成class文件,在编译的过程,不像C/C++或C#那样编译时进行加密或混淆,它是直接对其进行符号化、标记化的编译处理,于是,也产生了一个逆向工程的问题:可以根据class文件反向解析成原来的java文件!这就是反编译的由来。
但很多时候,有些公司出于如上述的原因考虑时,真的不希望自己写的代码被别人反编译,尤其是那些收费的app或桌面软件(甚至还有一些j2ee的wen项目)!这时候,防止反编译就成了必然!但前面也说过了,因为开放理念的原因,class是可以被反编译的,那现在有这样的需求之后,有哪些方式可以做到防止反编译呢?经过研究java源代码并进行了一些技术实现(结果发现,以前都有人想到过,所以在对应章节的时候,我会贴出一些写得比较细的文章,而我就简单阐述一下,也算偷个懒吧),我总共整理出以下这几种方式:
代码混淆
这种方式的做法正如其名,是把代码打乱,并掺入一些随机或特殊的字符,让代码的可读性大大降低,“曲线救国”似的达到所谓的加密。其实,其本质就是打乱代码的顺序、将各类符号(如类名、方法名、属性名)进行随机或乱命名,使其无意义,让人读代码时很累,进而让人乍一看,以为这些代码是加过密的!
由其实现方式上可知,其实现原理只是扰乱正常的代码可读性,并不是真正的加密,如果一个人的耐心很好,依然可以理出整个程序在做什么,更何况,一个应用中,其核心代码才是人们想去了解的,所以大大缩小了代码阅读的范围!
当然,这种方式的存在,而且还比较流行,其原因在于,基本能防范一些技术人员进行反编译(比如说我,让我破解一个混淆的代码,我宁愿自己重写一个了)!而且其实现较为简单,对项目的代码又无开发上的侵入性。目前业界也有较多这类工具,有商用的,也有免费的,目前比较流行的免费的是:proguard(我现象临时用的就是这个)。
上面说了,这种方式其实并不是真正加密代码,其实代码还是能够被人反编译(有人可能说,使用proguard中的optimize选项,可以从字节流层面更改代码,甚至可以让JD这些反编译软件可以无法得到内容。说得有点道理,但有两个问题:1、使用optimize对JDK及环境要求较高,容易造成混淆后的代码无法正常运行;2、这种方式其实还是混淆,JD反编译有点问题,可以有更强悍的工具,矛盾哲学在哪儿都是存在的^_^)。那如何能做到我的class代码无法被人反编译呢?那就需要我们下面的“加密class”!
加密class
在说加密class之前,我们要先了解一些java的基本概念,如:ClassLoader。做java的人已经或者以后会知道,java程序的运行,是类中的逻辑在JVM中运行,而类又是怎么加载到JVM中的呢(JVM内幕之类的,不在本文中阐述,所以点到为止)?答案是:ClassLoader。JVM在启动时是如何初始化整个环境的,有哪些ClassLoader及作用是什么,大家可以自己问度娘,也不在本文中讨论。
让我们从最常见的代码开始,揭开一下ClassLoader的一点点面纱!看下面的代码:
Java代码
publicclassDemo{
publicstaticvoidmain(String[]args){
System.out.println(“helloworld!”);
}
}
上面这段代码,大家都认识。但我要问的是:如果我们使用javac对其进行编译,然后使用java使其运行(为什么不在Eclipse中使用Runas功能呢?因为Eclipse帮我们封闭,从而简化了太多东西,使我们忽略了太多的底层细节,只有从原始的操作上,我们才能看到本质),那么,它是怎么加载到JVM中的?答案是:通过AppClassLoader加载的(相关知识点可以参考:http://hxraid.iteye.com/blog/747625)!如果不相信的话,可以输出一下System.out.println(Thread.currentThrea().getContextLoader());看看。
那又有一个新的问题产生了:ClassLoader又是怎样加载class的呢?其实,AppClassLoader继承自java.lang.ClassLoader类,所以,基本操作都在这个类里面,让我们直接看下面这段核心代码吧:
看到这里,已经没有必要再往下面看了(再往下就是native方法了,这是一个重大伏笔哦),我们要做的手脚就在这里!
手脚怎么做呢?很简单,上面的代码逻辑告诉我们,ClassLoader只是拿到class文件中的内容byte[],然后交给JVM初始化!于是我们的逻辑就简单了:只要在交给JVM时是正确的class文件就行了,在这之前是什么样子无所谓!所以,我们的加密的整个逻辑就是:
在编译代码时(如使用ant或maven),使用插件将代码进行加密(加密方式自己选),将class文件里面的内容读取成byte[],然后进行加密后再写回到class文件(这时候class文件里面的内容不是标准的class,无法被反编译了)
在启动项目代码时,指定使用我们自定义的ClassLoader就行了,而自定义的部分,主要就是在这里做解密工作!
如此,搞定!以上的做法比较完整的阐述,可以仔细阅读一下这篇文章:https://www.ddtsoft.com/#developerworks/cn/java/l-secureclass/文章中的介绍。
通过这个方法貌似可以解决代码反编译的问题了!错!这里有一个巨大的坑!因为我们自定义的ClassLoader是不能加密的,要不然JVM不认识,就全歇菜了!如果我来反编译,呵呵,我只要反编译一下这个自定义的ClassLoader,然后把里面解密后的内容写到指定的文件中保存下来,再把这个加了逻辑的自定义ClassLoader放回去运行,你猜结果会怎样?没错,你会想死!因为你好不容易想出来的加密算法,结果人家根本不需要破解,直接就绕过去了!
现在,让我们总结一下这个方法的优缺点:实现方式简单有效,同时对代码几乎没有侵入性,不影响正常开发与发布。缺点也很明显,就是很容易被人破解!
当然啦,关于缺点问题,你也可以这么干:先对所有代码进行混淆、再进行加密,保证:1、不容易找到我们自定义的那个ClassLoader;2、就算找到了,破解了,代码可读性还是很差,让你看得吐血!(有一篇文章,我觉得写得不错,大家可以看一看:http://www.scjgcj.com/#blog/851544)
嗯,我觉得这个方法很好,我自己也差点被这个想法感动了,但是,作为一个严谨的程序员,我真的不愿意留下一个隐患在这里!所以,我继续思索!
高级加密class
前面我们说过有个伏笔来着,还记得吧?没错,就是那个native!native定义的方法是什么方法?就是我们传说中的JNI调用!前面介绍过的有一篇文章中提到过,其实jvm的真实身份并不是java,而是c++写的jvm.dll(windows版本下),java与dll文件的调用就是通过JNI实现的!于是,我们就可以这样想:JNI可以调用第三方语言的类库,那么,我们可不可以把解密与装载使用第三方语言写(如C++,因为它们生成的库是不好反编译的),这样它可以把解密出来的class内容直接调jvm.dll的加载接口进行初始化成class,再返回给我们的ClassLoader?这样,我们自定义的ClassLoader只要使用JNI调用这个第三方语言写的组件,整个解密过程,都在黑盒中进行,别人就无从破解了!
嗯,这个方法真的很不错的!但也有两个小问题:1.使用第三方语言写,得会第三方语言,我说的会,是指很溜!2.对于不同的操作系统,甚至同一操作系统不同的版本,都可能要有差异化的代码生成对应环境下的组件(如window下是exe,linux是so等)!如果你不在乎这两个问题,我觉得,这个方式真的挺不错的。但对于我来说,我的信条是,越复杂的方式越容易出错!我个人比较崇尚简洁的美,所以,这个方法我不会轻易使用!
对了,如果大家觉得这个方法还算可行的话,可以推荐一个我无意中看到的东西给大家看看(我都没有用过的):jinstall,
更改JVM
看到这个标题,我想你可能会震惊。是的,你没看错,做为一个程序员,是应该要具有怀疑一切、敢想敢做的信念。如果你有意留心的话,你会发现JVM版本在业界其实也有好几个版本的,如:Sun公司的、IBM的、Apache的、Google的……
所以,不要阻碍自己的想象力,现在没有这个能力,并不代表不可能。所以,我想到,如果我把jvm改了,在里面对加载的类进行解密,那不就可以了吗?我在设计构思过程中,突然发现:人老了就是容易糊涂!前面使用第三方语言实现解密的两个问题,正好也是更改JVM要面对的两个问题,而且还有一个更大的问题:这个JVM就得跟着这个项目到处走啊!
⑻ 写给程序员:身为管理者,您会带新人吗
教学相长:互相学习
是故学然后知不足,教然后知困。知不足,然后能自反也。教学和学习是相互促进的,IT的世界是在飞速的发展,在你带新人的时候肯定会有自己的收获,这种收获包括管理上的经验,技术的提升。有的时候,一个问题自己做的很清楚了,等到了让自己讲的时候才明白自己还有疑惑的地方。这就是教学相长,在提高别人的同时也在提高自己。给别人讲课锻炼的不是听课的人,对于他们,最多是收获了知识,而对于自己,收获的不仅仅是知识。
当然新人也不是那么好带的,新人技术不完善,很多程序员娶不到媳妇儿赖媒婆,写了代码调试不出来,不是说调用接口有问题,要不就是开发环境有问题。总是能找到一些理由。而不是从自身找原因,在带他们的过程中也需要耐心。
自己总结了一些带人需要注意的事项,仅供参考!
1.不要希望学的太快,迅速见效,学习是一个过程。
2.尽量用实例来驱动,动嘴巴讲没效果。
3.要督促,让他们每天汇报工作情况。
5.要有文档,计划,时间管理等概念。
身为一个管理者,面对带新人这件事情,只能说要有责任心,这是一个责任心问题,也是一个做人问题。做事的结果都会随风而散,做人的收获才能历久弥新。做事有两种境界。一是功利的境界,事情及相关的利益是唯一的目的,于是做事时必定会充满焦虑和算计。另一是道德的境界,无论做什么事,都把做人上的收获看得更重要,做事只是灵魂修炼和完善的手段,真正的目的是做人。像对待自己的孩子一样去对待自己带的新人,一日为师,终身为父。你所浪费的不是你的时间,而你收获的是你的人生。
说到这里,大家的工作是很忙,这取决于自己的心态, 愿不愿意腾出自己的时间去帮助别人,我相信一个道理,投入和产出大部分时间是成正比的。如果肯投入时间,真心,会有回报的。
没有教不好的学生,只有不会教的老师
这是一种做事的态度,而非一定要达到的目标,带新人是走向管理岗位的第一步,始终以“没有教不好的学生,只有不会教的老师”这句话来要求自己,也许你会发现你的生活在悄悄的改变。
⑼ 程序员该有哪些职业道德
只有一个道德问题,诚实和其他技术和贸易问题。
离职的时候,我没有带走一行代码,我觉得这就是职业道德。
目前在国内IT行业,我觉得最可怕的不是问题,但当它人才流失技术(如源代码、文档等)也跟着一起,它是可用的,一些大公司,比如一些外国公司所做的相对较好,电脑上的所有外部设备接口已经被封锁,不得INETERNET,即将离任的电子邮件或被监控,但不用说,这种管理方式,通常国内中小企业很难做到这一点,所以基本上依靠员工的意识和个性,就像心理医生必须为病人保守秘密,作为程序员或者人才,当你从事产品的研发和接手一个项目,你必须与该产品或项目如源代码、文档、数据保密,这些东西是公司的商业秘密。
⑽ java awt;java applet;java swing分别是什么他们之间有什么联系和区别
Applet 是嵌入网页的小程序!
awt和swing里的都是GUI图形所需的类
awt和SWING没什么区别
唯一的区别就是awt没有swing强大(比如:awt里的按钮不能添加图片,而swing里的按钮可以添加) awt是SUN的失败品,所以后来才弄了个swing
祝你成功!