精华内容
下载资源
问答
  • 时间偏移计算

    千次阅读 2016-08-11 17:30:33
    * 时间偏移计算 * * @param time * @param offset * @return StatusServiceImpl.java String */ private static String getDay(String time, int offset) { // SimpleDateFormat simpleDateFormat =...
    /**
    	 * 时间偏移计算
    	 * 
    	 * @param time
    	 * @param offset
    	 * @return StatusServiceImpl.java String
    	 */
    	private static String getDay(String time, int offset) {
    		// SimpleDateFormat simpleDateFormat = new
    		// SimpleDateFormat("yyyy-MM-dd");
    		Calendar c = Calendar.getInstance();
    		Date date = null;
    		try {
    			date = new SimpleDateFormat("yy-MM-dd").parse(time);
    		} catch (ParseException e) {
    			e.printStackTrace();
    		}
    		c.setTime(date);
    		int day = c.get(Calendar.DATE);
    		c.set(Calendar.DATE, day + offset);
    		String day = new SimpleDateFormat("yyyy-MM-dd").format(c
    				.getTime());
    
    		return day;
    	}

    展开全文
  • 地图偏移的起因

    千次阅读 2020-08-03 14:36:16
    国家安全与地图保密插件民间纠编地图可能引起很严重的国家安全刑事问题1、偏移的起因:天朝测绘局以国家安全为理由,用法律的形式对所有在天朝...2、GPS接收机本身接收卫星的信号,计算出本机所在位置的经纬度,在没

    国家安全与地图保密插件

    民间纠编地图可能引起很严重的国家安全刑事问题

    1、偏移的起因:天朝测绘局以国家安全为理由,用法律的形式对所有在天朝发行的地图类产品加了强制性规范,要求所有地图类产品都必须使用国家测绘局的一种加偏移的算法,对地图的真实坐标进行加偏移处理,之后才可能通过审批准许上市。因此,天朝的所有官方及商用地图的坐标都是偏移的,这种偏移属于非线性的,偏移量在300至500米不等,偏移方向也不定。这种加过偏移的地图坐标就是所谓“火星坐标”。
    2、GPS接收机本身接收卫星的信号,计算出本机所在位置的经纬度,在没有做特别处理的时候,这个经纬度是正确的。但是如果GPS支持加载地图的话,这个GPS中的地图就得受上述第一条法规的约束了,所以正式在天朝销售的行货GPS设备中的地图必须也得加偏移,处理成火星坐标。
    3、问题来了,如果仅仅是地图搞成火星坐标,但GPS仍然输出真实坐标的话,就会发生GPS的定位(及导航)跟地图不能吻合的问题。于是,只好在GPS软件中设置一个使用同样算法的加偏移功能。GPS先从卫星上得到真实坐标,然后经过加偏移程序转换成火星坐标,由于是同一个算法,所以经过软件加偏移的坐标能跟同样加了偏移的地图吻合,就是“歪到一起”了。这样就可以用GPS正常导航了——但这台GPS设备输出的坐标仍然是火星坐标,放到Google Earth上面是没法正常吻合的。
    4、由于Google Earth属于卫星照片,它不是地图,所以不受天朝测绘法的约束,因此Google Earth的坐标是真实坐标。这样,问题又来了,当你使用天朝处理过的GPS导出火星坐标(或航迹),企图把它放到Google Earth上面看看自己都走了哪些路的时候,因为Google Earth照片的坐标是真实的,而你的GPS导出的坐标是火星坐标,二者就对不上号了,你也许会看到在google Earth上,你开着车从别人的楼顶上飞过去,或者打湖里面漂过去。
    5、水货GPS因为是洋鬼子的产品,原本并非销往天朝的,洋鬼子不会玩这种加偏移的买卖,所以水货GPS设备,如果使用机器原带的地图的话,得到的坐标(或者航迹)是真实正确的,这就是水货机器的无偏地图。但是洋鬼子的设备中一般没有中文地图,如果你把天朝的官方或者正式发布的商用地图放到水货GPS设备里面的话,就会发生第3条前面说的问题:设备的真实坐标跟天朝特殊地图的火星坐标不吻合——出现偏移——无法正常导航。
    6、由于火星坐标的一系列问题,众民间人士根据那个加偏移算法自行折腾出了很多纠正了偏移的地图,这些地图的坐标是正确的。这样的地图拿到水货GPS设备上,因为水货GPS输出的坐标是真实的,所以可以完美配合工作,正确导航定位,并且输出正确的坐标——放到Google Earth上也是正确的。
    7、天朝行货GPS设备软件中的加偏移功能,是通过一个所谓空心地图文件(或者28类地图,或者快拼模块)来触发启动偏移程序的,如果用户安装非本机自带的,但属于天朝官方或者正式发布的商用地图,那要配合空心地图文件(或者把地图类别设置为28),从而让GPS软件中的加偏移程序启动,使得GPS输出火星坐标,跟地图的火星坐标吻合,如此才能正常导航——但这台GPS设备输出的坐标仍然是火星坐标,放到Google Earth上面是没法正常吻合的。
    8、天朝行货GPS设备,如果要得到真实坐标,使用民间的纠偏地图,就得把那个空心地图文件移除(或把原机自带的28类地图移除/取消,或把同样作用的快拼弄掉),这样GPS设备输出真实的坐标,才能跟纠偏地图的正确坐标吻合,实现正确导航定位,并且输出正确的坐标——放到Google Earth上也是正确的。不过,在天朝行货GPS上不能同时使用火星坐标地图和纠偏地图,否则必然有一个没法正常导航定位。
    9、水货GPS设备用民间的简体中文刷机,一般来说也没有那个加偏移程序,所以要使用纠偏地图或者无偏地图。不能使用天朝官方的火星坐标地图,不然就对不上号。

    国家 Bao Mi 插件,也叫做加密插件或者加偏或者SM模组,其实就是对真实坐标系统进行人为的加偏处理,按照几行代码的算法,将真实的坐标加密成虚假的坐标,而这个加偏并不是线性的加偏,所以各地的偏移情况都会有所不同。而加密后的坐标也常被人称为火星坐标系统,这是我们的国家又一个伟大的发明,让国外的 Zheng Fu 和企业等,都看不懂我们的坐标系统。 
    其实很少有人知道国家 Bao Mi 插件问题,但作为导航电子地图产业或者汽车导航产业中的人,多多少少都会了解到这个问题。国家是出于国家安全考虑,将我们看到的真实的坐标变成假的虚拟的坐标,这样,我们的国家就安全了,不会被恐怖分子破坏了。最简单的举例来说,比如鸟巢吧,你真实的坐标是这个,加密后就成了那个,导航电子地图上看到的就是那个,那么人家导弹要是攻击那个的时候,那么导弹就打不中我们的鸟巢啦,我们的鸟巢就安全了。不过,个人担心这样加密后没有打中鸟巢,会不会打中水立方呢,可能是无心插柳柳成荫了。 
    具体说说这个 Bao Mi 插件的问题吧,是如何运作的呢? 
    现在,所有的电子地图所有的导航设备,都需要加入国家 Bao Mi 插件。第一步,地图公司测绘地图,测绘完成后,送到国家测绘局,将真实坐标的电子地图,加密成“火星坐标”,这样的地图才是可以出版和发布的,然后才可以让GPS公司处理。第二步,所有的GPS公司,只要需要汽车导航的,需要用到导航电子地图的,统统需要在软件中加入国家 Bao Mi 算法,将COM口读出来的真实的坐标信号,加密转换成国家要求的 Bao Mi 的坐标,这样,GPS导航仪和导航电子地图就可以完全匹配啦,GPS也就可以正常工作啦。 
    所以,所有的导航电子地图公司,像四维图新、瑞图、易图通、高德等等,都需要将自己的电子地图拿到国家测绘局进行加密处理,而所有的导航软件公司,都需要将自己的导航软件中加入国家测绘局提供的加密算法的代码。而这一段代码,就是国家的机密,不是公开的,每次去国家测绘局加密处理都需要预约并在封闭的环境中进行,编译完成后需要是在主程序的exe中,而不能编译在外部dll等文件中。 
    当然,国家的 Bao Mi 插件,是需要收费的,早期的时候,一个导航仪就需要10块钱的 Bao Mi 插件许可费,恩, Bao Mi 插件也不是白用的,毕竟国家花了很多的钱和人力和物力才做出来的保护国家安全的 Bao Mi 东西怎么可以随便送你用呢,收点钱也就算是正常也算是在预料之中啦。现在的话,好像已经下放到地图数据公司了,就是看这个地图数据公司的经营状况,大概会出货多少份电子地图,然后一次性收取地图数据公司多少钱,可能是多少百万,然后这个钱呢,你们数据公司就自己找你们的导航软件公司的客户收吧,算在每一台设备中的许可费,恩,国家的办事效率变高了,一次直接从导航电子地图公司收费比逐个收取导航软件公司的钱要来的容易和不那么麻烦。 
    现阶段,有些人或者组织,为了自己的利益,将导航软件和导航地图进行XX,并发现了导航电子地图中存在的地图偏差,所以就采取人为的手段,将地图反加密,将虚假的坐标转换成标准的WGS84坐标,最笨的方法就是线性的平移,大概偏差的距离为500米,基本上能够反回来,但误差较大,特别是南北距离加大的情况下,而聪明一点的方法,用matlab等工具计算出其中的曲线,然后反转回来。多么的可怕那,这是触犯国家法律的行为,国家的安全就这样被你们破坏了,这是一个刑事问题,而不是简单的XX软件XX地图的经济犯罪问题了。请大家务必务必遵守国家的法律,不要干出这样的傻事出来,出了事谁都保不了你,毕竟你将成为国家的敌人。 
    最后,说说 Bao Mi 插件带来的弊端,好处不容忽视,国家为了安全考虑, Bao Mi 了就安全了,但弊端是,制造了人为的障碍,非常的不好用,比如导航软件出来的坐标,不能和Google Earth等国际软件匹配,Google Earth和Map在国内基本上就是废物。进一步带来的导航问题是,寻宝、分享等许多好玩的GPS活动,都无法在大*陆地区展开,这一点真的让人很无奈。当然,也有一些时候,由于导航软件的 Bao Mi 插件问题,导致不能导航等等。 Bao Mi 插件,是一个让人哭笑不得的东西,就如同国际的WGS84坐标对我们的54坐标或者80坐标,就如同最近的国家部门准备开发“影像中国”反制google earth的泄密问题。等等种种,法律不可逾越,但我们也不希望人为的制造麻烦,或者为了更深入的经济利益。 
    这就是国家的导航 Bao Mi 插件问题吧,希望大家能够理解。

    展开全文
  • 如何计算? 设某一城市有一个城市地标,可以视为城市的中心点 ,其经纬度已知。 分散在城市中心分别  (1)由多层环形交通公路(环线),环城市地标为基准,在不同层的环线上分布着重要的设施。  (2)...
    如何计算?

    设某一城市有一个城市地标,可以视为城市的中心点 ,其经纬度已知。

    分散在城市中心分别
       (1)由多层环形交通公路(环线),环城市地标为基准,在不同层的环线上分布着重要的设施。
        (2)分布着多个卫星城、主要居民区和学校、基础设施。

    现控制无人机分别自城市地标出发,依次探访和航拍环城公路上的重要设施。

    无人机配置有GPS导航和电子罗盘。

    自城市中心地标处控制无人机起飞。

    1 计算任意经纬度点间的距离

    用GPS测出两个点的经纬度后,如何计算这两个点之间的距离呢。用的是便携式GPS,只有经纬度显示,无坐标显示和输出。


    设两点A、B的经、纬度分别为(jA,wA)(jB,wB),则半径为R的球面上两点间的最短距离(大圆弧)为:
    弧AB=R*arccos[sin(wA)sin(wB)+cos(wA)cos(wB)*cos(jA-jB)]


    google maps的脚本里代码。

    private const double EARTH_RADIUS = 6378.137;
    private static double rad(double d)
    {
        return d * Math.PI / 180.0;
    }

    public static double GetDistance(double lat1, double lng1, double lat2, double lng2)
    {
        double radLat1 = rad(lat1);
        double radLat2 = rad(lat2);
        double a = radLat1 - radLat2;
        double b = rad(lng1) - rad(lng2);
        double s = 2 * Math.Asin(Math.Sqrt(Math.Pow(Math.Sin(a/2),2) +
         Math.Cos(radLat1)*Math.Cos(radLat2)*Math.Pow(Math.Sin(b/2),2)));
        s = s * EARTH_RADIUS;
        s = Math.Round(s * 10000) / 10000;
        return s;
    }


    ;该函数用IDL语言编写,利用GIS中根据两点经纬度计算距离公式

    ;计算经纬度两点间的距离
    Function Length2LatLon,pts0,pts1
        radius=6378.14d;地球平均半径,单位公里
    ;    print,pts0,pts1

    ;    length=radius * acos(sin(pts0[1]*!PI/180.0)*sin(pts1[1]*!PI/180.0)+cos(pts0[1]*!PI/180.0)*cos(pts1[1]*!PI/180.0)*cos(pts0[0]*!PI/180.0-pts1[0]*!PI/180.0))
        length=radius * acos(sin(pts0[1]*!DTOR)*sin(pts1[1]*!DTOR)+cos(pts0[1]*!DTOR)*cos(pts1[1]*!DTOR)*cos(pts0[0]*!DTOR-pts1[0]*!DTOR))
        return,length
    end
    pro test
    pts0=[117.548802d,38.625238d]
    pts1=[117.548625d,38.625139d]
    print,length2latlon(pts0,pts1)


    end

    另外在IDL中提供了计算两点距离的方法map_2points可以方便的计算不同单位(Miles,Meters)的距离,还可以通过设置不同的参数来得到不同的距离、角度值,

    Syntax:
    Result = MAP_2POINTS( lon0, lat0, lon1, lat1 [, DPATH=value | , /METERS | , /MILES | , NPATH=integer{2 or greater} | , /PARAMETERS | , RADIANS=value] [, /RADIUS] [, /RHUMB] )

    具体可以参考IDL 的Help里面讲解

    如果要算的距离是椭球面的距离,就难些。

    因为大地线的方程是一个微分方程,所以大地线长度是对一个微分方程的开方的积分,无法写成简单的公式.通常是直接用差分代替微分,用求和代替积分算出,这是很严格的.

    下面是近似地由大地经纬度求椭球面距离的逼近方法:

    如两点在同一纬线上,距离为N*cos(phi)*(lambda2-lambda1)。

    如两点在同一经线上,距离为M*dphi从phi1到phi2的积分。

    其中N=a/sqrt(d), d=1-e*e*sin(phi)*sin(phi),

              M=a*(1-e*e)/[d*sqrt(d)],

    其中长短轴a,b与扁率偏心率的关系是:a/b=1-f=sqrt(1-e*e).

    把积分区域分成等分n小段,积分可以写成求和,既可算出。这也是严格的。

    如两点不在同一经纬线上,且两点距离很近,则小区域的椭球面可以视为平面,于是两点的距离近似地是上面算出的距离的平方和的开方。如两点距离较远,把两点间的经纬差分成等分n小段,每小段的距离的和就是所求的距离。

    地图基础知识

    • 地图应用接口中使用的经纬度单位是NTU,您需要把其它单位的经纬度值转化过来,以下为常用的转换关系:

    基本转换:
    NTU = 度*100000
    度 = NTU/100000
    例如:
    经度 = 116.21345°
    纬度 = 39.445875°
    NTU经度:116.21345 * 100000 = 11621345(NTU)
    NTU纬度:39.445874*100000=3944587(NTU)

    度分转换:
    将度分单位数据转换为度单位数据
    度=度+分/60
    例如:
    经度 = 116°20.12’
    纬度 = 39°12.34’
    经度 = 116 + 20.12 / 60 = 116.33533°
    纬度 = 39 + 12.34 / 60 = 39.20567°
    NTU经度 = 116.33533 * 100000 = 11633533(NTU)
    NTU纬度 = 39.20567 * 100000 = 3920567(NTU)

    度分秒转换:
    将度分秒单位数据转换为度单位数据
    度 = 度 + 分 / 60 + 秒 / 60 / 60
    例如:
    经度 = 116°20’43”
    纬度 = 39°12’37”
    经度 = 116 + 20 / 60 + 43 / 60 / 60 = 116.34528°
    纬度 = 39 + 12 / 60 + 37 / 60 / 60 = 39.21028°
    NTU经度 = 116.34528 * 100000 = 11634528(NTU)
    NTU纬度 = 39.21028 * 100000 = 3921028(NTU)
    其格式的经纬值先转换度,再采用上面的运算。

    与经纬度有关的基础知识:

    NTU 相当于十万分之一度。

    如何计算经度方向距离

    比如: 点A的纬度为3995400,点B的纬度为3995300,则这两个点在沿着纬线的方向相差100米。
    点A的经度为11695400,点B的经度为11695300,则这两个点在沿着经线的方向相差大约为77米,
    该值的计算方法可以用近似公式:
    经度方向距离 = 经度差 * cos(纬度值) = 100 * cos(39) = 77米。

    如何计算两点间距离

    比如:点A的经度为11695400,纬度为3995400。点B的经度为11695300,纬度为3995300。
    公式:两点间距离 = [ (A点经度 - B点经度)^2 + (A点纬度 - B点纬度)^2 ] ^ (1/2) = [ (11695400 - 11695300)^2
    + (3995400 - 3995300)^2 ] ^(1/2) =(10000+10000) ^ (1/2) =141米

    公式说明:加法 + ,减法 - ,乘法 *,除法 /,幂运算 ^(1/2)表示平方根 ^2表示平方。

    适用范围:未加密经纬度/加密经纬度

    返回顶部

    比例级别定义表

    使用的比例级别总共有0-12级共13个级别,他们和实际的比例尺的对应关系分别是:

    0级 -------------------- 1:5 000
    1级 -------------------- 1:10 000
    2级 -------------------- 1:20 000
    3级 -------------------- 1:40 000
    4级 -------------------- 1:80 000
    5级 -------------------- 1:160 000
    6级 -------------------- 1:320 000
    7级 -------------------- 1:640 000
    8级 -------------------- 1:1 280 000
    9级 -------------------- 1:2 560 000
    10级 ------------------- 1:5 120 000
    11级 ------------------- 1:10 240 000
    12级 ------------------- 1:20 480 000
    13级 ------------------- 1:40 960 000
    14级 ------------------- 1:81 920 000

    简单的说,0级地图最详细,12级地图最简单。

    返回顶部

    城市代码表

    城市代码是某个城市的英文简称,标注在城市名称后面,便于用户记忆,点击查看城市代码表:




    2 计算偏移角。

    http://hi.baidu.com/simonyuee/blog/item/c1497e60958d38da8db10dc7.html
    展开全文
  • 从上图可以看出,每条消息存在磁盘的偏移量是其距离文件开头的绝对偏移量。比如上面第一条消息的偏移量是0;第二条消息的偏移量是第一条消息的总长度;第三条消息是其前两条消息总长度;以此类推。这种方式存储消息...

    一、Kafka 0.7.x

    1、非压缩消息

    MessageSet 格式的时候就说Offset字段存储的是消息存储到磁盘之后的物理偏移量

    从上图可以看出,每条消息存在磁盘的偏移量是其距离文件开头的绝对偏移量。比如上面第一条消息的偏移量是0;第二条消息的偏移量是第一条消息的总长度;第三条消息是其前两条消息总长度;以此类推。这种方式存储消息的偏移量很好理解,处理起来也很方便。

    消息存储到磁盘的偏移量是由 Broker 处理完成的,原因很简单,因为只有 Broker 端才知道现在 Log 的最新偏移量; Producer 端是无法获取的。这个逻辑同样适用于 Kafka 0.8.x 、Kafka 0.9.x 以及 Kafka 0.10.x。

    2、压缩消息

    压缩消息内部的子消息并不设置偏移量,外部的消息偏移量设置规则和非压缩消息逻辑一致。

    3、优缺点

    缺点:

    很难对压缩消息内部的消息进行checkpoint;

    很难对压缩消息内部的消息进行定位操作;

    log compaction 不好做。

    优点:

    Broker 处理来自 Producer 的消息速度非常快

    CPU 的利用率一般 < 10%

    一般网络是这里的主要瓶颈。

    二、Kafka 0.8.x

    1、非压缩消息

    上图很明显的一个变化就是偏移量的指已经不是消息的物理偏移量了,而是一个绝对偏移量,这个偏移量从0开始。第一条消息的绝对偏移量是0;第二条消息的绝对偏移量是1;依次类推。同样,这个偏移量的计算也是由 Broker 处理的。

    2、压缩消息

    压缩消息内部的消息也有偏移量了!对于压缩消息的偏移量处理相对于 Kafka 0.7.x 复杂多了。

    Producer端对于压缩消息偏移量处理

    Producer 端会对压缩消息中内部的消息设置一个相对偏移量。从0开始,依次到n-1,这里的n代表压缩消息的条数。

    偏移量设置好之后,Producer 端会将整个 MessageSet 进行压缩,然后发送到Broker。

    Broker端对于压缩消息偏移量处理

    Broker 端接收到 Producer 发送过来的压缩消息,忽略掉 Producer 端对压缩消息偏移量的而处理,其会先解压接收到的压缩消息,然后根据 nextOffset 依次设置压缩消息内部消息的偏移量,最后整个压缩消息的偏移量为最后一条内部消息的绝对偏移量。举个例子,比如图中最后一条消息的偏移量是7,那么 nextOffset 应该为 8;现在 Broker 接收到新消息,

    偏移量设置完之后, Broker 需要重新压缩刚刚解压好的消息,最后会将这条消息追加到 Log 文件中。

    Client端对于压缩消息偏移量处理

    Client 端如果请求压缩的消息,Broker 端会直接将整个压缩的消息发送到 Client,Client会自动将压缩的消息解压,解压的过程对我们编程的人来说是无感知的。

    为什么整个压缩消息的偏移量为最后一条内部消息的绝对偏移量呢?

    由于 FetchRequest 协议中的 offset 是要求 Broker 提供大于等于这个 offset 的消息,因此 Broker 会检查log,找到符合条件的,然后传输出去。那么由于FetchRequest中的offset位置的消息可位于一个compressed message中,所以broker需要确定一个compressed Message是否需要被包含在respone中。

    (1)如果我们将整个压缩消息的偏移量为第一条内部消息的绝对偏移量。那么,我们对于这个Message是否应包含在response中,无法给出是或否的回答。比如 FetchRequest 中指明的开始读取的offset是14,而一个compressed Message的offset是13,那么这个Message中可能包含offset为14的消息,也可能不包含。

    (2)如果我们将整个压缩消息的偏移量为最后一条内部消息的绝对偏移量。那么,可以根据这个offset确定这个Message应不应该包含在response中。比如 FetchRequest 中指明的开始读取的offset是14,那么如果一个compressed Message的offset是13,那它就不该被包含在response中。而当我们顺序排除这种不符合条件的Message,就可以找到第一个应该被包含在response中的Message(压缩或者未压缩), 从它开始读取。

    在第一种情况下(最小offset),我们尽管可以通过连续的两个Message确定第一个Message的offset范围,但是这样在读取时需要在读取第二个Message的offset之后跳回到第一个Message, 这通常会使得最近一次读(也就读第二个offset)的文件系统的缓存失效。而且逻辑比第二种情况更复杂。在第二种情况下,broker只需要找到第一个其offset大于或等于目标offset的Message,从它可以读取即可,而且也通常能利用到文件系统缓存,因为offset和消息内容有可能在同一个缓存块中。

    3、优缺点

    这个版本的压缩消息中内部的消息也有偏移量了,这样就可以对内部消息进行定位处理。而且log compaction实现起来很方便。但是这个版本的消息偏移量也有个很明显的问题,就是对于每条压缩的消息,Broker 端都需要对其进行解压,设置好相关的偏移量之后,再进行压缩,这些都会占用很多的CPU资源。

    三、Kafka 0.10.x

    Kafka 0.10.x 对于非压缩的消息偏移量处理和 Kafka 0.8.x 一致,这里就不再介绍了。这里主要介绍 Kafka 0.10.x 对压缩消息偏移量处理逻辑。和 Kafka 0.8.x 处理内部消息偏移量逻辑不一样,这个版本对于内部消息偏移量使用的是相对偏移量,从0开始,依次到n-1,这里的n代表压缩消息的条数。所以 Kafka 0.10.x 压缩消息处理完偏移量之后看起来像下面的结果:

    上图可以看出,相对于 Kafka 0.8.x 仅仅是内部消息偏移量变成了相对偏移量,整个压缩消息的偏移量处理逻辑和 Kafka 0.8.x 一致。下面我们将详细介绍 Kafka 是如何处理的:

    Producer端对于压缩消息偏移量处理

    这个逻辑和 Kafka 0.8.x 处理逻辑一致,不再介绍。有一点需要注意,Kafka 0.10.x 会将消息的 magic 值设置为 1,用于区分其他版本的消息,后面会介绍这样设置的用处。

    Broker端对于压缩消息偏移量处理

    Broker 端接收到 Producer 发送过来的压缩消息,其也是先解压接收到的压缩消息,然后做一堆的判断,比如 消息的 magic 值是否大于0,压缩消息内部的消息偏移量值是否连续(0,1,2,3这样的)等,如果符合这些条件(inPlaceAssignment = true),那么 Broker 会直接处理整个压缩消息外部的偏移量,内部消息的偏移量不需要设置,因为这个在 Producer 端已经设置好了;并不需要再次压缩消息,最后会将这条消息追加到 Log 文件中。

    如果 inPlaceAssignment = false,这时候会直接操作解压后的消息,并给压缩消息内部消息设置偏移量,最后设置整个压缩消息的偏移量;这时候会忽略掉 Producer 端为压缩消息设置的偏移量,包括内部消息和整个压缩消息的偏移量。整个处理逻辑分为两种情况:

    (1)如果接收到的消息不是由 Kafka 0.10.x 版本Producer客户端发送过来的,那么消息的 magic 值会等于0,这时候 Broker 设置偏移量逻辑和 Kafka 0.8.x 处理逻辑一致,也就是不管内部消息还是整个压缩消息的偏移量都是使用绝对偏移量;

    (2)如果接收到的消息是由 Kafka 0.10.x 版本Producer客户端发送过来的,那么消息的 magic 值会等于1,这时候 Broker 会将压缩消息内部的消息偏移量设置成相对的,从0开始,依次到 n-1 ,最后整个压缩消息的偏移量为 nextOffset + n - 1,其中n为压缩消息的条数。处理结果如下:

    偏移量设置完之后,对于inPlaceAssignment = false,不管是由什么版本发送过来的消息, Broker 需要重新压缩刚刚解压好的消息,最后会将这条消息追加到 Log 文件中。

    Client端对于压缩消息偏移量处理

    对不同版本的 Client 请求, Broker 会做出不同的判断:对于非 Kafka 0.10.x 版本的 Consumer,Broker 端消息的发送不会使用零拷贝技术;而如果是 Kafka 0.10.x 版本的 Consumer,Broker 端消息的发送才会使用零拷贝技术

     

     

    展开全文
  • Linux平台Cpu使用计算

    千次阅读 2013-09-09 13:19:25
    Linux平台Cpu使用计算 proc文件系统 /proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为内核与进程提供通信的接口。用户和应用程序可以通过/proc得到系统的信息,并可以...
  • 误码BER计算原理及仿真输出

    万次阅读 2018-11-15 20:45:44
    第三部分是收发机处理循环,其中调用系统对象的步骤方法来调制输入信号,向调制信号中添加信道噪声,并解调以产生接收信号和计算误码。最后,在第四部分中,对仿真进行了清理和终止,并对BER性能结果进行了可视化...
  • SJA1000 内部频率基准源F_BASE = Fclk/... 波特(fbit)是指单位时间内所传输的数据位的数量,一般取单位时间为1s。波特由通信线上传输的一个数据位周期的长度(Tbit)决定,如下式所示。  Fbit=1/Tbit (1)
  • android中的坐标偏移分析与问题解决

    千次阅读 2016-05-29 00:24:53
    今天,就我在初学android中遇到的坐标偏移问题进行分析. 在初学android过程中, 自己根据api文档写了个画画板的小demo, 发布到不同的模拟器上会出现鼠标和画笔不是同一坐标的问题, 如下图所示: 对于为什么会出现这...
  • ViewPager 修改默认滑动偏移

    千次阅读 2017-06-02 14:30:45
    最近在公司的新一代产品(硬件产品,分辨率2560*1440),针对高分辨以及横屏应用开发,大量使用到ViewPager控件,但是问题来了,翻页的过程中,需要滑动屏幕一半的分辨率以上(2560/2=1280)才能够翻页,这样非常...
  • 基于博客: ... 1.主要代码逻辑: /** * 第一步:滚动的时候试着改变头部的高度 ... * 第三步:根据偏移率计算偏移量,然后把图片和需要的文字移动到顶端中心处 */ public class SwipeView extends Re...
  • OQPSK调制技术是一种恒包络调制技术,受系统非线性影响小,具有较高的带宽利用和功率利用,在卫星环境、无线环境下得到广泛应用。因此,在通信信号侦收设备所处理的信号中,存在大量的OQPSK信号。在传统的侦收...
  • 深度学习与计算机视觉系列(10)_细说卷积神经网络

    万次阅读 多人点赞 2016-01-19 19:27:09
    卷积神经网络和普通的神经网络一样,由『神经元』按层级结构组成,其间的权重和偏移量都是可训练得到的。同样是输入的数据和权重做运算,输出结果输入激励神经元,输出结果。从整体上看来,整个神经网络做的事情,...
  • 最近在公司的新一代产品(硬件产品,分辨率2560*1440),针对高分辨以及横屏应用开发,大量使用到ViewPager控件,但是问题来了,翻页的过程中,需要滑动屏幕一半的分辨率以上(2560/2=1280)才能够翻页,这样非常...
  • 然而当大家在分享位置时,往往会出现因为建筑遮挡导致路径偏移、位置定位不准确的情况。华为定位服务的SuperGNSS技术正为大家解决这一难题,致力为大家提供更便捷精准的定位服务。 在介绍SuperGNSS技术原理之前,先...
  • 题目:由LIBSVM的svmtrain输出结果得到分类超平面的法向量w和偏移项b 相信很多人都会使用LIBSVM软件包,svmtrain和svmpredict两个函数分别完成训练和预测:svmtrain输出训练模型,然将将训练模型作为svmpredict的...
  • 然后决定自己用python里面的opencv库写个脚本批处理图像反射计算试试~ 核心步骤就是 遥感影像光谱辐射定标 →大气校正→计算反射这三步了 ①、遥感影像的光谱辐射定标  由遥感器的灵敏...
  • 获取缺口偏移量 :param image: 带缺口图片 :return: """ # left_list保存所有符合条件的x轴坐标 left_list = [ ] # 我们需要获取的是凹槽的x轴坐标,就不需要遍历所有y轴,遍历几个等分点就行 for...
  • 计算机视觉--光流法(optical flow)简介

    万次阅读 多人点赞 2018-09-09 22:38:10
    光流法是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息的一种方法。 通常将二维图像平面特定坐标点上的灰度瞬时变化...
  • 把数组下标作为指针加偏移量足C语言从BCPL (C语言的祖先)继承过来的技巧。在人们的常规思维中,在运行时增加对C语言下标的范围检查是不切实际的。因为取下标操作只是表示将要访问该数组,但并不保证一定要访问。...
  • 转自http://blog.csdn.net/coollen_mmx/archive/2007/04/29/1592044.aspxParallax Mapping with Offset Limiting:A Per-Pixel Approximation of Uneven Surfaces带偏移限制的视差贴图:一种粗糙表面的逐像素近似法 ...
  • 偏移寻址:直接寻址和寄存器间接寻址方式的结合。包括基址寻址,变址寻址,相对寻址。 CISC:复杂 RISC:简化 以下为我总结的必掌握部分(想高分?下面的全搞会) 另计算机组成原理(第二版唐朔飞)319页7.3也需要...
  • 以及偏移项 b b b 。需要注意的一点是,在我们的场景下,通常我们认为训练数据是给定的,而权重是我们可以控制的变量。因此我们为了更新权重的等参数,使得损失函数值最小,我们通常是计算 f f f 对参数 W , b W,b W...
  • 一般说来,用的最多的依旧是ReLU,但是我们确实得小心设定学习,同时在训练过程中,还得时不时看看神经元此时的状态(是否还『活着』)。当然,如果你非常担心神经元训练过程中挂掉,你可以试试Leaky ReLU和Maxout。...
  • 1. 引言 上一节我们讲完了各种激励函数的优缺点和选择,以及网络的大小以及正则化对神经网络的影响。...前一节提到前向计算涉及到的组件(主要是神经元)设定。神经网络结构和参数设定完毕之后,我们就得到得分函数/score
  • Parallax Mapping with Offset Limiting:A Per-Pixel Approximation of Uneven Surfaces带偏移限制的视差贴图:一种粗糙表面的逐像素近似法 作者Terry Welshterry@infiscape.comInfiscape CorporationJanuary 18, ...
  • 计算机存储的发展(块存储,文件存储,对象存储)

    万次阅读 多人点赞 2018-09-15 15:04:08
    块存储 DAS SAN 文件存储 块存储和文件存储异同: 对象存储 1、对象 2、对象存储设备 3、元数据服务器(Metadata Server,MDS) ...计算一般指的是CPU和内存的搭配,存储一般就是指硬盘了,网络指的是网卡的管...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 56,470
精华内容 22,588
关键字:

偏移率如何计算