学习dubbo框架的问题

news/2024/9/19 23:26:22
  • InputStream : 是所有字节输入流的超类,一般使用它的子类:FileInputStream等,它能输出字节流;
  • InputStreamReader : 是字节流与字符流之间的桥梁,能将字节流输出为字符流,并且能为字节流指定字符集,可输出一个个的字符;

Properties的load方法其实就是传进去一个输入流,字节流或者字符


流,字节流利用InputStreamReader转化为字符流,然后字符流用


BufferedReader包装,BufferedReader读取properties配置文件,每


次读取一行,分割成两个字符串。因为Properties是Map的子类,


然后用put将两个字符串装进Properties对象。

 

Class<T>在实例化的时候,T要替换成具体类
Class<?>它是个通配泛型,?可以代表任何类型

 

method invoke 方法

java.lang.reflect.Method
public Object invoke(Object obj, Object... args)
参数:
obj:从中调用底层方法的对象,必须是实例化对象
args: 用于方法调用,是一个object的数组,因为参数有可能有多个
返回:
使用参数args在obj上指派该对象所表示的方法的结果。
invoke方法中的obj就是一个实例化对象,可以直接返回对象的中每个属性的值。
加上后面的agrs结果是一样的。
就是调用类中的方法,最简单的用法是可以把方法参数化
invoke(class, method)
比如你Test类里有一系列名字相似的方法setValue1、setValue2等等
可以把方法名存进数组v[],然后循环里invoke(test,v[i]),就顺序调用了全部setValue

 

synchronized详解


 

Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。

 

     一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。

 

     二、然而,当一个线程访问object的一个synchronized(this)同步代码块时,另一个线程仍然可以访问该object中的非synchronized(this)同步代码块。

 

     三、尤其关键的是,当一个线程访问object的一个synchronized(this)同步代码块时,其他线程对object中所有其它synchronized(this)同步代码块的访问将被阻塞。

 

     四、第三个例子同样适用其它同步代码块。也就是说,当一个线程访问object的一个synchronized(this)同步代码块时,它就获得了这个object的对象锁。结果,其它线程对该object对象所有同步代码部分的访问都被暂时阻塞。

 

     五、以上规则对其它对象锁同样适用.

 

HashMap和Hashtable的区别

HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚它们之间的分别。主要的区别有:线程安全性,同步(synchronization),以及速度。

  1. HashMap几乎可以等价于Hashtable,除了HashMap是非synchronized的,并可以接受null(HashMap可以接受为null的键值(key)和值(value),而Hashtable则不行)。
  2. HashMap是非synchronized,而Hashtable是synchronized,这意味着Hashtable是线程安全的,多个线程可以共享一个Hashtable;而如果没有正确的同步的话,多个线程是不能共享HashMap的。Java 5提供了ConcurrentHashMap,它是HashTable的替代,比HashTable的扩展性更好。
  3. 另一个区别是HashMap的迭代器(Iterator)是fail-fast迭代器,而Hashtable的enumerator迭代器不是fail-fast的。所以当有其它线程改变了HashMap的结构(增加或者移除元素),将会抛出ConcurrentModificationException,但迭代器本身的remove()方法移除元素则不会抛出ConcurrentModificationException异常。但这并不是一个一定发生的行为,要看JVM。这条同样也是Enumeration和Iterator的区别。
  4. 由于Hashtable是线程安全的也是synchronized,所以在单线程环境下它比HashMap要慢。如果你不需要同步,只需要单一线程,那么使用HashMap性能要好过Hashtable。
  5. HashMap不能保证随着时间的推移Map中的元素次序是不变的。

 


 

[java] view plaincopy print?
    1. package com.xiaozhi.helloio;  
    2.   
    3. import java.io.FileInputStream;  
    4. import java.io.IOException;  
    5. import java.util.Properties;  
    6.   
    7. public class Test7 {  
    8.   
    9.     public static void main(String[] args) throws IOException {  
    10.         Properties properties=new Properties();  
    11.         properties.load(new FileInputStream("c:\\xiaozhi.properties"));  
    12.         System.out.println(properties.getProperty("lisi"));  
    13.         System.out.println(properties.getProperty("zhangsan"));  
    14.     }  

    15.  

       

       

转载于:https://www.cnblogs.com/zlj1992/p/7234662.html


http://lihuaxi.xjx100.cn/news/226069.html

相关文章

lua java 性能比较_Lua coroutine vs Java wait/notify

在上文Lua coroutine 不一样的多线程编程思路中想到coroutine的运行机制跟Java中的wait/notify很相似&#xff0c;所以写了一个简单程序比较一下。源代码Lua codeco coroutine.create(function(loops)for i 1, loops docoroutine.yield()endend)local x os.clock()local loo…

DataGrid连接Access的快速分页法(1)——需求与现状

作者&#xff1a;黎波一、需求分析 DataGrid是一个功能强大的ASP.NET Web服务器端控件&#xff0c;它除了能够按各种方式格式化显示数据&#xff0c;还可以对数据进行动态的排序、编辑和分页。大大减轻了广大Web程序员的工作量。实现DataGrid的分页功能一直是很多入门者感到棘手…

java在己有的类创子类怎么创_如何使用Java创建自己的异常子类

Java不知道学了多少课时了&#xff0c;你知道如何使用Java创建自己的异常子类吗&#xff0c;Java的内置异常处理有哪些常见的错误呢&#xff0c;今天IT培训网小编就来给大家详细介绍下吧&#xff1a;尽管Java的内置异常处理大多数常见错误&#xff0c;你也许希望建立你自己的异…

DataGrid连接Access的快速分页法(2)——SQL语句的选用(升序与降序)

作者&#xff1a;黎波 一、相关概念 在 ACCESS 数据库中&#xff0c;一个表的主键&#xff08;PRIMARY KEY&#xff0c;又称主索引&#xff09;上必然建立了唯一索引&#xff08;UNIQUE INDEX&#xff09;&#xff0c;因此主键字段的值是不会重复的。并且索引页依据索引列的值…

C#命名空间

转自&#xff1a;http://dev.yesky.com/msdn/192/2549192.shtml 命名空间提供了一种组织相关类和其他类型的方式。与文件或组件不同&#xff0c;命名空间是一种逻辑组合&#xff0c;而不是物理组合。在C#文件中定义类时&#xff0c;可以把它包括在命名空间定义中。以后&#xf…

java byte xml_Java XMLInputSource.setByteStream方法代码示例

import org.apache.xerces.xni.parser.XMLInputSource; //导入方法依赖的package包/类/*** Resolves an external parsed entity. If the entity cannot be* resolved, this method should return null.** param resourceIdentifierdescription of the resource to be revsoved…

DataGrid连接Access的快速分页法——动态生成SQL语句

作者&#xff1a;黎波using System;using System.Text;namespace Paging{/// <summary>/// FastPaging 的摘要说明。/// </summary>public class FastPaging {private FastPaging() {}/// <summary>/// 获取根据指定字段排序并分页查询的 SELECT 语句。/// &…

vs2008中,创建基于对话框的mfc动态库步骤

1、利用MFC Dll向导初始生成一个mfc dll(默认设置)&#xff1b; 2、添加一个对话框资源&#xff1b; 3、向工程中添加一个.h、.cpp文件&#xff0c;作为外部的接口&#xff1b; 4、.h头文件的格式仿照于基于控制台的dll的头文件格式&#xff1b; 5、.h头文件中包括资源文件头文…