java基础
文章平均质量分 63
代码 搬运工
这个作者很懒,什么都没留下…
展开
-
String中方法replace与replaceAll的区别详解
问题最近在查线上问题的时候,发现日志里面挺多这种PatternSyntaxException错误的。从日志中可以清楚的知道,出问题的地方就是调用了String的replaceAll方法。等等,这个不就是个普通的替换方法嘛?难道是我用的姿势不对?话不多说,赶紧看一波源码,将bug修复原因分析以及解决方案在大多数人的认知里,replace方法是替换符合的单个字符串,而replaceAll是替换所有符合的字符串。瞄了一下源码,真的打脸了。源码分析 /** * Replaces each su原创 2020-07-11 18:33:34 · 1108 阅读 · 0 评论 -
redis分布式锁的实现
为什么要用分布式锁使用场景xx游戏平台举办了一个回馈用户活动,只要等级达到x等级,即可领取xx装备。可能有些人,有过这样的想,是不是,只要我速度够快,就能领到多份奖品啊,想想都美滋滋。结果,系统显示,当前操作过于频繁,请稍后再试。what???这个的话,就涉及到了锁。同个账号,当我们的第一次请求到服务器的时候,已经被加上了锁,当还没释放锁的时候,再次请求,则不能拿到锁,只能继续等待。(当然这...原创 2020-03-05 21:48:46 · 253 阅读 · 0 评论 -
OOM问题分析定位
一 、问题描述 二、MAT分析三、代码问题四、问题解决原创 2020-02-21 16:55:17 · 804 阅读 · 0 评论 -
BIO,NIO,AIO的区别
一、看图网上很多IO资料,对新手来说,越看越晕。根据自己的理解,总结对比了一下BIO、NIO、AIO。BIO:线程发起IO请求,不管内核是否准备好IO操作,从发起请求起,线程一直阻塞,直到操作完成。如下图:NIO(reactor模型):线程发起IO请求,立即返回;内核在做好IO操作的准备之后,通过调用注册的回调函数通知线程做IO操作,线程开始阻塞,直到操作完成。如下图:AIO(proactor模型...转载 2018-06-21 10:25:22 · 113 阅读 · 0 评论 -
使用readLine()方法遇到的坑
程序很简单,客户段从控制台读取用户输入,然后发送至服务器端,主要代码如下服务端代码:客户端代码: 结果运行的时候,当开启服务端和客户端后,在客户端的控制台 键盘输入 内容,服务端却没有显示内容原因:1.原来readLine()方法在进行读取一行时,只有遇到回车(\r)或者换行符(\n)才会返回读取结果,这就是“读取一行的意思”,重要的是readLine()返回的读取内容中并不包含换行符或者回车...原创 2018-06-21 16:14:20 · 35787 阅读 · 2 评论 -
线程池原理(讲的非常棒)
Java并发编程:线程池的使用 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务? 在Java中可以...转载 2018-06-08 10:23:03 · 172 阅读 · 0 评论 -
如果hashMap的key是一个自定义的类,怎么办?为什么重写equals还要重写hashcode
如果hashMap的key是一个自定义的类,必须重写该类的hashcode()方法和equals()方法 HashMap中,如果要比较key是否相等,要同时使用这两个函数!因为自定义的类的hashcode()方法继承于Object类,其hashcode码为默认的内存地 址,这样即便有相同含义的两个对象,比较也是不相等的,equals()比较的是内存地址是否相等。例如,Student ...原创 2018-06-19 10:19:11 · 2755 阅读 · 0 评论 -
高并发处理方案
技术的深 一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构、性能的要求都很简单,随着互联网业务的不断丰富,网站相关的技术经过这些年的发展,已经细分到很细的方方面面,尤其对于大型网站来说,所采用的技术更是涉及面非常广,从硬件到软件、编程语言、数据库、WebServer、防火墙等各个领域都有了很高的要求...转载 2018-07-08 18:56:41 · 251 阅读 · 0 评论