博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
学习总结(2016年10月3日 )
阅读量:6877 次
发布时间:2019-06-26

本文共 2765 字,大约阅读时间需要 9 分钟。

  hot3.png

1. Linux 中的线程

原文:

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

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

2. DDD、CQRS 与 EventSourcing

原文:

DDD 中的聚合和聚合根

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

DDD 聚合

聚合与一致性

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

EventSourcing 是否适合互联网

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

3. Spring 4 新特性

用 Groovy DSL 配置 Spring Bean

原文:

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

4. Slf4J

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

5. CORS

原文: 简单的 demo:

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@EnableWebMvcpublic 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,则可以使用下面的配置:

@Configurationpublic 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:

@Configurationpublic 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;	}}

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

转载于:https://my.oschina.net/lifany/blog/754364

你可能感兴趣的文章
(整理)用Elixir做一个多人扑克游戏 4
查看>>
关于架构
查看>>
The application’s PagerAdapter changed the adapter’s contents without calling PagerA
查看>>
qcom 跨平台的串口调试工具 PKGBUILD
查看>>
Delphi 时间格式化,动态显示时间,显示最新时间
查看>>
在JAVA中将NEW一分为2,分步进行[反射机制产生类]
查看>>
Java多态性的两个特殊情况
查看>>
我的友情链接
查看>>
怎么改变Win7登陆背景图片
查看>>
虚拟带库和物理带库比较
查看>>
AD委派加域权限
查看>>
在Delphi 7中使用加密的SQLite
查看>>
wordpress 无用的RSS Feed Cache
查看>>
Linux Vi编辑器的基本使用方法
查看>>
HTTP头域列表与解释 之 response篇
查看>>
一切属他,则名为苦;一切由己,自在安乐。
查看>>
velocity 之坑:不同枚举类(enum)有相同的静态(static)方法,无法访问第二个枚举类...
查看>>
图的遍历方法(深度优先和广度优先算法)
查看>>
鸟巢-一种全新的Native APP开发模式,这篇文章为您解读
查看>>
shell批量查询IP
查看>>