自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 资源 (7)
  • 收藏
  • 关注

原创 kafka2.0-事物发送(the transactional producer)_10

事务 事务是Kafka 0.11开始引入的新特性。类似于数据库事务,只是这里的数据源是Kafka,kafka事务属性是指一系列的生产者生产消息和消费者提交offset的操作在一个事务,或者说是是一个原子操作),同时成功或者失败。事务入门例子生产者如下,发送两条消息,添加事物的意思就是要么同时发送成功,要么都不成功。/** * 多次生成消息类型的事物 */public class...

2018-09-13 13:27:28 1233

原创 kafka2.0-幂等发送(the idempotent producer)_09

从kafka 0.11版本开始,生成者就支持了两种额外的发送模式 - 幂等发送(the idempotent producer)和事物发送(the transactional producer)。事物发送在后面讲。什么是幂等?(如果已经了解,可跳过) 举个例子:比如用户对订单付款之后,生成了一个付款成功的消息,发送给了订单系统,订单系统接收到消息之后,将订单状态为已付款,后来,订单系统又收到...

2018-09-12 13:45:43 2765 1

原创 kafka2.0-使用protobuf实现序列化_08

上一篇文章中讲了json和jdk的序列化方式,这里讲使用protobuf类序列化protobuf的介绍 Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 个 .proto 文件。他们用于 RPC 系统和持续数据存储系统。...

2018-09-09 16:45:34 14218 3

原创 kafka2.0-序列化与反序列化_07

概要:先讲讲kafka中简单的序列化方式,以及实现,然后再使用protobuf实现一个自定义序列化的小程序正如之前文章中写过的例子程序,我们配置的序列化方式都是下面这样的。//生产者的序列化配置props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");props.p...

2018-09-09 12:44:56 927

原创 kafka-自定义分区器(partitioner)_06

上一篇文章讲了kafka的默认的分区器(DefaultPartitioner)源码,这里我们写一个自定义分区器的小例子生产者代码如下:/** * kafka生产者 * 使用自定义的分片器发送消息 */public class PartitionerProducer { public static final String TOPIC_NAME = "producer-0"...

2018-09-08 16:33:53 1174 1

原创 kafka2.0-producer如何将消息分配到partition中_05

Topic:producer-0 PartitionCount:3 ReplicationFactor:2 Configs: Topic: producer-0 Partition: 0 Leader: 2 Replicas: 2,1 Isr: 2,1 Topic: producer-0 Partition: 1 Leader: 3 Re...

2018-09-08 12:50:23 3374

原创 kafka-producer基础理论_04

如果你已经了解了kafka的producer基础理论,可以跳过这篇文章Partition & Replicas我创建了一个名为producer-0的topic,partitions的数量为3,每个partitions除了本身之外还有一个副本,如下图。 Topic:producer-0 Partition:0 Leader:2 Replicas:2...

2018-09-07 16:41:56 217

原创 kafka2.0-入门demo_03

上一篇文章简单的讲了搭建kafka的环境以及如何启动。现在来讲讲kafka的简单使用,然后使用java写个小的测试程序。首先假设你已经启动了kafka集群,我们来创建一个topic,使用如下命令:bin/kafka-topics.sh --create --zookeeper 192.168.1.3:2181,192.168.1.128:2181,192.168.130:2181 --...

2018-09-06 21:10:04 1683

原创 kafka2.0-环境搭建_02

声明:我这里搭建的是完全分布式环境,zookeeper使用的是非kafka自带的。(想深入了解kafka,需要先了解zk,如果你对zk有一定了解,那么搭建zk分布式环境将会非常easy)单机环境和伪分布环境可以参见官方文档:http://kafka.apache.org/quickstart 如果不想看英文就看这篇:http://www.tianshouzhi.com/api/tutoria...

2018-09-06 16:32:44 1739

原创 mysql 可重复读。

一、可重复读我们先看看现象,再分析原理。我的mysql版本是5.5。下面是一张表,只有一条数据,并且我开启了事物此时,另一个事物将record加1,因此我在开启一个命令行客户端,执行下面的命令:成功加1之后,实际上,数据库中record肯定是2。然后回到之前的客户端,再查一次:没毛病,record还是1,果然是可重复读。有些人以为mysql的可重复读是通过行锁实...

2018-07-26 15:19:41 4140

原创 看看java源码中那些引人深思的写法_no.1

案例一:在jdk Hashmap的源码中,有一段如下:相信看过Hashmap源码的人都知道,table其实就是hash桶数组,然后每一个桶后面是链表,对于jdk8,过长的情况下为红黑树。但是我们今天关注的重点是transient这个关键字,As you know,被transient修饰的字段不能被序列化。为什么不能被序列化,这个问题跟hashcode有关系。在回答这个问题之前...

2018-07-26 00:10:44 352

原创 记一次sql删除重复数据的经历

来看看问题,表结构如下:可能是前台的代码有问题,表单重复提交,导致同一个用户(user_account)对同一个商品(sku_id)多次提交了重复的内容(content)。现在需要对重复的内容去重,即每一个用户,每一个商品只保留一条不同的内容。条件是:         给定指定的sku_id,(10063,10061,10064)。         保留主键id最大的一条。...

2018-07-24 10:17:28 246

原创 DP(动态规划)入门

谈到动态规划,最经典的当然是背包问题,可以百度下<<背包九讲>>。但是这里不准备从背包问题讲起,主要是觉得用背包问题来讲DP的思想,还不够通俗易懂。先来看一个金典的算法题:爬台阶问题有n个台阶,你每次可以爬1阶或2阶,问:爬到顶总共有多少种爬法?例子: n = 3第一种:1 1 1第二种:2 1第三种:1 2总共有3种爬法。解法一:递归代码如下...

2018-12-05 15:02:57 289

原创 Mysql-由浅入深论行锁

对于mysql innodb的各种锁,这里不采用堆文字的讲解方式,我们来从现象到本质,先看现象,再来说明其中的道理。我使用的是mysql 5.5,默认隔离别-可重复读。建了一张表,如下图:id为主键,student_num上有唯一索引,score分数上有普通索引,name和age没有索引。建表语句如下:CREATE TABLE `student` ( `id` bigint(20)...

2018-10-10 15:22:35 244

原创 从吃鸡中论装饰器模式

在讲装饰器模式之前,我先讲讲代码实例,在讲具体的原理和结构。情景:游戏中经常使用枪(英文:Gun),有手枪(英文:Pistol),狙击枪(英文:SniperRifle)等等。 然后枪有个基本功能,肯定是fire,也许shot更恰当,如果用代码实现,大致如戏:抽象类:枪(Gun)public abstract class Gun { //开火 public abst...

2018-08-27 15:42:29 424

原创 使用LengthFieldBasedFrameDecoder解决复杂的自定义协议-粘包与半包问题

之前做过一个项目,项目中web应用为了与传感器通讯,定义了一整套通讯协议,这里拿最简单的心跳协议来讲,使用netty自带的LengthFieldBasedFrameDecoder解码器来解决粘包与半包问题。 心跳协议如下: 简单说下这个协议,固定值的包头包尾设定,更多的是为了迎合硬件,如果你去看过一下rpc框架的通信协议,比如dubbo,为了使包字节数更少,不会这样。所以站在高效通讯的角度...

2018-08-21 17:02:34 16952 9

原创 kafka-producer如何发送消息

producer如何发送消息首先producer保持着一个与zk的链接,通过这个链接,可以获得当前Topic所有的partition leader所在主机的列表,然后,会选择一台主机,直接发送消息到broker上的leader partition,不需要经过任何中介或其他路由转发。为了实现这个特性,kafka集群中的每个broker都可以响应producer的请求,并返回topic的一些元信息...

2018-08-04 15:58:30 3161

原创 Kafka介绍和原理

Kafka介绍简而言之,kafka是一种mq,现在有很多开源的mq,包括ActiveMq,RokectMq, Rabbitmq和Kafka等等。还有些大型互联网公司内部不开源的MQ,比如阿里巴巴的MetaQ,京东的JMQ等等。Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文...

2018-08-02 16:12:00 275

原创 如何写好一个线程池(java)

在应用中,一个线程池工具类,需要些什么单例,而且是线程安全的单例线程异常处理,当线程在实际执行过程中,如果出现异常,起码得记个log吧线程池的设置,核心线程大小,阻塞队列,最大线程大小/** * 线程池工具类 */public class ThreadPoolUtils { //核心线程数 private static final int CORE_POOL_...

2018-07-30 18:58:52 1145

原创 算法-LeetCode-整数的二进制表示中1的个数

题目输入一个,输出该数二进制表示中1的个数。 其中负数用补码表示。 说明:对于负数的二进制码,比如-1(由于java中int 为4个直接,总共32位,这里方便表示只取8位) 原码:-1=1000 0001 (最高位为符号位,负数用1表示) 反码:-1=1111 1110 (除了最高位的符号位,其余的全部取反) 补码:-1=1111 1111 (把反码加一,则为补码) ...

2018-07-30 16:03:29 2164

原创 算法-LeetCode-跳台阶

题目一一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果) 解法:这题的解法,主要思路是递归,首先假设第一次跳1级,那么剩下的n-1级的跳法是多少种? 不知道,但是我们假设是x种跳法,如果第一次跳2级,我们同样假设剩下的n-2中跳法有y种。x+y就是总数。那么现在的问题就变成了, 求该青蛙跳上一个n-1级的台阶总共有多少...

2018-07-30 15:09:21 2284

原创 使用git bash管理你的代码

      之前在一家创业公司工作,由于my head一直用git bash来管理代码,而不喜欢用图形化的工具,受之影响,所以一直以来都习惯了敲命令来解决。这里就由浅入深的讲讲使用命令在玩git。git clone 毫无疑问,第一步肯定是下载代码(git config自己的email和username就不讲了)github上面有很多的开源项目,这里找的是java算法实现的一个开源项目。地...

2018-07-23 21:16:20 1007

原创 教你如何快速安装hibernate tools?

安装hibernate tools

2015-11-23 14:47:09 268

javaweb文档大全

这里包括j2ee的各种文档,servlet,j2ee api,structs2,hibernate,jsp等等,以及学习笔记

2014-04-21

图书馆管理系统java源码

用java编写的图书馆管理系统,适合初学者参考,学习

2014-04-21

QQ的java源码

模仿QQ,用Java制作的QQ软件,供大家参考

2014-04-21

聊天室源码

聊天室的Java源码,适合java初学者参考.

2014-04-21

j2ee体系的帮助文档

这里面包括JSP,servlet,xml,tomcat,struct2.0,hibernate,jsf等各种关于j2ee的文档及教程,学习笔记

2014-04-19

mysql for jdbc的驱动

这是mysql基于Java的jar包,实现了jdbc的接口,用于链接数据库

2014-04-19

空空如也

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

TA关注的人

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