自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(67)
  • 收藏
  • 关注

原创 消息队列学习

Kafka 2.0升级实战!携程的经验有何可借鉴之处

2021-07-27 20:46:37 144 1

原创 ZooKeeper学习收藏

Curator的三种缓存

2021-03-16 19:40:40 136

原创 Linux学习

linux awk命令详解

2021-03-16 10:13:54 131

原创 微服务学习收藏

Service Discovery with Apache Curator

2021-03-05 16:18:16 91

原创 分布式事务收藏

DTP模型之一:(XA协议之一)XA协议、二阶段2PC、三阶段3PC提交Saga分布式事务解决方案与实践分布式事务选型的取舍阿里分布式事务解决方案:Seata

2020-03-09 22:04:27 102

原创 JVM学习收藏

关于G1收集器Java Hotspot G1 GC的一些关键技术

2020-01-10 21:28:08 94

原创 Git命令

.gitignore文件: 定义某些文件不追踪。注意:.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的,需要从版本管理中删除。命令行下,需要先建立.gitignore忽略文件,将忽略规则写入文件中。git commit –a –m “提交信息”将已追踪修改的文件直接提交到仓库1 文件必须是已追踪的,...

2020-01-08 15:43:41 248

原创 Spring学习资料收藏

此blog 用来mark 发现的不错的Spring学习资料spring AOP源码分析(一)spring AOP源码分析(二)spring AOP源码分析(三)

2020-01-05 12:50:30 129

原创 Python中pack和unpack函数的Java替换写法

Python在实现Socket网络通信时,发送数据前需要对数据pack后,使用socket发送时,对接收数据需要用unpack来解析,伪代码如下socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)socket.connect();arg1=int(1)arg2=short(2)arg3=short(3)#传递一个int型,...

2019-11-29 18:07:41 2195

原创 Mysql学习资料收藏

Mysql 学习网站淘宝的数据库内核月报

2019-11-12 20:01:25 177

原创 Btrace安装与脚本编写

1、首先去官网下载安装包https://github.com/btraceio/btrace/releases最新版本是v1.3.11.3,选择下载btrace-bin-1.3.11.3.tgz,下载到本地后解压到某一目录,例如D:\tools\btrace2、配置BTRACE_HOME和PATH变量3、配置完毕后,运行btrace --version命令后,显示如下,安...

2019-04-25 12:44:37 673

原创 ThreadLocal理解

       ThreadLocal是线程的局部变量,实现原理是Thread类中有一个ThreadLocalMap类的threadlocals变量,此变量是属于当前线程的,key为代码中声明的ThreadLocal变量,value为线程要保存的变量副本(注意此副本的问题,每个线程使用时,必须是new 出来的新value)。之所以要用map这种数据结构,是因为代码中可能有多个ThreadLocal变...

2018-12-02 12:17:41 148

转载 Tomcat源码分析收藏

偶尔看到了大神写的几篇关于Tomcat的分析文章,写的太好了,收藏起来。Tomcat源码分析——类加载体系Tomcat源码分析——SERVER.XML文件的加载与解析 Tomcat源码分析——server.xml文件的加TOMCAT源码分析——生命周期管理Tomcat源码分析——启动与停止服务 TOMCAT源码分析——请求原理分析(上)TOMCAT源码分析——请求原理分...

2018-11-22 22:47:03 156

原创 OSI七层模型

看到一篇关于OSI7层模型的图片,很强大。(图片来自这里一张非常强大的OSI七层模型图解)OSI模型上层(会话层,表示层,应用层)处理用户接口、数据格式、应用访问。OSI模型下层(物理层,数据链路层,网络层,传输层)处理数据在网络介质中的传送。每层说明应用层: 应用层为用户提供常用的应用程序,并实现网络服务的各种功能。常用的电子邮件、上网浏览等网络服务,都是应用层的程序表示...

2018-11-21 21:28:55 250

原创 Redis持久化

Redis支持内存数据持久化,主要包括两种方式:RDB持久化和AOF持久化。      RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot)。      AOF 持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集。 AOF 文件中的命令全部以 Redis 协议的格式来保存,新命令会被追加到文件的末尾...

2018-11-20 20:19:47 129

原创 ZooKeeper与CAP

CAP理论:一个分布式系统不可能满足一致性(consistency)、可用性(Availability)、分区容错性(Partition tolerance)这三个基本需求。1、一致性可分为:(参考ZooKeeper和CAP理论及一致性原则)     ①强一致性(strong consistency)。任何时刻,任何用户都能读取到最近一次成功更新的数据。  ②单调一致性(monotoni...

2018-11-15 21:46:58 4429

原创 HTTP基础

1、Http是无状态的协议,但是为了实现保持状态的功能,引入了cookie技术。2、Http可以使用的方法有get,post,put,delete,options,trace,connect。3、TCP协议中三次握手四次挥手。参考 TCP协议中的三次握手和四次挥手   socket的TCP的三次握手&&四次挥手     TCP协议是面向连接的,可靠的。4、长连接和短...

2018-11-13 20:45:41 113

原创 ZooKeeper基本概念

记录下zk的学习。ZooKeeper是一个开源的分布式协调服务。分布式应用程序可以基于zk实现数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁和分布式队列等。1、zk数据模型       zk服务器在内存中维护着一个共享的树形结构的名字空间,由一系列ZNode的数据结点组成。zk将全量数据存储在内存中,以此来实现提高服务器吞吐和减少延迟。 ...

2018-11-13 09:48:51 271

原创 JAVA并发编程之基本概念

1、锁是对对象访问的时候,通过对对象加锁,防止并行访问的控制手段;对对象加锁成功,代表我持有这个对象的监视器,解锁,代表释放了这个对象的监视器。拿到对象的监视器,肯定是对对象加锁成功的;对对象加锁成功 ,程序可以主动Watiing或者Time_waiting在对象监视器上。2、锁与监视器区别参见以下文章 Java锁和监视器  java-jvm-jstack-(监视器和锁的概念) Syn...

2018-11-08 22:59:15 595

原创 Java concurrent包中常用的类

1、 Atomic类     基于 compareAndSwap,即CAS操作实现。 CAS指令有两个步骤:冲突检测和更新操作。     CAS指令需要3个操作数:内存位置(V),旧的预期值(A),新值(B)。CAS指令执行时,首先比较内存位置V处的值和A的值是否相等(冲突检测),如果相等,就用新值B覆盖A(更新操作),否则,就什么也不做。2、ConcurrentHashMap  ...

2018-11-08 22:34:45 2118

原创 大表中大量数据更新问题

最近遇到个大批量数据更新表字段问题,需要将A表中m字段保存的字符串进行某种统一格式的替换,where条件类似m like ‘aaa%’。源数据有1700万条,需要更新的数据有200多万条。因为所更新的字段没有索引,如果用 update set from where m like 'aaa%' 更新时需要锁表,这在生产环境是不允许的。以下是更新数据的方法。方法:1、先建立备份表backup,...

2018-11-08 22:04:39 6261 3

原创 MySQL InnoDB存储引擎:事务实现

事务基础知识1、事务ACID特性:    Atomic(原子性): 事务要么成功,要么失败。    Consistency(一致性): 事务会把数据库从一种一致状态转换为另一种一致状态。     Isolation(隔离性): 事务之间相互隔离,互不影响。    Durability(持久性): 事务一旦提交,结果是永久性的。2、数据库事务的隔离级别有4个。由低到高依次为R...

2018-11-08 21:50:02 728

原创 MySQL Innodb存储引擎:索引

1,Innodb存储引擎索引的使用的B+树索引本身并不能找到具体的一条记录,能找到只是该记录所在的页。然后数据库通过把页读入到内存,再在内存中进行查找,最后得到要查找的数据。B+树的叶子节点是数据页。页中有多条记录。2、B+树特点:所有记录节点都是按键值的大小顺序存放在同一层的叶子节点,由各叶子节点指针进行连接。3、B+树索引分为聚集索引和辅助索引,两者不同的是,叶子节点存放的是否是真...

2018-11-08 10:04:52 475

原创 Spring IOC 学习笔记

1、IoC思想 .如何理解好Ioc呢?理解好Ioc的关键是要明确“谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了”,那我们来深入分析一下:●谁控制谁,控制什么:传统Java SE程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象;而IoC是有专门一个容器来创建这些对象,即由Ioc容器来控制对象的创建;谁控制谁?当然是IoC 容器控制了对象;...

2018-11-07 22:48:17 228

原创 Spring AOP 学习笔记

1、Spring AOP中的动态代理主要有两种方式,JDK动态代理和CGLIB动态代理。JDK动态代理通过反射来接收被代理的类,并且要求被代理的类必须实现一个接口。JDK动态代理的核心是InvocationHandler接口和Proxy类。如果目标类没有实现接口,那么Spring AOP会选择使用CGLIB来动态代理目标类。2、@Transactional声明式事务    Spring事务...

2018-11-07 22:31:28 106

原创 Linux命令之top

top 动态地查看进程占用资源的情况,ps命令输出的只是当前查询状态下进程瞬间的状态信息。top可以按照CPU使用,内存使用,执行时间等指标对进程进行排序。默认情况下,top是按照CPU使用率来进行排序的,按P键进入CPU使用率排序,按字母M键按照Memory的使用率来排序。内部命令如下:top [-] [d] [p] [q] [c] [C] [S] [s]  [n]d 指定每两次屏幕...

2018-11-06 23:09:57 315

原创 Linux命令之vi

vi命令是Visual Interface的简称,是Linux系统中最通用的全屏幕纯文本编辑器。vim是vi的增强版。vim增加了代码补全,错误跳转等新功能。vi编辑器支持编辑模式和命令模式,编辑模式下可以完成文本的编辑功能,命令模式下可以完成对文本的操作命令。默认情况下,打开vi编辑器后自动进入命令模式。从命令模式切换到编辑模式使用“A”“a”“O”“o”“I”“i”,从编辑模式切换到命...

2018-11-06 21:21:13 144

原创 Linux命令之split

split可以分割大文件,支持按照行数和按照大小分割两种模式。分割后,源文件不会改变,派生出多个小文件。split [--help][--version][-<行数>][-b <字节>][-C <字节>][-l <行数>][要切割的文件][输出文件名] 例如:按照64m分割big_bin文件split -b 64m big_bin...

2018-11-06 21:00:24 337

原创 Linux命令之sed

SED(Stream Editor)是一种非交互式的流编辑器,修改流经它的文本内容。sed处理文本时是以行为单位,每处理完一行就会立即打印出来,然后再处理下一行。默认条件下,sed所有操作只是对“流”的操作,因此不会改变源文件,可通过输出重定向保存处理后的结果或者通过-i参数直接修改源文件本身。sed [options] 'command' filename 或sed [options][...

2018-11-06 20:19:37 141

原创 Linux命令之 ps,|,grep

1、Linux命令之 psps:将某个进程显示出来        -A  显示所有程序。         -e  此参数的效果和指定"A"参数相同。        -f  显示UID,PPIP,C与STIME栏位。UID PID PPID C STIME TTY TIME CMD各相关信息的意义:UID: 程序被该 UID 所拥有PID :就是这个程序的 IDPPI...

2018-10-30 10:01:41 386

原创 ConcurrentHashMap源码之put和get方法

以下ConcurrentHashMap类是基于jdk1.7来分析。JDK1.7中ConcurrentHashMap是通过segments数组和HashEntry数组+链表来进行实现的。利用锁分段技术,支持任务数量线程的读和一定数量线程的写。我们看下ConcurrentHashMap是怎么进行put和get操作的。1、ConcurrentHashMap的put方法不能插入null值(为什...

2018-10-25 22:40:54 2558

原创 HashMap源码之get与put方法

HashMap是基于数组和链表来存储键值对对象的,我们简单看下get和put方法的源码。1、我们调用put方法来存储键值对时,它先调用hash方法来计算hashcode,然后用hashcode和Entry数组的大小来做按位与操作,求出所在的Entry数组的下标位置。通过key与下标所在的Entry链表进行判断是否已经存在此Key,如果存在就重新设置value为新的值,不存在则加入到Entry链...

2018-10-24 12:56:19 182

原创 ReentrantLock源码之公平锁与非公平锁

ReentrantLock类与Synchronized关键字的主要区别之一就是可以实现公平锁和非公平锁。我们看下ReentrantLock类是如果实现公平锁与非公平锁的。1、非公平锁的实现ReentrantLock默认构造函数为非公平锁(为什么?因为非公平锁的实现可以减少线程的切换,提高执行效率。)public ReentrantLock() { sync = new...

2018-10-22 23:15:42 239

原创 JVM内存分配与回收学习(2)

1、垃圾收集器什么时候开始回收?(1)新生代有一个Eden区和两个survivor区(From survivor 和To Survivor),每次使用Eden和其中一个Survivor(From Survivor),创建对象时,首先会将对象放入Eden区,如果放不下就会引发一次发生在新生代的minor GC(清理Eden和From Survivor空间),将存活的对象复制到 To surviv...

2018-09-29 22:08:10 495

原创 JVM 内存分配与回收学习(1)

随笔。记录各类型在堆内存中占用内存空间大小的理解:引用类型在堆中占用4字节,byte,boolean基本类型在堆中占用1字节,char,short基本类型在堆中占用2字节,int,float基本类型在堆中占用4字节,long,double基本类型在堆中占用8字节。 用代码验证下,以下代码的vm参数为-Xmx20m -Xms20m  -XX:+HeapDumpOnOu...

2018-09-28 21:15:39 267

原创 Java实现BlockingQueue队列(二)

之前写过Java实现阻塞队列 是以链表的形式实现的,最近闲着,又试了下数组形式的实现。直接上代码吧。package com.xtli.queue;import java.util.Random;/* * 阻塞队列。put方法,take方法。 * 数组实现。 * 定义队列的head和tail: * head 指向第一个值; * tail 指向最后一个为null的下标; * ...

2018-09-25 17:01:58 239

原创 排好序的数组中,找出两数之和为m的所有组合

package com.xtli.controller.leetCode;import java.util.HashMap;import java.util.Map;/* * 排好序的数组中,找出两数之和为m的所有组合。 */public class APlusBEqualMInArray { public static void main(String[] args) { i

2017-12-22 20:19:59 1274

原创 使用单向链表实现LinkedList

单向链表是指节点中的指针域只有一个,指针域只能沿着同一个方向移动的链表。Java.util包中提供了LinkedList,此LinkedList是基于双向链表实现的。本文基于单向链表实现LinkedList中的某些方法,主要是学习使用下单向链表这种数据结构。

2017-10-26 22:39:06 1779

原创 Eclipse中将子模块项目转换为Maven Project

在git上检出了一个包含两个子模块A,B的父项目project_C,现在想把A,B两个子模块转换为Maven Project。但将project_C检出到eclipse后发现此时project_C是包含两个A,B文件夹的项目,里面的代码是未编译过的java文件。试过"Update Project"或者“Convert To Faceted Form”等操作均不能转换为两个Maven Project

2017-10-11 17:08:28 6168 2

原创 Java中利用String类进行文本处理

最近对文本字符串处理比较多,现总结下String处理字符串的方法,以及Java是如何利用String的方法进行文本处理的。

2017-09-28 22:05:29 1586

空空如也

空空如也

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

TA关注的人

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