8

Posted 月丫湾

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了8相关的知识,希望对你有一定的参考价值。

7、写一个Singleton出来。

第一种:饱汉模式

public class SingleTon

private SingleTon()

 

//实例化放在静态代码块里可提高程序的执行效率,但也可能更占用空间

private final static SingleTon instance = new SingleTon();

public static SingleTon getInstance()

return instance;

 

第二种:饥汉模式

public class SingleTon

private SingleTon()

 

private static instance = null;//new SingleTon();

 

public static synchronized SingleTon getInstance()

if(instance == null)

instance = new SingleTon();

return instance;

 

第三种:用枚举

public enum SingleTon

ONE;

 

 

第三:更实际的应用(在什么情况用单例)

public class SequenceGenerator

//下面是该类自身的业务功能代码

private int count = 0;

 

public synchronized int getSequence()

++count;

 

//下面是把该类变成单例的代码

private SequenceGenerator()

private final static instance = new SequenceGenerator();

public static SingleTon getInstance()

return instance;

 

 

第四:

public class MemoryDao

    private HashMap map = new HashMap();

    

    public void add(Student stu1)

     map.put(SequenceGenerator.getInstance().getSequence(),stu1);

    

   

   //MemoryDao变成单例

  

 

 

 

 

 

 

Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。

一般Singleton模式通常有几种种形式:

第一种形式: 定义一个类,它的构造函数为private的,它有一个staticprivate的该类变量,在类初始化时实例话,通过一个publicgetInstance方法获取对它的引用,继而调用其中的方法。

public class Singleton

private Singleton()

      //在自己内部定义自己一个实例,是不是很奇怪?

      //注意这是private 只供内部调用

      private static Singleton instance = new Singleton();

      //这里提供了一个供外部访问本class的静态方法,可以直接访问  

      public static Singleton getInstance()

        return instance;   

      

   

   第二种形式:

public class Singleton

  private static Singleton instance = null;

  public static synchronized Singleton getInstance()

  //这个方法比上面有所改进,不用每次都进行生成对象,只是第一次     

  //使用时生成实例,提高了效率!

  if (instance==null)

    instancenew Singleton();

return instance;   

其他形式:

定义一个类,它的构造函数为private的,所有方法为static的。

一般认为第一种形式要更加安全些

ICMP:Internet控制报文协议

ICMP:Internet控制报文协议。

 

是IP层的组成部分,传递差错报文或其他信息。

 
ICMP报文被封装在IP数据报内部:
技术分享
 
详细格式例如以下所看到的:
技术分享
 
个字段含义例如以下:
  • 8位类型。表示该ICMP报文的含义。如目的不可达、超时、请求回显等。
  • 8为代码。

     

    进一步描写叙述该ICMP报文。ICMP报文的类型由类型字段和代码字段共同决定

  • 16位检验和。和IP首部检验和的算法同样。
 
我们常常使用的ping程序就是基于ICMP报文进行的传输。pingclient发送一个ICMP回显请求报文,server收到此报文后返回一个ICMP回显应答报文作为应答。client和server都是在内核层发送和接受该报文的,而不是通过用户进程。

 

回显请求和回显应答报文格式例如以下:

技术分享
 
类型0 + 代码0 = 回显应答
类型8 + 代码0 = 回显请求
 
ICMP回显请求和回显应答报文多出了几个特有的字段:
  • 标识符。表示发送进程的ID号。
  • 序号。

     

    从0開始,每发送一个新的回显请求就加1.

  • 选项数据。实际载荷,比如保存发送时间。接收端用当前时间减去发送时间就能计算出往返时间。

     

     

以下是抓包的结果:
技术分享
 
client一共向server发送了4个回显请求。TTL字段是在IP首部中的。因为ICMP属于IP层协议,而IP层又是不可靠、无连接、尽力而为式的传输,所以ping偶尔会出现传输出错的情况。
 
參考:
《TCP/IP具体解释》第6章、第7章。

以上是关于8的主要内容,如果未能解决你的问题,请参考以下文章

8.Redis内存分配

8.1 shell介绍 8.2 命令历史 8.3 命令补全和别名 8.4 通配符 8.5 输入输出重

常见两个DNS地址(114.114.114.114,8.8.8.8)到底是个啥?

Centos 8.0,8.1,8.2,8.3,8.4,8.5 关于官方停止支持,repo失效解决问题

8.1 shell介绍 8.2 命令历史 8.3 命令补全和别名 8.4 通配符 8.5 输入输出重定向

五周第三次课 8.1 shell介绍 8.2 命令历史 8.3 命令补全和别名 8.4 通配符 8.