自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(68)
  • 资源 (1)
  • 收藏
  • 关注

原创 DDD分层架构的3中模式

引言在讨论DDD分层架构的模式之前,我们先一起回顾一下DDD和分层架构的相关知识。DDDDDD(Domain Driven Design,领域驱动设计)作为一种软件开发方法,它可以帮助我们设计高质量的软件模型。在正确实现的情况下,我们通过DDD完成的设计恰恰就是软件的工作方式。UL(Ubiquitous Language,通用语言)是团队共享的语言,是DDD中最具威力的特性之一。不管你在团队中的角色如何,只要你是团队的一员,你都将使用UL。由于UL的重要性,所以需要让每个概念在各自的上下文中是清晰无

2021-03-22 12:22:14 365

原创 转义字符与replaceAll 正则替换转义字符

在项目中有用格式化数据(json,xml)来存储规则配置,存储数据库为mysql。且规则项目中有复制功能(导出sql到文件,上传sql文件写到数据库);出现配置好的数据复制后json解析失败。origin db:[{"name":"nA","id":"idA","evals":"[{\"name\":\"xa\",\"type\":\"tA\",\"operation\":\"idAdd\",\"domainArea\":[\\\"20181010\\\",\\\"20201010\\\"]}]

2021-03-17 19:58:28 1849

转载 TCP连接的状态详解以及故障排查

我们通过了解TCP各个状态,可以排除和定位网络或系统故障时大有帮助。1、TCP状态了解TCP之前,先了解几个命令:linux查看tcp的状态命令:1) netstat -nat 查看TCP各个状态的数量2)lsof -i:port 可以检测到打开套接字的状况3) sar -n SOCK 查看tcp创建的连接数4) tcpdump -iany tcp port 9000 对tcp端口为9000的进行抓包网络测试常用命令;1)ping:检测网络连接的正常与否,主要是测试延时、抖动、丢包率。.

2021-03-12 12:28:16 1447

原创 spring cloud中 单节点定时任务

在微服务多节点部署中,定时任务的执行比单节点部署稍复杂些,有时需保证有且仅有一个节点执行,如缓存数据预热,清理缓存等。可有如下实现方式:1、分布式锁:执行的节点在定时任务调起时加分布式锁,如redis的setNx;2、mysql 的X锁可在表中加个状态的枚举字段state。执行update tb set state = t2 where state = t1; update 的结果为1时表示获得执行,为0则不需执行。3、spring cloud 中,可根据注册中心中的节点,仅有一

2021-03-09 20:27:05 394

原创 presto 基本概念和架构

Presto是一款Facebook开源的MPP架构的OLAP查询引擎,可针对不同数据源执行大容量数据集的一款分布式SQL执行引擎。因为工作中接触到Presto,研究它对理解SQL Parser、常见算子的实现(如SQL中table scan,join,aggregation)、资源管理与调度、查询优化(如向量化执行、动态代码生成)、大数据下各个组件为何适用不同场景等等都有帮助。我希望通过这个系列可以了解一条SQL在大数据场景下该如何高效执行。233酱准备不定时持续更新这个系列,本文主要从Presto的使用举

2021-03-09 19:04:44 1968 2

原创 mysql 乐观锁和悲观锁及InnoDB测试

1、乐观锁总是假设最好的情况,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号机制和CAS算法实现。乐观锁适用于多读的应用类型,这样可以提高吞吐量,像数据库提供的类似于write_condition机制,其实都是提供的乐观锁。在Java中java.util.concurrent.atomic包下面的原子变量类就是使用了乐观锁的一种实现方式CAS实现的。两种锁的使用场景从上面对两种锁的介绍,我们知道两种锁各有优缺点,不可

2021-02-11 12:50:11 267

原创 Thread 生命周期状态和Thread 方法

一.线程的生命周期及五种基本状态关于Java中线程的生命周期,首先看一下下面这张较为经典的图:上图中基本上囊括了Java中多线程各重要知识点。掌握了上图中的各知识点,Java中的多线程也就基本上掌握了。主要包括:Java线程具有五中基本状态新建状态(New):当线程对象对创建后,即进入了新建状态,如:Thread t = new MyThread();就绪状态(Runnable):当调用线程对象的start()方法(t.start();),线程即进入就绪状态。处于就绪状态的线程,只是

2021-02-04 19:35:37 509

原创 SpringMVC的工作原理图

SpringMVC的工作原理图:SpringMVC流程1、 用户发送请求至前端控制器DispatcherServlet。2、 DispatcherServlet收到请求调用HandlerMapping处理器映射器。3、 处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。4、 DispatcherServlet调用HandlerAdapter处理器适配器。5、 Han...

2021-02-04 11:35:10 2353

转载 Spring AOP

一、AOP——另一种编程思想1.1 什么是 AOPAOP (Aspect Orient Programming),直译过来就是 面向切面编程。AOP 是一种编程思想,是面向对象编程(OOP)的一种补充。面向对象编程将程序抽象成各个层次的对象,而面向切面编程是将程序抽象成各个切面。从《Spring实战(第4版)》图书中扒了一张图:从该图可以很形象地看出,所谓切面,相当于应用对象间的横切点,我们可以将其单独抽象为单独的模块。1.2 为什么需要 AOP想象下面的场景,开发中在多个模块间有某段

2021-02-04 11:31:14 81

原创 Redis 简介及为什么这么快

Redis简介Redis是一个开源的内存中的数据结构存储系统,它可以用作:数据库、缓存和消息中间件。它支持多种类型的数据结构,如字符串(String),散列(Hash),列表(List),集合(Set),有序集合(Sorted Set或者是ZSet)与范围查询,Bitmaps,Hyperloglogs 和地理空间(Geospatial)索引半径查询。其中常见的数据结构类型有:String、List、Set、Hash、ZSet这5种。Redis 内置了复制(Replication),LUA脚本(L

2021-02-03 20:17:36 114

原创 Redis缓存穿透,缓存击穿,缓存雪崩原因+解决方案

一、前言在我们日常的开发中,无不都是使用数据库来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题,可是一旦涉及大数据量的需求,比如一些商品抢购的情景,或者是主页访问量瞬间较大的时候,单一使用数据库来保存数据的系统会因为面向磁盘,磁盘读/写速度比较慢的问题而存在严重的性能弊端,一瞬间成千上万的请求到来,需要系统在极短的时间内完成成千上万次的读/写操作,这个时候往往不是数据库能够承受的,极其容易造成数据库系统瘫痪,最终导致服务宕机的严重生产问题。为了克服上述的问

2021-02-03 20:13:16 102

原创 Redis集群方式 和 cluster 模式搭建

Redis集群方式共有三种:主从模式,哨兵模式,cluster(集群)模式主从模式:是三种集群方式里最简单的。它主要是基于Redis的主从复制特性架构的。通常我们会设置一个主节点,N个从节点;默认情况下,主节点负责处理使用者的IO操作,而从节点则会对主节点的数据进行备份,并且也会对外提供读操作的处理。主要的特点如下: 主从模式下,当某一节点损坏时,因为其会将数据备份到其它Redis实例上,这样做在很大程度上可以恢复丢失的数据。 主从模式下,可以保证负载均衡,这里不再叙说了 主从

2021-02-03 20:10:06 1658

原创 spring IOC 源码和demo

一、IOC  “控制反转(IoC)”也称为“依赖注入(DI)”,是一个定义对象依赖的过程,对象只和 构造参数,工厂方法参数,对象实例属性或工厂方法返回相关。容器在创建这些 bean 的时 候注入这些依赖。这个过程是一个反向的过程,所以命名为依赖反转,对象实例的创建由其 提供的构造方法或服务定位机制来实现。  IOC 最大的好处就是“解耦”。二、IOC底层原理使用技术  1、xml配置文件,dom4j解析配置的xml文件 2、注解处理。spring4 和spring boot ...

2021-02-03 20:00:49 131

原创 java 类加载和 反射

一、Java类加载机制1.概述Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数,属性和方法等,Java允许用户借由这个Class相关的元信息对象间接调用Class对象的功能。虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。2.工作机制类装载器就是寻找类的字...

2021-02-03 19:22:45 224 1

原创 Hive基础(join原理和机制,join的几种类型,数据倾斜简单处理)

<h2>一,Hive中join的原理和机制Hive中的Join可分为Common Join(Reduce阶段完成join)和Map Join(Map阶段完成join)。Hive Common Join如果不指定MapJoin或者不符合MapJoin的条件,那么Hive解析器会默认把执行Common Join,即在Reduce阶段完成join。整个过程包含Map、Sh...

2020-12-22 15:40:37 449

原创 kafka安装及配置过程

kafka安装及配置过程一、安装kafka可以通过官网下载:https://kafka.apache.org/downloadskafka根据Scala版本不同,又分为多个版本,我不需要使用Scala,所以就下载官方推荐版本kafka_2.12-2.4.0.tgz。使用tar -xzvf kafka_2.12-2.4.0.tgz 解压为了使用方便,可以创建软链接kafka0ln -s kafka_2.12-2.4.0 kafka0二、Zookeeper配置当前下载的ka...

2020-12-21 22:03:47 197

原创 presto 基础和执行过程

背景在数据湖日益发展的阶段,也暴露出很多问题,其中有一点就是数据之间的隔离如果想要计算的数据分散在Hdfs、Hive、ES、Hbase、MySql、Kafka中,应该怎么做?Facebook科学家们发现目前并没有一款合适的计算引擎,最终决定开发一款MPP交互式计算引擎2012年秋天进行研发,2013年开源出来并成功用其对300PB的数据进行运算,奠定了Presto的地位特点Presto是面向SQL的跨数据源并基于内存计算的分析引擎,且拥有丰富的插件接口使用插件可以轻松实现以下问题对

2020-12-07 14:13:21 1187 1

原创 http协议详解

HTTP协议简介超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。HTTP的发展是由蒂姆·伯纳斯-李于1989年在欧洲核子研究组织(CERN)所发起。HTTP的标准制定由万维网协会(World Wide Web Consortium,W3C)和互联网工程任务组(Internet Engineering Task Force,IETF)进行协调,最终发布了一系列的R...

2020-12-07 11:38:06 182

原创 计算机网络基础总结

1|0计算机网络基础什么是互联网协议一系列统一的标准,这些标准称之为互联网协议,互联网的本质就是一系列的协议,总称为‘互联网协议’(Internet Protocol Suite)。互联网协议的功能:定义计算机如何接入internet,以及接入internet的计算机通信的标准。osi七层协议互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层我们将应用层,表示层,会话层并作应用层,从tcp/ip五层协议的角度来阐述每层的由来与功能,搞清楚了每层的主要协议...

2020-12-07 10:24:37 129

原创 高并发下接口幂等性的实现

一.什么是接口幂等性?  一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数或幂等方法是指可以使用相同参数重复执行,并能获得相同结果的函数/方法。这些函数/方法不会影响系统状态,因此不用担心重复执行会对系统造成改变。  个人理解,从后端的角度通俗来说就是:    对于一个请求,在参数相同的情况下,请求一次或者请求多次,响应结果都是一致的; 二.为什么需要接口幂等性的支持?  1.前端重复提交数据的情况下,后端之应该返回相同的数据结果或只对该次提交产...

2020-12-07 10:22:16 256

原创 高性能IO模型浅析

<p><strong>高性能IO模型浅析</strong></p>  服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种:(1)同步阻塞IO(Blocking IO):即传统的IO模型。(2)同步非阻塞IO(Non-blocking IO):默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBLOCK。注意这里所说的NIO并非Java的NIO(Ne...

2020-12-07 10:19:08 73

原创 spark RDD&算子&依赖划分&stage

Spark 的核心是建立在统一的抽象弹性分布式数据集(Resiliennt Distributed Datasets,RDD)之上的,这使得 Spark 的各个组件可以无缝地进行集成,能够在同一个应用程序中完成大数据处理。本节将对 RDD 的基本概念及与 RDD 相关的概念做基本介绍。 RDD 的基本概念 RDD 是 Spark 提供的最重要的抽象概念,它是一种有容错机制的特殊数据集合,可以分布在集群的结点上,...

2020-12-06 21:37:51 457

原创 spark on yarn 安装部署

准备下载spark,地址:http://spark.apache.org/downloads.html下载不带hadoop预编译环境的spark最新版本,好处是可以自由使用最新版本的hadoop下载hadoop,地址:https://hadoop.apache.org/releases.html1.基本环境配置[ec2-user@rcf-ai-datafeed-spark-prd-01 conf]$ cat /etc/hosts127.0.0.1 localhost localh...

2020-12-06 21:32:40 1122

原创 ElasticSearch—冷热(hot&warm)架构部署

 背景最近在做订单数据存储到ElasticSearch,考虑到数据量比较大,采用冷热架构来存储,每月建立一个新索引,数据先写入到热索引,通过工具将3个月后的索引自动迁移到冷节点上。ElasticSearch版本:6.2.4 冷热架构官方叫法:热暖架构——“Hot-Warm” Architecture。通俗解读:热节点存放用户最关心的热数据;温节点或者冷节点存放用户不太关心或者关心优先级低的冷数据或者暖数据。 1.1 官方解读冷热架构为了保证El...

2020-12-05 10:50:44 2929

原创 zookee 的安装和命令行

本文讲述如何安装和部署ZooKeeper。一、系统要求ZooKeeper可以运行在多种系统平台上面,表1展示了zk支持的系统平台,以及在该平台上是否支持开发环境或者生产环境。表1:ZooKeeper支持的运行平台系统开发环境生产环境Linux支持支持Solaris支持支持FreeBSD支持支持Windows支持不支持MacOS支持不支持ZooKeeper是用Java编写的,运行在Java环境上,因此,在部署zk的机器上需要安...

2020-12-05 10:29:36 171

原创 MapReduce on Yarn执行过程

   Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而MapReduce等运算程序则相当于运行于操作系统之上的应用程序。 Yarn的架构如下图所示:   从Yarn的架构图来看,他主要由ResourceManager、NodeManager、ApplicationMaster和Container等一下几个组件构成。 1)ResourceManager  &nbs

2020-12-04 21:08:55 199

原创 Hadoop 3.1.1 运行自带的 wordcount 示例

我们这里用自带的示例程序来运行wordcount,从而来演示Hadoop的功能。/home/cndba/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.1.jarhttps://www.cndba.cn/dave/article/3260 https://www.cndba.cn/dave/article/3260 导入测试文件: [http://www.cndba.cn@hadoopmaster hadoop]$ ls

2020-12-04 16:05:24 523

原创 Hadoop的数据写入、备份、删除操作

Google 为了应对快速增长的数据处理,开发了一套算法。后来有人根据算法的思想,开发出开源的软件框架 ,就是Hadoop, 随着越来越多的组织和个人开发者在框架开发中不断贡献改进,Hadoop 已经形成一套家族产品,成为当下最成功最流行的分布式大数据处理框架。Hadoop 受到很多组织青睐,是因为有两大因素:</p> 一、超大规模的数据处理, 通常 10TB 以上; 二、超复杂的计算工作,例如统计和模拟。 Hadoop 在很多应用场景中发挥着主要功用,如大规模统计、ETL数据

2020-12-04 09:41:48 1973

原创 MapReduce on Yarn运行原理

<span>MapReduce on Yarn运行原理</span>目录一、概念综述Input Split:Map:Shuffle和排序:Map端shuffle过程: Reduce端shuffle过程:Reduce: 二、环形内存缓冲区2.1 什么是环形内存缓冲区2.2  环形内存缓冲区的数据结构三、剖析MapReduce作业运行机制  回到顶部一、概念综述  MapReduce是一种可用于数据处理的编程模型(或计算模型),该模型

2020-12-03 23:26:21 345

原创 八大数据结构及常见面试题

几乎所有的问题都需要面试者对数据结构有深刻的理解。无论你是初入职场的新兵(刚从大学或者编程培训班毕业),还是拥有几十年经验的职场老鸟。 即便是对于一些非常基础的工作来说,学习数据结构也是必须的。那么,就让我们先从一些基本概念开始入手。 什么是数据结构? 简单地说,数据结构是以某种特定的布局方式存储数据的容器。这种“布局方式”决定了数据结构对于某些操作是高效的,而对于其他操作则是低效的。首先我们需要理解各种数据结构,才能在处理实际问题时选取最合适的数据结构...

2020-12-01 21:39:16 9423

原创 kafka 的Coordinator与offset管理和Consumer Rebalance

kafka系列之(3)——Coordinator与offset管理和Consumer Rebalance1、Consumer与Consumer Groupconsumer group是kafka提供的可扩展且具有容错性的消费者机制。组内可以有多个消费者或消费者实例(consumer instance),它们共享一个公共的ID,即group ID。组内的所有消费者协调在一起来消费订阅主题(subscribed topics)的所有分区(partition)。consumer group下可以有一个或多个

2020-11-14 11:48:01 565

原创 深入jvm

JVM:24个Jvm面试题总结 https://www.cnblogs.com/JesseP/p/11750847.htmljava堆内存详解:https://www.cnblogs.com/ITPower/p/7929010.htmlJava中对象的赋值与引用 https://blog.csdn.net/yz930618/article/details/76278997JVM——对象已死吗?(Java对象引用分析):https://blog.csdn.net/zwzsdy/article/de.

2020-10-30 13:45:09 103

原创 hive 复制一天的数据到一年内的每月同一天

日期转换并减一个月select from_unixtime(unix_timestamp(add_months(from_unixtime(unix_timestamp('2020-06-19', 'yyyy-MM-dd'), 'yyyy-MM-dd HH:mm:ss'), -1), 'yyyy-MM-dd'),'yyyy-MM-dd') 查出表字段hive -n xx -p pp -e "describe formatted db.tb" | awk '{print $2}'..

2020-08-19 21:04:06 508

原创 future 多线程请求多个接口信息

在微服务调用中,一个接口需请求多个服务的数据,如使用顺序编程,耗时为多个微服务响应时间之和。为提高效率,使用多线程发出消息,耗时为最慢响应的接口请求时间。多线程获取时需使用异步记录,使用Future 模式。具体使用jdk concurrent FutureTask。package com.lls.concurrent;import java.util.LinkedList;import java.util.List;import java.util.concurrent.*;publi

2020-07-07 18:03:36 896 1

原创 windows(非linux系统)执行linux命令,向linux上传文件 JSch使用

JSch基本使用JSch 是SSH2的一个纯Java实现。它允许你连接到一个sshd 服务器,使用端口转发,X11转发,文件传输等等。你可以将它的功能集成到你自己的 程序中。同时该项目也提供一个J2ME版本用来在手机上直连SSHD服务器。官网:http://www.jcraft.com/jsch/中有很多例子http://www.jcraft.com/jsch/examples/,这里先采用(已做修改)其中2个来进行简单论述,希望对大家有所帮助。本文采用的jsch版本是0.1.51. 下载地址:h

2020-07-06 20:47:49 178

原创 jar 命令替换jar包内文件(有层级文件)

jar 命令替换jar包内文件(有层级文件)linux与windows下命令一致a.jar包内文件:config/a.properties lib/b.jar c.txt1、先cd 到jar 所在目录pwdJar,使用绝对路径无法替换文件。2、替换config/a.properties :在pwdJar 内建config目录,复制a.properties 到config替换a.jar内config/a.properties 命令:jar -uvf a.jar config/..

2020-06-11 18:34:37 1327

原创 java Runtime 执行多条命令

java Runtime 执行多条命令:public static void cmd() { String cmd_linux = "/bin/sh -c cd /home/ && ls "; String cmd_windows = "cmd /c cd D:/home && dir "; Process process = null; String cmd = ""; swi

2020-06-11 18:24:57 4262

原创 SQL统计出每个用户的月度访问次数和累积访问次数

如下的用户访问数据userId visitDate visitCountu01 2017-01-21 5 1u01 2017-01-23 6 2u02 2017-01-23 6 3u03 2017-01-22 8 4u04 2017-01-20 3 5u02 2017-02-21 ...

2020-04-03 00:27:29 7812

原创 SQL不同条件分类统计某个字段数值之和,以及所占百分比

按照不同条件分类统计想求一条sql 语句,统计某个字段数值之和,以及所占百分比,比如有一张表T1,PID FLAG WEIGHTa 1 20b 0 30c 0 0d 1 150希望结果是FLAG0 PER0 FLAG1 PER130 15% 85% 170CREATE TABLE `test_cal_percent` ( `PID` char(5) COLLATE utf...

2020-04-02 23:43:33 5170

转载 RESTful API 设计指南

网络应用程序,分为前端和后端两个部分。当前的发展趋势,就是前端设备层出不穷(手机、平板、桌面电脑、其他专用设备......)。因此,必须有一种统一的机制,方便不同的前端设备与后端进行通信。这导致API构架的流行,甚至出现"API First"的设计思想。RESTful API是目前比较成熟的一套互联网应用程序的API设计理论。我以前写过一篇《理解RESTful架构》,探讨如何理解这个概念。...

2020-04-01 21:40:01 92

mybatis学习

mybatis学习

2017-06-13

空空如也

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

TA关注的人

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