Java基础
文章平均质量分 81
CANDH
not early,not late
展开
-
Java中的栈内存和堆内存
共两篇文章第一篇1.Java中对象都是分配在heap(堆)中。从heap中分配内存所消耗的时间远远大于从stack产生存储空间所需的时间。(1)每个应用程序运行时,都有属于自己的一段内存空间,用于存放临时变量、参数传递、函数调用时的PC值的保存。这叫stack。(2)所有的应用可以从一个系统共用的空间中申请供自己使用的内存,这个共用的空间叫heap。(3)stack中的对象或变量只要定义好就可使用了,应用程序结束时会自动释放。(4)而要使用heap中申请的变量或对象只能定义变量指针,并要求在运行转载 2022-02-09 22:03:28 · 3567 阅读 · 0 评论 -
Java中迭代,迭代器
迭代是什么,迭代器是什么迭代通俗点说 叫 一个个数过去,实现这样一个个数过去功能的东西,叫迭代器。Iterator(迭代器) 接口提供遍历任何 Collection 的接口。我们可以从一个 Collection中使用迭代器方法来获取迭代器实例。迭代器取代了 Java 集合框架中的 Enumeration,迭代器允许调用者在迭代过程中移除元素。java迭代器 较多使用在容器中,如数组链表 ArrayList(反正就是能装东西的玩意儿)举个例子:#我们先往链表中装东西ArrayList a原创 2022-02-08 23:46:53 · 1141 阅读 · 0 评论 -
Java容器
容器的概念在Java当中,如果有一个类专门用来存放其它类的对象,这个类就叫做容器,或者就叫做集合,集合就是将若干性质相同或相近的类对象组合在一起而形成的一个整体.ArrayList的实现用的是数组,LinkedList是基于链表,ArrayList适合查找,LinkedList适合增删HashMap的原理 所周知,HashMap是用来存储Key-Value键值对的一种集合,这个键值对也叫做Entry,而每个Entry都是存储在数组当中,因此这个数组就是HashMap的主干。 HashMap数组中的每一原创 2022-02-08 23:29:20 · 655 阅读 · 0 评论 -
Java中的关键词(不断补充更新)
finalfinal 修饰的变量叫常量,常量必须初始化,初始化之后值就不能被修改。final 修饰的类叫最终类,该类不能被继承。final 修饰的方法不能被重写。1.修饰变量凡是对成员变量或者局部变量(在方法中的或者代码块中的变量称为本地变量)声明为final的都叫作final变量。final变量经常和static关键字一起使用,作为常量。final修饰基本数据类型的变量时,必须赋予初始值且不能被改变,修饰引用变量时,该引用变量不能再指向其他对象当final修饰基本数据类型变量时不赋予初始原创 2022-02-07 20:33:14 · 208 阅读 · 0 评论 -
hashcode详解
看面试题,看到了关于hashcode方面的问题,给我整蒙了,就搜了搜相关博客整理了一下,希望能帮到有缘人。hashcode是什么?1.hash和hash表是什么?想要知道这个hashcode,首先得知道hash,百度一下:hash是一个函数,该函数中的实现就是一种算法,就是通过一系列的算法来得到一个hash值,这个时候,我们就需要知道另一个东西,hash表,通过hash算法得到的hash值就在这张hash表中,也就是说,hash表就是所有的hash值组成的,有很多种hash函数,也就代表着有很多原创 2022-02-07 18:44:56 · 470 阅读 · 0 评论 -
接口多态以及接口中的转型问题
1.接口多态接口部分(父类):package com.cao._接口多态;public interface Phone { //打电话 public abstract void call(); //发信息 public abstract void sendMessage();}子类1package com.cao._接口多态;public class Nokia implements Phone { @Override public void call() { //原创 2021-07-28 18:07:41 · 169 阅读 · 0 评论 -
Java多线程(并发,并行,同步)
并行和并发: 引子:前面讲到程序的运行流程的时候,说程序在没有流程控制前提下,代码都是从上而下逐行执行的。 需求:现在需要设计一个程序想要完成边运行游戏,边播放歌的功能,怎么设计? 要解决上述问题,咱们得使用多进程或者多线程来解决. 并发和并行是即相似又有区别(微观概念): 并行:指两个或多个事件在同一时刻点发生; 并发:指两个或多个事件在同一时间段内发生。 在操作系统中,在多道程序环境下,并发性是指在一段时间内宏观上有多个程序在同时运行,但在单CPU系...转载 2021-06-06 20:43:36 · 525 阅读 · 0 评论 -
Java异常处理
在使用计算机语言进行项目开发的过程中,即使程序员把代码写得尽善尽美,在系统的运行过程中仍然会遇到一些问题,因为很多问题不是靠代码能够避免的。 比如: 客户输入数据的格式, 读取文件是否存在, 网络是否始终保持通畅等等。 异常:在Java语言中, 将程序执行中发生的不正常情况称为“异常” 。 (开发过程中的语法错误和逻辑错误不是异常)...转载 2021-06-06 20:41:13 · 79 阅读 · 0 评论 -
分布式缓存中间件:Redis
Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key-value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Python,Ruby,Erlang,PHP客户端,使用很方便。Redis作为当下最为流行的分布式缓存中间件,其应用可以说是非常广泛的,也是我非常喜欢使用的一种分布式缓存中间件。其是一个开源的,C语言编写的,基于内存,支持持久化的日志型,KV型的网络程序。1. 分布式缓存的基本概念1.1 分布式缓存的发展1)原创 2021-05-23 09:31:35 · 1264 阅读 · 1 评论 -
java并发编程实战
java并发编程实战_程序员面试之道的博客-CSDN博客 java并发编程实战 ...转载 2021-05-05 16:59:31 · 154 阅读 · 0 评论 -
Java线程详解
1.程序,进程,线程区别+并行与并发区别1.1 什么是程序?程序:是为完成特定任务,用某种语言编写的一组指令的集合,即指一段静态的代码,静态对象。1.2 什么是进程?电脑中时会有很多单独运行的程序,每个程序有一个独立的进程,而进程之间是相互独立存在的。比如下图中的QQ、酷狗播放器等等。即是程序的一次执行过程,或是正在运行的一个程序,是一个动态的过程,有它自身的产生,存在和消亡的过程。-------生命周期1.3 什么是线程?线程:进程中要同时干几件事时,每一件事的执行路径成为线程,即进程可进一原创 2021-01-17 22:46:20 · 178 阅读 · 0 评论 -
垃圾回收机制
对于任何一门语言而言,在运行过程中都会创建许多对象,继而需要为这些对象分配内存地址,当这些对象不需要使用的时候,需要释放其占用的内存地址,以供新的对象使用。关于对象内存释放的这一机制就叫做垃圾回收机制(GC)。Java中垃圾回收是自动化的,但其可控性差,内存容易溢出。内存溢出是因为JVM内存分配的对象过多,这些对象所需内存超出了JVM内存大小。虽然Java中是自动的。但是程序员仍可调用System.gc( )来进行手动回收,调用此方法会尝试释放被丢弃的对象占用的内存,但结果无法保证,因此附带一个免责声明。原创 2021-01-09 16:25:23 · 2583 阅读 · 0 评论 -
SQL优化
1.SQL优化注意事项优化成本:硬件>系统配置>数据库表结构>SQL 及索引。优化效果:硬件<系统配置<数据库表结构<SQL 及索引。1.1 设计表时要注意:1.表字段避免null值出现,null值很难查询优化且占用额外的索引空间,推荐默认数字0代替null。2.尽量使用INT而非BIGINT,如果非负则加上UNSIGNED(这样数值容量会扩大一倍),当然能使用TINYINT、SMALLINT、MEDIUM_INT更好。3.使用枚举或整数代替字符串类型4.原创 2021-01-06 18:27:20 · 120 阅读 · 0 评论 -
内存溢出的原因和解决办法
1.堆溢出这种场景最为常见,报错信息:java.lang.OutOfMemoryError: Java heap space原因1、代码中可能存在大对象分配2、可能存在内存泄露,导致在多次GC之后,还是无法找到一块足够大的内存容纳当前对象。解决方法1、检查是否存在大对象的分配,最有可能的是大数组分配2、通过jmap命令,把堆内存dump下来,使用mat工具分析一下,检查是否存在内存泄露的问题3、如果没有找到明显的内存泄露,使用 -Xmx 加大堆内存4、还有一点容易被忽略,检查是否有大量原创 2021-01-06 15:36:09 · 6981 阅读 · 0 评论 -
单例模式的几种实现方法
1.单例模式定义通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类在整个系统当中只有一个对象实例,即:保证一个类仅有一个实例,并提供一个访问它的全局访问点。2.单例模式结构图3.单例模式的实现方法1.饿汉式public class Singleton { private static Singleton instance = new Singleton(); private Singleton (){ } public stat原创 2021-01-06 15:27:13 · 157 阅读 · 0 评论 -
反射
1.什么是反射.(1)Java反射机制的核心是在程序运行时动态加载类并获取类的详细信息,从而操作类或对象的属性和方法。本质是JVM得到class对象之后,再通过class对象进行反编译,从而获取对象的各种信息。(2)Java属于先编译再运行的语言,程序中对象的类型在编译期就确定下来了,而当程序在运行时可能需要动态加载某些类,这些类因为之前用不到,所以没有被加载到JVM。通过反射,可以在运行时动态地创建对象并调用其属性,不需要提前在编译期知道运行的对象是谁。Java反射就是在运行状态中,对于任意一个类,原创 2021-01-05 23:11:36 · 277 阅读 · 1 评论 -
Java类的实例化顺序
Java类的实例化顺序 1、创建对象前一定要先加载class文件 2、static修饰的属性和方法是随着类的加载而加载的 3、因为存在继承关系,所以,父类一定是优先于子类执行(先将父类中的属性和方法加载之后再加载子类中的) 4、创建对象其实在调用构造器,构造器的作用除了开辟空间之外,还需要做初始化功能,相比较匿名构造代码块而言,匿名的初始化操作要在构造器的初始化操作之前执行 5、因为继承的关系,父类的空间开辟及初始化动作是由子类构造器中调用了super()来执行的,因此,从代码的执行顺序原创 2021-01-05 22:36:19 · 614 阅读 · 2 评论