11.22笔记(今天熟悉部门数据库,表结构,字段,自己做一个加密签名的东西联系)
部门支付数据库 172.16.136.253:1521/otestdb
主要两个用户: OTS用户 OBM用户
OTS主要两个表: orderdata 生成订单表
pay_orderdata 流水表
主要是这两张表,用户支付时先生成订单,再调流水表 |
支付业务: 短款(我们收到100笔交易,银行收到99笔) 长款(我们收到99笔交易,银行收到100笔,银行在今天打给我们100笔的钱,相当于多给了,每天结算时会出现问题,解决方法是余款存移(貌似是这个名字),就是昨天多给我们一笔订单的钱,今天就会少给一笔,,然后正好吻合就可以了) 短款:例如我们公司11.22收到100笔交易,银行收到99笔,我们比银行多一笔,多发生在前一天凌晨,用户发起订单在星期一23:59:59,支付成功在星期二0:0:1,银行内部规定不同,有的会算到周一,有的算到周二,这时候就会有长款和短款 |
java中如何将SimpleDateFormat类型转换成Date类型try {
format 将日期转化为字符串
|
JSONObject put,accumulate,element的区别 2014-01-22 10:09 32811人阅读 评论(3) 收藏 举报 public Object put (Object key, Object value) 将value映射到key下。如果此JSONObject对象之前存在一个value在这个key下,当前的value会替换掉之前的value Associates the specified value with the specified key in this map(optional operation). If the map previously contained . a mapping for this key, the old value is replaced by the specified value. (A map m is said to contain a mapping for a key k if and only if m.containsKey(k) would return true .))
public JSONObject accumulate (String key, Object value) 累积value到这个key下。这个方法同element()方法类似,特殊的是,如果当前已经存在一个value在这个key下那么一个JSONArray将会存储在这个key下来保存所有累积的value。如果已经存在一个JSONArray,那么当前的value就会添加到这个JSONArray中 。相比之下replace方法会替代先前的value Accumulate values under a key. It is similar to the element method except that if there is already an object stored under the key then a JSONArray is stored under the key to hold all of the accumulated values. If there is already a JSONArray, then the new value is appended to it. In contrast, the replace method replaces the previous value.
public JSONObject element (String key, Object value) 将键/值对放到这个JSONObject对象里面。如果当前value为空(null),那么如果这个key存在的话,这个key就会移除掉。如果这 个key之前有value值,那么此方法会调用accumulate()方法。 Put a key/value pair in the JSONObject. If the value is null, then the key will be removed from the JSONObject if it is present. If there is a previous value assigned to the key, it will call accumulate.
|
java中import机制(指定import和import *的区别)
java中有两种包的导入机制,总结如下: 单类型导入(single-type-import), 例如 import java.io.File; 按需类型导入(type-import-on-demand),例如 import java.io.*; 这里分析一下这两种导入类型的大致工作原理供大家参考。 单类型导入比较好理解,仅仅导入一个public类或者接口。 对于按需类型导入( import java.io.*; ),有人误解为导入一个包下的所有类,其实不然,看名字就知道,他只会按需导入,也就是说它并非导入整个包,而仅仅导入当前类需要使用的类。 既然如此是不是就可以放心的使用按需类型导入呢?非也,非也。 因为单类型导入和按需类型导入对类文件的定位算法是不一样的。java编译器会从启动目录(bootstrap),扩展目录(extension)和用户类路径下去定位需要导入的类,而这些目录进仅仅是给出了类的顶层目录。编译器的类文件定位方法大致可以理解为如下公式: 顶层路径名 \ 包名 \ 文件名.class = 绝对路径 对于单类型导入很简单,因为包明和文件名都已经确定,所以可以一次性查找定位。 对于按需类型导入则比较复杂,编译器会把包名和文件名进行排列组合,然后对所有的可能性进行类文件查找定位。例如: package com; import java.io.*; import java.util.*; 当你的类文件中用到了File类,那么可能出现File类的地方如下 File \\ File类属于无名包,就是说File类没有package语句,编译器会首先搜索无名包 com.File \\ File类属于当前包 java.lang.File \\ 编译器会自动导入java.lang包 java.io.File java.util.File 需要注意的地方就是,编译器找到java.io.File类之后并不会停止下一步的寻找,而要把所有的可能性都查找完以确定是否有类导入冲突。假设此时的顶层路径有三个,那么编译器就会进行3*5=15次查找。 注意:如果在查找完成后,编译器发现了两个同名的类,那么就会报错。要删除你不用的那个类,然后再编译。 了解以上原理之后,我们可以得出这样的结论:按需类型导入是绝对不会降低Java代码的执行效率的,但会影响到Java代码的编译速度。 查看JDK的源代码就知道SUN的软件工程师一般不会使用按需类型导入。因为使用单类型导入至少有以下两点好处: 1。提高编译速度。 2。避免命名冲突。(例如:当你import java.awt.*;import java.util.*后,使用List的时候编译器将会出编译错误) 当然,使用单类型导入会使用你的import语句看起来很长。
|
maven中jar和war的区别 原创 2016年07月11日 15:49:19 jar文件包括java普通类、资源文件和普通文件,在maven中即是打包src/main/java和src/main/resources资源文件夹下的所有文件。在打包的时候会自动生成MATA-INF文件夹,用于存储maven的pom信息和MANIFEST.MF文件。例如: war文件包含全部的web应用程序,即所有的java类,配置信息和jsp、js等静态资源。但是需要注意war引用war的时候会将应用war的资源全部拷贝到当前war的相同文件下,重名的文件会被替换。例如:
[html] view plain copy
|
P2P金融 编辑 P2P金融又叫P2P信贷,是互联网金融(ITFIN)的一种。意思是:点对点。 P2P金融指不同的网络节点之间的小额借贷交易(一般指个人),需要借助电子商务专业网络平台帮助借贷双方确立借贷关系并完成相关交易手续。借款者可自行发布借款信息,包括金额、利息、还款方式和时间,自行决定借出金额实现自助式借款。
|
现在想在实现类中的每个方法执行前、后、以及是否发生异常等信息打印出来,需要把日志信息抽取出来,写到对应的切面的类中 LoggingAspect.java 中 下面直接上完整代码,用@Aspect注解方式来实现前置通知、返回通知、后置通知、异常通知、环绕通知。 package import import import import import import import import import import /** * 日志切面 * * @author QianChaoChen 00002336<br> * @date 2017年3月3日 下午3:03:29 */ @Component @Aspect public * 前置通知:目标方法执行之前执行以下方法体的内容 * @param jp */
* 返回通知:目标方法正常执行完毕时执行以下代码 * @param jp * @param result */
* 后置通知:目标方法执行之后执行以下方法体的内容,不管是否发生异常。 * @param jp */
* 异常通知:目标方法发生异常的时候执行以下代码 */
// /** // * 环绕通知:目标方法执行前后分别执行一些代码,发生异常的时候执行另外一些代码 // * @return // */ // @Around(value="execution(* com.qcc.beans.aop.*.*(..))") // public Object aroundMethod(ProceedingJoinPoint jp){ // String methodName = jp.getSignature().getName(); // Object result = null; // try { // System.out.println("【环绕通知中的--->前置通知】:the method 【" + methodName + "】 begins with " + Arrays.asList(jp.getArgs())); // //执行目标方法 // result = jp.proceed(); // System.out.println("【环绕通知中的--->返回通知】:the method 【" + methodName + "】 ends with " + result); // } catch (Throwable e) { // System.out.println("【环绕通知中的--->异常通知】:the method 【" + methodName + "】 occurs exception " + e); // } // // System.out.println("【环绕通知中的--->后置通知】:-----------------end.----------------------"); // return result; // }
|
1.1 通用报文头通用报文头描述的是报文通用的内容信息。 1.1.1 请求报文头
1.1.2 响应报文头
|
spring @component的作用博客分类:
1、@controller 控制器(注入服务) 2、@service 服务(注入dao) 3、@repository dao(实现dao访问) 4、@component (把普通pojo实例化到spring容器中,相当于配置文件中的<bean id="" class=""/>) @Component,@Service,@Controller,@Repository注解的类,并把这些类纳入进spring容器中管理。
|
@ModelAttribute使用详解 1.@ModelAttribute注释方法 [java] view plain copy
14. <span style="font-size:12px;"> 15. </span> 这个例子,在获得请求/helloWorld 后,populateModel方法在helloWorld方法之前先被调用,它把请求参数(/helloWorld?abc=text)加入到一个名为attributeName的model属性中,在它执行后helloWorld被调用,返回视图名helloWorld和model已由@ModelAttribute方法生产好了。
|
log 的 debug()、 error()、 info()方法的区别 原创 2016年04月05日 11:00:11
软件中总免不了要使用诸如 Log4net, Log4j, Tracer 等东东来写日志,不管用什么,这些东东大多是大同小异的,一般都提供了这样5个日志级别:
也就是说,选择 Warn、Error、Fatal 中的具体哪一个,是根据当前的这个问题对以后可能产生的影响而定的,如果对以后基本没什么影响,则警告之,如果肯定是以后要出严重问题的了,则Fatal之,拿不准会怎么样,则 Error 之。
|
|