
01丨Java
文章平均质量分 73
Java面向对象、修饰符、字符串、集合、日志等基础知识。
吾日三省贾斯汀
我是贾斯汀,一枚喜欢分享技术和经验的新生代码农~
古人有云:工欲善其事,必先利其器!
吾日三省:善用则益之,滥用则害之!
展开
-
Java--换工作也要学废的快速排序之三部曲解法
换工作也要学废的快速排序之Java三部曲解法原创 2021-12-13 17:45:52 · 1943 阅读 · 2 评论 -
LeetCode--Java实现704.二分查找、278.第一个错误的版本、35.搜索插入位置
目录学习背景704.二分查找题目分析解题思路代码实现278.第一个错误的版本题目分析解题思路代码实现35.搜索插入位置题目分析解题思路代码实现学习背景本文主要介绍如何通过Java实现LeetCode官方提供的以下数据结构与算法题目:704.二分查找278.第一个错误的版本35.搜索插入位置704.二分查找题目分析原题:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回原创 2021-10-13 17:05:30 · 1298 阅读 · 0 评论 -
Java--设计模式之单例模式+保证线程安全的5种写法(懒、汉、内、双、枚)
2原创 2021-10-10 17:02:53 · 3899 阅读 · 31 评论 -
Java--线程Thread生命周期的几种状态相互转换及常用API方法说明
❤️大家好,我是贾斯汀,今天主要聊一聊关于线程的瓜!❤️先来看一下线程这张图线程的几种运行状态之间运行流程:看不懂没关系,慢慢来学习,往下学习来继续了解一下~什么是线程?线程是进程的一部分,是程序执行中的一条执行路线;进程就是指程序在其自身地址空间的一次执行活动,是程序独立运行的基本单位;一个进程可以包含多条线程,一个条线程对应一个进程中的一条执行路线。线程的几种创建方式?主要由四种方式创建线程具体每一种创建方式说明及代码实现如下:/** * 创建Thread线原创 2021-10-07 17:09:05 · 21596 阅读 · 47 评论 -
Java--深入理解字符串的String#intern()方法奥妙之处
学习背景进入正文学习字符串的intern()方法之前,先给下这4个问题,看下自己是否都知道答案?1、String s1 = “a” + “b”; //创建了几个对象?2、String s2 = new String(“ab”); //创建了几个对象?3、String s3 = new String(“a”) + new String(“b”); //创建了几个对象?4、String s4= new String(“a”) + new String(“a”); s4.intern(); //创建了原创 2021-10-05 18:30:41 · 5535 阅读 · 44 评论 -
Java--敲重点!JDK1.8 HashMap特性及底层数组+单链表+红黑树知识(建议收藏)
HashMap的特性继承AbstractMap抽象类,实现Map接口以及Cloneable, java.io.Serializable克隆和序列化HashMap底层数据结构是由数组+链表组成的哈希表存储的元素是键值对,key键是唯一的,并且允许为null通过key的hash值计算出需要存放在哈希表中的数组位置index默认初始化容量大小为0,第一次调用put真正给默认大小16,每次扩容oldCap << 1即原来容量的2倍常用的API方法put(key,value)/get(k原创 2021-09-30 07:00:00 · 18488 阅读 · 41 评论 -
Java--几种位运算及常见进制说明(解读HashMap源码必备知识)
您好,我是贾斯汀,今天又来学习啦!【学习背景】学习Java的小伙伴,都知道想要提升个人技术水平,阅读JDK源码少不了,但是说实话还是有些难度的,底层源码实现的原理离不开各种常用的数据结构和算法,很多时候还会用到各种位运算,比如面试必问和工作写烂透了的HashMap,就一个put(key,value)添加元素的底层实现,就用到了各种位运算知识,不对位运算略知一二,你还真读不懂它的源码,所以本文主要对Java中的几种位运算以及常见进制的说明,还会以HashMap底层实现添加元素四部曲展开说明,希望能提高提原创 2021-09-27 17:05:04 · 1620 阅读 · 17 评论 -
Java--深入JDK和hotspot底层源码剖析Thread的run()、start()方法执行过程
【学习背景】今天主要是来了解Java线程Thread中的run()、start()两个方法的执行有哪些区别,会给出一个简单的测试代码样例,快速理解两者的区别,再从源码层面去追溯start()底层是如何最终调用Thread#run()方法的,个人觉得这样的学习不论对面试,还是实际编程来说都是比较有帮助的。进入正文~学习目录一、代码测试二、源码分析2.1 run()方法2.2 start()方法三、使用总结一、代码测试执行Thread的run()、start()方法的测试代码如下:public原创 2021-09-26 08:00:00 · 2398 阅读 · 28 评论 -
Java--JDK自带JVM性能调优工具jconsole远程监控tomcat进程
【学习背景】学习Java的小伙伴,应该都知道JVM,那你听过JVM的性能调优工具之一jconsole吗?啥,不知道??那没关系,带你花几分钟快速了解下,后续有时间可以自己动手去熟悉一下进入正文~java version “1.8.0_221”温馨提示:Oracle JDK从2019年4月16号开始商用商用商用收费,最后一个免费JDK版本是1.8.202官方公告:The Oracle JDK License has changed for releases starting April 16, 20原创 2021-09-23 13:50:56 · 19774 阅读 · 33 评论 -
Java--重新认识八种基本数据类型,以后入职不给公司大佬挖坑
欢迎进来学习的小伙伴~【学习背景】相信很多初学Java的小伙伴或者已经入行的xdm,必然了解Java的八种基本数据类型,Java的数据类型主要分为引用数据类型和基本数据类型,引用数据类型就是平时大家说的万物皆对象Object,而基本数据类型,对应的有八种,大家应该都记得(也可能不知道或者记不全了,哈哈哈)如果你是Java初学者,那么当你去面试Java初级工程师的时候,面试官可能会比较喜欢问这个问题,主要是想考察小伙伴们对基本数据类型了解多少,写代码时会不会乱用基本数据类型,给公司的大佬们挖坑,哈哈哈~原创 2021-09-14 07:45:47 · 18719 阅读 · 57 评论 -
Java--String、StringBuilder及StringBuffer区别及性能对比
【学习背景】主要是想通过OpenJDK提供的JMH工具测试下String、StringBuilder及StringBuffer字符串拼接的效率如何~关于JMH的介绍及具体使用,我的这篇博文中有介绍:Java–☀️面试官:LinkedList真的比ArrayList添加元素快?❤️本文通过Open JDK JMH带你揭开真相《⭐建议收藏⭐》当然,除了主要验证三者的字符串拼接效率之外,还会对三者做一些区别分析及常见面试问题总结,希望加深自己对这三者的认知,分享出来,也希望能帮助到有需要的小伙伴~原创 2021-09-03 12:13:52 · 10608 阅读 · 246 评论 -
Java--LinkedList真的比ArrayList添加元素快?Open JDK JMH带你揭开真相
【学习背景】欢迎进来学习的小伙伴~不管你是学生,还是职场小白,还是入行1~3年的小伙伴,相信很多小伙伴在面试Java工作岗位时,发现LinkedList和ArrayList这个问题基本是必面的一道题,【面试场景】当面试官问到LinkedList和ArrayList的区别时,可能很多准备得不够充分的小伙伴第一反应的回答仅仅是这样的:LinkedList底层数据结构是链表,添加和删除元素效率比ArrayList高~ArrayList底层数据结构是数组,查询效率比LinkedList高~面试官:哦原创 2021-08-31 13:25:28 · 21349 阅读 · 332 评论 -
Java--反射机制原理、几种Class获取方式及应用场景
目录学习背景一、Java反射机制是什么?1.1 反射原理1.2 举例说明二、Java反射机制中获取Class的三种方式及区别?2.1 三种方式及区别2.2 代码演示区别三、Java反射机制的应用场景有哪些?3.1 应用场景3.2 应用场景实现3.2.1 简单工厂模式3.2.2 简单工厂模式优化(应用场景)3.2.1 代理模式中动态代理(应用场景)学习背景学习Java的小伙伴,可能听过Java反射机制,但是熟悉又有点陌生,本文主要是通过思考面试中经常被问到的几个Java反射机制的问题,再通过理论知识结合代原创 2021-08-24 07:00:23 · 40350 阅读 · 213 评论 -
Java--如何实现JDBC连接MySQL数据库
一、连接说明JDBC连接mysql数据库,需要依赖mysql-connector-java驱动包。附:数据库--Java JDBC连接(oracle)否则报异常如下:二、连接介质Mysql驱动架包mysql-connector-java-5.1.30.jarhttps://pan.baidu.com/s/1RM0HgoK8UT-9Xlp_dbZJ9w其他版本到官网...原创 2017-09-04 17:44:41 · 1913 阅读 · 0 评论 -
java--如何获取Tomcat同级目录
实例代码//1.项目路径String projectPath = request.getSession().getServletContext().getRealPath("/");//2.tomcat同级路径String tomcatPath = new File(projectPath ).getParentFile().getParentFile().getAbsolute...原创 2018-01-24 15:09:41 · 2714 阅读 · 0 评论 -
Java--基于Java编写的数据库加解密工具包(附)GitHub源码
GitHub开源地址:https://github.com/JustinJava/pwd-encrypt-decrypt(图1)项目应用场景(图2)SHELL脚本应用场景一、背景介绍如上图1和图2标记部分所示,项目中数据库连接配置的密码密文和SHELL脚本中的动态密文,就是基于本工具包实现的~不知道你的项目数据库连接配置,是不是还在用明文密码或者SHELL脚本直接写死数据库连接密码?如果是的话,那不妨试试来了解了解下这个工具包,简单、使用、安全~关于工具包介绍和说明,可以看下我GitH原创 2021-07-27 09:25:14 · 18467 阅读 · 32 评论 -
java--HashMap源码之hash值计算(图解)
一、学习背景最近在了解HashMap 存储元素的底层原理时,看到其中的hash 算法,运用到了位运算中的按位异或(^)、无符号右移(>>>),重新复习了下位运算的知识体系,文章以整数10和-10为例,进行讲解。HashMap存储元素底层源码二、图解位运算十转二进制...原创 2019-05-31 13:50:12 · 2241 阅读 · 1 评论 -
Java--获取xml头encoding编码方式
一、说明标准的xml头部分规范定义如下:<?xml version="1.0" encoding="UTF-8" standalone="no"?>Java代码主要实现的功能就是通过截取xml头中encoding对应的值,即编码方式。二、实现代码package com.justin.test;import java.io.IOException;impor...原创 2019-11-20 15:48:25 · 3152 阅读 · 3 评论 -
Java--Entity实体类get获取属性,修改属性值,不用set对象属性就改变
一、问题说明今天在review代码时,发现了一段代码,有点意思,主要代码大致这样写的 Student student = new Student(); HashMap<String, Object> otherInfo = student.getOtherInfo(); otherInfo.put("sex", "男"); otherInfo.p...原创 2019-11-20 15:21:46 · 8273 阅读 · 0 评论 -
Java--工具类String、Map、JSONObject、JSONArray相互转换
目录一、前期说明二、转换实现2.1 net.sf.json.JSONObjectMap、JSONObject、JSONArray转jsonObjectStringjsonObjectString 转JSONObjectjsonArrayString 转JSONArrayjsonObjectString 转MapMap转JSONObjectJSONArray转JS...原创 2017-12-15 11:24:21 · 16876 阅读 · 0 评论 -
Java--POI实现.xls .xlsx Excel导出
一、说明本文只贴导出功能代码,导入功能可以参考博文http://blog.youkuaiyun.com/justinqin/article/details/78769789二、功能代码Mapper层<resultMap id="OddNumbers" type="com.sale.entity.Order" > <id column="id" property="i...原创 2017-12-13 18:25:41 · 15096 阅读 · 0 评论 -
Java--POI技术处理Excel表 .xls ..xlsx两种格式的导入操作
一、说明原文标题====SpringMvc+POI 处理Excel的导入操作功能====提到了ImportExcelUtil.java(Excel解析工具类)、UploadExcelControl.java (Spring控制器)、InfoVo.java(保存Excel数据对应的对象)、main.jsp(前端代码)以及配置文件web.xml、springmvc-servlet.xml(只做简...转载 2017-12-11 09:58:43 · 10387 阅读 · 0 评论 -
JAVA--JVM配置及JAVA_OPTS参数简述
一、配置JVM//Windows下Tomcat/bin/catalina.bat 新增set JAVA_OPTS="-server -Xms1024M -Xmx1024M -XX:PermSize=128M -XX:MaxPermSize=512M -Xss512KB"//Linux下Tomcat/bin/catalina.sh新增JAVA_OPTS="-server -Xms1024M...原创 2018-02-08 12:29:11 · 23533 阅读 · 2 评论 -
Java--HttpServletRequest getAttribute()、getParameter()方法
使用区别1、数据范围getParameter()方法传递的数据,会从Web客户端传到Web服务器端,代表HTTP请求数据;getAttribute()方法传递的数据只会存在于Web容器内部。2、返回类型getParameter()方法返回String类型的数据。getAttribute()方法返回request范围内存在的对象。PS:HttpServletReques...原创 2017-09-18 08:55:22 · 2746 阅读 · 0 评论 -
Java--Servlet redirect、forward、include区别
redirect(重定向)forward(转发)include(包含)redirect与forward/include的区别redirect是完全跳转,浏览器显示新URL,代表一个新的请求。而forward/include是容器中控制权的转向,浏览器显示的URL不变,表示同一个请求。include与forward的区别include和forward的区别在于输出的内容,includ...原创 2017-09-18 08:50:36 · 2867 阅读 · 0 评论 -
Java--Servlet如何标准创建
创建步骤1、右键,new->class新建一个ServletName类继承于HttpServlet2、快捷键Alt+Shift+S —> Override/Implement Methods,勾选doGet(HttpServletRequest,HttpServletRequest)、doPost(HttpServletRequest,HttpServletRespon...原创 2017-09-18 08:47:16 · 2090 阅读 · 0 评论 -
Java--Servlet调用doGet()、doPost()
一、说明1、JSP的FORM标签里的method属性为get或默认时,调用doGet(HttpServletRequest,HttpServletRequest)2、JSP的FORM标签里的method属性为post时,调用doPost(HttpServletRequest,HttpServletRequest)二、举例<form action='login' method='...原创 2017-09-18 08:43:29 · 7340 阅读 · 0 评论 -
Java--Servlet及它的生命周期
一、Servlet1、理解Servlet(Server Applet)是运行在web服务器端的一段小程序。2、功能它可以通过web服务器接受并处理浏览器发送的请求,而且能够将web服务器将动态生成的结果响应给浏览器,从而实现动态网页的功能。3、特征(1)必须运行在web服务器内部;(2)Servlet不会主动执行,必须由web服务器到调用。二、Servlet的...原创 2017-09-17 17:24:58 · 1759 阅读 · 0 评论 -
Java--enum枚举类的创建及使用
创建enum枚举类,并根据枚举key对应的枚举value,代码如下:/** * 创建enum枚举类,并根据枚举key对应的枚举value * @author Justin * */public enum EnumTest { 交易成功("S","交易成功"), 交易失败("F","交易失败"); private String key; private String va...原创 2019-10-12 10:14:27 · 4635 阅读 · 1 评论 -
Java--Bean、Map相互转换
一、说明平时日常Java开发,经常会涉及到Java Bean和Map之间的类型转换,当然项目里或者第三方jar都提供了各种实现api,这里主要通过Java代码,非工具类来实现这两者之间的转换。文中用到的Logger是slf4j-api-1.7.25.jar架包 网盘直接下载 https://pan.baidu.com/s/122siUCAQwZ55kYfdoD97sA可到Maven官网搜索...原创 2019-10-12 16:12:23 · 2255 阅读 · 0 评论 -
Java--变量名驼峰式和下划线互转
最近写代码的时候,涉及到解析报文这一块的知识,解析报文中的数据得到Java数据时,得到的变量名竟然是是下划线的,正常我们Java当中用的是驼峰式命名规则,因此需要驼峰式、下划线变量名之间进行转换。代码主要包含以下几种转换:下划线转驼峰式(String)驼峰式转下划线(String)下划线转驼峰式(Map)驼峰式转下划线(Map)实现代码import java.util.Has...原创 2019-10-14 09:50:52 · 4057 阅读 · 0 评论 -
Java--JDK下载 oracle官网隐藏bug加速下载
这几天因工作和学习需要下载windows、linux不同版本的jdk,奈何oracle官网下载需要注册账号,关键是速度跟蜗牛一样慢!!!各种网盘、论坛提供的下载链接很多,很多猿友都纷纷表示感谢楼主,但是心里用的还是不太踏实,特别是线上用~当然也有国内华为国内镜像https://repo.huaweicloud.com/java/jdk/但是华为提供的版本有限啊,jdk-8u211...原创 2019-10-16 15:56:35 · 1956 阅读 · 1 评论 -
Java--JDK下载 oracle官网指定jdk版本
咱们别跟其他人一样讲那么多废话,截那么多图,各种步骤最后才到jdk下载页面,这里就直接上下载最终的页面!!!一、oracle官网 jdk最新版本下载点击(2019.10.15最新版本JDK13)二、oracle官网 jdk历史版本下载点击PS:目前下载需要注册Oracle账号登录啦Google Chrome打不开oracle官网?可以试试Firefox火狐浏览器或...原创 2019-10-15 11:45:23 · 3343 阅读 · 0 评论 -
Java--JDK环境搭建(Linux)
本文以jdk-8u221-linux-x64.tar.gz版本为例,在Linux上进行JDK环境搭建,其他版本到官网下载~目录一、下载安装1.1、下载1.2、拷贝jdk到Linux1.3、解压jdk压缩包二、环境变量2.1、配置profile2.2、刷新配置2.3、验证安装一、下载安装 1.1、下载jdk-8u221-linux-x64.tar.gz...原创 2017-06-05 11:34:52 · 2319 阅读 · 3 评论 -
Java--入门指引
计算机专业毕业,从事Java开发工作到现在两三年,大学几年学的Java知识都是皮毛知识,没什么自己的知识体系和学习路线,想到什么学什么,一路走来比较艰辛。今年大多数的周末都会去读书馆提升个人专业技能,最近喜欢使用思维导图来整理自己的学习思路。刚好工作需要,整理了一份Java入门指引,作为新手入门培训讲解使用,贴出来,给想要学习Java,比较适合入门,但是又没有什么方向的新人小伙伴参考。一、...原创 2019-09-30 11:41:34 · 1132 阅读 · 0 评论 -
Java--equals()、hashCode()作用、hash算法分析
本文主要阐述个人所学知识观点,技能水平有限,如有不足之处,望各位大哥给小弟点建议,蟹蟹啦啦啦,文章走起咯~一、equals()、hashCode()使用说明1、hashCode()、equals()方法都是Object类中定义的方法即所有引用数据类型均可调用该方法;2、Object类中的hashCode()方法,默认实现是返回对象的内部地址转成的整数值,子类可重写该方法,并尽可能根据自身...原创 2019-07-18 09:09:21 · 1321 阅读 · 1 评论 -
Java--字符串String和StringBuffer、StringBuilder区别分析
一、定义 1、String 字符串常量 2、StringBuffer 字符串变量(线程安全) 3、StringBuilder 字符串变量(非线程安全) 二、区别 1、String和StringBuffer (1)String是不可变的对象,字符串内容改变会生成全新的对象,同时对象引用会重新指向新对象,字符串内容改变容易产生很多无引...原创 2019-05-28 10:21:07 · 1108 阅读 · 0 评论 -
Java--修饰符public、protected、friendly、private作用域
一、修饰符说明public 对外开放,所有地方可直接访问;protected 仅同包下的类以及不同包的子孙类访问;friendly 仅同包下的类访问,不同包拒绝访问,即便是子孙类;private 仅当前类放问。二、作用域列表(√表示支持访问,×拒绝访问)PS:不写时默认为friendly,允许访问范围大到小为public>protected>fri...原创 2019-05-24 13:20:26 · 1666 阅读 · 26 评论 -
Java--equals、==使用区别
主要区别1、equals()是方法,==是比较运算符;2、比较基本数据类型时,只能用==,比较的是值是否相等;3、比较引用数据类型时,==比较的是引用地址是否相等,equals()则根据对象是否重写Object中的equals(),判断是equals比较引用地址还是equals比较内容。equals比较引用地址对象没有对Object类中equals()方法进行重写,则比较的是引...原创 2019-05-24 09:06:33 · 1177 阅读 · 0 评论 -
Java--基本数据类型、引用数据类型区别
一、基本数据类型基本数据类型变量存储的是<<<值例如整数型int i = 1,变量i存储的是值1Java有八种基本数据类型byte、short、char、int、float、double、long、boolean二、引用数据类型引用数据类型变量存储的是<<<引用地址例如Book book = new Book(),new Book(...原创 2019-05-23 16:01:01 · 1230 阅读 · 1 评论