- 博客(58)
- 收藏
- 关注
原创 JUC并发编程(下)
首先分析之前的线程安全单例代码上述代码的问题是synchronized范围太大,导致每次调用getInstance()都会经过线程安全保护,影响性能,其实只需在第一次创建单例是进行线程安全保护即可,于是有了下图的双重校验的优化代码用享元模式和多线程知识保护数据库连接池的线程安全,每个web请求都对应一个线程,都要从连接池获取连接,归还连接,要保证这些方法的线程安全连接池有大小,支持扩容和收缩MyConnection类实现Connection即可,下列代码中没有体现代码实现i < 5;i++) {
2025-05-21 20:59:11
298
原创 JUC并发编程(上)
1.使用join后线程不能执行其他操作,而保护性暂停可以在等待过程中执行其他操作2.使用join获得的结果的变量是全局的,而保护性暂停的变量是局部的log.debug("等待结果..");log.debug("结果是:{}", result);}, "t1");log.debug("进行下载..");// 等待下载完成结果try {String result = "下载完成";}, "t2");t1.start();t2.start();try {
2025-05-11 22:18:26
970
原创 SpringCloud微服务知识点
单体架构时,前端只需请求8080端口就可拿到任意数据。现在项目被拆成多个服务,端口也不相同,且到线上部署时,ip和端口也可能发生改变,此时前端该怎么办呢?(服务地址过多,前端不知道请求谁)在单体项目中,只要用户登录和校验成功,所有业务都能拿到用户的登录信息完成业务。现在每个服务都可能需要登录信息,如果各自做登录校验,不仅麻烦,因为要给服务发送密钥,还有密钥泄露风险。对外只暴露网关接口,网关将后端的微服务隐藏起来,对于前端来说,和之前的单体架构没有不同。
2025-04-30 15:16:15
949
原创 JVM知识点(一)---内存管理
Program Counter Register程序计数器(寄存器)是记住下一条jvm指令的执行地址是线程私有的不会存在内存溢出线程私有指的是:每个线程有一个自己的计数器。在线程即将切换时,计数器记住下次要执行指令的地址,等线程再次切换回来时,会根据计数器记住的指令地址,继续执行上次未执行完的流程。Java Virtual Machine Stacks(Java虚拟机栈)每个线程运行时所需要的内存,称为虚拟机栈每个栈由多个栈帧(Frame)组成,对应着每次方法调用时所占用的内存。
2025-04-26 21:33:09
899
原创 RPC通信原理实战
协议私有,通信两端要一致需要自研协议解析库可以做到协议精简,性能和安全性更高总结:对于一些开源的RPC框架,大都会自研RPC通信协议,同时也支持HTTP/1.1IO模型。
2025-04-23 15:18:58
889
原创 Git基础
Git是一个,主要用于管理开发过程中的源代码文件(Java类、ml文件、html页面等)。通过Gt仓库来存储和管理这些文件,分为两种:●开发人员自己电脑上的Git仓库●远程服务器上的Git仓库提交,将本地文件和版本信息保存到本地仓库推送,将本地仓库文件和版本信息上传到远程仓库拉取,将远程仓库文件和版本信息下载到本地仓库。
2025-03-22 23:15:35
929
原创 Redis基础及常用命令
Redis是一个基于的key-value结构数据库。Redis是一个开源的内存中的数据结构存储系统,它可以用作:数据库、缓存和消息中间件。Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库,官方提供的数据是可以达到100000+的QPS(每秒内查询次数)。它存储的value:类型比较丰富,也被称为结构化的NoSql数据库。NoSq(Not Only SQL),不仅仅是SQL,泛指非关系型数据库。NoSql数据库并不是要取代关系型数据库,而是关系型数据库的补充。
2025-03-22 00:36:27
891
原创 JUC并发知识点(一)
一锁:synchronized二并:并发(一对多),并行(多对多)三程:进程 线程 管程进程:系统的应用程序。占用一定的内存空间和系统资源。线程:轻量级进程。同一进程有一个/多个。操作系统时序调度的基本单元。管程:Monitor(监视器),也就是我们平时所说的锁。
2025-02-06 09:00:00
887
原创 MySQL知识点总结(一)
数据定义(DDL):创/改/删/名/清(cadrt)数据库对象:表/视图/存储/函数/触发器/事件数据操作(DML):增/删/改/查(idus)操作数据库对象数据控制(DCL):提/回/保/赋/收(权限)(crsgr)
2025-02-05 13:22:18
397
原创 ArrayList底层原理
当添加元素为一个一个添加时,首次添加第一个元素,会创建一个长度为10的数组,存满时会扩容1.5倍,新建一个长度为15的数组,然后把之前的数据放进去。如果添加多个元素,超过了1.5倍,则创建的数组以实际为准。
2024-07-03 06:28:47
190
原创 字符串知识点
1.Strin是Java定义好的一个类。定义在java.lang包中, 所以使用的时候不需要导包。2.Java程序中的所有字符串文字(例如"abcdefg")。都被实为此类的对象。3.字符串不可变,它们的值在创建后不能被更改StringBuilder 可以看成是一个容器,创建之后里面的内容是可变的作用:提高字符串的操作效率。
2024-07-02 00:51:31
512
原创 Java-File
File概念File三种构造方法创建文件路径File的成员方法1.文件和文件夹判断2.文件获取3.文件和文件夹创建4.文件和文件夹的删除5.文件夹获取并遍历
2024-06-30 00:42:06
221
原创 Java-方法引用
把已经有的方法拿过来用,当做1、引用处必须是函数式接口2、被引用的方法必须已经存在3、被引用方法的形参和返回值 需要跟抽象方法保持一致4、被引用方法的功能要满足当前需求。
2024-06-27 23:08:26
486
1
原创 静态内部类&局部内部类
创建的格式:外部类名.内部类名 对象名=new外部类名.内部类名();调用的格式:先创建对象,用对象调用调用的格式:外部类名.内部类名.方法名();
2024-06-24 23:11:18
185
原创 Java-内部类&成员内部类
在一个类的里面,再定义一个类。举例:在A类的内部定义B类,B类就被称为内部类内部类表示的事物是外部类的一部分内部类单独出现没有任何意义。
2024-06-24 22:27:28
423
原创 Java-接口
成员变量为什么只能是常量:因为是规定好的,不能修改用final;方便调用static;都可以调用public为什么没有构造方法:不需要创建对象,不需要为子类成员变量赋值。
2024-06-23 22:51:56
153
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人