2016-11-21简单的总结一下学到的知识点。作为一个目标而存在的东西,总是那么美丽而优雅。

一、PE中事务的编写

getTransactionTemplate().execute(new TransactionCallback() {
public Object doInTransaction(TransactionStatus arg0) {
getSqlMap().update("mt.updateSystemLimit",context.getDataMap());// 更新个人限额表
getSqlMap().update("mt.updateSystemLimitEnt",context.getDataMap());// 更新企业限额表
if(!"".equals(MinGuaranteeLimit)&&MinGuaranteeLimit!=null&&!"".equals(EarlyWarningLimit)&&EarlyWarningLimit!=null){
getSqlMap().update("mt.updateSystemLimitEnt",map2);// 更新企业垫资限额和保底限额
}
return null;
}
}

二、日志的控制级别

error>warn>info>debug。

在spring中,若要打印框架内部的日志。需要将jcl的日志框架改成slf能够识别的日志规范。在spring中使用logback,需要以下的jar包。

<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback-version}</version>
</dependency> <dependency>
<groupId>org.logback-extensions</groupId>
<artifactId>logback-ext-spring</artifactId>
<version>${logback-spring-version}</version>
</dependency> <!-- 添加这个,可以打印spring内部的日志 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.7.21</version>
</dependency>

三、Vue中的v-bind:value和v-model

首先v-model只是一种语法糖,以下两种写法是等价的。

<input v-model="something">
<input v-bind:value="something" v-on:input="something = $event.target.value">

以下是一个例子,便于理解:value和v-model的区别。html部分的代码:

<div id="app">
<input :value="username" @input="updateUsername"><br>
<input v-model="username"><br>
<div>{{username}}</div>
</div>
  • js的代码如下:
var password = "huhx";
new Vue({
el: "#app",
data: {
username: password,
},
methods: {
updateUsername: function(e) {
password = "name is huhx";
}
}
});

运行的效果如下:password的改变并不影响this.username,也就是输入框的内容。

aaarticlea/gif;base64,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6NQrX/m8ts279yJ9bYAnaEZSAH6EVkOLTo2OXZCRLhEAIfkEAQoAAAAsYgACAAcAEQCiAP8AAAAApsj/////hWMsepzTAAAAAAAAAxcoCir05RFAq7046827/0MYhENgAmaQAAAh+QQBFAAAACwoAAYABQAQAKMA/wAAAAD/13ev//8nAE////8MAAD//6/X//931/9PACcAJ3eTTwAAAAAAAAAAAAAEH7AAEICkdtbFQkCHklQCMVSGR5rrCZQu3M4ZdlU3EAEAIfkEARQAAAAsKwAGAAUAEACjAP8AAAAA/9d3r///JwBP////DAAA//+v1///d9f/TwAnACd3k08AAAAAAAAAAAAABB+wABCApHbWxUJAh5JUAjFUhkea6wmULtzOGXZVNxABACH5BAEUAAAALC0ABgAFABAAowD/AAAAAK/Xd6///ycAT////9f//08AJwAMAHfX/3fXrwAAAAAAAAAAAAAAAAAAAAQeEBQQgKR2VoBCMMqRVAIxbBRpqidQti8rZ9i1aUAEACH5BAEKAAAALDAABgAFABAAowD/AAAAAP/Xd6///ycAT////wwAAP//r9f//3fX/08AJwAnd5NPAAAAAAAAAAAAAAQfsAAQgKR21sVCQIeSVAIxVIZHmusJlC7czhl2VTcQAQAh+QQBCgAAACwzAAYABQAQAKMA/wAAAAD/13ev//8nAE////8MAAD//6/X//931/9PACcAJ3eTTwAAAAAAAAAAAAAEH7AAEICkdtbFQkCHklQCMVSGR5rrCZQu3M4ZdlU3EAEAIfkEAQoAAAAsYQADAAgAFAChAP8AAAAA////epzTAiPEbggr6/xcW6HS8MLM2+kIfJHIgaTXUWnYCZO7YSYYZlaFFQAh+QQBFAAAACxEAAcAJAAmAKEA/wD///8AAAAAAAACR4SPqQvh/ZicKNB7Ld5L8294ICeOWGlSaCqtbPeecTar9eTejZ44ls8LCofEYlGABCAFRKbReTQqpdAm9frERrPcrXCpTPIKACH5BAEUAAAALAYAAgCbAC4AowD/AHmb0v///6mpqaXH/qTG/QAAANPj/mSW6JKivU+v/wAndwAAAAAAAAAAAAAAAAT/EIhJq7046827/2AoSkNpnmiqrmzrvnAsz/Q0AHiu73zv/8CgcEgsGosD23HJbDqf0GBScIs6BdasNjut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" alt="" />

如果在updateUsername方法中,加上this.username = e.target.value;那么第一个输入框的修改,会影响所有的内容显示。这也就是上述所说的v-model类似

  • 如果加上以下的内容:
computed: {
username: function() {
return password + ", name";
}
},

运行的效果如下:修改两个输入框的内容,不改变this.username,而且this.username内容始终为:huhx, name。这说明了在渲染数据的时候,先是data里面的username,然后调用computed里面的username的get方法。

aaarticlea/gif;base64,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" alt="" />

四、关于pe加载文件的部分笔稿

XmlBeanDefinitionReader 这个不一样,这里开始了重写。
XmlBeanDefinitionReader
ApplicationConfigParser这个是解析的类 EntityResolver entityResolver = (EntityResolver)constructor0.newInstance(new Object[] { "pe-config.dtd", "/com/csii/pe/config/"})
tag-definitions.xml定义了pe的核心。
loadTagDefinitions Class parserClass0 = Class.forName("com.csii.pe.config.ApplicationConfigParser");
setParserClass(parserClass0);
Class class0 = Class.forName("com.csii.pe.config.DtdResolver");
Constructor constructor0 = class0.getConstructor(new Class[] {
java.lang.String.class, java.lang.String.class
});
EntityResolver entityResolver = (EntityResolver)constructor0.newInstance(new Object[] {
"pe-config.dtd", "/com/csii/pe/config/"
});
setEntityResolver(entityResolver);
logger.info("using entity resolver:" + entityResolver);
}

五、对于js中装包的理解

首先js的代码如下:

function funTest() {
var outerParam = "huhx";
innner("123456");
function innner(str) {
console.log("hello world " + outerParam + ", " + str);
}
return function() {
innner("linux");
outerParam = "chenhui";
console.log(outerParam);
}
}
  • funTest():
hello world huhx, 123456
  • funTest()():
hello world huhx, 123456
hello world huhx, linux
chenhui
  • var test = new funTest(); test();
hello world huhx, 123456
hello world huhx, linux
chenhui

六、伪元素的基本使用

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
span:before {
content: "I love you, "
}
span:after {
content: "I hate you.";
color: red;
}
</style>
</head>
<body>
<p><span id="test">周长风</span></p>
<script type="text/javascript">
var ele = document.getElementById("test").innerText; // 周长风
alert(ele);
</script>
</body>
</html>

页面显示效果:

七、toString和String强制转换的区别

Object obj = null;
System.out.println(obj.toString()); // 抛出空指针异常:java.lang.NullPointerException
System.out.println((String)obj); // null

八、 抢火车票程序思路

1、访问12306网站,查询余票。通过console可以得到请求的url以及请求数据。

2、在项目中通过okhttp发送请求,可以得到返回的数据。

3、转换成json对象,对数据进行解析处理。

4、得到你想要的信息,根据要求判断是否发送邮件通知。

5、开启一个定时任务,不断的轮询火车票的状态,重复上述的操作。

一、访问12306网站:在console里面得到url为:参数2017-01-17是出发日,SHH是出发地上海,WHN是目的地武汉,ADULT是单选框选中的普通。

https://kyfw.12306.cn/otn/leftTicket/queryA?leftTicketDTO.train_date=2017-01-17&leftTicketDTO.from_station=SHH&leftTicketDTO.to_station=WHN&purpose_codes=ADULT

对url进行组装:

final String path = url + "queryA?leftTicketDTO.train_date=" + time + "&leftTicketDTO.from_station=" + from + "&leftTicketDTO.to_station=" + to + "&purpose_codes=" + purpose;

返回的数据在12306上显示大概如下:

二、通过okhttp发送的get请求,得到返回的数据:

Runnable runnable = new Runnable() {
@SuppressWarnings("deprecation")
@Override
public void run() {
OkHttpClient.Builder builder = new OkHttpClient.Builder();
List<InputStream> inputStreams = new ArrayList<>();
inputStreams.add(new ByteArrayInputStream(CER_12306.getBytes()));
SSLSocketFactory sslSocketFactory = getSocketFactory(inputStreams);
builder.sslSocketFactory(sslSocketFactory);
OkHttpClient client = builder.build();
Request request = new Request.Builder().url(path).build();
try {
Response response = client.newCall(request).execute();
ResponseBody body = response.body();
String string = body.string(); // 请求返回的数据
// 对返回的数据进行分析处理
getInfoFromResponse(string);
System.out.println("string " + string);
body.close();
} catch (IOException e) {
e.printStackTrace();
}
}
};

三、对返回的数据做解析处理。

private static void getInfoFromResponse(String string) {
boolean isEmailSend = true;
JSONObject jsonObject = JSONObject.parseObject(string);
String httpStatus = jsonObject.getString("httpstatus");
StringBuilder builder = new StringBuilder();
if (StringUtils.isEmpty(httpStatus) || !httpStatus.equals("200")) {
return;
}
@SuppressWarnings("unchecked")
List<Map<String, Map<String, String>>> dataObject = (List<Map<String, Map<String, String>>>) jsonObject.get("data");
System.out.println(dataObject.size());
builder.append(getInfoMessage(dataObject, isEmailSend));
if (isEmailSend) {
SendMailUtils.sendMail(emailTo, "<span>" + builder.toString() + "</span>");
}
}

四、针对解析处理的结果,看是否要发送邮件通知。

public static void sendMail(String to, String message) {
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.qq.com");
props.put("mail.smtp.port", 465); // 这个需要
props.put("mail.smtp.auth", "true");
props.put("mail.from", EMAIL_SEND_FROM);
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
Session session = Session.getInstance(props, auth);
MimeMessage msg = new MimeMessage(session);
Address address;
try {
address = new InternetAddress(EMAIL_SEND_FROM);
msg.setFrom(address);
msg.setRecipients(Message.RecipientType.TO, to);
msg.setSubject("胡红翔");
msg.setSentDate(new Date());
String html = "<html><body>" + message + "</body></html>";
msg.setText(html, "utf-8", "html");
Transport.send(msg);
} catch (Exception e) {
e.printStackTrace();
}
}

五、开启定时任务

// 定时任务
ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
service.scheduleAtFixedRate(runnable, 0, watiTime, TimeUnit.MINUTES);

六、接收的邮件通知如下:不够人性化,但是数据都有,后续处理好说。

七、过程中遇到的问题

1、使用okhttp发送https请求时,会涉及到证书的知识。这方面不是很了解

2、线程中关于是否发送邮箱的变量isEmailSend有些不好把握,关于线程方面有待提高。

八、过程中学到的知识:

1、okhttp发送https请求,了解了一些关于证书的知识

2、定时任务的另外一种写法。

友情链接

日记整理---->2016-11-21的更多相关文章

  1. 2017/11/21 Leetcode 日记

    2017/11/21 Leetcode 日记 496. Next Greater Element I You are given two arrays (without duplicates) num ...

  2. 【读书笔记】2016.11.19 北航 《GDG 谷歌开发者大会》整理

    2016.11.19 周六,我们在 北航参加了<GDG 谷歌开发者大会>,在web专场,聆听了谷歌公司的与会专家的技术分享. 中午免费的午餐,下午精美的下午茶,还有精湛的技术,都是我们队谷 ...

  3. U3D笔记11:47 2016/11/30-15:15 2016/12/19

    11:47 2016/11/30Before you can load a level you have to add it to the list of levels used in the gam ...

  4. 【转载】webstorm11(注册,激活,破解,码,一起支持正版,最新可用)(2016.11.16更新)

    很多人都发现 http://idea.lanyus.com/ 不能激活了 很多帖子说的 http://15.idea.lanyus.com/ 之类都用不了了 最近封的厉害仅作测试 选择 License ...

  5. 微信iphone7、 ios10播放视频解决方案 2016.11.10

    2016.11.10日更新以下方法 微信最新出同层播放规范 即使是官方的也无法解决所有android手机的问题. 另外iphone 5 .5s 某些手机始终会弹出播放,请继续采用 “以下是老的解决办法 ...

  6. FFMpeg ver 20160219-git-98a0053 滤镜中英文对照 2016.02.21 by 1CM

    FFMpeg ver 20160219-git-98a0053 滤镜中英文对照 2016.02.21 by 1CM T.. = Timeline support 支持时间轴 .S. = Slice t ...

  7. ”耐撕“团队 2016.3.21 站立会议3 2 1 GO!

    ”耐撕“团队 2016.3.21 站立会议 时间:2016.3.21  ① 17:20-17:45  ②17:55-18:10  总计40分钟 成员: Z 郑蕊 * 组长 (博客:http://www ...

  8. 打印出1,11,21,31,41。。。。。。的shell脚本

    打印出1,11,21,31,41......的shell脚本 方法一:#!/bin/bash ;i<;i=i+));do echo $i #cat -n /etc/services | sed ...

  9. 最新的 cocoapods 安装与使用(2016.11)

    cocoapods简介: cocoapods 是iOS的类库管理工具,可以让开发者很方便集成各种第三方库,而不用去网站上一个个下载,再一个个文件夹的拖进项目中,还得添加相关的系统依赖库.只需要安装好c ...

  10. China Intelligent Office Summit(2018.11.21)

    时间:2018.11.21地点:中关村软件园国际会议中心

随机推荐

  1. MP3帧时长为26ms的来历

  2. 浪漫程序员 HTML5爱心表白动画

    我们程序员在追求爱情方面也是非常浪漫的,下面是一位同学利用自己所学的HTML5知识自制的HTML5爱心表白动画,画面非常温馨甜蜜,这样的创意很容易打动女孩,如果你是单身的程序员,也赶紧来制作自己的爱心 ...

  3. 解决 PathVariable annotation was empty on param 0.

    今天在写网关关于远程调用Feign的时候报的一个错误,PathVariable注解为空.仔细看了一下代码发现问题出在用@PathVariable注解的时候 @PathVariable Integer ...

  4. 安卓开发笔记——Fragment+FragmentTabHost组件(实现新浪微博底部菜单)

    记得之前写过2篇关于底部菜单的实现,由于使用的是过时的TabHost类,虽然一样可以实现我们想要的效果,但作为学习,还是需要来了解下这个新引入类FragmentTabHost 之前2篇文章的链接: 安 ...

  5. 如何获取模拟器安装的app的位置

    你可以死记下地址格式, 但是一旦不同的xcode和模拟器版本改变变了地址, 又得记, 从活动管理器里其实是可以直接查看的: Launch the app in the simulator Open A ...

  6. String学习之-深入解析String#intern

    引言 在 JAVA 语言中有8中基本类型和一种比较特殊的类型String.这些类型为了使他们在运行过程中速度更快,更节省内存,都提供了一种常量池的概念.常量池就类似一个JAVA系统级别提供的缓存. 8 ...

  7. spring原理机制

    转自:http://blog.csdn.net/nrain2/article/details/45459311 1,关于spring容器: spring容器是Spring的核心,该 容器负责管理spr ...

  8. npm install mongoose错误解决

    今天安装mongoose一直报错,上图 具体的错误记录: info it worked if it ends with ok verbose cli [ 'C:\\Program Files\\nod ...

  9. highcharts系列之xAxis

    xAxis定义的是x坐标轴的配置选项.默认情况下,x轴指的是水平轴,特殊指定的时候也可以作为垂直的轴使用,在多坐标系中,xAxis是有多个配置好了的轴object的数组. 下面来看一下,xAxis常用 ...

  10. showModalDialog介绍

    基本介绍:          showModalDialog()         (IE 4+ 支持)          showModelessDialog()      (IE 5+ 支持)    ...