![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
qq_34785454
这个作者很懒,什么都没留下…
展开
-
【记录】springboot使用@PropertySource读取资源文件的一些记录
几个月之前,领导给个需求,需要一个记录业务映射的资源文件,然后在代码中读取这个资源文件进行使用,将来不同的项目会对这个映射进行不同的修改。百度之后得到了使用@PropertySource来读取资源文件的方法,于是第一版代码出现:@Data@Configuration@PropertySource(value = {"classpath:mymapping.properties"}, enc...原创 2020-03-21 14:20:46 · 1055 阅读 · 0 评论 -
《深入理解java虚拟机》笔记:java内存模型JMM,volatile,java与线程
半个读书笔记,没什么含量。JMM:JMM围绕在并发过程中如何处理原子性,可见性和有序性三个特征来建立。java内存模型JMM与实际硬件模型有比较类似的地方:内存 => 高速缓存 => cpu主内存 => 工作内存 => 线程由于I/O速度与cpu速度差距过大,所以在二者之间加入一层与cpu速度相对接近的高速缓存。cpu将数据从内存读入高速缓存中,计算过后...原创 2019-03-21 18:32:41 · 145 阅读 · 0 评论 -
CountDownLatch与join
CountDownLatch是《java并发编程实战》这本书里讲的同步工具类的第一种,闭锁的一种实现。直接先上模拟代码:import java.util.concurrent.CountDownLatch;public class CountDownLatchTest { public static void main(String[] args) throws InterruptedE...原创 2019-04-03 22:45:11 · 229 阅读 · 0 评论 -
【记录】《java并发编程实战》读书笔记:线程安全,对象状态,对象发布逃逸,线程封闭,不可变对象,安全发布等(前三章)
半个读书笔记,没什么技术含量线程安全当多个线程访问某个类时,不管运行时如何调度,或者线程如何交替执行,在主调代码中不需要额外同步操作的情况下,这个类都能表现出正确的行为,即可称该类是线程安全的。对象状态一般来讲,对象里包含的域就可以指代对象状态了。没有任何域,也不包含任何对其他类中域的引用的对象,称为无状态对象无状态对象一定是线程安全的原子性操作一个线程,要么全部执行完,要么干...原创 2019-03-27 18:56:22 · 135 阅读 · 0 评论 -
信号量Semaphore
信号量Semaphore是《java并发编程实战》里讲到的同步工具类的第三种。用来控制线程并发数量。主要构造方法:public Semaphore(int permits, boolean fair)public Semaphore(int permits)构造Semaphore对象时,指定许可证总数,参数fair表示是否使用公平锁,如果使用的话,线程获取许可证的顺序将按照线程申请的时间...原创 2019-04-10 16:34:02 · 158 阅读 · 0 评论 -
《深入理解java虚拟机》笔记:创建对象过程,对象结构,对象访问方式
半个读书笔记,没什么技术含量从虚拟机的角度看创建对象创建对象步骤:1、虚拟机遇到new指令时,先进性类加载检查(即指令中的参数能否在常量池中定位,定位的符号引用的类是否已经被加载,解析,初始化),如果检查不通过,则需要先进行类加载的过程。2、为对象分配内存空间,这里有两种方式:指针碰撞方式(当java堆绝对规整时)(直接移动指针),空闲列表方式(java堆不绝对规整时)(虚拟机自己维护...原创 2019-04-01 21:53:27 · 97 阅读 · 0 评论 -
Callable与FutureTask
FutureTask是《java并发编程实战》这本书里讲到的同步工具类的第二种。提FutureTask之前,需要先提及Callable接口。一般来讲,java中创建线程常用两种方式,一个是继承Thread类,一个是实现Runnable接口。第三种创建线程的方法就是实现Callable接口,实现接口中的call()方法。通过callable创建的线程,是带有返回结果的,通过的就是FutureT...原创 2019-04-07 15:34:11 · 180 阅读 · 0 评论 -
《深入理解java虚拟机》笔记:线程安全与锁优化
半个读书笔记,没什么技术含量原创 2019-04-03 12:19:03 · 300 阅读 · 0 评论 -
记录:spring data jpa简单使用
网课记录,很基础,没什么技术含量JPA是个规范,而Hibernate是这个规范的一个实现,spring data jpa则是在Hibernate的基础上再进行的一次封装。项目依赖(单独引入JPA,实际上在springboot工程当中引入JPA的依赖比这个要简单一些):<properties> <project.build.sourceEncoding>...原创 2019-05-12 21:35:33 · 672 阅读 · 0 评论 -
记录:一句注解实现fastjson自省功能
懒癌晚期,事情过去很久了才终于要记录。事情的起因是这样的:项目中有若干dto,其中一个父类dto,是基类,若干子类dto,是子类,大概是这个意思(直接在csdn编辑器里手敲代码,格式凑合看吧。。):public class FatherDto implements Serializable { private String fatherOne; private String fath...原创 2019-05-17 15:22:00 · 482 阅读 · 0 评论 -
【记录】一个Spring Data JPA设置默认值的问题
我有一个entity实体,其中里面有一个布尔类型的字段://entity table注解略public class TableEntity { private Boolean b; public Boolean getB() { return b; } public void setB(Boolean b) { thi...原创 2019-06-04 19:54:09 · 3371 阅读 · 0 评论 -
一道无聊的笔试题以及从中的收获
大佬发的一道笔试题,问以下代码输出什么:public class Test { static Test t = new Test(); static { System.out.println("1"); } { System.out.println("2"); } public Test() { System.out.println("3"); Sys...原创 2019-03-24 22:17:48 · 106 阅读 · 0 评论 -
记录:类加载的双亲委派模型
什么是双亲委派模型,我个人的理解就是:类加载器加载一个类的时候,不会马上去加载,而是先找他爹(父加载器),他爹要是还有爹就继续向上找爹,直到爹没办法加载(自己的加载范围内找不到类,ClassNotFound),才会由子加载器加载。或者说的简单一点,在“能够加载到类”的这个范围内,找最“爹”的那个加载器加载。什么是类加载器:就是根据类全名定位,把class文件加载到JVM转成class对象。...原创 2019-03-14 23:23:40 · 130 阅读 · 0 评论 -
记录:一道单链表逆置题(智商真的不够用,没救了)
大佬们发来这样一道面试题,三行三句代码,完成单链表逆置功能。一开始我的想法,是在reverse(Node head)这个方法里递归,在后一个reverse方法里完成具体逆置操作。于是在后一个reverse方法里,我是这么写的:Node newNode = next.node;next.node = cur;这样就完成了单个节点的逆置但是在第一个reverse方法里,反复试了好几次递...原创 2019-03-14 00:45:50 · 122 阅读 · 0 评论 -
记录搭建springboot工程(二):加入mybatis
继续上次,给springboot加入mybatis部分首先添加pom.xml的依赖:<!-- mybatis依赖 --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis...原创 2018-09-24 20:42:23 · 140 阅读 · 0 评论 -
记录搭建springboot工程(一):hello world
第一次尝试自己整合springboot+mybatis的框架。在service层定义mapper之后,启动工程一直包找不到bean的错误。最开始不知道什么原因,@Autowired我也写了。后来经过排(百)查(度),发现是启动类少写一行注解:我以为加了@ComponentScan就可以了,mybatis的mapper也要单独配置扫描的,加上这个之后,工程就可以启动了。低级问题记录一下。...原创 2018-09-19 23:22:54 · 162 阅读 · 0 评论 -
记录:单例模式的几种写法
单例模式概念,摘自百度百科:对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务;一个系统只能有一个窗口管理器或文件系统;一个系统只能有一个计时工具或ID(序号)生成器。如在Windows中就只能打开一个任务管理器。如果不使用机制对窗口对象进行唯一化,将弹出多个窗口,如果这些窗口显示的内容完全一致,则是重复对象,浪费内存资源;如果这些窗...原创 2018-10-14 17:41:06 · 119 阅读 · 0 评论 -
记录:反射与反序列化影响下的单例模式
单例模式在反射和反序列化的情况下会被破坏,创造出不止一个实例。反射下的单例模式:public class TestSingleClass1 { private TestSingleClass1() { } public static class SingleInnerClass{ private static final TestSingleClass1 testSingl...原创 2018-10-19 22:32:29 · 145 阅读 · 0 评论 -
记录:spring接口ApplicationContextAware
项目里看到有人写了个这个,自己回来照猫画虎写了一个垃圾例子:实现ApplicationContextAware接口的类:@Componentpublic class SpringUtil implements ApplicationContextAware { private static ApplicationContext applicationContext; @O...原创 2018-11-01 22:33:20 · 123 阅读 · 0 评论 -
sleep与wait
看到别人提到的有面试里问了这个,于是去大概百度了一下。总体来说这俩表面上的效果差不多,都是使当前线程让出cpu的方法。sleep是Thread类的静态方法,而wait是Object的方法。wait一般是配合notify,notifyAll这些方法在同步块中使用,sleep使用范围广一些,非同步块的代码也会有用到(我这里曾经在爬虫里大量使用sleep来实现延时)。在同步方法里使用的时候,sl...原创 2018-11-29 21:46:08 · 98 阅读 · 0 评论 -
【转】手写一个破产版springmvc框架
原文链接:https://mp.weixin.qq.com/s/36F_fFbGKkRL20DJgX4ahg跟着大佬的推送做了一遍,自己加了一点注释。基本思路是实现一个自己的DispatcherServlet,在容器启动时初始化,进行包扫描,获得controller注解的实例,并将url和各个方法进行对应。比较简陋,只有controller,requestmapping,requestpa...转载 2018-12-02 21:54:12 · 136 阅读 · 0 评论 -
给手写的破产版springmvc框架加上autowired注解
接上回书:https://blog.csdn.net/qq_34785454/article/details/84728533上一篇里我自己碎碎念了一下,要是能有手写的autowired就好了,今天决定自己动手写了。直接上代码:自定义的两个注解:import java.lang.annotation.Documented;import java.lang.annotation.Eleme...原创 2018-12-03 21:13:45 · 267 阅读 · 0 评论 -
第一次见凌晨四点的帝都:spring cloud zuul动态路由设置
前情提要:在追一个讲spring cloud的课,讲到zuul动态路由的时候,老师只是大概说了说思路,没有具体讲细节,于是我自己搞了一下,实现一个非常简陋的zuul动态路由。大概从凌晨十二点多搞到凌晨三点多的样子,简要记录一下。zuul是干嘛用的:个人理解就是个类似拦截器+过滤器的作用,设置一个路由表,对不同的请求,将其转发到不同的微服务进行处理。什么是动态路由:个人理解就是不用重启了,改完路...原创 2019-02-16 22:14:07 · 246 阅读 · 0 评论 -
记录:JVM内存模型
算是半个《深入理解java虚拟机第二版》的读书笔记。周志明大佬的作品,讲的比较深,看的其实也有一点云里雾里。自己在纸上大概写了写,再归拢一下放在博客上吧。不保证完全正确。。这篇文章为第二章的部分理论内容。内存模型,我个人按照线程私有及线程公有两种类型来进行分类。线程私有部分1、程序计数器:线程切换时记录上下文信息,执行java方法时会记录当前指令的地址,线程重新获得cpu时会从这...原创 2019-02-11 23:02:20 · 89 阅读 · 0 评论 -
idea从git上check项目,及在项目中屏蔽文件(目前工作用,就是记不住,还是写下来吧)
VCS→checkout from version control→git上面写.git的那个地址,下面写check到的目录,点击cloneidea settings里搜”file type”: 当时在下面的对话框里添加了几种文件种类,主要是编译的target文件夹,以及idea项目自己的文件(.iml)什么的,这样的话这些文件在项目里就不显示了,防止提交代码时把这些也一起提...原创 2018-09-11 15:11:51 · 912 阅读 · 0 评论