
java
文章平均质量分 81
迈巴鹤
每天学习一点点,单车变迈巴鹤。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JDK源码环境搭建
本教程是用idea搭建,jdk源码就在jdk安装路径下的src.zip中,解压即可用。第一步:新建项目打开IDEA,按如下步骤新建一个简单Java项目create new project新建一个简单Java项目点击finish后,项目就创建好了第二步:添加源码将之前解压的src.zip复制到工程目录下第三步:替换JDK关联为了能够备注以及避免修改到其他项目所使用的内...原创 2020-04-06 21:51:21 · 1605 阅读 · 2 评论 -
java优雅实现判空逻辑-工具类使用
在写代码过程中,最常见的就是对对象的判空,一不小心就会抛出 NullPointerException 空指针异常,被大佬训斥一番,提醒下次要注意代码的健壮性。代码判空常见并且写法不一,java常用的jar包对常见的判空逻辑提供了工具类,提高代码的健壮性和统一性。新手常见的写法举例创建一个list集合,List list = new ArrayList<>(),进过业务逻辑处理,最终将对象放到list中。然后想从集合中取第一条数据list.get(0),list为null不就报空指针异常了原创 2022-02-22 17:32:46 · 1932 阅读 · 3 评论 -
如何优雅的使用线程池
JAVA中Thread这个类是线程类,在JAVA基础时,对于线程的认识是基于此类,为什么不使用Thread直接执行线程例子呢,而要使用线程池?可以试想,当并发数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。而线程池可以达到这样的效果:线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务。Thread的弊端:每次 new Thread() 新建对象,性能差;线程缺乏统一管理,可能无限制的新建线程,原创 2022-01-13 19:45:29 · 510 阅读 · 0 评论 -
实现一个点赞功能
基于 SpringCloud, 用户发起点赞、取消点赞后先存入 Redis 中,再每隔两小时从 Redis 读取点赞数据写入数据库中做持久化存储。点赞功能在很多系统中都有,但别看功能小,想要做好需要考虑的东西还挺多的。 点赞、取消点赞是高频次的操作,若每次都读写数据库,大量的操作会影响数据库性能,所以需要做缓存。至于多久从 Redis 取一次数据存到数据库中,根据项目的实际情况定吧,我是暂时设了两个小时。项目需求需要查看都谁点赞了,所以要存储每个点赞的点赞人、被点赞人,不能简单的做计数。文章分四部分原创 2022-01-09 21:40:42 · 3548 阅读 · 3 评论 -
java匿名内部类
匿名内部类是局部内部类的更深入一步。假如只创建某类的一个对象时,就不必将该类进行命名。匿名内部类的前提是存在一个类或者接口,且匿名内部类是写在方法中的。只针对重写一个方法时使用,需要重写多个方法时不建议使用格式:new 类名或接口名(){ 重写方法;}; //注意分号//以上就是内部类的格式,其实这整体就相当于是new出来的一个对象不使用匿名内部类来实...原创 2020-04-05 11:33:10 · 234 阅读 · 0 评论 -
poi解析word为html时空指针异常处理
poi操作word后,将生成的word解析为html时报空指针异常,于是跟踪代码发现三处poi的空指针异常处理不严谨的地方。1.package org.apache.poi.xwpf.converter.core包下的XWPFDocumentVisitor类中的getXWPFNum方法原代码:protected XWPFNum getXWPFNum(CTNumPr numPr) { ...原创 2020-02-26 08:57:27 · 1499 阅读 · 7 评论 -
java线程池看这一篇就够了
我们都是通过new Thread来创建一个线程,由于线程的创建和销毁都需要消耗一定的CPU资源,所以在高并发下这种创建线程的方式将严重影响代码执行效率。而线程池的作用就是让一个线程执行结束后不马上销毁,继续执行新的任务,这样就节省了不断创建线程和销毁线程的开销。ThreadPoolExecutor创建Java线程池最为核心的类为ThreadPoolExecutor:它提供了四种构造函数来创...原创 2019-08-17 10:47:01 · 987 阅读 · 0 评论 -
Java8之异步编程
异步编程所谓异步其实就是实现一个无需等待被调用函数的返回值而让操作继续运行的方法创建任务并执行任务无参创建 CompletableFuture<String> noArgsFuture = new CompletableFuture<>();复制代码传入相应任务,无返回值runAsync方法可以在后台执行异步计算,但是此时并没有返回值。持有一个Runnable对...原创 2019-08-12 15:01:55 · 9896 阅读 · 0 评论 -
Java设计模式-工厂模式
java工厂模式工厂模式分为三类: 1. 简单工厂模式(Simple Factory):工厂类一般是使用静态方法,通过接收的参数的不同来返回不同的对象实例。 不修改代码的话,是无法扩展的。 2. 工厂方法模式(Factory Method):对每一种产品提供一个工厂类 。通过不同的工厂实例来创建不同的产品实例。 在同一等级结构中, 支持增加任意产品 。 3. 抽象工厂模式(...原创 2018-02-23 23:01:23 · 1316 阅读 · 0 评论 -
Hashmap
Hashmap是java面试中经常被问的问题,其重要性不言而喻。这不禁想起HashMap和Hashtable的比较: 1. HashMap几乎可以等价于Hashtable,除了HashMap是非synchronized的,并可以接受null(HashMap可以接受为null的键值(key)和值(value),而Hashtable则不行)。 2. HashMap是非synchronized,...原创 2018-03-01 12:09:16 · 1323 阅读 · 0 评论 -
java设计模式之动态代理
前言为了更好的理解代理模式,首先根据生活中实际场景进行模拟,让我们在生活中去体验设计思想的美妙。场景描述“病从口入”这句成语告诉我们注意饮食健康,小六同学想吃苹果,在吃苹果之前需要清洗一下苹果和洗一下手,吃完苹果后,需要洗一下手保持个人卫生;十分钟后。。。小六同学又想吃一个大鸭梨,清洗鸭梨–洗手–吃鸭梨–吃完洗手。代码模拟苹果和鸭梨都属于食物,创建一个食物接口public interf...原创 2019-07-13 11:54:25 · 769 阅读 · 0 评论 -
Java 技术书籍大全
前言本文档目前已收录 277本 Java相关领域经典技术书籍,从初级开发者到资深架构师,涵盖 Java 从业者的各个阶段。涵盖领域:Java入门书籍,Java基础及进阶书籍,框架与中间件,架构设计,设计模式,数学与算法,JVM周边语言,项目管理&领导力&流程,职业素养与个人成长,格局与视野,面试参考书等。入门书籍《明解Java》 - 豆瓣评分 8.5《Java从入门到精...原创 2019-08-11 20:38:49 · 9130 阅读 · 1 评论 -
多种方法重构if语句
1. 前言项目开发初期阶段if/else语句一般比较简单,然后随着时间的推移和业务量的增加,if/else分之会越来越长。下面对如何重构if/else做出了详细分析。2. 案例研究我们经常遇到涉及很多条件的业务逻辑,并且每个都需要不同的处理,我们以Calculator类作为演示样例。有一个方法,它接受两个数字和一个运算符作为输入项,并根据操作返回相应结果:public int calcul...原创 2019-08-11 20:37:08 · 2521 阅读 · 0 评论 -
常用日期和时间API[Java8]
Java 8之前的库对日期和时间的支持并不理想,为了解决这个问题,Java 8引入了一套全新的时间日期API,位于java.time路径下。LocalDateLocalDate类型包含了年月日信息,下面举些LocalDate的使用示例:LocalDate date = LocalDate.of(2018, 4, 20); // 2018-04-20int year = date.get...原创 2019-08-20 13:12:57 · 843 阅读 · 0 评论 -
中文乱码在java中URLEncoder.encode方法要调用两次解决
一、场景:1、我在客户端要通过get方式调用服务器端的url,将中文参数做utf-8编码,需要在js中两次的进行编码,服务器端才能用decode方法一次获取。例如:var xing=encodeURIComponent(encodeURIComponent(xing));2、如果我在客户端用java输出汉字作为参数,并且用http协议,也是需要两次才能在服务器端正常的一次decodex...转载 2019-04-26 14:54:09 · 1913 阅读 · 0 评论