- 浏览: 12179 次
- 性别:
- 来自: 长沙
最新评论
文章列表
学了那么长时间的java,也天天在听着关于JVM的各种神秘之事,却只是觉得这东西很神秘,没能够涉足其中。虽然没有看过书系统的研究过,但是听多了,对这东西的也算有了一个总体的认识,下面也只能把自己印象中的JVM做一个最简单的表述吧。
要了解JVM,首先还是先从java代码的执行过程说起,平时,我们写的java程序只需要点击运行程序,结果就自然而然地给我们输出来了,而没有过多地去追究这到底是个什么样的过程。那么这到底是个什么样的过程呢?
这个过程大致可以这样分解:
①把java代码进行编译(JDK中的编译工具是javac)成.class的字节码文件,这种字节码文件就是完全能用 ...
命令行操作sql语言
- 博客分类:
- 数据库
sql语言作为数据库的一种标准语言,已经逐渐地在计算机领域的广泛应用开来,下面我就以mysql数据库为例来演示一下基本的sql查询语句的用法。
数据库的语言分为两种类型:ddl(数据定义语言),dml(数据库操作语言);
所谓的数据库定义语言就是对数据库中表的一些字段的定义,包括字段本身的属性描述以及字段之间的关系描述;数据库操作语言则主要是指对数据库中原本存储有的数据进行增,删,查,改,等的一些操作;看完下面的一些基本sql语句能够让你对他们的理解更加深入;
数据定义语言ddl.
在建库建表以后,要在表中定义一些字段如一下 ...
以前在写代码的时候常常需要用到System.out.println();输出语句向控制台输出各种信息来监控程序整个流程的运行情况,这样写不仅麻烦,还往往会因为删除的时候出错,甚至找不到之前写的输出语句到底是在什么地方。下面展示如何实现这些测试代码与功能程序的分离:
package TestPackage;
/**
* 定义一个测试类
* @author wenshen
*
*/
public class TestArea {
private static boolean Control_Var=true;
/**
* 设置测试控制开关
...
6.实现带界面且能够与群聊服务器配套的客户端
首先对客户端进行分析
①.登陆界面:用户名
密码
登陆按钮:点击登陆触发事件(连接服务器,把输入的用户名和密码发送到服务器验证)
注册按钮:点击注册按钮(把注册的用户名和密码发送到服务器端登记)
聊天界面:聊天消息显示框(把服务器端发送过来的消息显示在该区域)
输入消息显示框(用户输入的消息显示在该区域)
...
5.简单客户端的实现
首先依然是从能够收发字节的客户端说起,写出来以后可能看上去有点不相信,只需要短短的几行代码就实现了,如下,你看得懂的:
package Client;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
public class ClientMain {
//程序入口
public static void main(String args[]){
ClientMain cm=new ClientMain();
...
4.群聊服务器的实现
整个程序分为五个类,各个类之间的布局如下图所示:
<!--StartFragment -->
ServerMain类负责运行主程序,在主程序中创建ClientThread类,并调用其方法
ClientThread类负责处理连接进来的客户端,每连接进来一个客户端,就创建一个线程去处理,该类下设有三个辅助类
UserInfo用户信息类,该类中有用户的基本属性,具体看代码
UserManage该类负责处理用户的登陆,注册
ThreadManage该类负责处理消息的广播,以及对每一个线程的移除
3.服务器读取字符串的实现
前面的所实现的服务器都是只能够读取字节的,如果用它来聊天的话,没有谁能够看懂,当然专业一点的话可以对字节进行解析,但是没有谁愿意去干这等事情,留给机器自己去处理吧,让机器来帮助我们解析出来以后再显示在界面上。当然API中有现成的流来实现这些功能,只需要使用这些包装好的流来帮助我们处理就行,代码如下:
/**
* 读取客户端消息的方法
* @param in:输入流对象
* @return:返回读取到的数据
*/
public String readMsg(InputStream in){
String ms ...
2.多线程服务器的实现
在前面已经实现的服务器是不能让多个客户端连接进来的,只能让单个客户端的接入,首先阐明一点不能够让多个客户端接入的原因:ServerSocket在调用accept方法时是阻塞的,在一个客户端接入后,另外需要连接进来的客户端必须等待前面这个客户端正常退出以后才能够进入。有了多线程的知识,我们就可以让阻塞的部分在一个独立的线程里面独立的运行,每当一个客户端接入以后就创建一个线程对象去处理,这就是多线程服务器的基本原理。下面看代码示例:
首先创建ServerSocket对象,打开一个端口,让客户端连接进来这个类主要负责构建服务器
import jav ...
1.通信循序渐进过程
①.能够收发字节的服务器端
package Serverv1;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
private InputStream in;
private OutputStream ou;
/**
* 创建服 ...
1.继承体系
throwable是所有异常和错误的祖先接口,其下有两个分支Error,Exception.如下图所示
(体系图在文章末尾)
<!--StartFragment -->
2.强制检测异常:
所谓的强制检测异常就是在代 ...
a.关于构造器 * 任何类在定义的时候就默认有一个无参数的构造函数(构造方法,构造器) * .构造器的名字必须和类名字一样,没有返回值的定义 * .构造器的唯一作用就是构造对象 * . ...
由于很多问题需要代码才能够解释清楚,所以需要知识点的解释总结我都放到了下面的代码中,所以详情请看源码!
首现看一下运行后的效果如下:(下面附有详细注解的源代码)
/**上面看到的界面就是我的画板运行需要得到的结果,大致框架流程如下: * * 1.创建窗体对象JFrame,创建按钮对象JButton,左右工具面板对象JPanel,从窗体得到的画布对象Graphics,实现监听器接口(interface)ActionListener. * 集成抽象(Abstract)类:MouseAdapter.不可忘记的布局管理器对象FLowLayout(java.awt.F ...
1.for循环渊源
对于for循环的理解,我就从刚开始学习java的时候,通过控制同一个字符的排列来打印出一个菱形来解说吧。
通过控制输出空格和字符来实现我们所想要的结果,既然如此,我们岂不是可以用那个最土的方法,在整个方法中都通过
System.out.print(" ");//输出空格
Sysem.out.print("*");//输出组成菱形的字符
何必要用for(int i=0;i<count;i++){.....}语句来输出呢?对,太对了!!
对于一个刚接触编程语言的初学者而言,用for循环来打印菱形的劣势在那里 ...