java.io包下适配和装饰模式的使用

如java.io.LineNumberInputStream(deprecated),是装饰模式(decorate)的实现;

如java.io.OutputStreamWriter,是适配器模式(adapter)的实现;

引用知乎海纳老师的说法,这样看java.io包中的类的名称就能大概知道使用方法了;

 

Adaptor所要解决的问题是适配,它的目的在于接口的转换。

而Proxy恰恰相反,它的目的在于保持接口不变,而改变接口定义的方法的行为。

代理的示意图:

 

 

 

海纳老师课程学习:

1、“我们能不使用外包类的时候还是尽量不要使用外包类,除非在使用容器,泛型等等的时候,不得不使用。跟这么多出乎意料的结果比起来,审美和品位已经不是最重要的了。”

2、数据结构,栈

 

 

 

 网上找的字节码指令对照表:

https://segmentfault.com/a/1190000008722128

 

中序表达式求和转换为后续表达式思路: 

http://www.codebelief.com/article/2016/10/application-of-stack-calculate-expressions/

"1. 第一遍扫描表达式时,遇到运算符则压入栈中,遇到操作数则按顺序取出,放入等待生成的后缀表达式中。
2. 若扫描运算符时遇到 ),说明栈中有 ( 与之配对,此时应依次弹出运算符,放入等待生成的后缀表达式中,直到 ( 从栈中弹出。
3. 若当前扫描的运算符优先级低于栈顶运算符的优先级,则应先弹出栈顶运算符,之后再把当前运算符压入栈中。"

栈的作用,保存当前结果值

 

 

 

面向对象:

 

 java5提供的语法进行不使用new来实例化数组;来源慕客网

 

 

jdk中好用的jinfo工具

使用示例:

jinfo 12104 | grep user.timezone

得到如:user.timezone = Asia/Harbin

下面链接中分析的很详细,关于java应用需要在应用启动中加入全局设置保证使用“Asia/Shanghai”时区

https://my.oschina.net/plutonji/blog/1933091

 

Java 8 Function之Predicate

 

 

2020-01-13

public static String frontCompWithZore(int sourceDate,int formatLength)
 
  {
  /*
  * 0 指前面补充零
  * formatLength 字符总长度为 formatLength
  * d 代表为正数。
  */
  String newString = String.format("%0"+formatLength+"d", sourceDate);
  return newString;
  }

String newString = String.format("%02d", 5); 
System.out.println("newString === "+newString);

  

JAVA ——int 类型除法保留两位小数

DecimalFormat df=new DecimalFormat("0.00");
System.out.println(df.format((float)a/b));

 

 

 

 

 

 

 

 

 

 

posted @ 2019-02-13 15:00  zhucezmf  阅读(254)  评论(0编辑  收藏  举报