学习一下知识吧,好久没有写博客了。如果他总为别人撑伞,你又何苦非为他等在雨中。

学习的知识内容

一、关于base64的图片问题

byte[] decode = Base64.base64ToByteArray(string);
String strings = new String(decode);
IOUtils.write(strings, new FileOutputStream("D:/huhx1.png")); // we can't open this file
IOUtils.write(decode, new FileOutputStream("D:/huhx2.png")); // 正常显示

感觉在浏览器上,base64的前缀比较宽松。只要data:.....;base64。....中间的内容可以随意,具体情况也不是很明朗。以下是可以显示图片的。

上述的src的内容是图片的二进制流经过base编码的,想要保存图片的话。需要对内容进行base的解码操作,再将解码之后的字节保存为图片。

关于图片base64可以参考博客:http://www.cnblogs.com/coco1s/p/4375774.html

二、关于classLoader的一些继承关系

public void classLoader_1() {
ClassLoader classLoader = getClass().getClassLoader();
System.out.println(classLoader); // sun.misc.Launcher$AppClassLoader@3b05c7e1 ClassLoader parent = classLoader.getParent();
System.out.println(parent); // sun.misc.Launcher$ExtClassLoader@7885a30c ClassLoader parent1 = parent.getParent();
System.out.println(parent1); // null
}

三、关于new File的路径问题

@Test
public void relativePath_1() {
File file = new File("path/huhx.png"); // G:\Java\JavaEE\Program\2016-05-15\SpringLearn\huhx-test\path\huhx.png
System.out.println(file.getAbsolutePath());
} @Test
public void absolutePath_1() {
File file = new File("/path/huhx.png"); // G:\path\huhx.png
System.out.println(file.getAbsolutePath());
}

四、关于classLoader的getResource方法

// programPath = G:/Java/JavaEE/Program/2016-05-15/SpringLearn/huhx-test
public void classStreamPath_1() {
System.out.println(Thread.currentThread().getContextClassLoader().getResource("")); // file:/programPath/target/test-classes/
System.out.println(getClass().getClassLoader().getResource("")); // file:/programPath/target/test-classes/
System.out.println(ClassLoader.getSystemResource("")); // file:/programPath/target/test-classes/
System.out.println(getClass().getResource("")); // file:/programPath/target/test-classes/com/linux/huhx/filepath/
System.out.println(getClass().getResource("/")); // file:/programPath/target/test-classes/
System.out.println(new File("/").getAbsolutePath()); // G:\
System.out.println(System.getProperty("user.dir")); // G:\Java\JavaEE\Program\2016-05-15\SpringLearn\huhx-test
}

五、关于编码的一些知识

public void charsetTest_1() {
String string = "刘玲";
String str = new String(string.getBytes()); // 默认的是utf-8的
System.out.println(str); // 刘玲 Charset charset = Charset.forName("gbk");
ByteBuffer byteBuffer = charset.encode("刘玲"); byte[] buffers = byteBuffer.array();
System.out.println(new String(buffers)); // ����� CharBuffer charBuffer = charset.decode(byteBuffer); // 刘玲
System.out.println(charBuffer); try {
System.out.println(new String(buffers, "gbk")); // 刘玲
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}

六、嵌套目录的创建和删除

public void fileTest_1() {
File file = new File("D:/liuling/liuling/huhx.txt");
if (!file.exists()) {
// 现在的目录D:/liuling/liuling/huhx.txt,注意这里的huhx.txt是一个目录名。
System.out.println(file.mkdirs()); // true
}
File deletefile = new File("D:/liuling");
System.out.println(deletefile.delete()); // false
// huhx.txt目录被删除了
System.out.println(file.delete()); // true
}

file.mkdir();是创建一级的子目录, mkdirs()是可以创建多级的嵌套子目录的。

七、关于java中的foreach的null问题

public void forEachTest() {
String[] strings = null;
for (String string : strings) { // java.lang.NullPointerException System.out.println(string);
}
List<String> lists = null;
for (String list : lists) { // // java.lang.NullPointerException
System.out.println(list);
} List<String> list2s = new ArrayList<>();
for (String list : list2s) {
System.out.println(list); // 没有任何的打印
}
}

ps:上述的文件不能直接运行的,因为异常的存在,后面的流程指定是不能执行的。

八、java中的import static使用

当在java中如果使用类的static方法和static变量时,可以import static该方法或者是变量。在代码中可以不用className.变量,而可以直接使用。下面是一个例子。

import static com.linux.huhx.utils.RegrexUtils.*;

String requestData = messageFormat(action, arrays[0], arrays[1]);

而在RegrexUtils中的messageFormat是一个static方法定义如下:

public static String messageFormat(String string, String... replace) {
if (ArrayUtils.isEmpty(replace)) {
return string;
}
for (int i = 0; i < replace.length; i++) {
string = string.replace("{" + i + "}", replace[i]);
}
return string;
}

这里本来是想使用MessageFormat.format方法的,但是在解析某些字符串时,出现了问题。

九、关于Servlet中的请求对象的一些路径的方法

访问的url:http://localhost:8080/ListenerTest1/servlet/FirstServlet,ListenerTest1是项目名。

String contextPath = request.getContextPath();
String servletPath = request.getServletPath();
String realPath = request.getServletContext().getRealPath("/");

运行的结果如下:

/ListenerTest1
/servlet/FirstServlet
J:\project\web\apache-tomcat-7.0.-windows-x64\apache-tomcat-7.0.\webapps\ListenerTest1\

友情链接

日记整理---->2017-05-14的更多相关文章

  1. Gitlab一键端的安装汉化及问题解决(2017/12/14目前版本为10.2.4)

    Gitlab的安装汉化及问题解决 一.前言 Gitlab需要安装的包太TM多了,源码安装能愁死个人,一直出错,后来发现几行命令就装的真是遇到的新大陆一样... ... 装完之后感觉太简单,加了汉化补丁 ...

  2. java selenium启动火狐浏览器报错:Cannot find firefox binary in PATH. Make sure firefox is installed. OS appears to be: VISTA Build info: version: '3.8.1', revision: '6e95a6684b', time: '2017-12-01T19:05:14.666Z

    Cannot find firefox binary in PATH. Make sure firefox is installed. OS appears to be: VISTA Build in ...

  3. 2021.05.14 tarjan

    2021.05.14 tarjan 标准版tarjan 这里使用数组来模拟栈 void tarjan(int x){ ++ind; dfn[x]=low[x]=ind; stacki[++top]=x ...

  4. 2017.10.14 Java的流程控制语句switch&&随机点名器

    今日内容介绍 1.流程控制语句switch 2.数组 3.随机点名器案例 ###01switch语句解构     * A:switch语句解构       * a:switch只能针对某个表达式的值作 ...

  5. informatica 学习日记整理

    1. INFORMATICA CLIENT的使用 1.1 Repository Manager 的使用 1.1.1 创建Repository. 前提: a.在ODBC数据源管理器中新建一个数据源连接至 ...

  6. AC日记——整理药名 openjudge 1.7 15

    15:整理药名 总时间限制:  1000ms 内存限制:  65536kB 描述 医生在书写药品名的时候经常不注意大小写,格式比较混乱.现要求你写一个程序将医生书写混乱的药品名整理成统一规范的格式,即 ...

  7. 寻找大学目标及行动步骤——记ITAEM团队第二期宣讲会(2014.05.14)

    ·昨晚8:00-9:40.在 钟海楼03029 ,进行了ITAEM团队第二期宣讲会(第一期见第一期宣讲会总结).来參加的主要是大一学生.以信院为主.也有法学院.文学院的同学. 在宣讲会中,大家都比較积 ...

  8. 团队作业4——第一次项目冲刺(Alpha版本)2017.11.14

    第一次会议:2017-11-14 额--这几天比较忙,忘记上传了,今天补上 先上个图,O(∩_∩)O哈哈: 会议主要内容: 1. 讨论整体框架 2. 个人具体分工 3. 代码统一 具体分工: 成员 计 ...

  9. 日记整理---->2016-11-01

    这里我们整理一下项目的流程,一般来说做一个模块之前.会有需求文档.页面原型和接口文档. 一. js获取radio的值 页面的html代码: <ul class="list-group& ...

  10. OpenSpiel 随笔 05.14

    ------------恢复内容开始------------ 这两天年总算把自己的游戏写完了,也通过了所有的测试. 我将自己的代码上传到了我的github上, 地址是 https://github.c ...

随机推荐

  1. 一个类似于postman的协议测试工具

    协议测试工具使用postman相当便捷,不过有一个问题,就是每个人都要装一个这个东西,并且测试文件导来导去,还是觉得麻烦了点. 最重要的是postman不能修改,有一些定制功能postman明显力不从 ...

  2. 【未通过】LintCode #366 斐波纳契数列

    实现: public class Solution { /** * @param n: an integer * @return: an ineger f(n) */ public int fibon ...

  3. (转)live555学习笔记9-h264 RTP传输详解(1)

    九 h264 RTP传输详解(1) 前几章对Server端的介绍中有个比较重要的问题没有仔细探究:如何打开文件并获得其SDP信息.我们就从这里入手吧. 当RTSPServer收到对某个媒体的DESCR ...

  4. linux stat 命令查看文件信息

    在Linux中,没有文件创建时间的概念.只有文件的访问时间.修改时间.状态改变时间.也就是说不能知道文件的创建时间.但如果文件创建后就没有修改过,修改时间=创建时间;如果文件创建后,状态就没有改变过, ...

  5. (个人)CentOS的JDK安装

    一. 卸载JDK 1. 通过如下命令查看当前JDK的相关内容 rpm -qa | grep java 2. 如果出现如下内容 java-1.7.0-openjdk-1.7.0.9-2.3.4.1.el ...

  6. 运行 Shell 脚本有两种方法:

    1.作为可执行程序 将上面的代码保存为 test.sh,并 cd 到相应目录: chmod +x ./test.sh #使脚本具有执行权限 ./test.sh #执行脚本 注意,一定要写成 ./tes ...

  7. exportfs命令 NFS客户端问题 FTP介绍 使用vsftpd搭建ftp

    exportfs命令 • 常用选项 • -a 全部挂载或者全部卸载 • -r 重新挂载 • -u 卸载某一个目录 • -v 显示共享目录 • 以下操作在服务端上 • vim /etc/exports ...

  8. java rpc

    一.简介 Hessian和Burlap是由Caucho Technology提供的基于HTTP协议的轻量级远程服务解决方案.他们都致力于借助尽可能简单那的API和通信协议来简化Web服务.    He ...

  9. RGB转LAB色彩空间

    1.原理 RGB无法直接转换成LAB,需要先转换成XYZ再转换成LAB,即:RGB——XYZ——LAB 因此转换公式分两部分: (1)RGB转XYZ 假设r,g,b为像素三个通道,取值范围均为[0,2 ...

  10. winform利用itextsharp.dll实现图片文件转换PDF格式文件

    1.利用itextsharp.dll实现单个图片文件转换为PDF格式文件, 可以使用以下类: void ConvertJPG2PDF(string jpgfile, string pdf) { var ...