SSH linux 秘籍口诀

hibernate session接口
hibernate的查询 (比较的get和load方法的异同)
hibernate的查询:Query,find,Criteria,get,load  樊哙可歌喽。
query使用hsql语句,可以设置参数是常用的一种方式
criteria的方式,避免了hql语句,看起来更面向对象了。
find方式,这种方式已经被新的hibernate 3丢弃,get()方法取代find().
get和load方式是根据id取得一个记录,get和load的不同:
1>记录不存在时返回结果:
      load()方法首先在缓存中找对象,如果检索不到就会抛出ObjectNotException异常,可返回实体的代理类实例;
      get()方法直接返回实体类,检索不到时会返回空(null) .
2> load()方法可以充分利用内部缓存和二级缓存中的现有数据,
     get()方法则仅仅在内部缓存中进行数据查找,如没有发现对应数据,将越过二级缓存,直接调用SQL读取数据。
3>从检索执行机制上对比:
      get方法和find方法都是直接从数据库中检索,而load方法的执行则比较复杂
  <1>首先查找session的persistent Context中是否有缓存,如果有则直接返回
  <2>如果没有则判断是否是lazy,如果不是直接访问数据库检索,查到记录返回,查不到抛出异常
  <3>如果是lazy则需要建立代理对象,对象的initialized属性为false,target属性为null
  <4>在访问获得的代理对象的属性时,检索数据库,如果找到记录则把该记录的对象复制到代理对象的target上,
    并将initialized=true,如果找不到就抛出异常 。
  STRUTS
HttpServletRequest的getParameter()和getAttribute()方法区别?
总的来说:
getParameter()是获取POST/GET传递的参数值;    getAttribute()是获取对象容器中的数据值
request.getAttribute方法返回request范围内存在的对象,request.getParameter方法是获取http提交过来的数据。
下面是整理getParameter和getAttribute的区别和各自的使用范围:
1 HttpServletRequest类有setAttribute()方法,而没有setParameter()方法
2 当两个Web组件之间为链接关系时,被链接的组件通过getParameter()方法来获得请求参数
  例如假定welcome.jsp和authenticate.jsp之间为链接关系,welcome.jsp中有以下代码:
      authenticate.jsp  
      或者:
     

          请输入用户姓名:
         
     

       在authenticate.jsp中通过request.getParameter("username")方法来获得请求参数username:
       <%  String  username=request.getParameter("username");  %>
3 当两个Web组件之间为转发关系时,转发目标组件通过getAttribute()方法来和转发源组件共享request范围内的数据。
    假定authenticate.jsp和hello.jsp之间为转发关系。authenticate.jsp希望向hello.jsp传递当前的用户名字,如何传递这一数据呢?
     先在authenticate.jsp中调用setAttribute()方法:
        <%
        String  username=request.getParameter("username");
        request.setAttribute("username",username);
        %>
       
        在hello.jsp中通过getAttribute()方法获得用户名字:
        <%  String  username=(String)request.getAttribute("username");  %>
        Hello:  <%=username  %>
     从更深的层次考虑,request.getParameter()方法传递的数据,会从Web客户端传到Web服务器端,代表HTTP请求数据。          request.getParameter()方法返回String类型的数据。
     request.setAttribute()和getAttribute()方法传递的数据只会存在于Web容器内部,在具有转发关系的Web组件之间共享。
     这两个方法能够设置Object类型的共享数据。
        request.getParameter()取得是通过容器的实现来取得通过类似post,get等方式传入的数据。
        request.setAttribute()和getAttribute()只是在web容器内部流转,仅仅是请求处理阶段。
        getAttribute是返回对象,getParameter返回字符串


AOP是什么?
AOP是OOP的的补充和完善。是Aspect Oriented Programming的缩写,意思是面向方面编程。AOP实际是GoF设计模式的延续,AOP是调用者和被调用者之间的解耦的一种实现。使代码更具有可读性以及更容易设计和维护,改善了代码质量。
OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当需要为分散的对象引入公共行为的时候,OOP则显得无能为力。例如日志功能分布在所有对象层次中,而与它所散布到的对象的核心功能毫无关系。这种散布在各处的无关的代码被称为横切(cross-cutting)代码。
  所谓“方面”,简单地说,就是将那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性。


AOP应用范围
Authentication 权限
Caching 缓存
Context passing 内容传递
Error handling 错误处理
Lazy loading 懒加载
Debugging  调试
logging, tracing, profiling and monitoring 记录跟踪 优化 校准
Performance optimization 性能优化
Persistence  持久化
Resource pooling 资源池
Synchronization 同步
Transactions 事务
Spring的声明性事务
Spring是为了解决业务层的事务管理问题。原先用手写代码发起、结束/回滚事务的做法使开发者很容易导致连接池的资源耗尽。Spring的声明性事务管理功能配置灵活简洁清晰。Spring声明式事务时,一个非常重要的概念就是事务属性。事务属性通常由事务的传播行为,事务的隔离级别,事务的超时间隔和事务只读标志组成。目的是将方法包装在事务的上下文中。
 总结:
Spring声明性事务配置几种方式,BeanNameAutoProxyCreator, TransactionProxyFactoryBean。
定义了三个事务隔离级别: 


脏读(dirty reads) 
一个事务读取了被另一个事务改写但还未提交的数据。 
不可重复的读(non-repeatable reads) 
一个事务重新读取前面读取过的数据,发现该数据已经被另一个已提交的事务修改过。 
幻读(phantom read) 
一个事务(T1)重新执行一个查询,返回一套符合查询条件的行,发现这些行中插入了被其他已提交的事务(T2)提交的行。 


传播属性(或传播行为)


传播行为解决的问题:新的事务是否要被启动或者要被挂起或者方法是否要在事务环境中运行。【必支强新 否从温】
定义了关于客户端和被调用方法的事务边界。Spring的七种传播行为:【必须的】
PROPAGATION_REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。
PROPAGATION_SUPPORTS--支持当前事务,如果当前没有事务,就以非事务方式执行。【支持】
PROPAGATION_MANDATORY--支持当前事务,如果当前没有事务,就抛出异常。      【强制的,命令的,受委托的、受托者】
PROPAGATION_REQUIRES_NEW--新建事务,如果当前存在事务,把当前事务挂起。【新】
PROPAGATION_NOT_SUPPORTED--以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。【非 否】
PROPAGATION_NEVER--以非事务方式执行,如果当前存在事务,则抛出异常。【从不】
PROPAGATION_NESTED--如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则进行与PROPAGATION_REQUIRED类似的操作。【筑巢 温床】
只读属性
 一个事务只对后台数据库执行数据读操作,通过声明只读事务给后台数据库实施一个合适的优化措施的机会。
只有将那些具有启动新的事务的传播行为的方法的事务标志为只读才有意义
事务超时
 避免了长时间的事务锁定,因为事务可能涉及到对后台数据库的锁定,长时间运行该事物而不回滚容易导致过多占用数据库的资源,这样就声明一个事务特定数秒后自动回滚。




linux有邪门      默认用炮弹痛击         shell   bash
普通用户交美元   超级用户挖口井     $   #
虚拟控制台6扇门,F1到F6             alt+F1---F6
关门shutdown;重开reboot              
礼似清单;不同目录的CD                      ls  cd
make 阿妹丢;                               mkdir  rmdir
随批阿妹                                    cp  rm
妹无猫                                      mv  cat
更多的秘密                                  more   pwd
用户组用户需要密码     useradd userdel  groupadd  groupdel  passwd
厮又改变模式;x执行          su      chmod  x可执行
启动的改变属主;          chown  
ps好看top排名               ps  top 查看进程  
大夫定时cron    df  显示目前磁盘剩余的磁盘空间。
上升下降mount umount
他阿PM               tar  rpm

你可能感兴趣的:(java)