自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

赶路人儿

改变世界的是这么一群人,他们寻找梦想中的乐园,当发现找不到时,就亲手创造了她......

原创 sed 命令

sed 是一种在线编辑器,主要用来自动编辑一个或多个文件。 工作原理:sed一次处理一行内容,处理时把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),然后用sed命令处理缓冲区中的内容,最后把缓冲区内容送往屏幕,接着处理下一行,这样不断重复,直到文件末尾。 注:...

2020-05-20 17:02:47 22 0

原创 kafak producer 配置介绍

producer的配置中,bootstrap.servers、key.serializer、value.serializer 这三个是必须的。接下来我们介绍一些重要的配置,更详细的配置,请参考官网: https://kafka.apache.org/documentation/#configur...

2020-05-15 18:03:45 79 0

原创 kafka pruducer api介绍

对于kafka client建议使用java版本的api(kafka0.9版本中客户端代码使用java重构了一次),通过下面配置添加:(下面配置只会添加java版本的jar) <dependency> <groupId>org.apache.kafka</g...

2020-05-15 17:54:40 31 0

原创 Kafka producer异步发送在某些情况会阻塞主线程

最近发现一个Kafka producer异步发送在某些情况会阻塞主线程,后来在排查解决问题过程中发现这可以算是Kafka的一个说明不恰当的地方。 问题说明 在很多场景下我们会使用异步方式来发送Kafka的消息,会使用KafkaProducer中的以下方法: public Future<...

2020-05-13 20:45:33 52 0

原创 left join整理

一、left join基本语句: 我们先看两张表,用户表: mysql> select * from user_test; +----+------+-----+-----+ | id | name | sex | age | +----+------+-----+-----+ | ...

2020-05-12 21:05:20 51 0

原创 kafka的版本号与版本演进

1、kafka版本命名规则: 在1.x之前的版本,基本遵循4位版本号,例如:0.8.2.2、0.9.0.1、0.10.0.0... 在1.x之后,kafka 全面启用了遵循 Major.Minor.Patch 的三位版本规则,其中Major表示大版本,通常是一些重大改变,因此彼此之间功能可能会...

2020-05-09 16:55:42 143 0

原创 C++11新特性:default函数、delete函数

1、默认函数: C++ 的类有四类特殊成员函数,它们分别是:默认构造函数、析构函数、拷贝构造函数以及拷贝赋值运算符。这些类的特殊成员函数负责创建、初始化、销毁,或者拷贝类的对象。 如果程序员没有显式地为一个类定义某个特殊成员函数,而又需要用到该特殊成员函数时,则编译器会隐式的为这个类生成一个默...

2020-04-29 15:46:43 43 0

原创 C++四种强制类型转换介绍

1、C风格的强制转换: C风格的强制转换(Type Cast)容易理解,不管什么类型的转换都可以使用使用下面的方式。 TypeName b = (TypeName)a; 规则: 将浮点型数据赋值给整型变量时,舍弃其小数部分。 将整型数据赋值给浮点型变量时,数值不变,但是以指数形式存储。 ...

2020-04-26 17:23:45 36 0

转载 C++:关于函数返回的一件小事——是返回值还是返回引用?

C语言中的指针的错误使用,是很多内存错误的根源。C++中引入了_引用(reference)_,来化解指针的毒。但是引用并不是一剂完全的解毒药,还有好多毒还不能解。下面这个毒就是个例子: int& f() { int a = 1; return a; } 上面的代码,函数f()...

2020-04-21 21:19:29 66 0

原创 一个tcp支持多少个http

问题1:客户端在与服务器建立了一个TCP连接后是否会在一个 HTTP 请求完成后断开? 在 HTTP/1.0 中,一个服务器在发送完一个 HTTP 响应后,会断开 TCP 链接。但是这样每次请求都会重新建立和断开 TCP 连接,代价过大。所以虽然标准中没有设定,某些服务器对 Connection...

2020-04-20 19:40:54 109 0

原创 C++ protobuf示例

https://blog.csdn.net/liuxiao723846/article/details/99884741这边文章主要介绍了如何在linux上安装protobuf,以及如何使用。本文在此基础之上,做一些深入的讨论的总计。 1、for循环repeated字段: 1.1)对于基本类型...

2020-04-17 12:41:44 52 0

原创 java序列化、反序列化

Java 序列化是 JDK 1.1 时引入的一组开创性的特性,用于将 Java 对象转换为字节数组,便于存储或传输。此后,仍然可以将字节数组转换回 Java 对象原有的状态。 序列化的思想是“冻结”对象状态,然后写到磁盘或者在网络中传输;反序列化的思想是“解冻”对象状态,重新获得可用的 Java...

2020-04-14 20:25:20 64 0

转载 位运算符及其应用

一、C语言的六种位运算符: & 按位与 | 按位或 ^ 按位异或 ~ 取反 << 左移 >> 右移 1.按位与运算 按位与运算符"&"是双目运算符。 其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结...

2020-03-23 01:31:42 51 0

原创 按位与、或、异或运算以及其应用

我们都知道逻辑运算上有与(&&)、或(||)、非(!)三个运算。在计算机数值计算中,按位运算一共有6种:左移(<<)、右移(>>)、与(&)、或(|)、取反(~)、异或(^)运算。 1、定义: 1)按位与运算(&):双目运算符,其功能...

2020-03-23 01:24:25 69 0

原创 java BitSet类

我们先来看一下java.utils.BitSet类的介绍。 一个Bitset类创建一种特殊类型的数组来保存位值。BitSet中数组大小会随需要增加。这和位向量(vector of bits)比较类似。这是一个传统的类,但它在Java 2中被完全重新设计。 1、构造方法: BitSet bs...

2020-03-20 17:43:48 56 0

原创 git 查看历史版本

假设我们需要查看某个文件的历史修改记录,可以用一下方式: 1、命令行: 1)进入到文件对应目录,执行: git log --pretty=oneline 文件名 或者 git log 文件名 输出 ...

2020-03-18 15:43:53 77 0

原创 C++函数返回值

首先,强调一点,和函数传参一样,函数返回时也会做一个拷贝。从某种角度上看,和传参一样,也分为三种: 一般(传统)返回:返回任意类型的数据类型,会有一个拷贝,对于复杂对象效率低下;例如:int test(){}或者 Point test(){} 返回指针:返回一个指针,也叫指针类型的函数;例如:...

2020-03-12 19:03:15 64 0

原创 C++指针、引用

1、取地址运算符、间接寻址运算符: & 取地址运算符,返回变量的内存地址(指针)。 * 是间接寻址运算符(解引用),是 & 运算符的补充,返回变量所指定地址的变量的值。 #include <iostrem> using namespace std; main(...

2020-03-11 20:05:38 30 0

原创 C++函数的参数传递

1、三种参数传递方式: 1)值传递: 形参是实参的拷贝,改变形参的值并不会影响外部实参的值。从被调用函数的角度来说,值传递是单向的(实参->形参),参数的值只能传入,不能传出。默认是值传递。 2)指针传递: 形参也是实参的拷贝,只不过拷贝的是实参的地址。当在函数内对形参的指向操作时,...

2020-03-11 17:02:39 22 0

原创 Java 7、8下的HashMap分析

1、hashMap结构: 我们先来看下hashmap的结构 hashmap默认大小(capacity)是16个元素(必须是2的幂); 加载因子(loadfactory)为0.75:即当元素个数超过容量长度的0.75倍时,进行扩容,扩容大小是原大小的一倍(左移1位操作: <<1...

2020-03-06 19:12:34 59 0

转载 原码, 反码, 补码 详解

一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1、机器数 一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1. 比如,十进制中的数 +3 ,计算机字长为8位,转换成二进制就...

2020-03-06 17:11:33 37 0

原创 BIO之Stream

本节主要介绍BIO的文件IO相关操作。 传统的IO主要是通过流来完成的具体操作。流(Stream)主要有两种: 字节流:InputStream和OutputStream 字符流:Reader和Writer 如下图,上面是字节流,下面是字符流: 此外,根据功能可以将流分成以下种类...

2020-02-24 15:46:55 49 0

转载 Java I/O模型从BIO到NIO和Reactor模式

Java I/O模型 同步 vs. 异步 同步I/O 每个请求必须逐个地被处理,一个请求的处理会导致整个流程的暂时等待,这些事件无法并发地执行。用户线程发起I/O请求后需要等待或者轮询内核I/O操作完成后才能继续执行。 异步I/O 多个请求可以并发地执行,一个请求或者任务的执行不会导致整个流...

2020-02-23 20:01:56 73 0

原创 NIO之Channel

1、基本概念 Java NIO中,channel用于数据的传输,类似于传统BIO中的流(IOStream)的概念。 我们都知道,系统的I/O都分为两个阶段: 等待就绪:从IO设备将数据读取到内核中的过程; 操作:将数据从内核复制到进程缓冲区的过程。 Channel就可以看作是IO设备和内核...

2020-02-23 19:45:09 41 0

原创 使用NIO——FileChannel按行读取文件

读取字符文件时,如果中途我们想输出字符串要特别小心。下面的代码在输出文本内容时,很可能产生中文读取再输出的乱码: private static void byteBuffer() throws IOException { RandomAccessFile randomAccessFile ...

2020-02-23 14:44:01 245 0

原创 查看java线程

我们知道java线程使用的是底层操作系统"轻量级线程"+"内核线程"的1:1模型,那么我们如何查看一个运行的java进程中线程数呢? 1、linux上查看进程中线程数: 主要有以下三种方法: 1)top -Hp pid $ top -Hp 1212...

2020-02-16 14:43:53 40 0

原创 java编译期、运行期

Java程序从源文件创建到程序运行要经过两大步骤: 编译期:也叫前期,即源文件由编译器编译成字节码(ByteCode) 运行期:也叫后期,即字节码由java虚拟机解释运行。 因为java程序在后期运行时除了经过JVM的解释运行,还存在一种JIT运行,所以说Java被称为半解释语言( "...

2020-02-15 14:14:53 39 0

原创 JVM内存模型

网上关于JVM模型的文章很多,本文旨在根据自己的理解写一点关于JVM模型的知识点。 java与C++之间有一堵由内存动态分配和垃圾回收技术所围城的高墙,墙外的人想进来,墙内的人却想出来。 一、JVM运行时数据区: 由如下5个部分组成: 1、程序计数器: 程序计数器,可以看做是当前线程...

2020-02-10 17:54:58 52 0

原创 谨用ArrayList中的subList方法

0、subList方法api: Parameters: fromIndex low endpoint (inclusive) of the subList toIndex high endpoint (exclusive) of the subList Returns: a view of...

2020-01-23 14:33:49 57 0

原创 java fail-fast机制

fail-fast的解释 在系统设计中,快速失效是一种可以立即报告任何可能表明故障的机制。快速失效通常设计用于停止正常操作,而不是试图继续可能存在缺陷的过程。这样做的好处是可以预先识别出一些错误情况: 一方面可以避免执行复杂的其他代码; 另外一方面,这种异常情况被识别之后也可以针对性的做一些...

2020-01-23 14:28:18 38 0

原创 双括号初始化java集合

双括号初始化集合 对于set、list、map集合,可以使用如下的方式进行初始化: Set<String> set1 = new HashSet<String>(){{ add("a"); add("b"); }}; Li...

2020-01-22 15:53:46 93 0

转载 dwr实现Reverse Ajax推送技术的三种方式

DWR2.x的推技术也叫DWR Reverse Ajax(逆向Ajax)主要是在BS架构中,从服务器端向多个浏览器主动推数据的一种技术。在DWR所开的线程中使用Reverse Ajax时,通过WebContextFactory.get()获取WebContext对象,进而获取脚本Session。 ...

2020-01-08 11:52:56 75 0

原创 springboog+websocket

JavaEE 7中出了JSR-356:Java API for WebSocket规范;不少Web容器,如Tomcat,Nginx,Jetty等都支持WebSocket;同时绝大多数浏览器也支持webSocket。 接下来我们使用springboot来搭建一个websocket服务器部署到tom...

2020-01-08 11:35:20 51 0

原创 WebSocketd使用介绍

WebSocketd是WebSocket的守护进程(命令行工具),负责处理WebSocket连接,并启动服务器应用程序来处理WebSockets,在应用程序和Web浏览器之间传递消息,无需任意依赖包且进程独立。WebSocketd是一款非常特别的WebSocket服务器,它的最大特点是后台脚本不限...

2020-01-08 11:34:20 221 0

原创 服务器推技术调研

最近遇到一个需求:需要开发一个页面,能够像jenkins那样,执行服务器上的shell脚本,并且将脚本信息实时显示到页面上。由于脚本功能很复杂,执行的时间很长,而且执行过程中的信息需要实时显示出来。所以使用传统http的请求-响应方式无法实现,于是开始调研这一需求如何实现,以下是调研过程。 这种...

2020-01-07 21:18:28 62 0

转载 Server-Sent Events 教程

服务器向浏览器推送信息,除了WebSocket,还有一种方法:Server-Sent Events(以下简称 SSE)。本文介绍它的用法。 一、SSE 的本质 严格地说,HTTP 协议无法做到服务器主动推送信息。但是,有一种变通方法,就是服务器向客户端声明,接下来要发送的是流信息(stre...

2020-01-07 20:41:34 55 0

原创 js设置iframe子页面中div高度

首先给出一个结论: div节点高度要实现百分比,其父节点必须要有确定的高度。所以在body节点下的子节点若想要用百分比来确定高度时,就必须给body给定一个高度。 举一个实际的例子:我们的页面通常是嵌套iframe,iframe设置的height是100% main.html <if...

2020-01-07 19:59:47 94 0

原创 jquery动态设置滚动条位置

假设有一个div,里面会不断append新的内容,当超过一定高度后会出现滚动条。 但是新内容append后,滚动条的位置始终不变,会在顶部。这种体验很不好,我们希望能够动态调整滚动条位置到最新数据处。 关于滚动条jQuery 提供了一下方法: scrollTop() 方法,可以用来返回或设置...

2020-01-07 19:20:40 415 0

原创 jquery highlight高亮插件使用

jquery highlight官网:https://bartaz.github.io/sandbox.js/jquery.highlight.html 该插件可以方便的进行高亮处理。 示例: <!DOCTYPE html> <html> <head>...

2020-01-07 19:10:50 54 0

转载 WebSocket 教程

一、为什么需要 WebSocket? 初次接触 WebSocket 的人,都会问同样的问题:我们已经有了 HTTP 协议,为什么还需要另一个协议?它能带来什么好处? 答案很简单,因为 HTTP 协议有一个缺陷:通信只能由客户端发起。 举例来说,我们想了解今天的天气,只能是客户端向服务器发出请...

2020-01-07 14:14:02 28 0

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