记·一些零碎的小知识点

来源:互联网 发布:佛教网软件 编辑:程序博客网 时间:2024/05/17 23:15

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包)


0 0