- 博客(114)
- 收藏
- 关注
原创 fragment生命周期
自动管理回退栈:Jetpack Navigation 自动处理导航和回退,不需要手动调用。不会立即被调用),而是保留在内存中。可以对Lifecycle进行监听 然后做一些操作。会进入暂停和停止阶段,但通常不会被销毁。时,生命周期的表现取决于你是使用。进行页面跳转,启动新的。
2024-08-23 10:05:51
610
原创 经验-总结1
IDEA debug启动慢group_concat的长度限制mysql时间尽量使用datetime写脚本时使用了 insert ignore into 需要注意的一些问题
2024-04-22 17:39:26
298
原创 mysql explain详解
在连接查询时,如果被驱动表是通过主键或者唯一二级索引列等值匹配的方式进行访问的(如果该主键或者唯一二级索引是联合索引的话,所有的索引列都必须进行等值比较),则对该被驱动表的访问方法就是。possible_keys列中的值并不是越多越好,可能使用的索引越多,查询优化器计算查询成本时就得花费更长时间,所以如果可以的话,尽量删除那些用不到的索引。列就代表预计需要扫描的行数,如果使用索引来执行查询时,执行计划的。查询优化器决定使用全表扫描的方式对某个表执行查询时,执行计划的。
2024-04-22 11:48:32
658
原创 Openfeign
它具有可插入的注释支持,包括Feign注释和JAX-RS注释。Spring Cloud添加了对Spring MVC注释的支持,以及对使用Spring Web中默认使用的HttpMessageConverter的支持。feign统一对外暴露可以被调用的接口方法,大大简化和降低了调用客户端的开发量,也即由服务提供者给出调用接口清单,消费者直接通过OpenFeign调用即可。因此,如果在没有加入 LoadBalancer 依赖的情况下,使用 RestTemplate 或 OpenFeign 远程调用,就会报错。
2024-03-30 15:04:15
676
原创 nacos
注册中心解决了服务发现的问题 (而且可以是一个服务多个实例)配置中心就是一种统一管理各种应用配置的基础服务官网描述:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。简洁:服务注册和配置中心前四个字母分别为Naming和Configuration的前两个字母,最后的s为Service可以调整切换为CP,我们一般用默认AP即可 (CAP理论)先下载nacos 然后启动nacos 默认端口88482改配置加载顺序这里注意优先级,优先级是跟加载顺序相反,即application.name+a
2024-03-30 15:02:00
907
原创 spring给静态成员注入 你试过吗?
3.AutowiredAnnotationBeanPostProcessor类源码,扫描Class类需要注入的元数据的时候,直接选择忽略掉了static成员(包括属性和方法)。@PostConstruct用来修饰一个非静态的void方法,当bean创建完成的时候,会后置执行@PostConstruct修饰的方法,并且只运行一次。但是有时候 我们会想要去注入到静态成员 比如在工具类中使用static方法,这时我们就需要使用static属性,而这些属性又必须注入。在使用时 会报错NullPointer!
2023-11-18 11:04:29
349
原创 团队表 -多级团队设计
1.我们可以通过每一个团队字段加一个parentid (相当于一对多的关系)在代码中可以直接使用 like 009% 查询到它对应的所有子团队。如果是parentid 查询所有子团队需要多次sql查询。可以使用3位数代表一个层级 ,二级团队就是6位数。user_team团队表 ,如果存在子团队。//系统为了管理查询团队自动生成的有序编号。通过位数截取也可以查询到子团队的上级团队。
2023-11-03 11:57:01
124
原创 错题记录—哪个类用到了解决哈希冲突的开放定址法,MYSQL实现主从复制的日志是哪种,Java对象的初始化方式有
解决哈希冲突(四种方法):1、开放定址法:我们在遇到哈希冲突时,去寻找一个新的空闲的哈希地址。(1)线性探测法(2)平方探测法(二次探测)2、再哈希法3、链地址法:将所有哈希地址相同的记录都链接在同一链表中。4、建立公共溢出区:将哈希表分为基本表和溢出表,将发生冲突的都存放在溢出表中。java8中,下面哪个类用到了解决哈希冲突的开放定址法 (C)B. HashMapD. TreeMapset不解决冲突hashmap 链地址法。
2023-05-23 23:50:15
587
原创 加索引优化select EXPLAIN
今天工作中遇到一个小问题,一个搜索接口,要加一个2个字段用于搜索分析:这两个字段要在子表中去查询,查看原来mapper中的接口,已经连了N个子表,sql速度在10秒左右。加上了新的子表,然后去试了一下 sql 一分钟以上没停。解决:因为在这个sql里也有分页,还是必须得连表在子表的加上了索引,恢复到了10秒左右过程:type字段:疑惑:不是说 一般不让连那么多表吗?为啥公司连了这么多表?思考:有没有其他解决方法,不连表怎么解决 根据新加条件的分页?
2023-05-16 22:29:29
401
原创 MQ-rabbitMQ_基础篇
MQ(message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是message 而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ 是一种非常常见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了 MQ 之后,消息发送上游只需要依赖 MQ,不用依赖其他服务。
2023-05-14 20:59:12
453
原创 浅谈 如果做微服务了 这个模块怎么去划分?
平衡拆分粒度可以从两方面进行权衡,一是业务发展的复杂度,二是团队规模的人数。如上图,它就像弓箭一样,只有当业务复杂度和团队人数足够大的时候,射出的服务拆分粒度这把剑才会飞的更远,发挥出最大的威力。的角度:没有足够复杂到 2~3 个人没法维护的地步,没必要继续将商品服务拆的更细。 尽量不要有服务之间的环形依赖或双向依赖,原因是存在这种情况说明我们的功能边界没有划分清楚或者有通用的功能没有下沉下来。用户模块,订单模块,视频点播模块。还是高内聚 低耦合的一个思想吧 ,单一职责的设计原则,也是一个封装的思想吧,
2023-04-12 11:15:52
895
原创 innoDB为什么一页上16K?并且二级索引只存索引不存行数据?
因为操作系统在磁盘上读数据 默认就是16K,在操作系统的文件管理系统中进行一次io读写,局部性原理,操作系统会将命中的页周围的三块页一同加载进innodb的缓存池中,因此innnodb缓存池中页的大小为16kb。目的话 还是在尽量去减少io的次数。只存索引不存行数据也是这样减少io次数。
2023-04-12 10:00:18
253
原创 JAVA-IO流复习
流:是一张抽象概念,是数据传输的总称,数据在设备之间的传输为流。分类:输出流/输入流,字节流/字符流(在记事本读的懂的是字符流,读不懂的是字节流)(不确定用字节)位置:作用:作用1,在JKD11,FileRead.FileWrite中已经可以指定了作用2:字节流到字符流解决了乱码,字符流到缓存字符流 解决了读一行。
2023-03-15 09:49:08
366
原创 JAVA多线程join()方法细解 到底释放锁吗?
join方法能干吗?在A线程中调用B.join()那么B线程会获得cpu执行。当前线程进入WAITING/TIMED_WAITING状态,线程t执行完毕或者millis时间到,当前线程t一般情况下进入RUNNABLE状态。t1.wait();会释放t1 这个线程的对象锁 也就是说t1.join()会释放t1这个对象的锁,其他的锁不会释放。wait方法:native方法 作用是释放调用对象的对象锁,当前线程进入等待状态。不会释放 因为join的调用对象是mythread,释放的是mythreda的锁。
2023-03-03 17:33:43
478
原创 JVM全面总结
一.类加载子系统why 为什么要这么做?when 什么时候会触发加载How 怎么样进行的---加载相关---类加载器双亲委派机制沙箱安全机制---链接过程相关------初始化相关---类构造器clinit()二.运行时数据区1.方法区(永久代 元空间)(1)方法区在哪?(2)方法区里有什么?为什么使用元空间替换永久代?4.8. 方法的调用常量池内存位置演化2.堆调用关系3.程序计数器(PC寄存器)4.虚拟机栈(1)操作数栈栈顶缓存技术(Top Of Stack Cashing)技术(2)动态链接。
2023-02-26 21:19:09
1333
原创 HashMap相关的一系列问题
在受到攻击和用户实现这种不好的hash算法时可以保证一定的性能。尽量使用链表hash值如果足够随机,则在hash表内按泊松分布,在负载因子0.75的情况下,长度超过8的链表出现概率是0.00000006,选择8就是为了让树化几率足够小。源码中的解释:当hashCode离散性很好的时候,树型bin用到的概率非常小,因为数据均匀分布在每个bin中,几乎不会有bin中链表长度会达到阈值。
2023-02-22 13:21:32
274
原创 TCP的三次握手 四次挥手 和相关问题
这其中的原因就是,要确保服务器是否已经收到了我们的 ACK 报文,如果没有收到的话,服务器会重新发 FIN 报文给客户端,客户端再次收到 ACK 报文之后,就知道之前的 ACK 报文丢失了,然后再次发送 ACK 报文。如果client发的SYN请求 在网络中长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。但是后面serve接收到了,假设不采用“三次握手”,那么只要server发出确认,新的连接就建立,server却以为新的运输连接已经建立,并一直等待client发来数据。
2023-02-09 18:42:45
347
原创 分布式理论
一个分布式系统里面,节点组成的网络本来应该是连通的。然而可能因为一些故障,使得有些节点之间不连通了,整个网络就分成了几块区域。数据就散布在了这些不连通的区域中。这就叫分区。当你一个数据项只在一个节点中保存,那么分区出现后,和这个节点不连通的部分就访问不到这个数据了。这时分区就是无法容忍的。
2023-02-08 17:19:30
405
原创 规则引擎设计与实现
用Nacos ,里面修改配置的jar包配置文件,springBoot 会自动更新内容,我们的动态实时更新规则,就是这样实现的。在抽象语法树中,通常会验证某节点的子节点的数据类型是否合法。抽象语法树:表达式抽象语法结构的树状表示,对于一个表达式,抽象语法树一定时唯一确定的。规则引擎是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并。参数注入:在规则执行过程中,使用输入的参数值来计算语法树中的标识符节点值的过程。理解----->执行----->输入,输出。解决开发人员重复编码的问题。
2023-02-03 11:43:39
562
原创 java常见题3
协议不同:如 http 和 https;域名不同端口不同springboot 的解决方法**使用 @CrossOrigin 注解实现跨域 **修饰类,也可以修饰方法通过配置文件实现跨域;添加 @Configuration 注解,实现 WebMvcConfigurer 接口;重写 addCorsMappings 方法,设置允许跨域的代码。通过 CorsFilter 对象实现跨域;和上一种实现方式类似,它也可以实现全局跨域@Configuration // 一定不能忽略此注解@Bean。
2023-01-04 22:03:07
333
原创 java常见题2
6.String作为hashmap的键为什么好? 7.finally和return之间的纠缠 8.不会初始化子类的3种情况 9.String s = new String(" a ") 到底产生几个对象? 10.String s="java"+"and"+360 到底产生几个对象?;
2022-12-12 20:21:25
77
原创 定时轮询-长轮询-websocket
一般网页 点击网页后,前端向后端 发送请求(使用http协议)那么如何实现后端主动先前端发送数据,比如:网页游戏 聊天室 文件共享 扫码登入在前端代码中每隔一段时间向后端发送请求。 前端不断询问后端 这个码有人扫过了没。(伪服务器推)消耗带宽 服务器压力大应用:微信扫码登入客户端发起请求后,服务端发现当前没有新的数据,这个时候服务端没有立即返回请求,而是将请求挂起,在等待一段时间后(一般为30s或者是60s),发现还是没有数据更新的话,就返回一个空结果给客户端。客户端在收到服务端的回复后,立即再次向服务端发
2022-12-03 20:08:06
1220
原创 数据结构-红黑树 B B+树
二分查找二叉树二叉平衡树平衡因子不超1查找和二叉查找一样的 删除和插入比较复杂四种失去平衡的方法LR 两步RL 两步不断旋转比较耗时 进一步改进:调整的次数少 平衡性不如二叉平衡树 ,插入删除频繁的使用红黑树,不频繁的使用二叉平衡树。(这里的空节点是叶子节点,与以往太不一样)1.结点是红色或黑色。2.根结点是黑色。3.每个叶子结点都是黑色的空结点(NIL结点)。4.红属性 :每个红色结点的两个子结点都是黑色。5.黑属性:每一个结点到其每个叶子的所有路径都包含相同数目的黑色结点。The height of
2022-11-15 22:01:48
1252
原创 java常见题1
在程序执行的过程中,可以创建多个对象,既多次实例化。父类方法是包访问权限,子类的重写方法是public访问权限。实例变量:随着对象的创建而初始化,随着对象的被回收而消亡,每一个对象的实例变量都是独立的。非静态实例变量显示赋值代码和非静态代码块从上到下顺序执行,而对应构造器的代码最后执行、类变量:随着类的初始化而初始化,随着类的卸载而消亡,该类的所有对象的类变量是共享的。()方法 方法可能重载有多个,有几个构造器就有几个()方法方法。:上图中的 4 没有输出,重写的方法两个类中都调用的是子类的。
2022-11-07 20:25:12
300
原创 JUC五-ForkJoin,JMM和volatile,CAS,自旋锁,死锁
上面例子体现的实际就是可见性,它保证的是在多个线程之间,一个线程对volatile 变量的修改对另一个线程可见, 不能保证原子性,仅用在一个写线程,多个读线程的情况。,编译器重排序,就是在编译过程中,编译器根据上下文分析对指令进行重排序,目的是减少CPU和内存的交互,重排序之后尽可能保证CPU从寄存器或缓存行中读取数据。(3)请求和保持条件:进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源已被其他进程占有,此时请求进程被阻塞,但对自己已获得的资源保持不放。所以两次操作值还是1,肯定就少了。
2022-11-07 16:45:42
300
转载 11种行为型模式
笔记来源于黑马程序员行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分派行为,后者采用组合或聚合在对象间分配行为。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象行为模式比类行为模式具有更大的灵活性。行为型模式分为:以上 11 种行为型模式,除了模板方法模式和解释器模式是类行为型模式,其他的全部属于对象行为型模式。在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者
2022-11-05 18:18:03
129
原创 java的四种引用类型代码
虚引用是最弱的一种引用关系,如果一个对象仅持有虚引用,那么它就和没有任何引用一样,它随时可能会被回收,在 JDK1.2 之后,用 PhantomReference 类来表示,通过查看这个类的源码,发现它只有一个构造函数和一个 get() 方法,而且它的 get() 方法仅仅是返回一个null,也就是说将永远无法通过虚引用来获取对象,虚引用必须要和 ReferenceQueue 引用队列一起使用。在 JDK1.2 之后,用java.lang.ref.SoftReference类来表示软引用。
2022-10-29 23:09:19
171
原创 UML图和软件设计原则
类图(Class diagram)是显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。类图不显示暂时性的信息。类图是面向对象建模的主要组成部分。
2022-10-25 21:30:57
197
1
原创 Vm options -D 修改springboot项目的配置文件(在idea一个项目多开)
例如 我希望在idea中一个项目多开,不同的端口,模拟集群效果。spring.application.name也可以更改。对应application.yml中的位置。
2022-10-13 13:24:23
2120
原创 JUC四-阻塞队列BlockingQueue,线程池(三大方法,七大参数,四种拒绝策略)
阻塞队列BlockingQueue,线程池(三大方法,七大参数,四种拒绝策略)
2022-09-27 19:31:06
433
原创 JUC三-集合的不安全操作,callable,countDownLatch,cyclicBarrier,Semaphore,读写锁
核心思想是,如果有多个调用者(Callers)同时要求相同的资源(如内存或者是磁盘上的数据存储),他们会共同获取相同的指针指向相同的资源,直到某个调用者视图修改资源内容时,系统才会真正复制一份专用副本(private copy)给该调用者,而其他调用者所见到的最初的资源仍然保持不变。在资源竞争不是很激烈的情况下,Synchronized的性能要优于ReetrantLock,但是在资源竞争很激烈的情况下,Synchronized的性能会下降几十倍,但是ReetrantLock的性能能维持常态;
2022-09-27 19:29:06
315
原创 JUC二-八个关于锁的问题(精准认识synchronized )
原因是:对于static静态方法来说,对于整个类Class来说只有一份,对于不同的对象使用的是同一份方法,相当于这个方法是属于这个类的,如果静态static方法使用synchronized锁定,那么这个synchronized锁会锁住整个类!不管多少个对象,对于静态的锁都只有一把锁,谁先拿到这个锁就先执行,其他的进程都需要等待!那么顺序又是怎么样的呢?原因:因为一个锁的是Class类的模板,一个锁的是对象的调用者。4.如果我们使用的是两个对象,一个调用发短信,一个调用打电话,那么整个顺序是怎么样的呢?
2022-09-27 19:23:00
197
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人