Java基础学习
RunFromHere
AI领域探索
展开
-
Eclipse 常用功能与快捷键
Eclipse 常用功能与快捷键关键词:常用 功能 快捷键 实用 插件安装 插件卸载 查找代码 查找模块插件打开插件windows -> show view -> other安装插件Help -> install new software卸载插件Help -> install new software -> already installed快捷键显示搜索对话框:Ctrl+H快速Outline:Ctrl+O打开资源:Ctrl+Shift+R注释:原创 2020-12-28 13:50:24 · 177 阅读 · 0 评论 -
Goland IDEA IDE 配置代理
Goland IDEA IDE 配置代理关键词:jetbrains goland idea ide 代理 配置 管理正常国外网络连接不上时,可以给ide配置代理,加速网络连接setting -> search “proxy” -> Manual proxy configuration -> socks Host name 127.0.0.1 Port [sock5 port]...原创 2020-12-25 16:47:20 · 2246 阅读 · 0 评论 -
安装Maven(Windows例)
安装maven(Windows例)关键词:maven windows 安装 java 环境变量 版本文章目录安装maven(Windows例)1.下载最新Maven程序2.解压到本地3.配置环境变量4.查看maven版本5.配置本地仓库路径1.下载最新Maven程序https://maven.apache.org/download.cgi2.解压到本地像我的话就是解压到 F:\Program\java\文件改名为 apache-maven3.配置环境变量新建环境变量 MAVEN_原创 2020-12-25 16:21:44 · 115 阅读 · 0 评论 -
安装Java反编译工具Luyten(Windows例)
安装Java反编译工具Luyten(Windows例)关键词:Java 安装 反编译 工具 Luyten windows maven wget 程序原创 2020-12-25 16:17:40 · 5821 阅读 · 0 评论 -
Java Jar 包反编译
Java Jar 包反编译关键词:java jar javac luyten classpath 编译 反编译 修改 源码文章目录Java Jar 包反编译1.安装反编译工具Luyten(Windows安装示例)1.1 下载luyten1.2 安装maven1.2.1 下载最新Maven程序1.2.2 解压到本地1.2.3 配置环境变量1.2.4 查看maven版本1.2.5配置本地仓库路径1.3 安装wget1.3.1 下载wget.exe1.4 使用 maven 对 luyten 项目进行编译和打包原创 2020-12-25 16:07:40 · 2299 阅读 · 0 评论 -
Java中List、 Set 和 Map 的初始容量和加载因子是什么?
List、 Set 和 Map 的初始容量和加载因子答:ListArrayList 的初始容量是10,加载因子为0.5;扩容增量:原容量的 0.5倍+1;一次扩容后长度为16。Vector 初始容量为10,加载因子1。扩容增量:原容量的1倍,一次扩容后的容量为20。SetHashSet,初始容量为16,加载因子为0.75;扩容增量:原容量的1.6倍;如 HAshSet 的容量为...原创 2018-10-26 01:52:16 · 2206 阅读 · 0 评论 -
Java内存管理之GC垃圾回收机制是什么?什么是垃圾?如何判断是否为垃圾?
文章目录1. 垃圾回收机制是什么?2. 什么是垃圾呢?如何判断是否为垃圾呢?3. GC root指的是谁?1. 垃圾回收机制是什么?垃圾回收机制让开发者无需关注空间的创建和释放,而是以守护进程的形式在后台自动回收垃圾。这样做不仅提高了开发效率,更改善了内存的使用状况。2. 什么是垃圾呢?如何判断是否为垃圾呢?什么是垃圾?垃圾指所有不再存活的对象。常见的判断是否存活有两种方法:引用计...原创 2018-12-02 01:46:02 · 297 阅读 · 0 评论 -
Java内存管理之引用类型是什么?都有哪几种引用类型?(按照引用强度划分)
文章目录引用类型(按引用强度划分)Java的四种引用类型1. 强引用(Strong Reference)2.软引用(Soft Reference)3. 弱引用(Weak Reference)4. 虚引用(Phantom Reference)5. 总结引用类型(按引用强度划分)从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期。Java的四种引用类...原创 2018-12-02 02:04:31 · 934 阅读 · 0 评论 -
Java内存管理之用什么方式回收垃圾、管理内存呢?垃圾回收算法有哪些?
文章目录1. 什么是垃圾?2. 标记-清理(Marked-Sweep)3. 标记-整理(Marked-Compact)4. 复制(Copying)6. Java分代回收机制6.1 新生代-复制 回收机制(Minor GC,把内存按 8:1:1 分)6.2 老年代-标记整理 回收机制(Full GC)6.3 总结1. 什么是垃圾?所有 GC Roots 不可达的对象都称为垃圾,参考下图,黑色...原创 2018-12-08 19:38:12 · 314 阅读 · 0 评论 -
Java内存管理之Java堆结构是怎么样的?里面有什么东西?
文章目录1. 刚刚创建的对象2. 存活了一段时间的对象3. 永久存在的对象一块 Java 堆空间一般分成三部分,这三部分用来存储三类数据:新生代、老年代、永久代。1. 刚刚创建的对象在代码运行时会持续不断地创造新的对象,这些新创建的对象会被统一放在一起。因为有很多局部变量等在新创建后很快会变成 不可达 的对象,快速死去 ,因此这块区域的特点是 存活对象少,垃圾多 。形象点描述这块区域为: ...原创 2018-12-08 19:45:09 · 919 阅读 · 0 评论 -
Java面试中Map常见问题有什么?
文章目录1.HashMap和Hashtable的区别有哪些?2.HashMap的底层实现知道吗?3.ConcurrentHashMap和Hashtable的区别?追问:ConcurrentHashMap的具体实现知道吗?4.HashMap的长度为什么是2的幂次方?1.HashMap和Hashtable的区别有哪些?HashMap没有考虑同步,是线程不安全的;Hashtable使用了sync...原创 2018-10-25 23:43:20 · 1736 阅读 · 1 评论 -
Java中HashMap与TreeMap有什么不同?
HashMap与TreeMap对比1、 HashMap通过hashcode对其内容进行快速查找,而TreeMap中所有的元素都保持着某种固定的顺序,如果你需要得到一个有序的结果你就应该使用TreeMap(HashMap中元素的排列顺序是不固定的)。2、在Map 中插入、删除和定位元素,HashMap是最好的选择。但如果您要按自然顺序或自定义顺序遍历键,那么TreeMap会更好。使用HashMa...原创 2018-10-25 23:36:13 · 313 阅读 · 0 评论 -
Java中Vector和ArrayList有什么不同?
Vector和ArrayList对比1、vector是线程同步的,所以它也是线程安全的,而arraylist是线程异步的,是不安全的。如果不考虑到线程的安全因素,一般用arraylist效率比较高。2、vector增长率为目前数组长度的100%,而arraylist增长率为目前数组长度的50%。如果在集合中使用数据量比较大的数据,用vector有一定的优势。...原创 2018-10-25 23:33:35 · 207 阅读 · 0 评论 -
Java中Map集合是什么?Map集合遍历方式有什么?
文章目录Map的常见集合HashMapHashtableConcurrentHashMapLinkedHashMapTreeMapMap的遍历第一种:KeySet()第二种:entrySet()Map的常见集合HashMapHashMap是最常用的Map,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的。因为键对象不可以重...原创 2018-10-25 23:31:35 · 1528 阅读 · 0 评论 -
Java常见集合有哪些?
说说常见的集合有哪些吧?答:Map接口和Collection接口是所有集合框架的父接口Collection接口的子接口包括:Set接口和List接口。Set中不能包含重复的元素。List是一个有序的集合,可以包含重复的元素,提供了按索引访问的方式。Map接口的实现类主要有:HashMap、Hashtable、ConcurrentHashMap以及TreeMap等。Map不能包含重复的ke...原创 2018-10-25 23:17:14 · 8282 阅读 · 0 评论 -
Java内存管理之类似-Xms、-Xmx 这些参数的含义是什么?
Java内存管理之类似-Xms、-Xmx 这些参数的含义答:1.堆内存分配:JVM 初始分配的内存由**-Xms** 指定,默认是物理内存的 1/64;JVM 最大分配的内存由**-Xmx** 指定,默认是物理内存的 1/4;默认空余堆内存小于 40% 时,JVM 就会增大堆直到-Xmx 的最大限制;空余堆内存大于 70% 时,JVM 会减少堆直到 -Xms 的最小限制;因此服务器一...原创 2018-10-28 11:11:33 · 6814 阅读 · 0 评论 -
Java内存管理之什么是JVM堆内存?JVM 内存是怎么划分的?
JVM 内存划分方法区(线程共享):常量、静态变量、JIT(即时编译器) 编译后的代码也都在方法区;堆内存(线程共享):垃圾回收的主要场所;程序计数器: 当前线程执行的字节码的位置指示器;虚拟机栈(栈内存):保存局部变量、基本数据类型变量以及堆内存中某个对象的引用变量;本地方法栈 :为 JVM 提供使用 native 方法的服务。...原创 2018-10-28 11:01:44 · 211 阅读 · 0 评论 -
Java内存管理之内存泄露是什么?什么情况下会导致内存泄露?
文章目录1. 静态类的使用2. 资源连接的使用3. 监听器的使用虽然Java拥有垃圾回收机制,但同样会出现内存泄露问题,我们说一下比较主要的三种情况。1. 静态类的使用诸如 HashMap、Vector 等集合类的静态使用最容易出现内存泄露,因为这些静态变量的生命周期和应用程序一致,所有的对象Object也不能被释放,因为他们也将一直被Vector等应用着。private static ...原创 2018-12-08 19:49:40 · 1163 阅读 · 0 评论 -
开发利器IDEA之修改maven源为阿里镜像
1. 打开Settings打开IntelliJ IDEA->Settings ->Build, Execution, Deployment -> Build Tools > Maven或者直接搜索maven具体如下图所示:2. 修改setting.xml文件而一般情况下在 /home/xx/.m2 这个目录下面没有settings.xml文件.我们新建一个,...原创 2018-12-06 14:57:57 · 4978 阅读 · 3 评论 -
Java基础之Java Web中 什么是重定向和转发?如何选择使用重定向还是转发?
1.重定向和转发的区别是什么?重定向是两次请求,转发是一次请求,因此转发的速度要快于重定向。重定向之后地址栏上的地址会发生变化,变化成第二次请求的地址,转发之后地址栏上的地址不会变化,还是第一次请求的地址。重点:重定向和请求转发之后的代码都会运行,直到方法结束或者遇到了 return 语句2. 如何选择使用重定向还是转发?页面跳转建议使用重定向,有内部 Servlet 跳转建议使用转发...原创 2018-12-21 13:54:32 · 855 阅读 · 1 评论 -
Java框架之Spring MVC是如何实现MVC模式的?
Spring MVC是如何实现MVC模式的?SpringMVC 中并没有涉及有关于 Controller 接口规范的实现,SpringMVC 是通过调用 Handler 来实现 Controller 这一层的。SpringMVC 使用了适配器模式,前端控制器使用 HandlerAdapter 来调用不同的 Controller,然后才是 Controller 调用 Model 产生数据模型; ...原创 2018-12-21 13:54:27 · 1334 阅读 · 0 评论 -
Java框架之Spring MVC的消息处理流程是怎么样的?
消息处理流程图消息处理流程用户发送请求至前端控制器 DispatcherServletDispatcherServlet 收到请求调用 HandlerMapping 处理器映射器,处理器映射器根据请求 url 找到具体的处理器,生成处理器对象及处理器拦截器(二者组成 HandlerExecutionChain ),并将其一并返回给 DispatcherServletDispatche...原创 2018-12-21 13:54:21 · 390 阅读 · 0 评论 -
Java框架之Spring MVC 的核心控制器是什么?
Java框架之Spring MVC 的核心控制器是什么?DispatcherServlet原创 2018-12-21 13:54:16 · 5930 阅读 · 1 评论 -
Java框架之Mybatis中占位符 # 和 $ 的区别是什么?
占位符 # 和 $ 的区别/# 符号存在预编译的过程,对问号赋值,防止 SQL 注入。它将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号/$ 没有预编译过程,将传入的数据直接显示生成 SQL 中/$ 符号是直译的方式,一般用在 order by S{列名} 语句中**总结:**使用 /$ 占位符可能会导致SQL注入攻击,能用 #/ 号就不要用 $ 符号...原创 2018-12-20 19:50:15 · 1112 阅读 · 0 评论 -
Java框架之Spring AOP 面向切面 中的连接点与切点是什么?
连接点定义:连接点是一个应用执行过程中能够插入一个切面的点。连接点可以是调用方法时、抛出异常时、甚至修改字段时、 切面代码可以利用这些点插入到应用的正规流程中。使得程序执行过程中能够应用通知的所有点。切点定义:如果通知定义了“什么”和“何时”,那么切点就定义了“何处”。切点会匹配通知所要织入的一个或者多个连接点,并且通常会使用明确的类或者方法来指定这些切点。作用:定义通知被应用的位置...原创 2018-12-20 19:32:26 · 2356 阅读 · 1 评论 -
Java框架之Spring AOP 面向切面编程 有哪几种实现方式?如何选择适合的AOP实现方式?
文章目录1. 实现方式2. JDK动态代理如何实现?2.1 主要的实现过程3. 如何选择?1. 实现方式JDK 动态代理实现和 cglib 实现2. JDK动态代理如何实现?只能对实现了接口的类生成代理,而不是针对类,该目标类型实现的接口都将被代理。原理是通过在运行期间创建一个接口的实现类来完成对目标对象的代理。2.1 主要的实现过程定义一个实现接口 InvocationHan...原创 2018-12-20 19:29:59 · 1797 阅读 · 0 评论 -
Java框架之Spring AOP (Aspect Oriented Programming) 面向切面编程是什么?
Spring AOP是什么?Spring AOP是面向切面编程,将功能代码从业务逻辑代码中分离出来。它允许程序通过分离的应用业务逻辑与系统级别服务。程序员只需专注自己的业务逻辑,而不需要管系统级服务。容器中的对象能享有容器中的公共服务(日志、安全)。它是如何做到的?(原理)通过动态代理做到这一点。用到了代理模式,代理模式是一种静态代理,而动态代理就是利用反射和动态编译将代理模式变成...原创 2018-12-20 19:26:12 · 395 阅读 · 0 评论 -
Java框架之Spring IOC (Inversion of Control) 控制反转容器有什么好处?
Java框架之Spring IOC (Inversion of Control) 控制反转容器有什么好处?Spring IOC扶着创建对象,管理对象(DI),装配对象,配置对象,并且管理这些对象的整个生命周期。优点:把应用的代码量降到最低以最小的代价和最小的侵入性使松散耦合得以实现支持加载服务时的饿汉式初始化和懒加载...原创 2018-12-20 19:22:52 · 449 阅读 · 0 评论 -
Java框架之Spring IOC (Inversion of Control) 控制反转是什么?
IOC(Inversion of Control控制反转)是什么?控制反转就是依赖倒置原则。依赖注入,就是把底层类作为参数传入上层类,实现上层类对下层类的“控制”。它有三种注入方式构造注入Setter注入接口传递IOC设计思想在Spring里是怎么体现的?它是怎么做的?Spring里面有个IOC Container就是使用了IOC的设计思想。对类进行初始化的那段代码发生的地...原创 2018-12-20 19:20:42 · 406 阅读 · 0 评论 -
Java框架之为什么要使用Spring框架?Spring框架有什么优点?
Spring框架的优点、作用轻量:Spring是轻量级的,基本的版本大小为2MB控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们面向切面的编程AOP : Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开容器:Spring包含并管理应用中对象的生命周期和配置...原创 2018-12-20 19:16:04 · 3605 阅读 · 0 评论 -
Java基础之JavaWeb 开发经典的 3 层框架是什么?
JavaWeb 开发经典的 3 层框架JavaWeb 开发经典的 3 层框架分别是Web 层、Service 层(业务逻辑层)和 Dao 层(数据访问层)。他们都有哪些内容,起到怎么样的作用呢?Web 层:包含 JSP 和 Servlet 等与 Web 相关的内容;业务层:只关心业务逻辑;数据层:封装了对数据库的访问细节。...原创 2018-12-20 19:14:28 · 324 阅读 · 0 评论 -
Java多线程之线程池是什么?
线程池有了解吗?答:java.util.concurrent.ThreadPoolExecutor 类就是一个线程池。客户端调用ThreadPoolExecutor.submit(Runnable task) 提交任务,线程池内部维护的工作者线程的数量就是该线程池的线程池大小,有 3 种形态:当前线程池大小 :表示线程池中实际工作者线程的数量;最大线程池大小 (maxinumPoolSi...原创 2018-10-28 10:58:27 · 193 阅读 · 0 评论 -
Java多线程之synchronized关键字是什么?
synchronized 关键字答:底层实现:进入时,执行 monitorenter,将计数器 +1,释放锁 monitorexit 时,计数器 -1当一个线程判断到计数器为 0 时,则当前锁空闲,可以占用;反之,当前线程进入等待状态含义:(monitor 机制)Synchronized 是在加锁,加对象锁。对象锁是一种重量锁(monitor), synchronized 的锁机制...原创 2018-10-28 10:48:03 · 215 阅读 · 0 评论 -
Java多线程之sleep() 和 wait(n) 、 wait() 有什么区别?
sleep() 和 wait(n) 、 wait() 的区别答:sleep 方法:是 Thread 类的静态方法,当前线程将睡眠 n 毫秒,线程进入阻塞状态。当睡眠时间到了,会接触阻塞,进入可运行状态,等待 CPU 的到来。睡眠不释放锁(如果有的话)wait 方法:是 Object 的方法,必须与 synchronized 关键字一起使用,线程进入阻塞状态,当 notify 或者 noti...原创 2018-10-28 10:45:49 · 1062 阅读 · 0 评论 -
Java异常是什么?
Java异常如上图,Java可抛出的有异常Exception跟错误Error两大类。错误:Error类以及他的子类的实例,代表了JVM本身的错误。错误不能被程序员通过代码处理,Error很少出现。因此,程序员应该关注Exception为父类的分支下的各种异常类。如StackOverFlowError、OutOfMemoryError异常:Exception以及他的子类,代表程序运行时发...原创 2018-09-26 11:21:03 · 237 阅读 · 0 评论 -
设计模式之设计模式都有哪些?常用的设计模式有哪几种?
设计模式基础设计模式分类主要分为创建型、结构型、行为型三大类。还有两类:并发型模式和线程池模式创建型模式:工厂方法、抽象工厂、单例、建造者、原型结构型模式:适配器、装饰器、代理、外观、桥接、组合、享元行为型模式:策略、模板方法、观察者、迭代子、责任链、命令、备忘录、状态、访问者、中介者、解释器设计模式六大原则总原则:开闭原则。对扩展开房,对修改关闭。在程序需要进行拓展的时候,不...原创 2018-09-26 11:17:39 · 1409 阅读 · 0 评论 -
算法之二叉树的三种遍历方式(先序、中序、后序)是什么?
Java开发工程师–面试积累二叉树的三种基本遍历方式先序遍历:先记录根结点,然后记录左结点,最后记录右结点中序遍历:先记录左结点,然后记录根结点,最后记录右结点后序遍历:先记录左结点,然后记录右结点,最后记录根结点注意:这里的根-左-右都是相对而言的,每一个结点都可以看作是根结点。每到一个根结点,就进行顺序的规则判断。像下图,进行中序遍历。用【左根右】的记录原则1.从根结点A...原创 2018-09-26 11:16:15 · 3324 阅读 · 0 评论 -
算法之如何实现线性表的顺序存储?(Java)
Java实现线性表的顺序存储Java实现线性表的顺序存储1.基本思路2.实际功能列表3.代码块3.1要点3.1.1扩大数组:3.1.2插入功能(增)3.1.3删除功能(删):3.2基本功能3.3测试代码3.4输出示例4.线性表顺序存储的优缺点1.基本思路1.基本数据的算法实现基本包括四个最重要的功能:增、删、改、查 2.在这个例子...原创 2018-04-26 14:51:11 · 311 阅读 · 0 评论 -
Java语法之常量是什么?
关键字final指示常量,例: final double PAI = 3.14; ○ 关键字final表示这个变量只能被赋值一次,一旦赋值之后就不能够再更改 ○ 习惯上,常量名使用全大写 如果希望某个常量可以在一个类的多个方法中使用,通常将这些常量成为类常量 ○ 使用static final来设置一个类常量原创 2017-11-06 22:23:19 · 166 阅读 · 0 评论 -
Java语法之运算符是什么?
自增运算符和自减运算符 因为运算符改变了变量的值,所以它的操作数不能是数值。例如,4++就是一条非法语句。int m =7;int n = 7;int a = 2 * ++m; // now a is 16, m is 8int b = 2 * n++; // now b is 14, n is 8 建议不要在其他表达式的内部使用++,这样编写很容易令人困惑,并也很容易原创 2017-11-08 13:43:27 · 365 阅读 · 0 评论