自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 4-MongoDB索引知识

如果没有索引,MongoDB必须执行全集合扫描,即扫描集合中的每个文档,以选择与查询语句匹配的文档。这种扫描全集合的查询效率是非常低的,特别在处理大量的数据时,查询可以要花费几十秒甚至几分钟,这对网站的性能是非常致命的。对于单个字段索引和排序操作,索引键的排序顺序(即升序或降序)并不重要,因为MongoDB可以在任何方向上遍历索引。为了支持对地理空间坐标数据的有效查询,MongoDB提供了两种特殊的索引:返回结果时使用平面几何的二维索引和返回结果时使用球面几何的二维球面索引。4.2.2 复合索引。

2024-01-31 11:33:36 827

原创 MongoDB常用命令

{"_id":"1","articleid":"100001","content":"我们不应该把清晨浪费在手机","userid":"1002","nickname":"相忘于江湖","createdatetime":new Date("2019-08-{"_id":"2","articleid":"100001","content":"我夏天空腹喝凉开水,冬天喝温开水","userid":"1005","nickname":"伊人憔。","userid":"1003","nickname":"凯。

2024-01-29 14:32:52 1534

原创 MongoDB单机部署

MongoDB 提供了可用于 32 位和 64 位系统的预编译二进制包,你可以从MongoDB官网下载安装,MongoDB 预编译二进制包下载地址:https://www.mongodb.com/download-center#community。为了方便我们每次启动,可以将安装目录的bin目录设置到环境变量的path中,bin目录下是一些常用命令,比如mongod启动服务用的。我们在启动信息中可以看到,mongoDB的默认端口是27017,如果我们想改变默认的启动端口,可以通过--port来指定端口。

2024-01-26 11:00:22 2122 1

原创 MongoDB相关概念

MongoDB是一个开源、高性能、无模式的文档型数据库,当初的设计就是用于简化开发和方便扩展,是NoSQL数据库产品中的一种。是最像关系型数据库(MySQL)的非关系型数据库。它支持的数据结构非常松散,是一种类似于 JSON 的格式叫BSON,所以它既可以存储比较复杂的数据类型,又相当的灵活。MongoDB中的记录是一个文档,它是一个由字段和值对(field:value)组成的数据结构。MongoDB文档类似于JSON对象,即一个文档认为就是一个对象。

2024-01-25 16:48:54 1613 1

原创 ArrayList扩容机制

>>”(移位运算符):>>1 右移一位相当于除2,右移n位相当于除以 2 的 n 次方。这里 oldCapacity 明显右移了1位所以相当于oldCapacity /2。对于大数据的2进制运算,位移运算符比那些普通运算符的运算要快很多,因为程序仅仅移动一下而已,不去计算,这样提高了效率,节省了资源。int newCapacity = oldCapacity + (oldCapacity >> 1),所以 ArrayList 每次扩容之后容量都会变为原来的 1.5 倍!

2024-01-25 16:37:54 671

原创 SpringBoot自动装配机制(源码)

这个注解看起来就比较简单了,没有特别的代码,也只有4个元注解+1个自定义注解,但是可以看到这个注解@Import和上面的@EnableAutoConfiguration内部的value还是不一样的,区别在4.2讲解。classclass前面我们也有提到,主启动类必须放在所有自定义组件的包的最外层,以保证Spring能扫描到它们,就是@AutoConfigurationPackage发挥的作用,【作用小结】:保证Spring扫描到所有子包,完成资源的加载.

2024-01-21 16:13:05 1342 1

原创 One Trick Per Day

SimpleDateFormat 是线程不安全的类,一般不要定义为 static 变量,如果定义为static,必须加锁,或者使用DateUtils工具类。正例:注意线程安全,使用 DateUtils。@Override。

2024-01-20 11:15:47 988 1

原创 什么是跨域

CORS需要浏览器和服务器同时支持。目前,所有浏览器都支持该功能,IE浏览器不能低于IE10。整个CORS通信过程,都是浏览器自动完成,不需要用户参与。对于开发者来说,CORS通信与同源的AJAX通信没有差别,代码完全一样。浏览器一旦发现AJAX请求跨源,就会自动添加一些附加的头信息,有时还会多出一次附加的请求,但用户不会有感觉。因此,实现CORS通信的关键是服务器。只要服务器实现了CORS接口,就可以跨源通信。

2024-01-19 10:30:00 992 1

原创 @RefreshScope热更新原理

对于@RefreshScope注解实现配置热更新的流程,实际是借助于缓存失效+Spring重新创建配置Bean解决,知道这个思路之后,读者们可以借助本章节2,或3做流程性、原理性了解。

2024-01-18 10:00:00 979 1

原创 持久层框架MyBatisPlus

我们可以利用MyBatisPlus的Wrapper来构建复杂的Where条件,然后自己定义SQL语句中剩下的部分。需求:将id在指定范围的用户(例如1、2、4 )的余额扣减指定值正常我们的SQL语句如下如果我们采用自定义的,就会将整个Where条件抽取,实现细节如下①基于Wrapper构建where条件@Test// 1.构建条件// 2.自定义SQL方法调用②创建接口方法,在mapper方法参数中用Param注解声明wrapper变量名称,必须是ew。

2024-01-17 15:58:53 1021

原创 Jmeter快速入门

Jmeter依赖于JDK,所以必须确保当前计算机上已经安装了JDK,并且配置了环境变量。:上面的配置只能保证本次运行是中文,如果要永久中文,需要修改Jmeter的配置文件。注意:前面不要出现#,#代表注释,另外这里是下划线,不是中划线。打开jmeter文件夹,在bin目录中找到。

2024-01-17 11:06:51 692

原创 负载均衡算法

一致性哈希解决稳定性问题,可以将所有的存储节点排列在首尾相接的 Hash 环上,每个 key 在计算 Hash 后会 顺时针找到临接的存储节点存放。而当有节点加入或退出时,仅影响该节点在 Hash环上顺时针相邻的后续节点。我们可以理解为有4台服务器,3台A,1台B,一次调用过来的时候,需要按顺序访问。指:将当前请求转发到连接数/请求数最少的机器上,其特点是根据服务器实时运行状态动态分配,保障服务负载不会过饱和。此处逻辑相对复杂,笔者在此说出主要思路,后续有时间补充伪代码,感兴趣的可以参照Dubbo的实现。

2024-01-17 11:05:58 339

原创 什么是RESTful

Resource Representational State Transfer:资源具象状态传输。

2024-01-17 11:04:51 775

原创 数据库设计三范式

不知道读者们有没有发现,以上所介绍的范式的最终目的都是为了减少我们的工作量呢?所以说,尽管范式是一种很好的指导规范,但在实际应用中,我们也不需要太局限在范式中,更多的是应该从项目中出发,设计出合理的表结构。第一范式(1 NF):字段不可再拆分。第二范式(2 NF):表中任意一个主键或任意一组联合主键,可以确定除该主键外的所有的非主键值。第三范式(3 NF):在任一主键都可以确定所有非主键字段值的情况下,不能存在某非主键字段 A 可以获取 某非主键字段 B。

2024-01-17 11:03:13 921

原创 了解SQL注入

结构化查询语言 (SQL) 用于查询、操作和管理数据库系统,例如 Microsoft SQL Server、Oracle 或 MySQL。SQL 的一般用法在所有支持它的数据库系统中都是一致的;然而每个系统都有其特有的复杂性。数据库系统通常用于为多种类型的 Web 应用程序提供后端功能。为了支持 Web 应用程序,用户提供的数据通常用于动态构建直接与数据库交互的 SQL 语句。SQL注入攻击是一种通过将攻击者提供的SQL语句直接提交到后端数据库来颠覆应用程序的初衷的攻击。

2024-01-17 10:52:45 959

原创 Java泛型类型擦除以及类型擦除带来的问题

我们都知道Java的泛型是伪泛型,即编译期间所有的泛型信息都会被擦除,如我们代码定义了:List<Object>和List<String>,但是对于JVM而言,看到的只有List,由泛型附加的类型信息对于JVM而言是看不到的。原始类型就是擦除去了泛型信息,最后在字节码中的类型变量的真正类型,无论何时定义一个泛型,相应的原始类型都会被自动提供,类型变量擦除,并使用其限定类型(无限定的变量用Object)替换。举例说明其对应的原始类型就是此时原始类型就是Comparable,而不再是Object。

2024-01-17 10:25:53 1092

原创 Sentinel工作原理

除了流量控制以外,降低调用链路中的不稳定资源也是 Sentinel 的使命之一。由于调用关系的复杂性,如果调用链路中的某个资源出现了不稳定,最终会导致请求发生堆积。这个问题和Hystrix里面描述的问题是一样的。Sentinel 和 Hystrix 的原则是一致的: 当调用链路中某个资源出现不稳定,例如,表现为 timeout,异常比例升高的时候,则对这个资源的调用进行限制,并让请求快速失败,避免影响到其它的资源,最终产生雪崩的效果。

2024-01-16 16:00:00 1120 1

原创 Seata的部署和集成

重启微服务,现在微服务到底是连接tc的GZ集群,还是tc的HZ集群,都统一由nacos的client.properties来决定了。即可,启动成功后,seata-server应该已经注册到nacos注册中心了。接下来,我们需要将tx-service-group与cluster的映射关系都配置到nacos配置中心。特别注意,为了让tc服务的集群可以共享配置,我们选择了nacos作为统一配置中心。特别注意:tc服务在管理分布式事务时,需要记录事务相关数据到数据库中,你需要提前创建好这些表。,版本:1.5.1。

2024-01-15 21:13:42 1094

原创 Redis集群部署指南

分片集群需要的节点数量较多,这里我们搭建一个最小的分片集群,包含3个master节点,每个master包含一个slave节点,结构如下。这里我们为了演示方便,使用方式二(在/tmp目录执行下列命令)。虚拟机本身有多个IP,为了避免将来混乱,我们需要在redis.conf文件中指定每一个实例的绑定ip信息,格式如下(要在同一台虚拟机开启3个实例,必须准备三份不同的配置文件和目录,配置文件所在目录也就是工作目录。要在同一台虚拟机开启3个实例,必须准备三份不同的配置文件和目录,配置文件所在目录也就是工作目录。

2024-01-15 21:09:37 823

原创 RabbitMQ部署指南

如果有集群总数大于count+1,并且包含镜像的节点出现故障,则将在另一个节点上创建一个新的镜像。如果指定的节点在集群中存在,但是暂时不可用,会创建节点到当前客户端连接到的节点。用户发送给队列的一切请求,例如发送消息、消息回执默认都会在主节点完成,如果是从节点接收到请求,也会路由到主节点去完成。注意:下面的发消息,需要点击图示:+1 ,查看对应的从节点是哪个再去操作,这里我的是mq2。而镜像模式下,创建队列的节点被称为该队列的。但是,不同队列可以在集群中的任意节点上创建,因此不同队列的主节点可以不同。

2024-01-15 21:06:32 1042

原创 关于findFirst方法与得到的Optional对象的理解

关于findFirst的方法运用

2023-12-15 21:42:34 855

空空如也

空空如也

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

TA关注的人

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