自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 分布式详解

分布式事务的解决思路:AP模式:各子事务分别执行和提交,允许出现结果,然后采用弥补措施恢复数据即可,实现最终一致,譬如增加了一条数据,后面有操作失败了,那么补偿措施只需要把增加的那条数据删除即可,因为子事务提交了,那么提交后的状态就是一个中间状态,也就是软状态。BASE理论三个思想:Basically Available(基本可用):分布式系统在出现故障时,允许损失部分可用性,即保证核心可用,譬如电商大促,为了应对大流量,暂时停止注册服务,这是注册服务就不可用,但是整个系统是可用的,所以叫基本可用。

2023-09-27 17:48:48 67 1

原创 多线程(详解)

线程池在系统启动时会创建大量空闲线程,程序将一个任务传递给线程池,线程池就会启动一条线程来执行这个任务,执行结束后线程不会销毁(死亡),而是再次返回到线程池中成为空闲状态,等待执行下一个任务。在线程池的编程模式下,任务是分配给整个线程池的,而不是直接提交给某个线程,线程池拿到任务后,就会在内部寻找是否有空闲的线程,如果有,则将任务交个某个空闲线程。多线程运行时,系统不断创建和销毁新的线程,成本非常高,会过度的消耗系统资源,从而可能导致系统资源崩溃,使用线程池就是最好的选择。实现Callable接口。

2023-09-25 21:23:43 59 1

原创 ES的优势

可用来向 Elasticsearch 发送数据。同时,Kibana 不仅可针对 Elasticsearch 数据提供实时可视化,同时还提供 UI 以便用户快速访问应用程序性能监测 (APM)、日志和基础设施指标等数据。Elasticsearch 同时还是一个近实时的搜索平台,这意味着从文档索引操作到文档变为可搜索状态之间的延时很短,一般只有一秒。除了速度、可扩展性和弹性等优势以外,Elasticsearch 还有大量强大的内置功能(例如数据汇总和索引生命周期管理),可以方便用户更加高效地存储和搜索数据。

2023-09-17 19:51:59 226 1

原创 Elasticsearch

需要注意的是,Elasticsearch不仅支持简单的单词匹配搜索,还支持各种复杂的搜索功能,如短语搜索、模糊搜索、前缀搜索等。以上只是一些常见的API,Elasticsearch还提供了更多的API和功能,如聚合、索引管理、集群管理等。当你执行搜索时,Elasticsearch会根据你提供的搜索条件,在倒排索引中查找匹配的单词位置,并返回相应的文档。总结来说,Elasticsearch的倒排索引是它实现高性能全文搜索的关键组成部分,通过索引文档中的单词并记录其位置,使得搜索操作变得快速和灵活。

2023-09-15 22:51:17 49

原创 Linux常用命令

ps -ef | grep -i 进程名字 查看进程运行信息。mv 原目录 目标路径 目标路径存在,则移动。kill -9 pid 强制杀死指定进程。ls【参数】【目录】展示指定目录下的内容。cp【-r】原目录 目标路径 复制目录。ping ip或域名 查看网络是否OK。具体命令 -h 查看具体命令的帮助信息。mkdir 【-p】目录名 创建目录。cd 【目录或符号】 切换指定目录。rm 【-rf】目录名 删除目录。history 查看历史命令。ip addr 查看IP。pwd 查看当前所在目录。

2023-09-04 17:37:47 53 1

原创 Spring注解

作用:自动按照类型注入,只要有唯一的类型匹配就能注入成功,使用注解注入set方法不是必须的。所谓的唯一类型,举个例子,当dao层有一个实体类继承了UserDao接口,我们在service中使用注解,来使用UserDao属性,spring默认找它的实现类,如果唯一,则注入成功,如果不唯一,则有多个类实现UserDao接口,否则将变量名作为bean的id来查找。属性:value,用于指定基本类型和String类型的值,还可以借助spring中的el表达式读取properties配置文件中的数据。

2023-08-29 21:38:00 50 1

原创 线程池详解

使用线程池最大的原因就是可以根据系统的需求和硬件环境灵活的控制线程的数量,且可以对所有线程进行统一的管理和控制,从而提高系统的运行效率,降低系统运行运行压力;当然了,使用线程池的原因不仅仅只有这些,我们可以从线程池自身的优点上来进一步了解线程池的好处;这里的线程就是我们前面学过的线程,这里的任务就是我们前面学过的实现了Runnable或Callable接口的实例对象;提升系统响应速度,假如创建线程用的时间为T1,执行任务用的时间为T2,销毁线程用的时间为T3,那么使用线程池就免去了T1和T3的时间;

2023-08-28 21:39:03 45 1

原创 ThreadLocal与Synchronized的区别

一句话理解ThreadLocal,threadlocl是作为当前线程中属性ThreadLocalMap集合中的某一个Entry的key值Entry(threadlocl,value),虽然不同的线程之间threadlocal这个key值是一样,但是不同的线程所拥有的ThreadLocalMap是独一无二的,也就是不同的线程间同一个ThreadLocal(key)对应存储的值(value)不一样,从而到达了线程间变量隔离的目的,但是在同一个线程中这个value变量地址是一样的。

2023-08-27 21:42:33 154

原创 缓存的详解

分布式缓存的工作原理是将存储在缓存中的数据拆分为不同的节点,并将这些节点分布在多个机器上。2.本地缓存是一种将缓存组件部署在本地机器上的缓存。这种缓存类型可以提供较高的可用性,并可以帮助解决性能问题,因为数据可以存储在更接近应用程序的地方。1.内存缓存是在应用程序内部维护的一种缓存,通常使用简单的哈希表或数组来存储数据。在Java中,缓存是一种常用的性能优化技术,用于在应用程序中加速访问和查询数据的速度。Java中有多种类型的缓存可用,其中最常见的包括内存缓存、本地缓存和分布式缓存。

2023-08-24 23:12:15 68 1

原创 redise详解

是将数据结构或对象转换成一种可存储或可传输格式的过程。在序列化后,数据可以被写入文件、发送到网络或存储在数据库中,以便在需要时可以再次还原成原始的数据结构或对象。序列化的过程通常涉及将数据转换成字节流或类似的格式,使其能够在不同平台和编程语言之间进行传输和交换。反序列化是从文件、网络数据或数据库中读取序列化的数据,并将其转换回原始形式,以便在程序中进行使用和操作。网络通信:在网络上传输数据时,需要将数据序列化为字节流,以便在接收端进行反序列化。序列化和反序列化是计算机科学中用于数据存储和传输的重要概念。

2023-08-23 20:00:57 80

原创 AOP的理解

(2)通知有多种类型:前置通知、后置通知、环绕通知、异常通知、最终通知。(1)AOP(面向切面编程),利用 AOP 可以对业务逻辑的各个部分进行隔离,从而使得。业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。① 连接点:类里面可以被增强的方法,这些方法被称为连接点。③ 通知(增强):(1)实际增强的逻辑部分称为通知(增强)② 切入点:实际被真正增强的方法,称为切入点。即创建接口实现类代理对象,增强类的方法。即创建子类的代理对象,增强类的方法。

2023-08-21 20:50:42 83 1

原创 Sprig MVC简介

Spring MVC是Spring Framework提供的Web组件,全称是Spring Web MVC,是目前主流的实现MVC设计模式的框架,提供前端路由映射、视图解析等功能。View:视图层,指工程中的html,jsp等页面,作用是和用户进行交互,展示数据。Controler:控制层,指工程中的Servlet,作用是接收请求和响应浏览器。MVC是一种软件架构思想,把软件按照模型,视图,控制器来划分。Model:模型层,指工程中的JavaBean,用来处理数据。

2023-08-20 16:03:14 48 1

原创 ThreadLocal

在使用 ThreadLocal 时需要注意内存泄漏的问题,即及时清理不再使用的 ThreadLocal 对象,以避免持有过多的无用对象导致内存溢出。线程局部变量是指在每个线程中都独立存在的变量,即使多个线程共享同一个对象,每个线程也有自己独立的副本。每个线程都可以通过 ThreadLocal 对象来访问自己独立的变量副本,而不会影响其他线程的数据。需要注意的是,每个线程访问的 ThreadLocal 对象都是独立的,修改一个线程的 ThreadLocal 对象不会影响其他线程的数据。

2023-08-18 21:11:46 53 1

原创 多线程简介

线程同步: 多个线程访问共享资源时,需要进行同步操作,以避免竞态条件(race condition)和数据不一致。多线程编程可以提高程序的性能和资源利用率,但也需要注意线程安全性和稳定性等问题。常见的多线程编程语言有Java、Python、C++等,它们提供了一系列的多线程库和API,方便开发者使用多线程技术。多线程(multithreading)是指在单个程序中同时运行多个执行线程的一种技术。每个线程都是独立的执行序列,可以同时执行不同的任务。多线程可以提高程序的并发性,提升程序的性能和响应能力。

2023-08-17 17:27:02 44 1

原创 静态属性与静态常量

对实例变量来说,每个实例对象都有自己独立的变量,各个实例对象中的同名变量互不影响。但是对于静态变量来说,无论修改哪个实例对象的静态变量,效果其实都是一样的。也就是说,所有实例对象的静态变量都会被修改,原因在于静态变量并不属于某个单独的实例对象所有。可以说,实例成员在每个实例对象中都有自己的一个独立的私有“空间”,但是静态成员只有一个共享的公共“空间”,所有实例对象都会共享该静态成员。对于静态变量和静态常量来说,无论一个类实例化出来多少个对象,它的静态成员都只有一份拷贝,可以被所有的对象共享。

2023-08-15 21:15:29 197 1

原创 GIT基本

分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。如图1所示是经典的git开发过程。Git的从一般开发者的角度来看,git有以下功能:1、从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上。2、在自己的机器上根据不同的开发目的,创建分支,修改代码。3、在单机上自己创建的分支上提交代码。4、在单机上合并分支。5、把服务器上最新版的代码fetch下来,然后跟自己的主分支合并。

2023-08-14 20:52:26 57

空空如也

空空如也

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

TA关注的人

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