- 博客(41)
- 收藏
- 关注
原创 redis为什么快
Redis作为一种基于内存的数据存储系统,其快速性能由多个因素共同作用所致。综上所述,Redis之所以那么快,主要是因为它将数据存储在内存中、采用单线程模型、异步非阻塞I/O、高效数据结构、持久化选项以及多种优化策略等因素共同作用的结果。这些因素使得Redis在处理客户端请求时能够保持极高的性能和效率。
2024-10-28 14:04:43 872
原创 Java中的class文件结构
Java中的.class文件结构是Java源代码经过编译后生成的二进制文件结构,它包含了Java类的结构和信息。以下是对Java中.class文件结构的详细解析综上所述,Java中的.class文件结构是一个复杂但有序的二进制流,它包含了Java类的结构和信息。通过对.class文件结构的解析,我们可以了解Java类的内部结构、字段、方法以及它们之间的关系等信息。
2024-10-25 19:48:51 753
原创 Mybatis的时间范围查询的坑你踩过吗?
springboot项目整合Mybatis前端传来的String类型的开始和结束时间后端将String类型的时间转换为Date类型进行查询mysql中的数据结果居然不一样。当时一脸闷逼。方式一:时间处理:方式二:时间处理:数据入库的方式:总结两种方式查询的数量完全不一样,的原因是:当我写完我明白了:前者:开始时间 :2024-07-01 转换为时间为:2024-07-01 00:00:00结束时间:2024-10-01 转换为时间为:2024-10-01 00:00:00后者
2024-10-23 15:54:44 395
原创 Java数据结构深探:揭开集合背后的内存管理之谜-还是思想
在学习Java或其他编程语言时,我们经常会遇到“数据结构”这一概念。有人曾说:“程序 = 数据结构 + 算法”,但在实际的项目开发中,数据结构的运用似乎被语言提供的API所简化,算法也往往局限于对数据结构的增删改查。那么,你真的了解数据结构吗?因此,可以这样理解:在Java中,不同的数据结构实际上就是不同的“管理指南”或“元数据集”,它们定义了数据在内存中的组织方式和访问逻辑。
2024-09-30 17:09:57 991
原创 读了5遍阿里巴巴Java开发手册-我的感觉
我读取的是阿里巴巴Java开发手册第二版:其实里边很多的东西在我看来就是确认一种开发规范:重要的是命名、包括包、数据库、实体类等,让多人开发同一代码时候沟通协作变得有规章。形成一种统一的开发习惯。其中对我触动最大的一句话就是:【设计规约】中的第16条:注意不同版本不一样:参照】:可扩展的本质就是找到系统的变化点,并隔离变化点说明】:世间众多的设计模式其实就是一种设计模式,即隔离变化点的设计模式。正例定义了一组方法的规范,但不提供具体的实现。
2024-09-29 22:21:33 665
原创 springboot项目整合两个数据源分别是Mysql和PostgratSql
例如,为MySQL创建一个TaskMapper接口和TaskMapper.xml文件,为PostgreSQL创建一个LogMapper接口和LogMapper.xml文件。在Spring Boot应用中,如果你配置了多个数据源,并且为每个数据源创建了相应的SqlSessionFactory,那么你可以通过指定SqlSessionFactory来确保Mapper接口使用正确的数据源。注意:在上面的示例中,我假设你已经创建了Task和Log实体类,以及对应的Mapper接口和XML文件。
2024-07-31 20:52:09 1076
原创 spring中FactoryBean和BeanFactory区别
BeanFactory:是Spring IoC容器的核心接口,用于管理Bean的一个工厂。它定义了IoC容器的最基本形式,并提供了IoC容器应遵守的最基本的接口,也就是Spring IoC所遵守的最底层和最基本的编程规范。BeanFactory的主要职责包括实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。FactoryBean:是一个特殊的Bean,它实现了FactoryBean接口。FactoryBean不仅仅是一个Bean,它更像是一个工厂,用于生成或修饰其他Bean的实例。
2024-07-31 20:24:04 1182
原创 Java项目前后端交互爆出的各种异常code
总之,处理这些异常需要根据具体的错误代码和上下文来定位问题,并采取相应的解决方案。解决方案:检查请求的URL是否正确,以及服务器上是否存在相应的资源和Nginx配置。解决方案:检查网络连接和上游服务器的响应时间,可能需要优化网络配置或增加超时时间。解决方案:检查服务器端的权限设置,确保请求的用户或客户端具有适当的访问权限。通常,这只是暂时状态。解决方案:检查客户端的请求参数或请求体是否符合服务器端的要求。含义:服务器发生不可预期的错误,导致无法完成对请求的处理。含义:请求的资源不存在,例如,URL错误。
2024-07-31 17:34:19 417
原创 spring类加载方式解析
重要的是要理解,尽管容器的操作(如获取Bean)是通过方法调用来实现的,并且这些方法调用本身不会修改方法的内部逻辑或行为,但Spring IoC容器的设计确保了其操作是线程安全的。实现了ApplicationContext接口,所有的应用上下文如ClassPathXmlApplicationContext、FileSystemXmlApplicationContext和AnnotationConfigApplicationContext都是从AbstractApplicationContext继承而来。
2024-07-31 17:19:14 1094
原创 获取Controller层接口信息,并组装,返回前端
获取Controller层接口信息,并组装,返回前端描述信息组装在swagger中:在Controller层中的方法上添加如下注解:@ApiOperation(value = “获取所有api资源”)淡然也能自定义注解线上慎用,推测其可能swagger底层使用的也是该原理。
2024-06-25 17:04:23 453
原创 读取文件将其转换为实体类对象(前提文件中内容是json字符串)
读取文件——>转换为字符串——>生成实体类这种工具类,有一个就够了,能用很久很久,但是还得与时俱进才行。
2024-05-18 11:22:44 436
原创 HTTP协议和RPC协议:之间调用问题?
当被问及到HTTP协议和RPC协议时,被问到,当一个系统支持HTTP协议,另一个系统支持RPC协议,在不限定语言的情况下两个系统能否实现调用:1、HTTP协议的系统调用RPC协议的系统怎么调用2、RPC协议的系统调用HTTP协议的系统怎么调用应该怎么回答我的回答是无脑提示:以下是本篇文章正文内容,下面案例可供参考在不限定语言的情况下,只要两个系统都提供了相应的接口和协议支持,HTTP协议的系统和RPC协议的系统是可以实现调用的。通常需要一个中间层或适配器来实现协议之间的转换和通信。
2024-05-17 10:52:53 821
原创 Git 怎么解决每次clone代码时候输入用户名和密码:
1、为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置。3、获取 RSA 公钥内容,并配置到 SSH公钥 中。1、什么情况下需要配置什么情况下不建议这样配置。什么叫环境变量:简单讲就是快捷键。2、生成 RSA 密钥。
2024-04-17 17:13:32 1578 1
原创 Java中的System
System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length):将一个数组中指定范围的元素复制到另一个数组中的指定位置。System.nanoTime():返回当前时间(以纳秒为单位)自某一固定但任意的起始时间以来的纳秒数。System.exit(int status):终止当前正在运行的Java虚拟机,并返回指定的状态码。System.getProperties():获取当前系统的所有系统属性。
2024-04-16 16:07:32 404
原创 刚入算法时候自己的胡乱整理-javaAPI,JDKAPI,算法常用javaAPI,算法常用工具类
算法第一步:先学API实在是太多了,我刷了一百道左右,整理出来了里边用到的java中的API如下,有点乱,但是用的时候可以control+f进行搜索,当然这也是我的一个简化版本的API
2024-03-05 16:57:30 709
原创 elasticsearch中的DSL语句操作
创建索引时,可以定义索引的结构和行为,例如分片数量、副本数量,以及字段的类型。更新设置,删除索引中的数据,以及整个索引的删除,都是索引生命周期的常见操作。Elasticsearch查询DSL非常灵活和强大,支持各种条件和结构复杂的查询,满足几乎所有搜索需求。在构造查询时,这些字段以JSON对象的形式组合在一起,形成对Elasticsearch数据的精确和高效查询。每个查询类型针对不同的使用场景和需求,从简单的文本匹配到基于地理位置和其他高级功能,为数据检索提供了广泛的可能性。查询指定字段中有值的文档。
2024-03-01 18:18:15 1247
原创 Elasticsearch-浅尝-java整合和一些相关概念理解
例如,当你需要更改索引结构,或者重新导入数据以优化查询性能时,可以先构建一个新的索引,然后通过更改别名的指向来无缝切换到新索引。在上述代码中,首先创建了IndicesAliasesRequest来添加新索引的别名,然后执行了添加操作,这样新的索引就可以通过别名被检索到。在这段代码中,我们构建了一个布尔查询,它结合了多个条件:必须匹配一个值,必须不包含另一个范围的值,应该匹配第三个值,以及按第四个值进行过滤。如果你的应用需要以上的能力,考虑Elasticsearch往往是一个合适的选择。
2024-03-01 16:44:28 791
原创 Mysql之面试题之索引
写这个MySQL的人也是牛逼,这就是一个Excel表格由之前的直接可视化界面操作被改成通过命令操作。简而言之就是:在数据库系统中,我们考虑的主要构成包括库(数据库)、表、行(记录)、索引这四类对象。每类对象上都可以进行增加、删除、修改、查询等操作。然而,数据库系统设计和优化的重点通常集中在索引的管理、事务的处理以及锁的控制上。这些机制确保了数据库在执行操作时,不仅遵循ACID原则,即原子性、一致性、隔离性、持久性,也保证了数据处理的高效率。
2024-02-28 13:08:06 1356
原创 截取链表最后几个数据-链表中倒数最后k个结点
在我看来就是个花活,其实并不难主要是代码实现的思想。解决这个问题的一个有效方法是使用“双指针”技术。具体来说,可以设置两个指针,第一个先前进k步,然后两个指针一起前进,直到第一个指针到达链表尾部。此时第二个指针所指向的就是链表的倒数第k个节点。初始化两个指针 fast 和 slow,都指向链表的头节点。移动 fast 指针k步。如果在移动过程中 fast 达到链表尾部(即 fast 成为 null,则链表长度小于k,返回一个新的、长度为0的链表(或null,根据题目描述)
2024-02-28 10:07:30 372
原创 链表算法题:-链表拆分将链表按照下标索引拆分成奇数链表和偶数链表两个链表
链表操作:最开始我也没弄懂,但是这个就是不断的debug这样才能找到更合适的结果。牛网连接难点:拆分的时候需要注意对象的变化,最开始的时候我并不理解对象为啥最后head是返回值,后来梳理多次才能理解:原来是第一个节点,并不是什么固定的值再就是指针的正确移动和对象正确的数据变化。指针其实就是:动态变化的链表中的一个值。
2024-02-27 19:01:58 432
原创 spring面试题
虽然说是为了面试,但是呢我们也得不断学习,先学习思想很重要,只有思想到了,技术什么的我理解用一用,整理一下怎么使用就OK了。若是还有什么新的面试题,我会补充,也希望大家能留言共同维护当然可以私聊,我希望能结交一些志同道合的朋友含义:这个注解表明一个类将被Spring IoC容器作为组件类处理,即该类的实例可以由容器创建和管理。使用:通常标注在类上,作为通用的组件标识,通常与@Autowired结合使用进行依赖注入。
2024-02-26 13:48:28 872
原创 springAOP落地实现
江湖阳哥曾经说过这么句话:使用技术在当前这个环境中无非就是这么几步:1、引入POM(maven)坐标2、改yml(配置文件也可以是properties等等)3、写配置类或者在启动类上加注解4、写代码就完事提示:以下是本篇文章正文内容,下面案例可供参考好了尽情的开发使用吧,其实这个是为了我写那个面试题的文章准备的哈哈哈哈。
2024-02-26 00:02:42 1925
原创 算法分析-面试1-字符串
算法:一个刷一段时间很有感觉,然后一段时间内不刷又忘了的一种面试工具。但是重点还得理解其思想。其实还是对字符串的增删改查遍历(正序、倒序、修改后或者替换后再遍历),总的来讲这是最简单的,主要是得明确哪些API的作用是什么,以及正则表达式怎么用。
2024-02-24 14:42:01 1028
原创 真的是性能优化(压测)-纯思想
若是有不足的地方还希望能指出来,共同完善,不胜感激路虽远,行则将至,事虽难,作则必成总想做好这件事情,但是奈何自己能力有限,古话讲一个好汉三个帮,一个篱笆三个桩。希望能遇到志同道合的朋友。
2024-02-23 16:54:22 1838
原创 Redis面试题——恕我无能只写到了第十个就写不下不去,我相信你们也看不下去了,这会已经一万五千字了,等后续有精力在补全吧
我只能说任重道远,慢慢学习吧,有些问题真的仅仅是为面试准备的,毕竟用其实用的也仅仅是一部分,再就是Redis是用C语言写的,对于java来讲算是黑盒,一点也不为过,但是呢面试需要,有些知识得学一学。我真的是不想整理这个,主要是有的我也不是很了解。时间:2024-02-06 下午四点:我现在分析了第10个问题,我真的不想分析了,我就感觉想吐我得缓缓才分析,实在是太多了,各位要是看请耐下心来,在不直接去看官网吧。提示:以下是本篇文章正文内容,下面案例可供参考。
2024-02-06 16:13:10 1193
原创 Redis——面试+思想+应用
提示:理论+方法+小总结Redis(Remote Dictionary Server)是一个开源的、基于内存的高性能键值存储的内存数据库。它支持多种基础数据结构1、字符串(Strings)2、哈希(Hashes)3、列表(Lists)4、集合(Sets5、有序集合(Sorted Sets)以及更高级的数据结构如1、位图(Bitmaps)2、超日志(Hyperloglogs)4、地理空间索引(Geo indexes)每种模糊搜索方式都有其适用范围与限制。
2024-02-06 13:07:09 1328 3
原创 JVM——一个神圣的话题,可远观而不可亵玩焉
算法:复制算法优点:简单高效,适用于单线程小型应用缺点:停顿时间较长默认区域:新生代算法:复制算法优点:多线程并行收集,适用于多核CPU环境缺点:停顿时间较长默认区域:新生代算法:标记-整理算法优点:简单高效,适用于单线程小型应用缺点:停顿时间较长默认区域:老年代算法:标记-整理算法优点:多线程并行收集,适用于多核CPU环境缺点:停顿时间较长默认区域:老年代算法:标记-清除算法优点:并发收集,停顿时间短。
2024-02-06 11:11:23 1978 1
原创 Mysql-我眼中的一个数据存储软件,我把他比作记事本、word我感觉不为过
在学习工作这些年中,Mysql一直离不开,但是我们在实际中使用到的也仅仅是他的十分之一都不到(数据不一定准确),但是作为我认为很强大的一个程序,我们很有必要去了解一下他的思想。致敬:迈克尔·维德纽斯(Michael Widenius)、詹姆斯·尼古拉·格雷但是我们使用的时候也是遵从四步:增、删、改、查1、提升查询效率:这是索引最直接和最主要的目的。2、部分情况下减少回表:这是覆盖索引能够带来的利益之一。通过直接从索引中获取所需数据,避免了访问数据表3、提升排序效率。
2024-02-05 14:31:43 1019
原创 动态代理——既有落地也有思想
就是个思想,只要是知道怎么回事就行,反正我开发这么久用到的就是SpringAOP并没有别的使用场景。SpringAOP也就是一句话:Spring使用这种根据目标对象是否实现接口来选择代理模式的策略,主要是为了提供最大程度的灵活性和兼容性。如果目标对象实现了接口,使用JDK代理可以提供更好的性能。如果目标对象没有实现接口,CGLIB代理能确保AOP仍然可以进行,确保不会因为实现方式的不同而限制了AOP的应用。通过一个代理对象来间接访问目标对象的方法。代理可以是静态的也可以是动态的。
2024-02-05 10:25:53 795 1
原创 零拷贝--不用落地,理解思想即可或者说知其然即可
零拷贝(Zero-Copy)是一种计算机文件传输或网络传输的优化技术,用于最小化在操作过程中的CPU拷贝操作,降低上下文切换和CPU的占用,同时也可以减少不必要的内存使用。在没有零拷贝的情况下,数据通常在内核空间与用户空间或者不同的内存区域之间复制多次。1、操作系统从磁盘读取数据到内核空间的缓冲区。2、应用程序从内核缓冲区读取数据到用户空间的缓冲区。3、应用程序写数据到内核空间的另一个缓冲区,这个缓冲区是为了网络发送准备的。
2024-02-04 13:56:22 822
原创 锁-java中的锁-很有意思的一个思想
ReentrantLock 底层使用了 AQS 提供的框架。AQS 使用一个内部的 FIFO 队列来管理线程的获取和释放锁。AQS 通过一个叫做 state 的原子变量来控制锁的状态,它利用 CAS 操作来修改这个状态,比如进行独占式获取和释放。
2024-02-04 13:05:42 761
原创 工作这些年代码中用过哪些设计模式
工作这些年,编写项目的时候有用过设计模式吗?我TM感觉这是个哲学问题今天就聊一聊我常用的设计模式。涉及模式任重而道远啊,当你学习了DDD之后,你会由衷的发现,设计模式带来的好处。并且,思想这种东西,和落地还是有差别的,但是依旧需要思想先行。
2024-02-03 23:54:12 777 1
原创 三级?是缓存不是片! spring的三级缓存---学习spring框架第一步
spring的三级缓存,一个很有意思的实现方式:其实他仅仅是spring类加载过程中的一个很小的点:从一下几个点来描述三级缓存:1、解决了什么问题2、是怎么解决的3、反思总结至于后边的补充什么的,看自己兴趣看来,想看就多看看,没有坏处提示:以下是本篇文章正文内容,下面案例可供参考Spring的三级缓存机制有效地解决了循环依赖的问题使得Bean的创建和依赖注入变得更加灵活和稳定。这种设计允许开发人员在不必考虑Bean相互依赖顺序的情况下组织他们的代码从而大大减少了配置的复杂性。
2024-02-02 14:08:39 967
原创 MVCC——一个我特别不想聊的技术
整理了三天,总算是出来了,但是还没有到自己想要的那么精简so,有好的意见记得找我哦1、并发控制是数据库管理系统同步多个事务的行为2、避免由于事务之间的相互影响引起的一系列问题。如果不妥善处理,并发操作可能会导致数据不一致,例如脏读(读取未提交的数据)。
2024-02-02 11:01:06 746
原创 线程池的拒绝策略应该怎么选
拒绝策略会通知调用者任务无法被线程池处理。示例:AbortPolicy拒绝策略允许调用者线程自己执行被拒绝的任务。示例:CallerRunsPolicy拒绝策略静默地丢弃无法处理的任务,不执行也不抛出异常。提示:以下是本篇文章正文内容,下面案例可供参考在选择使用哪种拒绝策略时,你应该考虑到应用程序的具体需求和行为。例如,可以基于任务的重要程度和接受程度,系统的容错性,以及任务丢失对系统可能产生的后果。
2024-01-31 12:47:51 1140
原创 线程池-一个很有意思的话题
线程池:简单理解就是存储线程的一个容器:(java中的池化思想)提取关键字:线程、容器1、什么是线程?线程是操作系统调度执行的最小单位,用于实现并行处理,提高应用程序的响应性和性能。在Java中,线程是实现并发编程的基本构建块。后边会有更详细的解释:2、什么是容器(池子)用于管理多线程的创建、执行、调度和销毁的容器。后边会有更详细的解释抛出一个问题:线程池的参数应该怎么赋值?真的是按照理论分析,什么CPU密集型或者是IO密集型吗?
2024-01-31 10:21:18 922 1
原创 springBoot项目中怎么实现接口拦截
在Spring Boot项目中实现接口拦截通常涉及到两个关键组件:拦截器(Interceptor)和过滤器(Filter)。Spring框架提供了这两种机制来进行HTTP请求的拦截,可以根据需要的粒度和场景来选择使用重点但是在项目中都是将其抽取出来作为一个单独的权限服务,和用户是绑定的关系,并非是直接在代码中进行硬编码做拦截接口,而是通过注解或者是通过配置文件,在访问接口前通过调用RPC接口的方式进行权限校验等等。提示:以下是本篇文章正文内容,下面案例可供参考。
2024-01-30 13:17:12 2472
原创 动态规划-0-1背包问题
工作四年的我开始重新认识算法,天才第一步,雀氏纸尿裤,算法第一步,API+强大脑回路聊聊动态规划:一种很不错的思想:借势,当已经知道(已经算过)前边哪个最好了或者是已经知道前边的结果了直接拿来用,作为后续数据的一个基础,好比spring,不要重复制造轮子代码实现和理论分析还是存在差别的,这里依旧是思想先行,代码不明白就直接粘到idea中进行debug调试,将数据都展示出来,走过几次也能明白还是那句话:路虽远,行则将至,事虽难,作则必成。
2024-01-28 14:58:25 993
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人