自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Java坤坤的博客

专注Java相关技术的博客

  • 博客(33)
  • 收藏
  • 关注

原创 hbase简介

比起传统的关系型数据库,可以存储半结构化非结构化的数据,可以存储和处理更大级别的数据,提供高效的查询,对于稀疏数据的处理更好,具有更好的横向扩展性,免费开源性价比很高。行键的设计将会影响数据在hbase表中的排序方式,这会影响region切分后的结果,要注意,在设计行键时应该让经常要查询的数据分散在不同的region中,防止某一个或某几个regionserver成为热点。按列存储,同一列的数据存放在一起,而同一列的数据一般都是同样的类型的内容相似的数据,可以实现非常高效的压缩,节省空间。

2024-03-22 10:53:48 899

原创 flume简介

内存存储通过embedded File channel来进行管理,当内存队列已满时,后续的事件将被存储在文件通道中,这个通道适用于正常操作期间适用内存通道已期实现高效吞吐,而在高峰期间适用文件通道实现高耐受性。可以处理JSON格式的数据,并支持UTF-8 UTF-16 UTF-32字符集,该handler接受Evnet数组,并根据请求头中指定的编码将其转换为Flume Event。使用单独的磁盘上的多个目录可以提高文件通道效率。要注意的是,放置到自动搜集目录下的文件不能修改,如果修改,则flume会报错。

2024-03-22 10:52:47 780

原创 Storm简介

所以如果你在做一个计数应用, 那么你每次更新到总数里面的是整个batch里面的tuple数量。将topology发布到Storm集群,将预先打包成jar文件的topology和配置信息提交到nimbus服务器上,一旦nimbus接收到topology的压缩包,会将jar包分发到足够数量的supervisor节点上,当supervisor节点接收到了topology压缩文件,nimbus就会指派task到每个supervisor并且发送信号指示supervisor生成足够的worker来执行指派的task。

2024-03-22 10:51:19 727

原创 Spark简介

思考点:序号 知识点 类型 难度系数 掌握程度知识点:序号 知识点 类型 难度系数 掌握程度2. 数量安装配置hadoop,启动伪分布式,启动HDFS服务 操作 1 熟练1.2. 搭建HDFS环境1.3. Spark介绍和安装1.3.1. 为什么会有Spark因为传统的并行计算模型无法有效的解决迭代计算(iterative)和交互式计算(interactive);而Spark的使命便是解决这两个问题,这也是他存在的价值和理由。Spark如何解决迭代计算?

2024-03-22 10:50:26 528

原创 Docker简介

传统虚拟机,虚拟出一条硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件容器内的应用直接运行在宿主机的内容,容器是没有自己的内核的,也没有虚拟我们的硬件,所以就轻便了每个容器间是互相隔离,每个容器内都有一个属于自己的文件系统,互不影响。#问题docker ps. 发现centos 停止了 # 常见的坑,docker容器使用后台运行,就必须要有要一个前台进程,docker发现没有应用,就会自动停止 # nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了。

2023-12-31 14:07:04 369

原创 重构改善既有代码的设计读书笔记

如果想要替换的数据值是类型码,而它并不影响行为,则可以运用 以类取代类型码(Replace Type Code with Class) 将它替换掉。如果你有大量的基本数据类型字段,就有可能将其中部分存在逻辑联系的字段组织起来,形成一个类。将这些操作分别放入独立的函数中,并保持它们都有相同的签名,于是原函数也就变得相同了,然后将原函数上移至超类。注释不是用来补救劣质代码的,事实上如果我们去除了代码中的所有坏味道,当劣质代码都被移除的时候,注释已经变得多余,因为代码已经讲清楚了一切。

2023-12-31 14:03:27 425

原创 网关KONG详解

Kong概述Kong是一个在Nginx运行的Lua应用程序,由lua-nginx-module实现。Kong和OpenResty一起打包发行,其中已经包含了lua-nginx-module。OpenResty不是Nginx的分支,而是一组扩展其功能的模块。Kong是一款基于OpenResty(Nginx + Lua模块)编写的高可用、易扩展的,由Mashape公司开源的API Gateway项目。

2023-12-29 14:26:38 1058

原创 Java开发手册(泰山版)读书笔记

Java开发手册的读书笔记

2023-12-29 14:24:41 1003

原创 Solr权威指南下卷读书笔记

第11章Solr高级查询通过第11章,你将可以学习到以下内容:0掌握如何使用Function Query以及如何自定义Function Query;0掌握如何使用Geospatial Query; ;0掌握如何使用Pivot Facet和Subfacet;0掌握如何使用JSON Facet API来实现复杂的数据统计查询;0掌握如何使用Solr中的其他查询组件,比如Elevation (竞价排名组件);0掌握如何使用Solr中的ResultClustering组件实现自动结果集聚类分组。11.

2023-07-27 09:39:27 140

原创 solr权威指南上卷读书笔记

第1章 初识Solr部署Solr至Tomcat参考原书第2章 Solr基础通过第2章,你将可以学习到如下内容:·理解Solr Core的基本概念;·掌握Solr Core的基本管理;·掌握如何使用Solr DataImporter导入数据;·掌握Solr Cell;·了解SolrDuplication Detection(索引去重检测);·了解Luke的基本使用。2.1 Solr Core我们的索引数据一般都是基于Core进行组织管理的,自然离不开对Core的一些管理操作,比如新建Co

2023-07-27 09:38:19 156

原创 Elasticsearch-尚硅谷笔记

第2章 Elasticsearch 入门2.1 Elasticsearch 安装2.1.1 下载软件Elasticsearch 的官方地址:https://www.elastic.co/cn/下载地址:https://www.elastic.co/cn/downloads/past-releases#elasticsearch2.1.2 安装软件Windows 版的 Elasticsearch 的安装很简单,解压即安装完毕。

2023-07-26 14:31:32 290

原创 深入理解ElasticSearch读书笔记

索引段是独立的Lucene索引,这意味着查询是可以与索引并行的,只是不时会有新增的索引段被添加到可被搜索的索引段集合之中。在某些时刻,当某种条件满足时,多个索引段会被拷贝合并到一个更大的索引段,而那些旧的索引段会被抛弃并从磁盘中删除,这个操作称为段合并(segmentmerging)。该调度器使用多线程执行索引合并操作,其具体过程是:每次开启一个新线程直到线程数达到上限,当达到线程数上限时,必须开启新线程(因为需要进行新的段合并),那么所有索引操作将被挂起,直到至少一个索引合并操作完成。

2023-07-26 14:30:29 51

原创 ElasticSearch技术解析与实战读书笔记

分配allocate,分配一个未分配的分片到指定的节点,可以指定索引名和分片号。{“aggs”:{“sales_per_month”:{“date_histogram”:{“field”:“date”,“interval”:“month”},“aggs”:{“sales”:{“sum”:{“field”:“price”}}}},“max_monthly_sales”:{“max_bucket”:{“buckets_path”:“sales_per_month>sales”}}}}2、特殊路径。

2023-07-26 14:28:29 175

原创 RocketMQ实战与原理解析读书笔记

在 RocketMQ 中,所有消息队列都是持久化,长度无限的数据结构,所谓长度无限是指队列中的每个存储单元都是定长,访问其中的存储单元使用 Offset 来访问,offset 为 java long 类型,64 位,理论上在 100年内不会溢出,所以认为是长度无限,另外队列中只保存最近几天的数据,之前的数据会按照过期时间来删除。实现方法是设置Consumer 的 consumeMessageBatchMaxSize这个参数,默认是1,如果设置为N,在消息多的时候每次收到的是个长度为N的消息链表。

2023-07-21 11:26:50 140 1

原创 从Paxos到Zookeeper 分布式一致性原理与实践读书笔记

对于一个将数据副本分布在不同分布式节点上的系统来说,如果对第一个节点的数据进行了更新操作并且更新成功后,却没有使得第二个节点上的数据得到相应的更新,于是在对第二个节点的数据进行读取操作时,获取的依然是老数据(或称为脏数据),这就是典型的分布式数据不一致情况。在悲观锁的实现原理中,如果一个事务正在处理,处理过程中,都会将数据处于锁定状态, 在实际生产应用中,悲观锁策略适合解决那些对于数据更新竞争十分激烈的场景——在这类场景中,通常采用简单粗暴的悲观锁机制来解决并发控制问题。

2023-07-21 11:26:12 207 1

原创 Seata-分布式事务实现-尚硅谷教程笔记

笔记官方文档第一章:分布式事务基础事务指的就是一个操作单元,在这个操作单元中的所有操作最终要保持一致的行为,要么所有操作都成功,要么所有的操作都被撤销。原子性(Atomicity):操作这些指令时,要么全部执行成功,要么全部不执行。只要其中一个指令执行失败,所有的指令都执行失败,数据进行回滚,回到执行指令前的数据状态。要么执行,要么不执行一致性(Consistency):事务的执行使数据从一个状态转换为另一个状态,数据库的完整性约束没有被破坏。能量守恒,总量不变。

2023-07-21 11:08:35 305 1

原创 XXL-JOB详解

一、简介1.5 下载文档地址中文文档 https://www.xuxueli.com/xxl-job/源码仓库地址中央仓库地址${最新稳定版本}1.6 环境Maven3+Jdk1.8+Mysql5.7+二、快速入门2.1 初始化“调度数据库”获取 “调度数据库初始化SQL脚本” 并执行即可2.2 编译源码xxl-job-admin:调度中心xxl-job-core:公共依赖。

2023-07-21 11:06:25 604 1

原创 SpringCloud微服务实战读书笔记

使用RoundRobinRule 规则, 以线性轮询的方式来选择调用的服务实例, 该 算法实现简单并没有区域 (Zone) 的概念, 所以它会把所有实例视为一个 Zone下的节点来 看待, 这样就会周期性地产生跨区域 (Zone) 访问的情况, 由于跨区域会产生更高的延迟, 这些实例主要以防止区域性故障实现高可用为目的而不能作为常规访问的实例, 所以在多 区域部署的清况下会有一定的性能问题, 而该负载均衡器则可以避免这样的问题, 他是怎么实现呢。同时, 它还具备了对服务实例清单的过滤功能。

2023-07-21 11:04:06 62 2

原创 Spring Cloud Gateway详解

3️过滤器(Filter):一个标准的Spring WebFilter,Spring Cloud Gateway中的Filter分为两种类型: Gateway Filter和Global Filter。一个过滤器分为两种类型, 一种是局部的开发完之后可以配置到route中,来过滤一些特定的数据 一个是全局的, 用来写一些全局逻辑, 比如登录判断. 同时两种都有前置过滤器和后置过滤器的概念, 通过代码编写上来区分, 执行顺序由getOrder方法重新的值决定。如果断言为真,则说明请求URL和配置的路由匹配。

2023-07-21 11:03:05 282 1

原创 springboot实战读书笔记

Spring Boot精要Spring Boot重要的是以下四个核心。自动配置:针对很多Spring应用程序常见的应用功能,Spring Boot能自动提供相关配置。起步依赖:告诉Spring Boot需要什么功能,它就能引入需要的库。命令行界面:这是Spring Boot的可选特性,借此你只需写代码就能完成完整的应用程序, 无需传统项目构建。Actuator:让你能够深入运行中的Spring Boot应用程序,一探究竟。

2023-07-21 11:00:47 69 1

原创 Spring实战读书笔记

你可以将可选bean中的某一个设为首选(primary)的 bean,或者使用限定符(qualifier)来帮助Spring将可选的bean的范围 缩小到只有一个bean。在本例中,也 就是所有实现Performance的类型。Spring还引入了一个新的bean()指示 器,它允许我们在切点表达式中使用bean的ID来标识bean,。在调用方法注入时候因此方法上添加了@Bean注解, Spring将会拦截所有对它的调用,并确保直接返回该方法所创建的 bean,而不是每次都对其进行实际的调用。

2023-07-21 10:59:36 58 1

原创 MyBatis从入门到精通读书笔记

第 1 章 MyBatis 入门第 2 章 MyBatis XML方式的基本用法权限控制需求采用 RBAC (Role-Based Access Control,基于角色 的访问控制)方式一个用户拥有若干角色, 一个角色拥有若干权限, 权限就是对某个资源(模块〉的某种操作(增、删、改、查),这样就构成了“用户·角色-权 限”的授权模型实体类中byte[]这个类型一般对应数据库中的 BLOB、 LONGVARBINARY 以及一些 和二进制流有关的字段类型,在实体类中不要使用基本类型。

2023-07-20 18:43:37 67

原创 深入理解Apache Dubbo与实战读书笔记

在①中会优先判断是否在同 一个JVM中包含要消费的服务,默认场景下,Dubbo会通过②找出内存中injvm协议的服务,其实injvm协议是比较好理解的,前面提到服务实例都放到内存map中,消费也是直接获取实 例调用而已。如果没有注册中心,则在⑦中会自动判断URL对应的协议(Dubbo)并直接暴露服务,从而没有经过注册中心在将服务实例ref转换成Invoker之后,如果有注册中心时,则会通过RegistryProtocol#export 进行更细粒度的控制,比如先进行服务暴露再注册服务元数据。

2023-07-20 18:43:04 187

原创 图解HTTP读书笔记

同样的方法可以用于当您拥有多个域名需要指向同一服务器IP,此时您就可以将一个域名做A记录指向服务器IP然后将其他的域名做别名到之前做A记录的域名上,那么当您的服务器IP地址变更时您就可以不必麻烦的一个一个域名更改指向了 只需要更改做A记录的那个域名其他做别名的那些域名的指向也将自动更改到新的IP地址上了。如果你是租用虚拟主机的话,一般的服务商都会提供一个三级或者四级的域名给你,那个地址解析的IP永远是服务器的最新IP,所以,大家如果是租用虚拟主机的,就直接做别名记录指向到那个赠送的域名就可以了!

2023-07-20 18:41:03 23

原创 设计模式总结

GoF 的 23 种设计模式的分类和功能设计模式有两种分类方法,即根据模式的目的来分和根据模式的作用的范围来分。创建型模式:用于描述“怎样创建对象”,它的主要特点是“将对象的创建与使用分离”。GoF 中提供了单例、原型、工厂方法、抽象工厂、建造者等 5 种创建型模式。结构型模式:用于描述如何将类或对象按某种布局组成更大的结构,GoF 中提供了代理、适配器、桥接、装饰、外观、享元、组合等 7 种结构型模式。

2023-07-20 18:40:31 67

原创 JAVA编程思想读书笔记

可以通过调用静态方法 Proxy.newProxyInstance() 来创建动态代理,该方法需要一个类加载器(通常可以从已加载的对象中获取),希望代理实现的接口列表(不是类或抽象类),以及接口 InvocationHandler 的一个实现。但是,如果你已经拥有了目标类的对象,那就可以通过调用 getClass() 方法来获取 Class 引用了,这个方法来自根类 Object,它将返回表示该对象实际类型的 Class 对象的引用。因为我们采用的是内部迭代,而不是外部迭代,所以这是可能实现的。

2023-07-20 18:38:48 114

原创 effective java读书笔记

其中包含了单个返 void close 方法 Java 类库与第 方类库中的许多类和接口,现在都实现或扩展了AutoCloseable 接口 如果编写了 个类,它代表的是必须被关闭的资源,那么这个类也应该实现 AutoCloseable。静态工厂方法与构造器不同的第三大优势在子,它们可以返回原返回类型的任何子类型的对象, 子类的多态, 方法返回值类型为接口, 实际返回子类。getType像getInstaηce 样,但是在工厂方法处于不同的类中的时-候使用Type表示工厂方法所返回的对象类型。

2023-07-20 18:38:05 41

原创 并发编程-尚硅谷教程笔记

如果调用了阻塞 API,如 BIO 读写文件,这时该线程实际不会用到 CPU,会导致线程上下文切换,进入【阻塞状态】等 BIO 操作完毕,会由操作系统唤醒阻塞的线程,转换至【可运行状态】与【可运行状态】的区别是,对【阻塞状态】的线程来说只要它们一直不唤醒,调度器就一直不会考虑调度它们。前面例子体现的实际就是可见性,它保证的是在多个线程之间,一个线程对 volatile 变量的修改对另一个线程可 见, 不能保证原子性,仅用在一个写线程,多个读线程的情况。

2023-07-20 18:37:20 87

原创 Java并发编程实战读书笔记

第二章 线程安全性并发特性原子性一个操作不会被线程调度机制打断,要么操作中的指令全部执行完毕,要么全部不执行,中间不会有任何的线程切换.可见性:一个线程对变量的值进行了修改,其他线程能够立即得知这个修改.(内存屏障)有序性有序性就是指程序按照代码的先后顺序执行.编译器为了优化性能,有时候会改变程序中语句的先后顺序.Java提供了volatile和synchronized两个关键字来保证线程之间的操作的有序性.同步指的就是线程间的协作,本质上和现实生活中的协作没区别,一个线程执行完一个任务后

2023-07-20 18:35:48 110

原创 实战Java虚拟机读书笔记

在应用程序工作过程中,又会不断地产生垃圾。如果应用程序的内存使用率增长很快,在CMS的执行过程中,已经出现了内存不足的情况,此时,CMS回收就会失败,虚拟机将启动老年代串行收集器进行垃圾回收。首先,如果运行栈上分配,系统会先进行栈上分配,没有开启栈上分配或者不符合条件则会进行TLAB分配,如果TLAB分配不成功,再尝试在堆上分配,如果满足了直接进入老年代的条件(PretenureSizeThreshold 等参数)),就在老年代分配,否则就在eden区分配对象,当然,如果有必要,可能会进行一次新生代GC。

2023-07-20 18:30:39 72

原创 深入理解Java虚拟机读书笔记

不包括局部变量和方法参数,因为后者是线程私有的)都存储在主内存,每条线程有自己的工作内存,工作内存中保存了该线程使用到的变量的拷贝副本,线程对变量的所有操作都必须在工作内存中进行,线程间变量值得传递需通过主内存来完成。双亲委派模型的工作过程是:如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成,因此所有的加载请求最终都应该传送到顶层的启动类加载器中,只有当父加载器反馈自己无法完成加载请求(它的搜索范围中没有找到所需的类)时,子加载器才会尝试自己去加载。

2023-07-20 18:29:14 95

原创 SpringBoot启动前中后三个时机执行自定义代码的方式。 学会直接原地起飞

BeanPostProcessor也称为Bean后置处理器,它是Spring中定义的接口,在Spring容器的创建过程中(具体为Bean初始化前后)会回调BeanPostProcessor中定义的两个方法, 记得要返回bean。我们也可以设置Order来设定执行的顺序,在上面两个代码中也有,分别是注解@Order(value = 1)和实现接口implements Ordered的方式。值得注意的是第三种方式,他可以让实现类里的方法提前执行, 如果想让某一个比其他早执行时候 可以使用第三种的方式。

2023-07-18 18:08:15 864 1

转载 事务注解@Transactional不生效? 为啥

事务回滚@Transactional默认只能回滚RuntimeException和RuntimeException下面的子类抛出的异常,不能回滚Exception异常;如果需要支持回滚Exception异常,需要显示的指明,如@Transactional(rollbackFor = Exception.class);3.4 失效场景介绍几种常见的事务实效的场景,这里引用一

2023-07-17 10:24:25 753 1

空空如也

空空如也

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

TA关注的人

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