记·一些零碎的小知识点
2016-04-18 16:29
204 查看
1.关于String.format("%.0f",99.4); 这个语句这样写,会将右侧double型数据,根据格式给四舍五入了。99
%.0f是说,将传入的n转换成float类型的数,这个数原先有多少位,就显示多少位..但是,小数点右边的数只显示0位.
但是比如String str1 = String.format("%10.5f", 3.19);
这样的语句,最后输出的结果str1就会变成( 3.19000)==>四个空格+3.19000
因为10.5表示总共用十位来表示,小数点右边保留五位.
而小数点右边只有两位,所以不会产生进位.
而小数点左右只有1位,因此默认用 空格来填充。
2.InputStream is = null;
is = new FileInputStream(new File(System.getProperty("user.dir")+"\\test.properties"));
Property p = new Properties();
p.load(is);//获取配置文件
3.ApplicationContext springContext =
new FileSystemXmlApplicationContext(
new String[]{
"conf/app.xml",
"conf/pums.xml",
"conf/pedb.xml",
"conf/BeanHttpInvoker.xml"});
springContext.getBean(Test.class);
4.优先使用ActionContext,做到web与action解耦,对action的测试和复用都有好处 -------
ActionContext ctx = ActionContext.getContext();
HttpServletRequest request =(HttpServletRequest)ctx.get(ServletActionContext.HTTP_REQUEST);
String path = request.getRealPath("/");
--------------------------------------------
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
获取请求端的ip地址:request.getRemoteAddr()
5.java数据类型图:
┏数值型━┳━整数型:byte short int long
┏基本数据类型━━┫ ┗━浮点型:float double
┃ ┣字符型:char
数据类型╋ ┗布尔型:boolean
┃ ┏类(class)
┗引用数据类型━━╋接口(interface)
┗数组(array)
java的数据类型分基本数据类型(原始数据类型)和引用数据类型;
1.基本八大类,图中可以很清楚的看到;这种类型的数据变量在声明之后java就会立刻分配给他内存空间。
如:short a; java会在可使用的内存空间寻找一个占两个字节的块给a变量;
2.引用数据类型就那三种,类似C/C++的指针,它以特殊的方式指向对象实体(具体的值),这类变量声明
时不会分配内存,只是存储了一个内存地址,想具体知道看看数据结构就好了。
通俗讲,一、上图记住很够用;二、说内存、谈地址基本都是说引用而非基本;
三、你可以把内存地址理解是你学号,而对象实体就是你,每次找你通过学号找,这就是引用;
这个知识点的应用:
1.“==”作用在引用数据类型间,判断内存地址是否相等,想判断内容实体用equals;
2、基本传值传参传的是副本,修改后原值不变;引用传值传参穿的是地址,修改后原值改变。
6.Hibernate缓存的作用:
Hibernate是一个持久层框架,经常访问物理数据库,为了降低应用程序对物理数据源访问的频次,从而提高应
用程序的运行性能。缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特
定的时刻或事件会同步缓存和物理数据源的数据
Hibernate缓存分类:
Hibernate缓存包括两大类:Hibernate一级缓存和Hibernate二级缓存
Hibernate一级缓存又称为“Session的缓存”,它是内置的,不能被卸载(不能被卸载的意思就是这种缓存不具有可选性,必须有的功能,不可以取消session缓存)。由于Session对象的生命周期通常对应一个数据库事务或者一个应用事务,因此它的缓存是事务范围的缓存。第一级缓存是必需的,不允许而且事实上也无法卸除。在第一级缓存中,持久化类的每个实例都具有唯一的OID。
Hibernate二级缓存又称为“SessionFactory的缓存”,由于SessionFactory对象的生命周期和应用程序的整个过程对应,因此Hibernate二级缓存是进程范围或者集群范围的缓存,有可能出现并发问题,因此需要采用适当的并发访问策略,该策略为被缓存的数据提供了事务隔离级别。第二级缓存是可选的,是一个可配置的插件,在默认情
况下,SessionFactory不会启用这个插件。
什么样的数据适合存放到第二级缓存中?
1 很少被修改的数据
2 不是很重要的数据,允许出现偶尔并发的数据
3 不会被并发访问的数据
4 常量数据
不适合存放到第二级缓存的数据?
1经常被修改的数据
2 .绝对不允许出现并发访问的数据,如财务数据,绝对不允许出现并发
3 与其他应用共享的数据。
Hibernate查找对象如何应用缓存?
当Hibernate根据ID访问数据对象的时候,首先从Session一级缓存中查;查不到,如果配置了二级缓存,那么从二级缓存中查;如果都查不到,再查询数据库,把结果按照ID放入到缓存删除、更新、增加数据的时候,同时更新缓存
Hibernate管理缓存实例
无论何时,我们在管理Hibernate缓存(Managing the caches)时,当你给save()、update()或saveOrUpdate()方法传递一个对象时,或使用load()、 get()、list()、iterate() 或scroll()方法获得一个对象时, 该对象都将被加入
到Session的内部缓存中。
当随后flush()方法被调用时,对象的状态会和数据库取得同步。 如果你不希望此同步操作发生,或者你正处理大量对象、需要对有效管理内存时,你可以调用evict() 方法,从一级缓存中去掉这些对象及其集合。
分为两类:会话缓存和工厂缓存
7.Invalid byte 1 of 1-byte UTF-8 sequence.
改UTF-8为UTF8,报错再改回来就得,然后就好了
8.高效的去重语句
DELETE FROM EMP E WHERE E.ROWID != (SELECT MIN(E.ROWID) FROM EMP X WHERE X.EMP_NO=E.EMP_NO);
9.IBATIS and和or的联合查询
<dynamic prepend="and" open="(" close=")">
<dynamic>
10.查询类所在jar包
ctrl+shift+T
若是在日志中查看到的类,可将类写入项目,手动导入,查看到类的包位置。(适用于自定义jar包)
%.0f是说,将传入的n转换成float类型的数,这个数原先有多少位,就显示多少位..但是,小数点右边的数只显示0位.
但是比如String str1 = String.format("%10.5f", 3.19);
这样的语句,最后输出的结果str1就会变成( 3.19000)==>四个空格+3.19000
因为10.5表示总共用十位来表示,小数点右边保留五位.
而小数点右边只有两位,所以不会产生进位.
而小数点左右只有1位,因此默认用 空格来填充。
2.InputStream is = null;
is = new FileInputStream(new File(System.getProperty("user.dir")+"\\test.properties"));
Property p = new Properties();
p.load(is);//获取配置文件
3.ApplicationContext springContext =
new FileSystemXmlApplicationContext(
new String[]{
"conf/app.xml",
"conf/pums.xml",
"conf/pedb.xml",
"conf/BeanHttpInvoker.xml"});
springContext.getBean(Test.class);
4.优先使用ActionContext,做到web与action解耦,对action的测试和复用都有好处 -------
ActionContext ctx = ActionContext.getContext();
HttpServletRequest request =(HttpServletRequest)ctx.get(ServletActionContext.HTTP_REQUEST);
String path = request.getRealPath("/");
--------------------------------------------
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
获取请求端的ip地址:request.getRemoteAddr()
5.java数据类型图:
┏数值型━┳━整数型:byte short int long
┏基本数据类型━━┫ ┗━浮点型:float double
┃ ┣字符型:char
数据类型╋ ┗布尔型:boolean
┃ ┏类(class)
┗引用数据类型━━╋接口(interface)
┗数组(array)
java的数据类型分基本数据类型(原始数据类型)和引用数据类型;
1.基本八大类,图中可以很清楚的看到;这种类型的数据变量在声明之后java就会立刻分配给他内存空间。
如:short a; java会在可使用的内存空间寻找一个占两个字节的块给a变量;
2.引用数据类型就那三种,类似C/C++的指针,它以特殊的方式指向对象实体(具体的值),这类变量声明
时不会分配内存,只是存储了一个内存地址,想具体知道看看数据结构就好了。
通俗讲,一、上图记住很够用;二、说内存、谈地址基本都是说引用而非基本;
三、你可以把内存地址理解是你学号,而对象实体就是你,每次找你通过学号找,这就是引用;
这个知识点的应用:
1.“==”作用在引用数据类型间,判断内存地址是否相等,想判断内容实体用equals;
2、基本传值传参传的是副本,修改后原值不变;引用传值传参穿的是地址,修改后原值改变。
6.Hibernate缓存的作用:
Hibernate是一个持久层框架,经常访问物理数据库,为了降低应用程序对物理数据源访问的频次,从而提高应
用程序的运行性能。缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特
定的时刻或事件会同步缓存和物理数据源的数据
Hibernate缓存分类:
Hibernate缓存包括两大类:Hibernate一级缓存和Hibernate二级缓存
Hibernate一级缓存又称为“Session的缓存”,它是内置的,不能被卸载(不能被卸载的意思就是这种缓存不具有可选性,必须有的功能,不可以取消session缓存)。由于Session对象的生命周期通常对应一个数据库事务或者一个应用事务,因此它的缓存是事务范围的缓存。第一级缓存是必需的,不允许而且事实上也无法卸除。在第一级缓存中,持久化类的每个实例都具有唯一的OID。
Hibernate二级缓存又称为“SessionFactory的缓存”,由于SessionFactory对象的生命周期和应用程序的整个过程对应,因此Hibernate二级缓存是进程范围或者集群范围的缓存,有可能出现并发问题,因此需要采用适当的并发访问策略,该策略为被缓存的数据提供了事务隔离级别。第二级缓存是可选的,是一个可配置的插件,在默认情
况下,SessionFactory不会启用这个插件。
什么样的数据适合存放到第二级缓存中?
1 很少被修改的数据
2 不是很重要的数据,允许出现偶尔并发的数据
3 不会被并发访问的数据
4 常量数据
不适合存放到第二级缓存的数据?
1经常被修改的数据
2 .绝对不允许出现并发访问的数据,如财务数据,绝对不允许出现并发
3 与其他应用共享的数据。
Hibernate查找对象如何应用缓存?
当Hibernate根据ID访问数据对象的时候,首先从Session一级缓存中查;查不到,如果配置了二级缓存,那么从二级缓存中查;如果都查不到,再查询数据库,把结果按照ID放入到缓存删除、更新、增加数据的时候,同时更新缓存
Hibernate管理缓存实例
无论何时,我们在管理Hibernate缓存(Managing the caches)时,当你给save()、update()或saveOrUpdate()方法传递一个对象时,或使用load()、 get()、list()、iterate() 或scroll()方法获得一个对象时, 该对象都将被加入
到Session的内部缓存中。
当随后flush()方法被调用时,对象的状态会和数据库取得同步。 如果你不希望此同步操作发生,或者你正处理大量对象、需要对有效管理内存时,你可以调用evict() 方法,从一级缓存中去掉这些对象及其集合。
分为两类:会话缓存和工厂缓存
7.Invalid byte 1 of 1-byte UTF-8 sequence.
改UTF-8为UTF8,报错再改回来就得,然后就好了
8.高效的去重语句
DELETE FROM EMP E WHERE E.ROWID != (SELECT MIN(E.ROWID) FROM EMP X WHERE X.EMP_NO=E.EMP_NO);
9.IBATIS and和or的联合查询
<dynamic prepend="and" open="(" close=")">
<dynamic>
10.查询类所在jar包
ctrl+shift+T
若是在日志中查看到的类,可将类写入项目,手动导入,查看到类的包位置。(适用于自定义jar包)
相关文章推荐
- 左旋转字符串
- 李开复:算法的力量
- ubuntu fastdfs ./make.sh install 执行报错
- Spring Task的坑
- rollback写在messagebox
- abstract class和interface有什么区别?
- 231. Power of Two
- 懒人爱家务_适配器(ArrayAdapter)
- android 生成二维码
- JAVA 笔记 (总)
- 快速稀疏编码算法
- 【Android开发工作笔记】之接收和拦截解析短信功能
- 2016-04-18
- 【整理向】OJ上一些不(jiao)错(shui)的背包题
- LeetCode 刷题 -- power of three
- java版精简搜狗皮肤
- shell下的进程
- LeetCode *** 16. 3Sum Closest
- 最长公共子串 | 阿里2015笔试附加题2
- UNP(一):网络编程角度下的TCP、UDP协议