丑话先说在前面:这些都仅仅是顶尖程序员的一些根本的思想方法,不能代表你学了这个就能成为顶尖的程序员。假如你想要更具体的了解在Google,Facebook,Twitter这些公司的顶尖程序员是怎么工作的,就多看看他们的博客吧
下面开始正题:顶级程序员优于普通程序员的5个基础思维模式
跟着顶尖程序员才能学到顶尖的思路
突入大量的时间去研究新的代码
能随意解决各种开发过程中遇到的问题,精通调试各种代码
珍惜时间,不要花时间去做机器可以代替你去做的事情。
优化自己的迭代速度,注意所有琐碎的细节并逐步改善他们
用系统性的思考方式,写出真正有影响力的代码
这些疑问都不是很简单就能答复的,但是在写代码的时候,你最起码要理解你的代码,要知道你的代码最后能不能得到最佳的结果。好的编程习惯一定要从点滴上面养成 流程:我打算从好多个点为大家仔细解析一下这个Java程序的开发思路和实现过程
1.Awt/Swing 包制作的聊天界面(全部用Java代码实现)
一个java窗体的大致流程:窗体(Frame)――容器(Container)――(设置容器布局)――面板 (Panel)――(设置面板布局)――控件
2.有了上面知识的铺垫,我们可以再写一个简单的登录界面了。(如果需要更多的企业求职加分项目和案例的源码及思路分享!包括答疑解惑!)
登陆界面Java代码
import java.awt.*;
import javax.swing.*;
class wyMain extends JFrame {
JTextField tsend; //在外部声明文本框,用来写留言
JComboBox clist; //声明下拉列表框,用来罗列在线用户
JTextArea ta; //声明大型文本区,用来显示聊天记录
wyMain(String title)
{
super(title); //访问父类
JFrame 的构造函数,为窗体实现标题
this.setSize(400,300); //窗体为 400 宽,300 高
this.setLocation(150,250);
Container con=this.getContentPane();
con.setLayout(new BorderLayout()); //设置窗体布局为 BorderLayout
JPanel pp=new JPanel();
JPanel p1=new JPanel();
JPanel p2=new JPanel();
ta=new JTextArea(); //实例化大型文本区
ta.disable(); //设置只读属性
pp.setLayout(new GridLayout(2,1)); //把 pp 设成[2,1]格式的网格布局
pp.add(p1); //在(1,1)单元格放 p1
pp.add(p2); //在(2,1)单元格放 p2
con.add(p,BorderLayout.NORTH); // Container 把 pp 放在窗体北边 con.add(ta,BorderLayout.CENTER);
//Container 把文本区放在中间部位,让它能拥有足够的空间
JLabel l1=new JLabel(“留言:”);
JLabel l2=new JLabel(“To:”);
tsend=new JTextField(30); //实例化文本框
clist=new JComboBox(); //实例化下拉列表框
JButton bSend=new JButton(“Send”);
p1.add(l1);
p1.add(tsend);
p2.add(l2);
p2.add(clist);
p2.add(bSend);
clist.addItem(“所有人”); //下拉列表框添加一项内容
}
}
我们现在有了一个叫做“主界面”的 java类,我们给这个类加上主函数再运 行:
public static void main(String args[]){
wyMain wm=new wyMain(“聊天窗口”);
wm.show();
}
3.添加事件
我们的聊天程序现在已经有了界面了,但是我们必须想法子让界面上的控件能 够实现它的具体功能,
不然的话界面再漂亮也是毫无意义的。于是我们需要为 窗体定义一些事件。
事件1
事件2
设立事件监听器:拿上面的例子来说,人的皮肤就是负责监听事件传来消息的监听器 。在java 中,事件监听器就是一个接口。 我们如果想让窗体对一种事件做出响应,我们就必须为窗体植上“皮 肤”—— 设立监听器。
为了登录功能能够实现,我们现在在 wyClient 中设立按钮事件的监听 器。(Java代码)
监听器弄好之后,聊天的界面基本就完成了
I/O 操作(聊天记录)
我们在上个章节实现了程序的界面,包括像布局、事件、控件、容器等不 可或缺的基本因素。这时我们会发现一个问题:不论如何在界面中发送信息, 关闭程序后再打开,所有的消息都会清空掉。因为这时我们的程序根本就是重 新创建的,原来的变量控件都已经不存在了。 这时我们需要再写一段代码,把输入过的留言都写到一个文件中。在java中操作文件需要用到输入流和输出流。我们需要在程序中导入java.io.*工具 包。包中放的是一组流类。
这里我们只简单讲解一下字节输入流(FileInputStream )和字节输出流 (FileOutputStream)。
字符输入流(FileInputStream)
FileInputStream 类可以实例化,用于从磁盘文件读取数据。我们可以 以下面几种方式实例化该类:
(1)将文件名作为构造函数的参数,如: FileInputStream fs = new FileInputStream(“c:/temp.txt”);
(2)将File 类的对象作为构造函数的参数,如: File f = new File(“c:/temp.txt”); FileInputStream fs = new FileInputStream(f);
File 类是一个用来描述文件的文件名或者所在路径的java 类。
字符输出流(FileOutputStream)
我们把上面的代码的功能加强一下,变成能够拥有写入功能的代码。就叫字符输出流(FileOutputStream)
用java.net包编程(用户身份验证和通讯)
现在我们的聊天程序有事件响应,可以登录,可以留言,留言还可以被长 期保存起来。不过美中不足的是:
一、目前为止我们的用户名和密码验证一直是在客户端进行的。如果我们 的程序是 BS 结构的,那么我们的验证就不能放在客户端上进行,那样的话“BS 结构”会变得只是一句空话。
二、使用一个 CS 结构的聊天程序并不是在聊天,而是在自言自语,我们 需要通过途径与网络中别的用户取得联系。
要实现 BS 结构的理念,我们就得编写一个能实现服务器功能的程序。
java.net 包为网络化编程提供了功能强大的工具—— 一些基于套接字的客 户端/服务器端的类。(套接字是一种进程间的数据交换机制,这些进程既可以在同一机器上,也可 以通过网络连接的不同机器上。换句话说,套接字起到通信端点的作用。单个套 接字是一个端点,而一对套接字就构成了双向通信的通道,使即使不在同一台机 器上的程序也可以通过网路进行数据交换,直到其中一个端点关闭连接。 套接字与主机地址和端口地址相关联。主机地址是客户端或服务器程序所在 的主机的 IP 地址。端口地址是机器使用的通信端口。)的客 户端/服务器端的类。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/290292.html