JPA如何使用关联关系而不自动在表中添加外键约束

关于数据库要不要使用外键,这个争论一直在持续,大家可以随便上网搜搜,一堆一堆

我个人的建议是在开发和测试环境使用外键(防止程序员的低级错误),在生产环境去掉外键(性能是王道)

JPA在实现关联关系(onetoone,onetomany,manytoone,manytomany)的时候,默认是会帮你自动在数据库中建立外键的,这种自作主张的行为非常讨厌,那么如何让其不自动建立外键呢。

网上有很多文章不负责任的转载,使用@ForeignKey(name = “null”),我呢负责任的告诉各位,毛用没有,还会报错,正确的使用方式是@ForeignKey(name = “none”)[……]

更多内容…

spring 解决过滤器、拦截器HttpServletRequest.getReader()只能使用一次的问题

问题描述:

背景:最近项目接口都流行json来json去,也就是不通过http协议的parameters(get、post等)获取数据,而是直接把json串写到http entity里面,用流的方式来获取整个json数据。

如果采用了java的spring框架,在过滤器和拦截器中getReader了http流之后,这个流就不存在了(有兴趣的话了解下java的字节流机制),在action中,由于http流已经不复存在,所以业务代码就无法获取到json参数了。

解决方案:

解决方案呢,就是把HttpServletRequest的流存成byte数组,然后用一层继承自HttpServletRe[……]

更多内容…

redis集群之两台master的cluster

redis 3.0版本之后,提供了cluster,具体的配置过程这里不介绍了,这篇文章讲的很详细了——《redis-cluster研究和使用

这里先说下3.0.3版本cluster的坑:

1、不支持select db

2、不支持多键操作,例如sinter,各种hashtable的操作(这也是直接导致我们的项目暂时放弃redis cluster),会报key不在同一个slot上错

3、cluster里的从库貌似就是个摆设,不能读写分离

切入正题,本文主要讲解如何突破官方规定,集群的master数量必须大于3的限制。

解决的原理就是:移动slot

slo[……]

更多内容…

redis 集群之sentinel与主从复制

redis集群有很多种,狭义上集群就是指sharding集群,sharding集群中每一个节点都是一套主从复制,这类技术主要有最新的redis3.0之后官方出品的rediscluster(基于hash slot),还有jedis(redis java api),自己实现的一套JedisSharding(基于一致性hash)。

而广义上,单纯的主从也可以叫集群,主要用来解决容灾问题。

项目一开始考虑使用rediscluster方案,但是配置完成后发现,rediscluster不支持多键操作,例如两个set之间做集合运算,所以直接放弃了,我会在另一篇文章中详细讲解rediscluste[……]

更多内容…

mariadb+amoeba 基于GTID的双主复制+读写分离

项目中需要构建尽量满足高可用的数据库配置,目前的资源是:两台阿里云主机(A和B,centos7系统),数据库采用mariadb

首先,sharding就不考虑了,因为两台主机,主从+sharding怎么也没法分配,生产环境,用docker什么的模拟也不合适。最关键的是,最关键的是,最关键的是(重要的事情说三遍),目前没有一个十分好用的mysql系的sharding方案(包括mariadb自己的spider、amoeba等在sharding方面都有这样或那样的问题,360出品的atlas没有试,有兴趣的可以自己实验一下)。
其次,如果只做一主一从,没法保证高可用,所以采用双主互为主从的配[……]

更多内容…

即兴创作弹唱一首《老狗》

老狗

 

孤独的老狗

年龄大到了没朋友

曾经一起玩耍的小伙伴

全都不见咯

 

忧伤的老狗

一辈子你都没有女朋友

小区里的那只母京巴

见到你都不让嗅

 

你趴在大门口

你低下了高昂的头

眼中不再有希望

除非谁给你骨头

 

你茫然的看着我

好像都是我的错

其实我和你一样

也是只老狗

 

我是只老狗

心中悲伤没人懂

只能唱着这首歌

摇摇尾巴你懂我

[……]

更多内容…

谁说他们版本不兼容——hadoop1.2.1+hbase0.94.11+nutch2.2.1+elasticsearch0.90.5安装配置攻略

一、背景

最近由于项目和论文的需要,需要搭建一个垂直搜索的环境,查阅了很多资料,决定使用Apache的一套解决方案hadoop+hbase+nutch+es。这几样神器的作用就不多作介绍了,自行参考各类百科就行了。我选择这样的方案主要是基于以下考虑:

1、可扩展,虽然只是实验环境,但是以后在项目中是要应用到生产中的,随着数据量的增大,需要的硬件设备能够方便的加入进来,所以选择了分布式的方案中最具人气的hadoop+hbase组合

2、数据来源兼容,nutch2以后集成了gora和tika,可以方便的进行数据ORM和分析

3、与时俱进,es很火嘛,而且各种评测说es比solr更快更稳定,[……]

更多内容…

ssh跳板登录懒人大法

有的时候出于安全考虑,真正的工作服务器是不对外提供ssh连接的,需要先登录一个跳板服务器,然后在跳板服务器上再ssh到工作服务器,每次都要输两遍ssh命令对于我这种懒人来说真是折磨啊,经过实验,总结三个一劳永逸大法。

现在假设有ABC三台机器,A是本地机器,B是跳板服务器(公网地址123.456.789.110),C是工作服务器(内网地址192.168.1.111).A可以访问B,但不能直接访问C,B可以直接访问C。

1、通过ssh端口转发命令

在B的命令行输入

具体参数不解释了,不懂的可以参考http://qubao[……]

更多内容…

知己——贺孙睿昕杨静新婚大喜

杨柳已成阴,

静好待蝉鸣。

和唱淮两岸,

孙竹鼓瑟音。

睿见识天命,

昕夕少人听。

幸得一知己,

福缘今世情。

声明:如未作说明,则本文为 渣滓洞【解旻的博客】 原创。转载务必注明出处
注意:转载须保留全文,如需修改请联系作者

本文永久地址:http://xieminis.me/?p=253

论文阅读、整理和归纳神器——zotero

Zotero本来是firefox上的一个文献管理插件,现在,它提供独立的程序版本,兼容mac、linux、windows,而插件更是兼容chrome、firefox和ie。

官网地址:http://www.zotero.org/

有了它,整理文献资料,生成参考文献,做阅读笔记,管理自己论文的版本等等这些就都不用愁了。

官网教程已经非常详细了,对英文有密集恐惧症的人可以看看豆瓣的这篇中文教程:http://www.douban.com/note/269931592/

如果对中文也有密集恐惧症的话——这位看官,您不适合搞科研吧。。

一些高端大气上档次的技巧可以参考黄老师的系列文章——《原[……]

更多内容…