java
文章平均质量分 71
java
richest_qi
这个作者很懒,什么都没留下…
展开
-
Linux系统下搭建java开发环境
文章目录安装jdk8安装maven安装idea参考文章不论在windows系统下,还是在linux系统下,搭建java开发环境的过程基本都是一样的,都要下载、安装jdk,配置环境变量:JAVA_HOME、CLASSPATH、path下载、安装maven,配置环境变量:MAVEN_HOME、path下载、安装ideawindows系统下安装java开发环境,可以参考这篇文章。本篇文章主要介绍一下linux系统(centos8)下如何搭建java开发环境。小提示:笔者是以root用户身份在li原创 2021-10-18 21:49:03 · 6539 阅读 · 0 评论 -
Java内存管理
文章目录JDK和JREJVMJDK和JREJDK是支持Java程序开发的最小环境。Java虚拟机,Java类库和Java编程语言,统称为JDK。JRE是支持Java程序运行的标准环境。Java虚拟机,Java类库API中的Java SE API子集,统称为JRE。我们知道,Java是跨平台语言,“一次编写,到处运行”。JVMJVM的职责主要有两个:加载指定字节码文件加载字节码文件到内存中运行。因此,了解JVM如何加载字节码文件,如何做内存管理,为JVM优化奠定理论基础。...原创 2021-10-13 15:55:34 · 1847 阅读 · 0 评论 -
一个Java文件只能有一个public类
《Java编程思想 第4版》6.4 类的访问权限 中有这么3句话:每个编译单元(文件)都只能有一个public类。这表示,每个编译单元都有单一的公共接口,用public类来实现。该接口可以按要求包含众多的支持包访问权限的类。如果在某个编译单元内有一个以上的public类,编译器就会给出出错信息。public类的名称必须完全与含有该编译单元的文件名相匹配,包含大小写。所以对Widget而言,文件的名称必须是Widget.java,而不是widget.java或WIDGET.java。虽然不是很常用,但原创 2021-10-12 20:45:30 · 7429 阅读 · 0 评论 -
CentOS8安装多版本JDK
文章目录下载安装包解压安装包配置环境变量切换JDK版本下载安装包从http://jdk.java.net/16/下载openjdk-16.0.2_linux-x64_bin.tar.gz,从https://jdk.java.net/17/下载openjdk-17_linux-x64_bin.tar.gz。安装包都放置于/usr目录下,如下图所示。解压安装包tar xvf openjdk-16.0.2_linux-x64_bin.tar.gz,得到目录jdk-16.0.2,tar xvf op原创 2021-10-11 21:19:21 · 1844 阅读 · 0 评论 -
CentOS8安装JDK1.8
linux服务器上安装JDK1.8起因是在CentOS8上执行jps命令时,报错:[root@localhost kafka_2.13-2.8.0]# jps bash: jps: command not found,于是在CentOS8上安装需要的jdk,详细安装过程如下:第一步,到Oracle官网下载jdk-8u301-linux-x64.tar.gz,并上传至linux服务器的/usr/locale目录下第二步,tar -zxvf jdk-8u301-linux-x64.tar.gz,解压jd原创 2021-08-09 22:49:39 · 2224 阅读 · 0 评论 -
OpenJDK与OracleJDK
2006年,JDK7时,Sun公司成立OpenJDK项目2006年11月13日的JavaOne大会上,Sun公司宣布计划要把Java开源,在随后的一年多时间里,它陆续将JDK的各部分在GPL v2(GNU Public License v2)协议下公开了源码,并建立OpenJDK组织对这些源码进行独立管理。除了极少数的产权代码(这部分代码所有权不属于Sun公司,Sun本身也无权进行开源处理)外,OpenJDK几乎拥有了当时SunJDK 7的全部代码,OpenJDK的质量主管曾经表示在JDK7中,Sun.原创 2021-10-11 14:59:41 · 678 阅读 · 0 评论 -
定义一个枚举类
首先,新建一个Java工程:demo,新建枚举类Color,新建启动类hello,代码分别如下:public enum Color { RED,GREEN,BLUE;}import java.util.Arrays;public class Hello { public static void main(String[] args) { Color c = Color.RED; System.out.println(c); Syst原创 2021-09-27 10:54:59 · 726 阅读 · 0 评论 -
Windows下安装Redis
在这里下载Redis for Windows。Redis的安装和使用详见网友分享的这篇博客。原创 2021-09-27 09:42:10 · 78 阅读 · 0 评论 -
注解@SuppressWarning
新建一个Java项目:demo,新建类:Hello,内容如下:public class Hello { public static void main(String[] args) { String str = "hello world"; }}上述代码可正常运行,但编译器依然给了我们警告信息:“Variable ‘str’ is never used.”。注解@SuppressWarnings可以用来抑制编译器产生警告信息。抑制所有类型的警告:@Suppre原创 2021-09-24 14:42:35 · 629 阅读 · 0 评论 -
IDEA删除module时提示Module does exist
遇到问题:IDEA删除module时提示Module does exist,解决方法如下:进入 "Load/Unload Modules"窗口,然后将对应module unload即可。详细可参考网友分享的这篇文章。原创 2021-09-24 14:06:13 · 1867 阅读 · 0 评论 -
SpringBoot内置的jackson和lombok的使用
文章目录jackson的序列化和反序列化将POJO对象序列化为JSON字符串将JSON字符串转换为POJO对象jackson的注解自定义ObjectMapper使用lomboklombok注解之@Datalombok注解之@Builder参考文章jackson的序列化和反序列化SpringBoot内置了jackson来实现JSON的序列化和反序列化。jackson使用ObjectMapper类将POJO对象序列化为JSON字符串,也能将JSON字符串反序列化为POJO对象。下面我们来看具体的例子。原创 2021-09-14 10:29:46 · 1525 阅读 · 0 评论 -
理解线程池
线程池的创建Java提供了创建线程池的接口类Executor。public interface Executor { /** * Executes the given command at some time in the future. The command * may execute in a new thread, in a pooled thread, or in the calling * thread, at the discretion of t原创 2021-09-13 10:24:29 · 95 阅读 · 0 评论 -
设计模式之动态代理
ProxyProxy提供了创建动态代理类和实例的静态方法,它也是由这些方法创建的所有动态代理的超类。接口InvocationHandler每个代理实例都有一个关联的调用处理程序对象,比如,本例的MyInvocationHandler就是调用处理程序,该处理程序实现了接口InvocationHandler。new newProxyInstance(ClassLoader loader,Class<?>[] interfaces,InvocationHandler h)通过调用Proxy原创 2021-07-19 19:56:51 · 123 阅读 · 0 评论 -
设计模式之静态代理
静态代理包含4种角色,分别是,抽象角色,使用接口或抽象类实现真实角色代理角色,用来代理真实角色,代理真实角色后一般会做一些附加操作客户,使用代理角色进行一些操作静态代理的好处在于:1)真实角色的业务变得更加纯粹,不再需要关注一些公共业务;2)公共业务交给代理,实现了业务分工;3)公共业务需要扩展时,只需要在代理角色中作处理,更方便。当然,静态代理的缺点也很明显,比如需要多写类,增加了代码量。示例1com.jepcc.demo.Rent(抽象角色)package com.jepc原创 2021-07-16 15:53:23 · 114 阅读 · 0 评论 -
【Java】Long型与String型互转
String转LongLong.valueOf(str)Long.parseLong(str)Long转StringString.valueOf(num)Long.toString(num)import java.util.Arrays;import java.util.List;public class Test { public static void main(String[] args) { String str = "100"; L原创 2021-07-15 16:51:23 · 1636 阅读 · 0 评论 -
bean的自动装配
bean的自动装配file:///D:/JavaProjects/spring%20package/spring-framework-5.2.15.RELEASE/docs/spring-framework-reference/core.html#beans-factory-autowire原创 2021-07-12 20:55:49 · 157 阅读 · 0 评论 -
Spring依赖注入的实现方式
setter注入详解原创 2021-07-09 15:44:43 · 372 阅读 · 0 评论 -
Spring之依赖注入
@[TOC[dao层com.jepcc.demo.dao.UserDaopackage com.jepcc.demo.dao;public interface UserDao { void getUser();}com.jepcc.demo.dao.impl.UserDaoImplpackage com.jepcc.demo.dao.impl;import com.jepcc.demo.dao.UserDao;public class UserDaoImpl imp原创 2021-07-08 16:51:48 · 151 阅读 · 0 评论 -
三识IoC
新建Java项目:helloworld在helloworld目录下新建lib,lib中放入spring相应jar包,并Add to Libraries。commons-logging-1.2.jarspring-aop-4.1.6.RELEASE.jarspring-aspects-4.1.6.RELEASE.jarspring-beans-4.1.6.RELEASE.jarspring-context-4.1.6.RELEASE.jarspring-context-support-4.1.原创 2021-07-05 22:14:04 · 115 阅读 · 0 评论 -
初识IoC
com.test.dao.UserDaopackage com.test.dao;public interface UserDao { public void getUser();}com.test.dao.implpackage com.test.dao.impl;import com.test.dao.UserDao;public class UserDaoImpl implements UserDao { @Override public void.原创 2021-05-27 17:27:53 · 79 阅读 · 0 评论 -
再识Ioc
新建Java Project新建lib目录,并放入如下jar包spring不同版本的核心包下载,可以到这里去。spring-aop-4.1.6.RELEASE.jarspring-aspects-4.1.6.RELEASE.jarspring-beans-4.1.6.RELEASE.jarspring-context-4.1.6.RELEASE.jarspring-context-support-4.1.6.RELEASE.jarspring-core-4.1.6.RELEASE.jar.原创 2021-06-30 14:47:17 · 120 阅读 · 0 评论 -
SimpleDateFormat的使用
使用SimpleDateFormat格式化日期public class TestApplication { public static void main(String[] args){ Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println(sdf.format(date));原创 2021-06-11 13:19:14 · 235 阅读 · 0 评论 -
解决端口占用导致应用启动失败的问题
【问题描述】:运行SpringBoot应用,提示APPLICATION FAILED TO START,原因在于:Port 8088 was already in use。【解决方法】:打开cmd,执行netstat -nao查看端口占用情况,好吧看花了眼,还是改用netstat -nao|findstr 8088过来下接口。可以看到,8088这个端口已经被占用了。接下来,我们来解除对该端口的占用。执行taskkill /pid 17180 -f即可。...原创 2021-05-13 13:57:41 · 737 阅读 · 0 评论 -
常用日志框架
使用JDK Logging//LoggingTester.javaimport java.util.logging.Logger;public class LoggingTester{ public static void main(String[] args){ Logger logger = Logger.getGlobal(); logger.info("start process..."); logger.warning("memo.原创 2021-04-16 11:31:54 · 134 阅读 · 0 评论 -
【Java】会话
HttpSession可以保存同一客户多个请求的会话状态。原创 2021-03-25 22:01:31 · 224 阅读 · 0 评论 -
【Java】继续了解servlet
servlet的作用servlet的任务就是 接收一个请求,返回一个响应。servlet的生命周期函数init()在servlet处理请求之前调用这个方法service()这个方法会查看请求,确定HTTP方法 (GET、POST),并在servlet上调用对应的方法(doGet()、doPost())destory()...原创 2021-03-16 21:12:17 · 228 阅读 · 0 评论 -
【Java】MVC入门
servlet中没有main()方法,servlet受控于另一个Java应用,这个Java应用叫作 容器,Tomcat就是这样一个容器。原创 2021-02-25 20:53:19 · 236 阅读 · 0 评论 -
【Java】Servlet入门
文章目录下载安装tomcat源码编译在tomcat/webapps下新建目录启动tomcat浏览器访问下载安装tomcat到tomcat官网下载tomcat,我这边下载的是apache-tomcat-9.0.41.exe。安装时注意选择jre。下载安装完成后,我们回头来想想为什么要安装tomcat。Web服务器应用只提供静态页面,如果要实现动态页面,就需要借助Web服务器辅助应用。Web服务器应用接收客户端请求,并将请求交给辅助应用,辅助应用处理请求并返回响应,Web服务器应用取得这个响应并原创 2021-02-01 21:15:27 · 218 阅读 · 0 评论 -
【Java】请求和响应
HTTP协议有很多种方法,最常用的是GET和POST。GET是一个简单的请求,POST用来发送用户数据。GET其实也能发送一点数据,但我们还是会选择使用POST而不是GET,这是因为GET中的总字符数是有限的,有限程序取决于服务器;用GET发送的数据会追加到URL后面,在浏览器中显示出来,所以用GET发送的数据会完全暴露。最好不要把口令或者其他敏感数据作GET请求的一部分来发送。...原创 2021-02-01 19:55:48 · 251 阅读 · 0 评论 -
【Java】RMI
RMI(Remote Method Invocation,远程程序调用)。服务端//MyRemote.javaimport java.rmi.Remote;import java.rmi.RemoteException;public interface MyRemote extends Remote{ public String sayHello() throws RemoteException;}// MyRemoteImpl.javaimport java.rmi.Re原创 2021-01-26 20:32:01 · 127 阅读 · 0 评论 -
【Java】发布程序
文章目录准备源码编译运行创建JAR包执行JAR包准备源码// Animal.javapublic abstract class Animal{ public void eat(){ System.out.println("Animal eating"); }}// Dog.javapublic class Dog extends Animal{ public void bark(){ System.out.println("Dog bar原创 2021-01-25 21:31:57 · 559 阅读 · 0 评论 -
【Java】网络联机
建立socket连接Socket chatSocket = new Socket(IP地址,TCP端口)socket连接的建立,代表客户端与服务端之间都存有对方的信息,包括IP地址和TCP端口。TCP端口TCP端口不是实际的物理端口,是逻辑端口,用来表示不同应用程序的服务。一台服务器上有65536个端口(0~65535)。其中,0~1023这些TCP端口是保留给已知的特定的服务使用,比如,HTTP服务是80端口,Telnet服务是23端口,SMTP服务是25端口。通信(发送、接收数据)..原创 2021-01-21 22:23:42 · 1616 阅读 · 0 评论 -
【Java】对象序列化与文件的输入输出
保存对象主要有两种方式,第一种,序列化对象并写入文件;第二种,将对象写入纯文本文件。我们主要来看第一种:序列化对象。//Weapon.javapublic class Weapon {}//GameCharacter.javaimport java.io.FileOutputStream;import java.io.ObjectOutputStream;import java.io.Serializable;public class GameCharacter implements原创 2020-12-01 20:43:16 · 347 阅读 · 0 评论 -
【Java】Swing入门
JFrame框架,框架有自己的布局管理器JPanel面板,面板有自己的布局管理器JComponent组件原创 2020-11-24 22:03:01 · 1084 阅读 · 0 评论 -
【Java】图形用户接口(GUI)
第一个GUIimport javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;public class Test implements ActionListener{ JButton button; public static void main(String args[]){ Test t = new原创 2020-11-22 18:10:43 · 881 阅读 · 0 评论 -
【Java】异常处理
文章目录有风险的代码try/catchtry/catch/finally多重异常多重异常的声明多重异常的处理有风险的代码import javax.sound.midi.*;public class Test{ public void play(){ Sequencer sequencer = MidiSystem.getSequencer(); System.out.println("We got a sequencer"); } public原创 2020-11-20 20:02:56 · 137 阅读 · 0 评论 -
【Java】继承与多态
public class Animal { private String picture; public void roam(){ System.out.println("Animal: roaming"); }}public class Hippo extends Animal { public void roam(){ super.roam(); System.out.println("Hippo: roaming"原创 2020-11-11 20:19:47 · 206 阅读 · 0 评论 -
【Java】初识Java
Java的工作方式每个应用程序只有一个main()函数,Java虚拟机启动执行时调用main()。原创 2020-11-09 20:10:51 · 215 阅读 · 0 评论 -
idea+jdk+maven搭建java开发环境
IntelliJ IDEA 下载 (非最新版本)JDK1.8下载 (如果没有oracle账号,则先注册再下载)原创 2020-10-16 14:21:23 · 622 阅读 · 0 评论 -
java里的数据结构
数组初始化、遍历数组的常用方式第一种 double[] a = new double[10]; for(int i=0;i<a.length;i++) { a[i] = Math.floor(Math.random()*100+1); System.out.println(a[i]); }第二种 int[] b = {1,2,3}; for(int idx:b) { System.out.println(idx); }第三种 int[] c原创 2020-06-15 21:09:14 · 179 阅读 · 0 评论