- 博客(18)
- 收藏
- 关注
原创 第1章 并发编程的挑战(笔记简写)
并发编程的目的是为了让程序运行得更快,但是,并不是启动更多的线程就能让程序最大限度地并发执行。在进行并发编程时,如果希望通过多线程执行任务让程序运行得更快,会面临非常多的挑战,比如上下文切换的问题、死锁的问题,以及受限于硬件和软件的资源限制问题.
2024-08-08 23:52:15
469
原创 Vue万字学习笔记(入门2)
响应式基础声明响应式状态reactive()额外的 ref 解包细节计算属性基础示例计算属性缓存 vs 方法可写计算属性最佳实践Class 与 Style 绑定绑定 HTML class绑定内联样式(主要是帮助我们理解平常写的项目)
2024-08-08 18:16:28
677
原创 Vue万字学习笔记(入门1)
简介Vue是什么渐进式框架单文件组件API 风格创建一个 Vue 应用挂载应用应用配置多个应用实例模板语法文本插值原始 HTMLAttribute 绑定使用 JavaScript 表达式指令 Directives
2024-08-07 08:00:00
1913
原创 run()和start()的区别
通过两个例子我们可以知道调用start方法可启动线程,可以并发,而run方法只是thread的一个普通方法调用,还是在主线程里执行。这里的意思就是说,star()方法可以异步地调用run()方法,是异步执行,直接调用run()方法是同步执行,因此也就不能达到多线程的目的。这两个方法应该都比较熟悉,把需要并行处理的代码放在run()方法中,start()方法启动线程将自动调用 run()方法,这是由jvm的内存机制规定的。并且run()方法必须是public访问权限,返回值类型为void。
2024-07-27 18:49:54
920
原创 第7章 虚拟机类加载机制(简述)
Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这个过程被称作虚拟机的类加载机制。
2024-07-27 17:23:20
450
原创 第六章 类文件结构(简述)
由JAVA文件编译成class之后,class文件里面的结构(class结构是一个相对稳定的结构,中间没有分隔符)Class文件是一组以8个字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在文件之中,中间没有添加任何分隔符,这使得整个Class文件中存储的内容几乎全部是程序运行的必要数据,没有空隙存在。各种不同平台的Java虚拟机,以及所有平台都统一支持的程序存储格式——字节码(Byte Code)是构成平台无关性。实现语言无关性的基础仍然是虚拟机和字节码存储格式。
2024-07-27 16:42:13
933
原创 Typora教程 下载/破解/激活
Markdown(MD) 是现在最流行的一种文档书写语言格式,用户只需用一些非常「简单易记」的语法就能轻松写出一篇具有良好的排版和可读性的文章。今天选中Typora这一款简单易用的Markdown编辑器进行讲解。Typora 是一款由 Abner Lee 开发的轻量级 Markdown 编辑器,与其他 Markdown 编辑器不同的是,Typora 没有采用源代码和预览双栏显示的方式,而是采用「所见即所得」的编辑方式,实现了即时预览的功能,但也可切换至源代码编辑模式。实时预览扩展语法图片拖拽。
2024-07-23 18:03:57
1167
1
原创 第3章 垃圾收集器与内存分配策略(2)
之前的算法是可达性分析,会选择一些对象作为根节点,那么我们选择什么作为根节点呢?是我们的要求选择根节点,我们快速找到根节点的过程就是根节点枚举。所有收集器在枚举根节点时必须暂停用户线程(我们写的程序),因此毫无疑问根节点枚举与之前提及的整理内存碎片一样会面临相似的“Stop The World”的困扰。
2024-07-17 15:22:56
850
原创 第3章 垃圾收集器与内存分配策略(1)
在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加一;当引用失效时,计数器值就减一;任何时刻计数器为零的对象就是不可能再被使用的。问题:至少主流的Java虚拟机里面都没有选用引用计数算法来管理内存,主要原因是,这个看似简单的算法有很多例外情况要考虑,必须要配合大量额外处理才能保证正确地工作,譬如单纯的引用计数就很难解决对象之间相互循环引用的问题。
2024-07-15 00:01:22
1004
原创 第2章 Java内存区域与内存溢出异常
假设Java堆中内存是绝对规整的,所有被使用过的内存都被放在一边,空闲的内存被放在另一边,中间放着一个指针作为分界点的指示器,那所分配内存就仅仅是把那个指针向空闲空间方向挪动一段与对象大小相等的距离,这种分配方式称为“指针碰撞”(Bump ThePointer)。但如果Java堆中的内存并不是规整的,已被使用的内存和空闲的内存相互交错在一起,那就没有办法简单地进行指针碰撞了,
2024-07-14 17:10:13
726
原创 Java基础知识点
1.main方法2.权限修饰符3、关键字4.数据类型5、包装器类:6、String7、数组8、抽象类和接口的区别9、类加载的先后顺序;10、Object类,equals和==的区别11、内部类
2024-07-12 14:44:15
977
原创 B树、B+树、B*树了解
B树:二叉树,每个结点只存储一个关键字,等于则命中,小于走左结点,大于走右结点,每个结点存储M/2到M个关键字,非叶子结点存储指向关键字范围的子结点; 所有关键字在整颗树中出现,且只出现一次,非叶子结点可以命中;B+树:在B-树基础上,为叶子结点增加链表指针,所有关键字都在叶子结点中出现,非叶子结点作为叶子结点的索引;B+树总是到叶子结点才命中;B*树:在B+树基础上,为非叶子结点也增加链表指针,将结点的最低利用率从1/2提高到2/3;
2024-07-12 11:40:58
760
原创 数据结构——线性表List(详细知识点总结)
用一组地址连续的存储单元依次存储线性表的数据元素,从而使得逻辑上相邻的两个元素在物理位置上也相邻,那么这种存储结构的线性表被我们称为顺序表。顺序表在逻辑上相邻的数据元素在物理层次上也相邻。所以我们只要确定了存储线性表的起始位置,线性表中的每一个元素都能够随机存取。
2024-07-11 11:41:12
1176
原创 128陷阱(详细版,自动装箱和自动拆箱,从源码角度分析以及==和equals的区别)
我们可以了解到在-128~127范围内会进行自动装箱,直接返回该值的内存地址,故-128~127 之间的数值用 == 进行比较时结果是true,相当于比较的是同一元素的内存地址,当比较的是不在该范围的数,就需要。他运行的结果一个是false一个是true,虽然他们都是一样的数字,但是为什么第一个结果是false呢,这就是我们今天要了解的128陷阱问题。注意:如果是new一个对象的话就不会出现128陷阱的问题了,因为new的对象内存地址是不同的,比较的不是同一个对象了。我们先来看下面这段代码。
2024-07-09 10:09:57
331
原创 final关键字
当final修饰引用数据类型(类、接口、数组)的变量,则引用变量所指向的对象,即该变量所存放的地址值,那么这个地址将不能更改,但是该对象的内容,即地址值上存储的内容还是可以更改的。这句话的意思是: 被final修饰的成员变量,一定要被赋值且只能被赋值一次,且必须是在这个成员变量所在的类对象创建之前被赋值。又可以分为成员变量和局部变量,被final修饰的变量称为最终变量,即自定义常量,只能赋值一次,不能二次修改。final修饰局部变量时,该变量必须在使用之前被赋值,且只能被赋值一次。
2024-07-09 09:50:27
339
原创 IDEA版Maven开发工具的安装配置
将仓库进行配置,我们在settings中查看最初的配置仓库地址,那么我们在对应位置找到仓库,复制仓库地址,修改settings.xml的localRepository,将该地址也就是本地仓库位置写入即可。但是这里需要注意一点我们的settings里写的.m2文件如果不存在的话,我们需要执行Maven相关的命令之后才会自动创建.m2文件夹。下载并解压之后,我们需要更改IDEA的settings配置,将Maven的地址改为我们新下载解压后的位置即可。然后找到需要下载的版本下载即可(我们一般下载Binary )
2024-06-24 15:31:27
337
1
原创 安装tomcat并放入自己写的程序实现外网访问
首先,需要租赁云服务器/轻量应用服务器。将我们租的服务器操作系统改为Linux操作系统。然后在控制台我的资源里找到我们刚刚购买的云服务器,在更多里面选择重装系统,然后选择安装centos。完成上述步骤后,我们要先打开服务器的详情页,重置服务器密码并且查看自己的IP。默认用户名均为root,密码自己修改,并记录。
2023-07-05 01:34:01
470
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人