2019年6月2日

kafka服务端

摘要: kafka服务端的节点称为broker,一个kafka集群有多个broker。每个topic都可以有多个分区,每个分区都可以有多个副本。broker数、分区数、副本数随时可以扩容,这是典型的分布式多副本冗余机制。 通过zookeeper从各broker中选出一个作为controller,contro 阅读全文

posted @ 2019-06-02 18:51 koushr 阅读(4450) 评论(0) 推荐(0) 编辑

2018年8月15日

DelayQueue使用实例

摘要: DelayQueue是延迟阻塞队列。这种特性可以让我们做一些ArrayBlockingQueue、LinkedBlockingQueue这种常规阻塞队列所做不到的事情。比如说银行转账24h后才到账,微信转账2h到账或者24小时到账。 public class DelayQueueTest { pub 阅读全文

posted @ 2018-08-15 20:31 koushr 阅读(4861) 评论(0) 推荐(0) 编辑

2018年7月19日

mysql的双1设置

摘要: 双1设置指的是 innodb_flush_log_at_trx_commit和sync_binlog,这两个变量名应该一字不错的记住,在面试时一字不错的说出来,肯定能加分。 1、innodb_flush_log_at_trx_commit 参考https://dev.mysql.com/doc/re 阅读全文

posted @ 2018-07-19 09:13 koushr 阅读(499) 评论(0) 推荐(0) 编辑

2018年6月7日

多线程基础知识第七篇:多线程笔试题

摘要: 1、用5个线程去卖火车票,一共5000张,卖完即止。 用线程池的写法:向线程池提交5000个任务 public class Test { public static void main(String[] args) throws InterruptedException { int total = 阅读全文

posted @ 2018-06-07 21:03 koushr 阅读(593) 评论(0) 推荐(0) 编辑

sql笔试题

摘要: 题目一、表t_score,数据如下 name subject score 张三 语文 81 张三 数学 75 李四 语文 76 李四 数学 90 王五 语文 81 王五 数学 100 王五 英语 90 对应ddl及dml语句如下: CREATE TABLE `t_score` ( `id` int 阅读全文

posted @ 2018-06-07 16:54 koushr 阅读(173) 评论(0) 推荐(0) 编辑

2017年12月17日

case when语法以及与group by的配合使用

摘要: 一:case when语法: case when有两种语法: 语法1: case 某字段 when 值1 then 伪值1 when 值2 then 伪值2 ...... else 伪值n end 注意,when之间没有任何标点符号,且最后要以end结尾,否则会报语法错误。 如有一种常见情况是,数据 阅读全文

posted @ 2017-12-17 17:58 koushr 阅读(5804) 评论(0) 推荐(0) 编辑

2017年12月14日

redis集群

摘要: redis集群至少要有3个主节点 redis cluster将所有数据分到16384个槽中(214),每个主节点负责一部分槽。 槽位定位算法: 客户端会根据CRC算法对key算出一个整数值,然后再对16384取模,模的值就是具体槽位编号。 跳转重定向: 客户端连接集群后,会得到集群的槽位配置信息并将 阅读全文

posted @ 2017-12-14 11:03 koushr 阅读(549) 评论(0) 推荐(0) 编辑

2017年10月28日

五大常用算法第一篇:贪心算法及习题

摘要: 英文是greedy algorithm。 太难理解,且面试极少出,不学习这个算法。 leetcode题目: 力扣44、通配符匹配 思路: 力扣45:跳跃游戏II 力扣55:跳跃游戏 思路: 300、最长递增子序列。medium 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是 阅读全文

posted @ 2017-10-28 18:42 koushr 阅读(1053) 评论(0) 推荐(0) 编辑

kafka消费组、消费者

摘要: 一个消费组可能有一个或者多个消费者。同一个消费组可以订阅一个或者多个主题。主题的某一个分区只能被消费组的某一个消费者消费。那么分区和消费者之间是如何对应的呢? 假设消费组cg1(group.id=cg1)订阅了topic1,cg1有3个消费者c1、c2、c3,topic1有5个分区p1、p2、p3、 阅读全文

posted @ 2017-10-28 18:40 koushr 阅读(1088) 评论(0) 推荐(0) 编辑

单链表和双链表

摘要: 单链表英文是singly-linked list,双链表英文是doubly-linked list。 单链表的头结点、尾节点有数据吗? 双链表的头节点、尾节点有数据吗? 其实自己搞混了一个概念,头结点和头指针的概念。 阅读全文

posted @ 2017-10-28 18:30 koushr 阅读(243) 评论(0) 推荐(0) 编辑

2017年9月4日

sql语句中开窗函数的使用

摘要: postgresql和8.0版本之后的mysql,均支持开窗函数。 开窗函数主要分为两类: 一、排序函数: row_number() over(partition by xxx order by yyy) partition by xxx 表示按照xxx字段分区(分区就是分组的意思),如果没有par 阅读全文

posted @ 2017-09-04 00:11 koushr 阅读(3123) 评论(0) 推荐(1) 编辑

2017年7月23日

红黑树

摘要: RT 阅读全文

posted @ 2017-07-23 21:47 koushr 阅读(678) 评论(0) 推荐(1) 编辑

LRU、LFU

摘要: 146、LRU缓存 Least recently used,最近最少使用。在put一个键值对,或者get一个现存的键值对时, 把这个键值对置为最近使用。 个人感觉难点在于置为最近使用。如果用数组或者链表或者队列存储键值对的key,那么置为最近使用,就是把这个key放到首。换句话说,需要选择一个合适的 阅读全文

posted @ 2017-07-23 02:11 koushr 阅读(1125) 评论(0) 推荐(0) 编辑

2017年6月11日

rpc核心

摘要: 被面试官问过这样一个问题:“假如要你实现一个rpc框架,客户端和服务端你要考虑哪些东西?” rpc框架负责屏蔽底层的传输方式(tcp或者udp)、序列化方式(xml/json/二进制)和通信细节,服务调用者可以像调用本地接口一样调用远程服务,而不需要关心底层通信细节和调用过程。 rpc的组件一般有服 阅读全文

posted @ 2017-06-11 16:16 koushr 阅读(228) 评论(0) 推荐(0) 编辑

2017年5月24日

RPC简介

摘要: RPC(Remote Process Call Protocol),远程过程调用协议,是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。 RPC采用客户机/服务器模式,请求程序就是一个客户机,而服 阅读全文

posted @ 2017-05-24 14:26 koushr 阅读(521) 评论(0) 推荐(0) 编辑

2017年5月14日

分布式一些概念

摘要: 分布式系统定义: 分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。 分布式系统一些典型的问题: 通信异常: 分布式系统需要在各个节点之间进行网络通信,因此每次网络通信都会伴随着网络不可用的风险,比如说光纤被挖断了。另外,即使分布式系统各节点之间的 阅读全文

posted @ 2017-05-14 00:50 koushr 阅读(361) 评论(0) 推荐(0) 编辑

2017年4月28日

树、二叉树、二叉查找树、平衡二叉树、B树、B+树

摘要: 一、树 Tree 树是n个结点的有限集。n=0时称为空树。在任意一棵非空树中:①有且仅有一个根结点;②当n>1时,其余结点可分为m个互不相交的有限集,其中每一个集合本身又是一棵树,称为根的子树。 结点的分类 结点拥有的子树的个数称为结点的度。度为0的结点称为叶结点。度不为0的结点称为分支结点。分支结 阅读全文

posted @ 2017-04-28 11:12 koushr 阅读(648) 评论(0) 推荐(0) 编辑

2017年4月23日

阻塞队列BlockingQueue

摘要: BlockingQueue,是一个接口,支持泛型。BlockingQueue接口继承了Queue接口,Queue是队列的意思。Queue接口又继承了Collection接口。阻塞队列是一个额外支持两个操作的队列:在队列为空时,从队列中取元素的线程会阻塞。以及在队列满时,往队列里添加元素的线程会阻塞。 阅读全文

posted @ 2017-04-23 01:15 koushr 阅读(464) 评论(0) 推荐(0) 编辑

2017年4月19日

单调栈和前缀和

摘要: 单调栈是指 前缀和是指 阅读全文

posted @ 2017-04-19 23:04 koushr 阅读(643) 评论(0) 推荐(0) 编辑

2017年4月17日

AOP

摘要: 啥是AOP?为啥要有AOP呢?OOP用着不香吗? OOP是面向对象编程,AOP是面向切面编程。OOP全称是Object Oriented Programming,AOP全称是Aspect Oriented Programming,aspect就是面/方面/切面的意思。 假如要在一些核心业务模块添加一 阅读全文

posted @ 2017-04-17 23:38 koushr 阅读(553) 评论(0) 推荐(0) 编辑

2017年4月3日

kafka基本命令行使用

摘要: 1、查看kafka集群有哪些topic: kafka-topics.sh --list --bootstrap-server 172.17.16.4:9092 2、查看kafka集群所有topic分区及其副本情况: kafka-topics.sh --describe --bootstrap-ser 阅读全文

posted @ 2017-04-03 00:25 koushr 阅读(938) 评论(0) 推荐(0) 编辑

2016年10月28日

基于TCP协议的网络编程

摘要: TCP通信协议是一种可靠的传输层协议,它在通信的两端各建立一个Socket,从而在通信的两端之间形成虚拟网络链路。一旦建立了虚拟的网络链路,两端的程序就可以通过虚拟链路进行通信。Java使用Socket对象来代表两端的通信端口,并通过Socket产生IO流来进行网络通信。TCP协议使用重发机制,当一 阅读全文

posted @ 2016-10-28 14:23 koushr 阅读(225) 评论(0) 推荐(0) 编辑

2016年10月23日

双亲委派

摘要: 1、什么是双亲委派? 指的是当一个类加载器收到类加载请求时,他不会直接去加载这个类,而是会先把这个请求委托给自己的父加载器去加载。只有当父加载器无法加载这个类时,自己才会去加载。 2、双亲委派机制有什么好处? 避免类重复加载、防止核心Java API被篡改。 3、如何主动破坏双亲委派机制? 自定义一 阅读全文

posted @ 2016-10-23 18:49 koushr 阅读(3866) 评论(0) 推荐(0) 编辑

2016年10月22日

linux5种IO模型

摘要: 1、阻塞式IO 2、非阻塞式IO 3、IO多路复用 4、信号驱动式IO 5、异步IO 阅读全文

posted @ 2016-10-22 20:22 koushr 阅读(247) 评论(0) 推荐(0) 编辑

2016年10月16日

基于UDP协议的网络编程

摘要: UDP协议是一种不可靠的网络协议,它在通信实例的两端各建立一个Socket,但这两个Socket之间并没有虚拟链路,这两个Socket只是发送、接收数据报的对象。 Java使用DatagramSocket代表基于UDP协议的Socket,DatagramSocket本身只是码头,不维护状态,不能产生 阅读全文

posted @ 2016-10-16 15:13 koushr 阅读(276) 评论(0) 推荐(0) 编辑

2016年10月8日

多线程基础知识第六篇:多个线程之间共享数据的方式(卖票问题,存取款问题)

摘要: 多线程共享数据,其实要分为两种情况: 1.多线程执行相同的代码处理数据,最经典的问题就是卖票; 2.多线程执行不同的代码处理数据,最经典的问题就是银行存取钱。 卖票问题探究: 最初的代码是: public class Test1 { public static void main(String[] 阅读全文

posted @ 2016-10-08 22:29 koushr 阅读(321) 评论(0) 推荐(0) 编辑

2016年9月22日

JVM发展史和Java运行时内存区域

摘要: 目前三大主流JVM: Sun HotSpot:Sun于2009年被Oracle收购。 BEA JRockit:专注于服务器端应用。BEA于2008年被Oracle收购。 IBM J9:IBM公司开发,与BEA JRockit专注于服务端应用不同,IBM J9的市场定位与Sun HotSpot比较接近 阅读全文

posted @ 2016-09-22 15:48 koushr 阅读(719) 评论(0) 推荐(0) 编辑

2016年5月6日

多线程基础知识第五篇:ThreadLocal的使用

摘要: ThreadLocal变量默认只能被当前线程访问。可以用于单个线程上下文信息的存储,如requestId。 1、先调用ThreadLocal的无参构造器,然后再调用set方法赋值,这种情况下,变量只能在当前线程访问,在其他线程访问不到,get返回null。 public static void ma 阅读全文

posted @ 2016-05-06 15:00 koushr 阅读(10027) 评论(0) 推荐(2) 编辑

2016年4月11日

tcp第二篇:四次挥手

摘要: 客户端和服务端都可能主动关闭连接。 第一步:主动方向被动方发送FIN,关闭主动方到被动方的数据传输,主动方进入FIN_WAIT_1状态。 第二步:被动方向主动方发送ACK,被动方进入CLOSE_WAIT状态,主动方进入FIN_WAIT_2状态。 第三步:被动方向主动方发送FIN,关闭被动方到主动方的 阅读全文

posted @ 2016-04-11 19:34 koushr 阅读(351) 评论(0) 推荐(0) 编辑

2016年4月6日

多线程基础知识第四篇:volatile的应用

摘要: 参考https://www.cnblogs.com/dolphin0520/p/3920373.html 写的真是好,解释了原子性、可见性、有序性、指令重排序、内存屏障,要多读几遍才能慢慢理解。 在并发编程中,通常会遇到三个问题:原子性问题、可见性问题、有序性问题。 原子性:一个操作或者多个操作,要 阅读全文

posted @ 2016-04-06 01:11 koushr 阅读(340) 评论(0) 推荐(0) 编辑

2016年3月23日

链表题目

摘要: 1、反转链表 2、K个一组反转链表 3、合并两个有序链表 阅读全文

posted @ 2016-03-23 23:49 koushr 阅读(482) 评论(0) 推荐(0) 编辑

2016年3月16日

tcp第一篇:三次握手

摘要: 用wireshark抓包 display filters指定tcp协议、本机和目标服务器ip。 名称解释: 第一行Frame表示物理层的数据帧概况。 第二行Ethernet II表示数据链路层以太网帧头部信息。Ethernet中文意思就是以太网。 第三行Internet Protocol Versi 阅读全文

posted @ 2016-03-16 20:00 koushr 阅读(1027) 评论(0) 推荐(0) 编辑

jdk自带命令工具

摘要: JAVA_HOME/bin目录中有很多有用的命令:jps、jstat、jinfo、jmap、jhat、jstack。本文以监听2181端口的zookeeper应用为例讲解。 jps:虚拟机进程状况工具 jps -mlv 如下: [root@centos4 bin]# jps -mlv 1366 or 阅读全文

posted @ 2016-03-16 15:38 koushr 阅读(378) 评论(0) 推荐(0) 编辑

2016年3月14日

用户态、内核态及零拷贝

摘要: 用户空间:user space。 内核空间:kernel space。 应用程序在访问磁盘文件时,会先利用DMA技术把文件内容读取到内核缓冲区,然后再把内容从内核缓冲区copy到用户缓冲区中。如果程序要输出,则会把用户缓冲区的内容再copy到内核的socket缓冲区中,利用DMA输出。以下是原理图: 阅读全文

posted @ 2016-03-14 17:57 koushr 阅读(1654) 评论(0) 推荐(0) 编辑

2016年3月12日

缓存击穿、穿透和雪崩

摘要: 一、缓存击穿 缓存击穿是指一个热点key突然失效,从而导致大量的请求查询数据库。 预防缓存击穿的方案: 1、热点key不设置过期时间。 2、使用锁,当key失效时,只允许一个请求去读数据库并把数据刷到缓存中。 二、缓存穿透 缓存穿透是指查询一个一定不存在的数据,如查询id=-1的数据信息,由于缓存不 阅读全文

posted @ 2016-03-12 00:43 koushr 阅读(156) 评论(0) 推荐(0) 编辑

2015年8月7日

布隆过滤器

摘要: 参考https://juejin.im/post/5de1e37c5188256e8e43adfc 什么是布隆过滤器? 布隆过滤器本质上是一个很长的位数组和一系列哈希函数。位数组元素一开始全是0。往布隆过滤器里放元素时,假如有n个哈希函数,则先用这n个哈希函数处理元素,得到n个数字,然后把数组对应索 阅读全文

posted @ 2015-08-07 19:27 koushr 阅读(244) 评论(0) 推荐(0) 编辑

简单工厂模式、工厂方法模式

摘要: 第一、简单工厂模式: 有三种组件,一个接口,n个实现类,一个工厂类。在创建对象的时候,利用简单工厂模式,可以根据传参的不同,创建出不同的实现类对象。 实现步骤: 1.创建接口 2.创建n个实现类 3.创建工厂类,里面有返回值类型为接口的方法 见如下代码: interface Sender { pub 阅读全文

posted @ 2015-08-07 18:30 koushr 阅读(181) 评论(0) 推荐(0) 编辑

代理模式(静态代理、动态代理)

摘要: 代理模式的由来:当调用某个对象时,不关心是否准确得到该对象,而是只要一个能提供对应功能的对象即可,这时我们可以为该对象提供一个代理对象,由代理对象控制对源对象的引用。 第一.静态代理 常见静态代理模式:一个接口,两个实现类,分别为被代理类和代理类,被代理类执行正常业务逻辑,代理类中进行如下操作: 1 阅读全文

posted @ 2015-08-07 17:41 koushr 阅读(197) 评论(0) 推荐(0) 编辑

单例模式、策略模式、模板方法设计模式探究

摘要: 第一.单例模式 如果在应用中一个类只能创建一个实例,则这个类被称为单例类,这种模式被称为单例模式,通常用于创建一次实例就需要耗费很多资源或者无需创建多个实例的情况,比如说线程池、数据源,或者spring容器中的单例对象。单例模式创建步骤基本是固定的,即: 1.私有化无参构造器; 2.创建私有化的静态 阅读全文

posted @ 2015-08-07 15:26 koushr 阅读(701) 评论(0) 推荐(0) 编辑

2015年7月25日

git第二篇:常用命令

摘要: git clone: 从远程主机克隆一个版本库:git clone <版本库地址> <本地目录名>。如git clone https://github.com/jquery/jquery.git。这将在本机生成一个jquery目录,因为远程主机的版本库名称是jquery。如果我们想指定不同的目录名, 阅读全文

posted @ 2015-07-25 15:28 koushr 阅读(299) 评论(0) 推荐(0) 编辑

导航