精华内容
下载资源
问答
  • 应该是id相同 导致的映射出错 4.解决办法 查询的时候返回 这张表每条数据的最大主键id,这样可以保证每条数据的id都是不同的 select  max(id) id,  sum(result) result,  name , ...

    1.统计数据的时候  查询只返回了需要的字段

    select

        sum(result) result,

        name ,

    from 

       table_test

    group by name

    having class != '100001'

    数据库返回结果

    result   name

    1          张三

    1          李四

    3          王五

    2           李六

    数据库返回结果

    jap返回List

    result   name

    1          张三

    1          张三

    3          王五

    2           李六

    2.出问题的代码

    Model代码

    @Entity
    @Data
    @Table(name="Base_Role")
    public class TableTestModel{
    
        @Id
        @GeneratedValue
        @Column(name="result")
        private String result;
        @Column(name ="name")
        private String name;
    }

    repository代码

    public interface TableTestRepository extends JpaRepository<TableTestModel,String>{
        @Transactional
        @Query(value=" SELECT sum(result) result," +
                "              name" +
                "        FROM table_test" +
                "      group by name"
                "      having class != '100001'", nativeQuery = true)
        List<TableTestModel> selectTableTest();
    }
    

    3.返回结果出错原因

    应该是id相同 导致的映射出错

    4.解决办法

    查询的时候返回 这张表每条数据的最大主键id,这样可以保证每条数据的id都是不同的

    select

        max(id) id,

        sum(result) result,

        name ,

    from 

       table_test

    group by name

    having class != '100001'

    5.修改后的代码

    Model代码

    @Entity
    @Data
    @Table(name="Base_Role")
    public class TableTestModel{
    
        @Id
        @GeneratedValue
        @Column(name="id") 
        private String id; 
        @Column(name="result")
        private String result;
        @Column(name ="name")
        private String name;
    }

    repository代码

    public interface TableTestRepository extends JpaRepository<TableTestModel,String>{
        @Transactional
        @Query(value=" SELECT max(id) id," +
                "              sum(result) result," +
                "              name" +
                "        FROM table_test" +
                "      group by name"
                "      having class != '100001'", nativeQuery = true)
        List<TableTestModel> selectTableTest();
    }
    

    6.修改后的代码返回的List是正确的

    数据库返回结果

    id             result   name

    10001     1          张三

    10002     1          李四

    10003     3          王五

    10004     2           李六

    数据库返回结果

    jap返回List

    id             result   name

    10001     1          张三

    10002     1          李四

    10003     3          王五

    10004     2           李六

     

    这样映射数据出错的问题就解决了

    展开全文
  • 如果这个地址上有元素,在调用equals方法比较,相同则不再存储,不相同的话就会产生冲突,会产生一个链接表,将这两个元素串起来放在同一个哈希码指定的位置上,而实际上会尽量避免哈希冲突。 如果直接调用equals...
    		
    		

    String s1="hello world";

    String s2=new String("hello world");

    s1.hashCode()和s2.hashCode()其实是相等的。

    hashCode()和equals()都是Object类中的一个方法,String类中重写了两个方法,使得比较的是字符地址指向的内容。

     

    在集合中,set集合是不允许元素重复的,name如何保证元素不重复呢?

    当新添加一个元素的时候首先调用这个元素的hashCode方法,得到的哈希码作为这个元素的存储地址,如果这个地址上没有元素,则直接存储在这个地址上;如果这个地址上有元素,在调用equals方法比较,相同则不再存储,不相同的话就会产生冲突,会产生一个链接表,将这两个元素串起来放在同一个哈希码指定的位置上,而实际上会尽量避免哈希冲突。

    如果直接调用equals方法,当数据量过大时,每次都会调用一次equals方法,效率低。

    用hashCode方法比较减少对象比较次数,提高查找效率。

    展开全文
  • 导语今天在测试关于ST_Geometry的空间函数,系统提示我的两个要素类的SRID不一致,但是我创建的两...也是一样的,如标题所示,为什么相同的投影坐标系存储在ArcSDE中获得SRID不一致,具体说明吧,WGS_1984_Web_Mercator

    导语

    今天在测试关于ST_Geometry的空间函数,系统提示我的两个要素类的SRID不一致,但是我创建的两个要素类都是同一个投影坐标系,WGS_1984_Web_Mercator_Auxiliary_Sphere,一下子让我想起了以前曾经有用户问过的一个问题,也是一样的,如标题所示,为什么相同的投影坐标系存储在ArcSDE中获得SRID不一致,具体说明吧,WGS_1984_Web_Mercator_Auxiliary_Sphere投影的WKID为3857,这是一个标准代码,也可以理解为等价关系,但是我将一个shapefile投影为WGS_1984_Web_Mercator_Auxiliary_Sphere的数据导入到ArcSDE中,相关的SRID就存储为Esri自己编写的SRID,300009(如果不一样,Esri会以30000X来定义新的投影的SRID)。

    正文

    相关Shapefile的投影信息和FeatureExtent信息

    将该shapefile导入到ArcSDE里面的相关信息,要素类名称:ww

    使用桌面创建要素类选择同样投影的相关信息,要素类名称:pp

    查询ArcSDE的SRID

    SQL> select srid from st_geometry_columns where table_name='WW';
    
          SRID
    ----------
        300009
    
    SQL> select srid from st_geometry_columns where table_name='PP';
    
          SRID
    ----------
          3857

    分析

    跟踪Oracle的后台Trace文件,系统里面有一个这样的SQL语句


    更多了解,详见积思园

    展开全文
  • 什么是一致性Hash算法?

    万次阅读 多人点赞 2018-03-13 21:15:32
    最近有小伙伴跑过来问什么是Hash一致性算法,说面试的时候被问到了,因为不了解,所以就没有回答上,问我有没有相应的学习资料推荐,当时上班,没时间回复,晚上回去了就忘了这件事,今天突然看到这个,加班为大家...

    最近有小伙伴跑过来问什么是Hash一致性算法,说面试的时候被问到了,因为不了解,所以就没有回答上,问我有没有相应的学习资料推荐,当时上班,没时间回复,晚上回去了就忘了这件事,今天突然看到这个,加班为大家整理一下什么是Hash一致性算法,希望对大家有帮助!

    经常阅读我文章的小伙伴应该都很熟悉我写文章的套路,上来就是先要问一句为什么?也就是为什么要有Hash一致性算法?就像以前介绍为什么要有Spring一样,首先会以历史的角度或者项目发展的角度来分析,今天的分享还是一样的套路,先从历史的角度来一步步分析,探讨一下到底什么是Hash一致性算法!

    一、Redis集群的使用

    我们在使用Redis的时候,为了保证Redis的高可用,提高Redis的读写性能,最简单的方式我们会做主从复制,组成Master-Master或者Master-Slave的形式,或者搭建Redis集群,进行数据的读写分离,类似于数据库的主从复制和读写分离。如下所示:
    这里写图片描述
    同样类似于数据库,当单表数据大于500W的时候需要对其进行分库分表,当数据量很大的时候(标准可能不一样,要看Redis服务器容量)我们同样可以对Redis进行类似的操作,就是分库分表。

    假设,我们有一个社交网站,需要使用Redis存储图片资源,存储的格式为键值对,key值为图片名称,value为该图片所在文件服务器的路径,我们需要根据文件名查找该文件所在文件服务器上的路径,数据量大概有2000W左右,按照我们约定的规则进行分库,规则就是随机分配,我们可以部署8台缓存服务器,每台服务器大概含有500W条数据,并且进行主从复制,示意图如下:

    这里写图片描述

    由于规则是随机的,所有我们的一条数据都有可能存储在任何一组Redis中,例如上图我们用户查找一张名称为"a.png"的图片,由于规则是随机的,我们不确定具体是在哪一个Redis服务器上的,因此我们需要进行1、2、3、4,4次查询才能够查询到(也就是遍历了所有的Redis服务器),这显然不是我们想要的结果,有了解过的小伙伴可能会想到,随机的规则不行,可以使用类似于数据库中的分库分表规则:按照Hash值、取模、按照类别、按照某一个字段值等等常见的规则就可以出来了!好,按照我们的主题,我们就使用Hash的方式。

    二、为Redis集群使用Hash

    可想而知,如果我们使用Hash的方式,每一张图片在进行分库的时候都可以定位到特定的服务器,示意图如下:

    这里写图片描述

    上图中,假设我们查找的是"a.png",由于有4台服务器(排除从库),因此公式为hash(a.png) % 4 = 2 ,可知定位到了第2号服务器,这样的话就不会遍历所有的服务器,大大提升了性能!

    三、使用Hash的问题

    上述的方式虽然提升了性能,我们不再需要对整个Redis服务器进行遍历!但是,使用上述Hash算法进行缓存时,会出现一些缺陷,主要体现在服务器数量变动的时候,所有缓存的位置都要发生改变!

    试想一下,如果4台缓存服务器已经不能满足我们的缓存需求,那么我们应该怎么做呢?很简单,多增加几台缓存服务器不就行了!假设:我们增加了一台缓存服务器,那么缓存服务器的数量就由4台变成了5台。那么原本hash(a.png) % 4 = 2 的公式就变成了hash(a.png) % 5 = ? , 可想而知这个结果肯定不是2的,这种情况带来的结果就是当服务器数量变动时,所有缓存的位置都要发生改变!换句话说,当服务器数量发生改变时,所有缓存在一定时间内是失效的,当应用无法从缓存中获取数据时,则会向后端数据库请求数据(还记得上一篇的《缓存雪崩》吗?)!

    同样的,假设4台缓存中突然有一台缓存服务器出现了故障,无法进行缓存,那么我们则需要将故障机器移除,但是如果移除了一台缓存服务器,那么缓存服务器数量从4台变为3台,也是会出现上述的问题!

    所以,我们应该想办法不让这种情况发生,但是由于上述Hash算法本身的缘故,使用取模法进行缓存时,这种情况是无法避免的,为了解决这些问题,Hash一致性算法(一致性Hash算法)诞生了!

    四、一致性Hash算法的神秘面纱

    一致性Hash算法也是使用取模的方法,只是,刚才描述的取模法是对服务器的数量进行取模,而一致性Hash算法是对232取模,什么意思呢?简单来说,一致性Hash算法将整个哈希值空间组织成一个虚拟的圆环,如假设某哈希函数H的值空间为0-232-1(即哈希值是一个32位无符号整形),整个哈希环如下:
    这里写图片描述
    整个空间按顺时针方向组织,圆环的正上方的点代表0,0点右侧的第一个点代表1,以此类推,2、3、4、5、6……直到232-1,也就是说0点左侧的第一个点代表232-1, 0和232-1在零点中方向重合,我们把这个由232个点组成的圆环称为Hash环

    下一步将各个服务器使用Hash进行一个哈希,具体可以选择服务器的IP或主机名作为关键字进行哈希,这样每台机器就能确定其在哈希环上的位置,这里假设将上文中四台服务器使用IP地址哈希后在环空间的位置如下:
    这里写图片描述
    接下来使用如下算法定位数据访问到相应服务器:将数据key使用相同的函数Hash计算出哈希值,并确定此数据在环上的位置,从此位置沿环顺时针“行走”,第一台遇到的服务器就是其应该定位到的服务器!

    例如我们有Object A、Object B、Object C、Object D四个数据对象,经过哈希计算后,在环空间上的位置如下:

    这里写图片描述
    根据一致性Hash算法,数据A会被定为到Node A上,B被定为到Node B上,C被定为到Node C上,D被定为到Node D上。

    五、一致性Hash算法的容错性和可扩展性

    现假设Node C不幸宕机,可以看到此时对象A、B、D不会受到影响,只有C对象被重定位到Node D。一般的,在一致性Hash算法中,如果一台服务器不可用,则受影响的数据仅仅是此服务器到其环空间中前一台服务器(即沿着逆时针方向行走遇到的第一台服务器)之间数据,其它不会受到影响,如下所示:

    这里写图片描述

    下面考虑另外一种情况,如果在系统中增加一台服务器Node X,如下图所示:
    这里写图片描述
    此时对象Object A、B、D不受影响,只有对象C需要重定位到新的Node X !一般的,在一致性Hash算法中,如果增加一台服务器,则受影响的数据仅仅是新服务器到其环空间中前一台服务器(即沿着逆时针方向行走遇到的第一台服务器)之间数据,其它数据也不会受到影响。

    综上所述,一致性Hash算法对于节点的增减都只需重定位环空间中的一小部分数据,具有较好的容错性和可扩展性。

    六、Hash环的数据倾斜问题

    一致性Hash算法在服务节点太少时,容易因为节点分部不均匀而造成数据倾斜(被缓存的对象大部分集中缓存在某一台服务器上)问题,例如系统中只有两台服务器,其环分布如下:
    这里写图片描述
    此时必然造成大量数据集中到Node A上,而只有极少量会定位到Node B上。为了解决这种数据倾斜问题,一致性Hash算法引入了虚拟节点机制,即对每一个服务节点计算多个哈希,每个计算结果位置都放置一个此服务节点,称为虚拟节点。具体做法可以在服务器IP或主机名的后面增加编号来实现。

    例如上面的情况,可以为每台服务器计算三个虚拟节点,于是可以分别计算 “Node A#1”、“Node A#2”、“Node A#3”、“Node B#1”、“Node B#2”、“Node B#3”的哈希值,于是形成六个虚拟节点:
    这里写图片描述
    同时数据定位算法不变,只是多了一步虚拟节点到实际节点的映射,例如定位到“Node A#1”、“Node A#2”、“Node A#3”三个虚拟节点的数据均定位到Node A上。这样就解决了服务节点少时数据倾斜的问题。在实际应用中,通常将虚拟节点数设置为32甚至更大,因此即使很少的服务节点也能做到相对均匀的数据分布。

    七、总结

    上文中,我们一步步分析了什么是一致性Hash算法,主要是考虑到分布式系统每个节点都有可能失效,并且新的节点很可能动态的增加进来的情况,如何保证当系统的节点数目发生变化的时候,我们的系统仍然能够对外提供良好的服务,这是值得考虑的!


    参考文章:

    1、https://www.cnblogs.com/lpfuture/p/5796398.html
    2、http://www.zsythink.net/archives/1182

    在这里插入图片描述

    【视频福利】2T免费学习视频,搜索或扫描上述二维码关注微信公众号:Java后端技术(ID: JavaITWork)回复:1024,即可免费获取!内含SSM、Spring全家桶、微服务、MySQL、MyCat、集群、分布式、中间件、Linux、网络、多线程,Jenkins、Nexus、Docker、ELK等等免费学习视频,持续更新!

    展开全文
  • 因为你原来安装的可能是没签名的apk(测试方便),后来安装的是...或者真的如提示所说,是因为同包签名不一致导致的。同包签名的话建议采用相同的keystore。 或者是手动卸载之前的apk之后,在安装新的apk包就可以了。1
  • System.out.println("不一样的属性:" + field.getName() + " 属性值:[" + s1 + "," + s2 + "]"); } } } catch (Exception e) { System.out.println(e.getMessage()); } if(isEqual){ this.status=...
  • 如某demo中引入了A、B两个工程,而两个工程中都引入了guava依赖,但引入的guava版本不一致,一个是20.0,一个是18.0,导致报各种找不到类下方法错误。 错误信息: Caused by: java.lang.NoSuchMethodError: ...
  • 本人在改论文格式的时候发现,格式和行距相同,但跟模板的大小却不一样,一直在查原因,终于查到了。 以下为 word 2016版本 1.首先选中不一样的段落,右击选择段落,检查对齐网格是否都点了。 2.若没问题再检查...
  • Android 5.0上两个签名不一致的APP不能声明相同的permission,如果声明了相同的permission安装第二个APP时会失败,提示错误Package com.test.hellojni attempting to redeclare permission XXX
  • Winform设置按钮窗体背景色一致

    千次阅读 2015-09-06 22:32:57
    窗体设计的时候有时候可能需要设置按钮的背景色透明:窗体的背景色一致,这个时候就需要进行按钮属性的修改了,那我们需要修改按钮的哪几项属性呢? (1)设置按钮的BACKCOLOR为WEB的Transparent (2)设置...
  • 问题根本应该还是本人常常寻找问题的根源:mysql数据库版本过高!我使用的是Mysql8.0   &lt;jdbcConnection driverClass="... connectionURL="jdbc:mysql://localhost:3306/mybatis?...
  • 但是当分别用这两个分片去查时,就会发现搜索结果不一致,_score不一样。在官方文档中,提到分片中存在标记为已删除的文档,这些文档只有在下一次旧文档所属的段合并时才会从磁盘中删除。但是出于实际原因,这些已...
  • 内部一致相互一致性关系总结

    千次阅读 2017-05-16 20:11:14
    对内部一致性、相互一致性进行整理总结
  • 在delphi中,C#也是如此,对象的地址对象变量(引用)的地址不是同一个概念。要加以区别。   procedure TForm1.btn1Click(Sender: TObject); var  p1: Pointer;  p2: Pointer; begin  if TObject(btn1...
  • 4月份开发好的微信公众号,分享功能一切正常,5月份又开发了一个,结果分享功能不能用,回过头测试4月份的那个公众号,微信也不能用,找了3个小时的原因,起初还以为自己的接口哪里调错了,最后去官网找原因,看到...
  • 这个很简单就直接贴代码啦!!! public static boolean isSameArray(String[] src, String[] desc) { int srcLength = src.length; int descLength = desc.length; if (descLength != srcLength) {
  • 有时候,相同的父节点下面的标签个数不一致,一个父节点下面是两个标签,另一个父节点下面是三个标签。 但是我们又想要把只有两个标签的父节点也记为三个子节点,并且把它最后一个节点的值记为None。可通过伪造的第...
  • 摘要:本篇文章是【区块链之技术进阶】的第七篇文章,在之前的文章中咱们多多少少提及了共识算法等相关知识,但是却没有具体地更加深入地了解,本文就为大家掰一掰区块链共识机制分布式一致性算法,两者究竟有什么...
  • ; charset=UTF-8" pageEncoding="UTF-8" %> *" %> *" %> *" %> *" %> <!DOCTYPE ... if(str==null){//如果初次加载页面,直接返回,不会执行下面存取数据库的代码 ... 哪错了
  • 有的的时候同一个布局,在同一分辨率的手机上可能产生文字大小不一致的现象,语原因是两个手机的字体大小设置不一致,可在BaseActivity中重写getResource方法解决 /** * 设置字体不随着手机系统设置而变化 * @return...
  • 执行相同的语句但是得到的结果却是不一样,这是为什么呢? ![本地5.6结果](https://img-ask.csdn.net/upload/201607/18/1468826533_805322.png) ![服务器5.7结果]...
  • 浅析数据一致

    万次阅读 2016-02-19 15:27:38
    什么是数据一致性?  在数据有多分副本的情况下,如果网络、服务器或者软件出现故障,会导致部分副本写入成功,部分副本写入失败。这就造成各个副本之间的数据不一致,数据内容冲突。 实践中,导致数据不一致的情况...
  • RedisMySQL数据一致性问题详解

    千次阅读 2019-02-25 18:07:03
    不要求强一致性的读请求,走redis,要求强一致性的直接从mysql读取。 写请求: 数据首先都写到数据库,之后更新redis(先写redis再写mysql,如果写入失败事务回滚会造成redis中存在脏数据)。 【2】MySQL和Redis...
  • 一致性、顺序一致性、弱一致性和共识

    万次阅读 多人点赞 2018-07-21 21:57:37
    可以分为强一致性、顺序一致一致性。 1.1 强一致性(Strict Consistency) 也称为: 原子一致性(Atomic Consistency) 线性一致性(Linearizability Consistency) 两个要求: 任何一次读...
  • 可以分为强一致性、顺序一致一致性。 强一致性(Strict Consistency) 系统中的某个数据被成功更新后,后续任何对该数据的读取操作都将得到更新后的值; 也称为:原子一致性(Atomic Consistency)线性一致...
  • 一、说明根据 Cloud Design Patterns 一书中关于缓存模式的 Cache Aside Pattern 说明,其主要内容总结如下:读取的时候,先读取缓存,如果缓存中没有,...(1)、如果写数据库的内容更新到缓存中的内容是一样的,...
  • 一致性是一个深刻而复杂的问题,这篇文章是我目前的粗浅理解,如果发现理解错误还会继续更新 目前这篇文章只是记录我自己的理解,并没有考虑文章的可读性 本文由giantpoplar发表于CSDN,未经允许不得转载。 ...
  • 1.Java保存的文件名必须类名一致;2.如果文件中只有一个类,文件名必须类名一致;3.一个Java文件中只能有一个public类;4.如果文件中不止一个类,文件名必须public类名一致;5.如果文件中不止一个类,而且没有...
  • 本文主要测试MySQL执行update语句时,针对原数据(即未修改)相同的update语句会在MySQL内部重新执行吗? 二、测试环境 MySQL5.7.25 Centos 7.4 三、binlog_format为ROW 1、参数 2、测试步骤 session1 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 586,553
精华内容 234,621
关键字:

一致与相同是一样吗