
java
小布-01
10年编程经验,乐观向上,爱分享
展开
-
StringUtils提供的字符串处理方法
StringUtils作为处理字符串的工具类,为开发人员默认提供了多种字符串处理函数。本文针对springframework包下的StringUtils进行详细的方法测试,帮助大家加深对StringUtils工具类的了解。 /** * isEmpty()判断对象是否为空/空字符串 */ public static void isEmptyTest(){ ...原创 2020-02-28 08:56:06 · 1443 阅读 · 0 评论 -
java Optional类
类作用Optional作为处理空指针的类,主要用途是作为一种返回类型,在获得该类型的一个实例后,如果存在值,可以提取该值;如果不存在值,可以设置一个默认值。常用写法public class OptionalTest { /** * 测试Optional of()、ofNullable() */ private static void test1(){/...转载 2020-02-22 13:10:59 · 595 阅读 · 0 评论 -
gitignore忽略不需要提交的文件
进行项目开发时,有时很多文件并不需要提交到git仓库。为避免每次add提交时,显示很多的文件信息,采用如下方式自动忽略不需要提交的文件:1.使用ll -a查看文件目录[dhp@dhpMac]: ll -atotal 32drwxr-xr-x@ 10 dhp staff 320B 2 6 20:48 .drwx------+ 52 dhp staff 1.6K ...原创 2020-02-06 21:55:16 · 750 阅读 · 0 评论 -
解决if else多层嵌套问题
转载自公众号:码农沉思录,值得学习。写在前面不知大家有没遇到过像“横放着的金字塔”一样的if else嵌套:if (true) { if (true) { if (true) { if (true) { if (true) { if (true) { ...转载 2020-01-03 21:43:12 · 13391 阅读 · 0 评论 -
设计RPC框架应考虑的问题
最近面试遇到一个很好的问题,面试官说如何设计一个RPC框架,虽然自己在Hadoop中会用到RPC,但是从来没总结过PRC框架的知识点,所以记录一下喽。RPC作用RPC作为分布式系统常见的一种通信方法,通俗来讲,RPC就是从一台机器(客户端)上通过参数传递的方式调用另一台机器(服务器)上的一个函数或方法(可以统称为服务)并得到返回的结果。框架需解决问题RPC要达到的目标:远程调用时,要能够像...原创 2019-10-31 11:34:20 · 1664 阅读 · 0 评论 -
多构造器参数使用build设计模式
最近看HDFS源码,看到写副本时,ReplicaInfo类使用到了build设计模式,所以整理这篇文章,加深学习。提出问题当一个业务复杂的类包含多个属性时,如果我们想要创建实例对象时,就必须定义构造器,针对属性的可选性,我们的类可能变得如下:public class User { private final String name; private final int ag...原创 2019-10-28 21:45:56 · 1777 阅读 · 0 评论 -
自定义一个类叫java.lang.System???
原则上不行,类加载使用了双亲委托机制,当类加载器接收到类加载请求时,首先,该类加载器不会直接去加载类,而是让父类去加载,父类再去找父类去加载;当最顶层的父类无法加载时,才让子类去加载;System类会由启动类加载器去加载,所以我们自定义的System类完全没机会去加载。通过下面源码,可以看到类加载的整个处理逻辑。public Class<?> loadClass(String...原创 2019-07-26 19:51:59 · 536 阅读 · 0 评论 -
生产者-消费者模式
生产者和消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一个存储空间,生产者往存储空间中添加产品,消费者从存储空间中取走产品,当存储空间为空时,消费者阻塞,当存储空间满时,生产者阻塞。通过平衡生产者的生产能力和消费者的消费能力来提升整个系统的运行效率,这是生产者消费者模型最重要的作用 。/** * 生产者消费者模型 * 通过wait、notify实现 * 缓冲区满和为...原创 2019-07-22 13:46:51 · 745 阅读 · 0 评论 -
ReentrantLock知识大盘点
定义重入锁就是支持重新进入的锁,表示该锁能够支持一个线程对资源的重新加锁。实现重进入ReenTrantLock为了实现重进入,必须要解决两个问题:(1) 线程再次获取锁;(2) 锁的最终释放。ReentrantLock是通过组合自定义同步器来实现锁的获取和释放,处理逻辑:通过判断当前线程是否为获取锁的线程来决定获取操作是否成功,如果是获取锁的线程再次请求,则将同步状态值进行增加并返...原创 2019-07-22 13:33:41 · 813 阅读 · 0 评论 -
java线程池知识点
线程池的优势合理的使用线程池会带来三个好处:降低资源的消耗。通过重复利用已创建的线程降低线程创建和销毁的开销;提高响应速度。当任务到达时,任务不需要等到线程创建就能直接执行;提高线程的可管理性。线程是稀缺资源,使用线程池可以进行统一分配、调优和监控。工作原理线程池保存一定量的线程,当有任务提交到线程池时,线程池若还没有达到最大线程数,则创建一个线程执行任务。若所有的线程都处于工作状...原创 2019-06-30 20:50:12 · 1312 阅读 · 1 评论 -
synchronized大盘点
利用synchronized实现同步的基础Java 中的每一个对象都可以作为锁,具体表现为三种形式:对于普通同步方法,锁的是当前实例对象;对于静态同步方法,锁的是当前类的class对象;对于同步代码块,锁的是synchronzied括号中配置的对象。(静态为何锁的是class对象:synchronzied方法执行之前需要一个monitor,对于一个静态方法而言,monitor关联的是类...原创 2019-07-09 22:46:48 · 1024 阅读 · 0 评论 -
反射和动态代理
1 关于反射反射最大的作用之一就在于我们可以不在编译时知道某个对象的类型,而在运行时通过提供完整的”包名+类名.class”得到。注意:不是在编译时,而是在运行时。功能:在运行时能判断任意一个对象所属的类。在运行时能构造任意一个类的对象。在运行时判断任意一个类所具有的成员变量和方法。在运行时调用任意一个对象的方法。通俗来讲,利用Java反射机制我们可以加载一个运行时才得知名称的c...原创 2019-06-23 14:14:48 · 1132 阅读 · 0 评论 -
hdfs mkdir递归建立目录背后的设计
我们都知道hdfs命令:hdfs fs -mkdir -p /xx1/xx2/xx3 可递归创建一个目录,简单的命令背后,hadoop源码是如何执行的呐?接下来一起领略一下hadoop的源码魅力。接下来直接上mkdirs方法:public boolean mkdirs(Path f) throws IOException{ Path parent = f.getParent(); //...原创 2019-05-12 15:37:52 · 4284 阅读 · 0 评论 -
一个多线程面试题引发的思考
最近在梳理多线程的问题,遇到一个多线程的面试题,由此引发了一点思考:自己与优秀的工程师差距在哪里,这个面试题让自己看到了差距。希望自己以后在注重量的同时,能更多的关注质。题目:实现一个容器,提供两个方法:add,size。 写两个线程,线程1添加10个元素到容器中,线程2实现容器元素个数的监听,当个数达到5个时,线程2给出提示并结束。答案:方式一:public class T12 {...原创 2019-04-20 11:55:06 · 1830 阅读 · 0 评论 -
记一次有趣的hadoop源码编译
之前看到过很多人讲解源码编译,但自己一直没有尝试过。最近由于工作需要,想在本地搭建一个hadoop阅读环境,学习一下hadoop源码。准备阶段(1)首先下载要编译的hadoop源码版本,镜像链接如下:http://mirror.bit.edu.cn/apache/hadoop/common/(2)进入到hadoop目录,查看BUILDING.txt,了解编译需要的环境要求:比如本人编译的...原创 2019-05-04 13:58:14 · 1760 阅读 · 0 评论