首页 文章 精选 留言 我的

精选列表

搜索[orm框架],共10000篇文章
优秀的个人博客,低调大师

MapReduce框架Partitioner分区方法

前言:对于二次排序相信大家也是似懂非懂,我也是一样,对其中的很多方法都不理解诶,所有只有暂时放在一边,当你接触到其他的函数,你知道的越多时你对二次排序的理解也就更深入了,同时建议大家对wordcount的流程好好分析一下,要真正的知道每一步都是干什么的。 1.Partitioner分区类的作用是什么?2.getPartition()三个参数分别是什么?3.numReduceTasks指的是设置的Reducer任务数量,默认值是是多少?扩展:如果不同类型的数据被分配到了同一个分区,输出的数据是否还是有序的? 在进行MapReduce计算时,有时候需要把最终的输出数据分到不同的文件中,比如按照省份划分的话,需要把同一省份的数据放到一个文件中;按照性别划分的话,需要把同一性别的数据放到一个文件中。我们知道最终的输出数据是来自于Reducer任务。那么,如果要得到多个文件,意味着有同样数量的Reducer任务在运行。Reducer任务的数据来自于Mapper任务,也就说Mapper任务要划分数据,对于不同的数据分配给不同的Reducer任务运行。Mapper任务划分数据的过程就称作Partition。负责实现划分数据的类称作Partitioner。 Partitoner类的源码如下: package org.apache.hadoop.mapreduce.lib.partition; import org.apache.hadoop.mapreduce.Partitioner; /** Partition keys by their {@link Object#hashCode()}. */ public class HashPartitioner<K, V> extends Partitioner<K, V> { /** Use {@link Object#hashCode()} to partition. */ public int getPartition(K key, V value, int numReduceTasks) { //默认使用key的hash值与上int的最大值,避免出现数据溢出 的情况 return (key.hashCode() & Integer.MAX_VALUE) % numReduceTasks; } } HashPartitioner是处理Mapper任务输出的,getPartition()方法有三个形参,源码中key、value分别指的是Mapper任务的输出,numReduceTasks指的是设置的Reducer任务数量,默认值是1。那么任何整数与1相除的余数肯定是0。也就是说getPartition(…)方法的返回值总是0。也就是Mapper任务的输出总是送给一个Reducer任务,最终只能输出到一个文件中。 据此分析,如果想要最终输出到多个文件中,在Mapper任务中对数据应该划分到多个区中。那么,我们只需要按照一定的规则让getPartition(…)方法的返回值是0,1,2,3…即可。 大部分情况下,我们都会使用默认的分区函数,但有时我们又有一些,特殊的需求,而需要定制Partition来完成我们的业务,案例如下: 对如下数据,按字符串的长度分区,长度为1的放在一个,2的一个,3的各一个。 河南省;1 河南;2 中国;3 中国人;4 大;1 小;3 中;11 这时候,我们使用默认的分区函数,就不行了,所以需要我们定制自己的Partition,首先分析下,我们需要3个分区输出,所以在设置reduce的个数时,一定要设置为3,其次在partition里,进行分区时,要根据长度具体分区,而不是根据字符串的hash码来分区。核心代码如下: public static class PPartition extends Partitioner<Text, Text>{ @Override public int getPartition(Text arg0, Text arg1, int arg2) { /** * 自定义分区,实现长度不同的字符串,分到不同的reduce里面 * * 现在只有3个长度的字符串,所以可以把reduce的个数设置为3 * 有几个分区,就设置为几 * */ String key=arg0.toString(); if(key.length()==1){ return 1%arg2; }else if(key.length()==2){ return 2%arg2; }else if(key.length()==3){ return 3%arg2; } return 0; } } 在运行Mapreduce程序时,只需在主函数里加入如下两行代码即可: job.setPartitionerClass(PPartition.class); job.setNumReduceTasks(3);//设置为3

优秀的个人博客,低调大师

产品经理能力框架图

【大咖・来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》 点击下载高清大图(图片来源:天下网商) 随着行业发展,产品经理这个群体在IT行业也越来越受到关注,各种产品交流学习组织蓬勃兴起,作为其中的一员,一直以来就想写写自己对于产品经理这一角色的认识。 俗话说,一个成功的男人身后必然有一个默默的女人,那么一款产品背后是否也有一位潜心学习不断专研的产品经理呢?答案是肯定的,而且经常性的还不只是一位产品经理在支持着一款成功的产品。 业内对于产品经理能力模型的归纳也并不鲜见,因此我只是从个人理解的层面去讲述这些能力,我个人主要倾向于把产品经理能力分为两大部分:A、产品能力;B、管理能力。 A、产品能力 一、工具性能力 产品经理对产品负责,相应的产品能力必须是首要的能力,而在这些具体的素质里面,工具性能力又堪称基础性能力,在一个产品策划的生命周期里面,最常见的工具一般有以下几种:word、ppt、mindmanager、visio、axure、excel。 1、Word、excel和ppt,产品经理在策划一款产品的过程中,往往需要同多部门进行沟通协调,于是撰写文档以提高沟通效率便成为一项重要能力,无论是撰写产品需求文档还是市场需求文档、分析后期统计数据都需要熟练使用office系列文件。 2、Mindmanager,作为常用的头脑风暴软件,mindmanager便于产品经理更好的梳理产品管理和逻辑,对于理清产品思路具有重要意义,特别是在绘制产品roadmap其方便快捷的操作可以让产品经理绘制出结构和逻辑性都较好的展示图表。 3、Visio,visio作为一款优秀的流程软件,对于产品经理梳理产品内在逻辑和用户操作流程具有重要意义,特别是在产品文档撰写过程 中,visio绘制的用户操作流程图可以帮助工程师更好理解产品逻辑从而实施产品开发。Visio丰富的插件还可以用户绘制ueser case,方便产品项目组人员更好的理解用户,从而指导产品设计。 4、Axure,近年来axure凭借其优秀和交互能力和良好的操作性开始逐渐取代visio用于原型绘制,原型绘制作为产品设计的重要一环使得axure的使用能力也成为产品经理的标配能力之一。 二、产品感 “产品感”,一词来源于前辈郭子威,***次看到这个词的时候我就眼睛一亮,当时看到的想法就是:bingo,这个词才是我心中产品经理需要的核心能 力、一个优秀的产品经理必须对于产品敏感,而这种敏感性就来源于良好的产品感。产品经理是一个综合性角色,即需要有开阔的视野,又必须时刻关注细节,而这 些都包含在产品感里面。 a、规划力 这是一个产品经理较高层面上的能力,而具备这种能力的产品经理,通常会具备很多思想家的特质。从产品外部体系上,规划力代表了产品经理对整个价值市场的认 同,对企业产品线的布局,对自身产品的定位以及对每一款产品的发展思路。当然,对于大部分产品经理而言,战略层面的东西可能还接触不到,特别是对于大型公 司,决策层对于战略的考虑会大大多于产品经理,而产品经理在这样的情况下对于战略的执行多于对战略的思考。 b、设计力 这里所说的设计能力并不单指对于产品原型的设计,而更大不一部分在于是否能够根据公司战略及用户需求找到***的契合度,规划出即满足公司商业需求又符合市场定位和用户需求的能力。包括产品远景规划和近期的功能规划都属于设计力的范畴。 三、商业感 一个优秀的产品经理必须具有关注整个宏观市场环境的视野和能力,虽然在现实中大部分产品经理依旧在做执行层面的很多问题,对于大环境的关注可能在产 品总监或更高领导层面。但是对于一个产品经理的长期成长而言,对于整个大市场环境的关注不但可以使产品经理具有更好的产品视野,也会让产品经理在产品设计 的过程中更加敏锐,可以更好的对于产品远景规划作出正确的判断。 B、管理能力 一、自我管理能力 如果用足球比喻产品各个环节的职务角色,产品经理应该是最适合的中场球员,在一场球赛中,中场对于组织进攻,协调防守都具有核心意义。产品经理作为 一个协调性角色,对于前方需要协调包括BD、市场、销售在内的各个角色,对于后方又要组织协调好UED、程序等,另外还必须承受来自于用户的指责和质疑, 面临的压力可想而知。因此从个人素质上讲一个善于调节情绪,能够自我释放的产品经理才能经的起考验。 二、时间管理能力 产品经理在整个产品生命周期中都扮演者核心角色,并且由于时刻需要针对不同需求去协调不同的部门,产品经理总是最活跃产品角色,既要处理外部问题又 要时刻紧盯产品的设计,是否具有良好工作安排协调能力对于产品经理正常完成工作具有重要意义,产品经理最怕跟各部门陷入无休止的扯皮而疲于顾及产品的核心 设计工作。 三、知识管理能力 日新月异对于互联网行业来说是***的形容,如果你不关注市场,关注新技术,说不定某天起床的时候你就会发现自己已经跟不上时代的需求。而良好的学习 能力对于产品经理而言将是保持创新活力的基础,面对不断的新技术、新产品产品经理不能目瞪口呆,而应觉得理所当然;其次产品经理本身是综合性角色,对于市 场研究、用户调研、产品策划、开发技术、品牌管理、项目管理、心理学、设计科学都必须有所涉猎。只有具有综合的能力,才能立于各部门的沟通中游刃有余。 四、产品管理能力 产品经理必须对整个产品生命周期负责,从前期产品策划中协调各种资源进行开发设计开发,跟进产品上线。到产品上线后的运营推广,产品经理都必须予以 关注,以便协调不同的部门安排工作。同事在运营中对于来自各方需求以及市场的新变化都必须时刻关注以便安排产品的迭代更新。产品经理对于一款产品来说就是 既当爹又当妈。 五、团队管理能力 1、沟通能力 产品经理对于需求的实现都必须依赖技术和UED部门进行,因此良好的无授权领导力成为是否完成工作的主要条件,因此产品经理必须是一个活力角色,只有这样才能调动各部门投入产品设计和开发,从而形成一个核心的产品项目团队,产品经理不能孤军奋战。 2、执行能力 产品经理的执行能力不但指个人范围内的工作情况,也包括协调程序、UED部门投入工作的能力,当然这一点又必须依赖于良好的沟通能力。 3、另外产品经理也必须肩负一定的产品团队培养能力,使得产品梯队具有良性的接力效应,从而必须人才青黄不接,导致项目不能正常完成。 来源:http://www.minijuly.com/?p=830

优秀的个人博客,低调大师

别再 mybatis 了,融合 JPA 和超强查询的 sqltoy-orm 5.6.13 发版,强化租户隔离场景

开源地址: github:https://github.com/sagframe/sagacity-sqltoy gitee:https://gitee.com/sagacity/sagacity-sqltoy idea 插件 (可直接在 idea 中检索安装):https://github.com/imyuyu/sqltoy-idea-plugin sqltoy 脚手架项目:https://gitee.com/momoljw/sss-rbac-admin sqltoy lambda 项目:https://gitee.com/gzghde/sqltoy-plus 更新内容 1、优化多租户隔离在saveOrUpdate场景下,sql语句是merge into on () update set ,当在on里面增加了租户条件,update中就不能对该字段进行修改 JPA 部分 类似 JPA 的对象化 CRUD、对象级联加载和新增、更新 支持通过 POJO 生成 DDL 以及直接向数据库创建表 强化 update 操作,提供弹性字段修改能力,不同于 hibernate 先 load 后修改,而是一次数据库交互完成修改,确保了高并发场景下数据的准确性 改进了级联修改,提供了先删除或者先置无效,再覆盖的操作选项 增加了 updateFetch、updateSaveFetch 功能,强化针对强事务高并发场景的处理,类似库存台账、资金台账,实现一次数据库交互,完成锁查询、不存在则插入、存在则修改,并返回修改后的结果 增加了树结构封装,便于统一不同数据库树型结构数据的递归查询 支持分库分表、支持多种主键策略 (额外支持基于 redis 的产生特定规则的业务主键)、加密存储、数据版本校验 提供了公共属性赋值 (创建人、修改人、创建时间、修改时间、租户)、扩展类型处理等 提供了多租户统一过滤和赋值、提供了数据权限参数带入和越权校验 查询部分 极为直观的 sql 编写方式,便于从客户端 <--> 代码 双向快速迁移,便于后期变更维护 支持缓存翻译、反向缓存匹配 key 代替 like 模糊查询 提供了跨数据库支持能力:不同数据库的函数自动转换适配,多方言 sql 根据实际环境自动匹配、多数据库同步测试,大幅提升了产品化能力 提供了取 top 记录、随机记录等特殊场景的查询功能 提供了最强大的分页查询机制:1) 自动优化 count 语句;2) 提供基于缓存的分页优化,避免每次都执行 count 查询;3) 提供了独具特色的快速分页;4) 提供了并行分页 提供了分库分表能力 提供了在管理类项目中极为价值的:分组汇总计算、行列转换 (行转列、列转行)、同比环比、树形排序、树形汇总 相关算法自然集成 提供了基于查询的层次化数据结构封装 提供了大量辅助功能:数据脱敏、格式化、条件参数预处理等 支持多种数据库 常规的 mysql、oracle、db2、postgresql、 sqlserver、dm、kingbase、sqlite、h2、 oceanBase、polardb、guassdb、tidb 支持分布式 olap 数据库: clickhouse、StarRocks、greenplum、impala (kudu) 支持 elasticsearch、mongodb 所有基于 sql 和 jdbc 各类数据库查询 sqltoy 特点介绍: sqltoy 的核心构建思想 sqltoy 的对比 mybatis (plus) 的核心点:查询语句编写、可阅读性、可维护性 对象化 crud 是基础,但 sqltoy 有针对性的改进:update、updateSaveFetch、updateFetch 等 sqltoy 的缓存翻译,大幅减少表关联简化 sql,让你的查询性能成几何级提升 极致的分页,同样帮助你实现查询的性能大幅提升 快速分页:@fast () 实现先取单页数据然后再关联查询,极大提升速度 分页优化器:page-optimize 让分页查询由两次变成 1.3~1.5 次 (用缓存实现相同查询条件的总记录数量在一定周期内无需重复查询 sqltoy 的分页取总记录的过程不是简单的 select count (1) from (原始 sql);而是智能判断是否变成:select count (1) from 'from 后语句 ', 并自动剔除最外层的 order by sqltoy 支持并行查询:parallel="true",同时查询总记录数和单页数据,大幅提升性能 便利的跨数据库统计计算:数据旋转 便利的跨数据库统计计算:无限极分组统计 (含汇总求平均) 便利的跨数据库统计计算:同比环比 5、树形表排序汇总 6、扩展集成

优秀的个人博客,低调大师

MyBatis 的替代者,融合 JPA 和极致 SQL 编写模式的 sqltoy-orm 5.2.58 发版

开源地址: github:https://github.com/sagframe/sagacity-sqltoy gitee:https://gitee.com/sagacity/sagacity-sqltoy idea 插件 (可直接在 idea 中检索安装):https://github.com/threefish/sqltoy-idea-plugins sqltoy脚手架项目:https://gitee.com/momoljw/sss-rbac-admin sqltoy lambda项目:https://gitee.com/gzghde/sqltoy-plus 更新内容 1、存更新检测增加空缓存校验,避免内部异常(不影响实际功能)2、增加部分异常堆栈输出,便于一些异常原因分析 sqltoy 的关键优势: //------------------了解 sqltoy的关键优势: -------------------------------------------------------------------------------------------*/ //1、最简最直观的sql编写方式(不仅仅是查询语句),采用条件参数前置处理规整法,让sql语句部分跟客户端保持高度一致 //2、sql中支持注释(规避了对hint特性的影响,知道hint吗?搜oracle hint),和动态更新加载,便于开发和后期维护整个过程的管理 //3、支持缓存翻译和反向缓存条件检索(通过缓存将名称匹配成精确的key),实现sql简化和性能大幅提升 //4、支持快速分页和分页优化功能,实现分页最高级别的优化,同时还考虑到了cte多个with as情况下的优化支持 //5、支持并行查询 //6、根本杜绝sql注入问题 //7、支持行列转换、分组汇总求平均、同比环比计算,在于用算法解决复杂sql,同时也解决了sql跨数据库问题 //8、支持保留字自动适配 //9、支持跨数据库函数自适配,从而非常有利于一套代码适应多种数据库便于产品化,比如oracle的nvl,当sql在mysql环境执行时自动替换为ifnull //10、支持分库分表 //11、提供了取top、取random记录、树形表结构构造和递归查询支持、updateFetch单次交互完成修改和查询等实用的功能 //12、sqltoy的update、save、saveAll、load 等crud操作规避了jpa的缺陷,参见update(entity,String...forceUpdateProps)和updateFetch //13、提供了极为人性化的条件处理:排它性条件、日期条件加减和提取月末月初处理等 //14、提供了查询结果日期、数字格式化、安全脱敏处理,让复杂的事情变得简单,大幅简化sql或结果的二次处理工作 //-----------------------------------------------------------------------------------*/ sqltoy 特点介绍: sqltoy 的核心构建思想 sqltoy 的对比 mybatis (plus) 的核心点:查询语句编写、可阅读性、可维护性 对象化 crud 是基础,但 sqltoy 有针对性的改进:update、updateSaveFetch、updateFetch 等 sqltoy 的缓存翻译,大幅减少表关联简化 sql,让你的查询性能成几何级提升 极致的分页,同样帮助你实现查询的性能大幅提升 快速分页:@fast () 实现先取单页数据然后再关联查询,极大提升速度 分页优化器:page-optimize 让分页查询由两次变成 1.3~1.5 次 (用缓存实现相同查询条件的总记录数量在一定周期内无需重复查询 sqltoy 的分页取总记录的过程不是简单的 select count (1) from (原始 sql);而是智能判断是否变成:select count (1) from 'from 后语句 ', 并自动剔除最外层的 order by sqltoy 支持并行查询:parallel="true",同时查询总记录数和单页数据,大幅提升性能 便利的跨数据库统计计算:数据旋转 便利的跨数据库统计计算:无限极分组统计 (含汇总求平均) 便利的跨数据库统计计算:同比环比 5、树形表排序汇总 6、扩展集成

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册