
Java Practice
Java实战
boonya
资深Java,热衷大数据,Python爬虫,持续探索副业中,有需要的可以加我微信联系:boonya221
展开
-
Java队列和线程池消费处理的简单设计
目录实现目标目标分析线程池设计队列与线程池结合实现目标队列缓冲业务数据 线程空闲忙碌识别 任务处理的进度控制目标分析进度控制:需要将队列里面总任务和线程消费的任务进行记录,实现一个completed/total 这样的控制。线程池控制:线程池使用计数器,在完成任务和新增任务进行原子操作维护计数器数量。线程池设计线程池实际上就是一个线程的池化处理,一般会初始化几个线程,需要使用线程时从池子里面拿,池子里面的总容量占用多少可以用来标记线程繁忙和空闲。线程池的设...原创 2020-12-03 13:08:05 · 1694 阅读 · 0 评论 -
阿里DruidDataSource访问RDS安全级别受限问题排查
RDS是关系型数据库服务(Relational Database Service)的简称,是一种即开即用、稳定可靠、可弹性伸缩的在线数据库服务。具有多重安全防护措施和完善的性能监控体系,并提供专业的数据库备份、恢复及优化方案,使您能专注于应用开发和业务发展。问题描述:使用JDBC和Hikari连接RDS都可以正常启动服务,使用DruidDatabase连接RDS却启动不起来。限制问题日志主要提示的是sun.misc.Unsafe.park(Native method) ,此问题可能是系统级别的安原创 2020-09-17 18:20:44 · 3265 阅读 · 0 评论 -
Java经典重现之方法重载导致java.lang.StackOverflowError异常
由于代码写的不够严谨,经常认为万无一失的地方却出现了重大问题,比如说简单的一个方法重载导致的栈溢出。这种问题已经看到好几次了,虽然代码不是自己写的,还是应该引起重视。目录定义接口和实现错误日志定义接口和实现接口:package com.boonya.stackerror;public interface Geometry { /** * 工...原创 2019-04-17 19:17:58 · 624 阅读 · 0 评论 -
Java Cloneable接口与Serializable接口实现对象克隆和深度克隆
Cloneable接口与Serializable接口都是定义接口而没有任何的方法。Cloneable可以实现对象的克隆复制,Serializable主要是对象序列化的接口定义。很多时候我们涉及到对象的复制,我们不可能都去使用setter去实现,这样编写代码的效率太低。JDK提供的Cloneable接口正是为了解决对象复制的问题而存在。Cloneable结合Serializable接口可以实现JVM对象的深度复制。原创 2017-04-27 15:42:36 · 2288 阅读 · 0 评论 -
Java中Enum、EnumMap、EnumSet使用示例
原文地址:https://examples.javacodegeeks.com/java-basics/java-enumeration-example/原文讲解也是比较细致,大略观之,以快图之。1.Enum示例1.1Day.javapublic enum Day { SUNDAY(1), MONDAY(2), TUESDAY(3), WEDNESDAY(4), THURSD转载 2017-02-09 22:36:26 · 4770 阅读 · 0 评论 -
HashSet,TreeSet 和 LinkedHashSet比较
原文出处: 泥沙砖瓦浆木匠-Jeff_Li一、Set回顾一个不包括重复元素(包括可变对象)的Collection,是一种无序的集合。Set不包含满 a.equals(b) 的元素对a和b,并且最多有一个null。泥瓦匠的记忆宫殿:1、不允许包含相同元素2、判断对象是否相同,根据equals方法二、HashSet一个按着Hash算法来存转载 2015-04-09 21:36:57 · 788 阅读 · 0 评论 -
Java 8特性指南 – 终极手册
编者:距离Java 8的发布已经有段时间了,就目前看来它的确是一个非常重要的版本。我们之前已经在JavaCodeGeeks发布了一系列专题文章,如玩转Java 8-Lambda表达式和并发,Java 8日期/时间API入门:LocalDateTime以及 JDK8时代的抽象类vs.接口。同时我们也从其它来源处引用了15个必读的Java 8教程。当然,我们也对它的一些短板进行了验证,如J转载 2015-04-09 21:28:28 · 1147 阅读 · 0 评论 -
JDBC入门教程 – 终极指南
This article is from:http://www.javacodegeeks.com/zh-hans/2015/03/jdbc%E5%85%A5%E9%97%A8%E6%95%99%E7%A8%8B.html本教程主要介绍JDBC(Java数据库连接)—— 一个Oracle提供的API,它可以帮助程序员处理Java应用程序中不同数据库的访问问题:程序员可以通过它建转载 2015-04-09 20:57:03 · 1533 阅读 · 0 评论 -
ArrayList 、LinkedList和Vector比较
原文出处: 泥沙砖瓦浆木匠-Jeff_Li一、List回顾序列(List),有序的Collection,正如它的名字一样,是一个有序的元素列表。确切的讲,列表通常允许满足 e1.equals(e2) 的元素对 e1 和 e2,并且如果列表本身允许 null 元素的话,通常它们允许多个 null 元素。实现List的有:ArrayList、LinkedList、Vector、St转载 2015-04-09 20:21:17 · 681 阅读 · 0 评论 -
深入分析Java ClassLoader原理
一、什么是ClassLoader?大家都知道,当我们写好一个Java程序之后,不是管是CS还是BS应用,都是由若干个.class文件组织而成的一个完整的Java应用程序,当程序在运行时,即会调用该程序的一个入口函数来调用系统的相关功能,而这些功能都被封装在不同的class文件当中,所以经常要从这个class文件中要调用另外一个class文件中的方法,如果另外一个文件不存在的,则会引发系统异转载 2015-04-09 20:17:24 · 894 阅读 · 0 评论 -
HashMap的工作原理
HashMap的工作原理是近年来常见的Java面试题。几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道Hashtable和HashMap之间的区别,那么为何这道面试题如此特殊呢?是因为这道题考察的深度很深。这题经常出现在高级或中高级面试中。投资银行更喜欢问这个问题,甚至会要求你实现HashMap来考察你的编程能力。ConcurrentHashMap和其它同步集合的引入转载 2015-04-09 20:12:02 · 735 阅读 · 0 评论 -
Java习惯用法总结
在Java编程中,有些知识 并不能仅通过语言规范或者标准API文档就能学到的。在本文中,我会尽量收集一些最常用的习惯用法,特别是很难猜到的用法。(Joshua Bloch的《Effective Java》对这个话题给出了更详尽的论述,可以从这本书里学习更多的用法。)我把本文的所有代码都放在公共场所里。你可以根据自己的喜好去复制和修改任意的代码片段,不需要任何的凭证。目录转载 2015-04-09 13:38:19 · 786 阅读 · 0 评论 -
打开Java VisualVM
1、安装JDK 安装很简单,这里不再冗叙,测试JDK是否安装成功:在窗口命令中输入java -version测试之。2、打开JavaVisualVM在窗口命令中输入:jvisualvm命令Enter键进入。中间会进行验证,并弹出验证信息,点击确认进入Java VisualVM原创 2015-04-08 13:31:09 · 8317 阅读 · 0 评论 -
Java开发者写SQL时常犯的10个错误
SQL在专业的Java开发中多么重要。基本的SQL知识被忘掉(的情况)普遍存在。通过embracing SQL,你就能了解像 jOOQ或MyBatis这样的以SQL为中心的库正好反应了市场的需要。 令人惊喜的是有用户提到了我博客上贴的一篇“SLICK’s mailing list”,SLICK是Scala中的一个不以SQL为中心的数据库访问库,像LINQ(还有LINQ-to-SQL),它侧转载 2015-04-08 10:19:03 · 899 阅读 · 0 评论