- 浏览: 12736 次
- 性别:
最新评论
-
旭冬冬:
机jilo88 写道你这就是通过网络通信,将命令从手机发出到服 ...
Mario -手机远程控制电脑 -
jilo88:
你这就是通过网络通信,将命令从手机发出到服务端程序中,由服务端 ...
Mario -手机远程控制电脑 -
ronaldoLY:
第二个好简单啊。学习了~
集合框架总结
文章列表
[置顶] Mario -手机远程控制电脑
- 博客分类:
- java基础
最近在通信项目中跟我的小伙伴们做了一个通信小程序,使用socket通信,Android手机作为客户端,PC作为服务器。从而实现互联操作,基本程序界面如下:
服务器界面:
客户端界面:
客户端通过输入服务器端的IP和初始密码,连接上服务器。在这里有一个难点,一直没有很好的解决,那就是关于网络的问题,当用真机测试的时候,经常会因为网速的问题,导致登录失败,如果有大神有好的建议,希望能得到赐教。关于登录的代码如下:
//通过内部类创建监听器对象
OnClickListener listener = new OnClick ...
工厂模式定义:实例化对象,用工厂方法代替new操作。
工厂模式是我们最常用的模式了,因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑使用工厂模式,虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量。那么具体怎么用呢?代码奉上
/**
* 生产枪的工厂接口
*
* @author Star
*
*/
public interface GunFactory {
public Gun createFootGun ...
装饰者模式是著名设计模式之一,英文为Decorator Pattern,又叫装饰者模式。装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。
装饰模式的特点
(1) 装饰对象和真实对象有相同的接口。这样客户端对象就可以和真实对象相同的方式和装饰对象交互。
(2) 装饰对象包含一个真实对象的引用(reference)
(3) 装饰对象接受所有来自客户端的请求。它把这些请求转发给真实的对象。
(4) 装饰对象可以在转发这些请求以前或以后增加一些附加功能。这样就确保了在运行时, 不用修改给定对象的结构就可以 ...
二路归并排序,顾名思义就是指将两个有序表组合成一个新的有序表。那么对于一个任意的待排序的数组,又该如何实现呢?
让我们假设一个整形数组为{1,3,4,2,5},我们需要对它进行归并排序。按照我们刚才对二路归并的定义可知,我们得把这个数组一分为二,然后对左右两边的数组分别排序之后,再把两者归并到一起,就能将无序变为有序了。也许你会有疑问,我将原数组分成左右两个数组之后,又要用什么方法来给左右数组排序呢?不难想到,我们可以继续拆分数组,即将左边的数组看成待排序的数组,继续将其拆分成两个数组。同理,右边亦是如此。那么到什么时候拆分结束呢?很简单,当我们将数组拆分成仅有一个元素的数组时,拆分 ...
第二次翻看通信的书,感慨颇深,之前有一些不清楚的现在也大都明白其所以然,那么下面就谈一下我对于通信的一些小的总结和看法吧。
首先所谓通信,就是服务器与一个或若干个客户端之间的信息传递。对于java来 ...
哈夫曼压缩
做哈夫曼压缩最重要的是先要搞清楚每一步要做什么。。。步骤搞清楚之后才能开始下手
1, 先创建一个大小为256的整形数组,读取一个目标文件,将每个字节做数组下标,字节出现的次数作为数组值,这样就有了一个字节与其次数的对应关系;
2, 接下来再将每个字节的次数作为权值构造哈夫曼树,权值越大的越在下面,同时新建一个节点类,节点类存储字节,和字节的数目,字节编码,之后通过遍历哈夫曼树就能够给每一个字节一个特定的编码了。
3, 在编码完成之后,再读取一次原文件然后每读一个字节就会对应一个01串编码,每次都加起来,这样读取完成之后,就有一个很长的01字符串了,接下来就将01字符串8位 ...
线程游戏之冒险岛
因为小时候超爱玩小霸王游戏的冒险岛,所以在选择线程游戏开发时就自然而然的选择做冒险岛。那么下面我就带你一起走进我的代码世界吧~
首先必须得有一个游戏界面,这就需要用到Swing组件基本代码如下:
this.setTitle("Gamev1.1");
this.setSize(800,600);
this.setLayout(new FlowLayout());//流式布局
this.setLocationRelativeTo(null);//居中
this.setResizable(false);//不可改变 ...
常用的集合在系统中定义了3个接口,其区别为:
java.util.Set为无序的集合,里面不允许有相同的元素,当新加入的元素为已经存在,则不执行add方法。
java.util.List为有序线性的集合,类似于数组,是可以存在相同元素的。
java.util.Map为一个具有映射关系的集合,也是无序的,可以存在相同的value值,但不能有相同的key值,且当加入新元素时,如果key值已经存在,
则新元素的value值会替代原来该key值所对应value的值。
这三者的常用的实现类分别为:java.util.hashset,java.util.ArrayList,java.util.hashmap ...
画图板的基本结构为北部的菜单栏,中部的画布,南部的颜色选择栏,和西部的工具栏所组成,要实现画图板的功能首先需要有一块画布.
可以这样实现,首先实例化一个面板对象,然后用getGraphics()方法获取面板的画布,之后再 ...
java中继承是很必要的,因为这更体现了面向对象的思想。继承的好处是什么呢?
举个例子,学生有很多种,小学生,中学生,大学生。我们可以发现他们有很多共有的东西
比如都有名字,学号,学习方法,等等。如果我们每一个都创建类的话,无疑会增加代码量,
而当我们将学生抽象出来,写一个学生类,并且小学生,中学生,大学生都可以继承学生类。
这样既利于封装又简便了代码量。首先继承能够继承到父类的方法和属性
代码如下:
//父类学生类
public class Student{
private String name;//学生名字
private int id;//学生学号
public void study() ...
在java中构造方法的特点是,在创建对象时,再调用,是用于在不同类之间传参和初始化的。
基本格式如下:
public 类名(参数列表){....}
构造方法与一般方法的区别有构造方法是在类创建对象时调用的,是必须要调用的,而一般方法只需要在需要调用时调用即可。且子类继承父类时,不能继承到父类的构造方法,只能继承一般方法。
在java中类是抽象的,是具有相同特性和行为的对象集合。可以说是把具体对象抽象化的结果。
而对象则是具体的,由类创建,具有类的属性和方法。
如定义一个类
public class A{
private int num;//属性
public void test(){}//方法
}
//创建一个对象
A a=new A();
a.test();//调用方法
java关键字目前常用的主要有:public,private,protected,final,static,this,super,package,abstract,boolean,break,byte,case,catch,char,class,const,continue,default,do,while,double,if,else,true,false,finally,float,for,goto,,implements,import,int,instanceof,interface,new,null,try,catch,return,v ...
Java数组排序小结
数组排序目前常用的主要有五种,分别为冒泡排序法,选择排序法,快速排序法,插入排序,希尔排序法,每种排序法都有自己独特的特点,下面就分别介绍一下。
1. 冒泡排序:说起冒泡排序,可以说是最容易理解的排序方式,记得在刚接触c语言时,教材上关于数组排序就列出了冒泡排序这种方法,顾名思义,冒泡排序就像平时玩的冒泡游戏一样,重的部分沉下去,而轻的部分会浮上来,经过一段时间后,就会形成轻的部分在上,重的部分在下的情况。那么怎么使用代码表示呢?其实很简单,只需要两个for循环即可
//排序方法1,冒泡排序
public void maop ...
在java语言中,为了弥补数组定义时必须声明数组大小的缺点,就出现了队列,很好的解决了这一问题。其实从本质上来说,队列是数组的改良版,通过对数组的操作,从而达到可以改变队列的大小。代码如下:
private Object[] SrcA=new Object[0];//数组属性,长度初始化为0
//添加对象
public void add(E e) {
// 创建一个数组,长度是原数组长度+1
Object []destA=new Object[SrcA.length+1];
//将要加入的对象放到新数组的最后
destA[SrcA.length]=e;
// ...