自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 搜索引擎学习总结

目前市面上流行的搜索引擎软件,主流的就两款:Elasticsearch 和 Solr,这两款都是基于Lucene 搭建的,可以独立部署启动的搜索引擎服务软件。由于内核相同,所以两者除了服务器安装、部署、管理、集群以外,对于数据的操作 修改、添加、保存、查询等等都十分类似。

2023-02-05 14:29:08 562

原创 Kafka原理总结

Kafka是一个开源的分布式流式处理平台,在这个平台上可以发布、订阅以及处理数据流,具有强大的吞吐能力,让Kafka成为了一个高性能的发布与订阅消息系统一:概念理解Broker部署Kafka进程的服务被称之为Broker,Broker会接收Producer的消息,持久化到本地,然后Comsumer通Pull的形式进行消息拉取,通常使用集群的形式进行部署Producer生产者,即发送消息的一方,往Broker中写入数据Consumer消费者,即消费消息的一方,从Broker中获取数

2021-08-28 16:21:51 1377

原创 RocketMQ原理梳理总结

RocketMQ是阿里对外开源的一种分布式消息中间件,在阿里内部被叫做MetaQ,具有良好的可靠性、可用性以及稳定性一:概念理解NameServer路由服务,类似于kafka中的zk,主要存储了Broker的路由信息,供Producer和Consumer使用,不然Producer怎么知道往哪个Broker发送消息,多个NameSever之间是互相独立且没有通信的,每个NameSever都会保存所有路由信息。Broker部署RocketMQ进程的服务被称之为Broker,Broker会接收

2021-07-28 22:19:18 2074

原创 Spring集成多数据源及事务中切换数据源问题解析

多数据源应用场景多数据源的应用很大程度上是为了满足多租户业务场景,多租户是一种软件架构技术,是实现如何在多用户环境下共用相同的系统或程序组件,并且可确保各用户间数据的隔离性,多租户的重点就是同一套程序下实现多用户数据的隔离。因此,多数据源就在这种场景下应运而生。目前是实现多数据源的技术方案大致可以分为三类1)每个用户都对应一个独立的数据库2)每个用户共享数据库,同时每个用户对应一个独立的schema3)通过在表中增加一个字段标识来区别数据所属的用户上面三种数据隔离的实现方式都会有自己

2020-11-12 22:46:53 4164

原创 基于redis的分布式锁实现

1.背景介绍随着微服务的发展,越来越多的系统架构由原来的单体结构拆分出多个小型的组件,部署在分布式环境中,分布式环境中的数据一致性是微服务架构需要关注和解决的问题,因此分布式锁应运而生,常用的分布式锁的实现方式有redis、zookeeper等,本篇博客主要讲述基于redis的分布式锁,主要介绍不同版本redis分布式锁的实现方式,以及它们的弊端2.各个版本redis分布式锁的实现1)基本版本tryLock(){ if(SETNX Key 1) { EXPIRE K

2020-10-21 20:19:02 508

原创 B+树在MySQL索引的应用和InnoDB的索引优化

1)在关系型数据库中,由于数据量较大原因,导致构建的索引也非常大,所以需要把索引存储到外部磁盘,而B+树构建的索引更适合在外部磁盘存储,这是因为B+树的每个节点不存储数据,只存储索引,这样B+树的每个节点就会存储更多的索引(Innodb每个索引页(节点)在磁盘空间的默认大小为16KB),所以B+树的层数就会越低,因此索引查找时IO操作的次数就会减少2)由于B+树的叶子节点的特性,使得B+树还有一个最大的好处,方便扫库,B树必须用中序遍历的方法按序扫库,而B+树直接从叶子结点挨个扫一遍就完了,因此使得B+.

2020-10-09 14:10:36 1152

原创 kettle工具使用及集成

kettle简介Kettle是一款免费开源的基于Java的企业级ETL工具,功能强大简单易用,无可抗拒。

2020-05-28 14:19:59 1690

原创 java线程池原理讲解及常用创建方式

(一)什么是线程池其实线程池的概念和数据库链接池的概念类似。线程池的作用就是为了避免系统频繁地创建和销毁线程。在线程池中,总有几个活跃的线程,当你需要使用线程是,可以从池子中随便拿一个空闲线程,当完成工作是,并不是关闭线程,而是将这个线程退回到池子,方便其他人使用。(二)JDK对于线程池常用类讲解首先我们先看一下线程池的类图关系,只有理解了这些类的关系后,后面的理解就容易多了:

2017-09-01 23:34:52 1921 1

原创 java多线程之ThreadLocal

在线程同步中,我们可以使用锁机制,或者通过CAS。但是还有一种方法就是ThreadLocal。这里先举一个生活中的例子,比如,让100个人填写个人信息表,如果只有一支笔的话,那么大家就得挨个填写,为了让每个人都能完成的填写,我们就需要保证大家不能哄抢这一支笔,否则谁也填不玩,这时候可能大家可以想到利用锁机制来控制这支笔。其实从另外一种角度出发,我们可以每人发一支笔让他们填写信息表。如果

2017-09-01 15:56:21 357

原创 java多线程之重入锁ReentrantLock

在讲重入锁(ReentrantLock)之前,相信大家都synchronized很熟悉了,它也是同步控制的一个重要锁,决定了一个线程是否可以访问临界资源,同时synchronized配合Object.wait()和Object.notify()的配合使用起到了等待通知的作用。这里如果大家不是很熟悉,可以查阅资料熟悉一下synchronized的使用。那么有synchronized这个锁,为

2017-09-01 13:58:32 450

原创 java中的代理和动态代理讲解

在说到动态代理模式,我们首先说一说什么是代理模式。什么是代理模式:Proxy Pattern(即:代理模式),23种常用的面向对象软件的设计模式之一代理模式的定义:这里先举一个例子,假设某人要找对象,但是由于某些原因不能直接去找,于是委托一个中介机构去完成这一过程,如婚姻介绍所,在这里婚姻介绍所其实就是一个代理。再举一个专业相关的例子,如果你想调用一个功能非常强

2017-08-31 22:38:06 369

原创 java中的反射机制

(一)什么是反射:反射就是把java类中的各种成分映射成一个个的java对象(加载类,然后解刨出类的各个组成部分)。例如,一个类由:成员变量,方法,构造方法,包等等信息,利用反射技术可以对一个类进行解剖,把各个组成部分映射成一个个对象。1、反射一般会用在什么地方:相信大家在学习JavaEE的时候用过很多框架,比如,spring框架中的IOC反向控制就是利用反射机制,其实大部

2017-08-31 20:01:32 300

转载 HashMap的实现原理

1. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。      数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难,插入和删除容易。

2017-08-31 16:45:24 264

原创 HashMap和List遍历方法总结及如何遍历删除元素

相信大家对集合遍历再熟悉不过了,这里总结一下HashMap和List的遍历方法,以及它们该如何实现遍历删除。这里对于每种遍历删除出现的问题的原因都给出了详解!(一)List的遍历方法及如何实现遍历删除我们造一个list出来,接下来用不同方法遍历删除,如下代码: List list= new ArrayList(); famous.add("zs"); famo

2017-08-31 16:26:38 12285

原创 java中自动装箱拆箱的陷阱

本人曾经实习面试的时候遇到的一个java自动装箱的陷阱,当时就是不太明白,回来自己琢磨了一下这个问题,在此作为总结,希望让刚开始接触java的同学以后避免这个坑!好了废话不多说,直接贴出这段代码:public static void main(String[] args) { Integer a = 1; Integer b = 2; Integer c = 3

2017-08-31 14:56:01 721 2

转载 github常用指令

本站为 Git 学习参考手册。目的是为学习与记忆 git 使用中最重要、最普遍的命令提供快速翻阅。 这些命令以你可能需要的操作类型划分,并且将提供日常使用中需要的一些常用的命令以及参数。本手册将从入门到精通指导大家。 首先,我们要从如何以 Git 的思维方式管理源代码开始。如何以 GIT 的方式思考(这节可以不用看懂,接着看下面的内容,看完就全懂了。)懂得 Git,

2017-08-31 14:37:51 1058 1

原创 java虚拟机动态类型语言支持

这篇博客是根据《深入理解java虚拟机》的讲解和本人对动态类型语言的一些认识,来深度剖析一下java虚拟机对动态类型语言的支持!

2017-08-30 18:59:34 1892

原创 使用scrapy+IP代理+多线程爬虫对拉钩网在杭州互联网职位信息的抓取

本篇文章涉及到的集中比较流行的爬虫技术,包括IP代理,多线程,scrapy,cookie等,

2017-08-18 15:15:26 8925 14

空空如也

空空如也

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

TA关注的人

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