学习总结(2016年10月3日 )
学习总结(2016年10月3日 )
编走编想 发表于1年前
学习总结(2016年10月3日 )
  • 发表于 1年前
  • 阅读 41
  • 收藏 0
  • 点赞 0
  • 评论 0

标题:腾讯云 新注册用户域名抢购1元起>>>   

1. Linux 中的线程

原文:http://blog.csdn.net/ctthuangcheng/article/details/8914712

长久以来,Linux 并没有线程的概念。Linux 中的线程是使用子进程模拟的。在 2.6 以前的版本,Linux 的线程是靠 pthread 库实现的,但是其只实现了 POSIX 中对线程定义的几条要求中的一条,相去甚远。

在 2.6 之后,task_struct 结构中增加了一个 tgid。这个数据结构上的变化使得 Linux 中的线程完整实现了 POSIX 的要求。

2. DDD、CQRS 与 EventSourcing

原文:http://www.uml.org.cn/zjjs/201609221.asp

DDD 中的聚合和聚合根

聚合指的是一组内聚的实体和值对象。 聚合根指的就是这一组聚合的根对象。聚合之间的交互都必须通过聚合根进行,不能绕过聚合根直接和其下面的实体进行交互。

DDD 聚合

聚合与一致性

聚合内部要保证强一致性,聚合与聚合之间要保证最终一致性。

EventSourcing 是否适合互联网

大量的 log 数据和数据预热等问题存在,我不太认为 EventSourcing 适合互联网应用。当然这也只是我现阶段的看法。

3. Spring 4 新特性

用 Groovy DSL 配置 Spring Bean

原文:http://jinnianshilongnian.iteye.com/blog/1991830

Spring 4.0 引入了 Groovy DSL,但目前看还不是很完善,不推荐大规模使用。

4. Slf4J

Logger.error(String message, Object... args) args 中如果最后一个是 Throwable,且没有匹配到 {} 的话,便会打印出异常栈

5. CORS

原文:https://spring.io/blog/2015/06/08/cors-support-in-spring-framework 简单的 demo:https://spring.io/guides/gs/rest-service-cors/

Cross-origin resource sharing (CORS) is a W3C specification implemented by most browsers that allows you to specify in a flexible way what kind of cross domain requests are authorized, instead of using some less secured and less powerful hacks like IFrame or JSONP.

Spring 4.2 中增加了完善的 CORS 支持,既可以在 Controller 类级别和方法级别上进行配置,也可以进行全局配置。

类级别配置:

@CrossOrigin(maxAge = 3600)
@RestController
@RequestMapping("/account")
public class AccountController {

	@CrossOrigin(origins = "http://domain2.com")
	@RequestMapping("/{id}")
	public Account retrieve(@PathVariable Long id) {
		// ...
	}

	@RequestMapping(method = RequestMethod.DELETE, value = "/{id}")
	public void remove(@PathVariable Long id) {
		// ...
	}
}

全局配置:

@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {

	@Override
	public void addCorsMappings(CorsRegistry registry) {
		registry.addMapping("/api/**")
			.allowedOrigins("http://domain2.com")
			.allowedMethods("PUT", "DELETE")
			.allowedHeaders("header1", "header2", "header3")
			.exposedHeaders("header1", "header2")
			.allowCredentials(false).maxAge(3600);
	}
}

如果使用 Spring Boot,则可以使用下面的配置:

@Configuration
public class MyConfiguration {

    @Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurerAdapter() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/api/**");
            }
        };
    }
}

当使用 Spring Security 时,为了使 Spring Security 也支持 CORS,则需要基于 Filter 支持 CORS:

@Configuration
public class MyConfiguration {

	@Bean
	public FilterRegistrationBean corsFilter() {
		UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
		CorsConfiguration config = new CorsConfiguration();
		config.setAllowCredentials(true);
		config.addAllowedOrigin("http://domain1.com");
		config.addAllowedHeader("*");
		config.addAllowedMethod("*");
		source.registerCorsConfiguration("/**", config);
		FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source));
		bean.setOrder(0);
		return bean;
	}
}

说实话上面这些配置还是有些复杂

共有 人打赏支持
粉丝 129
博文 118
码字总数 100183
×
编走编想
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: