java
梧桐深院
这个作者很懒,什么都没留下…
展开
-
java 静态代理 动态代理(jdk、cglib两种方式)
静态代理,jdk动态代理,cglib动态代理原创 2022-07-16 17:57:06 · 603 阅读 · 0 评论 -
idea运行控制台中文乱码,可能是java18的错
idea运行java项目,控制台中文乱码,可能是java版本的原因原创 2022-07-16 17:50:07 · 3937 阅读 · 1 评论 -
解决:Cannot find any provider supporting SM4/CBC/PKCS5Padding
引入包import org.bouncycastle.jce.provider.BouncyCastleProvider;在类中加入如下代码:static{ Security.addProvider(new BouncyCastleProvider());}效果如下:原创 2021-12-23 13:53:12 · 4263 阅读 · 0 评论 -
Maven排除依赖exclusion用法
Maven排除依赖exclusion用法假设有如下依赖:A->B->C(1.0)项目B依赖了项目C的1.0版本,由于项目C比较活跃,此时已经升级了好几个版本,比如已经升级到了4.0版本。由于依赖的传递性,根据此依赖链:A->B->C(1.0),A项目默认会加载C的1.0版本,如何使用C的4.0版本呢?我们在对B的依赖声明中将C排除,然后显示的声明依赖C的4.0版本。pom配置如下:<dependencies> <dependency>原创 2021-08-30 22:55:14 · 5157 阅读 · 2 评论 -
Maven依赖调解(依赖了一个包的不同版本,哪个生效)
Maven依赖调解(依赖了一个包的不同版本,哪个生效)如果因为某种原因,使得项目依赖了同一个包的不同版本,maven会解析哪个版本呢?一、 路径最短优先假设有如下依赖A->B->C->X(1.0),A依赖B,B依赖C,C依赖X的1.0版本A->D->X(2.0),A依赖D,D依赖X的2.0版本那么A最终会依赖X的哪个版本呢?因为Maven有路径最短优先原则,所以最终会以A->D->X(2.0)这条路径解析,依赖X的2.0版本。二、 第一声明者优先然而原创 2021-08-30 22:14:42 · 2213 阅读 · 0 评论 -
idea+maven+maven-shade-plugin打包可执行jar
idea+maven+maven-shade-plugin打包可执行jarMaven打包可执行jar包,需要借助 maven-shade-plugin 插件。添加插件在pom文件中 节点下增加如下配置:<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId>原创 2021-08-29 15:34:44 · 1276 阅读 · 0 评论 -
idea+Maven项目单元测试入门
idea+Maven项目单元测试入门单元测试需要用到junit框架,框架的详细用法可参考官网:https://junit.org/本文仅仅是入门指导。第一步:创建一个maven项目File->New->Project…选择maven类型我这里创建的项目名叫demo8第二步:编写项目源码maven项目的规范,项目源码应该在src/main/java目录下,一般还会加一层groupId+artifactId组成的包路径,比如我这边就是org.example.demo8第三步原创 2021-08-29 12:40:35 · 4094 阅读 · 0 评论 -
idea+maven发布包到本地仓库
idea+maven发布包到本地仓库第一步:创建一个新项目File->New->Project…选maven类型,直接Next给项目起个名字,GroupId ArtifactId Version这些根据实际情况填写,如果这样说,你还不懂,那证明你是新手中的新手,暂时保持默认即可。建好后项目结构如下:第二步:编写源码为了让项目看着规范写,我新建了org.example.demo7目录,把源码放在该目录下,结果如下第三步:发布到本地仓库修改pom.xml文件,加入dis原创 2021-08-26 14:37:01 · 3614 阅读 · 0 评论 -
idea配置全局maven
File->New Projects Settings->Settings for New Projects…打开设置界面后,搜索maven,对应设置好,再打开新的项目就是我们想要的配置,而不是默认配置了。原创 2021-08-23 22:41:56 · 252 阅读 · 0 评论 -
java 内部类
内部类:类内部的类java内部类按位置可分为:成员内部类(成员位置)局部内部类(成员方法内部)特点:内部类可以直接访问外部类的成员,包括私有,外部类访问内部类须创建对象在外部如何直接访问内部类的成员格式: 外部类名.内部类名 对象名 = 外部类对象.内部类对象 outer.inner oi = new outer().new in原创 2016-04-04 21:47:28 · 231 阅读 · 0 评论 -
java语言基础(8)——数据类型转换(默认转换和强制转换)
类型转换原创 2017-02-27 22:33:25 · 8227 阅读 · 1 评论 -
java语言基础(9)——变量相加和常量相加的区别
class TypeConvert{ public static void main(String[] args){ byte a = 1; byte b = 2; byte c; // c = a+b; // ① c = 1+2; // ② System.out.println(c); }}分析在①c=a+b这一行中,a和b都是byte类型,在运原创 2017-02-27 22:47:30 · 383 阅读 · 0 评论 -
java语言基础(1)——关键字的概述
关键字概述:被java语言赋予特定含义的单词特点:全部是小写字母保留关键字:某些单词目前并不使用,但是作为保留关键字存在,用户也不能随意使用,比如goto 、const等汇总:class 声明类时使用interface 定义接口byte 字节数据类型short 数据类型中的一种 int 数字类型中的一种 (整型)long 数据类型中的一种f原创 2017-02-19 16:52:26 · 324 阅读 · 0 评论 -
java语言基础(2)——标识符的概述和组成规则
标识符概述:给 类 接口 方法 变量 等起名字时的字符序列组成规则:英文大小写 数字 $ 和 _注意事项:不能以数字开头 不能是java中的关键字 区分大小写命名规范以及常见的命名规则:1 见名知意2 包名 全部小写 hello3 类或接口名 一个单词:单词首写字母大写 Hello多个单词:每个单词首原创 2017-02-19 17:20:07 · 644 阅读 · 0 评论 -
java语言基础(3)——注释概述及其分类
概述:用于解释说明程序的文字,不会被编译执行,不影响程序执行分类及格式:注释可出现在文件的任何部分单行注释 // 我是单行注释多行注释 /*多行注释*/文档注释 /** */ 被javadoc工具解析生成一个说明书原创 2017-02-19 17:50:24 · 489 阅读 · 0 评论 -
java2的三个版本
java2的三个版本参考:http://baike.baidu.com/view/3792776.htm表1 J2EE、J2SE和J2ME的应用范围J2EEJ2SEJ2ME用于高性能、大内存服务器设备。适合分布式的、多用户的、企业级应用系统运转的平台,以J2SE为基础,增加了处理服务器转载 2016-03-12 21:06:29 · 733 阅读 · 0 评论 -
JVM JRE JDK 三者的关系
JVM (Java Virtual Machine) JAVA 虚拟机负责 把 源文件 ----->编译器----->字节码文件------>解释器-----> 可执行程序 xxx.java xxx.classjava 的跨平台是基于JVM的跨平台原创 2016-03-12 21:35:17 · 388 阅读 · 0 评论 -
官网下载JDK教程
第一步、打开http://www.oracle.com/第二步、第三步、第四步、原创 2016-03-13 15:30:52 · 689 阅读 · 0 评论 -
JDK 6 目录结构介绍以及JDK中的工具研究
原 http://blog.csdn.net/kindazrael/article/details/7270673要想深入了解Java必须对JDK的组成, 本文对JDK6里的目录做了基本的介绍,主要还是讲解 了下JDK里的各种可执行程序或工具的用途 Java(TM) 有两个平台 JRE 运行平台,包括Java虚拟机,运行类库,java应用程序装载器。 JR转载 2016-03-13 15:42:16 · 333 阅读 · 0 评论 -
java 类文件编译注意事项
一、扩展名隐藏编译失败二、javac + fileName.java java + className ( 不加扩展名)三、编译结果文件名 helloworld.java类 class helloworld{ }编译后类文件 helloworld.class文件名 helloworld.java类原创 2016-03-13 15:55:58 · 396 阅读 · 0 评论 -
Java开发环境搭建JAVA_HOME PATH 配置
第一步:安装JDK 官网下载与自己电脑对应的版本 http://www.oracle.com第二步:配置环境变量JAVA_HOME 配置JDK安装路径PATH 配置JDK命令文件的位置CLASSPATH 配置类库文件的位置原创 2016-03-13 17:01:22 · 605 阅读 · 0 评论 -
java语言基础(4)——常量的概述和使用
常量的概述:在程序运行的过程中,其值不可改变分类:1 字面值常量字符串常量 用双引号括起来的内容整数常量 所有整数小数常量 所有小数字符常量 用单引号括起来的内容,只能是单个字符布尔常量 true false空常量 null2 自定义常量定义方法有好多,比如下面就是其中一种定义方式class HelloWorld{原创 2017-02-19 21:21:33 · 283 阅读 · 0 评论 -
java语言基础(10)——类型强制转换时的数据溢出计算
我们定义 byte=130;这在编译中会报错。原创 2017-02-28 22:11:31 · 1087 阅读 · 0 评论 -
java语言基础(11)——字符数据与字符串数据参与运算
在java中,单引号里的内容是字符,且只能是单个字符,比如 'a' 'b' 而不能是 'ab'。双引号里的内容是字符串,可以有多个内容,如 "hello world"。字符参与运算:class CharPlus{ public static void main(String[] args){ System.out.println('a'); // a System.o原创 2017-02-28 22:47:53 · 633 阅读 · 0 评论 -
java语言基础(7)——数据类型、变量的定义和使用
数据类型:java是强类型语言,对于每种数据都定义了明确的不同数据类型,在内存中分配了不同的大小空间。基本数据类型 数值型 整数 byte short int long 浮点数 float double 字符型 char 布尔型 boolean引用数据类型 类 class 接口 interface 数组 [ ]各原创 2017-02-26 16:07:43 · 1278 阅读 · 0 评论 -
java语言基础(5)——进制,进制转换以及不同进制的数据的书写方式
进制概述:进制就是进位制,是人们规定的一种进位方法,对于任何一种进制,比如X进制,就表示第一位置上的数运算时逢X进一位。二进制就是逢2进一,依此类推。进制之间的关系:计算机的电子元件只能表示两种状态,我们用 0 和 1 表示,由于生活中,我们的数据各种个样,数字,字母,标点符号,还有众多汉字,所以只有0和1是无法表示的。所以我们就用8个这样的0和1表示一个数据,也是计算原创 2017-02-24 22:12:50 · 1717 阅读 · 0 评论 -
java语言基础(6)——原码反码补码以及二进制的负数运算
在计算机内部,对数据运算时,都是操作的数据的补码。但补码又跟原码反码有着密切的关系,所以我们就有必要对原码反码补码进行一次清晰的梳理。原码:就是二进制定点表示法,即最高位为符号位,0表示正,1表示负,其余位表示数值的大小。反码:正数的反码与其原码相同;负数的反码对其原码逐位取反,但符号位除外。补码:正数的补码与其原码相同,负数的补码是在其原创 2017-02-26 10:26:30 · 1588 阅读 · 0 评论 -
java版——实现两个数值交换的四种方式
实现两个数值交换,最常用的莫过于中间变量法,那是不是还有别的方式呢。请看下文:class Operator{ // 实现两个数值交换的多种方式 public static void main(String[] args){ // 方式1 中间变量法 int a = 10; int b = 20; int c = a; a = b; b = c原创 2017-03-05 10:38:18 · 5254 阅读 · 0 评论 -
java语言基础(13)——运算符基本用法(算数、赋值、比较、逻辑、位运算符)
算数运算符:+ - * / % ++ --class Operator{ public static void main(String[] args){ int x = 3; int y = 4; System.out.println(x+y); // 7 System.out.println(x-y); // -1 System.out.println(x*y原创 2017-03-05 11:12:18 · 758 阅读 · 0 评论 -
java语言基础(14)——键盘录入
实现键盘录入的步骤:1 导包 2创建键盘录入对象3通过对象获取数据// 1 导包import java.util.Scanner;class ScannerDemo{ public static void main(String[] args){ // 2 创建键盘录入对象 Scanner sc = new Scanner(System.in); // 3原创 2017-03-05 11:54:44 · 340 阅读 · 0 评论 -
java语言基础(15)——流程控制
流程控制语句分类:顺序结构,选择结构,循环结构顺序结构:按照代码原有的顺序依次执行选择结构:循环结构:原创 2017-03-08 22:49:20 · 351 阅读 · 0 评论 -
java语言基础(16)——java中break多重循环
java中,break关键字用于在switch中和循环中,中断程序的执行,如下:class BreakDemo{ public static void main(String[] args){ // 跳出单层循环 for(int x = 1;x<10;x++){ for(int y = 1;y<10;y++){ if(y==3){ break; }原创 2017-03-08 23:13:01 · 395 阅读 · 0 评论 -
java语言基础(20)——二维数组
二维数组原创 2017-03-20 22:29:07 · 344 阅读 · 0 评论 -
java语言基础(21)——面向对象(成员变量和局部变量的区别)
在面向对象的学习中,我们遇到了成员变量,所以有必要对比一下成员变量和局部变量的区别,从而加深记忆。区别:成员变量和局部变量的区别区别/类别成员变量局部变量书写位置类中,方法外部方法内部存放位置堆内存(随对象结束而结束)栈内存(用完就回收了)生命周期从对象的初始化到对象的结束从方法的调用到方法执行完毕原创 2017-03-21 22:33:58 · 312 阅读 · 0 评论 -
java语言基础(29)——javadoc工具生成类帮助文档
javadoc原创 2017-03-28 22:38:17 · 368 阅读 · 0 评论 -
java语言基础(22)——面向对象(匿名对象的使用)
当我们new一个对象的时候,一般都用一个变量来接收,在以后的代码中,我们都通过这个变量来调用对象的方法或属性。而当我们没有用变量接收的时候,就产生了一个匿名对象。例如:class Student{ String school = "北京大学"; public void doHomeWork(){ System.out.println("do homeWork"); }}原创 2017-03-21 23:17:25 · 357 阅读 · 0 评论 -
java语言基础(30)—— 代码块的划分及其作用
代码块:用{}包围的代码java中的代码块按其位置划分为四种:一 局部代码块 位置:局部位置(方法内部) 作用:限定变量的生命周期,尽早释放,节约内存 调用:调用其所在的方法时执行 举例:红色部分 class exampleDemo{ public void example(){ {原创 2016-03-31 21:33:14 · 4433 阅读 · 0 评论 -
java语言基础(17)——方法(类中的函数)的使用及重载
方法的概述:完成特定功能的代码块。格式:修饰符 返回值类型 方法名(参数类型 参数1,参数类型 参数2...){ 方法体语句; return 返回值; }原创 2017-03-13 20:57:50 · 283 阅读 · 0 评论 -
java语言基础(24)——构造方法
构造方法作用:给对象的数据进行初始化,如果没有传入具体的值,会给成员变量初始化默认值。特点:1 方法名与类名相同2 没有返回值类型,连void都没有3 没有具体的返回值4 如果没有给定构造方法,系统会提供一个默认的无参构造5 构造方法在new对象的时候会自动调用,而且支持重载,传不同的参数,会调用不同的构造。例如:class Student{ //原创 2017-03-23 23:19:57 · 255 阅读 · 0 评论 -
java语言基础(31)——面向对象(继承中的成员关系)
继承中成员变量之间的关系:就近原则class Father{ public int age = 30;}class Son extends Father{ int age = 3; public void showAge(){ int age = 2; System.out.println(age); // 2 默认是局部变量 System.out.pr原创 2017-03-30 23:15:39 · 364 阅读 · 0 评论