![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 72
快乐妮子
我不知道终点在哪里,但我知道此刻的自己需要一步一脚印的向前走!
展开
-
PageHelper底层源码了解一下
你知道的越多,你不知道的也越多使用过Mybatis框架的亲故们肯定都听说过PageHelper这个分页神器吧?简单的一句话PageHelper.startPage(pageNo,pageLimit)就可以帮我们实现分页!YYDS有没有?废话不多说,直接进入源码探索阶段吧.日常使用由于目前很多项目都基于SpringBoot,引入PageHelper也是极其的方便.这里不提供业务代码.相信聪明的你肯定会自行百度,或者直接拿日常项目里的代码作为学习样本.来来来,我这里随手写了一个demo,主要就是.原创 2021-10-05 16:32:56 · 5526 阅读 · 2 评论 -
ThreadPoolExecutor的线程复用底层的源码了解下?
你知道的越多,不知道的也越多!线程池源码1. 整体思路2. 学习源码想必大家对线程池都有了解吧,必须掌握的知识点有:构造函数里的入参列表、常见有哪几种线程池以及使用场景、为什么要用线程池、线程池接受到一个任务后的处理流程等等。本文对以上问题不做说明了,主要是想讲明白其中的“线程复用”底层的原理。啰嗦一句: 看源码不要一上来就死磕每一行代码(相信我死磕撑不了几分钟),先掌握大体思路,然后再仔细品。1. 整体思路相信以下这张图大家都很熟悉了:其实就是线程池接受任务的处理规则。那图里的规则哪来.原创 2021-10-02 15:57:35 · 176 阅读 · 1 评论 -
原子类AtomicInteger的原理回顾一下
你知道的越多,你不知道的也越多!聪明的大家,都知道在高并发的场景下,**i++**这种操作是线程不安全的。原因大家都懂吧?啊?大家说啥?好吧,你们说的都对,的确只有我不懂。呜呜呜~ 来,你们告诉我吧。我现在就记在我的小本本上。1.i++ 为什么不安全i++ 看似一句代码,实际底层是3条指令:取值+加1操作+最新的值回写。假如2个线程,同时对一个i=0变量进行i++操作。就问下有没有如下的可能性发生?两个线程都进行i++操作但是,最终结果还是1?其实是有的! 如果不信,可以使用两个Thre.原创 2021-10-02 13:07:46 · 289 阅读 · 0 评论 -
Mybatis拦截器+Cat监控+SpringBootStarter自动装配+实现Sql跟踪
你知道的越多,不知道的也越多!之前就非常好奇在公司内部Cat(大众点评监控系统)上可以看到每次调用链路里的Sql日志。下图来自cat某个链路的日志截图。跟踪SQL有啥好处么?当然有阿, 方便排查慢SQL 。你要知道,如果一个request timeout,QA人员天天吐槽你,经理气的炸毛,然后你还在抓脑门,到底哪里慢了,这可还行?原以为Cat自身支持该功能,其不然,是公司二次开发,我只能说YYDS~其实主要涉及到的几个知识点已经在标题里提到了。下图是一个思维图,我也不知道用什么图比较合适。.原创 2021-09-26 18:56:47 · 343 阅读 · 0 评论 -
死锁了该怎么办?
其实发生死锁的地方有很多,比如MySQL、日常业务代码里抢锁。那一般解决办法有哪些呢?其实理清楚死锁的原因是什么,就好理解哪些应对死锁的方案啦。原因:资源竞争例子:线程1抢到了锁A -> 业务执行 -> 抢占锁B线程2抢到了锁B -> 业务执行 -> 抢占锁A线程1拿到了锁A,但迟迟未拿到了锁B,陷入了无限等待中。。。线程2拿到了锁B,但迟迟未拿到了锁A,陷入了无限等待中。。。解决:业务执行之前,就拿到锁A + 锁B 。并保证两个抢锁是原子操作。原因:忘记释放原创 2021-09-25 15:25:45 · 169 阅读 · 0 评论 -
回忆下什么是双亲委派机制吧
你知道的越多,你不知道的也越多!该篇主要是自己的一个小总结吧,内容知识点主要来源于各大牛的一些博客。外婆问我:什么是双亲委派原则?1.前提须知(1)该知识点主要是和java类加载有关系。来,那什么又叫做java类加载呢?别急,总结下就是将一个java文件要加载到JVM里。怎么感觉《运行时的数据区》怎么那么像《JVM的内存模型》啊?额,,,别闹,简直就是一个好吧。如果想具体了解,请移步:JVM 运行时数据区详解,写得非常好!(2)那类加载器到底有哪几种呢?答案:3种通过代码来继.原创 2021-09-25 08:15:04 · 98 阅读 · 0 评论 -
动态代理?JDK Proxy 和 CGLib 有什么区别?
文章目录动态代理是什么?JDK代理和CGLib代理的简单使用区别分析别告诉我,作为Java开发工程师你没用过Spring;别告诉我,不知道Spring充分运用了AOP思想;别告诉我,不知道AOP思想的实现没有用到动态代理。如果这些问题,全都不知道的话,emmm… 没事,大兄弟,我们一起学习吧,我们还年轻不是嘛!动态代理是什么?在这之前不得不提下Java的设计模式-代理模式。代理模式主要是代理类为委托类负责于预消息处理、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关原创 2020-10-01 00:23:47 · 368 阅读 · 0 评论 -
FutureTask 会 “吞掉“ 异常是怎么回事?需要注意些什么?
这次 , 没有废话,切入正题!在Callable#call方法里,如果没有try-catch的情况下,如果call方法运行时,一旦出现异常,那么该异常会被Future所接收到,且只有调用 Future # get 方法才会抛出。也就是说,如果你不调用get方法,做些异常处理的话,真的发现不了问题发生在哪?import java.util.concurrent.Callable;public class MyCallable implements Callable<String> {.原创 2020-09-28 14:58:29 · 2311 阅读 · 1 评论 -
别因为ThreadLocal有内存泄漏就不用它了
扯点废话,不想看前言的大佬,“来,大佬,请您跳过前5行~”真的,这个ThreadLocal 是不是经常被面试问到?是不是都问吐了 ? 以前我不懂的时候,听到什么泄漏或者内存溢出的词,吓得我都不敢用了,emm,说完这句话,我怎么感觉我有点怂呢?诶,屏幕对面的小哥哥、小姐姐给点面子哈。0.01克的面子,我也很开心的 。Please ! [????????????????????]使用案例一般使用package test;public class ThreadLocalTest { pu原创 2020-09-26 00:40:04 · 275 阅读 · 0 评论 -
判断一个字符串是否是JSON字符串的坑
开篇(扯点闲话)提起JSON,想必大家脑海里能浮现出几个常用的JSON框架吧 :Jackson : Jackson是一个开源的基于Java的json解析和处理类库,它可以轻松的将Java对象转换成json对象或xml文档,同样也可以将json对象或xml文档转换成Java对象,它简单易用并且性能优秀,Jackson社区相对活跃,更新速度也较快,在Spring mvc框架默认也采用了该类库进行json格式的输出。Gson : GSON是Google开发的一款开源的JSON解析处理类库,用于转换Jav原创 2020-09-08 10:16:15 · 6678 阅读 · 0 评论 -
沃特?SimpleDateFormat在多线程下不安全???
最近公司统一了下开发规范,其中有一条就是使用SimpleDateFormat时候不要设置成类的静态成员变量,被各个方法引。而是,建议改成方法内部变量,或者借助下ThreadLocal。作为菜鸟的我,当时听到时,内心绝对的是无数个问号,当然了,听会的时候还是要强行装淡定嘛,假装我懂了。emm,,大家不要学我哦,所谓,子曰:知之为知之,不知为不知,是知也!To 孔子老师:我错了,所以我来认真学习了,写下这笔记可好?问题复现废话别说了,赶紧重现下,别想糊弄到屏幕面前的各位大佬 !!!分析原因解决办.原创 2020-07-21 15:24:48 · 149 阅读 · 0 评论 -
天天见的单例模式了解一下
参考链接如下:为什么要使用单例模式Java单例模式的5种实现方法这篇内容主要是自己看完网友写的博客之后的一点点总结。为什么要用 ?第一个问题的答案,可以看开头的推荐的第一篇博客里。第一篇我觉得写的挺好的,纠正了一些误区。那怎么去实现 ?第二个问题的答案 ,具体可以看开头的推荐的第二篇博客。这里还需要知道单例模式实现的几个共同点:私有的构造函数,对外无法实例化;由于外部无法实例化,但是还是需要调用呀,那所以要提供给一个能获取单例类的实例对象的方法啊。一般该方法的名字 : createI.转载 2020-07-20 13:59:05 · 126 阅读 · 0 评论 -
MongoTemplate直接将Json存入MongoDB
记住两点就好了(1) 记住MongoTemplate(2) 使用 com.alibaba.fastjson直接看代码,一看就懂的记住Json如果选择了其它的,可能会给你带来惊喜的哈.出现member ,出现name,value取出来用JSONObject 接口,怎么获取到ObjectId的16进制的字符串插入之后会出现_class...原创 2020-07-17 18:09:46 · 4356 阅读 · 0 评论 -
记录CountDownLatch的一次简单使用
最近这边连续下了好几天的雨了啊啊啊,你那边呢?嗯哼?这开场的感觉不对呀,好尬,哈哈哈哈~直接进入正题吧。什么是CountDownLatch这个是在JDK1.5开始就出现的,并发编程工具类。这里偷懒下,直接看下源码上的类注释吧,相信你看完就差不多大概知道这个干啥子用的了。在这里,请允许我用本人的蹩脚英文稍微翻译下:可以允许一个或者多个线程等待,直到一组在其它线程里的操作都完成,然后再执行。初始化CountDownLatch时提供一个count数,主方法一直将被阻塞直到多次调用CountD.原创 2020-06-16 18:21:00 · 214 阅读 · 0 评论 -
SimpleDateFormat的时区记录
在开发过程中,经常碰到时区问题,一般解决思路,数据库时区问题,服务器时区,还有就是数据返回出去的时候(例如spring jackson )在这几个解决思路中,有些是要用到Date 和 String 进行转换的。所以这我想记录下SimpleDateFormat平日使用可能会被忽略的知识点Date 转 String public static void main(String[] args) { SimpleDateFormat sdf = new SimpleDateFo.原创 2020-05-20 22:37:51 · 768 阅读 · 0 评论 -
Integer比较到底要不要equals
-127 ~ 128 范围得,直接从常量池里获取,所以这时候用比较不会出错。但是超过该范围的就会new 了,所以推荐还是用equals 吧,毕竟不要显得自己很疏忽的态度初次之外,还可以用自动拆箱的时候,可以用比如 Integer.value(299).intValue == 299...原创 2020-04-22 13:36:52 · 203 阅读 · 0 评论 -
判断网址是否为效的apk下载地址
前景抓住两个点,有效的 和 APK下载。正常的判断一个url是否有效解决这个的思路很简单,就是判断建立的HttpURLConnection的返回的HttpCode是否为200。直接奉上代码:在这里插入代码片url带有重定向的情况如果你提供的网址存在了一个重定向的情况,比如 ,服务器为了安全起见 ,买了SSL证书,以前的http请全部都要走https,这之后肯定就要把http上面做一...原创 2020-01-20 16:18:12 · 836 阅读 · 1 评论 -
Java工具类之删除文件
删除某个文件或文件夹由于File的delete方法,如果文件夹有文件的话,执行该delete是无效的, 所以代码里用到了递归删除。并且delete是直接删除了,不会放到回收站,所以使用要慎重。import java.io.File;public class FileUtils { /** * 删除文件或文件夹 * * @param needDelFil...原创 2020-01-15 23:00:06 · 305 阅读 · 0 评论 -
maven repository 提供最全的Jar下载
你是不是还在百度xxxx.jar 下载,是不是还在为找不到jar下载地址而忧愁。。。哎呀,别愁啦,小哥哥小姐姐小美女,相信你看完本文马上就笑了,哈哈哈 ~认识下国内的镜像镜像仓库【maven repository】网址:https://mvnrepository.com/开始下载所需的JAR首页的搜索框 直接输入你需要找的jar 名字 ,例如: aspect选择想要的版本,再点击...原创 2020-01-09 17:49:01 · 2653 阅读 · 0 评论 -
HashCode相同就是同一个对象么?
答案:不是的呢!不是的哦!不是的啊!Hashcode的作用就是觉得写得挺好的额,我能看懂,哈哈哈转载 2020-01-08 17:52:08 · 1443 阅读 · 0 评论 -
高频使用的JDK8的分组简单应用
可能本文开头部分有点啰嗦,但我觉得 ,了解下很常见的JDK8分组的实际应用场景,也是 不错的。需求有两张DB表,分别是【用户反馈意见表】和【用户反馈意见附图表】,建表SQL 如下:用户反馈意见表(主要存储意见的文本内容)CREATE TABLE `app_store_app_suggest` ( `id` int(11) NOT NULL AUTO_INCREMENT, `us...原创 2020-01-07 14:06:40 · 571 阅读 · 0 评论 -
java -jar启动参数里设置file.encoding编码,解决中文乱码的一堆坑
起因:公司需要基于Jenkins平台上,进行一个批量构建的项目开发,就是个一次性可以调起多个项目的构建,额,先说点题外话,要永远都记得一点,客户都是懒得~BUG:使用jenkins-client 请求== http://jenkins服务器的域名/job/你的构建项目名/api/json ==(该接口可以获取某个项目的大部分信息),但坑人的是,本地运行不会乱码,丢到服务器上就尴尬的一批,看图...原创 2019-11-10 16:11:49 · 17188 阅读 · 5 评论 -
Java面试
Java面试基础题(搜集汇总)好记性不如烂笔头,还是写写博客记录下最近巩固的知识点吧~坚持是世界上最难的小事原创 2019-07-18 15:54:20 · 105 阅读 · 0 评论 -
JAVA的Runtime执行命令
Linux下安装Mysql转载于:Linux下安装mysql完整教程参考上述的博客,安装基本没遇到什么坑,内心开心的一匹,[抱拳][比心]自己照着安装的时候,有几点还是和上文不太一样,特此记录下~~~(1)配置在执行这步骤的时候,经常报出 ,密码强度不够,是否输入新的密码,个人按照文中所提的,输入大写,小写,符号,数字,竟然还提示强度不够,扎心了,最终还是选择了否,(2)远程连接授...转载 2019-08-24 18:31:14 · 293 阅读 · 0 评论