丰田中国大陆召回66830辆进口雷克萨斯NX 因制动控制缺陷

汽车Harries 发表了文章 • 0 个评论 • 25 次浏览 • 2016-12-17 13:32 • 来自相关话题

网财经12月16日讯 据质检总局网站消息,日前,丰田汽车(中国)投资有限公司向国家质检总局备案了召回计划,将自2016年12月17日起,召回2014~2016年款进口雷克萨斯NX系列汽车。据该公司统计,中国大陆地区共涉及66830辆。具体如下:

2014年6月26日至2016年12月7日期间生产的2014~2016年款进口Lexus NX200系列汽车,共计34499辆;

2014年5月30日至2016年12月7日期间生产的2014~2016年款进口Lexus NX200t系列汽车,共计23787辆;

2014年5月23日至2016年12月7日期间生产的2014~2016年款进口Lexus NX300h系列汽车,共计8544辆。

本次召回范围内部分车辆由于制动控制电脑中的控制程序不完善,在车辆处在制动保持的停车状态下,如有解开座椅安全带等操作,车辆有可能会发生前移,存在安全隐患。

丰田汽车(中国)投资有限公司将为召回范围内的车辆免费升级控制程序,以消除缺陷。库存车辆将在消缺缺陷后进行销售。

相关用户应保持制动保持开关处在关闭状态,停止使用制动保持功能,并在召回作业开始后尽快联系就近经销店进行修理。

丰田汽车(中国)投资有限公司将以电话、挂号信等形式通知所有对应客户,用户可通过拨打LEXUS雷克萨斯顾客服务中心咨询电话800-810-2772(免费) 400-810-2772(手机拨打,需付市话费)获取此次召回的相关信息。用户也可登陆质检总局网站检验监管司(jyjgs.aqsiq.gov.cn)、国家质检总局缺陷产品管理中心网站(www.dpac.gov.cn)以及关注微信公众号(AQSIQDPAC)了解更多信息。此外也可拨打缺陷产品管理中心热线电话:010-59799616或地方出入境检验检疫机构的质量热线:12365(转2号键),反映在召回活动实施过程中的问题或提交缺陷线索。 查看全部
网财经12月16日讯 据质检总局网站消息,日前,丰田汽车(中国)投资有限公司向国家质检总局备案了召回计划,将自2016年12月17日起,召回2014~2016年款进口雷克萨斯NX系列汽车。据该公司统计,中国大陆地区共涉及66830辆。具体如下:

2014年6月26日至2016年12月7日期间生产的2014~2016年款进口Lexus NX200系列汽车,共计34499辆;

2014年5月30日至2016年12月7日期间生产的2014~2016年款进口Lexus NX200t系列汽车,共计23787辆;

2014年5月23日至2016年12月7日期间生产的2014~2016年款进口Lexus NX300h系列汽车,共计8544辆。

本次召回范围内部分车辆由于制动控制电脑中的控制程序不完善,在车辆处在制动保持的停车状态下,如有解开座椅安全带等操作,车辆有可能会发生前移,存在安全隐患。

丰田汽车(中国)投资有限公司将为召回范围内的车辆免费升级控制程序,以消除缺陷。库存车辆将在消缺缺陷后进行销售。

相关用户应保持制动保持开关处在关闭状态,停止使用制动保持功能,并在召回作业开始后尽快联系就近经销店进行修理。

丰田汽车(中国)投资有限公司将以电话、挂号信等形式通知所有对应客户,用户可通过拨打LEXUS雷克萨斯顾客服务中心咨询电话800-810-2772(免费) 400-810-2772(手机拨打,需付市话费)获取此次召回的相关信息。用户也可登陆质检总局网站检验监管司(jyjgs.aqsiq.gov.cn)、国家质检总局缺陷产品管理中心网站(www.dpac.gov.cn)以及关注微信公众号(AQSIQDPAC)了解更多信息。此外也可拨打缺陷产品管理中心热线电话:010-59799616或地方出入境检验检疫机构的质量热线:12365(转2号键),反映在召回活动实施过程中的问题或提交缺陷线索。

Twitter分布式自增ID算法Snowflake

IT互联网Harries 发表了文章 • 0 个评论 • 25 次浏览 • 2016-12-13 11:39 • 来自相关话题

,除去配置信息,核心代码就是毫秒级时间41位 机器ID 10位 毫秒内序列12位。
    在上面的字符串中,第一位为未使用(实际上也可作为long的符号位),接下来的41位为毫秒级时间,然后5位datacenter标识位,5位机器ID(并不算标识符,实际是为线程标识),然后12位该毫秒内的当前毫秒内的计数,加起来刚好64位,为一个Long型。     这样的好处是,整体上按照时间自增排序,并且整个分布式系统内不会产生ID碰撞(由datacenter和机器ID作区分),并且效率较高,经测试,snowflake每秒能够产生26万ID左右,完全满足需要。

Snowflake算法核心

把时间戳,工作机器id,序列号组合在一起。



除了最高位bit标记为不可用以外,其余三组bit占位均可浮动,看具体的业务需求而定。默认情况下41bit的时间戳可以支持该算法使用到2082年,10bit的工作机器id可以支持1023台机器,序列号支持1毫秒产生4095个自增序列id。下文会具体分析。

Snowflake – 时间戳

这里时间戳的细度是毫秒级,具体代码如下,建议使用64位Linux系统机器,因为有vdso,gettimeofday()在用户态就可以完成操作,减少了进入内核态的损耗。[java] view plain copy
 print? [在CODE上查看代码片] [派生到我的代码片]uint64_t generateStamp()  
{  
    timeval tv;  
    gettimeofday(&tv, 0);  
    return(uint64_t)tv.tv_sec * 1000 + (uint64_t)tv.tv_usec / 1000;  
}  

默认情况下有41个bit可以供使用,那么一共有T(1llu << 41)毫秒供你使用分配,年份 = T / (3600 * 24 * 365 * 1000) = 69.7年。如果你只给时间戳分配39个bit使用,那么根据同样的算法最后年份 = 17.4年。

Snowflake – 工作机器id

严格意义上来说这个bit段的使用可以是进程级,机器级的话你可以使用MAC地址来唯一标示工作机器,工作进程级可以使用IP+Path来区分工作进程。如果工作机器比较少,可以使用配置文件来设置这个id是一个不错的选择,如果机器过多配置文件的维护是一个灾难性的事情。

这里的解决方案是需要一个工作id分配的进程,可以使用自己编写一个简单进程来记录分配id,或者利用MySQL auto_increment机制也可以达到效果。

[snowflake - 工作id]

工作进程与工作id分配器只是在工作进程启动的时候交互一次,然后工作进程可以自行将分配的id数据落文件,下一次启动直接读取文件里的id使用。

PS:这个工作机器id的bit段也可以进一步拆分,比如用前5个bit标记进程id,后5个bit标记线程id之类:D

Snowflake – 序列号

序列号就是一系列的自增id(多线程建议使用atomic),为了处理在同一毫秒内需要给多条消息分配id,若同一毫秒把序列号用完了,则“等待至下一毫秒”。[java] view plain copy
 print? [在CODE上查看代码片] [派生到我的代码片]uint64_t waitNextMs(uint64_t lastStamp)  
{  
    uint64_t cur = 0;  
    do{  
        cur = generateStamp();  
    }while(cur <= lastStamp);  
    returncur;  
}  

      总体来说,是一个很高效很方便的GUID产生算法,一个int64_t字段就可以胜任,不像现在主流128bit的GUID算法,即使无法保证严格的id序列性,但是对于特定的业务,比如用做游戏服务器端的GUID产生会很方便。另外,在多线程的环境下,序列号使用atomic可以在代码实现上有效减少锁的密度。 查看全部

,除去配置信息,核心代码就是毫秒级时间41位 机器ID 10位 毫秒内序列12位。
    在上面的字符串中,第一位为未使用(实际上也可作为long的符号位),接下来的41位为毫秒级时间,然后5位datacenter标识位,5位机器ID(并不算标识符,实际是为线程标识),然后12位该毫秒内的当前毫秒内的计数,加起来刚好64位,为一个Long型。     这样的好处是,整体上按照时间自增排序,并且整个分布式系统内不会产生ID碰撞(由datacenter和机器ID作区分),并且效率较高,经测试,snowflake每秒能够产生26万ID左右,完全满足需要。

Snowflake算法核心

把时间戳,工作机器id,序列号组合在一起。



除了最高位bit标记为不可用以外,其余三组bit占位均可浮动,看具体的业务需求而定。默认情况下41bit的时间戳可以支持该算法使用到2082年,10bit的工作机器id可以支持1023台机器,序列号支持1毫秒产生4095个自增序列id。下文会具体分析。

Snowflake – 时间戳

这里时间戳的细度是毫秒级,具体代码如下,建议使用64位Linux系统机器,因为有vdso,gettimeofday()在用户态就可以完成操作,减少了进入内核态的损耗。[java] view plain copy
 print? [在CODE上查看代码片] [派生到我的代码片]uint64_t generateStamp()  
{  
    timeval tv;  
    gettimeofday(&tv, 0);  
    return(uint64_t)tv.tv_sec * 1000 + (uint64_t)tv.tv_usec / 1000;  
}  

默认情况下有41个bit可以供使用,那么一共有T(1llu << 41)毫秒供你使用分配,年份 = T / (3600 * 24 * 365 * 1000) = 69.7年。如果你只给时间戳分配39个bit使用,那么根据同样的算法最后年份 = 17.4年。

Snowflake – 工作机器id

严格意义上来说这个bit段的使用可以是进程级,机器级的话你可以使用MAC地址来唯一标示工作机器,工作进程级可以使用IP+Path来区分工作进程。如果工作机器比较少,可以使用配置文件来设置这个id是一个不错的选择,如果机器过多配置文件的维护是一个灾难性的事情。

这里的解决方案是需要一个工作id分配的进程,可以使用自己编写一个简单进程来记录分配id,或者利用MySQL auto_increment机制也可以达到效果。

[snowflake - 工作id]

工作进程与工作id分配器只是在工作进程启动的时候交互一次,然后工作进程可以自行将分配的id数据落文件,下一次启动直接读取文件里的id使用。

PS:这个工作机器id的bit段也可以进一步拆分,比如用前5个bit标记进程id,后5个bit标记线程id之类:D

Snowflake – 序列号

序列号就是一系列的自增id(多线程建议使用atomic),为了处理在同一毫秒内需要给多条消息分配id,若同一毫秒把序列号用完了,则“等待至下一毫秒”。[java] view plain copy
 print? [在CODE上查看代码片] [派生到我的代码片]uint64_t waitNextMs(uint64_t lastStamp)  
{  
    uint64_t cur = 0;  
    do{  
        cur = generateStamp();  
    }while(cur <= lastStamp);  
    returncur;  
}  

      总体来说,是一个很高效很方便的GUID产生算法,一个int64_t字段就可以胜任,不像现在主流128bit的GUID算法,即使无法保证严格的id序列性,但是对于特定的业务,比如用做游戏服务器端的GUID产生会很方便。另外,在多线程的环境下,序列号使用atomic可以在代码实现上有效减少锁的密度。

为何“逃回北上广”?蓝皮书详解居民生活压力感

新闻Harries 发表了文章 • 0 个评论 • 25 次浏览 • 2016-12-12 21:57 • 来自相关话题

2016年12月12日,《社会心态蓝皮书:中国社会心态研究报告(2016)》在北京发布。汤琪 摄

中新网北京12月12日电(汤琪)逃离北上广后,一些人又选择逃回北上广,这是为何?12日发布的《社会心态蓝皮书)》给出了答案。

蓝皮书解释称,即使有着较好的就业环境,一线城市也并非宜居城市,但是四线及以下城市也可能并非理想中的宜居城市,逃离一线,返回小城市,工作机会少,做什么都需要靠关系,干事要“拼爹”成为对此现象最为形象的描述,身在异乡为异客,回到故乡仍为异客。

2016年12月12日,由中国社会科学院社会学研究所社会心理学研究中心及社会科学文献出版社共同举办的《社会心态蓝皮书:中国社会心态研究报告(2016)》发布会在北京举行。

北上广深经济压力源远高于其他城市

在蓝皮书《居民生活压力感:城市比较研究》一章中,调查结果显示,一线北上广深四大城市的经济压力源远远高于其他城市,最大生活压力源从高到低分别是物价、交通、收入、住房、教育、医疗、赡养老人、健康。

其中,就业压力感和二三线城市同水平,但低于四线及以下城市。

其他经济方面和家庭人际的压力感,一线城市均高居其他城市之上。

地区和城市群的生活压力感比较。图片来源:《社会心态蓝皮书:中国社会心态研究报告(2016)》。汤琪 摄

三线城市普遍宜居

调查结果显示,三线城市相较于一二线、四线及以下城市以及整体水平,在经济压力感、家庭人际压力感上均为最低,这和从社会环境、自然生态、基础设施、人口素质等方面分析城市竞争力的宜居城市结果一致,认为三线城市普遍宜居,而二线城市宜居欠佳。

调查将二线城市细分为二线发达、中等发达、发展较弱城市,再和三线城市比较后却可以看到,虽然二线发达城市在住房、交通和赡养老人三个与经济有关的压力感上高于三线城市,有较高的生活压力感,但在其他经济压力感上,特别是家庭和人际压力感上是低于三线城市的。

蓝皮书指出,二线发达城市包括的是经济发达的强省省会和计划单列市的8个城市,生活压力感在经济压力和家庭人际压力上均低于整体平均水平,也远远低于一线城市和三线城市,从生活压力感角度考虑,或许可以称之为宜居城市。



四线及以下城市家庭与人际压力感高

蓝皮书称,四线及以下城市除了交通和住房压力感低于一线、二线城市和整体平均水平,其他经济压力源也并非最低,收入、教育、医疗、健康、赡养老人、工作学业压力接近全国整体平均水平,而在家庭与人际压力感上更是高于整体平均水平和二线、三线城市。

蓝皮书指出,即使有着较好的就业环境,一线城市也并非宜居城市,“逃离北上广”一度成为一种社会现象、一个热词和公众话题。

蓝皮书同时强调,但是四线及以下城市也可能并非理想中的宜居城市,逃离一线,返回小城市,工作机会少,做什么都需要靠关系,干事要“拼爹”成为对此现象最为形象的描述,身在异乡为异客,回到故乡仍为异客。(完) 查看全部

2016年12月12日,《社会心态蓝皮书:中国社会心态研究报告(2016)》在北京发布。汤琪 摄

中新网北京12月12日电(汤琪)逃离北上广后,一些人又选择逃回北上广,这是为何?12日发布的《社会心态蓝皮书)》给出了答案。

蓝皮书解释称,即使有着较好的就业环境,一线城市也并非宜居城市,但是四线及以下城市也可能并非理想中的宜居城市,逃离一线,返回小城市,工作机会少,做什么都需要靠关系,干事要“拼爹”成为对此现象最为形象的描述,身在异乡为异客,回到故乡仍为异客。

2016年12月12日,由中国社会科学院社会学研究所社会心理学研究中心及社会科学文献出版社共同举办的《社会心态蓝皮书:中国社会心态研究报告(2016)》发布会在北京举行。

北上广深经济压力源远高于其他城市

在蓝皮书《居民生活压力感:城市比较研究》一章中,调查结果显示,一线北上广深四大城市的经济压力源远远高于其他城市,最大生活压力源从高到低分别是物价、交通、收入、住房、教育、医疗、赡养老人、健康。

其中,就业压力感和二三线城市同水平,但低于四线及以下城市。

其他经济方面和家庭人际的压力感,一线城市均高居其他城市之上。

地区和城市群的生活压力感比较。图片来源:《社会心态蓝皮书:中国社会心态研究报告(2016)》。汤琪 摄

三线城市普遍宜居

调查结果显示,三线城市相较于一二线、四线及以下城市以及整体水平,在经济压力感、家庭人际压力感上均为最低,这和从社会环境、自然生态、基础设施、人口素质等方面分析城市竞争力的宜居城市结果一致,认为三线城市普遍宜居,而二线城市宜居欠佳。

调查将二线城市细分为二线发达、中等发达、发展较弱城市,再和三线城市比较后却可以看到,虽然二线发达城市在住房、交通和赡养老人三个与经济有关的压力感上高于三线城市,有较高的生活压力感,但在其他经济压力感上,特别是家庭和人际压力感上是低于三线城市的。

蓝皮书指出,二线发达城市包括的是经济发达的强省省会和计划单列市的8个城市,生活压力感在经济压力和家庭人际压力上均低于整体平均水平,也远远低于一线城市和三线城市,从生活压力感角度考虑,或许可以称之为宜居城市。



四线及以下城市家庭与人际压力感高

蓝皮书称,四线及以下城市除了交通和住房压力感低于一线、二线城市和整体平均水平,其他经济压力源也并非最低,收入、教育、医疗、健康、赡养老人、工作学业压力接近全国整体平均水平,而在家庭与人际压力感上更是高于整体平均水平和二线、三线城市。

蓝皮书指出,即使有着较好的就业环境,一线城市也并非宜居城市,“逃离北上广”一度成为一种社会现象、一个热词和公众话题。

蓝皮书同时强调,但是四线及以下城市也可能并非理想中的宜居城市,逃离一线,返回小城市,工作机会少,做什么都需要靠关系,干事要“拼爹”成为对此现象最为形象的描述,身在异乡为异客,回到故乡仍为异客。(完)

200多人“光猪跑” 零下6度“裸奔”

体育Harries 发表了文章 • 0 个评论 • 26 次浏览 • 2016-12-12 21:55 • 来自相关话题

12月10日上午,一场主题为“回归自然,绿色‘光猪跑’”比赛在青龙古镇内举行。 查看全部

12月10日上午,一场主题为“回归自然,绿色‘光猪跑’”比赛在青龙古镇内举行。

简洁常用权限系统的设计与实现(四):不维护level,用递归方式构造树

IT互联网Harries 发表了文章 • 0 个评论 • 39 次浏览 • 2016-12-05 16:37 • 来自相关话题

好处是:不维护节点的深度level,增加和修改节点时,也不用维护。递归实现,代码比较清晰。
坏处是:节点较多的时候,性能可能不够好。不能直接查询到节点的深度level。当然,如果需要level字段,在递归过程中,是可以计算得到的。关于在递归过程中,计算level,后面有介绍这种方法。
关于树的遍历和查找,大家都有基础,上面描述了一些总体思路,代码中有注释,基本就不用再详细介绍了。
 public static List<Map<String, Object>> buildTree(  
  
            List<Map<String, Object>> list) {  
  
        //目标树  
  
        List<Map<String, Object>> treeList = new ArrayList<Map<String, Object>>();  
  
        //所有的顶级节点  
  
        List<Map<String, Object>> rootList = TreeMenuUtil.findTopLevelNodeList(list);  
  
        //所有的非顶级节点  
  
        List<Map<String, Object>> notRootList = TreeMenuUtil.findNotRootList(list);  
  
        //遍历顶级节点  
  
        for (Map<String, Object> root : rootList) {  
  
            // 构造子结点  
  
            buildChildList(root, notRootList);  
  
            //把根节点放到集合中  
  
            treeList.add(root);  
  
        }  
  
        return treeList;  
  
    }  
  
    // 为一个“root节点,这个地方的root指