java 笔记

来源:互联网 发布:java 时区时间转换 编辑:程序博客网 时间:2024/05/13 02:10
1.excel导入如果使用backspace删除的内容,java获取后为""
2.hibernate注解开发 注解放在get方法上 注明对应的列 这是改变get方法的名字同时也必须改变set的名字 因为hibernate会根据get方法名去拼接set方法名
3.java 方法传值 传的是对象不是引用 在方法中将引用指向另一个对象 传过来的对象值是不会改变的
如:
public static void main(String[] args){
String msg=null;
setString(msg);
System.out.println(msg);//输出为null
}
private static void setString(String msg){msg="aaaa";}方法内将引用指向了其他对象 而不是传过来的对象 main方法中的msg并不会改变 其他类型一样
4.spring的事务回滚
在service类前加上@Transactional,声明这个service所有方法需要事务管理。每一个业务方法开始时都会打开一个事务。
Spring默认情况下会对运行期例外(RunTimeException)进行事务回滚。这个例外是unchecked(继承runtimeException)
如果遇到checked(继承Exception)意外就不回滚。
如何改变默认规则:
1 让checked例外也回滚:在整个方法前加上 @Transactional(rollbackFor=Exception.class)
2 让unchecked例外不回滚: @Transactional(notRollbackFor=RunTimeException.class)
3 不需要事务管理的(只查询的)方法:@Transactional(propagation=Propagation.NOT_SUPPORTED)
5、easyui 只选择年月控件
function yearMoth(id){
var buttons = $.extend([], $.fn.datebox.defaults.buttons);  
buttons.splice(1, 0, {  
text: '清空',  
handler : function(target) {  
$(target).combo("setValue", "").combo("setText", ""); // 设置空值  
$(target).combo("hidePanel"); // 点击清空按钮之后关闭日期选择面板  
}  
});  
//$.fn.datebox.defaults.buttons = buttons; 
$(id).datebox({  
buttons: buttons  
}); 

$(id).datebox({
onShowPanel : function() {// 显示日趋选择对象后再触发弹出月份层的事件,初始化时没有生成月份层
span.trigger("click"); // 触发click事件弹出月份层
if (!tds)
setTimeout(function() {// 延时触发获取月份对象,因为上面的事件触发和对象生成有时间间隔
tds = p.find('div.calendar-menu-month-inner td');
tds.click(function(e) {
e.stopPropagation(); // 禁止冒泡执行easyui给月份绑定的事件
var year = /\d{4}/.exec(span.html())[0]// 得到年份
, month = parseInt($(this).attr('abbr'), 10) + 1; // 月份
$(id).datebox('hidePanel')// 隐藏日期对象
.datebox('setValue', year + '-' + month); // 设置日期的值
});
}, 0)
},
parser: function (s) {
if (!s) return new Date();
var arr = s.split('-');
return new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, 1);
},
//配置formatter,只返回年月 之前是这样的d.getFullYear() + '-' +(d.getMonth()); 
formatter: function (d) { 
var month = d.getMonth();  
if(month<10){  
month = "0"+month;  
}  
if (d.getMonth() == 0) {    
return d.getFullYear()-1 + '-' + 12;    
} else {    
return d.getFullYear() + '-' + month;    
}     
}


});


var p = $(id).combo("panel"), // 日期选择对象

tds = false, // 日期选择对象中月份

span = p.find(".calendar-title").find("span"); //显示月份层的触发控件


}
6、java8 新特性 http://www.jb51.net/article/48304.htm
7、<!-- webservice配置 -->
    <bean id="photoService" class="com.pms.ws.impl.PhotoServiceImpl"></bean>
    
    <jaxws:endpoint id="photoWS" implementor="#photoService" address="/photo"></jaxws:endpoint>
8、spring加载配置类@import(xxx.class)可以条件加载 xxx实现importSelects 可以加载多个配置类
9、spring aop 用|| && 链接多个拦截条件
10、java8 方法与构造函数引用 方法的参数都得一致
//IConvert<String, Integer> convertor = (from) -> ( Integer.parseInt(from));  
        IConvert<String, Integer> convertor = Integer::parseInt; //静态方法


Something something  = new Something();  
        IConvert<String, String> convertor = something::startWith;//对象方法
class Something{  
    String startWith(String s){  
          return String.valueOf(s.charAt(0));  
    }     
}  
11、如果发现@ConfigurationPropertie不生效,有可能是项目的目录结构问题,你可以通过@EnableConfigurationProperties(ConnectionSettings.class)来明确指定需要用哪个实体类来装载配置信息
12、springMVC和struts使用maven构建项目时不一定要把jsp放到webapp目录下,也可以放到classpath下以相对路径或绝对路径classpath:/**
13、当我们不为@Bean指定名字时,Spring会默认使用方法名作为Bean的名字
14、spring扫包也是会加载@configuration注解的
15、springboot下同时使用freemarker和thmymeleaf freemarker优先级要高  http://blog.csdn.net/qq_15042899/article/details/72885889
16、springScurity 获取认证失败后的错误信息 http://blog.csdn.net/sun1021873926/article/details/60332059  
  http://blog.csdn.net/jaune161/article/details/18361421 //默认重定向到的登陆失败页面并把错误信息放到session中 源码SimpleUrlAuthenticationFailureHandler
sql方式根据 UNIQUE KEY 存在更新不存在插入
insertSql.append("(");
insertSql.append("created_tm,batch_code,operate_zone_code,batch_tm,last_indepot_tm,begin_tm,"
+ "end_tm,work_day,batch_no,pickphase_begin_tm,pickphase_end_tm,version_dt,status,update_version_dt,update_tm");
insertSql.append(") VALUES (");
insertSql.append("?,?,?,?,?,");
insertSql.append("?,?,?,?,?,");
insertSql.append("?,?,?,?,?)");
insertSql.append(" ON DUPLICATE KEY UPDATE ");
insertSql.append(" created_tm =? ,batch_code =?,operate_zone_code =?,batch_tm= ?,last_indepot_tm=?,begin_tm=?,"
+ "end_tm=?,work_day=?,batch_no=?,pickphase_begin_tm=?,pickphase_end_tm=?,version_dt=?,status=?,update_version_dt=?,update_tm=?");
建表加上 UNIQUE KEY `pickup_depot_result_unique` (`batch_code`,`batch_tm`)
18、nio编程 http://blog.csdn.net/yanmei_yao/article/details/8586199
19、动态定时任务 http://blog.csdn.net/wwkms/article/details/48851005
20、dockerfile volume参数:
VOLUME 指定了临时文件目录为/tmp。其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp。改步骤是可选的,如果涉及到文件系统的应用就很有必要了。
/tmp目录用来持久化到 Docker 数据文件夹,因为 Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp作为工作目录
21、docker构建为服务 http://blog.csdn.net/forezp/article/details/70198649
22、docker容器互联 http://www.cnblogs.com/51kata/p/5276804.html 
docker提供了一种机制,可以让一个容器和另一个容器很方便的连接起来。举例:
docker run --name test1 --link myweb:web -it ubuntu /bin/bash
上面命令创建了一个新的容器test1。 这里引入了一个新的标记 --link,其参数部分的myweb表示要连接的容器,web是要连接的容器的别名。
容器创建后,我们用 ping web命令发现能连接到myweb容器,这样因为用的不是ip地址,而是别名。这样即使myweb容器重启后,上面创建的test1容器对其连接的代码或脚本也不用修改。
假设myweb容器提供了web服务,容器内的端口是80.
这时在test1容器内可以用如下方式访问:  curl  http://web:80
显然,这种方式的优点是不再指定ip地址,即使 myweb容器重启后ip地址变了也没关系。
23、springboot importSelector原理:http://www.jianshu.com/p/7fd7eeeccad0
24、WebApplicationInitializer原理 http://blog.csdn.net/koflance/article/details/59233428
原创粉丝点击