Das学习手册

Das学习手册

1. File的构造函数
在new File时可以指定父路径,然后再指定子路径。

File file = new File("parentPath","childPath");

2. toURL和toURI的区别
这两个方法都为:将文件转成一个网络连接,可以通过网络访问。但是toURL方法不会将特殊字符进行转译,toURI方法会自动对特殊字符进行URL编码
3. 读取Properties文件的几种方式
方式一:

Properties prop = new Properties();
FileInputStream in = new FileInputStream(file);
prop.load(in);

方式二:

Properties properties = new Properties();
InputStream in = PropertiesMain.class.getClassLoader().getResourceAsStream("config/config.properties");
properties.load(in);

方式三:

ResourceBundle resource = ResourceBundle.getBundle("com/test/config/config");
Enumeration<String> keys = resource.getKeys();
while(keys.hasMoreElements()) {
	String key = keys.nextElement();
	String value = resource.getString(key);
}

4. 加载XML文件和生成XML文件
加载:

SAXReader reader = new SAXReader();
Document doc = reader.read(file);
//获取根节点
Element rootNode = doc.getRootElement();
//获取指定节点
Element node = (Element)doc.selectSingleNode("protocol");
//获取节点标签name <protocol name="leus">
Attribute attribute = node.attribute("name");
//获取节点的所有属性
List<Attribute> attributes = node.attributes();
//获取节点标签name的值
String value = attribute.getStringValue();
//获取匹配的所有节点
List<Node> nodes = doc.selectNodes("/School/Teachers/Teacher");

生成:

//创建Dom
Document dom = DocumentHelper.createDocument();
//创建节点
Element root = dom.addElement("DataInfos");
//添加属性
root.addAttribute("dataType", "6");
//创建文件XMLWriter
File xmlFile = new File("G:/temp", "index.xml");
//格式化XML
OutputFormat format = OutputFormat.createPrettyPrint();
format.setIndentSize(4);
XMLWriter writer = new XMLWriter(new FileOutputStream(xmlFile), format);
//将dom文件写入xml
writer.write(dom);
writer.close();

5. 判断文件编码
对于UTF-8的文件,其前三个字节依次为:0xEF,0xBB,0xBF(十进制为:-17,-69,-65)。所以只要判断该文件前三个字节是否为以上三个字节就行了。
6.使用Jedis连接Redis

JedisPool jedisPool = null;
//创建连接池配置对象
JedisPoolConfig config = new JedisPoolConfig();
//设置最多创建的实例
config.setMaxIdle(maxIdle);
//对实例进行检查,确保返回可用实例,false为检查,
config.setTestOnBorrow(false);
//创建连接池
if(passwd == null || "".equals(passwd)) {
	jedisPool = new JedisPool(config, ip, port);
} else {
	jedisPool = new JedisPool(config, ip, port, 5000, passwd);
}
//使用Jedis-----从JedisPool中获取一个Jedis对象实例
Jedis jedis = jedisPool.getResource();
//获取值
String value = jedis.get(key);
//获取所有key
Set<String> keys = jedis.keys("*");
//设置
String status = jedis.set("key", "value");

redis之如何配置jedisPool参数
1、JedisPool的配置参数很大程度上依赖于实际应用需求、软硬件能力,JedisPool的配置参数大部分是由JedisPoolConfig的对应项来赋值的。
2、maxActive:控制一个pool可分配多少个jedis实例,通过pool.getResource()来获取;如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态就成exhausted了。
3、maxIdle:控制一个pool最多有多少个状态为idle的jedis实例。
4、whenExhaustedAction:表示当pool中的jedis实例都被allocated完时,pool要采取的操作;默认有三种 WHEN_EXHAUSTED_FAIL(表示无jedis实例时,直接抛出NoSuchElementException)、WHEN_EXHAUSTED_BLOCK(则表示阻塞住,或者达到maxWait时抛出JedisConnectionException)、WHEN_EXHAUSTED_GROW(则表示新建一个jedis实例,也就说设置的maxActive无用);
5、maxWait:表示当borrow(从pool中获取)一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛出JedisConnectionException;
6、testOnBorrow:在borrow一个jedis实例时,是否提前进行alidate操作;如果为true,则得到的jedis实例均是可用的,一般在县上环境会影响效率,所以设置为false;
7、testOnReturn:在return给pool时,是否提前进行validate操作;
8、testwhileidle:在空闲连接监测时,检查连接可靠性,一般线上环境使用,当使用时,如果连接损坏,则由系统抛出异常。

Jedis中支持Redis的所有操作,其中Redis的数据类型为:String,Hash,Set,List等
7.解压jar文件
假设获取jar包中的MANIFEST.MF文件内容,可使用Manifest和Attributes读取文件内容

JarFile jarFile = new JarFile(jarPath);
Manifest manifest = jarFile.getManifest();
Attributes attr = manifest.getMainAttributes();//获取所有内容
String cp = attr.getValue("Classpath");//取到某一条属性值

解压jar文件

//创建Zip文件对象
ZipFile zip = new ZipFile(zipFilePath, Charset.forName("GBK"));
//获取所有条目
Enumeration<ZipEntry> entries = (Enumeration<ZipEntry>)zip.entries();
while(entries.hasMoreElements()) {
   //拿到条目
	ZipEntry entry = entries.nextElement();
	
	if(!entry.isDirectory()) {
		File entryFile = new File(path, entry.getName());
		//zip.getInputStream(entry)  返回一个输入流,用于读取指定zip文件条目的内容。
		//在目录下创建该条目文件,并将压缩条目中的内容写入此文件
		writeFile(entryFile.getPath(), zip.getInputStream(entry));
	}
}

8.其中das使用的SqlSessionFactory
SqlSessionFactory继承了Mybatis的SqlSessionFactoryBean,用来获取数据源,这个Bean在Spring-mybatis包中的作用稍后进行探讨。
9.file.toURI().toURL()
将file文件转成一个网络链接可供外界访问时,如果你要转成URL,请使用file.toURI().toURL(),因为在File转化成URI的时候,会将链接中的特殊字符如#或!等字符进行编码。而toURL()方法并不会
10.关于JDK1.8中Stream的学习

11.URLClassLoader

引导类加载器(bootstrap class loader):它用来加载 Java 的核心库,是用原生代码来实现的,并不继承自 java.lang.ClassLoader。
扩展类加载器(extensions class loader):它用来加载 Java 的扩展库。Java 虚拟机的实现会提供一个扩展库目录。该类加载器在此目录里面查找并加载 Java 类。
系统类加载器(system class loader):它根据 Java 应用的类路径(CLASSPATH)来加载 Java 类。一般来说,Java 应用的类都是由它来完成加载的。可以通过 ClassLoader.getSystemClassLoader() 来获取它。
除了系统提供的类加载器以外,开发人员可以通过继承 java.lang.ClassLoader 类的方式实现自己的类加载器,以满足一些特殊的需求。
我们平时程序执行的时候在类加载器中寻找类的结构的顺序是:引导类加载器-》 扩展类加载器-》系统类加载器-》我们自定义的一些类加载器。每个类加载器都有自己的空间,同一个加载器里面的类的二进制名字必须是唯一的,当然同一个类也可以存在不同的加载器内存区域里面,不过我们寻找类的时候是按顺序找的,一但找的也就不会继续往下找了,最终也没找到就会报类不存在异常。

URLClassLoader用于从指向 JAR 文件和目录的 URL 的搜索路径加载类和资源。也就是说,通过URLClassLoader就可以加载指定jar中的class到内存中。

File file = new File(fileName);
URL[] urls = new URL[1]{file.toURI.toURL()};
URLClassLoader classLoader = new URLClassLoader(urls);
Class<?> clazz = loader.loadClass(className);//加载指定文件,className为类全限名

12.使用dom4j读取文件时
上面介绍了直接从文件中读取,dom4j还可以从Reader缓冲流中读取文件。

Document doc = reader.read(new BufferedReader(new FileReader("fileName")));

当dom4j读取的数据为二进制byte数组时,可使用ByteArrayInputStream。

byte[] bytes = new byte[4096];
Document doc = reader.read(new ByteArrayInputStream(bytes));

13.类加载机制
这个一时半会说不清,等到重新写一篇文章专门研究这个。
14.Spring的启动流程

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值