![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
m0_38063172
这个作者很懒,什么都没留下…
展开
-
在Spring-Boot中使用@Value注解注入集合类
我们在使用spring框架进行开发时,有时候需要在properties文件中配置集合内容并注入到代码中使用。本篇博客的目的就是给出一种可行的方式。1.注入通常来说,我们都使用@Value注解来注入properties文件中的内容,注入集合类时,我们也使用@Value来注入。properties文件中的内容如下:my.set=foo,barmy.list=foo,barmy.map={"foo": "bar"}分别是我们要注入的Set,List,Map中的内容。注入方式如下:@Value(原创 2020-09-20 18:44:04 · 5480 阅读 · 1 评论 -
锁机制及其实现--java并发包中的锁和redisson中的锁
前言在多线程环境中,多个线程访问同一块代码时,就会发生竞态条件(race condition),这意味着在某个时刻,我们无法确定到底是哪个线程在执行那块代码中的某个操作,也无法确定在那个操作之后,是不是同一个线程会继续执行下一个操作。这样带来的问题就是无法预测程序的行为,程序不会按照我们的期望运行,程序很容易出错甚至奔溃。在多线程环境中,我们需要一种机制来获得确定性,也就是一次共享代码块的完整...原创 2019-11-21 18:05:39 · 301 阅读 · 0 评论 -
Session和Cookie的区别
以前看过几篇别人讲Session和Cookie的区别的文章,但是大都给人一种语焉不详的感觉。本文从Tomcat自带的例子入手,讲一下Session和Cookie的区别,本文中Session指J2EE中的HttpSession接口,可参看源码;Cookie有两种含义,一种是指rfc6252中定义的一种HTTP头,另外一种是指J2EE中的Cookie接口。HttpSession接口这个接口是J2E...原创 2019-11-02 00:14:36 · 378 阅读 · 0 评论 -
java.io包和java.nio包
Java中I/O相关的两个包是java.io和java.nio,它们的最重要的区别就是java.io里面的类是面向流的(stream oriented),java.nio里面的类是面向缓存的(buffer oriented)。面向流意味着一次读取一个或者一些字节,然后处理这些字节,在读取和处理这些字节时当前线程是阻塞的,不能干其他事情。面向缓存意味着把一些字节读到缓存里面,选择了读取的字节之后当...原创 2018-11-26 17:00:49 · 4144 阅读 · 1 评论 -
Java中创建线程的两种方式
在Java中线程是Thread类的实例,有两个方式可以开新线程,分别对应Thread的两种构造方法:Thread()和Thread(Runnable target)。实现Runnable接口public class HelloRunnable implements Runnable { public void run() { System.out.println("H...原创 2018-11-26 17:16:29 · 176 阅读 · 0 评论 -
Java中的正则表达式
好久不用Java中的正则表达式,记得很多方法都在Matcher类里面,结果打开文档一脸懵逼,找不到一个合适的方法把原始字符串传进去,只好去谷歌上面找入门教程,发现Matcher类的对象是用原始字符串构造的,用Pattern的matcher(CharSequence input)方法来获得Matcher类的对象。后来发现文档里面有这么一句,不过是在Pattern的文档里面。A typical i...原创 2018-11-26 17:29:05 · 155 阅读 · 0 评论 -
Java中的类加载与类卸载
类加载Java中的代码都写在类里面,源代码(.java文件)经过编译后会变成字节码(.class文件),当Java应用程序运行时,JVM会加载要用到的类。负责类加载的是java.lang.ClassLoader的对象,ClassLoader的对象会根据类的binary name(不知道怎么翻译,二进制名?)来读取类的字节码,然后把这些字节码加载到JVM的方法区里,同时会在heap里面创建一个C...原创 2018-12-19 15:47:14 · 3515 阅读 · 1 评论 -
实现接口中的方法
今天有人在群里问了一道Java题目:我看了一下不知道答案,遂谷歌之。答案应该是D。知识点:concrete类,不知道怎么翻译,就是可以直接实例化的类,必须实现它实现的接口中所有的方法。抽象类,可以只实现部分它实现的接口中的方法,剩下的部分让它的concrete子类去实现。...原创 2018-12-19 10:51:43 · 2513 阅读 · 0 评论 -
Spring Boot中的@EnableWebMvc
学习Spring Security时,需要在Spring Boot的配置类里面注册自己编写的登录页面,但是发现在/resources/static/目录下面的静态文件找不到了,访问的话显示404。找了很久才知道了问题所在。Spring中对静态文件的加载在Spring中如果我们想通过URL访问静态资源,比如/resources/下的文件,通过/resources/**来访问,就需要在配置类中重写...原创 2019-01-24 16:41:33 · 527 阅读 · 0 评论 -
在spring boot测试中无法加载配置文件中的值
项目中有变量是配置在application.yml文件里面的,运行整个项目时没有问题,但是单独拿出来进行测试的话变量一直是空。@Configuration@ConfigurationProperties(prefix = "file")@Datapublic class CameraImageProperties { private String uploadDir; ...原创 2019-09-18 16:04:07 · 1396 阅读 · 2 评论 -
Java中复制字节流
因为InputStream只能进行一遍完整的读过程,之后里面就没有数据了,当我们需要读不止一次时,需要先复制出来。ByteArrayOutputStream baos = new ByteArrayOutputStream();byte[] buffer = new byte[1024];int readLen;try { while ((readLen = clientSocket.g...原创 2018-11-26 16:52:41 · 590 阅读 · 0 评论 -
Java I/O
emmmm,这篇文章的题目可能有点大了,以后会不断完善更新。基础I/OJava中和I/O相关的类都在java.io包里面(当然,还有java.nio),I/O的形式都是以流的形式进行的,大致的方法是读和写,对应的类(也是方向)是入和出,从入方向的流中读取数据时,其中所剩的数据越来越少,直至读完,所以一个流中只能进行一遍完整的读取过程。最常用的就是字节流和字符串流。字符串流所有字符串流相关...原创 2018-11-26 16:48:56 · 347 阅读 · 0 评论 -
Java中的静态和非静态(static,non-static)
今天看别人的代码时,发现自己对Java中的静态成员和非静态成员的理解不够,所以又去查了资料看了文档,把最新的认识总结在这里。运行Java应用程序时,在实际的代码运行之前的一个步骤是加载类,具体点说,在Java SE 8的JVM中,需要先把类加载到Metaspace。如果类中有静态成员,加载类时会在heap中为其分配空间,此空间是属于类的。类中的非静态成员(实例成员)是和类的对象绑定的,它们属于对...原创 2018-11-05 15:51:15 · 4296 阅读 · 0 评论 -
一些编程语言的命名约定
最近在写一个小的web项目练手,要用到不同的语言,感觉自己的命名有些乱,所以专门去搜了一下相应的一些约定,记录在此。Java:类名的所有单词的首字母大写,类名的词性是名词接口名的所有单词的首字母大写,接口名的词性是形容词方法名从第二个单词开始所有单词的首字母大写,第一个单词是动词变量名从第二个单词开始所有单词的首字母大写包名的所有字母小写常量的所有字母大写文件名需要和某个公共...原创 2018-10-23 16:49:00 · 859 阅读 · 0 评论 -
doGet()和doPost(),页面跳转中文乱码
这篇博文不是讲解这两个方法,只是记录一下遇到的一个问题。我有个接受表单数据的servlet,把代码写在了doGet里面,然后doPost里面写的是{doGet(request, response)},开始的时候没什么问题,我也没意识到这样写潜在的问题。后面用request.getRequestDispatcher转发到表示表单提交结果的HTML页面时一直中文乱码,网上查的方法也都不管用。然后想到...原创 2018-10-23 17:29:11 · 746 阅读 · 3 评论 -
JVM中的内存类型(数据区域)
Java一词狭义上指的是Java编程语言,广义上来说还包括Java平台。Java虚拟机作为一个平台来运行由Java源码编译成的.class文件,Java的跨平台性也是通过JVM来实现的。JVM之所以称之为虚拟机,就是因为JVM就像是运行在底层物理机上面的一台虚拟机,它的各个部分互相配合,完成了一个Java应用程序的运行。本文就简单地对JVM运行过程中的各个数据区域做一个介绍。JVM这个词语狭义...原创 2018-10-31 17:43:18 · 226 阅读 · 0 评论 -
Gradle入门
Gradle是一款构建基于JVM的项目的工具,除了Java,也支持Kotlin,Groovy和Scala等语言。Gradle的基本概念-task使用Gradle时,你想让Gradle做的事情就是task,比如编译:compileJava,打包:jar等等。在命令行输入task名称,Gradle就会执行相应的task。Gradle中的plugin在Gradle中,插件的作用是对某些task...原创 2018-11-02 23:39:47 · 114 阅读 · 0 评论 -
Java中的final关键字
Java中的final关键字修饰的项不可更改。具体来说就是final class不能被继承final 变量的值不能更改final方法不能被覆写。final修饰的变量值得多说两句,对于引用类型的变量,final的意思是声明变量时它指向哪个对象,它就要一直指向那个对象,那个对象变化与否都没关系。上代码:public class FinalDemo { public st...原创 2018-11-05 11:35:28 · 842 阅读 · 0 评论 -
Java中的访问控制修饰符
在Java中,访问控制修饰符决定了一个类是否可以使用其它类中的某个域或者调用其它类中的某个方法,访问控制修饰符有两种层级:top level,修饰类,有public和package-private(也就是没显式指定修饰符时的类型)member level,修饰类中的成员,有public,private,protected和package-private(也就是没显式指定修饰符时的类型)下...翻译 2018-11-05 14:56:00 · 1010 阅读 · 0 评论 -
java.lang.NoClassDefFoundError: Could not initialize class org.apache.jasper.el.ELContextImpl
需要在家里把一个小web项目收尾,但家里的电脑没有intellij,需要在命令行手动编译,嫌在命令行输入classpath麻烦,所以直接把servlet-api.jar和jsp-api.jar放到了%JAVA_HOME%\jre\lib\ext文件夹,编译时倒是方便了一点点,但是运行有些JSP时一直报文章标题这个错误,真烦,搜了一下,StackOverflow上面有人说这可能是因为类冲突导致的,在...原创 2018-10-21 11:20:01 · 8897 阅读 · 1 评论