Yongtao's Blog

坚守 无畏 宽容 进取


  • 首页

  • 归档

  • 搜索

理解cron表达式

发表于 2018-03-01 | 更新于 2018-03-01 | 分类于 Java | 阅读次数

A Cron Expressions

cron表达式形如 0 0 12 * * ? ,由 Seconds Minutes Hours Day of month Month Day of week Year 字段构成,即几秒 几分 几时 几号 几月 周几 哪年。 字段之间使用空格分隔,每个字段可包含任意多个合法的字符。

Table A-1 Cron Expressions Allowed Fields and Values

Name Required Allowed Values Allowed Special Characters
Seconds Y 0-59 , - * /
Minutes Y 0-59 , - * /
Hours Y 0-23 , - * /
Day of month Y 1-31 , - * ? / L W
Month Y 1-12 or JAN-DEC , - * /
Day of week Y 1-7 or SUN-SAT , - * ? / L #
Year N empty or 1970-2099 , - * /
阅读全文 »

Hibernate5.0快速入门

发表于 2017-12-20 | 更新于 2023-02-20 | 分类于 Hibernate | 阅读次数

参考 Hibernate ORM 5.0 User Guide整理,作为快速入门简明手册。

体系结构

概述

这里写图片描述

如上图所示:java应用利用Hibernate API 来完成 load, store, query等对其领域数据的操作。

作为JPA的提供者,Hibernate实现了JPA规范,JPA接口和Hibernate具体的实现关系如下图所示:

这里写图片描述

阅读全文 »

理解POJO

发表于 2017-12-14 | 更新于 2023-02-20 | 分类于 编程语言 , Java | 阅读次数

POJO表示Plain Old Java Object。它是一个java对象的实例,并且不耦合在各种框架扩展中。

比如,想从JMS中取出消息,你需要编写一个类实现MessageListener接口。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class ExampleListener implements MessageListener {

public void onMessage(Message message) {
if (message instanceof TextMessage) {
try {
System.out.println(((TextMessage) message).getText());
}
catch (JMSException ex) {
throw new RuntimeException(ex);
}
}
else {
throw new IllegalArgumentException("Message must be of type TextMessage");
}
}

}

这会使你的代码变得不通用,迁移到其他消息中间件实现时会变的困难。如果你的应用使用了大量的监听器,

那么基于以上的情形选择AMQP或其它方案将变得几乎不可能。

基于POJO的实现意味着你的消息处理不需实现具体框架的接口。

1
2
3
4
5
6
7
8
@Component
public class ExampleListener {

@JmsListener(destination = "myDestination")
public void processOrder(String message) {
System.out.println(message);
}
}

在这个例子中,你的代码没有直接绑定任何接口。取而代之的是,连接JMS队列的责任被转移到了

注解中,并且注解更容易更新。当前示例中,你可以用@RabbitListener替换@JmsListener。在其他

情形下,基于POJO的实现方案可能不使用任何注解。

这只是一个小例子,它没有对比JMS和Rabbit MQ,而是用以说明代码不绑定接口的意义。通过使用POJO,

你的代码变得更简单。这样有助于更好的测试,灵活性以及应对以后发生改变的情况。

Spring及各种组件始终致力于减少代码和类库之间的耦合。这是依赖注入的首要概念,

即你的服务(指框架组件等)被使用的方式应该是接通应用程序的一部分,而不是服务本身(否则应用和服务发生耦合)。

https://spring.io/understanding/POJO

Windows下noinstallZIP方式配置MySQL5.7

发表于 2017-11-04 | 更新于 2023-02-20 | 分类于 数据库 , MySQL | 阅读次数

参考: https://dev.mysql.com/doc/refman/5.7/en/windows-install-archive.html

下载MySQL

https://dev.mysql.com/downloads/mysql/ 选择 Windows (x86, 64-bit), ZIP Archive

MySQL Community 5.7 Server requires the Microsoft Visual C++ 2013 Redistributable Package to run on Windows platforms.

MySQL 5.7版本需要安装Microsoft Visual C++ 2013 Redistributable Package

下载安装: https://www.microsoft.com/en-us/download/details.aspx?id=40784

阅读全文 »

Spring Security SAML 实现SP

发表于 2017-10-20 | 更新于 2023-02-20 | 分类于 WEB技术 | 阅读次数

Spring Security SAML 实现SP

下载 sample application

https://github.com/spring-projects/spring-security-saml

配置IDP metadata

修改 /src/main/webapp/WEB-INF/securityContext.xml,告诉系统下载IDP metadata 从给定的url, 超时5s
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<bean id="metadata" class="org.springframework.security.saml.metadata.CachingMetadataManager"> 
<constructor-arg>
<list>
<bean class="org.opensaml.saml2.metadata.provider.HTTPMetadataProvider">
<constructor-arg>
<value type="java.lang.String">http://idp.ssocircle.com/idp-meta.xml</value>
</constructor-arg>
<constructor-arg>
<value type="int">5000</value>
</constructor-arg>
<property name="parserPool" ref="parserPool"/>
</bean>
</list>
</constructor-arg>
</bean>
阅读全文 »
1…9101112
wangyt

wangyt

白日不到处,青春恰自来
苔花如米小,也学牡丹开

58 日志
29 分类
45 标签
RSS
GitHub 微博
Creative Commons
  • How2j
  • 寒泉子
  • 朱双印
© 2016 - 2023 wangyt