Mxin5
贫居闹市无人问,富在深山有远亲。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【五斗米】场景题
你也可以使用 Java 8 的 Stream API 来过滤掉不符合条件的元素,然后将结果收集到一个新的集合中。方法,可以根据给定的谓词(Predicate)删除集合中的元素。的子接口,提供了双向遍历列表的能力。它同样可以用于删除元素。循环来删除元素,但这种方法在遍历集合时删除元素会导致。方法,可以在遍历集合时安全地删除元素。是一种常见的方法,特别是在处理。因此,通常不推荐使用这种方法。从 Java 8 开始,原创 2024-11-30 21:31:47 · 226 阅读 · 0 评论 -
【五斗米】SpringCloud
zuul按照执行顺序,分为pre前置过滤器,route路由过滤器【路由根据断言进行分发请求(到各个微服务进行处理)】,post后置过滤器,error异常过滤器正常流程是请求先经过前置过滤器【进行权限验证或者登录】,到达路由过滤器进行路由,路由到各种微服务执行请求,返回结果后经过后置过滤,返回用户异常流程,如果再整个过程中出现异常,都会进入error异常过滤器,处理完毕后经过post过滤器返回用户,如果error自己出现异常,最终也会通过post过滤器返回用户,如果post过滤器出现异原创 2022-08-22 00:03:31 · 3848 阅读 · 0 评论 -
【五斗米】项目高并发如何进行处理?如何优化?
2.数据库优化避免使用select *创建索引分库分表,根据业务模块进行分库(数据库部署在不同的服务器上),根据业务需求进行分表(垂直分表和水平分表)。读写分离,将读操作和写操作进行分离,采用主从复制的方式,主节点用于写操作,从节点用于读操作。原创 2022-07-21 23:44:48 · 3060 阅读 · 0 评论 -
【五斗米】使用联表查询比较慢如何进行优化?
如果查询的字段比较多,就需要对sql语句进行优化了,通过explain关键字加在慢sql前执行看是否走的索引,如果没有走索引就创建索引。原创 2022-10-26 14:23:43 · 9380 阅读 · 0 评论 -
【五斗米】实现分布式锁的三种方式
在单击环境下,就是只有当前JVM虚拟机A中的多个线程对同一个Object(共享资源)进行操作,可以采用同步互斥(就是只有同一时间只有一个线程对共享资源进行事务操作)的方式,我们常用的方式就是采用加锁的方式解决,虽然不能保证数据的强一致性,但是能够保证数据的最终一致性。........................原创 2022-08-07 00:23:46 · 9336 阅读 · 0 评论 -
【五斗米】事务与分布式事务
事务就是操作数据库的最小执行单元一个事务内的操作要么全部成功,要么全部失败,保证数据的一致性。是事务隔离级别无锁的实现方式用于提高事务并发性能。它通过为每个事务创建一个数据的快照,每条数据都有一个版本号,对数据进行修改时都会生成一个新的版本,而不是进行覆盖。实现读写分离,读取的数据都是快照中的数据,写(修改)的数据只会生成新的数据版本,从而多个事务可以同时读取和写入数据,互不影响。原创 2022-08-08 16:08:41 · 1472 阅读 · 1 评论 -
【五斗米】浅学线程与线程池
若为多继承,当多个父类中有重复的属性和方法时,子类的调用结果会含糊不清因此采用单继承。为什么是多实现呢?实现接口就是拓展类的功能,就算接口中有重复的方法也没有关系,因为实现接口,就必须重写接口中的方法。sleep()和 wait()的区别?1.sleep()方法是Thread(线程)类的静态方法。wait()方法是Object类的实例方法任何实例都能调用。2.sleep()方法不会释放锁,使线程进入TIMED_WAITING状态,线程休眠指定时间后自动唤醒。wait()方法。原创 2022-08-08 18:05:38 · 1481 阅读 · 0 评论 -
【五斗米】锁
内涵Synchronized、Lock、Volatile、闭锁,死锁的解释和代码举例说明。原创 2022-08-08 19:52:12 · 1923 阅读 · 0 评论 -
【五斗米】Redis
缓存击穿:指的是Redis中一个热点Key,在高并发的情况下,这个redis的缓存时间失效,导致redis中这个热点key中大量的请求打到数据库上,导致数据库压力过大导致数据库崩了。 解决方案:加互斥锁,只能允许一个线程访问数据库,然后其他线程就可以在缓存中拿缓存穿透:用户访问的数据在Redis缓存中和数据库中都没有这样的数据,然后用户不断地使用脚本发送这个请求【数据库中的id是自增长从0开始的,没有负数】,这种数据直接穿透缓存,打到数据库上,导致数据库挂掉。...........原创 2022-08-09 00:00:27 · 1709 阅读 · 1 评论 -
【五斗米】计算机数据结构
有了二叉树为什么要出现多叉树?因为二叉树【每个结点最多有两个子结点】在大规模的数据存储中,树会高的没谱,这会导致IO读写过于频繁,查询效率低下多叉树【每个结点可以有多个子结点】可以解决这个问题,它每层可以存放更多的数据,因此能大幅度降低树的深度,提高查询性能.................................原创 2022-08-10 00:47:06 · 1278 阅读 · 0 评论 -
【面试】算法+二分查找+冒泡排序+位运算+sql语句+单例
什么是算法复杂度?算法复杂度分为时间复杂度和空间复杂度时间复杂度:衡量算法执行时间的长短空间复杂度:衡量算法所需的存储空间的大小【缓存以空间换时间】时间复杂度是用来度量算法执行的时间的长短,一个算法花费的时间与算法中语句的执行次数成正比例.........原创 2022-08-10 22:26:59 · 555 阅读 · 0 评论 -
【五斗米】Spring
Spring是一个开源的轻量级的以控制反转(IOC-Inversion Of Control,DI依赖注入是实现)和面向切面编程(Aop-Aspect-oriented programming)为核心的容器框架。使得Java开发更加简单和高效。循环依赖:指的是两个或多个对象之间相互持有对象作为依赖,形成一个循环依赖的关系。举例:比如A类中有B属性(成员变量),B类中有A属性,原创 2022-08-13 00:46:06 · 1171 阅读 · 0 评论 -
【五斗米】JVM调优
JVM是Java虚拟机的简称,它是Java跨平台运行的核心组件。JVM通过将字节码文件(.class)转换为机器码实现"一次编译,到处运行"。其组成包括类加载系统、执行引擎、运行时数据区和本地接口。内存区域分为线程共享的堆(存储对象)和方法区(类信息),以及线程私有的程序计数器、虚拟机栈和本地方法栈。JVM采用分代垃圾回收机制:新生代使用复制算法,老年代采用标记-清除/整理算法。三色标记算法优化了可达性分析过程,减少STW时间。JVM调优主要涉及堆内存设置(-Xms/-Xmx)、选择合适原创 2022-08-13 19:33:12 · 1729 阅读 · 1 评论 -
【五斗米】RocketMQ
RocketMQ主要包含四个角色Broker、NameServer、Consumer、Producer,为了增强Broker性能与吞吐量,Broker一般都是以集群形式出现的。各集群节点中可能存放着相同Topic的不同Queue。不过,这里有个问题,如果某Broker节点宕机,如何保证数据不丢失呢?其解决方案是,将每个Broker集群节点进行横向扩展,即将Broker节点再建为一个HA集群,解决单点问题。Broker节点【每一个服务器】集群是一个主从集群,即集群中具有Master与Slave两种角色原创 2022-08-19 16:22:38 · 2910 阅读 · 2 评论 -
【五斗米】Java基础
抽象是指将对象的公共特征抽象出来,定义成一个概念和模板而非具体实例(如果一个方法必须子类进行重写,那么就可以用abstract进行修饰。。使得设计更加具有通用性和可扩展性。抽象可以通过抽象类和接口来实现。原创 2022-08-30 20:38:32 · 1509 阅读 · 0 评论 -
【五斗米】Mybatis
动态sql,主要用于解决查询条件不确定的情况:在程序运行期间,根据用户提交的查询条件实现动态拼接sql语句进行查询数据。这里的条件判断使用的表达式为OGNL表达式,常用的动态sql标签有、、等if标签:条件判断where标签:判断包含节点有内容就插入 where,否则不插入foreach标签:遍历元素............原创 2022-08-28 17:05:28 · 1476 阅读 · 0 评论 -
【五斗米】SpringMVC、SpringBoot
SpringMVC和SpringBoot相关面试题原创 2022-08-28 15:53:17 · 1145 阅读 · 0 评论 -
【五斗米】数据库优化、索引
索引就是用来帮助我们快速查询数据的一种数据结构,能够快速定位和访问数据而不需要查询整个表,提高了查询效率。索引又包含了 单列索引、复合索引、唯一索引、主键索引、全文索引、覆盖索引等。根据业务模块进行分库,降低一个数据库的压力。如果某个业务数据库的压力过大,可以采用读写分离。主服务器用作写入操作,从服务器用作读取操作。如果单表数据量很大,这时候可以选择分区表和分表。分区表的规则包括范围分区 列表分区 散列分区 复合分区,分表可以分为垂直分表(按照字段使用频率)和水平分表(按照条数)。原创 2022-08-20 23:10:11 · 3459 阅读 · 0 评论 -
什么是ConcurrentHashMap?
然后在 Segment 里进行插入操作,插入操作需要经历两个步骤,第一步判断是否需要对 Segment 里的 HashEntry 数组进行扩容,第二步定位添加元素的位置,然后将其放在 HashEntry 数组里。这里面的第一步中的 scanAndLockForPut 操作这里没有介绍,这个方法做的操作就是不断的自旋 tryLock() 获取锁。更新一个数据的时候,会去判断当前内存地址中的当前值是否跟预期值是否相等,如果相等,则用新值更新内存地址中的值。如果不是,则不更新值,并返回当前的实际值。原创 2022-08-11 22:35:58 · 1845 阅读 · 0 评论 -
【五斗米】Java中的设计模式(我终于懂设计模式了)
官方解释:设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。设计模式就是软件开发人员针对常见问题的可复用解决方案,使代码复用性更高、解耦和可读性更高。原创 2022-08-11 00:50:33 · 646 阅读 · 1 评论 -
【五斗米】数据结构-Java集合框架
具体细节看下面这篇文章【ConcurrentHashMap如何保证线程安全的。什么是ConcurrentHashMap?_GuGuBirdXXXX的博客-CSDN博客:使用锁分段技术确保线性安全,是一种高效但是线程安全的集合。它是HashMap的线程安全,支持高并发的版本.在jdk1.7中,它是通过分段锁的方式来实现线程安全的。意思是将哈希表分成许多片段Segment,而Segment本质是一个可重入的互斥锁,所以叫做分段锁。在jdk1.8中,它是采用了CAS操作和synchronized来实现。原创 2022-08-10 22:41:10 · 497 阅读 · 0 评论