• java学习日志1


    1.flush清理缓存,执行SQL,但还没提交事务,还是可以回滚的。flush在commit也会执行的。
    2.数据库的隔离级别。
    未提交读 未提交也能读
    已提交读 只有提交了才能读
    可重复读 重复读取的数据一样
    序列化读 基本没并发性
    3.主键生成策略:
    uuid:hibernate生成 save未执行语句
    native: 数据库生成 save已执行语句
    assigned: 手动分配
    4.hibernate基本映射
    实体类->表 <class>
    普通属性->表字段 <property> 批不包括自定义类、集合和数组等
    注意:如果实体类和实体类中的属性和SQL中的关键字重复,必须采用table或column重新命名
    实体类的设计原则:
    * 实现一个默认的(即无参数的)构造方法(constructor)
    * 提供一个标识属性(identifier property)(可选)
    * 使用非final的类(可选)lazy代理的情况下,无法继承这个类生成子类,会报错。
    * 可持久化字段声明访问器(accessors)
    5.session.evict(实体对象);将对象从session中逐出,即从session的EntiryEntries属性中逐出。缓存session临时集合里面还有。这样无法成功提交的。可先flush
    6.hibernate 会先执行insert的所有语句,再执行update语句,再delete..可以显示调用flush解决。
    7.乐观锁和悲观锁(其实就是解决并发的问题)
    * oracle不支持未提交读,默认已提交读
    * mysql默认可重复读
    悲观锁:通常依赖于数据库机制,在整个过程中装数据锁定,其他任何用户都不能读取或修改。适合于短事务。(load时选锁模式,其实就是for update锁住)
    乐观锁:hibernate optimistic-lock="true",版本号控制,数据表里加一个版本号字段,当内存中数据的版本号小于数据库里的版本号时,报错。
    8.struts1
    * action 对应每一次请求 返回actionForward
    * actionForm 把表单上的数据都收集到一个类里
    * actionForward 跳转
    9.ip获取
    <%
    String ip=request.getHeader("x-forwarded-for");
    if(ip==null||ip.length()==0||"unknown".equalsIgnoreCase(ip)){
    ip=request.getHeader("Proxy-Client-IP");
    }
    if(ip==null||ip.length()==0||"unknown".equalsIgnoreCase(ip)){
    ip=request.getHeader("WL-Proxy-Client-IP");
    }
    if(ip==null||ip.length()==0||"unknown".equalsIgnoreCase(ip)){
    ip=request.getRemoteAddr();
    }
    %>
    10.javascript加载
    $(document).ready(function(){});
    11.mysql的utf-8一个字符是占用3个字节长度的
    12.数据库密文加密新想法,先设一个值,取MD5,+密码,再MD5,这样,别人很难解出来了。

  • 相关阅读:
    源码解析之–网络层YTKNetwork
    ARC和非ARC文件混编
    Xcode真机调试中"There was an internal API error"错误解决方法
    设置textView或者label的行间距方法
    iOS中__block 关键字的底层实现原理
    使用AVCaptureSession捕捉静态图片
    使用AVCaptureSession显示相机预览
    短小强悍的JavaScript异步调用库
    开源中国愚人节网页变模糊的js blur代码
    undefined与null的区别
  • 原文地址:https://www.cnblogs.com/svvs/p/3031468.html
Copyright © 2020-2023  润新知