![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA学习
文章平均质量分 86
zzu957
这个作者很懒,什么都没留下…
展开
-
Java中详述IO流
什么是IO流I是指Input(输入),O是指Output(输出)。在Java中,文件的输入和输出是通过流(Stream)来实现的,流的概念源于Unix中管道(pipe)的概念。在Unix系统中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备、外部文件等。一个流,必有源端和目的端,它们可以是计算机内存的某些区域,也可以是磁盘文件,甚至可以是Internet上的某个URL。对于流而言,我们不用关心数据是如何传输的,只需要向源端输入数据,向目的端获取数据即可。流的分类:按照处理数据原创 2021-05-03 17:37:01 · 213 阅读 · 1 评论 -
Java中详述线程间协作
标题原创 2021-02-05 23:32:52 · 168 阅读 · 0 评论 -
Java中详述详述线程间数据共享
并发运行与串行运行多个线程之间默认并发运行,这种运行方式往往会出现交叉的情况。首先引入一段代码来说明这种情况:package 线程间数据共享;public class Test { public static void main(String[] args) { new CountThread("@@@@").start(); new CountThread("###############").start(); } }class CountThread extends T原创 2021-02-05 09:27:40 · 193 阅读 · 0 评论 -
Java中总结线程常用方法
join方法线程对象在调用join方法前必须先调用start方法,否则该线程永远不会进入执行状态。(如果时间线程对象调用join方法之前没有调用start方法,那么时间线程使用没有执行。)package 多线程;import java.util.Date;public class Test1 { public static void main(String[] args) { TimeThread timeThread = new TimeThread(); timeThread.s原创 2021-02-04 21:45:14 · 106 阅读 · 0 评论 -
Java中详述线程与进程
线程与进程进程(process) 是指一个程序的一次执行过程。线程(thread) 又称为轻量级进程,线程是一个程序中实现单一功能的一个指令序列,是一个程序的单个执行流,存在于进程中,是一个进程的一部分。1、一个进程可以包含多个线程,而一个线程必须在一个进程之内运行;同一进程中的多个线程之间采用抢占式独立运行;进程结束,则线程跟着结束,如果一个进程没有可执行的线程,进程也结束;2、线程有独立的执行堆栈、程序计数器和局部变量;但是没有独立的存储空间,而是和所属进程中的其它线程共享存储空间;3、操作原创 2021-02-04 21:03:17 · 206 阅读 · 0 评论 -
Java中详述元注解
元注解什么是元注解元注解:即在Java语言中用于修饰自定义注解的一种注解,有@Target、@Retention 、@Documented、@Inherited和@Repeatable常用元注解,其中@Repeatable 是JDK8.0新添加的元注解:元注解@Target元注解@Target:用于指定被修饰的自定义注解只能用于修饰程序中哪些元素,该元注解有如下属性值:1、ElementType.ANNOTATION_TYPE:应用于其他注解的元注解2、ElementType.CONSTRUCT原创 2021-02-01 17:18:43 · 232 阅读 · 0 评论 -
Java中详述自定义注解
什么是注解Java注解(Annotation) 也叫作元数据,以‘@注解名’在代码中存在,它是一种在源代码中标注的特殊标记,可以标注源代码中的类、属性、方法、参数等代码,主要用于创建文档,跟踪代码中的依赖性,甚至执行基本编译时检查。注解不是与生俱来的,是根据JDK版本发展而逐渐形成的一种标记,JDK5及其以后JDK版本开始支持Java注解(注解是一个标记,标记所修饰元素所具有的特征)。注解的分类ava注解按照是否含有参数分为三种:1、不带参数,语法结构为:@Annotation2、带一个参数的注原创 2021-02-01 15:33:55 · 172 阅读 · 0 评论 -
Java中详述反射
如何获取Class对象首先我们需要创建一个Student类,代码展示:package venus;public class Student { public String name; public Student() { } public void doHomework() { System.out.println(name+"正在写作业"); }}创建一个Test类对象,代码如下:package venus;public class Test {原创 2021-01-30 14:29:53 · 135 阅读 · 0 评论 -
Java中详述Spring AOP(下)
切面优先级果一个方法匹配多个切面中相同类型增强方法,那么必须明确指定各个切面优先级,否则切面按照类名字典顺序执行,切面优先级的确定既可以通过在切面类添加@Order注解或实现Ordered接口实现,也可以在XML配置aop:aspect标签的order属性来实现。@Order注解此时出现了两个切面,我们给他相同类型增强方法,代码展示如下。AAspect类:package com.jd.aspect;import org.aspectj.lang.JoinPoint;import org.as原创 2020-11-22 20:21:30 · 101 阅读 · 0 评论 -
Java中详述Spring AOP(中)
@Around注解上篇简述了AspectJ支持@Before、@After、@AfterReturning和@AfterThrowing及其执行过程,本模块来阐述其支持的另一种注解:@Around注解。该注释修饰的方法可以灵活调整目标方法的执行时机;通过@Around注解还可以实现@Before,@After,@AfterReturning和@AfterThrowing增强效果。下面将按照图中方式进行实现:代码如下:@Around("pointcut()") public Object原创 2020-11-22 18:36:42 · 148 阅读 · 0 评论 -
Java中详述Spring AOP(上)
为什么要使用AOP通过一段Java代码说明为什么要使用AOPAOP(Aspect Oriented Programming 面向切面编程)是一种指在程序运行期间动态的将某段代码切入到指定方法的指定位置进行运行的编程方式,这种编程方式实现了代码复用,是对传统OOP(Object Oriented Programming,面向对象编程 )的补充。目前,Aspectj是Java社区里最完整最流行的AOP框架,在Spring 2.0以上版本中可以通过Aspectj注解或基于XML配置AOP。我们在做日原创 2020-11-22 18:11:13 · 137 阅读 · 0 评论 -
Java中详述构造方法与setter方法
1、基本数据类型和String类型基本数据类型和String类型,使用value标签属性进行调用application.xml文件中代码展示:<!--基本数据类型和String类型--> <bean class="com.jd.vo.Student" id="student" lazy-init="true"> <constructor-arg index="0" value="12"></constructor-arg>原创 2020-10-25 17:40:35 · 683 阅读 · 1 评论 -
IDEA中详述如何使用MyBatis
一、什么是MyBatis?MyBatis源自Apache的iBatis开源项目, 从iBatis3.x开始正式更名为MyBatis。它是一个优秀的持久层框架。官网地址:http://www.mybatis.org/mybatis-3,可点击下方蓝字直接访问。MyBatis官网链接二、为什么使用MyBatis?为了和数据库进行交互,通常的做法是将SQL语句写在Java代码中,SQL语句和Java代码耦合在一起不利于后期维护修改,而MyBatis能够帮助我们将SQL语句和Java代码分离,方便了后期因原创 2020-09-27 19:04:17 · 1900 阅读 · 0 评论 -
Java数据库中详述多表查询
多表查询多表查询:即多个表关联查询,需要依据多表之间列关系将其连接起来,这种连接方式分为三种:内连接(inner join)、外连接(outer join)及交叉连接(cross join)。为更好阐述这三种连接的关系,我们采用展示代码的方法进行阐述:首先在数据库中创建user_info 表:#user_info表create table user_info( id int(2) primary key, user_name varchar(12) unique,原创 2020-07-09 09:59:30 · 3338 阅读 · 0 评论 -
Java数据库中详述事务隔离级别(下)
解决方案接上篇,当我们发现事务并发时,容易出现三种问题:脏读,不可重复读,幻读。所以我们需要根据实际需求,通过设置数据库的事务隔离级别可以解决多个事务并发情况下出现的问题。数据库事务隔离级别由低到高依次为Read uncommitted、Read committed、Repeatable read和Serializable等四种。由于数据库不同,其支持的事务隔离级别亦不相同:MySQL数据库支持上面四种事务隔离级别,默认为Repeatable read;Oracle 数据库支持Read committ原创 2020-07-08 21:22:28 · 238 阅读 · 0 评论 -
Java数据库中详述事务隔离级别(上)
并发问题类型同一个应用程序中的多个事务或不同应用程序中的多个事务在同一个数据集上并发执行时, 可能会出现许多意外的问题,这些问题可分为如下三种类型:脏读,不可重复读,幻读。脏读(Drity Read): 已知有两个事务A和B, A读取了已经被B更新但还没有被提交的数据,之后,B回滚事务,A读取的数据被修改提交,此时A读取的数据就是脏数据。举例解释:场景:公司发工资了,领导把5000元打到Tom的账号上,但是该事务并未提交,而Tom正好去查看账户,发现工资已经到账,账户多了5000元,非常高兴,可是不原创 2020-07-08 20:58:07 · 223 阅读 · 0 评论 -
Java数据库中group by方法总结
group by方法group by方法:格式:select 数据列名1, count(数据列名2) from 表名 group by 数据列名3作用:用于将表中数据划分为若干个组,group by后面用于指定分组的依据。group by方法示例:首先我们创建一个student表,向表中注入数据,代码如下:create table student( id char(36) primary key, name varchar(8) not null, age int(3) default 0原创 2020-07-08 18:24:51 · 2582 阅读 · 0 评论 -
Java数据库中order by方法总结
order by方法概述order by方法:格式:select * from 表名 order by 数据名 asc(升序)/desc(降序);作用:将数据名按照特定的升序/降序排序显示。顺序规定:数字类型:小值在前面显示;日期类型:早的日期在前面显示;字符类型:依据字母顺序显示,a在前,z最后;order by方法应用实例首先我们创建一个student表,向表中注入数据,代码如下: create table student( id char(36) primary key,原创 2020-07-08 18:03:47 · 4510 阅读 · 0 评论 -
Java中MySQL模糊查询总结
什么是模糊查询模糊查询:即需要使用关键字like进行的查询具有一系列相同特征的查询方式。具体分为两类,有独立的通配符:"%“与”_"。模糊查询示例首先我们创建一个student表,向表中注入数据,代码如下:create table student( id char(36) primary key, name varchar(8) not null, age int(3) default 0, mobile char(11), address varchar(150))insert i原创 2020-07-08 17:46:51 · 1832 阅读 · 0 评论 -
Java中为什么需要外键
为什么需要外键代码展示:创建一个user_info表,包含id,user_name,password,real_name,mobile,address元素,其中user_name,password不能为null。当执行下面SQL语句注入元素时,可以看到结果为:create table user_info( id char(36) primary key, user_name varchar(30) not null, password varchar(30) not null, rea原创 2020-07-07 10:35:54 · 276 阅读 · 0 评论 -
Java中事务的特点
为什么要使用事务当执行一组DML操作时,为了确保数据的完整性和一致性,避免数据库产生错误数据,就需要通过事务(Transaction)使该组DML操作同时成功或失败。事务结束的条件当执行第一个DML SQL语句时,事务开始,当出现以下情况时事务结束:1、执行了commit或rollback语句;2、执行了DDL语句(如建表语句)或DCL语句(如给用户授权),如下:3、数据库客户端程序退出或数据库崩溃时,为了保持数据一致性,也会结束事务。注意事项:1、执行DML语句且没有结束事务时,如果需要查原创 2020-07-05 17:43:05 · 257 阅读 · 0 评论 -
Java中MySQL语句
SQL语句分类:1、数据定义语言:2、数据查询语言:3、数据操纵语言:4、数据控制语言:SQL语句规范:1、SQL语句可以单行书写,也可以多行书写,执行多条语句时,使用分号结尾。2、SQL语句通常使用空格或缩进来增强代码的可读性。3、SQL语句使用/**/或者#符号进行代码注释,增强代码可读性。4、为规避关键字,常使用单反引号“ ` ”括住关键字完成规避。SQL语句展示:1、创建数据库:create database wjq character set utf8执行此条SQL原创 2020-07-05 15:47:59 · 2192 阅读 · 0 评论 -
Java中包装类的数据缓存
如何理解包装类包装类包含两部分:即装箱和拆箱。使用包装类的优点:Java对部分经常使用的数据采用缓存技术,即第一次使用该数据则创建该数据对象并对其进行缓存,当再次使用等值对象时直接从缓存中获取,从而提高了程序执行性能。拆箱:指将基本数据类型转化为包装类。Integer a = 12 ;装箱:指将包装类类型数据转化为基本数据类型。int aa = a;//自动转化为基本数据类型。包装类的特点一、缓存Java中只是对部分基本数据类型对应包装类的部分数据进行了缓存,例如:1、Byte,Sh原创 2020-07-04 16:24:22 · 383 阅读 · 4 评论 -
Java MD5加密实战(账号登录注册系统)
程序框架程序框架如图所示:代码展示:Main方法:package com.jd.test;import java.util.ArrayList;import java.util.Scanner;import java.util.UUID;import com.jd.tool.MD5Tool;import com.jd.tool.db.DBLink;/* * 问题:当DBA(数据库管理员)登录数据库查看时可以看到所有人的账户密码,有可能造成泄密 * 解决方法:MD5加密 *原创 2020-07-03 17:39:08 · 889 阅读 · 0 评论 -
Java中详述HashSet类add方法(五)
new 对象(“数据内容”)数据重复(三)通过(一)(二)部分我们可以发现,尽管两次new 对象(“数据内容”)的hashCode值相同,但是仍能存储重复的数据,对equals方法进行重写,看看结果是否会发生改变:package sun;import java.util.HashSet;public class Test1 { public static void main(St...原创 2020-04-25 11:44:22 · 168 阅读 · 0 评论 -
Java中详述HashSet类add方法(四)
new 对象(“数据内容”)数据重复(二)在重复数据一中我们发现:new 对象 (“数据内容”)可以重复存储的原因在于存储相同数据时的两个对象的hashCode值不同导致存储地址不同,若重写HashCode方法,探究该情况是否能够发生改变。代码如下:package sun;import java.util.HashSet;public class Test1 { public s...原创 2020-04-25 11:21:04 · 181 阅读 · 0 评论 -
Java中详述HashSet类add方法(三)
标题package sun;import java.util.HashSet;public class Test1 { public static void main(String[] args) { HashSet<Student> set = new HashSet<Student>(); set.add(new Student("100"));...原创 2020-04-24 23:34:31 · 130 阅读 · 0 评论 -
Java中详述HashSet类add方法(二)
hashCode方法当使用HashSet中的add方法添加重复数据时,返回值为false,欲分析底层源代码,需要进行对HashCode方法进行分析说明。public class Test1 { static final int hash(Object key) {//在源代码中摘出hash方法进行分析操作。 int h; return (key...原创 2020-04-19 10:26:43 · 563 阅读 · 0 评论 -
Java中详述HashSet类add方法(一)
仅有唯一一个数据import java.util.HashSet;public class Test2 { public static void main(String[] args) { HashSet<String> names = new HashSet<String>();//调用构造方法时,创建HashMap集合对象 names.ad...原创 2020-04-18 19:18:38 · 230 阅读 · 0 评论 -
Java中详述ArrayList类中的contains方法
contains方法contains()方法格式:对象名.contains(Object o);//Object o 为需要查找或判断的内容。作用:判断对象中是否包含Object o,若包含,则返回true,否则返回false代码:public class Test { public static void main(String[] args) { ArrayList<S...原创 2020-04-15 21:06:50 · 1073 阅读 · 0 评论 -
Java中Map集合的遍历总结
方法一加强循环: Map<String,Integer> scores = new HashMap<String,Integer>(); scores.put("Jim", 100); scores.put("Kate", 10); Set<String> names = scores.keySet(); //获取集合中所有k...原创 2020-04-13 10:58:12 · 100 阅读 · 0 评论 -
Java中Map集合的常用方法总结
Map集合的常用方法引用格式:import java.util.HashMap;import java.util.Map;public class Test3 { public static void main(String[] args) { //Map Map<String,Integer> scores = new HashMap<String...原创 2020-04-13 10:42:19 · 198 阅读 · 0 评论 -
Java中Set集合常用方法总结
Set集合常用方法Set集合的部分方法与List集合中的方法有所不同格式为:import java.util.HashSet;import java.util.Set;public class Test2 { public static void main(String[] args) { Set<String> names = new HashSet<S...原创 2020-04-13 10:20:52 · 4446 阅读 · 0 评论 -
Java中List集合常用方法总结
集合集合:即一个储存或者获取数据的容器。一般分为:List,Set,Map三类,关系如图所示:List集合常用方法由于List集合中的ArrayList与LinkedList都是List接口的实现类,所以他们中定义的方法基本上是一样的,因此只以其中一种举例。调用Link集合方法的代码格式:import java.util.ArrayList;//引用ArrayList包import...原创 2020-04-12 18:34:14 · 5370 阅读 · 0 评论 -
Java 详述throw与throws
为什么要使用throw与throws首先通过一段代码简要说明:public class Student{//student类 private int age; public void setAge(int age) { if(age<0||age>15) { System.out.println("ERROR AGE;0<=AHE<=15"); ...原创 2020-04-11 10:29:48 · 143 阅读 · 0 评论 -
Java中检查时异常和运行时异常区别
异常详述异常:以不同寻常,非正常。在Java执行时若出现异常,则会导致后续代码均不执行,因此当出现异常时,我们需要解决异常。异常的分类(粗略):在Throwable中分为Exception和Error(其中,Error为jdk的错误,Exception为程序代码出错。)Exception又分为RuntimeException与非RuntimeException。运行时异常,即Runtim...原创 2020-04-09 15:55:57 · 416 阅读 · 0 评论 -
Java匿名内部类详述
什么是内部类内部类:即定义在外部类中的类,用于具体描述现实生活中某类事物。形式为:public class Test { class V{ public void walk() { } };}其中,类V即为Test类的内部类。内部类的分类一、以有无static关键词修饰分为静态内部类与非静态内部类。静态内部类形式:public class Body {...原创 2020-03-28 17:34:03 · 239 阅读 · 0 评论 -
Java详述抽象类与接口区别
什么是抽象类在一个“类”中,如果有抽象方法,则这个类称之为抽象类,需要在class前加abstract。抽象方法:若一个方法中没有方法体,则方法称之为抽象方法,是因为在多态中,父类的方法体往往多余,因此选择舍去方法体形成抽象方法。其代码形式为:public abstract class Mammal {//父类 public abstract void move();}抽象类...原创 2020-03-21 19:39:46 · 119 阅读 · 0 评论 -
Java中详述==与equals的区别
区别== :对于基本数据类型而言,"= =" 是比较数据值是否相等;对于引用数据类型而言, ==比较对象地址是否相等。结果为boolean类型,相同为true,不同为false。equals:Object类中比较地址是否相同,而String类中重写了equals方法,从而比较两个字符串内容是否相同。代码展示分析==代码部分public class Test { public sta...原创 2020-03-14 17:38:49 · 181 阅读 · 0 评论 -
Java中String创建方式及其区别
创建方式方法一:String name ="wjq";方法二:String name =new String("wjq");区别为了正确充分阐述两者之间的区别,不妨多创建几组字符串。代码如下:需要说明的是:引用类型比较地址的常用方法为(引用类型变量1==引用类型变量2),结果为boolean型,即true/false。public class Test { public s...原创 2020-03-13 22:04:58 · 123 阅读 · 0 评论