- 浏览: 234557 次
- 性别:
- 来自: 上海
最新评论
-
Dom_4j:
...
理解注解中的@Inherited -
s469799470:
demo少个ID
iframe父子页面交互问题 -
errorerror0:
...
iframe父子页面交互问题 -
errorerror0:
iframe父子页面交互问题 -
johnawm:
2012-12-18 wangshibei 写道CountD ...
CountDownLatch的使用
文章列表
组播是比单播宽比广播窄的目标性更强的点对点通信。组播将数据从一台主机发送给多个不同
的主机。数据只传到某些通过加入组播组的客户端。
程序员和网络管理员不用负责选择在哪些点上复制数据,甚至不用负责发送多个副本。
Internet路由器会处理这些事情。
应用程序只将数据报包发送给组播地址,路由器将确保包被发送到改组播组中的所有主机。
组播地址:称为组播组的一组主机所共享的地址。组播地址的范围在224.0.0.0---
239.255.255.255之间(都为D类地址 1110开头)。
从应用程序来讲组播和普通UDP socket之间的区别在于必须考虑TTL值。这时IP首部中取值 0-
...
概述:
HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。
HashMap的数据结构:
HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体
transient Entry[] table;
static class Entry<K,V> implements Map.Entry<K,V> {
final K key;
V value;
Entry<K,V> next;
fina ...
UDP是在IP上发送数据的另一种协议。不可靠,无法知道数据是否到达,也无法知道数据的不同
部分是否已发送时的数据到达。
UDP为什么有使用之地:在实时音频或视频中丢失或交换数据包只会出现噪声。噪声是可以容忍
的。 ...
接口回调: 实现了接口的类创建对象的引用赋值给接口变量,那么接口变量就可以调用接口实现类的方法,这就称为接口回调。(通知相应的对象调用相应的方法)
public interface CallBack {
void execute();
}
public class Tools {
public void testTime(CallBack callBack)
{
long begin = System.currentTimeMillis();
callBack.execute();
long end = System.currentTimeM ...
使用内部类有什么好处
- 博客分类:
- JAVA基础
使用内部类在java编程高级设计中是必须的,它能使你的代码更加优雅,但是它最大的作用是解决class单继承的问题。
例如:
public interface One {
public void inOne();
}
public interface Two {
public void inTwo();
}
public class CommonClass implements One,Two {
public void inOne(){
System.out.println ...
服务器端Socket基础
- 博客分类:
- Socket
ServerSocket 的生命周期:
1.创建ServerSocket对象
2.使用accept()方法 监听端口的入站连接
3.调用Socket的getInputStream()与getOutputStram()获得客户端通信的流
4.服务器和客户端根据协商的协议交互
5.服务器或者客户端关闭连接
6.服务器返回2 等待下一个连接到来
Socket进行的操作步骤为:
1.连接远程服务器
2.本地和远程主机从socket取得输入流和输出流.
3.数据传输完毕,一端(Http)或者两端关闭连接.
构造函数Socket(String host,int port)throws UnknownHostException,IOExceptionm
的作用是 1.创建Socket对象 2尝试连接远程主机的socket
可以用此来确定端口是否占用,代码如下:
String host="localhost";
for(int i=0;i<1024;i++)
{
try {
Soc ...
服务器运行的时候可以监听多个客户端的连接请求。管理客户连接请求的任务是由操作系统来完成的。操作系统把这些连接请求存储在一个先进先出的队列中。许多操作系统限定了队列的最大长度,一般为50。当队列中的连接请求达到了队列的最大容量时,服务器进程所在的主机会拒绝新的连接请求。只有当服务器进程通过ServerSocket 的accept()方法从队列中取出连接请求,使队列腾出空位时,队列才能继
续加入新的连接请求。
如果客户进程发出的连接请求被服务器拒绝,Socket 构造方法就会抛出
ConnectionException。
例如:如下测试代码
public class Client { ...
我们可以从ByteBuffer中产生出不同类型值的方法
public class Test{
public static final int BSIZE=1024;
public static void main()
{
ByteBuffer bb=ByteBuffer.allocate(BSIZE);
int i=0;
while(i++<bb.limit())
if(bb.get()!=0)
System.out ...
public class MainActivity extends Activity implements OnClickListener {
/** Called when the activity is first created. */
private Button startService,redirectButton;
public static MainActivity mainActivity;
@Override
public void onCreate(Bundle savedInstanceState) {
...
实际开发种LayoutInflater这个类还是非常有用的,它的作用类似于 findViewById(),不同点是LayoutInflater是用来找layout下xml布局文件,并且实例化!而findViewById()是找具体xml下的具体 widget控件(如:Button,TextView等)。
LayoutInflater经常用在类似弹出对话框或者弹出界面这类应用中,类似于web应用中的div弹出层。
为了让大家容易理解我做了一个简单的Demo,主布局main.xml里有一个TextView和一个Button,当点击Button,出现 Dialog,而这个Dia ...
为了查看Activity切换经历的生命周期,首先看下面代码:
布局文件
main.xml文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
a ...
本程序主要功能步骤如下:
1.利用Timer 编写一个倒计时程序,程序使用Timer和TimerTask来完成倒计时
2.同时使用sendMessages方法发送消息
3.在HanleMessage里更新UI。
最原始的代码方式:
1.事件处理方式使用匿名内部类
2.TimerTask实现也使用匿名内部类
缺点:1.代码通用性差 2.阅读性差
private Button button1,button2;
private TextView tv;//显示计时内容
private Handler hand ...
Service是android 系统中的一种组件,它跟Activity的级别差不多,但是他不能自己运行,只能后台运行,并且可以和其他组件进行交互。Service的启动有两种方式:context.startService() 和 context.bindService()。
使用context.startService() 启动Service是会会经历:
context.startService() ->onCreate()- >onStart()->Service running
context.stopService() | ->onDestroy() -> ...
Grally是可以水平滚动列表元素的布局,一般用来滚动图片。
以下为简单例子:layout文件:
<?xml version="1.0" encoding="utf-8"?><Gallery xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/gallery" android:layout_width="fill_parent" android:layou ...