
Java
Crabime
所有源码参见我的GitHub:
https://github.com/Crabime
展开
-
理解Java中wait/notify
理解wait/notify实现机制原创 2019-12-22 23:15:17 · 466 阅读 · 0 评论 -
美团leaf学习笔记
1.0 简介2.0 号段模式1.0 简介对于分布式ID生成策略,之前我的印象里只有twitter开源的snowflake算法,该算法详情参见:snowflake算法思考。后来看了美团技术博客中有写到美团开源了自己的分布式ID服务,还是很好奇,于是把代码拉下来看了一下,这里做一个简单的源码解读,后面也可以给自己一个参考,源码地址下面在最下面。同时,如果在看这篇源码解读博客前,建议还是把美团官方...原创 2019-12-15 23:22:04 · 1464 阅读 · 0 评论 -
Error:java: javacTask: source release 8 requires target release 1.8
今天在使用Idea跑代码时突然出现了下面错误,因为代码中使用了jdk 1.8功能:开始以为是我的模块语言级别设置小于1.8,于是在project structure中将jdk设置为1.8,如下:同时将project sdk设置为1.8。但是设置完后重新运行发现还是上面错误,同时发现target/classes目录下没有编译后的class文件。仔细看上面错误可以发现,Idea的javac能...原创 2019-06-19 22:29:47 · 4088 阅读 · 0 评论 -
手写迷你版HashMap
最近看了一些面试题,感觉网上好像有挺多公司比较喜欢让面试者手写HashMap,说实话理解JDK HashMap源码还是很需要时间的。打开看了一下HashMap源代码,将近2400行代码,前两位作者乃大名鼎鼎Doug Lea、Josh Bloch,普通人确实无法匹及。好了,废话不多说了,今天写了一个迷你版HashMap,只包含put、get方法,当然这两个方法应该是HashMap中使用...原创 2019-06-12 10:39:07 · 326 阅读 · 0 评论 -
IntelliJ Idea运行Spring Boot项目报404错误
看了网上很多关于Spring Boot处理jsp时404错误,很不幸,没有一例解决了我的问题,最终通过传统的启动方式解决了,这里记录一下我的解决方案吧。问题先来看看我的pom.xml配置文件:<parent> <groupId>org.springframework.boot</groupId> <artifactId...原创 2019-06-24 15:55:09 · 3995 阅读 · 0 评论 -
spring getBean源码解析
前言: 我们每次在执行spring getBean时,spring为我们做了什么事呢?这里从spring源码刨析spring解析过程。首先我们还是从spring给我们提供暴露在外的ApplicationContext入手,这里我使用的是`AnnotationConfigApplicationContext`,先来看看它的UML模型,我只截了ApplicationContext部分:这...原创 2019-07-22 13:45:22 · 429 阅读 · 0 评论 -
Java中Fork/Join框架在什么时候使用合适?
什么是fork/join框架?原创 2019-06-15 11:53:24 · 968 阅读 · 0 评论 -
聊一聊java中的线程池
什么是线程池?线程池就是保存着一组工作线程的容器,每次任务来的时候会从容器里面拿出一个可用线程去执行任务。线程池的作用?线程池在执行大量异步任务时有些显著的性能提升,因为它减少了由于需要频繁的创建、删除线程导致的性能开销提供了一种资源可控的方式来保障系统稳定性获取到一些线程池的基础状态数据,如已完成的任务个数资源可控 vs 稳定性?为什么资源可控和系统稳定性能牵扯到一起呢?这里举...原创 2019-06-14 17:00:59 · 249 阅读 · 0 评论 -
Java内存回收机制
JVM的垃圾回收采用有向图方式来管理内存中对象,因此可以很方便地解决循环引用的问题,只要从有向图的起始顶点不可到达它们,垃圾回收机制就会回收它们。采用有向图来管理内存具有较高的精度,但缺点是效率较低。当一个对象在堆内存中运行时,根据有向图中的状态,分为三种情况:1、可达状态:对象被创建,有一个以上的引用变量引用它,在有向图中可从起始顶点导航到该对象,它就处于可达状态。2、可转载 2016-11-28 10:14:55 · 405 阅读 · 0 评论 -
java swing canvas小结
之前在学习canvas时总是感觉自己应该是会了,还能写一些小的画图程序,基本原理不就是一个repaint、update(还不是由自己来吊用)、paint,在监听器中调用repaint方法就可以画图了嘛,但是真的有很多细节要注意的,总结两点:Canvas是一个component组件,那么在它的方法监听中要canvas.repaint() 而不能这么写repaint()在画直线的时候一定要记得时刻原创 2016-12-26 22:53:41 · 9062 阅读 · 1 评论 -
观察者模式高级应用--自定义Swing事件监听器
先抛出问题: 因为之前看到的实现很复杂,通过先将面板B中数据发送到服务器,服务器校验完成后然后存储,然后通过ActiveMQ将消息发布到所有的客户端,告诉他们有了新的数据。terrible! 现在就看这个问题的简单实现需求:直接将填完的面板B已经填完的数据回传到面板A,这里就会用到观察者模式。 之前有学习过观察者模式,但是说实话与其一遍又一遍的看那些hello world教程去理解什么是观原创 2017-01-21 09:37:17 · 2815 阅读 · 0 评论 -
Ajax请求servlet成功但返回错误
今天刚刚开完年会回来,喝的有点多,但是丝毫不影响我对今日碰到问题的总结。问题是这样的:我在一个html页面中通过点击一个按钮,请求发送到servlet中,从servlet的输出情况可以确定参数已经传送过来了,但是ajax返回一直错误。 解决方法:如果你的按钮写法是这样的 <input type="submit" value="提交"> ,那么将type改为button就好。 如果input ty原创 2017-01-23 22:05:13 · 4677 阅读 · 2 评论 -
Tomcat中Error copying file to /usr/share/tomcat7/backup/catalina.policy: /usr/share/tomcat7/backup/ca
今天碰到一个问题,在使用eclipse时,明明里面已经配了一个tomcat并且启动了该tomcat,发现功能文件可以在浏览器中正常访问,但是当我输入“http://localhost:8080“结果显示为404,我的第一反应是:webapps目录下的root文件应该是被删了,但是后来发现他们都在tomcat的安装目录下,那么应该就是eclipse有自己的部署文件位置。后来双击tomcat服务器进入O原创 2017-01-22 22:44:38 · 4593 阅读 · 0 评论 -
Java Swing TextField对用户输入数据进行格式化处理
今天看到一个特殊的业务处理场景,我们知道一般TextField用户输入时字符串都没有分开,那么如果有人告诉你要写成这种格式怎么办? 这个时候我相信很多人第一反应就是“不知所措“,这个从哪里下手,有些人就是拒绝需求,不做更改,还有人会说我就会web上这种字符串处理,说再说最后都是逃不了manager的一句话。好了,废话就说这么多吧,切入正题。首先你要又一个用户输入内容侦听的一个东西,这里就是Do原创 2017-01-12 00:49:28 · 4658 阅读 · 0 评论 -
同步EventBus真的需要在每个注册监听方法中处理使用try/catch吗
之前听同事说在使用EventBus时为了防止eventbus在某一个监听者执行事件失败抛出异常导致其它监听者无法执行,必须使用try/catch显式捕获异常。但是今天在看源码时发现这样的说法是有问题的:eventbus不会因为某一个订阅者发生异常而终止后续订阅者的事件监听。下面是一段demo:public class EventBusTest { private static At原创 2017-08-08 23:53:39 · 1792 阅读 · 0 评论 -
数据库的一些常见面试题及其答案详解
我先标明下面题目的转载地址:原题目地址, 还有就是我所使用的数据库是MySQL,但是SQL语法大部分相同,只有少部分与Oracle、SQL Server不同。之前因为面试中吃了很多SQL 语法的亏了,决定真的要把这个玩会了,之前确实一直因为使用的都是hibernate框架,对数据库原生SQL的操作太少了,所以现在对基本的查询方式特别陌生。看到这套题目之后我还是觉得挺好的,最好是自己亲自写,不会原创 2016-11-26 01:25:37 · 10234 阅读 · 0 评论