- 博客(237)
- 资源 (8)
- 问答 (1)
- 收藏
- 关注
原创 数据结构-队列之链式队列
队列的链式表示称为链队列,它实际上是一个同时带有队头指针和队尾指针的单链表。头指针指向队头节点,尾指针指向队尾节点,即单链表的最后一个节点。当q.front==NULL且q.rear==NULL时,链式队列为空。出队时,首先判断队列是否为空,如果不为空,则取出队头元素,将其从链表中删除,并让q.front指向下一个节点(若该节点为最后一个节点,则置q.front和q.rear都为null)。...
2018-10-22 10:49:23 2102 1
原创 数据结构-队列之循环队列
将顺序队列臆造为一个环状的空间,即把存储队列元素的表从逻辑上看成一个环,称为循环队列。当队首指针q.front=MaxSize-1后,再前进一个位置就自动归0,可以通过除法取余运算(%)来实现。初始时:q.front = q.rear=0队首指针+1:q.front = (q.front + 1) % MaxSize;队尾指针+1:q.rear = (q.rear + 1) % Max...
2018-10-22 10:44:06 2749
原创 数据结构-队列之顺序队列
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。队列的数据元素又称为队列元素。在队列中插入一个队列元素称为入队,从队列中删除一个队列元素称为出队。因为队列只允许在一端插入,在另一端删除,所以只有最早进入队...
2018-10-22 10:42:50 1391
原创 数据结构-“栈”的基本操作
栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)栈的更多概念就不赘述了,详情可以参考百度百科。接下来就来到了我们的动手环节,栈的基本操作包括入栈、出栈、初始化等.栈顶指针:s.top,初始设置s.top=-1;栈顶元素:s.data...
2018-10-22 10:39:00 2489
原创 kafka自动提交offset失败:Auto offset commit failed
今天在服务日志中观察数据的消费情况时,发现了一个如下的警告,而且每隔几秒就会出现一次,虽然只是个警告, Auto offset commit failed for group order_group: Commit cannot be completed since the group has already rebalanced and assigned the partitions...
2018-10-22 10:36:55 30662 2
原创 kafka重复消费问题
开篇提示:kafka重复消费的根本原因就是“数据消费了,但是offset没更新”!而我们要探究一般什么情况下会导致offset没更新?今天查看Elasticsearch索引的时候发现有一个索引莫名的多了20w+的数据,顿时心里一阵惊讶,然后赶紧打开订阅服务的日志(消费者),眼前的一幕让我惊呆了,我的消费服务的控制台一直在不断的刷着消费日志(刚开始我并没有意识到这是重复消费造成的),我还傻傻的以...
2018-10-22 10:33:14 16721
原创 博客转移至 https://www.babac.cn/
各位小伙伴你们好,博客已转移至 “虾米聊吧”,(如无特殊情况本博客将不再更新),新博客地址如下:https://www.babac.cn/欢迎大家关注微信公众号,在这里 我们可以对技术与生活畅所欲言,希望能给每一个关注的小伙伴都能带来收获!回复【加群】,让我们一起畅聊技术吧~...
2018-05-19 11:28:57 1035
原创 数据结构-循环单链表之魔术师发牌问题
问题描写叙述: 魔术师手中有A、2、3……J、Q、K十三张黑桃扑克牌。在表演魔术前,魔术师已经将他们依照一定的顺序叠放好(有花色的一面朝下)。魔术表演过程为:一開始,魔术师数1,然后把最上面的那张牌翻过来,是黑桃A;然后将其放到桌面上;第二次,魔术师数1、2;将第一张牌放到这些牌的最以下,将第二张牌翻转过来,正好是黑桃2;第三次,魔术师数1、2、3;将第1、2张牌依次放到这些牌的最以下...
2018-05-10 17:51:57 508
原创 数据结构-单链表进阶之快慢指针原理(快速查找法)
面试题:快速找到未知长度单链表的中间节点?这个问题的解决方法分为普通方法和高级方法。1.普通方法即我们大家都能一下子想到的,首先遍历一遍获取总长度L,然后再次遍历循环至L/2即可;时间复杂度为:O(L+L/2)=O(3/2L)代码简单实现:typedef struct { int data; LNode *next;}LNode,*LinkList;/*function:普通方法首先...
2018-05-09 19:11:34 1803
原创 数据结构-循环单链表之约瑟夫问题
约瑟夫问题的由来: 据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从,Joseph...
2018-05-09 18:07:55 1208
原创 数据结构-链表之单链表
单链表即每个节点都存在数据域和指针域(特殊节点除外),每个节点都一个直接前驱节点和直接后继节点(头节点无前驱,尾节点无后继),简单来说就是上一个节点的指针域中存放了下一个节点的地址,因此可以实现层层节点依次查找,时间复杂度为O(n),这也就是相对顺序表而言的缺点,但是对于频繁的插入和删除节点却是相对于顺序表的优点,除了首次查询为O(n)外,插入和删除都是O(1); 由于顺序表存单元和...
2018-05-08 18:00:23 454
原创 数据结构-线性表之顺序表
线性表包括顺序表和链表(单链表、双链表等),这里我们简单探讨一下线性表中顺序表的基本操作和实现。 线性表其实就是对数组的一个实现,其逻辑上和物理存储上的地址都是连续的(数组的下标是从0开始的,而线性表的下标是从1开始的)。 首先声明一个顺序类型的线性表://定义一个结构体类型#define InitSize 100 //初始大小typedef struct { int d...
2018-05-08 11:14:41 436
原创 springcloud 之 配置中心服务 spring cloud config
开门见山,不做过多的陈述,简单说一下配置中心的作用:在我们的实际项目开发中,我们一般都是一个项目一套配置,就像我之前的springboot项目,每个项目下都有一套resources/application.properties,里面都配置了我们需要的mysql连接、redis连接,kafka连接等,也就是说我们如果有n个项目,且如果都需要使用mysql的话,那么我们就有n个重复的mysql...
2018-04-25 11:28:55 889
原创 springcloud 之 EurekaServer 服务注册集群
在之前一篇文章(https://blog.csdn.net/zwx19921215/article/details/79800409)中我们已经搭建了一个EurekaServer,至于它的功能我已经不再赘述,但是很明显这是一个单点服务,而我们都知道,服务注册中心是整个分布式系统的核心,我们所有的微服务实例都注册在其中,一旦该服务注册中心宕机,则可能导致整个服务集群瘫痪,所以很明显在真实的生产环境中...
2018-04-20 14:53:44 387
原创 canal mysql 数据同步
首先canal是什么呢? canal是阿里巴巴旗下的一款开源项目,纯Java开发。基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了MySQL;简单来说,canal 会将自己伪装成 MySQL 从节点(Slave),并从主节点(Master)获取 Binlog,解析后供消费端使用。canal 包含两个组成部分:服务端和客户端。服务端负责连接至不同的 MySQL 实例,并为...
2018-04-04 15:01:55 1848
原创 java kafka 多线程消费
我们先来看下简单的kafka生产者和消费者模式代码:生产者KafkaProducer/** * @author xiaofeng * @version V1.0 * @title: KafkaProducer.java * @package: com.yingda.xsignal.app.test * @description: kafka生产者demo * @date 2018/4/...
2018-04-04 12:01:37 8242 2
原创 springboot 之 webscoket 服务端推送
因为最近有后端实时推送数据的需求,所以想到了websocket组件,在此写一下springboot集成使用websocket的方法,供各位童鞋参考。注:基于test项目。1.首先打开pom.xml引入相关依赖<!-- webSocket --><dependency> <groupId>org.springframework.boot</group...
2018-04-03 18:49:58 671
原创 springcloud 之 路由网关 zuul
话不多说,先上图(图是丑陋了点,大家别介意哈),这幅图是我根据公司现有的业务设计出来的一个简单的基于springcloud微服务架构图。 在springcloud微服务体系中,我们一般不对外直接暴露服务层的接口,而是中间通过一层代理进行中转,这层代理的好处一个是对外可以隐藏我们内部具体服务的接口,另一个就是我们非常重要的服务的负载均衡,在上图中客户端的所有请求先经过nginx(Nginx集群...
2018-04-03 17:39:20 639
原创 springcloud 之 Feign
远程调用方式一般分为Rpc和Http,springcloud服务之间的调用采用基于http协议的rest风格。既然springcloud是一个微服务架构生态体系,而且上一章我们也介绍了 微服务体系中一个核心组件“服务的发现与注册”eureka,接下来我们来简单探索以下微服务体系中另一个核心组件“远程调用”;在springcloud体系中实现rpc的组件有2个,一个是ribbon,另一个是fei...
2018-04-03 16:44:30 21425 6
原创 springcloud 之服务注册与发现 Eureka Client
在上一篇文章中我们已经成功的搭建了一个基于springcloud eureka的服务发现与注册中心,但是我们并没有向其中注入任何服务实例,接下来我将教大家如何将现有的服务注册到我们自己的eureka注册中心。注:基于demo-springboot1.打开pom.xml加入相关依赖:<!--eureka client--><dependency> <group...
2018-04-03 13:17:55 345
原创 springcloud 之服务注册与发现Eureka Server
我们在做分布式服务的时候总免不了听到“注册中心”这些词,那时候的我们总感觉这些东西很神秘很高大上,其实等我们正在去了解的时候发现其实他就是一个用来登记服务实例的一个容器而已,例如学过dubbo的童鞋应该都知道dubbo也有一个服务注册中心,且是通过zookeeper实现的,那么服务注册中心是用来干什么的呢?如图(我摘抄的):1.首先简单来说服务注册中心就是用来登记服务的,即:所有的服务都在我这进行...
2018-04-03 11:37:50 696
原创 springboot + elasticsearch
tips: 上一篇文章我们整合了springboot 与kafka,细心的童鞋可能已经发现了我们使用的springboot版本为最新的2.0.0,同样spring-kafka也为最新的版本2.1.4,我们确实都已经成功的整合了,并没有遇到什么问题,但是今天我整合elasticsearch时却出现了问题,经过一段时间的排查,发现是依赖版本所致,我在引入elasticsearch依赖(spring-b...
2018-04-03 10:52:32 885
原创 springboot + kafka
这片文章中我们来集成下常用的消息队列(MQ)kafka,至于消息队列的作用,在此不再赘述,参考前面的文章。在该篇文章中我没有采用配置文件的形式(application-dev.properties)配置,而是手动编写的kafkaProduce和kafkaConsumer的配置,这样更灵活。注:基于demo-springboot1.打开pom.xml加入以下内容:<!-- h...
2018-04-02 16:10:18 605 1
原创 springboot + redis
上一篇文章中我们引入了mysql的配置,接下来我们引入使用非常广泛的缓存组件redis;(注意,以下我引用的是自定义的redis配置,目的是更好的定制化一些功能以及多实例redis处理,并没有采用spring自身封装的RedisTemplate,个人认为spring封装的redisTemplate还存在一些问题,所以有条件的童鞋最好自定义redis相关功能)。注:基于demo-springboot...
2018-04-02 15:14:03 282
原创 springboot + mysql + mybatis配置
上一篇文章中我们引入了基本的环境配置,接下来我们开始mysql相关配置;依然是基于demo-springboot项目;1.打开pom.xml,加入以下内容:<!--mysql--><dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java&...
2018-04-02 14:45:11 1786
原创 springboot 常用配置之多环境配置(开发环境、测试环境、生产环境等)
在上一课中我们通过idea工具没有做任何配置就构建了一个springboot项目,并且已经成功启动了,但我们都很清楚这些都远远不能达到我们实际项目的需求,比如我们要引入我们自己的redis配置、mysql配置等,应该如何处理呢?在spring mvc中我们都是通过spring.xml相关文件配置,在springboot中这些都已经不存在了,我们应该怎样配置呢?别急,马上为大家揭晓谜底,跟着我一起来...
2018-04-02 14:07:19 11509
原创 springboot 入门
springcloud入门第一课之springboot项目搭建使用idea创建第一springboot项目:、就这样通过idea工具已经创建了第一个springboot项目,项目中的多余目录可剔除(如下):查看pom文件发现springboot中仅仅引入了spring-boot-starter-web点击进入该依赖发现springboot已经自动为我们引入了web项目相关的jar依赖:1.spri...
2018-04-02 11:16:34 262
原创 hessian spring实例整合
Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能。 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。
2017-04-10 14:52:02 699
原创 Oauth 2.0概述
传统授权方式账号密码的授权方式存在的问题:1. 用户的账号、密码信息透漏给了第三方应用,导致安全问题;2. 用户要收回授权,只能通过修改密码来实现,此时如果有多个第三方应用,所有授权一起被收回3. 很难安全的实现对不同的第三方应用给予不同的权限Oauth原理需要解决的问题:1. 怎么识别第三方应用身份,怎么保证第三方应用身
2017-03-12 20:54:34 732
原创 对称密码的编程使用(DES、3DES、AES)
对称密码的概念加密密钥和解密密钥相同,对于大多数对称密码算法,加解密过程互逆加解密通信模型特点:算法公开、计算量小、加密速度快、加密效率高弱点:双方都使用同样密钥,安全性得不到保证DES 算法的编程使用(密钥偏短(56位)、生命周期短)package com.crypt.des;import com.crypt.ByteToHex
2017-03-12 20:44:15 926
原创 消息摘要的编程使用(MD5、SHA、HMAC)
消息摘要的概念: 唯一对应一个消息或文本的固定长度的值,由一个单向Hash加密函数对消息进行作用而产生 消息摘要的分类:(1)MD(Message Digest):消息摘要算法(2)SHA(Secure Hash Algorithm):安全散列算法(3)MAC(Message Authentication Code):消息认
2017-03-12 20:41:02 787
原创 Base64算法的编程使用
Base64算法定义 Base64是一种基于64个字符的编码算法,以任意8位字节序列组合的描述形式,这种形式不易直接识别。经Base64编码后的字符串的字符数是以4为单位的整数倍 Base64密钥 Base64编程使用 package com.cry.base64;import java.io.IOException;
2017-03-12 20:38:47 689
原创 密码学综述
1.密码学基本功能1)机密性2)鉴别3)报文完整性4)不可否认性2.基本模型密文发送方 —> 加密算法 —>解密算法 —>接收方秘钥即:3.密码学算法的分类消息编码:Base64消息摘要:MD类、SHA类、MAC对称密码:DES、3DES、AES非对称密码:RSA、D
2017-03-12 20:34:46 1149
原创 J2EE 企业级应用架构简述
企业应用的特点多环境多系统的交互海量数据、高并发、高TPS安全等级高自动化集群管理架构的原则CAP原则(一致性、可用性、分区容错性)复杂的事情简单化架构的目标高速缓存并行计算负载均衡数据备份异地容灾业务分离原始版动静分离版
2017-03-12 20:12:05 4193
原创 Kafka消息处理与集群维护
磁盘重认识 当需要从磁盘读取数据时,要确定读的数据在哪个磁道,哪个扇区:首先必须找到柱面,即磁头需要移动对准相应磁道,这个过程叫做寻道,所耗费时间叫做寻道时间;然后目标扇区旋转到磁头下,这个过程耗费的时间叫做旋转时间;一次访盘请求(读/写)完成过程由三个动作组成寻道(时间):磁头移动定位到指定磁道;旋转延迟(时间):等待指定扇
2017-03-12 19:47:13 1891
原创 Kafka集群搭建
Kafka使用背景在我们大量使用分布式数据库、分布式计算集群的时候,是否会遇到这样一些问题:我想分析一下用户行为(pageviews),以便我能设计出更好的广告位;我想对用户的搜索关键词进行统计,分析出前的流行趋势;有些数据,存数据库浪费,直接存硬盘操作效率又低;这个时候,就可以用消息系统了,尤其是分布式消息系统;另外: 在很多常见的大数据处理场景
2017-03-12 19:40:35 1605
原创 Hadoop入门(Hadoop2.7.2源码编译与伪分布安装)
Hadoop概述— Hadoop简介•什么是Hadoop 一个开源、高可靠、可扩展 的分布式计算框架• 解决的问题 海量数据的存储(HDFS) 海量数据的分析(MapReduce) 分布式资源调度(Yarn)• 产生背景 受Google三篇论文的启发(GFS、MapReduce、BigTable)• 扩容能力 能可靠地存储和处理千兆字节(PB)数据。• 成本低 可以通过普通
2017-03-12 19:35:45 1476
原创 Zookeeper集群搭建(配置详解)
软件环境准备:Linux服务器一台、三台、五台(2*n+1台);Java jdk 1.7;zookeeper 3.4.6版;软件安装:解压jdk、zookeeper文件到指定目录,执行命令tar -zvxf xxxx.tar.gz -C /usr/local/program配置环境变量,vi /etc/profile#set enviromentexport
2017-03-12 19:32:27 3333
原创 Hadoop配置完善
Hadoop日志详解日志分析•.log为log4j详细日志,.out为标准输出(一般查看.log)•Userlogs为程序的日志信息,其它(.out,.log)为进程启动日志信息JobHistory配置•启动yarn下的jobhistory进程查看任务日志(mr-jobhistory-daemon.sh start historyserv
2017-03-12 19:30:03 510
原创 zookeeper集群介绍
ZooKeeper是一个开源分布式协调服务,独特的Leader-Follower的集群结构,很好的解决了分布式单点问题。目前主要用于诸如:统一命名服务、配置管理、锁服务、集群管理等场景。 Zookeeper中的角色主要有以下三类,如下表所示:Zookeeper系统模型:Zookeeper设计目的 : 最
2017-03-12 19:25:56 505
有木有C#大神 求这个(Decompressor)类的解释,如果用java应该怎样写呢?
2018-04-09
TA创建的收藏夹 TA关注的收藏夹
TA关注的人