大话数据库连接池
引言数据库连接池在Java数据库相关中间件产品群中,应该算是最底层最基础的一类产品,作为企业应用开发必不可少的组件,无数开发者们贡献了一个又一个的优秀产品,它们有的随着时代发展,功成身退,有的还在不断迭代,老而弥坚,更有新生代产品,或性能无敌、或功能全面。接下来就聊一聊 “那些年,我们用过的数据库连接池。”
第一、二代连接池区分一个数据库连接池是属于第一代产品还是代二代产品有一个最重要的特征就是看它在架构和设计时采用的线程模型,因为这直接影响的是并发环境下存取数据库连接的性能。
一般来讲采用单线程同步的架构设计都属于第一代连接池,二采用多线程异步架构的则属于第二代。比较有代表性的就是Apache Commons DBCP,在1.x版本中,一直延续着单线程设计模式,到2.x才采用多线程模型。
用版本发布时间来辨别区分两代产品,则一个偷懒的好方法。以下是这些常见数据库连接池最新版本的发布时间:
数据库连接池
最新版本
发布时间
C3P0
c3p0-0.9.5.2
on 9 Dec 2015
DBCP
2.2.0
27 December 2017
Druid
0.11. ...
Nginx配置文件详解
引言之前介绍了Linux下安装Nginx,Nginx 专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率 。它支持内核 Poll 模型,能经受高负载的考验,有报告表明能支持高达 50,000 个并发连接数。
Nginx特点Nginx 具有很高的稳定性。其它 HTTP 服务器,当遇到访问的峰值,或者有人恶意发起慢速连接时,也很可能会导致服务器物理内存耗尽频繁交换,失去响应,只能重启服务器。例如当前 apache 一旦上到 200 个以上进程,web响应速度就明显非常缓慢了。而 Nginx 采取了分阶段资源分配技术,使得它的 CPU 与内存占用率非常低。Nginx 官方表示保持 10,000 个没有活动的连接,它只占 2.5M 内存,所以类似 DOS 这样的攻击对 Nginx 来说基本上是毫无用处的。就稳定性而言,Nginx 比 lighthttpd 更胜一筹。
Nginx 支持热部署。启动特别容易,并且几乎可以做到 7*24 不间断运行,即使运行数个月也不需要重新启动。还能够在不间断服务的情况下,对软件版本进行进行升级。
Nginx的用处说了这么多Nginx的优点,Nginx ...
HttpClient后台跨域
引言跨域可以说是一个经常遇到的问题,最近在联调一个身份证识别接口,该接口由python语言编写,Java语言调用,刚开始采用了CORS(Cross-Origin Resource Sharing)跨域,在IE8上一直出现兼容性问题,固定的思维容易出现错误,自己一直想着前端Ajax跨域而忽略了后台HttpClient的跨域,最后还是用HttpClient顺利解决问题,避免了浏览器跨域带来的兼容性问题。
HttpClient VS Jsonp之前的博客有说过Jsonp的跨域方式,jsonp的核心则是动态添加<script>标签来调用服务器提供的js脚本。相比于HttpClient,Jsonp有两个很大的缺点:
1、它只能发送get请求,如果发送post请求会造成无法解析获取不到数据的问题。
2、如果返回的数据没有经过配置相应的编码文件来处理,拿到的数据可能会是一堆乱码。
问题总是能解决,HttpClient则没那么多约束,HttpClient封装了http协议的jar包,基本的请求方法get、post、put、 delete都能实现,当然得在web.xml文件中配置相应的fil ...
说说JSON和JSONP
前言说到AJAX就会不可避免的面临两个问题,第一个是AJAX以何种格式来交换数据?第二个是跨域的需求如何解决?这两个问题目前都有不同的解决方案,比如数据可以用自定义字符串或者用XML来描述,跨域可以通过服务器端代理来解决。
JSON和JSONP虽然只有一个字母的差别,但其实他们根本不是一回事:JSON是一种数据交换格式,而JSONP是一种依靠开发人员的聪明才智创造出的一种非官方跨域数据交互协议。我们拿最近比较火的谍战片来打个比方,JSON是地下党们用来书写和交换情报的“暗号”,而JSONP则是把用暗号书写的情报传递给自己同志时使用的接头方式。看到没?一个是描述信息的格式,一个是信息传递双方约定的方法。
什么是JSON前面简单说了一下,JSON是一种基于文本的数据交换方式,或者叫做数据描述格式,你是否该选用他首先肯定要关注它所拥有的优点。
JSON的优点
基于纯文本,跨平台传递极其简单;
JavaScript原生支持,后台语言几乎全部支持;
轻量级数据格式,占用字符数量极少,特别适合互联网传递;
可读性较强,虽然比不上XML那么一目了然,但在合理的依次缩进之后还是很容易识别的;
容易编写 ...
Linux下安装Nginx
记录下Linux下安装Nginx。
Nginx安装环境Nginx是C语言开发,建议在Linxu上运行,下面操作实在Centos6.5上的安装环境。
gcc
安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc。
安装命令:yum install gcc-c++
PCRE
PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。
安装命令:yum install -y pcre pcre-devel
zlib
zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。
安装命令:yum install -y zlib zlib-devel
openssl
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的 ...
Linux下安装JDK与MySQL
引言重温记录下Linux环境下JDK和MySQL的安装。
JDK的安装下载解压下载JDK压缩包,下载目录:http://www.oracle.com/technetwork/java/javase/downloads/index.html
解压
1tar -xvzf jdk-8u152-linux-x64.tar.gz
配置环境变量以root用户使用以下命令进入配置环境变量的profile文件。
1vim /etc/profile
在文件末尾加入以下内容并保存(注意修改JDK路径)。
1234# set java environment export JAVA_HOME=/usr/soft/jdk1.8.0_152export PATH=$PATH:$JAVA_HOME/binexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
在命令行使用以下命令使环境变量生效。
1source /etc/profile
切换JDK版本当Linux中安装多个JDK时切换进行版本切换。
查看选择所有JDK。
1alt ...
Linux下Tomcat的安装与优化
引言Linux系统已经搁置很久了,之前有在Ubuntu系统上开发过,但是Linux已经很久没有用了。现在公司把项目部署在Linux系统上,又要把Linux相关知识温习一下。这篇博客温习一下Linux下Tomcat的部署与优化,大部分的操作与在windows上相同。
Tomcat的安装首先下载Tomcat的压缩包(apache-tomcat-7.0.82.tar.gz),下载地址为:https://tomcat.apache.org/download-70.cgi
将压缩包放到Linux预定目录下,执行tar的解压缩命令
12cd /usr/soft/tar -zxvf apache-tomcat-7.0.82.tar.gz
进入到apache-tomcat-7.0.82.tar.gz的bin目录下执行**./startup.sh** 命令即可启动Tomcat。
Tomcat的优化默认情况下Tomcat的配置适合开发模式或者比较小的系统应用,当访问量稍微多的时候比如1000人同时在线做一些频繁的业务操作的时候,可能性能方面就会存在问题,所以有必要在生产环境下对Tomcat做一些 ...
回顾过去 展望未来
时间过的可真的是快,转眼间到了2018年,今年的元旦没有出去跨年,而是在家里静静的等待着2018年的到来,不知道是欣喜还是忧郁。2017年我的年度目标只实现了90%,并没有完全达到期望。
自己最近一年来特别不想熬夜,一熬夜第二天就感觉特别的累。这一年自己也学到了很多的东西,虽然感觉很累,但是觉得很开心。公司放假的安排也出来了,腊月二十四,放假立马就回家,又到了一年抢票的时间。几多欢喜几多愁啊。2018也是自己的本命年,加油!加油!