随记日志
文章平均质量分 80
陈xr
致敬大神
展开
-
2024-6-24(沉默Netty,MongoDB)
Redis 的 String 是动态的,可以修改的。Redis 的 String 在内部结构实现上类似于 Java 的 ArrayList,采用预分配冗余空间的方式来减少内存的频繁分配。MongoDB 将数据存储为一个文档(类似于 JSON 对象),数据结构由键值对组成,类似于 Java 中的 Map,通过 key 的方式访问起来效率就高了。Netty 是一个基于 JAVA NIO 类库的异步通信框架,它的架构特点是:异步非阻塞、基于事件驱动、高性能、高可靠性和高可定制性。原创 2024-06-24 17:29:10 · 482 阅读 · 0 评论 -
2024-6-20(沉默Springboot)
内部通过 TaskQueue 的类来存放定时任务,用起来比较简单,但缺陷比较多,比如说一个 Timer 就会起一个线程,任务多了性能就非常差,再比如说如果执行任务期间某个 TimerTask 耗时比较久,就会影响其他任务的调度。:一个后端程序员写了一个登录接口,想要测试自己写的接口是否符合预期的话,就得先模拟用户登录的行为,包括正常的行为(输入正确的用户名和密码)和异常的行为(输入错误的用户名和密码),这就要命了。的轻量级定时任务工具,也就意味着不需要再添加第三方依赖了,相比其他第三方类库更加方便易用。原创 2024-06-20 16:50:17 · 635 阅读 · 0 评论 -
2024-6-19(沉默springboot)
前面的Spring中既支持编程式事务,也支持声明式事务(@Transactional),在springboot中,就直接用@Transactional声明式事务吧。在编程式事务中,必须在每个业务操作中包含额外的事务管理代码,就导致代码看起来非常的臃肿,但对理解 Spring 的事务管理模型非常有帮助。声明式事务将事务管理代码从业务方法中抽离了出来,以声明式的方式来实现事务管理,对于开发者来说,声明式事务显然比编程式事务更易用、更好用。编程式事务比声明式事务控制的颗粒度更细。事务在逻辑上是一组操作,原创 2024-06-19 16:52:24 · 791 阅读 · 0 评论 -
2024-6-18(沉默Spring,Springboot)
如果让我们来实现,或许三五行就能搞定,但是我们实现的不完善、不完整、不严谨,总之不高大上,所以它写三五十行,把框架设计的尽可能的完善,提供了丰富的支持,满足不同用户的需求,才能占领更大的市场啊。Spring Data 是 Spring 提供的一个操作数据的框架,Spring Data JPA是 Spring Data 下的一个基于 JPA 标准的操作数据的模块。而说到底,底层的原理并没有很复杂,只是为了提高扩展性、兼容性,Spring 提供了丰富的支持,所以才觉得源码比较难。Spring 也是用的。原创 2024-06-18 17:14:10 · 351 阅读 · 0 评论 -
2024-6-17(沉默JVM,Spring)
要想使用反射,首先需要获得反射类的 Class 对象,每一个类,不管它最终生成了多少个对象,这些对象只会对应一个 Class 对象,这个 Class 对象是由 Java 虚拟机生成的,由它来获悉整个类的结构信息。Class 对象中包含了与类相关的很多信息,如类的名称、类的父类、类实现的接口、类的构造方法、类的方法、类的字段等等。,因为项目中每次创建对象是很麻烦的,所以我们使用 Spring IoC 容器来管理这些对象,需要的时候你就直接用,不用管它是怎么来的、什么时候要销毁,只管用就好了。原创 2024-06-17 19:09:55 · 1007 阅读 · 0 评论 -
2024-6-14(沉默Nginx)
例如,有10w个请求访问百度,但是如果全部压到一台服务器上,可能导致把服务器压垮,这个时候,反向代理就是均衡的让这10w个请求分散到不同服务器上,这就是反向代理。服务器 C 更弱,权重就最小,让 1 万个请求访问它。我们可以根据一些规则,把动态资源和静态资源分开,然后通过 Nginx 把请求分开,静态资源的请求就不需要经过 Web 服务器处理了,从而提高整体上的资源的响应速度。正向代理:浏览器是无法直接访问谷歌的,但香港的代理服务器是可以访问谷歌的,于是访问了香港的代理服务器,也就间接地访问了谷歌。原创 2024-06-14 19:14:16 · 467 阅读 · 0 评论 -
2024-6-13(沉默Java)
NIO(New I/O)的设计目标是解决传统 I/O(BIO,Blocking I/O)在处理大量并发连接时的性能瓶颈。(来到厨房,开始烧水,我们不一直坐在水壶前面等,也不隔一段时间去看一下,而是在客厅看电视,水壶上面有个开关,水烧开之后他会通知我)。BIO (Blocking I/O,就是JDK1.4之前的传统I/O形式):同步阻塞 I/O 模式。采用阻塞式 I/O 模型,线程在执行 I/O 操作时被阻塞,无法处理其他任务,适用于连接数较少且稳定的场景。NIO (New I/O):同步非阻塞模式。原创 2024-06-13 16:35:10 · 798 阅读 · 0 评论 -
2024-6-12(沉默JavaIO,Java异常)
Java 的缓冲流是对字节流和字符流的一种封装,通过在内存中开辟缓冲区来提高 I/O 操作的效率。缓冲流的工作原理是将数据先写入缓冲区中,当缓冲区满时再一次性写入文件或输出流,或者当缓冲区为空时一次性从文件或输入流中读取一定量的数据。这样可以减少系统的 I/O 操作次数,提高系统的 I/O 效率,从而提高程序的运行效率。Error 的出现,意味着程序出现了严重的问题,而这些问题不应该再交给 Java 的异常处理机制来处理,程序应该直接崩溃掉,这种错误的出现,对于程序来说是致命的。常用来处理文本信息。原创 2024-06-12 16:52:57 · 695 阅读 · 0 评论 -
2024-6-11(Java王二)
Stack 是 Vector 的一个子类,本质上也是由动态数组实现的,只不过还实现了先进后出的功能(在 get、set、add 方法的基础上追加了 pop「返回并移除栈顶的元素」、peek「只返回栈顶元素」等方法),所以叫栈。PriorityQueue 是一种优先级队列,它的出队顺序与元素的优先级有关,执行 remove 或者 poll 方法,返回的总是优先级最高的元素。实现的双端队列,为了满足可以同时在数组两端插入或删除元素的需求,数组必须是循环的,也就是说数组的任何一点都可以被看作是起点或者终点。原创 2024-06-11 16:27:00 · 943 阅读 · 0 评论 -
2024-01-25(ElasticSearch)
4.ES是分布式的,并且会将数据切分开的存储到不同的服务器上。7.技术都是根据需求来的,业务场景的使用推动技术的发展。原理:服务端将搜索结果中的关键字用标签标记出来,然后在页面中给标签添加CSS样式。自动补全对字段的要求:类型是completion类型,字段值是多词条的数组。3.精确查询的值是不可分割的整体,所以可以采用精确查询来做。度量聚合:用来计算一些值,比如最大值,最小值,平均值等。1.ES中存储不是重要的,搜索查询功能才是ES的核心。,精确查询,地理查询,复合查询。常见的查询类型:查询所有,原创 2024-01-25 16:23:03 · 706 阅读 · 0 评论 -
2024-01-24(ElasticSearch)
增量修改:POST/索引库名/_update/文档id{"doc":{字段}}数字:long,integer,short,byte,double,float。全量修改:PUT/索引库名/_doc/文档id{json文档}底层是有一个中文字典,这个字典中的中文词汇也是可以拓展的和禁用某些词。创建文档:POST/索引库名/_doc/文档id{json文档}删除文档:DELETE/索引库名/_doc/文档id。查询文档:GET/索引库名/_doc/文档id。字符串:text,keyword。原创 2024-01-24 17:40:45 · 616 阅读 · 0 评论 -
2024-01-23(MongoDB&&ElasticSearch)
分片集群是一种跨多台机器分布数据的方法,MongoDB使用分片来支持具有非常大的数据集和高吞吐量操作的部署。换句话说:分片是指将数据拆分,将其分散存在不同的机器上的过程。将数据分散到不同机器上,不需要功能强大的大型计算机就可以存储更多的数据,处理更多的负载。原创 2024-01-23 16:11:30 · 629 阅读 · 0 评论 -
2024-01-22(MongoDB)
字段的数据类型是字符型,它的值除了使用基本的一些类型外,还可以包括其他文档、普通数组和文档数组。(1)单字段索引:MongoDB支持在文档的单个字段上创建用户定义的升序/降序索引,称之为单字段索引。①:admin:从权限的角度来看,这是‘root’数据库。Mongodb是一个开源的,、高性能、无模式的文档型数据库,当初的设计就是用于简化开发和方便扩展,是NoSQL数据库产品中的一种。它支持的数据结构非常松散,是一种类似于JSON的格式,叫BSON,所以它既可以存储比较复杂的数据类型,又很灵活。原创 2024-01-22 17:40:11 · 685 阅读 · 0 评论 -
2024-01-19(SpringCloud&ThreadLocal)
4.Springboot中Seater的XA模式采用starter做了很好的依赖封装,因此使用的时候只需要引入starter依赖,并在application.yml文件中写好配置(微服务的话在nacos的配置中心中配置),然后在给发起全局事务的入口方法添加。3.XA规范是一种分布式事务处理标准,XA规范描述了全局的TM与局部的RM之间的接口,几乎所有的主流的数据库都对XA规范提供了支持。,AT模式同样是分阶段提交的事务类型,不过弥补了XA模式中资源锁定周期过长的缺陷。get():获取当前线程绑定的变量。原创 2024-01-19 16:09:33 · 1013 阅读 · 1 评论 -
2024-01-18(SpringCloud)
为什么要有bootstrap.yml配置文件,因为需要先执行nacos地址(之前写在springboot中的application.yml文件中),拉取了nacos中的配置文件信息后,辅助后续微服务的启动(它们的配置文件放在这的,所以需要bootstrap.yml,视为cloud项目所需要的一个先导文件吧):在分布式微服务系统中,如果一个业务需要多个服务的合作完成,而且每一个服务都有事务的要求,也就是说多个事务都必须同时成功或者失败,那么这样的事务就称之为分布式事务。这就是Sentinel持久化的目的。原创 2024-01-18 17:21:06 · 544 阅读 · 1 评论 -
2024-01-17(SpringCloud)
5.SpringCloud为我们封装好了实现网关功能的组件,不用我们实现网关的功能(身份校验,服务拉取,路由转发,负载均衡等),便于我们直接使用即可。如何做:配置网关过滤器,实现登录校验,网关传递用户,将用户身份认证得到的token放置到路由转发请求的请求头中(其他微服务提供服务时也需要验证用户身份)6.网关的请求转发:微服务向注册中心注册自己的信息,网关服务从注册中心拉取所有微服务的信息,当请求来临时,根据拉取的信息去分发请求到指定的微服务。4.网关:就是网络的关口,负责请求的转发、路由、身份校验。原创 2024-01-17 17:21:30 · 421 阅读 · 0 评论 -
2024-01-16(SpringCloud&Mybati)
在Springboot强大的自动装配和依赖管理的特性支持下,十分方便的将SpringCloud当中囊括的技术,整合到微服务项目开发当中。创业型项目,先采用单体项目,快速开发,快速试错。已经明确的大型项目,资金充足,目标明确,可以直接选择微服务架构,避免后续拆分的麻烦。来解决服务治理的问题:注册服务,采用何种算法(负载均衡)选择服务,心跳机制检查服务是否存活,推送最新的注册中心存活的服务。5.实际上,实体类一对一,实体类一对多,无外乎就是改变标签中书写的映射规则。原创 2024-01-16 20:12:59 · 892 阅读 · 1 评论 -
2024-01-15(SpringMVC&Mybatis)
但是框架就不一样了,因为框架内部已经写好了很多代码,我们只是在它的基础之上去添加一些代码,去控制框架,指挥框架,因此有一种“我们只写了一两行代码,但是它发挥出来的效果和之前写很多代码的效果一样”的感觉。如果handler中出现了异常,就会调用该方法,我们可以在resolveException方法中进行统一的异常处理。postHandler方法会在Handler方法(controller中的方法/不同url)执行之后进行,我们可以在其中对域中的数据进行修改,也可以修改要跳转的页面。原创 2024-01-15 17:28:33 · 927 阅读 · 0 评论 -
2024-01-12(SpringMVC)
10.SpringMVC中的类型转换器:虽然我们从请求中获取请求参数已经十分方便了,但是有时候还有一种情况,那就是例如我们想要把请求参数success=1的值赋给一个Boolean类型的变量,那么这个时候就涉及到类型转换了,就可以使用SpringMVC中的类型转换器。② 客户端使用GET,POST,PUT,DELETE4个表示操作方式的动词对服务端资源进行操作:GET用来获取资源,POST用来新建资源,PUT用来更新资源,DELETE用来删除资源。我们可以配置视图解析器,设置跳转路径的前缀和后缀。原创 2024-01-12 17:43:58 · 1073 阅读 · 1 评论 -
2024-01-11(Spring:主要AOP)
随后定义具体的增强方法,并使用@Before/@After/@Around注解告诉Spring容器这是一个具体的增强方法,并在注解中放入切点(表示:在切点所指明的哪些包中的所有方法的前/中/前&后进行某个具体的方法增强)18.事务传播行为(propagation):当事务方法嵌套调用时(例如两个需要事务的sql操作,其中一个成功了,另外一个失败了,但是我们希望失败的进行事务回滚,并且不要影响另外一个成功的sql操作),需要控制是否开启新事务,可以使用事务传播行为来控制。要求被代理(被增强)的类实现了接口。原创 2024-01-11 17:07:07 · 779 阅读 · 0 评论 -
2024-01-10(Spring注解)
1.Spring注解开发:为了简化xml对bean的配置,Spring也支持使用注解代替xml配置。使用方式:在xml中开启组件扫描。原创 2024-01-10 19:57:12 · 409 阅读 · 1 评论 -
2024-01-09(Springboot,Docker,Spring)
10.Spring的IOC:Spring容器根据xml配置文件中配置的bean信息,通过读取xml配置文件和反射的方式将xml文件中定义的bean的class和id拿到,最后将id作为key,创建的bean对象作为value放到一个Map集合中,Spring容器用Map集合管理着定义的bean对象。14.bean标签低频使用属性:name(可以给bean创建多个名称),lazy-init(单例bean默认容器加载时候创建,这个属性可以在使用bean的时候加载bean),init-method(定义一个。原创 2024-01-09 17:30:50 · 420 阅读 · 1 评论 -
2024-01-08(Springboot,Docker)
日记原创 2024-01-08 17:17:12 · 352 阅读 · 0 评论