Grails3 REST使用Postgis和JTS地理类 折腾好几天,趟了几个坑,终于搞成了。废话不多说,直接上结果。 一、为了支持postgis,把Grails3默认的hibernate4改成hibernate5,添加jts支持地理信息,添加postgres-jdbc。这里不需要postgis的jdbc,这个搞了我好几天,最后发现去掉postgis的jdbc就OK了。修改build.gradlebuildscript { ...
Grails3 RESTful开发及安全认证 1、创建项目grails create-app myapp --profile=rest-apicd myappgrails --profile可以指定项目框架的类型,rest-api增加rest相关jar,去掉了gsp相关的jar。 2、创建domaincreate-domain-resource com.rest.book 3、import项目到...
Grails3 Eclipse开发环境 Grails3使用gradle管理项目,所以不再需要spring的ggts,ggts只支持grails2.x的编译环境。环境版本JDK 1.8;groovy 2.4;grails 3;Eclipse 4.5.2一、操作系统安装 goovy 和 grails下载goovy,解压http://www.groovy-lang.org/download.html设置环境变量...
监控Postgres数据库 官方文档中有关监控的章节:http://www.postgresql.org/docs/9.3/static/monitoring.html 监控软件的罗列文档:https://wiki.postgresql.org/wiki/Monitoring 其中选择安装了powa。这个可以实时监控数据库,但是没有系统cpu和内存图表。大多数带有系统监控的,都是通过插件实现的...
用Groovy的AntBuilder编写wab部署工具 最近有个项目,有5、6个web分别部署在3地的服务器,每次发布都很头疼,已有的部署工具要么功能不灵活,要么太庞大,部署工具的部署本身就很麻烦。所以自己用Groovy的AntBuilder写了一个部署工具。在此记录:部署工具的功能包括拷贝代码,压缩war包,上传至服务器,停止tomcat,解压缩,启动tomcat。(同步SVN和编译用IDE完成)1、AntBuilder的copyne...
PostgreSql备份和恢复 有三种不同的备份方法:SQL dump文件系统级备份(File system level backup)连续归档(Continuous archiving)每种都有优势和劣势。 一、SQL Dumpdump方法是生成含有SQL命令的文本文件,当反馈回服务器时,将顺序执行dump中的命令。postgreSql使用pg_dump工具,基础用例是:pg...
PostgreSql的Explain命令详解 使用EXPLAINPostgreSQL为每个收到的查询设计一个查询规划。选择正确的匹配查询结构和数据属性的规划对执行效率是至关重要要的,所以系统包含一个复杂的规划器来试图选择好的规划。你可以使用EXPLAIN命令查看查询规划器创建的任何查询。阅读查询规划是一门艺术,需要掌握一定的经验,本节试图涵盖一些基础知识。以下的例子来自PostgreSQL 9.3开发版。EXPLAIN基础...
PostGis空间索引 索引的种类PostgreSQL默认支持3种索引:B-Tree indexes, R-Tree indexes和 GiST indexes。B-Tree用于可以在一个方向上排序的数据,如数字(numbers),字母(letters),日期(dates)。地理数据不能再一个方向上排序,所以B-Tree不能用于地理数据。R-Trees是将数据分解成矩形,子矩形,子子矩形等。R-Trees...
Linux下源码安装PostgreSql和PostGIS 一、源码安装PostgreSql1、检查gcc版本gmake --versionGNU make版本3.80以上。 2、下载源码下载地址:http://www.postgresql.org/ftp/source/选择版本,下载。 3、解压gunzip postgresql-9.3.4.tar.gztar xf postgresql-9.3.4.tar...
MyBatis-spring和spring JDBC批量插入Mysql的效率比较 工具框架用spring-batch,数据库是mysql(未做特殊优化)。比较数据框架mybatis和spring jdbc的插入效率。 Mybatis三种实现:1、mybatis的官方写法public void batchInsert1(List<Poi> poilist) throws Exception { SqlSession sqlSession =...
扩展MySQL 一、概述构建高可扩展系统的重要原则:在系统内尽量避免串行化和交互。如果将应用所有的数据简单地放到单个MySQL服务器实例上,则无法很好的扩展,迟早会碰到性能瓶颈。传统的方法是购买更多强悍的机器,也就是常说的“垂直扩展”或“向上扩展”。另一个方法是将任务分配到多台计算机上,这通常被称为“水平扩展”或“向外扩展”,最后,大部分应用还会有一些很少或者从不需要的数据,这些数据可以被清理或归档。...
MySQL的复制 一、概述复制解决的基本问题是让一台服务器的数据与其他服务器保持同步。MySQL支持两种复制方式:基于行的复制和基于语句的复制。基于语句的复制(也称为逻辑复制)早在MySQL3.23版本中就存在,而基于行的复制方式在5.1版本中才被加进来。新版本的服务器可以作为老版本服务器的备库,但反过来是不可行的。通过复制可以将读操作指向备库来获得更好的读扩展,但对于写操作,除非设计得当,否则...
如何选择MySQL存储引擎 一、MySQL的存储引擎完整的引擎说明还是看官方文档:http://dev.mysql.com/doc/refman/5.6/en/storage-engines.html这里介绍一些主要的引擎 1、InnoDB存储引擎InnoDB是MySQL的默认事务型引擎,它被设计用来处理大量的短期(short-lived)事务。除非有非常特别的原因需要使用其他的存储引擎,否则应该优先...
用memcached-session-manager实现Tomcat集群 之前介绍过用Tomcat自身的Cluster做集群。还有一种方式是通过memcached保存session,实现多台tomcat共享session。开源项目memcached-session-manager实现了这个功能。 一、首先需要安装memcached。安装步骤请参考:http://blog.csdn.net/clarkcc1988/article/details/85098...
HTML5学习笔记(七)-WebSockets API 一、概述HTML5 WebSockets是HTML5中最强大的通信功能,它定义了一个全双工通信信道,仅通过Web上的一个Socket即可进行通信。目前实时Web应用的实现方式,大部分是围绕轮询和其他服务器端推送技术展开的,Comet、轮询、长轮询、流(streaming)解决方案,所有这些提供实时数据的方式包含有大量额外的、不必要的报头数据,会造成传输延迟。最重要的是为了在半双工HTT...
Tomcat与Apache或Nginx连接和集群配置 一、Tomcat的连接方式:官方文档参考:http://tomcat.apache.org/tomcat-7.0-doc/connectors.htmlTomcat与Web服务器的连接方式有两种:HTTP HTTP连接器是Tomcat默认的方式,并且已经被使用。这种方式具有最低的延迟和最佳的整体性能。对于集群,需要一个支持粘性会话的web服务器在Tomcat前端。Tom...
Apache HTTP和Nginx Web服务器Linux系统安装 一、Apache HTTP服务器1、环境APR and APR-Util如果系统中没有APR和APR-Util或不是最新版本,下载Apache APR,解压到{httpd解压目录}/srclib/apr和{httpd解压目录}/srclib/apr-util(确认目录名中不含版本号),并且在配置时使用./configure的 --with-included-apr选项。...
Tomcat7 Cluster 集群(Linux系统) 一、概述参考Tomcat7的官方文档:http://tomcat.apache.org/tomcat-7.0-doc/cluster-howto.html Tomcat7 自带的集群功能是通过session复制完成的,现有两个复制方式:DeltaManager: 将session复制到所有tomcat节点中,不管是否有相应的应用(it will replicate...
泛型定义中的通配符 泛型定义中的通配符List<? extends Number> foo3 含义是:变量foo3可以包含任何继承自Number的类型。 以下都是合法的定义:List<? extends Number> foo3 = new ArrayList<Number>(); //Number "extends" NumberList<? extend...
HTML5学习笔记(六)-Communication API 本章探讨用于构建实时(real-time)跨源(cross-origin)通信的两个重要模块:跨文档消息通信(Cross Document Messaging)和XMLHttpRequest Level 2.一、跨文档消息通信 出于安全方面的考虑,运行在同一浏览器中的框架、标签页、窗口间的通信一直都受到了严格的限制。然而现实中存在一些合理的让不同站点的内容能在浏览器内进行交互的需...