java
文章平均质量分 78
慕城南风
这个作者很懒,什么都没留下…
展开
-
彻底理解Java并发:乐观锁、悲观锁和CAS
锁的一种宏观分类方式是悲观锁和乐观锁。悲观锁与乐观锁并不是特指某个锁(Java 中没有哪个 Lock 实现类就叫 PessimisticLock 或 OptimisticLock),而是在并发情况下的两种不同策略。原创 2024-03-06 17:51:47 · 900 阅读 · 0 评论 -
【面试题】说一下ArrayList和LinkedList的区别?
ArrayList 内部使用动态数组来存储元素,LinkedList 内部使用的双向链表来存储元素,这也是 ArrayList 和 LinkedList 最本质的区别。原创 2022-12-11 21:05:59 · 613 阅读 · 0 评论 -
使用Intellij IDEA远程debug服务器Java代码
JAVA 支持调试功能,本身提供了一个简单的调试工具JDB,支持设置断点及线程级的调试同时,不同的JVM通过接口的协议联系,本地的Java文件在远程JVM建立联系和通信。此篇是Intellij IDEA远程调试的教程汇总和原理解释,知其然而又知其所以然。.........原创 2022-08-18 21:07:37 · 1827 阅读 · 0 评论 -
Linux下配置JAVA 环境变量及查看JDK安装路径
前言有的时候我们安装了jdk,配置好了环境变量,时间一长却忘了安装路径在哪,这是让人很头疼的一件事,也有时候我们安装了jdk,一时忘记刚刚安装的路径在哪了。下面我将就这两种情况分别来说明下该怎么去查看对应的安装路径。1.配置JAVA环境变量编辑/etc/profilewen文件,在文件末尾添加export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/javaexport PATH=$JAVA_HOME/bin:$PATH原创 2021-09-28 16:25:04 · 17786 阅读 · 0 评论 -
Java泛型详解-史上讲解最详细的,没有之一
1. 概述泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。什么是泛型?为什么要使用泛型?泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制原创 2022-04-08 12:17:31 · 415 阅读 · 0 评论 -
Java之jar包和war包的介绍和区别
前言做Java开发,jar包和war包接触的挺多的,有必要对它们做一个深入的了解,特总结整理一下。1. jar包JAR(Java Archive,Java 归档文件)是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。JavaSE程序可以打包成Jar包(J其实可以理解为Java了)。JAR 文件格式以流行的 ZIP 文件格式为基础。与 ZIP 文件不同的是,JAR 文件不仅用于压缩和发布,而且还用于部署和封装库、组件和插件程序,并可被像编译器和 JVM 这样的工具直接使用。在 J原创 2021-12-01 21:23:25 · 7194 阅读 · 1 评论 -
Java -jar启动服务与Tomcat服务器上部署JAR之间的区别
运行java web有两种方式:当使用springboot打包出jar包时,这个jar包可以直接 运行java -jar *.jar运行,另一种是把 *.jar移动到tomcat/webapps 中,二者的区别是什么?理解 ! ! !①对于springboot打包出来的jar包中已经包含了嵌入式tomcat服务器的依赖项,在pom.xml问价中,导入的maven依赖spring-boot-starter-web中包含内嵌的tomcat容器 <dependency>...原创 2021-12-01 21:11:25 · 5666 阅读 · 0 评论 -
Idea之使用Gradle开发Java项目
IDEA拥有大量的JAVA开发者拥护,相比于开源的eclipse,IDEA拥有更简洁直观的界面,拥有更强大的自动补全功能,号称能“一路敲回车完成编码”。如果把IDEA和eclipse比作手机系统,IDEA就好比IOS,美观、强大、人性化、傻瓜化,官方就帮你解决了大部分问题与操作。eclipse更像android,自由、开放、高度可定制,通过一系列的插件也可以达到IDEA同样的、甚至更个性化的体验,但是操作不免让人感觉复杂、上手难。Gradle作为build工具的新星,受到谷歌的大力拥护,直接钦定为AS.原创 2021-11-25 20:42:34 · 3623 阅读 · 0 评论 -
jstack-查看Java进程的线程堆栈信息,锁定高消耗资源代码
jstack主要用来查看某个Java进程内的线程堆栈信息。语法格式如下:jstack[option]pidjstack[option]executablecorejstack[option][server-id@]remote-hostname-or-ip 命令行参数选项说明如下:-llonglistings,会打印出额外的锁信息,在发生死锁时可以用jstack-lpid来观察锁持有情况 -mmixedmode,不仅会输出Java堆栈信息,还会输出C/C+...原创 2021-10-15 15:56:26 · 1516 阅读 · 0 评论 -
如何在Mac中卸载openjdk15
说明之前在mac上使用intellij-idea时,由于没有在Mac上安装过jdk,所以就在intellij-idea中下载了openjdk15版本。后来觉得想要换一个旧点的版本,就想卸载了openjdk15。在一顿百度后,没有找到想要的答案,所以只好求助于谷歌,于是很快就找到了对应的解决方案,也成功解决了我的问题。下面是我的一些翻译,也是转载。具体内容(翻译)我没有找到任何与“如何在macos上移除/卸载openjdk15.0.1”的文档或帮助。如果你也正面对同样的问题,这里有解决的方法。我猜转载 2021-05-11 16:49:19 · 1167 阅读 · 1 评论 -
java集合框架图(二)
前言很多博主发的都是这个集合框架图,这个图是错误的。Iterator的子接口是ListIterrator,而不是图中的LinkIterator。 这张才是正确的集合框架图:一、list与Set、Map区别及适用场景1、List,Set都是继承自Collection接口,Map则不是2、List特点:元素有放入顺序,元素可重复 ,Set特点:元素无放入顺序,元素不可重复,重复元素会覆盖掉,(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashC...转载 2020-11-30 21:02:32 · 208 阅读 · 0 评论 -
java集合框架图(一)
Java集合就像一种容器,可以把多个对象(实际上是对象的引用,但习惯上都称对象)“丢进”该容器中。从Java 5 增加了泛型以后,Java集合可以记住容器中对象的数据类型,使得编码更加简洁、健壮。原创 2020-11-30 18:03:57 · 2301 阅读 · 0 评论 -
String直接赋值和使用new的区别
String str2 = new String("ABC");上面语句创建了几个字符串对象?上面语句实际上创建了2个字符串对象,一个是“ABC”这个直接量对应的对象,一个是new String()构造器返回的字符串对象。在JVM里,考虑到垃圾回收(Garbage Collection)的方便,将heap(堆)划分为三部分:young generation(新生代)、tenured generation (old generation)(旧生代)、permanent generation(永生代.转载 2020-08-17 09:59:02 · 3163 阅读 · 0 评论 -
JAVA多线程中join()方法的详细分析
虽然关于讨论线程join()方法的博客已经非常极其特别多了,但是前几天我有一个困惑却没有能够得到详细解释,就是当系统中正在运行多个线程时,join()到底是暂停了哪些线程,大部分博客给的例子看起来都像是t.join()方法会使所有线程都暂停并等待t的执行完毕。当然,这也是因为我对多线程中的各种方法和同步的概念都理解的不是很透彻。通过看别人的分析和自己的实践之后终于想明白了,详细解释一下希望能帮助到和我有相同困惑的同学。首先给出结论:t.join()方法只会使主线程(或者说调用t.join()的线程)进入转载 2020-08-06 22:36:21 · 121 阅读 · 0 评论 -
Java常用的设计模式总结
public class Singleton { private volatile static Singleton singleton; private Singleton (){} public static Singleton getSingleton() { if (singleton == null) { synchronized (Singleton.class) { if (singleto`在这里插入代码转载 2020-06-12 11:27:55 · 427 阅读 · 1 评论 -
Mybatis教程-实战看这一篇就够了
推荐SpringCloud教程:https://blog.csdn.net/hellozpc/article/details/83692496推荐Guava Cache教程:https://blog.csdn.net/hellozpc/article/details/88613464文章目录1.从JDBC谈起1.1.使用IDEA创建maven工程1.2.引入mysql依赖包1.3.准备数据1.4.JDBC基础代码回顾1.5.JDBC缺点分析2.MyBatis介绍3.Mybaits整.转载 2020-05-26 17:41:58 · 399 阅读 · 0 评论 -
Spring、SpringMVC、SpringBoot、SpringCloud的联系和区别
上一篇文章刚刚简单介绍了spring框架,下面我将介绍一下Spring,SpringMVC,SpringBoot,SpringCloud的联系和区别。 首先先简单介绍一下各个框架。 Spring的核心思想是ioc和aop,这些东西在上一篇博客是有介绍的。 SpringMVC是在Spring基础上开发出来的框架,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring转载 2020-05-26 17:27:18 · 1506 阅读 · 1 评论 -
Spring简单总结
Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。 spring作为java界五大传统框架(核心业务层框架:spring;控制层框架:spring MVC,struts;持久层框架:Mybatis,hibernate)之一,使用范围非常的广泛。 我们就从spring的核心思想,特点,优点转载 2020-05-26 17:25:47 · 219 阅读 · 0 评论 -
Java基础之Hibernate
Hibernate是一个什么样的框架? Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB原创 2020-05-26 17:11:10 · 283 阅读 · 0 评论 -
进程和线程的区别
1.定义进程:具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.线程:线程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.2.关系一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行.相对进程而言,线程是一个更加接近于执行体的概.转载 2020-05-26 17:08:52 · 155 阅读 · 1 评论 -
java之Servlet的生命周期
Servlet运行在Servlet容器中,其生命周期由容器来管理。Servlet的生命周期通过javax.servlet.Servlet接口中的init()、service()和destroy()方法来表示Servlet的生命周期包含了下面4个阶段:1.加载和实例化2.初始化3.请求处理4.服务终止Web服务器在与客户端交互时Servlet的工作过程是:1.在客户端对web服务器发出请求2. web服务器接收到请求后将其发送给Servlet3....原创 2020-05-26 16:48:12 · 256 阅读 · 0 评论 -
Java集合类: Set、List、Map、Queue区别及应用
Java集合类基本概念Java集合类架构层次关系Java集合类的应用场景代码原创 2017-09-19 15:36:46 · 2070 阅读 · 1 评论 -
Java注解Annotation的基本概念
什么是注解(Annotation): Annotation(注解)就是Java提供了一种元程序中的元素关联任何信息和着任何元数据(metadata)的途径和方法。Annotion(注解)是一个接口,程序可以通过反射来获取指定程序元素的Annotion对象,然后通过Annotion对象来获取注解里面的元数据。 Annotation(注解)是JDK5.0及以后版本引入的。它可以用于创建文档,跟踪代码原创 2017-09-20 11:19:39 · 244 阅读 · 0 评论 -
深入理解Java注解Annotation及自定义注解
要深入学习注解,我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前,我们就必须要了解Java为我们提供的元注解和相关定义注解的语法。元注解: 元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明。Java5.0定义的元注解: 1.@Target, 2.@Retentio原创 2017-09-20 11:20:54 · 279 阅读 · 0 评论 -
深入理解Java注解Annotation之注解处理器
如果没有用来读取注解的方法和工作,那么注解也就不会比注释更有用处了。使用注解的过程中,很重要的一部分就是创建于使用注解处理器。Java SE5扩展了反射机制的API,以帮助程序员快速的构造自定义注解处理器。注解处理器类库(java.lang.reflect.AnnotatedElement): Java使用Annotation接口来代表程序元素前面的注解,该接口是所有Annotation类型的父接原创 2017-09-20 11:22:40 · 302 阅读 · 1 评论 -
Maven安装和配置及eclipse创建Maven项目
下载安装Maven一、下载最新版的Maven,下载地址:http://maven.apache.org/download.cgi二、将Maven下载到E:\maven文件夹下面,并解压三、添加环境变量MAVEN_HOME,并修改Path:四、配置完成后,在命令行输入mvn -v,看到如下图说明安装成功五、修改本地仓库 打开E:\maven\apache-maven-3.3.9\conf\下面的se原创 2017-09-12 10:49:18 · 243 阅读 · 0 评论 -
Cookie/Session机制详解
会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。本章将系统地讲述Cookie与Session机制,并比较说明什么时候不能用Cookie,什么时候不能用Session。1.1 Cookie机制在程序中,会话跟踪是很重要的事情。理原创 2017-10-12 15:16:21 · 564 阅读 · 0 评论 -
httpClient 超时时间设置
上周乐视网cms香港接口,数据刷新缓慢。香港运营人员一直在群里反馈tv端内容不更新。我观察了下服务器,发现请求接口耗时很久500~6000ms。之前一般都是100ms左右。导致很多线程一直在waiting状态,等待网络io。所以首先找运维解决问题,原来运维人员鸟悄的给我们中港专线限速了,��汗一个。后来运维给恢复后系统正常。其实,看到6000ms的时候,心里咯噔一下,我记得我设置的超时时间是5000原创 2017-12-19 18:52:11 · 1482 阅读 · 0 评论 -
selenium定位方法(java实例)
从下图中可以看到selenium有三类定位元素的方法,一种是直接通过属性、标签以及链接来定位,一种是XPath方式,最后一种是CSS方式。 下表列举了元素定位的例子selenium之页面元素定位方法 方法 例子 通过ID来定位 WebElement wElement = driver.findElement(By.id("kw")) 通过Name来定位 WebElement wElement...转载 2018-04-16 11:01:52 · 1124 阅读 · 0 评论 -
JDK8安装及设置环境变量
一.下载JDK 1.去jdk官网地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html下载jdk 2.选择javaSE->Downloads,选择顶部左侧图标进入下载列表页面 3.根据平台选择下载文件, Java SE Development Kit 8u144 You must accept the O原创 2017-08-15 17:44:34 · 13033 阅读 · 0 评论