支持响应式编程 Spring Framework 5.0 稳定版正式发布
Spring Framework 5.0 GA 稳定版已正式发布。 经过一年多的里程碑版和 RC 版,以及将近两年的开发,Spring Framework 5.0 GA 稳定版现已正式发布。可从 repo.spring.io 和 Maven Central 获得。 这个全新一代的框架带来了以下新特性: 支持 JDK 9 和 Java EE 8 级别的 API(如 Servlet 4.0) 与 Reactor 3.1, JUnit 5, 和 Kotlin 语言的全面集成 带来了许多函数式 API 变体 (functional API variants) 响应式堆栈 Web 框架 —— Spring WebFlux 此外,值得注意的是,整个 Spring Framework 5.0 代码库运行于 Java 8 之上。因此 Spring Framework 5.0 对环境的最低要求是 Java 8。 可以看到,Spring Framework 5.0 的亮点是响应式编程,这是一个重要的范式转变。随着响应式编程越来越受欢迎,我们可以期待越来越多的技术将实现响应式解决方案。 相关链接: Spring Framework 5.0 中的新功能 迁移到 Spring Framework 5.0 官方的 Spring Framework 5 FAQ 最新的参考文档 更多内容请参阅发布主页和详细更新说明。 Maven
1 2 3 4 5 6 7 |
<span class="hljs-tag"><<span class="hljs-name">dependencies</span>></span> <span class="hljs-tag"><<span class="hljs-name">dependency</span>></span> <span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>org.springframework<span class="hljs-tag"></<span class="hljs-name">groupId</span>></span> <span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>spring-context<span class="hljs-tag"></<span class="hljs-name">artifactId</span>></span> <span class="hljs-tag"><<span class="hljs-name">version</span>></span>5.0.0.RELEASE<span class="hljs-tag"></<span class="hljs-name">version</span>></span> <span class="hljs-tag"></<span class="hljs-name">dependency</span>></span> <span class="hljs-tag"></<span class="hljs-name">dependencies</span>></span> |
Gradle
1 2 3 |
dependencies { compile <span class="hljs-string">'org.springframework:spring-context:5.0.0.RELEASE'</span> } |
下载地址: http://projects.spring.io/spring-framework/ Source code (zip) Source code (tar.gz) 相关链接 […]
View Details响应式编程
简称RP(Reactive Programming) 响应式编程是一种面向数据流和变化传播的编程范式。这意味着可以在编程语言中很方便地表达静态或动态的数据流,而相关的计算模型会自动将变化的值通过数据流进行传播。 例如,在命令式编程环境中,a:=b+c表示将表达式的结果赋给a,而之后改变b或c的值不会影响a。但在响应式编程中,a的值会随着b或c的更新而更新。 电子表格程序就是响应式编程的一个例子。单元格可以包含字面值或类似"=B1+C1"的公式,而包含公式的单元格的值会依据其他单元格的值的变化而变化。 响应式编程最初是为了简化交互式用户界面的创建和实时系统动画的绘制而提出来的一种方法,但它本质上是一种通用的编程范式。 例如,在MVC软件架构中,响应式编程允许将相关模型的变化自动反映到视图上,反之亦然。
View Detailsphp-fpm
PHP-FPM(FastCGI Process Manager:FastCGI进程管理器)是一个PHPFastCGI管理器,对于PHP 5.3.3之前的php来说,是一个补丁包[1] ,旨在将FastCGI进程管理整合进PHP包中。如果你使用的是PHP5.3.3之前的PHP的话,就必须将它patch到你的PHP源代码中,在编译安装PHP后才可以使用。 相对Spawn-FCGI,PHP-FPM在CPU和内存方面的控制都更胜一筹,而且前者很容易崩溃,必须用crontab进行监控,而PHP-FPM则没有这种烦恼。
View DetailsC#中正则表达式在replace中的应用
多少年来,许多的编程语言和工具都包含对正则表达式的支持,.NET基础类库中包含有一个名字空间和一系列可以充分发挥规则表达式威力的类,而且它们也都与未来的Perl 5中的规则表达式兼容。 此外,regexp类还能够完成一些其他的功能,例如从右至左的结合模式和表达式的编辑等。 在这篇文章中,我将简要地介绍System.Text.RegularExPRession中的类和方法、一些字符串匹配和替换的例子以及组结构的详细情况,最后,还会介绍一些你可能会用到的常见的表达式。 应该掌握的基础知识 规则表达式的知识可能是不少编程人员“常学常忘”的知识之一。在这篇文章中,我们将假定你已经掌握了规则表达式的用法,尤其是Perl 5中表达式的用法。.NET的regexp类是Perl 5中表达式的一个超集,因此,从理论上说它将作为一个很好的起点。我们还假设你具有了C#的语法和.NET架构的基本知识。 如果你没有规则表达式方面的知识,我建议你从Perl 5的语法着手开始学习。在规则表达式方面的权威书籍是由杰弗里·弗雷德尔编写的《掌握表达式》一书,对于希望深刻理解表达式的读者,我们强烈建议阅读这本书。 RegularExpression组合体 regexp规则类包含在System.Text.RegularExpressions.dll文件中,在对应用软件进行编译时你必须引用这个文件,例如: csc r:System.Text.RegularExpressions.dll foo.cs 命令将创建foo.exe文件,它就引用了System.Text.RegularExpressions文件。 名字空间简介 在名字空间中仅仅包含着6个类和一个定义,它们是: Capture: 包含一次匹配的结果; CaptureCollection: Capture的序列; Group: 一次组记录的结果,由Capture继承而来; Match: 一次表达式的匹配结果,由Group继承而来; MatchCollection: Match的一个序列; MatchEvaluator: 执行替换操作时使用的代理; Regex: 编译后的表达式的实例。 Regex类中还包含一些静态的方法: Escape: 对字符串中的regex中的转义符进行转义; IsMatch: 如果表达式在字符串中匹配,该方法返回一个布尔值; Match: 返回Match的实例; Matches: 返回一系列的Match的方法; Replace: 用替换字符串替换匹配的表达式; Split: 返回一系列由表达式决定的字符串; Unescape:不对字符串中的转义字符转义。 简单匹配 我们首先从使用Regex、Match类的简单表达式开始学习。 Match m = Regex.Match("abracadabra", "(a|b|r)+"); 我们现在有了一个可以用于测试的Match类的实例,例如:if (m.Success)… 如果想使用匹配的字符串,可以把它转换成一个字符串: Console.WriteLine("Match="+m.ToString()); 这个例子可以得到如下的输出: Match=abra。这就是匹配的字符串了。 字符串的替换 简单字符串的替换非常直观。例如下面的语句: string s = Regex.Replace("abracadabra", "abra", "zzzz"); 它返回字符串zzzzcadzzzz,所有匹配的字符串都被替换成了zzzzz。 现在我们来看一个比较复杂的字符串替换的例子: string s = Regex.Replace(" abra ", @"^\s*(.*?)\s*$", "$1"); 这个语句返回字符串abra,其前导和后缀的空格都去掉了。 上面的模式对于删除任意字符串中的前导和后续空格都非常有用。在C#中,我们还经常使用字母字符串,在一个字母字符串中,编译程序不把字符“ \” 作为转义字符处理。在使用字符“\”指定转义字符时,@"…"是非常有用的。另外值得一提的是$1在字符串替换方面的使用,它表明替换字符串只能包含被替换的字符串。 匹配引擎的细节 现在,我们通过一个组结构来理解一个稍微复杂的例子。看下面的例子: string text = "abracadabra1abracadabra2abracadabra3"; string […]
View Detailsnginx ssl配置
1. 全站ssl 全站做ssl是最常见的一个使用场景,默认端口443,而且一般是单向认证。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
server { listen 443; server_name example.com; root /apps/www; index index.html index.htm; ssl on; ssl_certificate ../SSL/ittest.pem; ssl_certificate_key ../SSL/ittest.key; # ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; # ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; # ssl_prefer_server_ciphers on; } |
如果想把http的请求强制转到https的话:
1 2 3 4 5 6 7 8 |
server { listen 80; server_name example.me; rewrite ^ https://$server_name$request_uri? permanent; ### 使用return的效率会更高 # return 301 https://$server_name$request_uri; } |
ssl_certificate证书其实是个公钥,它会被发送到连接服务器的每个客户端,ssl_certificate_key私钥是用来解密的,所以它的权限要得到保护但nginx的主进程能够读取。当然私钥和证书可以放在一个证书文件中,这种方式也只有公钥证书才发送到client。 ssl_protocols指令用于启动特定的加密协议,nginx在1.1.13和1.0.12版本后默认是ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2,TLSv1.1与TLSv1.2要确保OpenSSL >= 1.0.1 ,SSLv3 现在还有很多地方在用但有不少被攻击的漏洞。 ssl_ciphers选择加密套件,不同的浏览器所支持的套件(和顺序)可能会不同。这里指定的是OpenSSL库能够识别的写法,你可以通过 openssl -v cipher 'RC4:HIGH:!aNULL:!MD5’(后面是你所指定的套件加密算法) 来看所支持算法。 ssl_prefer_server_ciphers on设置协商加密算法时,优先使用我们服务端的加密套件,而不是客户端浏览器的加密套件。 https优化参数 ssl_session_cache shared:SSL:10m; : 设置ssl/tls会话缓存的类型和大小。如果设置了这个参数一般是shared,buildin可能会参数内存碎片,默认是none,和off差不多,停用缓存。如shared:SSL:10m表示我所有的nginx工作进程共享ssl会话缓存,官网介绍说1M可以存放约4000个sessions。 详细参考serverfault上的问答ssl_session_cache。 ssl_session_timeout : 客户端可以重用会话缓存中ssl参数的过期时间,内网系统默认5分钟太短了,可以设成30m即30分钟甚至4h。 设置较长的keepalive_timeout也可以减少请求ssl会话协商的开销,但同时得考虑线程的并发数了。 提示:在生成证书请求csr文件时,如果输入了密码,nginx每次启动时都会提示输入这个密码,可以使用私钥来生成解密后的key来代替,效果是一样的,达到免密码重启的效果: HTTPS服务器优化 SSL操作需要消耗CPU资源,所以在多处理器的系统,需要启动多个工作进程,而且数量需要不少于可用CPU的个数。最消耗CPU资源的SSL操作是SSL握手,有两种方法可以将每个客户端的握手操作数量降到最低:第一种是保持客户端长连接,在一个SSL连接发送多个请求,第二种是在并发的连接或者后续的连接中重用SSL会话参数,这样可以避免SSL握手的操作。会话缓存用于保存SSL会话,这些缓存在工作进程间共享,可以使用ssl_session_cache指令进行配置。1M缓存可以存放大约4000个会话。默认的缓存超时是5分钟,可以使用ssl_session_timeout加大它。下面是一个针对4核系统的配置优化的例子,使用10M的共享会话缓存:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
worker_processes 4; http { ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; server { listen 443; server_name www.example.com; keepalive_timeout 70; ssl on; ssl_certificate www.example.com.crt; ssl_certificate_key www.example.com.key; ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5; |
from:http://blog.csdn.net/mr_raptor/article/details/51854746
View DetailsEclipse下导入外部jar包的3种方式
我们在用Eclipse开发程序的时候,经常要用到第三方jar包。引入jar包不是一个小问题,由于jar包位置不清楚,而浪费时间。下面配图说明3种Eclipse引入jar包的方式。 1.最常用的普通操作方式:基本步骤式 右击“项目”→选择Properties,在弹出的对话框左侧列表中选择Java Build Path,如下图所示:选择Add External JARs,就可以逐个(也可以选择多个jar,但是限制在同一个文件夹中)添加第三方引用jar包。 上面这种方式的操作具有通用性,但是每次创建项目,都需要重新引入Jar包,Jar包不具有可重用性。 2.快速版的操作方式:用户Jar包式 右击“项目”→选择Properties,在弹出的对话框左侧列表中选择Java Build Path,弹出如上图所示的对话框,这里选择"Add Library",弹出如下图所示对话框,选择"User Library",然后选择→Next 在出现的对话框中,可以选择已经创建好的用户自定义库,也可以选择User Libraries,弹出的新对话框中选择"New",创建新的用户自定义库。 在待创建用户自定义库中,输入新的自定义库的名字,如下图 然后为新库,添加所需的Jar包 按上述步骤添加好用户自定义库后,以后可以重用这些已定义好的User Library库,为开发节省时间。 3.快速版的操作方式:文件夹导入式 在项目中,创建新的文件夹(eg:ibatis_jar),如下图所示,本示例中创建了ibatis_jar文件夹 ,并将项目开发需要的第三方的jar包拷贝到该文件夹中。 选中需要添加到项目中的jar包,右键选择"Build PathàAdd to Build Path",这样Jar包就成功导入到项目中了。 第三种导入Jar包的方式比第二种更简单,而且重用性更强,当我们不同的机器上查找所需的Jar包时,将这些文件夹直接拷贝就可以。 暂时对Eclipse导入jar包有这些浅显的理解,随着经验的积累,对Eclipse引入jar包各种方式的区别会理解的更深入! FROM:http://blog.csdn.net/mazhaojuan/article/details/21403717
View Details安装集成PHP开发环境出现“计算机中丢失 MSVCR110.dll”问题
今日在安装PHP环境时出现下列问题 于是乎去网站搜索并下载了MSVCR110.dll。解压后,将MSVCR110.dll放在了C:\\windows\SysWOW64(64位系统,32系统放在C:\WINdows\system32)下面,然后window+R(启动运行),输入cmd,在输入regsvr32 msvcr110.dll,以为问题得以解决,然而又出现下列问题 后又"咨询下了百度",问题才得以解决。解决步骤如下: 1.下载Visual C++ Redistrbutable for Visual Studio 2012 Update 4. 地址: http://www.microsoft.com/zh-CN/download/details.aspx?id=30679 ,进入该网页 2.选择语言:中文简体,然后点击下载 3.根据电脑系统(32位,64位)选择适合自己的版本。 4.点击Next,出现新建下载任务,点击下载就OK了。 5.下载完后,运行下载的exe文件。 6.在运行PHP环境就没问题了。 from:http://www.cnblogs.com/-scl/p/4198746.html
View Detailsapache commons
Apache Commons是Apache软件基金会的项目,曾隶属于Jakarta项目。Commons的目的是提供可重用的、开源的Java代码。 Apache Commons项目的由三部分组成: The Commons Proper – 一个可重用的Java组件库。(已经发布过的) The Commons Sandbox – Java组件开发工作区. (正在开发的项目) The Commons Dormant – 当前处于非活动状态的组件库.(刚启动或者已经停止维护的项目) 建立和维护可重用的Java组件。使用组件可以提高开发效率和质量。
View Details现在的互联网是各家“云”集
现在的云服务可是真多啊,百度一下,排名如下: 华为云(广告) 京东云(广告) 腾讯云(广告) 亚马逊AWS(广告) 网易云(广告) 阿里云 金山云 大佬们都做云,中国的互联网+可是如火如荼。
View Details史上最全最强SpringMVC详细示例实战教程
一、SpringMVC基础入门,创建一个HelloWorld程序
二、配置解析
三、SpringMVC常用注解
四、自动匹配参数
五、自动装箱
六、使用InitBinder来处理Date类型的参数
七、向前台传递参数
八、使用Ajax调用
九、在Controller中使用redirect方式处理请求
十、文件上传
十一、使用@RequestParam注解指定参数的name
十二、RESTFul风格的SringMVC
十三、返回json格式的字符串
十四、异常的处理
十五、设置一个自定义拦截器
十六、表单的验证(使用Hibernate-validate)及国际化
十七、压轴大戏--整合SpringIOC和SpringMVC
十八、SpringMVC详细运行流程图
十九、SpringMVC运行原理
二十、SpringMVC与struts2的区别