随笔分类 -  Java

Java笔记
摘要:Spring Boot 可以很简单的添加一个调度任务 首先需要添加maven依赖 然后对需要定时调度的任务添加注解 最后需要开启一下注解 但是并不支持动态配置 不过可以满足日常的一些需要了 阅读全文
posted @ 2019-11-01 14:39 stdpain 阅读(562) 评论(0) 推荐(0)
摘要:AQS AQS 是一个抽样同步器,可以通过这个快速实现一些需要同步对象,可以编写各种锁 意义 使用while编写一个简单的自旋锁很容易,但是有的时候,使用while不断的自旋获取锁资源,在别的线程获取到资源的情况下而且使用较长的时间,当前线程还在不断的自旋,cpu有较大的浪费,但是操作线程的状态比较 阅读全文
posted @ 2019-08-18 13:43 stdpain 阅读(278) 评论(0) 推荐(0)
摘要:Slf4j 打日志的问题 Exception 没有堆栈信息 发现线上环境有的Exception堆栈信息没打出来,只有异常信息没有堆栈信息,难以定位 一般情况下日志这么打 打异常信息 错误打法:只能看到异常信息,没有堆栈,打了跟没打一样 错误打法2: 这样消耗比较大,而且有的时候容易死锁 而且只能打到 阅读全文
posted @ 2019-07-31 13:40 stdpain 阅读(1346) 评论(0) 推荐(0)
摘要:包扫描器 获取一个包下的所有类,然后使用默认的类加载器加载到内存中 Jar 处理 文件系统直接递归处理目录就可以 包扫描器有什么用 Spring 中通过注解配置 就是通过包扫描器下每个class是否包含某些注解 阅读全文
posted @ 2019-07-24 20:36 stdpain 阅读(482) 评论(0) 推荐(0)
摘要:反射 getFields() 获取某个类的所有 字段 getDeclaredFields() 获取某个类所有字段,但是不包括 父类字段 其他的也同理 我们可以直接访问私有域,或调用私有方法,不过一般情况下最好不要这么做,只有在设计出问题的情况下做一些临时补救措施,或者debug,或者写工具框架才这么 阅读全文
posted @ 2019-07-19 15:05 stdpain 阅读(154) 评论(0) 推荐(0)
摘要:配置文件的管理 有的时候我们希望开发环境和测试环境的配置文件放在一起可以快速切换 spring boot 为我们提供了很方便的的选项 在 application.properties 中只需要添加属性 spring.profiles.active=dev 这样spring boot 就会切换选择 对 阅读全文
posted @ 2019-06-23 17:19 stdpain 阅读(2115) 评论(0) 推荐(0)
摘要:Java 执行命令行命令 这个没技术含量的东西耗费了我半个多小时 一个简单的命令这样执行时没问题的,但是如果参数中存在空格,那么就会出问题 会被分割为不同的参数,使用""包含起来也不行 解决方案: 使用重载的方法 Spring Boot 打包为jar 之后出现问题 比如这段代码本地调试没问题,但是打 阅读全文
posted @ 2019-06-10 08:52 stdpain 阅读(3901) 评论(0) 推荐(0)
摘要:最近走过的坑 slf4j 多个实现 主要是maven依赖中存在多个slf4j的实现类,在引入的依赖中排除对应的依赖就可以 另外对于spring boot来讲,可以这样排除,子项目就可以不用排除了,不过log back还算好用,个人更喜欢用spring boot全家桶 hibernate 在启动的时候 阅读全文
posted @ 2019-05-27 10:14 stdpain 阅读(409) 评论(0) 推荐(0)
摘要:Executors 挖坑 线程频繁的创建销毁是有代价的,所以Java为我们提供了线程池 线程池构造方法很多 我们一般使用Executors的工厂方法: 除此之外Executors还为我们提供了一ForkJoin框架(一些计算密集型的应用) 我们来看一下Executors的构造方法 我们先看一下线程池 阅读全文
posted @ 2019-04-07 22:42 stdpain 阅读(326) 评论(0) 推荐(0)
摘要:Java NIO (1) 看了下java核心技术这本书 关于nio的部分介绍比较少,而且如果自己写服务器的话nio用的还是比较多,整理一下nio的资料 java中nio主要是三个组件 Buffers Channels Selectors Buffer可以理解为缓冲区,NIO中的Buffer实现很多, 阅读全文
posted @ 2019-04-07 14:44 stdpain 阅读(156) 评论(0) 推荐(0)
摘要:Java ConcurrentHashMap jdk1.8 之前用到过这个,但是一直不清楚原理,今天抽空看了一下代码 但是由于我一直在使用java8,试了半天,暂时还没复现过put死循环的bug 查了一下,java8似乎修复了这个:不过还是可能导致数据丢失 java8之前都是头插入,而java8却是 阅读全文
posted @ 2019-04-07 00:56 stdpain 阅读(385) 评论(0) 推荐(0)
摘要:Java ThreadLocal 之前在写 项目的时候使用过一个叫 的插件 可以自动完成分页而不用手动写SQL limit 用起来大概是这样的 最开始的时候觉得很困惑,因为直接使用静态成员函数,那么就意味着如果有别的线程同时执行,可能会导致一些并发错误 答案是不会,因为 内部实现是使用到了 这个对象 阅读全文
posted @ 2019-04-06 15:24 stdpain 阅读(287) 评论(0) 推荐(0)
摘要:Java 多线程 volitile 和 atomic 关键字 尝试运行以上代码,发现thread永远也无法发现key0的x被改变 所以这个时候需要加上volitile关键字 具体原因是java中每个线程都有工作内存,以及主存 我的理解就是不加volitile,线程读写变量是先在自己的工作内存中处理, 阅读全文
posted @ 2019-04-05 18:40 stdpain 阅读(469) 评论(0) 推荐(0)
摘要:Java HashMap jdk 1.8 Java8相对于java7来说HashMap变化比较大,在hash冲突严重的时候java7会退化为链表,Java8会退化为TreeMap 我们先来看一下类图: 可见,HashMap继承了AbstractMap,但是Map并没有扩展Collection接口 我 阅读全文
posted @ 2019-04-05 16:25 stdpain 阅读(748) 评论(0) 推荐(0)
摘要:Java ArrayList 之前曾经参考 数据结构与算法这本书写过 的demo,本来以为实现起来都差不多,今天抽空看了下 中的 的实现,差距还是很大啊 首先看一下 的类图 实现了 这几个接口,可序列化,可克隆,可以随机访问 构造方法: 之前手写 的时候,都会用一个默认容量来 new 一个数组,在 阅读全文
posted @ 2019-04-05 14:15 stdpain 阅读(832) 评论(0) 推荐(0)
摘要:Java Integer == 先看一下这段代码 输出结果: 很久之前就知道这里有个坑,今天看到别人分析了一下Integer.java的源代码才知道具体是为什么 可以看出来使用 的时候并不会立即new一个Integer对象,而是先判断是否在缓存数组里面 不知道称作 是不是不太合适 是一个嵌套类(静态 阅读全文
posted @ 2019-04-04 20:04 stdpain 阅读(2503) 评论(0) 推荐(0)
摘要:Stream 不是 `io`中的stream 对象创建 我们没有必要使用一个迭代来创建对象,直接使用流就可以 流使用起来代码更清晰 流看上去有点像是集合,转换或者获取数据,不过有一定的差异性 1. 流不会存储元素,,这些元素可能是 储存在底层的集合中,或者按需生成的 2. 流的操作不会修改其数据源 阅读全文
posted @ 2019-04-03 09:48 stdpain 阅读(193) 评论(0) 推荐(0)