- 博客(103)
- 收藏
- 关注
原创 Vue3速学——(一)
Vue是基于MVVM模式,主要包含了Model(数据模型)、View(视图)和ViewModel(视图模型)。const 数据名=数据值</script>
2025-03-13 21:36:14
674
原创 Java中synchronized的使用及锁升级
这时创建了两个ThreadSyn的对象threadSynOne和threadSynTwo,线程thread1执行的是threadSynOne对象中的synchronized代码,而线程thread2执行的是threadSynTwo对象中的synchronized代码。结论:当两个并发线程(thread1和thread2)访问同一个对象中的synchronized代码块时,在同一时刻只能有一个线程得到执行,另一个线程受阻塞,必须等待当前线程执行完这个代码块以后才能执行该代码块。调用ThreadSyn。
2025-02-13 20:22:27
770
原创 银行家算法
检查P0:Need (7, 4, 3) > Work (3, 3, 2) → 不可执行。- 检查P2:Need (6, 0, 0) > Work (5, 3, 2) → 不可执行。- 检查P1:Need (1, 2, 2) ≤ Work (3, 3, 2) → 可执行。- 检查P3:Need (0, 1, 1) ≤ Work (5, 3, 2) → 可执行。- 检查P4:Need (4, 3, 1) ≤ Work (7, 4, 3) → 可执行。定义了系统中n个进程中的每个进程对资源的最大需求。
2025-02-11 20:49:23
526
原创 B树(类似红黑树)、B+树
由于B树的每一个节点都包含key和value,因此我们根据key查找value时,只需要找到key所在的位置,就能找到value,但B+树只有叶子结点存储数据,索引每一次查找,都必须一次一次,一直找到树的最大深度处,也就是叶子结点的深度,才能找到value。减少寻址次数,增加对比次数(B树);磁盘寻址时间较长,所以要减少寻址次数,用B树。B+树的叶子结点都是相连的,因此对整棵树的遍历只需要一次线性遍历叶子结点即可。,只当做索引使用,因此在内存相同的情况下,能够存放更多的key。数据以文件的形式存储。
2025-02-04 00:22:21
572
原创 Java基础(六)
new方法创建的对象不在字符串常量池中,并且k5,k6有自己独立的空间和地址,即使k5和k6的数据一样。除非String k7=k6,这样k7和k6指的是同一块内存,同一块地址。将aaa改成kk,需要两个边界,不然读出来的数据是kka,两个边界比较麻烦。所以原来的空间是不能用的。字符串包括:汉字、字母、数字、几何图形(%)、换行、空格。如果是一个单等于号,意思是保持指向相同。中,常量池内没有被指向的数据空间不会被。码点,输出的数字为哈的编码值。==基本类型,比较的是。==引用类型,比较的是。
2025-02-04 00:20:06
411
原创 输入、输出(tomcat)
类名+包名.getDeclaredAnnotation(WebServlet.class)用来获取servlet的url。(servlet是动态资源,html是静态资源)servlet容器就是MapHash。servlet什么时候加载动态资源?
2025-02-04 00:14:04
184
原创 Java异常详解
Class clazz=class.forName("com.qcby.demo.Animal") //这也是由编译器找到的,但是这个属于异常,这是程序给我们的提示。String a=1;//编译出错-----》这个是由编译器给我们找到的错误。主方法中用try-catch,不影响后面代码的执行。
2025-02-04 00:08:28
322
原创 Java基础(五)
将变量私有化设置get,set方法可以控制此变量的可读可写,get,set方法没有任何安全的性质,变量只设置可读有安全性,但是数组不具有安全性,因为可设置另一个数组指向相同的数组地址进行修改数据。所以在改动后需要将数据设置为无效,将内存回收。Java会自动回收,有定时检测器。调用方法也就创建了对象。类中有一个没有返回值,方法名与类名相同的就是构造方法。getage()访问器,setage()更改器。指的是方法的名字相同,但是入参不一样。这样更改就不会修改数据。对方法的调用是拷贝使用;
2025-02-04 00:05:46
369
原创 创建链表详解
因为listnode所定义指针存的地址还必须是listnode类的存储结构。head==null,head相当于普通变量,存放的是地址。ListNode next并没有创建对象,只是存放地址。1.如何创建链表---------->类与对象。无参构造器listnode()listnode类型。
2025-02-02 17:12:49
128
原创 Java基础(三)
(根据电压高低,电阻发生变化,可在绝缘体、导体间来回切换),强电压作用到半导体的时候,它的化学键被击穿,它就变成导体了。当弱电压的时候,化学键又很稳定,打不穿了,是绝缘体。与运算只有1-1=1,其它都是0;:与电路(两个高电压输出一个高电压)、异或电路、或电路、非电路(只有一个入);有一组寄存器,一件事情分为好几步,寄存器告诉小电路下一步要做的事情)(<<)左移(补0)、(>>)右移(补符号位,符号位是1补1,是0补0。11.移位运算(移出内存的被舍弃,空缺的补数)有。(在没有超范围的计算下是成立的);
2025-02-02 17:08:09
226
原创 Java基础(二)
电脑申请空间最低是一字节(8bit),那为什么不用1字节来表示。在操作系统上运行的只有C,java的布尔类型其实是用C语言的int来实现的。C语言有6种类型:char,short,int,long,double,float。在操作系统中运行的时候只有这六种变量。在内存也只有这6种变量。2.国内的编码有:asscii,unicode,utf-8,jbk(ANSI),utf-16,utf-32。编码是每一种几何图形。的,ascii编码只能表示英文字母和一些符号不够用。都是一套编码,编码只跟几何图形的形状有关。
2025-02-02 17:05:05
302
原创 Java基础(一)
float表示的越精确,绝对值越大。进制的表达方式:0b-----二进制开头;0-----八进制开头;0x------十六进制(0~15),10~15(A~F)例子:(七进制) 6543 = 6000+500+40+3=6*7^3+5*7^2+4*7^1+3(十进制):每个英文的首字母大写,其他字母小写,第一个单词全部小写-------文件名、变量名、方法名。是程序样例,别人给你写了套代码让你用,里边加上各种说明,怎么调用,什么意思,就是SDK;:每个英文的首字母大写,其他字母小写--------类名。
2025-02-02 17:00:50
178
原创 内存图详解
上,硬盘上只能存储文件,硬盘中有虚拟内存也是以文件的形式存储变量、函数等;内存存储变量函数,在内存上运行程序。必须经过操作系统内核调用硬件,不经过操作系统内核单独调用会有干扰。栈、方法区、堆、程序计数器、本地方法栈。:调度硬件,使硬件协同工作。每个程序都是独占一块内存。
2025-02-02 16:54:35
290
原创 冒泡排序算法
对存放原始数组的数据,按照从前往后的方向进行多次扫描,每次扫描都称为一趟。当发现相邻两个数据的大小次序不符合时,即将这两个数据进行互换,如果从小大小排序,这时较小的数据就会逐个往前移动,好像气泡网上漂浮一样。
2025-02-02 16:43:46
150
原创 递归算法详解
那么问题就转化成了第四节台阶和第三节台阶的跳法既: f(n) = f(n-1) + f(n-2)假设现在有5节台阶,那么跳上第五节台阶有两种方案。第二节台阶:有每次都跳一节和一次跳两节两种跳法。1.确定递归函数的参数和返回值。第一:从第四节台阶向上跳一节,第二:从第三节台阶上向上跳两节。3.确定单层递归的逻辑。第一节台阶:只有1种跳法。
2025-02-02 16:40:01
162
原创 双指针算法详解
双指针技巧主要分为两类:左右指针和快慢指针对于单链表来说,大部分技巧都属于快慢指针,在数组中并没有真正意义上的指针,但我们可以把索引当做数组中的指针。
2025-02-02 16:36:59
186
原创 有效的括号
遍历字符串匹配的过程中,栈已经为空了,没有匹配的字符了,说明右括号没有找到对应的左括号return false。已经遍历完了字符串,但是栈不为空,说明有相应的左括号没有右括号来匹配,所以return false。遍历字符串匹配的过程中,发现栈里没有要匹配的字符。所以return false。
2025-02-02 16:32:13
433
原创 用一个数组实现两个栈
3.如果需要对第一个栈执行元素入栈操作,那么将元素赋值到左边下标变量指示的位置。4.如果需要对第二个栈执行元素入栈操作,那么将元素赋值到右边下标变量指示的位置。2.左边的下标指示第一个栈,右边的下标指示第二个栈。1.初始化两个下标变量分别指向数组的左右两端。5.第一个栈向右增长,第二个栈向左增长。用一个数组实现两个栈。
2025-02-02 16:14:43
523
原创 用队列实现栈
2.入栈的时候,找到不为空的队列,出size-1个元素到重新插入到队列当中,剩下的这个元素就是出栈的元素。2.入栈的时候,找到不为空的队列,出size-1个元素到另一个队列中,剩下的这个元素就是出栈的元素。第二种是用一个队列实现一个栈。基本思路:使用两个队列,其中一个队列用来存放元素,另一个用来做辅助输出。基本思路:使用两个队列,其中一个队列用来存放元素,另一个用来做辅助输出。,刚开始都为空指定入到一个队列。,刚开始都为空指定入到一个队列。1.入栈的时候,入到不为空的。1.入栈的时候,入到不为空的。
2025-02-01 23:20:53
237
原创 用栈去实现队列
我们要用栈的先进后出,来模拟实现队列的先进后出。我们需要借助两个栈去实现,分别叫做栈1和栈2。栈1主要是用来存储数据的,我们将要插入的数据全部存放在栈1当中。首先判断栈2当中是否有数据,如果有,怎直接返回栈2的顶部元素。如果没有,则将栈1当中的数据全部放入到栈2当中。队列的特点:先进先出。
2025-02-01 23:19:06
148
原创 String、StringBuffer基本用法——字符串处理
byte[] getBytes() 将一个字符串转换成字节数组。int length() 得到一个字符串的字符个数。
2025-02-01 23:16:59
228
原创 Spring框架的介绍
Spring是一个开放源代码的设计层面框架,它解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。Spring是于2003 年兴起的一个轻量级的Java开发框架,由Rod Johnson在其著作Expert One-On-One J2EE.Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。
2025-02-01 23:08:38
205
原创 缓存详细讲解
在核心配置文件中,设置全局属性cacheEnable="true",sqlmapconfig文件。先查询二级缓存,因为二级缓存中可能会有其他程序查询出来的数据,可以直接拿来使用。二级缓存是SqlSessionFactory级别,是指dao层(持久层);2.经常需要查询,不经常修改的数据,不是特别重要的数据都适合存储到缓存中。1.在内存中临时存储数据,速度快,可以减少数据库的访问次数。SqlSession关闭之后,一级缓存的数据会写入二级缓存。如果二级缓存命中,再查询一级缓存。
2025-02-01 23:00:39
421
原创 MyBatis延迟加载策略
延迟加载:当前查询用户的时候,没有把该用户所拥有的帐户信息查询出来,而是使用帐户数据的时候,再去查询账户的数据。例如查询用户的时候,可以先不查账号信息,等需要使用帐户信息的时候,再去查询,选择延迟加载。例如查询账户的时候,可以直接把用户查询出来,即查询多对一,这个时候可以选择立即加载。立即加载:当前查询用户的时候,默认也把该用户所拥有的帐户信息查询出来了。立即加载和延迟加载的区别,使用一对多的环境举例子。
2025-02-01 22:55:14
168
原创 Mybatis的连接池
POOLED----使用连接池,UNPOOLED-----不使用连接池,JNDI------使用JNDI实现连接池。解决了什么问题:若果没有连接池,每次执行sql语句都会创建连接,浪费时间、影响程序性能。mybatis连接池的分类:datasource标签中的type属性有3个取值。什么是连接池:存储连接的容器。
2025-02-01 22:43:10
73
原创 Mybatis入门程序
mybatis的核心文件:sqlmapconfig.xml文件。创建sql会话,通过绘画创建sqlsession对象。environments:配置环境们,设置默认值。transactionManager:设置事务。environment:设置数据库环境。dataSource:配置连接池,不创建代理对象,直接使用会话。
2025-02-01 22:27:32
399
原创 Mybatis初步了解
数据库厂商都会有自己的驱动包,上面一层对jdbc进行接口规范(对jdbc进行封装),再上一层mybatis框架MyBatis是一个优秀的基于Java的持久层框架,内部对JDBC做了封装,使开发者只需要关注SQL语句,而不用关注JDBC的代码,使开发变得更加的简单。(由之前的7个步骤变成了mapper接口和一个sqlmapconfig.xml文件)
2025-01-27 22:22:09
436
原创 服务器上安装Nginx详细步骤
第一步:上传nginx压缩包到指定目录。第二步:解压nginx压缩包。第三步:配置编译nginx。第四步:编译nginx。
2025-01-27 19:56:59
761
原创 Docker常用命令
docker exec -it 容器id bash-------------进入容器。docker start tomcat8 启动容器docker。docker info------查看docker信息。docker stop tomcat8 关闭容器。容器的名字是唯一的,名字重复后镜像启动失败。docker ps 查看正在运行的容器。rm tomcat8 删除容器。
2025-01-25 02:14:27
133
原创 深入了解Docker容器
例如,JDK、Tomcat、应用都被打包在了一起,运行在Docker容器里,容器和容器间是隔离的。4.虚拟机实现了操作系统之间的隔离,Docker是进程之间的隔离,虚拟机隔离级别更高、安全性方面也更强。而Docker是在操作系统的层面虚拟化,复用操作系统,运行Docker容器。5.虚拟机和Docker各有优势,不存在谁替代掉谁的问题,很多企业都采用物理机上做虚拟机,虚拟机中跑Docker的方式。什么是虚拟机:在一台物理机器上,利用虚拟化技术,虚拟出来多个操作系统,每个操作系统之间是隔离的。
2025-01-25 02:07:56
442
原创 对于Docker的初步了解
1.不需要安装环境,工具包包含了环境(jdk等)2.打包好,“一次封装,到处运行”3.跨平台,docker容器在任何操作系统上都是一致的,这就是实现跨平台跨服务器。只需要一次配置好环境,换到别的机子上就可以一键部署好,大大简化了操作。4. 容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。5.是一个虚拟化轻量级Linux服务器,就是centos镜像,只有项目需要的东西,多一个命令都不会有。
2025-01-25 02:03:21
446
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人