自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(74)
  • 收藏
  • 关注

原创 2021-07-09 记录谷粒商城项目中遇到的一个小坑

这里写自定义目录标题IDEA Lombok插件在某个模块中失效问题复述解决可能原因IDEA Lombok插件在某个模块中失效问题复述搭建环境过程中,renrenfast模块中lombok失效,导致renren-fast编译失败,无法获取get/set方法解决pom.xml中文件注释掉lombok版本,将lombok版本修改为1.18.14,编译通过正常启动可能原因可能为IDEA插件版本与renre-fast模块不匹配导致,maven无法正常加载lombok包...

2021-07-09 21:23:53 216 1

原创 68-PreparedStatement数据库操作接口

PreparedStatement数据库操作接口  既然java.sql中有Statement接口实现数据库操作,那为什么又要提供有一个PreparedStatement实现数据库操作?Statement问题分析  以更新操作为例,在Statement中要想执行SQL语句,那么一定要通过字符串实现SQL结构定义,这种定义如果要结合到用户输入的情况下就可能产生问题产生。分析Statement接口操作问题String title = "testNews";String content = "文本内容

2021-03-20 16:09:49 226

原创 67-Statement数据库操作接口

Statement数据库操作接口  当获取了java.sql.Connection接口对象之后,核心目的不是只为了连接而是为了数据库的操作,为了进行数据库操作应该使用标准SQL语句来完成,所以需要有一个SQL执行器,这个执行器就可以使用Statement接口完成。Statement接口简介  java.sql.Statement是JDBC中提供的数据库操作接口,利用其可以实现数据的更新与查询的处理操作,该接口定义:public interface Statement extends Wrapper

2021-03-20 16:07:41 198

原创 66-Java数据库编程基础操作

Java数据库编程基础操作  对于现代的开发几乎所有项目都是围绕着数据库展开的,很少见到没有数据库单独存在的项目。所以任何一门编程语言要想发展必须对数据库的开发有所支持,同样,Java从最初的时代开始就一直支持者数据库的开发标准JDBC(Java DataBase Connectivity)。JDBC简介  JDBC本质上并不属于一个技术,而是一种服务。所有服务的特征:必须按照指定的套路进行操作。  Java中专门为JBDC提供一个模块(java.sql),里面的核心开发包:java.sql。在JD

2021-03-20 16:06:12 142

原创 65-网络编程

网络编程  网络编程指得是多台主机之间的数据通讯操作。网络编程简介  网络的核心定义:两台以上的电脑称为网络,多台电脑之间的通讯。  网络连接的目的不仅仅是为了进行电脑的串联,更多的情况下是彼此之间的数据通讯,而在通讯的实现上,产生了一系列处理协议:IP、TCP、UDP,所谓的网络编程实现的就是数据通讯操作,只不过这个通讯操作分为客户端与服务器端。  于是针对于网络程序的开发就有两个模型:C/S(Client/Server、客户端与服务器端):要开发出两套程序,假设服务器端发生改变客户端也应该

2021-03-20 16:05:24 56

原创 64-Stream数据流

Stream数据流  从JDK1.8开始,由于已经进入到了大数据的时代,所以在类集中也支持有数据流式分析处理操作,为此专门提供了一个Stream的接口,同时Collection中也提供为此接口实例化的方法。获得Stream接口对象:public default Stream<E> stream()Stream基本操作  Stream主要功能是进行数据的分析处理,同时主要是针对于集合中的数据进行分析操作。Stream基本操作形式package per.lyz.demo;impo

2021-03-20 16:02:43 123

原创 63-集合工具类

集合工具类Stack栈操作  栈是一种先进后出的数据结构。例如:文本编辑器都有撤销功能,那么每次使用的时候你会发现最后一次的编辑操作永远是最先撤销,这个功能就是利用栈来实现的,栈的基本操作形式:  在Java程序中使用Stack来描述栈的操作,这个类的定义如下:public class Stack<E> extends Vector<E>  可以发现Stack是Vector的子类,但是它使用的并不是Vector类中所提供的的方法,而是采用如下的两个方法:入栈:pu

2021-03-17 14:35:57 66

原创 62-Map集合

Map集合  在Collection接口中所保存的数据均为单个对象,在数据结构中除了可以进行单个对象保存之外,实际上还可以进行二元偶对象(key-value)的保存,而存储二元偶对象的核心意义在于,需要通过key获取对应的value。  开发中:Collection集合保存数据的目的是为了输出,Map集合保存数据的目的是为了进行key的查找。Map接口简介  Map接口是进行二元偶对象保存的最大父接口,接口定义:public interface Map<K,V>  该接口为一个独立的父

2021-03-17 11:17:02 67

原创 61-集合输出

集合输出  集合输出实际上从JDK1.8开始就在Iterable接口之中提供有一个foreach()方法,但是这种方式的输出并不是传统意义上的输出形式,并且也很难在实际开发中出现,对于集合操作而言,一共定义有四种输出形式:Iterator迭代输出(95%)ListIterator双向迭代输出(0.1%)Enumeration枚举输出(4.8%)foreach输出(与Iterator相当)Iterator迭代输出  通过Collection接口的继承关系可以发现,从JDK1.5开始其多继承了

2021-03-15 11:09:46 88

原创 60-Set集合

Set集合  Set集合最大的特点就是不允许保存重复元素。其也是Collection子接口。Set接口简介  在JDK1.9之前Set集合与Collection集合的定义并无差别,Set继续使用了Collection接口中提供的方法进行操作,但是从JDK1.9之后Set集合也像List集合一样扩充了一些static方法,set定义:public inteface Set<E> extends Collection<E>  需要注意的是Set集合并不项List集合那样扩充

2021-03-15 11:07:07 152

原创 59-List集合

List集合List接口简介  List是Collection的子接口,其最大的特点是允许保存重复元素数据,该接口的定义如下:public interface List<E> extends Collection<E>  需要清楚的是List子接口对于Collection接口进行了方法扩充。方法名称类型描述public E get(int index)普通获取指定索引数据public E set(int index,E element)

2021-03-15 11:04:06 65

原创 58-类集框架

类集框架类集框架简介  从JDK1.2开始Java引入类集开发框架,所谓的类集指的就是一套动态数组的实现方案,在实际开发中没有任何一项开发可以离开数组,但是传统数组实现起来非常繁琐,而且长度是其致命伤,所以传统数组是不可能大范围使用的,但是我们又无法离开数组,所以最初只能依靠一些数据结构实现动态数组处理,其中最重要的两个结构:链表、树。  但是面对这些数据不得不面对如下一些困难:数据结构的代码实现困难,对于一般开发者是无法使用的;对于链表或二叉树,进行更新处理的时候维护是非常麻烦的;对于链表或

2021-03-15 10:59:27 72

原创 57-反射与Annotation

反射与Annotation  从JDK1.5之后,Java开发提供了Annotation技术支持,这种支持为项目编写带来了新的模型,而后十多年的发展,Annotation的技术得到了十分广泛的应用,并且在所有项目开发中都会存在。反射获取Annotation信息  在类或方法定义时都可以使用一系列的Annotation进行声明,想要获取Annotation信息可以通过反射来完成。在java.lang.reflect中有一个AccessibleObject类有获取Annotation的方法:获取全部A

2021-03-15 10:57:03 94

原创 56-反射与代理设计模式

反射与代理设计模式  代理设计是在程序开发之中使用最多的设计模式,代理设计模式的是有真是业务实现类与代理业务实现了,并且代理类要完成比真实业务更多的处理操作。传统代理设计模式的弊端(静态代理设计模式)  所有的代理设计模式如果按照设计要求来讲,必须是基于接口的设计,也就是说需要首先定义出核心接口的组成,下面模拟一个消息发送的代理操作结构。传统代理设计package cn.mldn.demo;interface IMessage{ //传统代理设计必须有接口 public void send

2021-03-15 10:53:41 53

原创 55-ClassLoader类加载器

ClassLoader类加载器  在Java语言找那个提供一个系统的环境变量CLASSPATH,这个环境属性的作用主要是在JVM进程启动的时候进行类加载路径的定义,在JVM中可以根据类加载器进行指定路径中类的加载,也就是说找到了类加载器就找到了类的来源。类加载器结构-自上向下ClassLoader类加载器简介  若想要获得类加载器,那么一定要通过ClassLoader来获取,而要想获取ClassLoader类对象必须使用Class类(反射的根源)实现,方法:获取类加载器对象:public Cl

2021-03-09 21:20:57 83

原创 54-反射与简单java类

反射与简单java类传统属性赋值弊端  简单java类主要是由属性所组成,并且提供有setter和getter处理方法,同时简单Java类最大的特征是通过对象保存相应的类属性内容。但是使用传统的简单Java类开发,也会面临非常麻烦的困难。传统Java类操作class Emp{ private String ename; private String job; public String getEname() { return ename; } public void setEname(

2021-03-09 21:18:53 114

原创 53-反射与类操作

反射与类操作  在反射机制的处理过程中不仅仅只是一个实例化对象的处理操作,更多的情况下还有类的组成结构操作,任何一个类的基本组成结构:父类(父接口)、包、属性、方法(构造,普通)。反射获取类结构信息  一个类的基本信息主要包括类所在的包名称、父类的定义、父接口的定义。  想要获得类的基本信息,可以使用Class类的如下方法:获取包名称public Package getPackage();;Person.class.getPackage().getName()获取继承父类public

2021-03-07 16:13:30 74

原创 52-反射应用案例

反射应用案例  经过分析之后,可以发现虽然获得了Class类的实例化对象,但是依然觉得这个对象忽悠去的意义不大。所以为了进一步了解反射的核心意义,通过几个案例进行程序的说明(实际开发中一定会使用的)。反射实例化对象  获取Class对象之后实际上并不是只是一个对象的实例化操作形式,更重要的是Class类提供有一个对象的反射实例化方法(代替关键字new)。JDK1.9以前的实例化:public T newInstance() throws InstantiationException,Illegal

2021-03-07 16:09:56 225

原创 51-认识反射机制

认识反射机制  在Java语言中之所以有如此多的开源技术支撑,很大一部分是来自于Java最大的特征–反射机制。如果现在不能够灵活的使用反射机制进行项目开发与设计,那么可以说并未接触到Java的精髓所在。  所有的技术实现的目标只有一点:重用性反射机制简介  对于反射技术首先来考虑的是反与正的概念。所谓的“正”操作指的是当我们要使用一个类的时候一定是要先导入程序所在的包,而后根据类进行对象的实例化,并且依靠对象调用类中的方法。但是如果说“反”,根据实例化对象反推出其类型。正向操作import ja

2021-03-06 14:42:07 78

原创 50-JavaIO编程案例

JavaIO编程案例数字大小比较  题目:输入三个整数,求最大值和最小值  若想进行数字输入处理,应可以保证输入错误时可以重新输入,为了可以达到重用的设计,应该准备一个单独的输入数据类。定义一个输入工具类import java.util.Scanner;public class InputUtil { private InputUtil() {} /** * 实现键盘接收数字 * @param promot 提示信息 * @return 可以使用的数字 */ publ

2021-03-06 14:40:28 157

原创 49-对象序列化

对象序列化  几乎只要是Java开发就一定存在序列化的概念,由于序列化的概念逐步发展,慢慢也有了更多地序列化的标准。对象序列化基本概念  所谓的对象序列化指的是将内存中保存的对象以二进制数据流的形式进行处理,可以实现对象的保存或者是网络传输。  然而并不是所有的对象都可以被序列化,在Java中有一个强制性的要求:如果要序列化的对象,那么对象所在的类一定要实现java.io.Serializable父接口,作为序列化的标记。这个接口没有任何的方法,因为他描述的是一种类的能力。定义一个可以被序列化的

2021-03-06 14:39:13 111

原创 48-输入与输出支持

输入与输出支持  如果现在想要通过程序实现内容的输出,那么核心的本质一定要通过OutputStream类完成,该类最大的缺点是数据输出功能有限。(public void write(byte[] b) throws IOException),所有的数据一定要转为字节数组后才可以输出,假设说现在项目中可能输出的是long、double、Date,再这样的情况下就必须将这些数据变为字节的形式来处理,这样的处理是比较麻烦的,最初时为了解决此类的重复操作,往往会由开发者自行定义一些功能类简化输出过程。打印流打

2021-03-06 14:37:14 142

原创 47-IO操作深入

IO操作深入字符编码  在计算机世界中只认0、1的数据,如果要想描述一些文字的编码就需要对这些二进制的数据进行组合,所以才有了现在可以看见的中文,但是进行编码的时候要想正确显示出内容一定要有解码,所以编码和解码肯定要采用同一套的统一的标准,如果不统一的时候就会出现乱码。  在实践中开发中常用的编码有如下几种:GBK/GB2312:国标编码,可以描述中文信息,其中GB2312只描述简体中文,而GBK包含简体与繁体;ISO8859-1:国际通用编码,可以用其描述所有的字母信息,如果是象形文字则需要进

2021-03-06 13:58:47 101

原创 46-字节流与字符流

字节流与字符流流的基本概念  在java.io包中File类是唯一一个与文件有关的程序处理类,但是File类只能操作文件本身,但不能操作文件的内容,实际开发中IO操作的核心意义在于:输入与输出操作。  对于程序而言,输入与输出可能来自于不同的环境,例如:通过电脑连接服务器进行浏览的时候,此时客户端发出一个信息,服务器接收后进行回应处理。  对于服务器或是客户端而言实质上传递的就是一种数据流的处理形式,而所谓的数据流指的就是字节数据。而对于这种流的处理形式,在java.io包中提供两类支持:字节处

2021-03-06 11:08:01 103

原创 45-文件操作

文件操作  在Java语言中提供有文件操作系统的支持,而这个支持就这java.io.File类中进行了定义,也会是说在整个java.io包中,File类是唯一一个与文件本身操作(创建、删除、重命名等等)有关的类。如果要想进行File类操作,必须提供有完整的路径而后才可以调用相应的方法进行处理。File类基本操作  打开JDK文档可以发现,File类是Comparable接口的子类,所以File类的对象是可以进行排序处理的。而在进行File类处理的时候需要为其设置访问路径,那么对于路径的配置主要通过Fi

2021-01-23 09:44:18 56

原创 44-类库使用案例分析

类库使用案例分析StringBuffer使用  定义一个StringBuffer类对象,然后通过append()方法向对象中添加26个小写字母,要求每次只添加一次,共添加26次,然后按照逆序的方式输出,并且可以删除前五个字符;本操作主要是训练StringBuffer类中的处理方法,因为StringBuffer的主要特点是允许修改。public class String_Buffer_Use { public static void main(String[] args) { StringBu

2021-01-23 09:43:27 138

原创 43-比较器

比较器  所谓比较器指的就是大小关系的确定判断。比较器问题引出  如果要进行数组操作,肯定要使用java.util.Arrays的操作类完成,这个类里面提供绝大部分的数组操作支持,同时这个类中提供有对象数组的排序支持:public static void sort(Object[] a);实现对象数组排序import java.util.Arrays;public class Comparable_Study { public static void main(String[] args)

2021-01-23 09:42:22 94

原创 42-开发支持类库

开发支持类库UUID类  UUID是一种生成无重复字符串的一种程序类,这种程序类的主要功能是根据时间戳实现一个自动的无重复的字符串定义。import java.util.UUID;public class Uuid_study { public static void main(String[] args) { System.out.println(UUID.randomUUID()); }}  一般在获取UUID是往往都是随机生成一个内容,随意可以通过如下方式获取:获取UUID对

2021-01-23 09:38:05 74

原创 41-国际化程序实现

国际化程序实现  所谓的国际化程序指的是同一个程序代码可以根据不同的国家实现不同的语言描述,但是程序处理的核心业务是相同的。国际化程序实现原理  通过分析可以发现,要想实现国际化程序开发,那么要解决的问题就在以下两点:如何定义保存文字的文件信息如何根据不同的区域语言编码读取指定的资源信息Locale类  通过分析可以发现,要想实现国际化程序开发,那么首先要解决的就是不同国家的区域和语言的编码问题,在java.util中提供有一个专门描述区域和语言编码的类:Locale类。主要使用Loca

2021-01-23 09:33:58 198 2

原创 40-正则表达式

正则表达式  通过一系列分析发现String是一个非常万能的类型,因为String不仅仅可以支持字符串的处理操作,也支持有向各个数据类型的转换支持,所以在项目开发中,只要是用户输入的信息基本上都用String表示。于是再向其他数据类型转换时,为了保证转换的正确性,需要对其进行复杂的验证处理,如果只是单纯的依靠String类中的方法是非常麻烦的。认识正则表达式  假设有一个字符串,要求判断是否由数字组成,如果由数字组成,则将其变为数字进行乘法计算。字符串转数字public class RegexSt

2020-12-22 21:38:16 288 2

原创 39-日期操作类

日期操作类  从整体Java来讲一直在强调简单Java类的主要涉及其来自于数据表的结构,那么在数据表的结构里面常用的类型:数字、字符串、日期。Date日期处理类  在Java中提供java.util.Date的类,这个类直接实例化就可以获取当前的日期时间。获取当前日期时间import java.util.Date;public class DateStudy { public static void main(String[] args) { Date date = new Date()

2020-12-22 21:36:05 57

原创 38-数字操作类

数字操作类  程序就是一个数学的处理过程,所以Java本身也提供有相应的数字处理的类库支持。Math数学计算类  Math类的主要功能是进行数学计算的操作类,提供有基础的计算公式操作。这个类的构造方法被私有化了,而且该类之中提供的所有方法都是static方法,即这些方法都可以通过类名称直接调用。Math.abs(a);Math.max(a,b);Math.log(a);Math.round(a);Math.pow(a,b); &emsp虽然Math里面提供有四舍五入的处理方法,

2020-12-22 21:35:29 69

原创 37-Java基础类库

Java基础类库StringBuffer类  String类是在所有项目开发中一定会使用到的一个功能类,并且这个类有如下特点:每一个字符串的常量都属于一个String类的匿名对象,并且不可更改;String有两个常量池:静态常量池、运行时常量池;String类对象实例化建议使用直接赋值的形式完成,这样可以直接将对象保存在对象池中以便下次重用;  虽然String类很好使用,但是认真思考也会发现其最大的弊端:内容不允许修改,所以为了解决此问题专门提供StringBuffer类,可以实现字符串内

2020-12-22 21:34:09 72

原创 36-多线程综合案例

多线程综合实例  数字加减【题目】设计四个线程对象,两个线程执行减操作,两个线程执行加操作。  class Resource{ //操作资源 private int num = 0; //进行加减操作的数据 private boolean flag = true; //加减切换, //flag=true 表示可以进行加法,不能进行减法 public synchronized void add() throws Exception { while(this.flag == fals

2020-12-22 21:30:59 77

原创 35-多线程深入话题

多线程深入话题优雅的停止线程  多线程操作中如果要启动多线程肯定使用Thread类中的start()方法,而对于多线程需要进行停止处理,Thread类原本提供有stop()方法,但是从JDK1.2开始已经废除,除了stop()之外,还有几个方法如停止多线程:public void stop();销毁多线程:public void destory();挂起线程(暂停执行):public final void suspend();恢复挂起的线程执行:public final void resunm

2020-12-22 21:30:24 101

原创 34-综合实战:“生产者-消费者模型”

综合实战:“生产者-消费者模型”  在多线程开发中最著名的案例就是生产者-消费者模型,该操作的主要流程如下:生产者负责信息内容的生产每当生产者完成一项完整的信息之后消费者要从这里面取走信息如果生产者没有生产完没有生产完成则消费者要等待它生产完成,如果消费者还没有对信息进行消费,则生产者应等待消费者完成信息消费后在进行生产。生产者与消费者基本程序模型  可将生产者和消费者定义为两个独立的线程类对象,但是对于现在生产的数据可以使用如下组成:数据一:title = lyz、content=无敌

2020-12-22 21:29:01 145

原创 33-线程同步与死锁

线程的同步与死锁  在多线程的处理之中,可以利用Runnable描述多个线程操作的资源,而Thread描述每一个线程对象,于是当多个线程访问同一资源的时候如果处理不当就会产生数据的错误操作。同步问题引出编写一个简单的卖票程序,创建若干个线程对象实现卖票的处理操作。class MyThreadTic implements Runnable{ private int ticket = 10; //总票数 @Override public void run() { // TODO Auto-g

2020-12-21 09:40:22 51

原创 32-线程常用操作方法

线程常用操作方法多线程主要操作方法都在Thread类中定义。线程的命名和取得  多线程的运行状态是不确定的,在程序开发中为了可以渠道一些需要使用的线程,就需要线程的名字来进行操作,所以线程的名字是一个至关重要的概念,在Thread类中提供有线程名称的处理。构造方法:public Thread(Runnable target, String name);设置名字:public final void setName(String name);取得名字:public final getName();

2020-12-21 09:38:09 178

原创 31-Java多线程编程

Java多线程编程在Java中最大的特点是支持多线程的开发,所以在整个Java技术中,如果不能对多线程的概念有一个全面细致的了解,则在项目设计过程中尤其是并发访问的过程中出现严重的技术缺陷。进程与线程如果要理解线程,那么首先要理解进程的概念,在传统DOS时代,其本身特征:若出现病毒,那么所有程序无法执行,因为DOS采用的是单进程处理。而单进程处理的最大特点:在同一时间段只允许一个程序执行。Windows开启了多进程设计,表示一个时间段上可以同时运行多个程序,这些程序会进行资源的轮流抢占。在同一时间段

2020-12-21 09:36:19 70

原创 30-Eclipse开发工具

Eclipse开发工具Eclipse是一个开源组织,以推广Java标准以及IDE为主。Eclipse简介使用JDT开发Java程序JRE配置多个JDK情况下,需要手动处理。完成的项目目录src:保存所有*.java文件bin:保存所有编译后的*.class文件,这些文件自动编译处理;程序修改为UTF-8编码;快捷键:CTRL+1:代码纠正提示;ALT+/:代码提示;CTRL+SHIFT+↓:复制当前行;CTRL+/:单行注释;CTRL+SHIFT+/:多行注释;CTRL

2020-12-21 09:33:43 70

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除