- 浏览: 97642 次
- 性别:
-
最新评论
-
okcd00:
很棒的代码呢,学习了很多^_^
你画我猜 -
dieslrae:
简直不能直视啊
java网站后台实现--ServLet -
紫梦飘逸:
顶一个
模拟微信打飞机,完整代码 -
zxc3375:
第一天用oracle也不看这样的文章了
Oracle数据库查询指令 -
rex0654335:
...
基于UDP的网络通信之屏幕共享(类似远程协助)
文章列表
在Socket和ServerSocket通信的应用上,挑选了聊天来进行深入练习.
这是第一个版本,暂时实现了基本的登录,群聊,私聊,同步联系人列表等功能.
这里简化了很多功能,所有在线用户就是一个群,私聊还存在一点问题将在下版本修复.先 ...
一、连接首先,在服务器中创建ServerSocket对象ss,对象ss调用accept方法的时候,可以得到一个Socket对象.ServerSocket ss = new ServerSocket(613);// 不要使用80等其他程序常用端口,这里任选一个端口613Socket st = ss.accept();这是一个阻塞方法,如果accept不到一个客户端,他就一直会在这里等待客户端的连接,直到有一个客户端连上来才执行结束。如果需要连接多个客户端,可以写while循环来执行ss.accept();在客户端可以这样对其进行连接.Socket st = new Socket("12 ...
在用Socket和Serversocket通信的时候,自己序列化的对象使用对象流传输时遇到StreamCorruptedException异常。
有两个方面需要考虑:
一个是写出对象的时候有没有flush();
一个是在线程中用while 循环了,new ObjectOutputStream和getOutputStream(in是一样的)是在while循环中进行的,每次都会创建,每次都会从Socket中去获得流。
根据之前的画图板加上网络改造一下成一个网络的。
画图板中,有许多形状,都是包装为对象的,例如,直线对象:
public class Line extends Shape{
public Line(int x1,int y1,int x2,int y2,Color c){
this.x1 = x1;
this.y1 = y1;
this.x2 = x2;
...
Socket与ServerSocket远程桌面
- 博客分类:
- Java
目的:通过socket与socketserver的通信实现远程监控
首先,在serversocket(被监控端)一直截屏发送到socket。
再到socket(客户端)中不断接收截屏内容并展示出来。
代码如下:
服务器:
public class RemoteServer {
private static Socket st;
public static void main(String[] args) {
ServerSocket server;
try {
server = new ServerSocket(1234);
s ...
去掉JFrame窗口边框之后的移动
- 博客分类:
- Java
class MoveListener extends MouseAdapter {
int x0, y0, x1, y1;
public void mousePressed(MouseEvent e) {
x0 = e.getXOnScreen();
y0 = e.getYOnScreen();
}
public void mouseDragged(MouseEvent e) {
if (!isMax) {// 不是最大化的时候才可以移动
x1 = e.getXOnScreen();
y1 = e.getYOnScre ...
Swing组件最大化最小化按钮实现
- 博客分类:
- Java
最近在做JFrame窗口的时候为了将边框弄得更加美观,所以需要去掉默认的边框.然后在窗体上加上最大最小化与关闭按钮.(代码中ChatUI为类名)
主要方法:setExtendedState();
第一步:去掉JAVA边框
this.setUndecorated(true);
第二步:增加JButton按钮.
closeT = new JButton(new ImageIcon(
"images\\chat\\sysbtn_close_normal.png"));
closeT.setBounds(64, 0, 26, 19) ...
模拟微信打飞机,完整代码
- 博客分类:
- Java
实现过程参见:http://479001499.iteye.com/admin/blogs/2091701
在这基础上多写了一个线程控制玩家飞机的被撞之后的2s无敌时间,解决了那2s中不能发子弹,背景不动的问题。
在音乐播放的时候用线程控制它循环播放。
改变了记分语句的位置,解决了最高分比得分小的问题。
在center上绘制文字,在文字区域加上鼠标监听器的反馈,点击就像是点击了按钮一样,选择新游戏,继续游戏之类的有相应的反应。
撞击判断改用矩形是否相交来判断(之前那样写坐标脑袋都转晕了,还是写矩形方便些,毕竟API提供了这个功能,实现思路其实是一样的)。 写了一个R ...
public byte[] int2byte(int data){
byte b4 = (byte)((data)>>24);
byte b3 = (byte)(((data)<<8)>>24);
byte b2= (byte)(((data)<<16)>>24);
byte b1 = (byte)(((data)<<24)>>24);
byte[] bytes = {b1,b2,b3,b4};
return bytes;
}
pub ...
先定义树的节点类
package Tree;
/**
* 树节点
* @author Huangbin
* d2014年7月18日
*/
public class Tree {
Object obj;//内容
Tree parent;//父节点
Tree lchild;//左孩子节点
Tree rchild;//右孩子节点
public Tree(Object obj) {
this.obj = obj;
}
...
链表:单链表,双链表,循环链表
单链表:每个节点有一个内容和一个地址,这个地址指向下一个节点。
第一个加入链表的节点为头结点,它的地址指向第二个节点,第二个节点地址指向第三个节点。。。最后一个节点的地址指向null。
如图所示:
由这样的关系,我们容易得知只要知道first,我们就可以用first.next.next.....取到每一个节点元素。
对于单链表,我们要实现他的创建,添加,插入,删除,查询(遍历)等方法。
下面的程序只实现了基本的创建与遍历。其余均在双链表会实现。方法类似。
Node.java
package 单链表LinkedList的实现; ...
思路:
窗体中加JPanel面板方便重绘(用线程对其每30s进行重绘)
子弹类ZiDan有move方法,bump方法,draw方法,分别用来移动子弹,判断是否和气泡相遇,绘制本身。
气泡类QiPao有move方法,bump方法,draw方法,分别用于移动气泡,判断是否和气泡相遇,绘制本身。
用两个ArrayList保存当前屏幕上的所有子弹和气泡,子弹移出去了就令其isLive属性为false,结束该子弹线程。
开始游戏的时候随机生成气泡。
效果如下:
一、程序,进程,线程的区别
程序是一段静态的代码,是软件执行的蓝本。
进程可以理解为正在进行的程序,它是从程序加载、执行、执行完毕的整个过程,多个进程可以共享操作系统所管理的资源,比如剪切板。每个进程都单独占用一块内存,多个进程之间不能数据共享,必须通过网络交换数据。
线程是比进程更小的执行单位,一个进程在执行过程中,可以产生多个线程。线程是一个进程内部的多个并行的运行单元,同一个进程的多个线程之间可以通过内存共享数据。通俗地讲,线程是运行在进程中的小“进程”。
二、Java中的多线程
Java程序执行时,先启动了一个主线 ...
java模拟微信打飞机开发思路
- 博客分类:
- Java
一、要求:
创建玩家飞机,敌方飞机,均能发子弹,撞击后能移除相应对象。
二、思路:
类的定义以及具体需要实现的功能:
UI//窗体,控制玩家移动的鼠标监听器,刷新窗体的方法,Esc的键盘监听器,游戏的初始化,暂停等
UpdataCenter//刷新窗体的线程
MyPlane//玩家飞机,判断是否被敌人撞,被敌人子弹击中,控制背景移动
Bullet//玩家的子弹,控制自己移动,判断是否和敌方子弹相遇抵消
EnermyPlane//敌方飞机,父类,敌机移动以及出界的相应操作
...
设计思路:(用多线程并且每次交换数据都暂停1ms实现动态效果,顺便深入理解一下各类排序的特点)
从各类选择中选择了7种排序,用动态效果展示排序过程。生成800个随机数(用图形描述的时候每个数占一个像素点)用ArrayList存储每个点的长度(此处用矩形来画线,方便以后宽度的更改),每种排序都用一个线程来执行,每次赋值(冒泡和2路太慢,所以做了适当修改)都暂停1ms,这样才能看清过程再写一个线程刷新JPanel的窗体。
每个排序再写一个计算排序时间的类(线程)。测试了1000个,10000个,100000个的时间。
程序效果展示如下:
由 ...