
Java
主要记录java基础知识和进阶知识,以及自己遇到的一些问题
zhangvalue
在奋进的路上,大家都是独行者!
展开
-
Java代码实现PDF添加水印
Java代码实现PDF添加文字水印原创 2022-07-03 11:15:00 · 1749 阅读 · 0 评论 -
MultipartFile文件直接通过数据流的方式上传文件到HDFS
MultipartFile文件通过数据流的方式上传文件到HDFS要求文件不能经过缓存落盘,直接数据流的方式上传文件到hdfs最后记得flush一下/** * 文件流直接上传至HDFS * * @param srcFile 上传文件源文件, * @param destPath fs的目标路径 */ public void upoldFileToHDFS(MultipartFile srcFile, String destPath)原创 2022-02-18 20:44:55 · 1004 阅读 · 0 评论 -
JAVA 通过数据流的方式上传文件到HDFS
JAVA 通过数据流的方式上传文件到HDFS源代码/** * @ Author zhangsf * @CreateTime 2022/2/18 - 6:18 PM */import java.io.FileInputStream;import java.io.FileOutputStream;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FSDataInputStream;import o原创 2022-02-18 18:34:31 · 3924 阅读 · 0 评论 -
mybatis中的#{}和${}区别
Mybatis 的Mapper.xml语句中parameterType向SQL语句传参有两种方式:#{}和KaTeX parse error: Expected 'EOF', got '#' at position 13: {}。我们经常使用的是#̲{},一般解说是因为这种方式可…时,就是把${para}替换成变量的值。使用#{para}可以有效的防止SQL注入,提高系统安全性#{para}是预编译处理(PreparedStatement)范畴的;将传入的数据都当成一个字符串,会对自动传入的数据加一原创 2021-01-11 16:28:22 · 320 阅读 · 0 评论 -
Java如何向数组里添加元素
向数组里添加一个元素怎么添加,一般数组是不能添加元素的,因为数组在初始化时就已定好长度了,不能改变长度。比如: String[] str = new String[5]; System.out.println(Arrays.toString(str)); String[] str2 = new String[]{"a", "b"}; System.out.println(Arrays.toString(str2)); Stri原创 2021-01-08 17:11:59 · 107544 阅读 · 2 评论 -
win10安装了多个版本的JDK如何切换
将环境变量Path路径中的%JAVA_HOME%\bin值移到最前面原创 2020-11-05 14:50:34 · 390 阅读 · 0 评论 -
Oracle官网 账号及密码
Oracle Password:Oracle123原创 2020-11-04 16:59:51 · 3681 阅读 · 0 评论 -
Java多态实现的必要条件
多态分为编译时多态和运行时多态。其中编辑时多态是静态的,主要是指方法的重载,它是根据参数列表的不同来区分不同的函数,通过编辑之后会变成两个不同的函数。而运行时多态是动态的,它是通过动态绑定来实现的,也就是我们所说的多态性。在 java 面向对象中,Java 主要采用运行时多态,实现的必要条件为(AC)A.要有继承B.要有重载C.要有父类引用指向子类对象(向上转型)D.要有包重载与重写是Java 多态性的不同表现。 重写是父类与子类之间多态性的表现,在运行时起作用(动态多态性,...原创 2020-09-30 21:17:44 · 5334 阅读 · 0 评论 -
Java的构造方法不能被重写
Java的构造方法不能被重写但是可以被重载首先需要了解一下Java中方法的重写和重载的区别重载(Overload)是让类以统一的方式处理不同类型数据的一种手段,实质表现就是多个具有不同的参数个数或者类型的同名函数(返回值类型可随意,不能以返回类型作为重载函数的区分标准)同时存在于同一个类中,是一个类中多态性的一种表现(调用方法时通过传递不同参数个数和参数类型来决定具体使用哪个方法的多态性)重写(Override)是父类与子类之间的多态性,实质是对父类的函数进行重新定义,如果在子类中定义原创 2020-09-30 20:31:57 · 6481 阅读 · 1 评论 -
Java自定义类数组的初始化
Java自定义类数组的初始化先创建一个A类型public class A { private int id; public A() { } public A(int id) { this.id = id; } public int getId() { return id; } public void setId(int id) { this.id = id; }原创 2020-09-29 17:40:07 · 1678 阅读 · 0 评论 -
Springmvc页面跳转触发指定页面中指定按钮
在进行sprigmvc的页面展示的时候,点击按钮跳转到指定页面并触发指定按钮消息展示function showMsg(e){ e.prevenDefault(); var tr =$(e.target).closest('tr'); var data=this.dataItem(tr); //...展示细节 //页面展示的时候将sessionid的值赋值给点击按钮的sessionid //给id为btnjump的按钮赋值 $("btnjump").attr('sessionid',d原创 2020-09-28 16:37:55 · 982 阅读 · 0 评论 -
Java中添加日期
需要添加特定格式的时间格式public class DateTest { public static void main(String[] args) { Date date = new Date(); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dateTime=dateFormat.format(date); ...原创 2020-09-25 08:30:48 · 695 阅读 · 0 评论 -
MyBatis中转义字符
MyBatis中转义字符(大于,小于,大于等于,小于等于等)符号 小于 小于等于 大于 大于等于 和 单引号 双引号 原符号 < <= > >= & ’ " 替换符号 < <= > >= & ' " ...原创 2020-09-14 14:39:09 · 441 阅读 · 0 评论 -
实现单点登录Controller跳转到外部链接新页面打开
在controller中跳转到外部链接的时候,新的需求需要在新的页面打开。在jsp页面相应位置加入代码:target="_black",如<a href="/ap/ssoDSN?id=${ap.id}" target="_black">${ap.title}</a>第一次点击的时候确实起到了作用,跳转成功的新页面确实在新窗口中打开了;但第二次点击另外的连接时,会将第一次生成的新窗口覆盖了,并没有新生成第三个新窗口解决办法:使用js中的window.open.原创 2020-09-08 10:55:30 · 2000 阅读 · 0 评论 -
实现单点登录Controller跳转到外部链接
在进行单点登录的时候,需要调整到另外一个系统拼接好了相关的参数的urlreturn new ModelAndView(new RedirectView("https://zhangvalue.blog.youkuaiyun.com/")); 用了这个方法之后,方法的返回值也会变成model,实现跳转...原创 2020-09-08 09:57:20 · 1250 阅读 · 0 评论 -
logger.info占位符的使用
logger.info()其中 {}表示占位符 logger.info("from:{},to:{},amount:{}",from,to,amount);原创 2020-11-04 11:14:41 · 25629 阅读 · 0 评论 -
Java中的多态使用上转型
在Java中的三大属性:封装、继承、多态,其中多态存在的三个必要条件之一就是 使用父类引用指向子类对象即上转型当例子比较简单的时候,已经重写了父类的方法此时仍然使用上转型来调用方法还不如直接使用本对象来实例化对象调用方法简洁,这样只是一种普通的方法并没有用到多态。多态的设计是对于整体考虑涉及到的是一个Java编程思想,推崇面向接口面向父类编程。通过接口或者父类的方法来调用实现类或子类的方法。p.base();//子类没有对应的方法(实际上子类已经继承了父类的base方法),直接调用父类的b原创 2020-05-21 23:09:32 · 552 阅读 · 0 评论 -
Java Design An ATM
Design An ATM其中的封装体现在了对于user类的基本属性进行封装为一个对象,并且可以通过get方法来获取相关属性的值继承体现在了user类继承了BaseOperation类,继承其中的三个方法,并可以对基类中的三个方法进行重写多态体现在User类在继承BaseOperation类并重写了登录的方法(具体场景可以假设是不同的银行的登录时对于超时的判定不同)并且在最终测试的时候,使用上转型的形式来具体进行登录...原创 2020-05-21 22:44:14 · 335 阅读 · 0 评论 -
Java 类变量和局部变量的区别
Java 类变量有默认值,可以不初始化;但局部变量没有默认值,必须要初始化先看下面这道选择题(选择B)下面有关 java 实例变量 , 局部变量 , 类变量和 final 变量的说法,错误的是? ( )A.实例变量指的是类中定义的变量,即类成员变量,如果没有初始化,会有默认值B.局部变量指的是在方法中定义的变量,如果没有初始化,会有默认值 ...原创 2020-02-23 12:20:17 · 1109 阅读 · 0 评论 -
Java开发工程师笔试试题(附带答案)
Java开发工程师笔试试题(附带答案)最后附带优快云下载下载地址Java开发工程师笔试试题(包含答案)原创 2020-02-22 19:11:36 · 5977 阅读 · 0 评论 -
UML类图(Class Diagram)中类与类之间的关系
题目:在职学生是学生的一种类型,现设计了两个类,一个是学生类,一个是兼职类,这两个类之间的关系是?分析:题目的意思应该解读为为了实现在职学生这个类型,学生类和兼职类之间是一种什么关系要不然纯粹的问学生类和兼职类之间没有相关性解答:关系应该是继承关系,在职学生类是由学生类通过实现了兼职类的接口实现的具体关系为继承关系中的实现关系可能分析错误,因为没有找到标准答案,记...原创 2020-02-09 20:20:13 · 3857 阅读 · 0 评论 -
JAVA语言-判断扑克是否为顺子
JAVA语言-判断扑克是否为顺子原创 2019-12-02 22:52:25 · 929 阅读 · 0 评论 -
Java-优雅地关闭资源 try-with-resource
Java-优雅地关闭资源 try-with-resource在Java编程过程中,如果打开了外部资源(文件、数据库连接、网络连接等),我们必须在这些外部资源使用完毕后,手动关闭它们。因为外部资源不由JVM管理,无法享用JVM的垃圾回收机制,如果我们不在编程时确保在正确的时机关闭外部资源,就会导致外部资源泄露,紧接着就会出现文件被异常占用,数据库连接过多导致连接池溢出等诸多很严重的问题。为了...原创 2019-11-27 13:20:28 · 1474 阅读 · 0 评论 -
JAVA实现-URL短网址生成算法
现在大部分微博、手机邮件提醒等地方都在使用短网址服务下面是一种原理:1)26个大写字母 26小写字母,10个数字,随机生成6个然后插入数据库对应一个id,2)短连接跳转的时候,根据字符串查询到对应id,即可实现相应的跳转62种字符组合成6位字符,62^6=568亿个组合数量,重复的概率是很小的短链接的好处1、内容需要;2、用户友好;3、便于管理。为什么要这样做的,原因有...原创 2019-11-22 18:31:50 · 8290 阅读 · 0 评论 -
Caused by: java.lang.IllegalArgumentException:LoggerFactory is not a Logback LoggerContext but Logba
启动springboot报如下错误:Caused by: java.lang.IllegalArgumentException: LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Logback or the competing implementation (...原创 2019-11-21 16:47:22 · 3031 阅读 · 0 评论 -
Java爬取指定知乎问题图片
Java爬取指定知乎问题图片Java爬取指定知乎问题图片初衷:在知乎上有的楼主们分享了那么多图片,比如壁纸,如果想要保存还需要一个一个保存的很麻烦,所以整一个Java爬取指定的知乎问题的图片输入选项:需要输入的为需要下载的问题的questionID输出选项:最终的将指定的questionID的图片下载到指定的文件夹效果图具体思路1.使用Maven管理2.使用Jsoup来解...原创 2019-11-14 11:30:18 · 306 阅读 · 1 评论 -
正则表达式-匹配A和B之间字符串
需求:在匹配到 union的时候检测后面是不是union all^是正则表达式匹配字符串开始位置$是正则表达式匹配字符串结束位置* (?!all) 的意思是 , 不匹配all* 那么((?!all).)* 的意思就是匹配 不含all的字符(?!all)跟 任意字符.的组合,出现任何次 * ((?!all).)* 的结果就是 匹配了不包含all的字符串检验如下:im...原创 2019-10-28 18:35:59 · 15231 阅读 · 2 评论 -
@GetMapping和@RequestMapping的区别
区别如下下:@GetMapping用于将HTTP get请求映射到特定处理程序的方法注解具体来说,@GetMapping是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写。@PostMapping用于将HTTP post请求映射到特定处理程序的方法注解具体来说,@PostMapping是一个组合注解,是@RequestMap...原创 2019-10-28 11:56:03 · 24322 阅读 · 0 评论 -
记录win10装jdk
建立java文件夹里面分别建立jdk和jre文件夹按装好了找到环境变量在其中系统变量中增加JAVA_HOME变量,并将安装的jdk的路径放入再在Path中添加 %JAVA_HOME%\bin最终的系统变量如下win+r打开终端javacjavaJava -version检验...原创 2019-10-14 14:09:30 · 170 阅读 · 0 评论 -
Java 的类加载机制
01、字节码计算机只认识 0 和 1,所以任何语言编写的程序都需要编译成机器码才能被计算机理解,然后执行,Java 也不例外。在不同平台(Windows、Linux)上运行的 Java 虚拟机(JVM)——负责载入和执行 Java 编译后的字节码。通过 源码.java->(编译器)字节码.class->JVM02、类加载过程Java 的类加载过程可以分为 5 个阶段...原创 2019-10-07 20:10:01 · 215 阅读 · 1 评论 -
判断两个单链表是否相交
问题:给两个单链表h1、h2,如何判断两个单链表是否相交?若相交,则找出第一个相交的节点。解题思路:首先单链表的特点是,每一个结点都是由两个域 一个是data域、一个是 next指针域 相交的情况就是两条链表中有结点相同(即data域相等、next指针域也相等),而每一个结点只有一个next域, 所以一旦 ...原创 2019-09-30 20:50:11 · 1775 阅读 · 0 评论 -
为什么HashMap使用红黑树而不使用AVL树
在Jdk1.8版本后,Java对HashMap做了改进,在链表长度大于8的时候,将后面的数据由链表改为了存在红黑树中,以加快检索速度。有疑问为什么是使用红黑树而不是AVL树,AVL树是完全平衡二叉树阿?最主要的一点是:在CurrentHashMap中是加锁了的,实际上是读写锁,如果写冲突就会等待,如果插入时间过长必然等待时间更长,而红黑树相对AVL树他的插入更快!问题:为什么不使...原创 2019-09-26 23:24:59 · 5405 阅读 · 0 评论 -
红黑树
一、红黑树的百科定义为:红黑树(Red Black Tree) 是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。它是在1972年由Rudolf Bayer发明的,当时被称为平衡二叉B树(symmetric binary B-trees)。后来,在1978年被 Leo J. Guibas 和 Robert Sedgewick 修改为如今的"红黑树"。...原创 2019-09-30 18:24:00 · 920 阅读 · 0 评论 -
可重入锁 VS 非可重入锁
可重入锁又名递归锁,是指在同一个线程在外层方法获取锁的时候,再进入该线程的内层方法会自动获取锁(前提锁对象得是同一个对象或者class),不会因为之前已经获取过还没释放而阻塞。Java中ReentrantLock和synchronized都是可重入锁,可重入锁的一个优点是可一定程度避免死锁。之前我们说过ReentrantLock和synchronized都是重入锁,那么我们通过重入锁Reent...原创 2019-09-24 11:06:19 · 567 阅读 · 0 评论 -
Java Map按key排序和按value排序
一、Map的初始化 Map phone = new HashMap(); phone.put("zhang001", 75); phone.put("value001", 90); phone.put("zhang002", 80); phone.put("zhang003", 85);二、按照key进行排序...原创 2019-09-23 23:10:26 · 1632 阅读 · 0 评论 -
Synchronized关键字的四种使用场景
Synchronized关键字的四种使用场景:①、修饰一个方法②、修饰代码块③、修饰静态方法④、修饰一个类1.修饰一个方法synchronized 修饰一个方法很简单,就是在方法的前面加synchronized,例如:public synchronized void method(){ // todo}在定义接口方法时不能使用synchroniz...原创 2019-09-23 16:46:56 · 2309 阅读 · 0 评论 -
Java中多个线程如何对共享资源互斥的访问
Java提供了两种锁机制来控制多个线程对共享资源的互斥访问:一个是JVM实现的synchronized二个是JDK实现的ReentrantLock一、把代码块声明为synchronized,那么该代码具有原子性(atomicity)和可见性(visibility),原子性意味着一个线程一次只能执行由一个指定监控对象(lock)保护的代码,从而防止多个线程在更新共享状态时相互冲突,可见...原创 2019-09-23 17:03:14 · 1341 阅读 · 0 评论 -
重写equals方法就必须重写hashCode方法
一、如果不被重写(原生Object)的hashCode和equals是什么样的? 不被重写(原生)的hashCode值是根据内存地址换算出来的一个值。这个方法返回对象的散列码,返回值是int类型的散列码。对象的散列码是为了更好的支持基于哈希机制的Java集合类,例如 Hashtable, HashMap, HashSet 等。Object.hashCode的通用约定:①、在一...原创 2019-09-22 11:36:30 · 810 阅读 · 0 评论 -
Java中的线程池
java中线程池的作用:目的是减小对象的创建和注销的开支,减轻JVM的压力。1)避免线程的创建和销毁带来的性能开销。2)避免大量的线程间因互相抢占系统资源导致的阻塞现象。3}能够对线程进行简单的管理并提供定时执行、间隔执行等功能。主要有四个:ThreadPool–>线程池管理器:用于创建并管理线程池(创建线程池,销毁线程池,添加新任务);PoolWorker–&g...原创 2019-09-21 09:59:27 · 191 阅读 · 0 评论 -
Java中多线程实现的方式
在Java中多线程实现的方式有①、继承Thread类②、实现Runnable接口(常用,优点多)③、实现Callable接口比较:实现Runnable和Callable接口的类只能当作一个可以在线程中运行的target,不是真正意义上的线程,最后还需要Thread来调用。在Runnable中,实现类的run方法作为线程的执行体,实际的线程对象依然是Thread实例。Calla...原创 2019-09-21 09:36:14 · 867 阅读 · 0 评论