微服务优缺点

微服务有如下
####优点

  • 微服务是松藕合的,无论是在开发阶段或部署阶段都是独立的。
  • 能够快速响应, 局部修改容易, 一个服务出现问题不会影响整个应用。
  • 易于和第三方应用系统集成, 支持使用不同的语言开发, 允许你利用融合最新技术。
查看更多

Elasticsearch与Solr的比较

Elasticsearch与Solr的比较

Search Fesh Index While Idle

当单纯的对已有数据进行搜索时,Solr更快。

search_fresh_index_while_indexing

  • 当实时建立索引时, Solr会产生io阻塞,查询性能较差, Elasticsearch具有明显的优势。
  • 随着数据量的增加,Solr的搜索效率会变得更低,而Elasticsearch却没有明显的变化。
查看更多

IK分词使用

curl -XPOST http://192.168.85.143:9200/index/_mapping -H ‘Content-Type:application/json’ -d’
{
“properties”: {
“content”: {
“type”: “text”,
“analyzer”: “ik_max_word”,
“search_analyzer”: “ik_smart”
}
}

}’

curl -XPOST http://192.168.85.143:9200/index/_create/1 -H ‘Content-Type:application/json’ -d’
{“content”:”美国留给伊拉克的是个烂摊子吗”}’

curl -XPOST http://192.168.85.143:9200/index/_create/2 -H ‘Content-Type:application/json’ -d’
{“content”:”公安部:各地校车将享最高路权”}

curl -XPOST http://192.168.85.143:9200/index/_create/3 -H ‘Content-Type:application/json’ -d’
{“content”:”中韩渔警冲突调查:韩警平均每天扣1艘中国渔船”}

curl -XPOST http://192.168.85.143:9200/index/_create/4 -H ‘Content-Type:application/json’ -d’
{“content”:”中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首”}


curl -XPOST http://192.168.85.143:9200/index/_create/5 -H ‘Content-Type:application/json’ -d’
{“content”:”我是中国人”}’

查看更多

es与db的概念对比

ES与DB的概念对比

查看更多
ES

查看更多

mybatis相关问题

mybatis报错 Specified class is an interface

1.错误原因

Caused by: org.springframework.beans.factory.BeanCreationException:

Error creating bean with name ‘admUserMapper’ defined in file
[E:\idea_soft\workspace\xxxx-mircoservices\i\classes\main\com\imassbank\admin\mapper\AdmUserMapper-\classes\main\com\admin\mapper\AdmUserMapper.class]:
Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException:

Failed to instantiate [com.xxxxxx.mapper.AdmUserMapper]: Specified class is an interface

2.原因以及解决方案

1)原因: Mapper有重复的 例如 AdmUserMapper 在 a工程中有 但是 在b工程中 并且 叫相同的名字 导致 spring 在加载时 调用mapper解析器 导致出错

查看更多
文档数据量
1
2
3
4
5
6
<insert id="add" useGeneratedKeys="true" keyColumn="id" keyProperty="id" parameterType="user">
INSERT INTO `user` (`name`,sex,register_ts) VALUES (#{name},#{sex},#{registerTs})
<selectKey resultType="int" keyProperty="id" order="AFTER">
SELECT LAST_INSERT_ID()
</selectKey>
</insert>

总结:

  1. 想要获取自增主键id,应该通过对象的getId()方法,而并不是insert的返回值,insert的返回值表示的是影响行数

查看更多

mariadb

maven 配置

1
2
3
4
5
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<version>2.4.1</version>
</dependency>

jdbc设置

查看更多

深入理解mysql的事务隔离级别和底层实现原理

一、ACID特性

持久性,我们就不讲了,易懂。

1、原子性

在同一个事务内部的一组操作必须全部执行成功(或者全部失败)。
为了保证事务操作的原子性,必须实现基于日志的REDO/UNDO机制:将所有对数据的更新操作都写入日志,如果一个事务中的一部分操作已经成功,但以后的操作,由于断电/系统崩溃/其它的软硬件错误而无法继续,则通过回溯日志,将已经执行成功的操作撤销,从而达到“全部操作失败”的目的。 最常见的场景是,数据库系统崩溃后重启,此时数据库处于不一致的状态,必须先执行一个crash recovery的过程:读取日志进行REDO(重演将所有已经执行成功但尚未写入到磁盘的操作,保证持久性),再对所有到崩溃时尚未成功提交的事务进行UNDO(撤销所有执行了一部分但尚未提交的操作,保证原子性)。crash recovery结束后,数据库恢复到一致性状态,可以继续被使用。
某个应用在执行转帐的数据库操作时,必须在同一个事务内部调用对帐户A和帐户B的操作,才能保证数据的一致性。
但是,原子性并不能完全保证一致性。在多个事务并行进行的情况下,即使保证了每一个事务的原子性,仍然可能导致数据不一致的结果。 例如,事务1需要将100元转入帐号A:先读取帐号A的值,然后在这个值上加上100。但是,在这两个操作之间,另一个事务2修改了帐号A的值,为它增加了100元。那么最后的结果应该是A增加了200元。但事实上,事务1最终完成后,帐号A只增加了100元,因为事务2的修改结果被事务1覆盖掉了。
简而言之,就是:原子性仅能够保证单个事务的一致性。就像redis一样,也只能保证单操作的线程安全,并不能保证多操作下的线程安全。

2、一致性

按照我个人的理解,在事务处理的ACID属性中,一致性是最基本的属性,其它的三个属性都为了保证一致性而存在的。
我们举个反例来理解下一致性概念。例如:从帐户A转一笔钱到帐户B上,如果帐户A上的钱减少了,而帐户B上的钱却没有增加,那么我们认为此时数据处于不一致的状态。
为了保证并发情况下的一致性,引入了隔离性,即保证每一个事务能够看到的数据总是一致的,就好象其它并发事务并不存在一样。

3、隔离性

数据库四种隔离级别,以及常见的几种读异常,大家应该都是耳熟能详的,但数据库底层是怎么实现隔离性的呢?都采用了哪些技术呢? 主要有两个技术:MVCC(多版本并发控制)和锁。

(1)MVCC(多版本并发控制)

多版本并发控制,顾名思义,在并发访问的时候,数据存在版本的概念,可以有效地提升数据库并发能力,常见的数据库如MySQL、MS SQL Server、IBM DB2、Hbase、MongoDB等等都在使用。
简单讲,如果没有MVCC,当想要读取的数据被其他事务用排它锁锁住时,只能互斥等待;而这时MVCC可以通过提供历史版本从而实现读取被锁的数据的历史版本,从而避免了互斥等待。
InnoDB采用的MVCC实现方式是:在需要时,通过undo日志构造出历史版本。

查看更多