- 博客(41)
- 收藏
- 关注
原创 JVM内存模型
依然存活的对象会被移送到幸存区(分为S0、S1),当YGC时候,将存活对象复制到未使用的幸存空间,将正在使用的空间完全清除,交换两块空间的使用状态,每次交换,年龄+1。由很多栈帧组成,每个栈帧由局部变量、操作数栈、动态链表和方法返回四部分组成虚拟机栈是线程私有区域,并且栈帧不允许被其他线程访问,不存在线程安全和垃圾回收问题。对象在伊甸区生成,当伊甸区填满的时候,会触发YGC,YGC垃圾回收的时候,在伊甸区实现清楚策略,没有被引用的对象直接回收。方法区、堆区、虚拟机栈、本地方法栈、程序计数器。
2024-09-27 13:03:57 931
原创 JVM垃圾收集器(重点知识)
第二步:将所有的存活的对象向一段移动,将端边界以外的对象都回收掉;堆区按照分代存储的好处:在Java堆区划分成不同区域后,垃圾收集器才可以针对不同的区域,安排与该区域存储对象存亡特征相匹配的垃圾收集算法:标记-复制算法、标记-清除算法、标记-整理算法等。在垃圾回收器线程扫描它所管辖的内存区域我的过程,一旦发现了只具弱引用的对象,不管当前内存空间足够与否,都会回收它的内存。:从GC Roots开始对堆的对象进行可达性分析,递归扫描整个堆里的对象图,找出存活的对象,这阶段耗时较长,但是可以与用户程序并发执行。
2024-09-26 11:33:58 799
原创 线程基础、状态及常用方法
什么是程序?程序是包含有计算机指令和数据的文件。什么是进程?进程是程序的一次执行过程,是计算机分配资源的最小单位。什么是线程?一个进程中会包含若干个线程,每个线程都是一个独立的执行单位。
2024-09-25 14:06:59 803
原创 线程池的执行流程、状态及类型
适用于处理CPU密集型的任务,确保CPU在长期被工作线程使用的情况下,尽可能的少的分配线程,即适用执行长期的任务。,线程池一旦被创建,就处于RUNNING状态,并且线程池中的任务数为0.该状态的线程池会接收新任务,并处理工作队列中的任务。如果线程池中不存在线程任务,则线程池会判断当前“存活的线程数”是否小于核心线程数corePoolSize;提交一个新的线程任务,线程池会在线程池中分配一个空闲线程,用于执行线程任务;如果小于核心线程数,线程池会创建一个新的线程(核心线程)去处理新线程任务;
2024-09-19 11:56:24 706
原创 Springboot的自动配置
Spring Boot 自动配置是 Spring Boot 框架的一个重要特性。它能够根据项目中引入的依赖和类路径中的资源,自动对应用进行配置,减少了开发者手动配置大量繁琐的配置文件的工作。这一特性极大地提高了开发效率,使开发者能够更加专注于业务逻辑的实现,而不是花费大量时间在基础配置上。
2024-08-18 23:48:26 705
原创 使用Java IO进行压缩文件的解析方式
Java IO库提供了对ZIP解压缩的支持,主要通过java.util.zip包中的类来实现。本文总结了对ZIP格式的文件进行解压,对RAR格式的文件进行解压,对ZIP格式的文件进行压缩。
2024-07-11 19:25:33 483 1
原创 Java小练--接收用户输入的数字,判断是否为质数;输出1-100内的所有质数
Java小练--接收用户输入的数字,判断是否为质数;输出1-100内的所有质数。
2024-03-18 14:29:18 614
原创 JSP-内置对象
客户端访问服务端多个页面时,其关联session对象是不变的,其id号是相同的。getId:获取session对象的id号,该号码唯一标识一次会话。访问重定向,将客户端对当前页面的访问重新定向至新页面地址。:session对象在如下情况下,id号会发生变化。作用:用来处理服务端响应给客户端浏览器的数据。Println(string) 方法同上。设置响应给客户端浏览器的文档类型。设置响应给客户端文档的头部数据。作用:用来管理和客户端的一次会话过程。作用:用来处理客户端发送的数据。login.jsp文件。
2024-03-14 10:02:09 559
原创 方法的调用
访问修饰符[private/public] static 返回值类型 方法名称(参数){ }[访问修饰符]: 代表该方法可以使用的范围[static关键字]: 该方法通过类名调用(如果是在当前类类,可以直接调用,类名省略)[返回值类型]:该方法调用后,产生并返回的结果类型(如果没有返回值,需要使用void)[方法名称]: 按照该方法的作用,为方法命名[方法参数]: 按照该方法的作用,为方法设计参数的个数和类型方法的定义查找3个int类型参数中的最大值// 方法的定义。
2024-03-07 10:23:23 502
原创 String字符串的常见方法总结
charAt( ):找到指定的下标处对应的元素;compareTo( ):比较两个字符串的大小关系;equals( ):判断两个字符串的内容是否一模一样;indexOf():从原字符串中查找目标字符串,返回第一次出现的位置;lastIndexOf():从原字符串中查找目标字符串,返回最后一次出现的位置;contains():判断原字符串中是否存在目标字符串;satrtsWith():判断原字符串是否以目标字符串开头;replace( ):将字符串里面某个内容全部替换成指定的内容;substring( )
2024-03-04 20:49:02 521
原创 Java-数组常见算法代码总结
2.1.如果“中位元素”大于“目标元素”,当前数组的前半部分作为新的搜索数组,因 为后半部分的所有元素都大于“目标元素”,它们全都被排除了。2.2.如果“中位元素”小于“目标元素”,当前数组的后半部分作为新的搜索数组,因 为前半部分的所有元素都小于“目标元素”,它们全都被排除了。2.如果不相等,继续比较“中位元素”与要查找的“目标元素”的大小关系。3.Arrays工具类。
2024-03-01 13:50:52 640
原创 Java-Arrays 工具类的常见方法总结
作用:将传入的参数转换为一个固定大小的 List。参数:动态参数 T... a返回值:list举例:源代码解读: 可变参数 a,将参数 a 作为参数传递给 ArrayList 构造函数,并返回一个包装了指定数组的固定大小的列表。使用了泛型 <T> 来表示返回的列表中的元素类型,及传入的参数类型。可传入任意类型的数组。作用:Java 中用于在数组中执行二分查找的方法。在有序数组中查找目标元素。参数:a (搜索的数组) key (目标的元素)返回值:如果找到了目标元素,则返回该元素在数组中的
2024-02-29 16:02:01 1917
原创 Java-数值类型的运算方式总结
可用于交换下标通过key的hashCode()方法返回的哈希值与它的高16位进行异或运算且数组长度是2的次幂作用:计算出的hash值,在计算下标位置时,会更“散列”,减少哈希冲突。
2024-02-26 19:02:26 1743
原创 Java 无序数组中查找元素(遍历查找、双指针查找、Arrays工具类的binarysearch()方法)
遍历查找:通过对无序数组进行遍历,将数组中的每个元素与指定元素进行比较,从而确定该数字中是否存在指定元素。双指针查找:通过两个下标,分别从数组的头部和尾部,同时对该无序数组进行遍历,将数组中的每个元素与指定元素进行比较,从而确定该数字中是否存在目标数组。Arrays工具类的binarysearch()方法:该方法基于二分查找法实现,数组必须是有序状态。
2024-01-26 22:06:54 851
原创 Java 无序数组排序(冒泡排序)
总共比较N-1轮 每轮。* 两两比较小(大)靠前。// a< b 结果是负数。// a >b 结果是正数。// a = b 结果是零。* 比较N-1-i次。//数组相邻元素比较。例题1:一组无序数组排序。
2024-01-25 19:42:41 520
原创 Java 数组查找元素
解:定义index下标为-1;遍历要查找的元素的字符串,如果i和目标元素相等,把i存入index中,并且返回;如果目标元素是存在的输出”target存在的位置index“,否则输出"抱歉, target 不存在!例题1:查找数组中指定元素下标位置。安琪拉存在,位置是2。
2024-01-23 19:05:58 441 1
原创 Java不同方法合并数组
例题:合并int[] arr1 = {1,2,3,4,5,6};方式1:使用System.arraycopy合并数组。方式3:一个循环进行两个数组的合并。方式2:创建保存结果的目标数组。
2024-01-23 18:05:43 683 1
原创 Java 数组复制
定义一个数组numbers,把要复制的数据存入,再定义一个目标数组target,它的长度是nulbers的长度;使用System.arraycopy(),它的效率高。System.arraycopy(原数组,开始复制的位置,目标数组,开始存储的位置,复制的长度)例题2: 定义一组数组,复制前三个元素,复制所有元素,复制指定区间元素,复制后5个元素。:使用copyOf()和copyOfRange()对数组进行复制。例题1:复制 1,3,5,7,9,11,13,15,17,19。
2024-01-23 18:00:59 374 1
原创 Java通过键盘输入并保存到数组
解:先定义数组,数组中保存7个数字,对数组进行循环,把输出的数字保存到temp中;再检查保存的数字是否再1-33范围之间,如果是,结束本次循环进入下一次,如果不是输出”请输入1-33之间的数字“;再检查是否存在重复值,如果存在输出"请不要输入重复数字!因为直接输出numbers运行出的直接是数组的内存地址,所以调用Arrays.toString()方法打印数组中的数据。循环输入n个数字,并保存到数组numbers;例题2:键盘输入1-33之间不重复的7个数字。例题1:通过键盘输入n个数字,并保存到数组。
2024-01-23 17:47:28 1298 1
原创 Java数组的遍历(使用不同方式)
使用for循环遍历字符串,int i(下标),n(开始的第一个值);i要小于数组的长度,i和n都是递增的。使用Math.random()产生随机数,指定下标位置的数据设置为0。本题要解决的是把foods数组和drinks数组组合套餐问题,在遍历字符串外部定义counter(为次数),遍历两次数组,都从下标0开始,范围小于长度,i++首先定义sum和total都为0,遍历数组;分别把不完整和完整的整数存入sum和total中,输出为total-sum。方法1直接使用LocalDate.of()方法;
2024-01-22 19:24:33 412
原创 Java S型输出数字
for循环中:用int定义i(第一个数)、counter(次数)、line(行数)从1开始;i的值小于等于15;如果次数和3取余为0,则换行并且行号递增。否则行号和1进行&运算结果,结果为1:则为奇数行数字递增;反之为偶数行数字递减。
2024-01-22 13:20:31 372
原创 遍历字符串
通过for循环对字符串进行遍历:初始条件设为i = 0,索引从0开始,循环条件为i < n.length(),当i =n.length()时,i已经超出了索引范围(0~n.length()-1),所有每次循环后要i++实现下标递增
2024-01-21 22:23:57 413
原创 BigInteger和BigDecimal
BigInteger和BigDecimal是大型数字(通常在金融、工程、科学等等领域使用)//RoundingMode.HALF DOWN代表四舍五入。创建时,通常使用”字符串“传入”原始值“大型浮点数:BigDecimal。大型整数:BigInteger。如果使用int会溢出。
2024-01-21 21:50:50 381
原创 Java的运算
||运算: 同时为false,结果为false,否则true。&&运算: 同时为true,结果为true,否则false。向左移几位相当于n*2^几;向右移几位相当于n/2^几;整数运算时,除数不能为零;
2024-01-21 20:31:24 374
原创 Java基本数据类型
Java这中定义了8种数据类型。分为数值型和非数值型,数值型又分为整数类型和浮点数类型。通过"关系运算符"、"逻辑运算符"计算得到 结果为true。使用char类型强制转换成大/小写;//A的ASCII码值为65。
2024-01-21 09:39:20 547
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人