自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

。。。。。

记录在编程过程中的重点,难点,疑点,趣点

  • 博客(64)
  • 资源 (7)
  • 收藏
  • 关注

原创 初识Ranger用户权限管理

1:什么是Ranger提供一个可以在hadoop平台对安全策略进行集中管理、配置、访问的框架。2:Ranger支持的框架HadoopHiveHbaseKafka3:Ranger的架构Ranger Admin:主模版,web与权限配置功能DB:一般用mysql作db,存放策略相关数据WEBUI:通过操作网页,配置相关策略RESTAPI:通过URL的方式指定资源的位置、请求方式、操作类型来配置用户策略Solr:图形数据,数据量少Plugins:通过插.

2021-04-30 17:46:50 1352 1

原创 数仓建模的思路步骤

背景通过最近的学习与工作总结,针对不同层级的数仓建模特点,记录数仓建模实战中的一些思路与步骤。涉及到的数仓分层有:ODS层、DWD层、DWS层/DWT层、ADS层,其中ODS层属于业务数据库贴源层,存放的数据与业务系统源表保持一致,所以此处不做讲解。DWD层建模思路与步骤dwd层是以业务过程为驱动进行建模,dwd层需要构建维度模型,采用星型模型构建,呈现的形态为星座模型。dwd层建模步骤选择业务过程->声明粒度->确认维度->确认事实选择业务过程如何选择业务过程

2021-03-29 19:21:27 2101

原创 初识Spark

什么是SparkSpark是基于内存计算的大数据并行运行的计算框架,提高了大数据环境下数据处理的实时性Spark特点Spark可以部署到Yarn上Spark可以访问Hadoop中Hdfs文件Spark是基于Scala语言编写的SparkSQLSparkSQL是Spark生态中的一员,作用类似与HiveSparkSQL的两个组件SQLContext:Spark Sql提供SQLContext封装Spark中所有关系性功能DataFrame:DataFrame是一个分布式

2021-03-20 13:41:19 149

原创 初识Hive

HiveSQL是一种类似于SQL语言的工具,作为海量数据分析的SQL查询引擎,因相对简单易上手,被越来越多的人使用与喜爱,比如我们常见的数据分析师、BI报表工程师、数仓工程师等岗位,这些岗位的同事们基本上都是HiveSQL的粉丝(包括我也是)。下面就大概记录一下自己对HiveSQL的认识。理解Hive基于Hadoop的数据仓库工具,对MapReduce的一个封装,底层就是MapReduce程序,HiveSql替代了复杂的MapReduce程序 将Hdfs中的结构化数据映射为一张虚表,并提供sql.

2021-03-20 13:21:51 123

原创 理解Hadoop

前言Hadoop这个生态圈,被越来越多的人熟悉与使用。离线数仓的建设更离不开Hadoop生态圈相关组件的支持,因此打算从三个方面简单梳理Hadoop,这三个方面分别是Hadoop是什么?Hadoop能干什么?Hadoop如何用?Hadoop是什么Hadoop是一个存储与分析海量数据的工具Hadoop核心部件Hdfs:分布式文件存储系统,负责分布式文件的存储与读取。hdfs中包含两个部分namenode与datanode,namenode负责存放元数据信息,datanode负责存放实际..

2021-03-20 12:06:29 161

原创 数仓建模

维度建模的基本概念维度建模是专门用于分析性数据库、数据仓库、数据集市的建模方法。与传统的关系性建模方法相比它增加了“维度表”与“事实表”两个概念。维度表表示对分析主题所属类型的描述。如:上周天我在天猫花费了200元购买了一副蓝牙耳机,那么以购买主题进行分析,我们可以提取出三个维度:时间维度(上周天)、地点维度(天猫)、商品维度(蓝牙耳机)。通常来说维度表比较固定,数据量比较少。事实表表示对分析主题的度量。如:上面那个例子中200元就是一个事实信息。事实表中不久包含了度量信息(实表的度量通

2021-03-06 12:13:05 184

原创 数据仓库分层

数仓分层的作用清晰数据结构每个数据分层都有对应的作用域与职责,在使用不同层级表的时候能更方面理解减少重复开发规范数据分层,通过开发一些通用的数据中间层,极大的减少了开发统一数据口径通过数据分层,提供统一的数据出口,统一对外输出的数据口径复杂的问题简单化将一个复杂任务拆解为多个步骤来完成,每个步骤解决特定的问题数仓通用分层设计数据运营层(ods)存放的是接入的原始数据,不会把不同的业务系统数据聚合在一起,几乎不会做任何数据清洗的工作数据仓库层(dw)数据明细层(dwd)

2021-02-25 15:49:03 159

原创 什么是数仓

什么是数据仓库?数据仓库全称为Data Warehouse,简称DW。它是面向主题的,集成的,相对稳定的,反映历史变化的数据存储集合,用于支撑企业的分析报告与决策。数仓的输入与输出数仓的几个特定是什么?主题性将不同数据源的数据在一个较高抽象层次上做整合,数据围绕某一主题进行汇总,如电商主题有:订单、流量、商品、用户等。集成性数仓中的数据来源于不同数据源的集成(如:tob业务系统数据源,toc业务系统数据源,erp业务系统数据源),且这些数据源的存储方式可能不同(如:mys...

2021-02-25 07:21:12 14513

原创 归纳POI对EXCEL2007版本及以上的常见操作

通过指定列头集合创建EXCEL模板(初始化EXCEL模板为文本格式) /** * 根据列头创建Excel模板 * * @param headList * @return */ public static XSSFWorkbook createWorkBook(List<String> headList) { X...

2020-01-14 14:28:48 688

原创 定时器-Timer

Timer的使用public class MyTimer extends TimerTask { private Logger logger = LoggerFactory.getLogger(MyTimer.class); private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");...

2019-11-23 22:10:28 110

原创 解决分布式事务中数据不一致性导致业务异常

背景第三方电商抓取订单后需要把订单下传到仓库,这样仓库那边才能正常发货。第三方电商取消订单后;如果当前订单已经下传仓库,则需要向仓库发起订单拦截指令;如果没有下传仓库,则直接取消订单。业务异常:订单取消成功但仓库却把订单中的商品发送了出去第三方电商对应的服务为:xdt.service下传仓库服务为:dip.service项目采用dubbo分布式架构订单下传与取消流转图订单下传流转图...

2019-08-29 13:21:10 974

原创 Hibernate中的并发控制

场景:对增加销售占用的接口服务做并发单元测试商品库存PO:@Data@Entity@Table(name = "product_sale_stock")public class ProductSaleStockPo { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; ...

2019-07-17 10:44:35 103

原创 Hibernate中executeUpdate的缓存问题

业务场景在单据处理服务中需要处理以下业务逻辑:1:修改product_sale_stock中商品在对应仓库的实物库存stock与销售占用sales2:修改pss_total_stock中商品的总可用库存availableQuantity3:product_sale_stock与pss_total_stock需要保持数据的完整性代码实现 @Override public vo...

2019-06-26 17:13:51 937

原创 Maven Scope

官方网站:https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_ManagementCompile:默认就是compile. Compile表示当前依赖在编译/测试/运行这三种classpaths下都有效,是一个比较强的依赖。Provided:pro...

2019-06-09 10:33:03 925

原创 事务传播行为

业务场景:在交易单创建service服务中,要求交易单创建失败,会保存创建失败日志,发现始终无法保存创建失败日志。伪代码:@Service("xdtTradeOperatorService")@Transactional(rollbackFor = Exception.class)public class XdtTradeOperatorServiceImpl implements Xd...

2019-05-21 16:46:45 120

原创 总结日常开发注意事项

公司的框架结构为:前后端分离,controller通过dubbo方式调用注册中心的服务以下为我在日常开发中的深刻体验完成service服务后一定要写单元测试完成controller接口后一定要模拟接口请求,查看接口是否请求成功(如采用postman,yapi等工具进行模拟测试)在项目开发期间无论时间怎么紧凑,知识每天花半个小时的时间认真解决在开发的遇到的问题如果无法在规定的时间...

2019-05-06 21:25:55 398

原创 工作总结-学习新事物1

背景这周领导让我评估两个在线文档生成的技术方案(swagger2 vs spring rest doc)。描述与分析每日做的事情周一:大概用了一下午的时间去看官网上spring restful相关的文档方案结论:没有抓住工作中心,了解的是一些边缘的内容周二:编写了一个swagger2 demo,同时去swagger2的官网上看了相关文档,但几乎都没有怎么看进去结论:方向对了,但忽视...

2019-03-16 13:36:54 397

原创 配置日志基本概念

日志级别的区别(debug/info/warn/error)Error: 程序出错或者有未正常处理的异常,需要及时处理Warm: 关注日志信息,看看后面是否正常,如数据库连接出错,如果数据库一直连接出错,那么需要处理;如果数据库只是偶尔出现连接错误,那么可以暂时不做处理Info: 打印程序应该出现的正常状态信息,便于追踪定位Debug: 不重要,一般调试某个功能的时候才会关注编写log4...

2019-02-28 11:18:04 217

原创 BeanUtils.copyProperties方法复制不同对象间的属性值

1:以下两个不同的包都存在BeanUitls.copyProperties方法org.springframework.beans.BeanUtils.copyProperties(Object source, Object target) throws BeansExceptionorg.apache.commons.beanutils.BeanUtils.copyProperties(Obj...

2019-02-12 14:34:40 15393

原创 Xms Xmx PermSize MaxPermSize的区别

1.参数的含义vmargs -Xms 128M -Xmx 512M -XX:PermSize=64M -XX:MaxPermSize=128M-vmargs 代表后面是设置jvm的参数-Xms 128M JVM设置最小分配的堆内存-Xmx 512M JVM允许最大分配的堆内存,按需分配-XX:PermSize=64M JVM设置分配最小的非堆内存-XX:MaxPermSize=...

2019-02-12 10:25:28 1915

原创 OOP编程 VS AOP编程

业务描述:实现登录系统执行操作之前和之后输出声明式日志信息的功能采用OOP编程方式实现业务逻辑伪代码 public class OutPutLogging { public void doLogin() { beginLogin(); //模拟用户登录操作 logging("======用户登录======"); ...

2019-01-09 16:44:56 271

原创 AOP的相关基础概念

AOP与OOP的关系OOP为面向对象编程,通过封装、继承、多态三大特性,大大提高了代码的可重用性,OOP是一种面向对象的程序设计模式。但如果我们要在多个不具有继承关系的多个类之间的某些方法中引入相同的业务逻辑比如打印日志,这时候OOP就显得无能为力了。即使使用了继承的方式实现了代码的重用,但依然需要把日志代码分散在不同的方法中,这就造成了代码重复度高以及代码的可维护性差。针对这种情况引入了面向切...

2019-01-09 11:24:16 1404

原创 redis.clients.jedis.exceptions.JedisDataException: ERR hash value is not an integer

业务场景https://blog.csdn.net/qq_31071543/article/details/84752778推测抛出异常的原因第一次访问接口时通过void setEntryInHash(String key,String field,String vlaue)方法在redis中存放用户访问当前接口的次数为1,此时不会抛出异常,通过redis命令查看存放的数据为field为:...

2018-12-21 10:44:29 3439

原创 redis-限制用户每天访问不同接口的次数

业务需求限制每个用户每天访问不同接口的次数,如:每个承运商每天只能根据运单号查询客户信息50次,每个承运商每天只能根据运单号查询商品信息30次。方案选择Redis是一个key-value存储系统,存放的value类型相对较多包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型),同时redis具有时效性,所以...

2018-12-03 11:04:58 2853

原创 单点登录二

这篇文章主要是针对单点登录一中的框架结构进行对应的改造与优化,具体的改造优化主要包括以下几点:整合分布式服务框架dubbo改造前:通过HttpClient方式发送http请求到认证中心改造后:通过dubbo微服务方式暴露认证中心接口服务把oa与pro系统的拦截器提取出来子系统中拦截器的实现逻辑基本相同,提取出来根据方便维护管理,同时也减少了代码的冗余。提取代码中常量的配置,...

2018-11-20 16:46:02 107

原创 单点登录一

单点登录是什么 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统,即用户只需要记住一组用户名和密码就可以登录所有有权限的系统。如下为一个单点登录的简易图解: 当用户第一次访问应用系统1时,需要进行用户登录,认证中心通过了用户的登录信息后会返回用户凭证ticke...

2018-10-23 16:55:44 218

原创 JPA实体注解

JPA实体注解用例项目地址https://github.com/lx-sunday/springboot-jpa.git参考博客:http://blog.sina.com.cn/s/blog_49fd52cf0100scql.htmlManyToOne关系的拥有方(即Many的一方)负责关系的维护,在拥有方建立外键会用到JoinColumn。列举使用ManyToOne进行实体注解,如创建...

2018-09-29 09:58:16 226

原创 通过POI设置Excel级联导出

1:如何通过Excel设置数据级联(包括一级级联、二级级联以及多级级联)我希望填写者能够按照固定的模式填写性别、省、市,而且市这一列填写内容必须随着省这一列发生动态改变。Step1: 在当前excel中新建一个sheet,依次填写对应列的固定模式(此处性别这一列对应的固定模式为男/女,省这一列对应的固定模式为四川省/广西省,四川省对应的市有成都/眉山,广西省对应的市有河池/北海),通过ctr...

2018-09-27 13:16:42 1544

原创 Filter过滤器基础

一:Filter简介 Filter被称为过滤器,web开发人员通过Filter技术,可以对web服务器管理的所有web资源进行拦截如:对JSP、servlet、静态图片、静态HTML等,从而实现一些特殊功能。常见的filter应用有:图片的压缩响应、统一前后端字符编码格式、敏感词汇过滤等。 ServletAPI提供了Filter接口,创建一个类实现Filter接口,则把这个java类称之为过滤...

2018-08-14 17:06:47 210

原创 Maven mirrorOf配置

问题描述: 今天在公司准备搭建一个springboot+activiti的框架,通过pom.xml中引入相关依赖,发现activiti相关的依赖始终无法下载。在中央仓库查找发现这个依赖也存在啊,于是就想到可能是.m2/setting.xml中mirror配置出现的原因。本地.m2/setting.xml的配置如下:&amp;lt;mirror&amp;gt;&amp;lt;id&amp;gt;public&amp;l...

2018-08-10 15:43:32 60334 10

原创 Dubbo入门

Dubbo是什么分布式服务框架 高性能与透明化的RPC远程服务调用方案 SOA服务治理方案Dubbo架构 Provider:暴露服务的服务提供商 Consumer:调用远程服务的消费方 Registry:服务注册与发现服务中心 Monitor:统计服务调用次数与调用时间的监测中心 调用流程: 0:服务容器启动,加载,运行服务提供者 1:服务提供者启动后,向注册中心...

2018-08-03 15:04:07 173

原创 HttpServletRequest

HttpServletResponse是什么?HttpServletResponse代表客服端的请求,客服端通过HTTP协议请求访问服务端,HttpServletResponse封装了所有HTTP请求头信息,通过调用HttpServletResponse对象的不同方法来获取所有客服端请求信息。一:Request常用方法1.1:获取客服机信息 getQueryString():返...

2018-07-26 16:29:36 141

原创 HttpServletResponse

一:HttpServletResponse对象介绍HttpServletResponse为server发送给client的响应,这个对象封装了响应状态、响应数据、响应头等信息。 1:向client发送响应数据的相关方法ServletOutputStream getOutputStream() return a ServletOutputStream for writing bin...

2018-07-24 15:38:42 108

原创 Lock wait timeout exceeded; try restarting transaction

问题描述 在带有事物的service层中authAssignPkg()方法用于处理多个操作,其中一个操作就是this.dao.batchSave(),batchSave()方法中又重新开启与提交事物。当在Action层中直接调用authAssignPkg()方法,通过控制台打印的信息会发现,authAssignPkg()方法中this.dao.batchSave()执行的时间特别长,最后控制...

2018-07-17 10:54:59 369

原创 Servlet使用总结专题

1:Servlet简介Servlet是一种运行于服务器端的java应用程序。通过创建一个java类,然后实现servlet接口就可以生成一个servlet。 ServletAPI包括:javax.servlet.* 主要包括所有servle实现的基本接口以及继承的基本类。java.servlet.http.*包含了编写基于HTTP协议的servlet所需基类。Servlet生命...

2018-07-03 11:14:20 164

原创 HTTP协议

1:什么是HTTP协议HTTP是hypertext transfer protocal(超文本传输协议)的简写,是定义在TCP/IP应用层的一种协议。Web客户端向web服务端发送请求并获取响应,在这个过程中就是采用HTTP协议的方式进行数据的传递。HTTP协议的主要特点可以概括如下:支持客服/服务器模式简单快速:客服端向服务端发送请求的时候,只需要传送请求方式+请求路径。由于HTTP...

2018-06-29 11:37:43 239

原创 前言

虽然已经做JavaWeb开发有两年的时间,但开发中几乎很少涉及关于底层知识的运用,渐渐的感觉自己对这些底层知识已经越来越模糊。越来越多的新技术出现在我们的开发中,每当我想要去深入了解某个框架结构的时候,却发现自己处在空中楼阁一一般。对现在的我来说,这些底层基础知识的学习与巩固已经迫在眉睫,在接下来的博客中我将会梳理这方面的知识点。在这个过程中我借鉴了孤傲苍狼的博客并结合自己的实际开发进行总结,所以...

2018-06-29 11:10:32 146

原创 Java异常抛出专题

前言对于编译性异常我们必须捕获或者抛出 ,否则程序无法编译成功,对于非编译性异常(运行时异常),这类异常可以编译成功但在运行的时候可能就会发生异常,常见的运行时异常主要有:ClassCastException、IndexOutOfBoundsException、NullPointerException、ArrayStoreException等,这类异常一般是程序逻辑错误引起的,在编写代码的时候...

2018-06-28 14:12:12 1605

原创 eclipse工作空间中编码乱码问题专题

问题描述: 从一个eclipse工作空间复制java文件到另一个eclipse工作空间中,复制后的java文件出现中文乱码 分析产生问题的原因: 查看两个工作空间java文件的编码方式得到:第一个工作空间的编码方式为GBK,第二个工作空间的编码方式为UTF-8。由此推测由于文件的编码方式不同导致的乱码问题。 解决方案: 1:直接把第二个工作空间中乱码的java文件编码方式改为G...

2018-06-22 16:19:32 902

原创 Java泛型专题

Java中泛型类型理解 1:不使用泛型类:class Test1{}Test1 in1=new Test1(new Integer(81));Integer i1 = (Integer)in1.getObj(); //此处需要强制转换System.out.println(in1.getObj().getClass().getName()+":"+i1);2:使用泛型类:Clas...

2018-06-22 14:59:19 107

限制承运商访问接口次数流程图

通过流程图分析如何实现限制用户在有效期内访问某个接口的次数

2018-12-03

导出级联Excel代码

通过poi实现Excel模版级联导出,这个项目为简单的一个maven工程,在ImportExcelDemo这个类中通过Junit测试功能。

2018-09-27

dubbo-demo2

1: 提供dubbo-user-provider服务 2: 这个服务被前一个资源dubbo-demo1中的消费者调用

2018-08-02

dubbo实现demo

1:dubbo-provider服务提供者 2:dubbo-consumer服务消费者

2018-08-02

eclipse编码规范

通过在eclipse中导入编码注释,以此来规范代码。

2018-07-17

java接口开发总结

上传的PPT内容包括:接口文档格式,接口文档编写注意事项,接口文档在线工具swagger的使用,实现接口的注意事项

2018-02-25

最终生成的级联模版

这个excel模版是根据我的文章“POI设置级联关系”最终生成的一个模版

2017-07-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除