java程序员的进阶

2024-08-21

java程序员的进阶(精选6篇)

篇1:java程序员的进阶

java知识的学习高深进阶篇

Java Learning Path(一)、器材篇

一、JDK(Java Development Kit)

JDK是整个Java的焦点,包含了Java运转环境(Java Runtime Envirnment),一堆Java器材和Java基础的类库(rt.jar)。不论甚么Java使用任事器本质都是内置了某个版本的JDK。因此驾御JDK是学好Java的第一步。最主流的JDK是Sun公司发表的JDK,除了Sun之外,另有不少公司和组织都斥地了自身的JDK,例如IBM公司斥地的JDK,BEA公司的Jrocket,另有GNU组织斥地的JDK等等。此中IBM的JDK包含的JVM(Java Virtual Machine)运转从命要比Sun JDK包含的JVM超出跨越不少。而趁便运转在x86平台的Jrocket在任事端运转从命也要比Sun JDK好不少。但无论怎么说,我们仍是必要先把Sun JDK驾御好。

1、JDK的下载和安装

JDK又叫做J2SE(Java2 SDK Standard Edition),梗概从Sun的Java网站高低载到,JDK当前最新的版本是J2SDK1.4.2,倡议下载该版本的JDK,下载页面在这里:。

下载好的JDK是一个可执行安装法度,默认安装完毕后笼统在C:Program FilesJava目录下安装一套JRE(供阅读器来使用),在C:j2sdk1.4.2下安装一套JDK(也包含一套JRE)。而后我们必要在环境变量PATH的末端头增进java的门路C:j2sdk1.4.2bin。何等JDK就安装好了。

2、JDK的呼吁器材

JDK的最需要呼吁行器材:

java: 创议JVM执行class

javac: Java编译器

jar: Java打包器材

javadoc: Java文档天生器

这些呼吁行必必要非常非常了解,关于每个参数都要很精晓才行。关于这些呼吁的念书,JDK Documentation上有详细的文档。

二、JDK Documentation

Documentation在JDK的下载页面有了下载毗连,倡议同时下载Documentation。Documentation是最最需要的编程手册,涵盖了整个Java全数方面的内容的描写。梗概何等说,念书Java编程,大局部时间都是花在看这个Documentation上面的。我是随身携带的,写Java代码的时候,随时检查,片晌不离手。

三、使用任事器(App Server)

App Server是运转Java企业组件的平台,构成了使用软件的主要运转环境。当前主流的App Server是BEA公司的Weblogic Server和IBM公司的Websphere以及免费的Jboss,定夺此中一个进行念书便梗概了,总体私家举荐Weblogic,由于它的细碎布局越发干净,斥地和安排越发方便,是Java企业软件斥地职员首选的斥地平台。下面简要介绍几种常用的App Server:

1、Tomcat

Tomcat严格含意上并不是一个真正的App Server,它只是一个梗概支持运转Serlvet/JSP的Web容器,不过Tomcat也缩减了一些App Server的从命,如JNDI,数据库毗连池,用户事故处理等等。Tomcat被非常普及的使用在中小范畴的Java Web使用中,因此本文做一点下载、安装和设置装备摆设Tomcat的介绍:Tomcat是Apache组织下Jakarta工程下的一个子工程,它的主网站是:

http://jakarta.apache.org/tomcat/,Tomcat最新版本是Tomcat4.1.27,软件下载的毗连是:http:///index.jsp

BEA的斥地者园地,BEA作为最需要的App Server厂商,有不少独到的技术,在Weblogic上做斥地的朋侪不容错过。

5、http:///

灰狐动力网站,一个专业的中间件网站,虽然不是专业的Java网站,但是在J2EE企业使用技术方面有深邃深邃深挚的成绩。

6、http:///home/(英文)

The Server Side?是一个驰名的趁便面向Java Server端使用的网站。

7、http:///

Jdonbbs,是一个总体私家本质的中文J2EE专业技术bbs,在泛滥的Java的中文bbs中,Jdon一个是技术含量非常高,帖子质量非常好的bbs。

10、http://sourceforge.net/

Sourge Forge?是一个开放源代码软件的大本营,此中有了非常非常丰厚的Java的开放源代码的驰名的软件。

Copyright 2003 Hibernate China

文章来源:java视频http:///

篇2:java程序员的进阶

编程技能

在系统地学习编程技能之前,我希望你能先看一下 “ The Key To Accelerating Your Coding Skills”,这篇文章会告诉你如何有效地快速提高自己的编程能力。然后接下来是下面几大块内容,但还只是入门级的。

编程技巧方面这个阶段,你可以开始了解一下 Java 语言了,我个人觉得 Java 是世界上目前为止综合排名最好的语言。你一定要学好这门语言。推荐《Java 核心技术(卷 1)》,除了让你了解 Java 的语法,它还会让你了解面向对象编程是个什么概念(如果你觉得这本书有点深,那么,你可以降低难度看更为基础的《Head First Java》)。然后,既然开始学习Java 了,那就一定要学 Spring,推荐看看《Spring in Action》或是直接从最新的 Spring Boot 开始,推荐看看《Spring Boot 实战》。关于 Spring 的这两本书,里面可能会有很多你从来没有听说过的东西,比如,IoC 和 AOP 之类的东西,能看懂多少就看懂多少,没事儿。

操作系统。这里你可以看看《鸟哥的 Linux 私房菜》,这本书会让你对计算机和操作系统,以及 Linux 有一个非常全面的了解,并能够管理或是操作好一个 Linux 系统。当然,这本书有很多比较专业的知识,你可能会看不懂,没关系,就暂时略过就好了。这本书的确并不适合初学者,你能看多少就看多少吧。

 网络协议你需要系统地了解一下数据库设计中的那些东西,这里推荐慕课网的一个在线课程--“数据库设计的那些事”。每个小课程不过 5-6 分钟,全部不到 2 个小时,我相信你一定能跟下来。你需要搞清楚数据的那几个范式,还有 SQL 语句的一些用法。当然,你还要学习和使用一下数据库,这里推荐学习开源的 MySQL。你可以看官方文档,也可以看一下这本书《MySQL 必知必会》。 前端方面在你处理中文时有时会发现有乱码出现,此时需要了解 ASCII 和 Unicode 这样的字符编码。这里推荐一篇文章Character encoding。还有 Github 上的这两个 Awesome 仓库:Awesome Unicode 和 Awesome Code Points。

为什么转成 Java 语言?

相信你可能会问,为什么之前学习的 Python 和 JavaScript 不接着学,而是直接切到 Java 语言上来,这样会不会切得太快了。这是一个好问题,这里需要说明一下,为什么我会切到 Java 这个语言上来,主要是有以下几方面考虑。1.Java 是所有语言里面综合实力最强的,这也是为什么几乎所有大型的互联网或是分布式架构基本上都是 Java 技术栈。所以,这是一个工业级的编程语言(Python 和 JavaScript 还达不到这样的水准)。

2.之所以,没有用 Java 来做入门语言而是用了 Python,这是因为编程是一件比较费脑子的事,一开始学习时,兴趣的培养很重要。Python 比较简单,容易上手,能够比较容易地提起兴趣,而用 Java 则可能比较难。3.在你有了一些编程语言的基础后,有了一些代码的逻辑后,切到工业级的编程语言上来,更为专业地学习编程,是非常有帮助的。像 Python 和 JavaScript 这样的动态语言用着是很爽,但是,只有像 C、C++ 和 Java 这样的静态语言才可以让你真正地进阶。

4.对于一个合格的程序员,掌握几门语言是非常正常的事情。一方面,这会让你对不同的语言进行比较,让你有更多的思考。另一方面,这也是一种学习能力的培养,会让你对于未来的新技术学习得更快。很多时候,一些程序员只在自己熟悉的技术而不是合适的技术上工作,这其实并不好,这会让你的视野受限,而视野会决定你的高度。综上所述,这就是在入门的时候我故意让你多学几门语言的原因。

编程工具

编程工具方面,你需要开始学习使用下面这些工具了。

 编程的 IDE。传统一点的,你可以使用 Eclipse。当然,我推荐你使用 Intellij IDEA。这两个工具都可以开发各种语言,但是主要用在 Java。如果你想玩得更时髦一些的话,使用 Visual Studio Code 也不错,这个工具潜力十足,用其开发 Python、JavaScript、Java、Go、C 和 C++ 都能得心应手(教程-本文发布时还基本没怎么翻译完)。

 版本管理工具。版本管理工具是非常重要的编程工具。传统的有 P4、SVN、CVS 等,但都会被 Git 取代,所以,你就只用学习Git 就好了。学习Git 的教程网上有很多,这里我推荐非常系统的 Pro Git 第二版(如 果你觉得 Pro Git 比较枯燥的话,备选猴子都能懂的 Git 入门),然后你要学会使用 GitHub。关于一些 Git 环境安装和准备以及 GitHub 使用,你可以自行 Google(比如:这篇Github and Git 图文教程 或是这篇Git 图文教程及详解)。

 调试前端程序。你需要学会使用 Chrome 调试前端程序,Google 一下会有很多文章,你可以看看 超完整的 Chrome 浏览器客户端调试大全。 数据库设计工具。你需要学会使用 MySQL WorkBench,这个工具很容易使用。相关的手册,你可以看一下官方文档。

实践项目

这回我们需要设计一个投票系统的项目。业务上的需求如下:

     用户只有在登录后,才可以生成投票表单。投票项可以单选,可以多选。

其它用户投票后显示当前投票结果(但是不能刷票)。投票有相应的时间,页面上需要出现倒计时。

投票结果需要用不同颜色不同长度的横条,并显示百分比和人数。

技术上的需求如下:

这回要用 Java Spring Boot 来实现了,然后,后端不返回任何的 HTML,只返回 JSon 数据给前端。

 由前端的 JQuery 来处理并操作相关的 HTML 动态生成在前端展示的页面。

 前端的页面还要是响应式的,也就是可以在手机端和电脑端有不同的呈现。这个可以用 Bootstrap 来完成。

如果你有兴趣,还可以挑战以下这些功能。

在微信中,通过微信授权后记录用户信息,以防止刷票。 可以不用刷页面,就可以动态地看到投票结果的变化。

 Google 一些画图表的 JavaScript 库,然后把图片表得风骚一些。

小结 上面那些书和知识你要看完,还要能理解并掌握,我估计你最少也要花 1-2 年左右的时间。如果你能够走到这里,把前面的那些知识都了解了,不用精通,能独立地做出上面的那些实践项目,那么,你就算是真正的入门了。

而且,你已经是一个 “ 全栈工程师 ” 的样子了,在这里我要给你一个大大的赞。如果这个时候,你对编程还有很大的热情,那么我要恭喜你了,你可能会是一个非常不错的程序员。加油啊!

上面的那些技术已经算是比较专业的了。如果你已经大致掌握了,我相信你可以找到至少年薪 20 万以上的工作了,而且你的知识面算是有不错的广度了。但是深度还不够,这个时候,是一个比较关键点了。

你可能已经沉醉在沾沾自喜的骄傲的情绪中,那么你也可以就此止步,加入一些公司,在那里按部就班地完成一些功能性的开发,成为一个搬砖的码农。你也可以开始选择一个方向开始深入。

我给你的建议是选择一个方向开始深入。因为你并不知道你未来会有多大的可能性,也不知道你会成为什么样的人,所以为什么不再更努力一把呢?

篇3:UDP的Java聊天程序

Java语言似乎专门为网络设计的,用其开发网络软件特别便利,在Internet时代,Java热遍及全球,学习和使用Java的人越来越多。在Java中进行网络编程是相对容易的,因为J2SE中的java.net包已经对各种通信协议很好地进行了封装。文中用Java来实现基于UDP的聊天程序,限于篇幅,只实现了基本的聊天功能。

首先,要介绍Java中封装UDP编程的类———DatagramSocket,这是用来发送和接收数据报的套接字。在程序启动后,可以在构造函数中提供端口参数用以在本地主机上绑定一个端口,以便接收和发送数据报。DatagramSocket类的send方法可以将参数对象的数据报发送到目的主机的目的端口;receive方法可以接收网络上其他主机发送过来的数据报并封装成对象。

其次,要介绍的就是承载数据报的对象DatagramPacket,这个对象封装了UDP的数据报数据,通过重载构造函数,提供不同的参数,可以把DatagramPacket构造成发送数据或接收数据的数据报对象。发送数据的对象将作为DatagramSocket类的send方法的参数;接收数据的对象将作为DatagramSocket类的receive方法的参数。

以上两个类,其实就基本可以实现UDP方式的网络聊天功能了,但是为了数据报能够正确发送,还得借助InetAddress类。InetAddress类表示互联网协议(IP)地址,通过调用静态方法getByName并提供字符串形式的IP地址参数就可以得到对应的IP地址对象,把它传给DatagramPacket,再用UDP套接字的send方法就可以向IP地址对应的主机发送数据了。

为了方便用户的使用,把程序分成两个类,主类为Chat,里面有主函数main,以便应用程序的运行;另一个类FrameMain,扩展了窗体类,方便用户输入及显示消息。主函数main中实例化了主窗体FrameMain。

接下来来看具体代码,为描述程序的方便,分块地来研究,先看代码片断1:

以上对象都是程序中要使用的主要对象,除了本地监听端口设了9000的值,其他对象都是空对象。recvPacket对象将在套接字调用完receive方法后实例化,而sendPacket对象和IP对象将在触发发送数据报的代码时创建。UDPSocket对象是核心,将在一个单独的初始化方法jbInit(JBuilder开发工具默认生成的方法)中对这个对象进行创建,并且在窗体构造函数中调用jbInit方法。请看以下jbInit方法的代码片断2:

以上代码在实例化UDPSocket对象时以9000的端口号作为监听端口。UDP套接字通过调用receive方法监听数据报并实例化recvPacket,但是由于该方法在接收到数据报前一直阻塞,所以为了与主界面功能互不影响,将这个会阻塞的方法放到一个单独的线程中,这样,主界面的发送和显示功能与接收数据报的功能可以认为是同时在进行,互不干扰。请看以下代码片断3:

以上代码中,run函数定义在主界面类FrameMain中,它实现了Runnable接口,然后在jbInit函数中创建了一个子线程recvThread,将主界面的实例传给子线程,意味着子线程在运行过程中要工作的代码写在主界面的run函数中,并且调用start方法启动子线程(参见代码片断2)。UDPSocket对象的receive方法返回后,recvPacket中就有了数据报的内容,通过调用getData方法获取字节数组,并组合成字符串显示。那么,recvPacket中的数据是谁发来的呢?答案就是网络中的其他主机,发送数据报的过程是,先得到用户的输入数据,然后得到用户输入的目标主机和端口,最后组合成数据报对象sendPacket,调用UDP套接字的send方法发送。请看以下代码片断4:

以上代码中,jtfSend是用户输入聊天信息的文本框,jtaReceive是显示接收信息的多行文本框。sendMessage函数可以由输入框(jtfSend对象)或发送按钮的Action事件调用,信息朝目标主机同端口(9000号端口,sendPacket构造函数的第四个参数)发送后,同时也显示在本机聊天窗体的信息框中。为了测试程序,我们用两台局域网内的主机做实验,A主机IP地址为172.16.10.166,B主机IP地址为172.16.10.222。分别在两台主机中运行聊天程序,并相互输入聊天信息,可见程序运行结果如图1所示。

由此可见,用Java语言实现简单的UDP聊天程序是相当容易的,核心的收发数据报功能只要借助DatagramSocket和DatagramPacket两个类就可以完成,如果再把其他功能完善一下,就可以编写出更有实际用途的网络聊天程序。

摘要:UDP是OSI参考模型中一种无连接的传输层协议,它提供了简单不可靠的信息传送服务。由于UDP比较简单,UDP头包含很少的字节,所以它在速度方面有很大优势。很多常用的即时通软件,如QQ程序,都会使用UDP实现很多基本功能。Java语言是当今流行的网络编程语言,它的API封装了UDP编程的类,用来实现UDP聊天程序很容易。

关键词:UDP,Java,聊天程序

参考文献

[1]UDP.用户数据报协议.http://www.networkdictionary.cn/pro-tocols/udp.php.

[2]方建文.Java UDP编程及应用.电脑学习,2005,1.

篇4:Java编程语言程序的认识误区

软件的生命性

软件是有生命的,这可能是老调重弹了,但是因为它事关分层架构,反复强调都不过分。

一个有生命的软件首先必须有一个灵活可扩展的基础架构,其次才是完整的功能。

目前,很多人对软件的思想焦点还是落在后者:完整的功能,觉得一个软件功能越完整越好,其实关键还是架构的灵活性,就是前者,基础架构好,功能添加只是时间和工作量问题,但是如果架构不好,功能再完整,也不可能包括未来所有功能,软件是有生命的,在未来成长时,更多功能需要加入,但是因为基础架构不灵活不能方便加入,死路一条。

正因为普通人对软件存在短视误区,对功能追求高于基础架构,很多吃了亏的老程序员就此离开软件行业,带走宝贵的失败经验,新的盲目的年轻程序员还是使用老的思维往前冲。其实很多国外免费开源框架如ofbiz compiere和slide也存在这方面陷阱,貌似非常符合胃口,其实类似国内那些几百元的盗版软件,扩展性以及持续发展性严重不足。

那么选择现在一些流行的框架如Hibernate、Spring/Jdonframework是否就表示基础架构打好了呢?其实还不尽然,关键还是取决于你如何使用这些框架来搭建你的业务系统。

存储过程和复杂SQL语句的陷阱

首先谈谈存储过程使用的误区,使用存储过程架构的人以为可以解决性能问题,其实它正是导致性能问题的罪魁祸首之一,打个比喻:如果一个人频临死亡,打一针可以让其延长半年,但是打了这针,其他所有医疗方案就全部失效,请问你会使用这种短视方案吗?

为什么这样说呢?如果存储过程都封装了业务过程,那么运行负载都集中在数据库端,要中间J2EE应用服务器干什么?要中间服务器的分布式计算和集群能力做什么?只能回到过去集中式数据库主机时代。现在软件都是面向互联网的,不象过去那样局限在一个小局域网,多用户并发访问量都是无法确定和衡量,依靠一台数据库主机显然是不能够承受这样恶劣的用户访问环境的。

从分层角度来看,现在三层架构:表现层、业务层和持久层,三个层次应该分割明显,职责分明,持久层职责持久化保存业务模型对象,业务层对持久层的调用只是帮助我们激活曾经委托其保管的对象。所以,不能因为持久层是保管者,我们就以其为核心围绕其编程,除了要求其归还模型对象外,还要求其做其复杂的业务组合。打个比喻:你在火车站将水果和盘子两个对象委托保管处保管,过了两天来取时,你还要求保管处将水果去皮切成块,放在盘子里,做成水果盘给你,合理吗?

上面是谈过分依赖持久层的一个现象,还有一个正好相反现象,持久层散发出来,开始挤占业务层,腐蚀业务层,整个业务层到处看见的是数据表的影子(包括数据表的字段),而不是业务对象。

当然适量使用存储过程,使用数据库优点也是允许的。按照Evans DDD理论,可以将SQL语句和存储过程作为规则Specification一部分。

Hibernate等ORM问题

现在使用Hibernate人也不少,但是他们发现Hibernate性能缓慢,所以寻求解决方案,其实并不是 Hibernate性能缓慢,而是我们使用方式发生错误:

“最近本人正搞一个项目,项目中我们用到了struts1.2+hibernate3,由于关系复杂表和表之间的关系很多,在很多地方把lazy都设置false,所以导致数据一加载很慢,而且查询一条数据更是非常的慢。”

Hibernate是一个基于对象模型持久化的技术,因此,关键是我们需要设计出高质量的对象模型,遵循DDD领域建模原则,减少降低关联,通过分层等有效办法处理关联。如果采取围绕数据表进行设计编程,加上表之间关系复杂(没有科学方法处理、侦察或减少这些关系),必然导致系统运行缓慢,其实同样问题也适用于当初对EJB的实体Bean的CMP抱怨上,实体Bean是Domain Model持久化,如果不首先设计Domain Model,而是设计数据表,和持久化工具设计目标背道而驰,能不出问题吗?关于这个问题N多年前就争论过。

这里同样延伸出另外一个问题:数据库设计问题,数据库是否需要在项目开始设计?

如果我们进行数据库设计,那么就产生了一系列问题:当我们使用Hibernate实现持久保存时,必须考虑事先设计好的数据库表结构以及他们的关系如何和业务对象实现映射,这实际上是非常难实现的,这也是很多人觉得使用ORM框架棘手根本原因所在。

当然,也有脑力相当发达的人可以实现,但是这种围绕数据库实现映射的结果必然扭曲业务对象,这类似于两个板块(数据表和业务对象)相撞,必然产生地震,地震的结果是两败俱伤,软的一方吃亏,业务对象是代码,相当于数据表结构,属于软的一方,最后导致业务对象变成数据传输对象DTO,DTO满天飞,性能和维护问题随之而来。

领域建模解决了上述众多不协调问题,特别是ORM痛苦使用问题,关于 ORM/Hibernate使用还是那句老话:如果你不掌握领域建模方法,那么就不要用Hibernate,对于这个层次的你:也许No ORM 更是一个简单之道。

Spring分层矛盾问题

Spring是以挑战EJB面貌出现,其本身拥有的强大组件定制功能是优点,但是存在实战的一些问题,Spring作为业务层框架,不支持业务层Session 功能。

具体举例如下:当我们实现购物车之类业务功能时,需要将购物场合保存到 Session中,由于业务层没有方便的Session支持,我们只得将购物车保存到 HttpSession,而HttpSession只有通过HttpRequest才能获得,再因为在Spring业务层容器中是无法访问到 HttpRequest这个对象的,所以,最后我们只能将“购物车保存到HttpSession”这个功能放在表现层中实现,而这个功能明显应该属于业务层功能,这就导致我们的Java项目层次混乱,维护性差。 违背了使用Spring和分层架构最初目的。

领域驱动设计DDD

现在回到我们讨论的重点上来,分层架构是我们使用Java的根本原因之一,域建模专家Eric Evans在他的“Domain Model Design”一书中开篇首先强调的是分层架构,整个DDD理论实际是告诉我们如何使用模型对象oo技术和分层架构来设计实现一个Java项目。

我们现在很多人知道Java项目基本有三层:表现层、业务层和持久层,当我们执着于讨论各层框架如何选择之时,实际上我们真正的项目开发工作还没有开始,就是我们选定了某种框架的组合(如Struts+Spring+Hibernate或Struts+EJB或Struts+ JdonFramework),我们还没有意识到业务层工作还需要大量工作,DDD提供了在业务层中再划分新的层次思想,如领域层和服务层,甚至再细分为作业层、能力层、策略层等等。通过层次细化方式达到复杂软件的松耦合。DDD提供了如何细分层次的方式

当我们将精力花费在架构技术层面的讨论和研究上时,我们可能忘记以何种依据选择这些架构技术?选择标准是什么?领域驱动设计DDD 回答了这样的问题,DDD会告诉你如果一个框架不能协助你实现分层架构,那就抛弃它,同时,DDD也指出选择框架的考虑目的,使得你不会人云亦云,陷入复杂的技术细节迷雾中,迷失了架构选择的根本方向。

现在也有些人误以为DDD是一种新的理论,其实DDD和设计模式一样,不是一种新的理论,而是实战经验的总结,它将前人使用面向模型设计的方法经验提炼出来,供后来者学习,以便迅速找到驾驭我们软件项目的根本之道。

篇5:java程序员的进阶

程序员提高自我修养是为了什么?

程序写的好有人崇拜,有妹子喜欢?还是到博客、论坛、社区发表文章进行分享获得成就?我想这是少数人的追求,也是更高的追求,在这之前

我认为,在中国,程序员提高自我修养的目的,是为了:

1、更好的融入工作,减少困难,增加成就

2、稳步的提升能力,提高收入,达成财务自由

2、站在更高的层面看待自己的学习和工作,树立更加适合的人生观价值观,家庭幸福,生活愉快

说的更通俗一点,就是用更加合理的方式和方法,赚取到更多的收入

说了这么多废话,进入正题

何为程序员的自我修养?

正面论述很难说清楚,反向描述可能更通俗易懂一些,自我修养的对立面是“没有修养”,先说一说在这么多年的工作、学习、生活中,遇到的一些我认为“没有修养”的程序员形态:

1、程序员小张遇到了一个开发问题,很着急,想到了有几个群,于是到群里发了他的问题,坐等回答,发现没有人回答,就直接对话群主的QQ,群主也不回答,于是小张就搜索,突然搜到博客园有个帖子讲解了相关话题,他看完就给博主留言,我的邮箱是:XXXXX@qq.com,麻烦博主把源码发给我一下,谢谢。

2、程序员小张进公司3个月了,老板布置了很多任务,他觉得老板很没人性,工资给的不高,加班也不给钱,于是在写代码的时候能省就省,客户反馈有问题也不主动解决,敷衍为主,又过了一个月,跳槽了。

3、程序员小张正在写一个功能模块,需要进行某种加密,到百度搜到了一个编码模块,看不明白具体写了什么,但是放到程序里刚好适用,于是就这么原封不动放进去了。

4、程序员小张要对某个功能进行研发,项目经理对他说,这个功能应该能搜索到,你去搜搜看,小张就在百度搜啊搜,一天过去了啥都没找到,项目经理来到小张身边坐下,换了个关键词,1分钟就搜到了解决方案。

5、程序员小张学.NET已经工作3年了,工资还是10000,和公司提涨工资也没答应,想跳槽又犹豫,这时某个前辈对他说,你去看书吧,多看一些书,例如 《Visual C# 从入门到精通》,《CLR via C#》《Javascript权威指南》等等,于是小张买回来了,随手翻了翻发现有些东西是他已经会的,有些看不懂的好像又用不到,而且书这么厚,要不要浪费时间去看呢?小张就这样反复纠结了半年,依然每天上班工作,下班LOL,偶尔还抱怨一下工资低。

6、程序员小张到了一家新公司,在做一个项目实现某个功能时,想起来以前做过这样的功能,可是竟想不起怎么实现了,于是就到自己电脑上找文档,找了好久也没找到,只好放弃,最后又折腾了2天,终于还是把这个功能给实现了。

7、程序员小张某天非常不高兴,因为他的项目经理和项目组的产品人员又变更需求了,新的需求又要对整个结构进行大的调整,小张很郁闷,到一个QQ里发泄情绪,说了这个事,于是立马,QQ群里面炸开锅了,程序员小李说,对,产品就是狗日的!程序员小王说,对,他妈的项目经理整天高枕无忧,就知道压榨开发人员!程序员小孙说,是的是的,我上一家公司也是这样,压榨程序员,幸好我走了。就这样,在一片骂声中,几个程序员心情舒畅了,小张开心的去玩王者荣耀去了。

我想,有些人可能已经明白我要说什么,有些人可能还不明白,具体的话我也说不出来,只能用一句话来概括就是:

在编写代码的过程中,善于学习、掌握方法、勤加思考、勤奋努力、持之以恒,长此以往,在编程中,你会发现不一样的自己。

以上这些还是比较抽象,那么

提升自我修养的具体方法有哪些?

程序员具体如何达成“较高的修养”,每个人各有自己的办法,我无法说到很细,就和如何提高做人修养一样,一句两句话是说不清楚的,但是有些说法也通俗易懂,比如一个小孩,有教育良好的父母,父母彬彬有礼,小孩从小开始接受正规教育,小学、初中、高中、大学,然后文化课程和社会实践良好,那么这个小孩最终的做人修养,一定比没有经历过这个过程的小孩更好一些。

同样的,写程序也是如是,下面我就讲一些最基本的、最浅显易懂的学习方法和道理,我把它叫做:

程序员基础的基础

一个好的开发人员,应该能够全面、高效、严谨的去处理任何软件程序和业务问题,成为一个好的开发,是一个很有意思的话题,不过无论这个话题如何开展,基础两个字必不可少,虽然代码量是衡量开发能力的重要指标,但仅能够熟练的进行代码编写是不够的,更要能深刻的理解技术原理和业务逻辑,扎实的个人基础和技术基础往往会促进代码的编写,更游刃有余的解决问题。

下面说的一些基础,可能绝大部分开发人员都不会在意甚至忽略,但恰恰这些才是开发大厦的基石。

1、科学基础

成为开发人员的过程不尽相同,有的是科班出身,有的是兴趣爱好,还有的是专业机构的培训,在这个过程中,可能全面或者零散甚至没有学习过计算机基础学科,但无论是哪一种,想要成为更高层次的开发人员,写出更高质量的代码,计算机基础学科的学习,是非常非常非常(重要的事情说三遍)重要的。具体的来说,基础学科在实践应用中,有如下几门是一定需要的,按照学习顺序排列如下

1)数据结构 数据结构课程通俗的说就是告诉你如何用最基本的语言类型、变量,关键词语句等,去处理各式各样的逻辑问题,我们称之为算法,而日常编程中的各种问题,例如排序、文件夹遍历操作、数据库查询等,都可以在数据结构课程中,找到对应的数学原型。数据结构课程的理解能力,也是一个人数学能力的体现,数据结构学习的好坏,是程序员水平差异的一个重要分水岭,对于这一块内容的学习,有如下建议:使用VB、C、C++、Pascal等语言,买一本相关语言数据结构与算法的书,或者在网上下载相关的PDF电子书,完整的学习一边,并将书本中的所有案例亲自编写运行调试一遍,当能够领悟到某些日常编程中常见手法源于某些数据结构和算法时,就基本达到了学习效果。

2)操作系统

所有编程语言的开发以及应用的运行,都基于操作系统,桌面编程中的大部分场景包括内存、进程、文件系统、网络通讯、用户界面等,都源于操作系统的定义和概念,完整的了解操作系统的起源和组成以及运行逻辑,对多线程、复杂界面、文件管理以及一些难以正常理解编程思路等开发中遇到的场景,有非常大的帮助,不仅帮助理解,也能掌握更多有效的程序写法。具体可以买一本操作系统的书或者下载相关PDF电子书,完整的浏览一遍,做到能够结合实际编程场景来看待操作系统原理,就基本达到了学习效果。

3)数据库

传统的关系型数据库,入门简单,深入却难,往往开发人员能够较快的掌握增删改查、视图、索引、存储过程等基本数据库操作,却在编写复杂查询、设计主外键、优化字段、去除冗余等时,出现只会依葫芦画瓢却不能自主思考扩展的状况。究其原因还是没能了解关系数据库的根本原理,而数据库这一门课程,系统的阐述了关系型数据库的来龙去脉,了解其中的数学原理或逻辑基础所在,对提升数据库编程水平有质的影响。建议也是买一本数据库的相关书籍或者下载PDF电子书,能够把熟练的把第一范式、第二范式等数据库课程的基本知识点与数据库编程场景建立起关联,也基本达到了学习效果。

4)编译原理

编译原理是编程语言以及各类语言编译器的科学基础,可以说编译原理创造了世界上的几乎所有的IT应用,学习编译原理的基础是数据结构和算法,因此编译原理的学习要花费更多的时间和精力,由于现代高级编程语言的编译器,在代码优化、资源优化方面已经做的足够智能,因此,编译原理的学习对实战的影响越来越小,但是正所谓本盛末荣,如果认为自己对数据结构和算法的学习达到了一个较高的水平和状态,可以在编译原理学习上进一步深入,最终把自己和普通程序员拉开更大的差距。

2、英语能力

英语的天然特性和字母长度还有学科发展的历史因素,决定了编程语言一定是基于英语的,在编程过程中,从语言的关键词到文档的内容又或是搜索引擎的搜索结果,都不可避免的会遇到英文。大部分编程人员,都具备英语四级左右的英文基础,却由于非专业以及工作环境原因,逐渐疏远甚至完全淡忘了英语。而实际操作中,大部分编程语言资料都是英文,在线编程问答内容也是英文,因此,很有必要把英语能力重新恢复到一个不用太高但行之有效的水平,达到如下效果:

1)对自己所使用语言,每一个关键词都知道具体的英文翻译、逻辑含义以及读音。2)对于自己使用语言所涉及到的相关方法、类库、框架、工具等,能知道其中每一个方法、过程以及参数关键词等的英文翻译、逻辑含义以及读音。

3)对常见的编程逻辑和核心关键词,能够用英文组织问题的描述,最简答的也行,只要能被搜索引擎读懂就可以。比如如何在C#中把整形转换为字符串类型这个问题,最简易的英文描述就是 C# Integer Covert To String。

4)在自己技术知识范围内的任何的英文的技术手册、文档、文章或是问题描述,能够读懂8成的内容含义,能够读懂完整的技术含义。

3、搜索方法

任何一个开发人员,都应当具备搜索能力,甚至是一定要具备搜索能力,搜索引擎的宝藏,是无穷无尽的,同样具备搜索意识的不同程序员,却因为搜索技巧的差异最终在程序开发质量、项目实施效率、甚至是工程产品质量上出现数倍的差异,因此,掌握高效、先进、灵活的搜索方法和技巧,是非常非常非常(重要的事情说三遍)有用的。其中主要的方法介绍如下:

1)搜索源选择

 虽然英文的编程资料更为准确高效,但中文的编程资料数量上却占优,因此遇到问题第一搜索选择还是百度

 谷歌对于专业中文词汇的处理能力有时候甚至比百度还要强,而且谷歌能搜出大量的英文资源,因此谷歌也是首选之一,但是由于谷歌被封锁,因此需要进行VPN、SSH等FQ操作,或者在百度搜索“谷歌镜像”关键词,通过谷歌的镜像网站进行访问。

 除了搜索引擎,专业的技术网站、论坛、社区也是非常直接有效的搜索源,比如国外的StackOverFlow网站,国内的Cnblogs博客园、OSChina开源中国等,都具备搜索功能,将问题关键词输入其中,也许也会很快的得到相关答案。

 对于QQ群,建议不要使用,除非QQ群主或者成员是非常闲或者非常非常热心的人,否则在QQ群询问技术问题,是非常低效率的搜索方式。

2)关键词构造

搜索关键词的构造,直接影响搜索效率和正确结果的过滤,没有什么特别的技巧,关键在于搜索积累,但是总体遵循的原则是,准确和简洁,比如当出现一个描述,如何用C#对XML进行序列化和反序列化,非常愚蠢的关键词构造就是“如何用C#对XML进行序列化和反序列化”,而正确高效的关键词则是“C# XML 序列化 反序列化”,或者在谷歌里面搜索则是“C# XML Serialization”。在平时的编程中,一定要注意相关方法和经验的积累

3)联想搜索

联想搜索,不属于搜索引擎的范畴,却是在搜索中很有用的高级技巧,举一个通俗的例子,比如想使用C#,利用某个.NET类处理一种HTTP通讯,但是一直搜索不到完美的结果,不过换个思路,考虑到VB.NET也是.NET体系,和C#完全相通,那么也可以试着用VB.NET关键词进行搜索,搜索到完美代码后再临摹成C#代码。这样的联想搜索,不仅能够帮助搜索正确结果,也是对大脑思维的训练,值得多多尝试。4)资源搜索

开源的框架、产品、工具、控件等开发辅助类东西越来越多,稳健性和迭代性越来越强,去寻找一款成熟的工具或者插件,也成为了大量开发者的必备方法和技能,而如何高效的搜索出想要的资源,也成为了一门学问,其核心方法就在于知晓资源网站的地址,常见的例如有开源中国、Github、CSDN下载、pudn等。资源类网站需要平时多积累,到用到的时候会非常关键。

4、思维模式

开发人员,一定要养成业务思维的模式,所谓的业务思维,就是在做任何一个项目的时候,写任何代码前,需要对项目本身的业务概念和业务逻辑甚至业务流程都要有一个全面的学习和理解,这虽然不是一个项目的强制要求,却是一个很好的开发习惯,无论自己的觉得是开发者还是测试员又或是技术总监,掌握了业务原理,才能够更好的设计或阅读项目的数据结构和流程结构。程序员的思维往往和用户或者客户是不一致的,摆脱技术思维模式,习惯于用业务思维解决问题的程序员,不一定最优秀,但一定是一个很容易沟通的程序员

5、工作与编程习惯

有的人说爱干净浪费时间,所以不修边幅,但归根结底这还是习惯问题,当养成清洁卫生的习惯并使之成为生活惯性时,往往就不会耗费更多的时间,反而显得干净干练。写程序同样如是,有一些编程习惯,看似不足为道,看似浪费时间,可是如果坚持下去,最终都能收到意想不到的奇效。下面列举一些特别重要的习惯。1)快捷键的使用

无论是使用Windows、Linux操作系统,还是在IDE中,快捷键都是系统本身的标配,事实上,Ctrl+C、V这样的操作,大部分人都能尝到在节省时间上的甜头,把这个概念进一步扩散,如果在IDE中编写代码,除了代码本身,将其余所有的鼠标操作、键盘定位操作,都用快捷键来代替的话,在时间上将会有数量级的节省,然而看上去这么好的事情,真正坚持去执行并形成习惯的人屈指可数,因此,在初期的改变习惯,记住快捷键,会是一个长期的过程,需要不断的坚持。

2)代码注释

一个开发人员随着年龄和经验的增长,所参与的项目,再也不是靠一个人或者几个人就能完成的。系统的重构、代码的重构、工作的交接、对新进人员的培训等等类似的事情,会越来越多的遇到,这些事情无一例外都会把已经写过的代码重新或者重复阅读,如果在初始编写代码时,就做到完整、清晰明了的代码注释,对后续工作会有巨大的帮助。不仅提高工作效率,还能增强合作好感。事实上,就算只是自己看自己的代码,如果有注释,也能加深印象,缩短代码查找时间。因此,任何开发人员,都应该养成良好的代码注释习惯。

优秀的代码注释应该能做到:

  每一个函数、每一个属性甚至是变量的划分,都可以找到对应的解释。多使用越来越被IDE支持的XML注释方式,不仅有注释文字,更有详细的参数描述。 对程序结构、模块、组成部分划分等也加以注释

3)命名规则

具备一定规模的软件公司,在代码编写上都有一套自己的命名规则,涵盖项目、模块、函数、变量等等,标准化命名的好处不言而喻,然而被动、被迫去遵守命名规则和主动习惯于使用命名规则是完全不一样的。一个优秀的开发人员,应当发自内心的希望各种代码命名都是有规则的,易读的,而不是纠结于命名规则会增加码字长度。

4)不将就的编程逻辑

所谓不将就的编程逻辑,其对立面就是不讲究的编程逻辑,不讲究的编程,不仅是一种很坏的编程习惯,也体现了低下的生活品质,很多开发人员,因为个人习惯、赶工期、客户要求不高等多种原因,在编程时特别随意,体现在比如为了实现某个功能,百度出一段代码,直接套用,10行的代码只理解8行,有两行看不懂也放到程序里去使用,很多这样的小细节,就好比在项目中埋下了无数的定时炸弹,不仅有很大概率形成返工,更是为项目埋下了风险。编程人员,应当有担当有态度,养成不将就的编程逻辑,不勉强自己,也不轻视程序。

5)数据备份

误删、误操作、电脑断电、文件遗失等等状况是每一个开发按人员都可能遇到的问题,如果不希望辛勤的劳作被浪费,不希望偶然的意外影响工作,那做好备份是必不可少的,在较大规模的公司,会有完整的源代码管理以及信息安全防护,而无论是在大公司工作,还是身处较小公司或者在实现个人代码价值时,都要做好代码和文档的数据备份,备份方式的选择灵活多样,有使用在线的CVS、SVN、TFS、Git源代码管理,也可以手工拷贝文件至云空间或者本地硬盘,甚至可以在个人电脑上组成RAID磁盘阵列等等,养成周期性、规律性的备份习惯。

6)邮件工作方式

沟通是进步的源泉,如果说开发小组的热烈讨论是性格和激情的体现,那邮件的工作方式也是另一种稳重和高效。无论是公司层面的工作沟通,还是开发小组的问题交流,邮件的作用包括问题正规化描述、工作留档留痕、工作流程流转、责任分工明确等等,习惯于将重大问题、重要事项通过邮件的方式与同事、主管等进行沟通,将会非常有助于团队协作。

以上这些方法,是我这么多年来的感受和体会,也给了我很大的帮助,希望也能够帮助到大家,不能说一定可以“提升修养“,但也是”提升修养”的有效方式。

最后还想再说一说坚持的力量

篇6:java程序员的进阶

Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。自1995年问世以来在我国的应用和开发也得到了迅速普及,总体来看,这些应用主要集中于企业应用开发。据有关单位调查显示,从开发领域的分布情况上看 Web开发占了一半以上,为57.9%,JavaME移动或嵌入式应用占15%,C/S应用占11.7%,系统编程占15.4%。近30%的开发者用Java从事C/S应用或系统级应用的开发。

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。

java在互联网方面影响和前景

Java并不是为Internet、 你的浏览器怎样处理新的类型文件。当我们能在2400 baud线上传输视频图象时,HotJava将能显示这些视频。

Java在电子商务方面的应用和特性

电子商务要求程序代码具有基本的要求:安全、可靠、同时要求能与运行于不同平台的机器的全世界客户开展业务。Java以

其强安全性、平台无关性、硬件结构无关性、语言简洁同时面向对象,在网络编程语言中占据无可比拟的优势,成为实现电子商务系统的首选语言。在桌面应用上,尽管Java在桌面GUI方面尚有不尽如人意之处,但仍然有很多开发者用来开发运行在多种操作系统平台上的 桌面应用。具体应用在如下几个领域: 1.行业和企业信息化

由于Sun、IBM、Oracle、BEA等国际厂商相继推出各种基于Java技术的应用服务器以及各种应用软件,带动了Java在金融电信、制造等领域日益广泛的应用。如清华大学计算机系利用Java、XML和Web技术研制开发了多个软件平台,东方科技的Tong Web、金碟的Apusic、中创的Inforweb 等J2EE应用服务器及和佳ERP和宝信ERP等ERP产品,已在许多企业得到应用。

2.电子政务及办公自动化

东方科技、金碟、中创等开发的J2EE应用服务器在电子政务及办公自动化中也得到应用: 如金碟的Apusic在民政部、广东省市工商局应用;东软电子政务架构EAP平台在社会保险、公检法、税务系统得到应用;中创的Inforweb等Infor系列中间件产品在国家海事局、山东省政府及中国建设银行、民生银行等

金融系统应用;无锡永中科技基于Java平台开发的国产化集成办公软件Office”也已在一些省市政府部门得到应用。

3.嵌入式设备及消费类电子产品

无线手持设备、通信终端、医疗设备、信息家电(如数字电视、机顶盒、电冰箱)、汽车电子设备等是今年以来比较热门的Java应用领域。在这方面的应用有中国联通CDMA 1X网络中基于Java技术的无线数据增值服务——UniJa。

4.辅助教学

在辅助教学方面,东南大学与中兴通讯公司开发了远程教学系统,用于本地网上教学、课后学习和异地远程教育,清华大学用Java进行了“计算机软件基础课”教学改革,分析研究Java教学软件BlueJ的汉化方案,电子科技大学应用Java RMI技术进行远程教育,西安电力高等专科学校采用Java技术,开发了交互式电站仿真系统,实现电站锅炉仿真、锅炉膛火焰仿真,为实现网上仿真进行有益探索。选择,在你的职业生涯中已经迈出了成功的第一步,在你的未来不会为失业而忧心,更不会在就业压力面前选择退缩。

很多人在选择职业的时候很难给自己的职业未来有一个明确的定位,在他们眼中,选择职业只是考虑到当前的形势,只是为了一时的利益。这种表现在很多大学生的经历中也显而易见,他们在选择专业的时候,考虑的只是这个专业的“热”与否,这个专业是否轻松等等,根本没有经过详细的调查和预测未来的发展前途,所以到毕业了还是不能拥有一份真正适合自己的工作。

目前,Java是国内较为前沿的编程语言,同时掌握Java技术的专业人士也是社会紧缺的技术人才。如果你还梦想着高薪就业,学习Java也是你成功路上

的不错选择。

北大青鸟是东北片区极具专业的IT专业技术培训机构,其雄厚的师资力量、丰富的教育资源和人性化的管理于一体的办学模式,以学员的就业为核心,以学员的创新思维为向导,确保学员能学到实用的IT技术!

北大青鸟有适合各个年龄段各个学历的对应课程,入学前会对学员进行专业的测试,从而了解学员的具体情况,以便推荐到最适合学员的专业和方向。

详情请咨询

上一篇:运动会开幕式致辞下一篇:三年级猜猜他是谁作文