
Java
文章平均质量分 92
java初级、java高级、多线程高并发、基础框架等
小明同学YYDS
good good study!day day up!
展开
-
服务端架构:Mybatis-Plus的优缺点
前段时间帮朋友处理java后端架构问题,看到了mybatis-plus,其实早几年就知道这个东西,但一直没用没学,这两天许久未见的web服务看了看,聊聊个人感受如有不适,请见谅文章目录优点缺点1.对数据访问层DAO的上层入侵太强,入侵到service、甚至controller!2.数据查询代码复杂,最终SQL黑盒,不清晰,不利于业务性优化,不利于排查问题优点本文没有优点介绍,若要看到优点,自己去官方文档看吧,全是优点,明明白白缺点两大缺点足以限制其在大规模服务中使用:入侵Service和Co.原创 2022-01-15 15:46:18 · 18950 阅读 · 44 评论 -
logback日志不打印到文件问题深入剖析
详细探究logback不打印日志到文件的问题分析与案例演示,并提供官网bug的提交链接 环境与配置问题解决原因测试源码测试结果深入:线程出异常是否还会打印日志环境与配置使用maven构建的,引入logback依赖如下:(注:其他依赖已经排除了其他日志框架的依赖,故不存在日志框架冲突问题 – 这也是一个点哦) <!-...原创 2018-08-26 22:04:21 · 49106 阅读 · 1 评论 -
log4j不打印详细错误堆栈
记一次排查问题时发现日志不打印详细堆栈的情况文章目录背景现象解决背景调用打印日志的代码:LOGGER.error("actionDetailBiz max monitorTime upload data error, ", ex);注意如果如下调用方式是不会打印堆栈的:LOGGER.error("actionDetailBiz max monitorTime upload da...原创 2019-06-13 11:41:46 · 10182 阅读 · 7 评论 -
CopyOnWriteArrayList详解
先说先来一张jdk1.7的api截图如上图,看List的几个常用实现类。ArrayList、LinkedList和Vector来做区别:1.ArrayList和LinkedList底层核心:ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。那么他们俩的增、删、改、查等操作的 性能 差别就参照 数组 与 链表 的差别。2原创 2018-01-23 21:06:56 · 1654 阅读 · 1 评论 -
CAS算法原理分析
在java高并发多线程学习中,CAS算法--无所锁算法是一种解决高并发的使用的乐观锁思想的机制,转载别人的文章作为知识积累:转自:http://www.360doc.com/content/11/0914/16/7656248_148221200.shtml更加深入的研究参看:非阻塞同步算法与CAS(Compare and Swap)无锁算法转载 2017-08-23 19:08:49 · 942 阅读 · 0 评论 -
Lock与synchronized 的区别
转自:http://www.cnblogs.com/nsw2018/p/5821738.html其它比较好的相关文章:JDK 5.0 中更灵活、更具可伸缩性的锁定机制1、ReentrantLock 拥有Synchronized相同的并发性和内存语义,此外还多了 锁投票,定时锁等候和中断锁等候线程A和B都要获取对象O的锁定,假设A获取了对象O锁,B将等待A释放转载 2017-09-18 15:22:21 · 453 阅读 · 0 评论 -
java多线程Thread与Runnable的区别与使用深入理解
首先,多线程的实现方式两种:一种是继承Thread类,另一种是实现Runnable接口。那么这两种方法的区别何在?该如何选择?第一:他们之间的关系查看J2EE的API看到Thread类中: public class Thread extends Object implements RunnableRunnable接口:public interfaceR原创 2017-08-08 08:53:50 · 4652 阅读 · 2 评论 -
volatile与synchronized的区别
研究并发编程的时候,涉及到volatile,volatile又涉及到jvm内存模型,这是此前学习的知识,现在有些遗忘,作为复习又重新学习。由于研究尚浅,怕表达不清楚冒犯了原理,就不在这里说volatile原理和jvm内存模型了,一篇比较好讲解volatile关键自的博客可以作为参考:Java并发编程:volatile关键字解析可以参考的书就是java届有名的:java编程思想转载 2017-09-19 20:46:06 · 401 阅读 · 0 评论 -
java多线程定时器Timer的使用详解
使用过javascript的都知道有两个关于定时的方法:setTimeOut和setInterval方法,可以让一段代码持续性或者规定时间后运行。这样就可以实现定时的功能,最经典的应用就是贪吃蛇那条蛇持续性的走动。这里做一下关于定时器使用的一点小结定时器:Timer定时器的任务:TimerTask 定时器:Timer一种工具,线程用其安排以后在后台线程中执行的任务。可安排任原创 2017-08-11 10:01:41 · 3874 阅读 · 1 评论 -
java的BIO、NIO、AIO应用详解
本文结合自己的理解与前辈的理解,下方给出参考博客地址:Java BIO、NIO、AIO 学习也谈BIO | NIO | AIO (Java版)概念先行BIO | NIO | AIO 以Java的角度,理解,linux c里也有AIO的概念(库),这些概念不知道什么原因被炒火起来,这里只从Java角度入手。BIO,同步阻塞式IO,简单理解:一个连接一个转载 2017-09-03 19:25:43 · 590 阅读 · 0 评论 -
java.util.regex.PatternSyntaxException: Dangling meta character '*' near解决
问题重现java.util.regex.PatternSyntaxException: Dangling meta character '*' near index 0*.log.*^ at java.util.regex.Pattern.error(Pattern.java:1924) at java.util.regex.Pattern.sequence(P...原创 2018-02-27 16:22:51 · 6706 阅读 · 0 评论 -
java基础:java时间先除后乘目的
介绍java时间需要先除后乘的去余问题 问题原因与目的问题java时间获取有时候代码如下:Date date = new Date(time / 60000 * 60000);原因与目的目的在于去除余数。即,当需要一个分钟整数(整点)时间时,就要先除60000再乘60000.如下案例: public static v...原创 2018-08-20 10:51:13 · 1541 阅读 · 0 评论 -
java中有符号数与无符号数互相转换
java中有符号数与无符号数互相转换文章目录java中long类型转换成无符号数java中无符号数转换成有符号数java中long类型转换成无符号数由于JAVA中基本数据类型均为有符号数,而且最大数据类型long为8字节当long为负数时,最高位为1,转为无符号数时会超出long的取值范围,转换规则如下: /**long转成无符号数*/ public static fi...原创 2018-10-10 11:57:37 · 11907 阅读 · 0 评论 -
abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
逛论坛看到这个java面试题,并且看到了一位比较好的讲解,转载过来作为知识积累,感谢前辈的分享:转载地址:http://www.cnblogs.com/guweiwei/p/6600364.html三个关键字说明1、abstract是抽象的,指的是方法只有声明而没有实现,他的实现要放入声明该类的子类中实现。2、static是静态的,是一种属于类而不属于对转载 2017-09-18 11:00:35 · 1672 阅读 · 1 评论 -
数据类型转换:short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? short s1=1,s2=1;short s3=s1+s2;
一个基础的数据类型转换问题,short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 。第一眼看这个问题,能想到数据类型转换、 s1 = s1 + 1与复合赋值运算s1+=1问题的区别,深入可能是 += 的使用注意事项。这里由于思考了比较久,然后查阅了一些博客和官方文档关于 += 的赋值运算说明,这里做一下记录,巩固基础。首原创 2017-09-18 09:40:49 · 2454 阅读 · 1 评论 -
线程的基本概念,基本状态、状态之间的关系
基本概念线程:是进程中的一个执行控制单元,执行路径 一个进程中至少有一个线程在负责控制程序的执行 一个进程中如果只有一个执行路径,这个程序称为单线程 一个进程中有多个执行路径时,这个程序成为多线程一个线程是进程的一个顺序执行流。同类的多个线程共享一块内存空间和一组系统资源,线程本身有一个供程序执行时的堆栈。线程在切换时负荷小,因此,线程也被原创 2017-09-18 14:46:32 · 17290 阅读 · 0 评论 -
java.sql.Date和java.util.Date区别及使用
在项目中使用碰到的问题,主要是两者日期格式和转换的问题首先,查看api,java.sql.Date是java.util.Date的子类可见这三个类都是java.utl.Date的子类。而这三个类都是对应与jdbc处理日期格式的类,有着 不同的日期精度和格式,更加详细内容参考jdk就好详细查看java.sql.Date类:一个包装了毫秒值的瘦包装器 (原创 2017-09-17 17:17:39 · 38226 阅读 · 0 评论 -
java的RandomAccessFile的使用详解
在使用到RandomAccessFile这个类时,发现有很多与java io其他类不一样的特性,查看文档的描述: 此类的实例支持对随机访问文件的读取和写入。随机访问文件的行为类似存储在文件系统中的一个大型 byte 数组。存在指向该隐含数组的光标或索引,称为文件指针;输入操作从文件指针开始读取字节,并随着对字节的读取而前移此文件指针。如果随机访问文件以读取/写入模式创建,则输出操作也转载 2017-08-20 16:53:30 · 4074 阅读 · 0 评论 -
java字符串比较equals()和equalsIgnoreCase()的区别
equals()是所有类的对象共有的方法,继承的是Object类的方法,所有对象都可以调用,在字符串的比较中,区分大小写equalsIgnoreCase()是String类的对象方法,字符串比较时不区分大小写,认为A-Z与a-z一样查看jdk文档说明:这是String类中的方法意思很明确:equals:当前字符串对象与另一个Object的对象相比较 equa原创 2017-08-02 08:29:13 · 3492 阅读 · 0 评论 -
EL表达式无效的解决方法
此前开发用的比较多Ajax进行异步交互即数据的显示,最近使用jsp页面进行页面与服务器交互时突然一个很怪的问题,强大的 ${} 失效了,读不出数据,由于使用的是springMVC,所以自己使用spring的test模块进行测试了请求与数据的返回是否有效,经过测试请求后数据可以通过request请求域获得(关于如何使用spring的test模块进行模拟请求进行测试spring的程序,关注自己的另一个原创 2017-08-30 16:52:07 · 4790 阅读 · 4 评论 -
WEB-INF下的jsp资源访问注意
原文:http://www.cnblogs.com/x_wukong/p/3969114.htmlweb-inf目录是不对外开放的,外部没办法直接访问到(即不能通过URL访问)。所有只能通过映射来访问,比如映射为一个action或者servlet通过服务器端跳转来访问到具体的页面。这样可以限制访问,提高安全性。如图结构:1、把页面资源文件只能放在webroot下转载 2017-07-25 10:31:23 · 2644 阅读 · 0 评论 -
log4j2 使用详解
转自:http://www.cnblogs.com/leo-lsw/p/log4j2tutorial.htmlLog4j 2的好处就不和大家说了,如果你搜了2,说明你对他已经有一定的了解,并且想用它,所以这里直接就上手了。 1. 去官方下载log4j 2,导入jar包,基本上你只需要导入下面两个jar包就可以了(xx是乱七八糟的版本号): log4j-cor转载 2017-07-12 22:27:00 · 283 阅读 · 0 评论