Java 核心知识整理
Java 核心知识整理
攻城狮不是猫
分享各种编程语言、开发技术、分布式与微服务架构、分布式数据库、分布式事务、 云原生、大数据与云计算技术和渗透技术。另外,还会分字各种视频资源,面试题和面试技巧。
展开
-
浅谈Java中的final关键字
谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字。另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法。一、final关键字的基本用法在Java中,final关键字可以用来修饰类、方法和变量(包括成员变量和局部变量)。下面就从这三个方面来了解一下final关键字的基本用法。1、修饰类 当用final修...转载 2018-03-23 10:39:12 · 90 阅读 · 0 评论 -
【并发编程】编程思想之多线程与多进程(2)——线程优先级与线程安全
线程优先级现在主流操作系统(如Windows、Linux、Mac OS X)的任务调度除了具有前面提到的时间片轮转的特点外,还有优先级调度(Priority Schedule)的特点。优先级调度决定了线程按照什么顺序轮流执行,在具有优先级调度的系统中,线程拥有各自的线程优先级(Thread Priority)。具有高优先级的线程会更早地执行,而低优先级的线程通常要等没有更高优先级的可执行线程时才...转载 2019-03-14 10:47:49 · 174 阅读 · 0 评论 -
Java程序员修炼之道 之 Logging(2/3) - 怎么写Log
1. 一个最基本的例子使用Logging框架写Log基本上就三个步骤引入loggerg类和logger工厂类 声明logger 记录日志下面看一个例子//1.引入slf4j接口的Logger和LoggerFactoryimportorg.slf4j.Logger;importorg.slf4j.LoggerFactory;publicclassUserServic...转载 2019-04-09 13:50:57 · 271 阅读 · 0 评论 -
Socket 客户端 服务端 心跳监测
public class ClientHeart extends Thread { @Override public void run() { try { while (true) { ClientSender.getInstance().send(); synchronize...转载 2018-10-22 16:53:19 · 2674 阅读 · 0 评论 -
50道Java线程面试题
不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题。Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎。大多数待遇丰厚的Java开发职位都要求开发者精通多线程技术并且有丰富的Java程序开发、调试、优化经验,所以线程相关的问题在面试中经常会被提到。在典型的Java面试中, 面试官会从线程的基本概念问起, 如:为什么你需要使用线程, 如何创建线程,用什么方式...转载 2018-02-23 17:28:07 · 122 阅读 · 0 评论 -
Java泛型自定义设计命名的区别以及好处
根据官方解释,原文章我在oracle官网打开显示404E - Element集合中使用,比如List<E>T-Type声明是类型持有者的名称,比如定义一个泛型dao,可以用BaseDao<T>K-Key,V-Value用在键值匹配,比如Map<K,V>N-Number这个我没用过?表示不确定,比如List 同 List&...转载 2019-04-24 00:30:59 · 315 阅读 · 0 评论 -
什么是RESTful 如何给老婆解释什么是RESTful Javdroider
如何给老婆解释什么是RESTfulJavdroider Hong3 个月前老婆经常喜欢翻看我订阅的技术杂志,她总能从她的视角提出很多有趣的问题。一个悠闲的周日下午,她午觉醒来,又习惯性的抓起这个月的杂志,饶有兴趣地看了起来。果不其然,看着看着,她又对我发难了,“Restful是什么呀,老公?是restaurant的形容词吗,突然就觉得好饿了啊......”作转载 2018-01-24 11:28:39 · 276 阅读 · 0 评论 -
如何避免Java线程中的死锁
如何避免Java中的死锁?是多线程赛季味道的问题之一,在高级别上提出了更多问题并带有大量后续问题。尽管问题看起来非常基本,但大部分开发人员一旦开始深入研究就会陷入困境。面试问题从“ 什么是死锁? ” 开始,答案很简单,当两个或更多线程正在等待对方释放锁定并在无限时间卡住时,情况就称为死锁。它只会发生在多任务的情况下。你如何检测Java中的死锁?虽然这可能有很多答案,但是我的版本首先会查看代码,如果...翻译 2018-02-24 13:31:47 · 231 阅读 · 0 评论 -
final、finally与finalize的区别
final1、final修饰的class,代表不可以继承扩展。注意:final类中所有的成员方法都会隐式的定义为final方法。2、final的方法也是不可以重写的。 (1) 把方法锁定,以防止继承类对其进行更改。 (2) 效率,在早期的java版本中,会将final方法转为内嵌调用。但若方法过于庞大,可能在性能上不会有多大提升。因此在最近版本中,不需要final方法...转载 2019-04-01 14:51:45 · 102 阅读 · 0 评论 -
Java对double值进行四舍五入,保留n位小数的几种方法。其中,只有最后2种是最准确的。
项目要对一个double值保留小数点后3位,网上找到好几种方法,选一个用在项目中,实测发现有误差,再换一种,还是会有误差。最后经过多种情况测试,发现最后2种是精确的。package com.example.testndk;import java.math.BigDecimal;import java.math.RoundingMode;import java.text.Decimal...转载 2019-04-19 21:57:07 · 1894 阅读 · 0 评论 -
《Effective Java》Second Edition中文版笔记(完整)
原文地址:https://blog.csdn.net/youngsend/article/details/48086151第2章 创建和销毁对象第1条:考虑用静态工厂方法代替构造器一个类只能有一个带有指定签名的构造器。编程人员通常知道如何避开这一限制:通过提供两个构造器,它们的参数列表只在参数类型的顺序上有所不同。实际上这并不是个好主意。面对这样的API,用户永远也记不住该用哪个构造器,结果常常会...转载 2018-05-28 14:29:57 · 1113 阅读 · 0 评论 -
史上最简单 理解依赖注入和控制反转
从一个任务开始讲某天,公司领导找到开发人员,说要开发一个微信支付宝的收款明细获取功能,我们把这个任务作为一个案例进行说明。第一步:设计案例精简:把任务指派给开发人员完成。本句话中,有两个名词:“任务”和“开发人员”,所以我们考虑设计两个对象(任务和开发人员)。开发人员对象:package DependencyInjectionDemo;public class Javae...转载 2019-04-22 14:16:46 · 412 阅读 · 0 评论 -
事务的4种隔离级别,3大问题,脏读幻读不可重复读
一、数据库事务隔离级别数据库事务的隔离级别有4个,由低到高依次为Read uncommitted、Read committed、Repeatable read、Serializable,这四个级别可以逐个解决脏读、不可重复读、幻读这几类问题。√: 可能出现×: 不会出现脏读 不可重复读 幻读Read uncommitted √ √ ...转载 2019-05-05 13:41:20 · 1735 阅读 · 0 评论 -
java中RSA加解密的实现
原文:https://blog.csdn.net/draven1122/article/details/55212195关于加密数据长度和解密数据长度大家可以看一下我前一篇文章内的介绍:关于RSA算法密钥长度/密文长度/明文长度的介绍 [java] view plain copypublic static void main(String[] args) throws Exception { ...转载 2018-04-19 14:32:45 · 834 阅读 · 0 评论 -
spring mvc —— 上传文件 用 Commons FileUpload 上传文件(4-1)
controllerimport java.io.File;import java.io.IOException;import java.io.UnsupportedEncodingException;import java.util.ArrayList;import java.util.List;import javax.servlet.http.HttpServletRequ原创 2018-01-05 16:53:19 · 227 阅读 · 0 评论 -
Java并发编程之CAS
Java并发编程之CAS原文地址:作者: Jakob Jenkov 译者:张坤CAS(Compare and swap)比较和替换是设计并发算法时用到的一种技术。简单来说,比较和替换是使用一个期望值和一个变量的当前值进行比较,如果当前变量的值与我们期望的值相等,就使用一个新值替换当前变量的值。这听起来可能有一点复杂但是实际上你理解之后发现很简单,接下来,让我们跟深入的了解一下这项技术。CAS的...转载 2018-03-13 10:45:15 · 121 阅读 · 0 评论 -
java-观察者模式
原创 2017-12-29 16:16:27 · 92 阅读 · 0 评论 -
【并发编程】编程思想之多线程与多进程(1)——以操作系统的角度述说线程与进程
什么是线程什么是线程?线程与进程与有什么关系?这是一个非常抽象的问题,也是一个特别广的话题,涉及到非常多的知识。我不能确保能把它讲的话,也不能确保讲的内容全部都正确。即使这样,我也希望尽可能地把他讲通俗一点,讲的明白一点,因为这是个一直困扰我很久的,扑朔迷离的知识领域,希望通过我的理解揭开它一层一层神秘的面纱。任务调度线程是什么?要理解这个概念,须要先了解一下操作系统的一些相关概念。...转载 2019-03-14 10:32:23 · 149 阅读 · 0 评论 -
Java形参跟实参是什么?
形参:全称为“形式参数”是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传递的参数。形参的作用是实现主调函数与被调函数之间的联系,通常将函数所处理的数据,影响函数功能的因素或者函数处理的结果作为形参。没有形参的函数在形参表的位置应该写void.main 函数也可以有形参和返回值,其形参也称为命令行参数,由操作系统在启动程序时初始化,其返回值传递给操作系统。实参:可以是常量、变...转载 2019-03-22 14:25:06 · 5157 阅读 · 0 评论 -
tomcat jsp 打印 sigar
<%@page session="false" contentType="text/html; charset=ISO-8859-1" %><%@page import="org.hyperic.sigar.*" %><%@page import="java.io.PrintWriter" %><%@page import=原创 2018-10-23 09:36:55 · 173 阅读 · 0 评论 -
Java集合---HashSet的源码分析
一、 HashSet概述: HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null元素。 二、 HashSet的实现: 对于HashSet而言,它是基于HashMap实现的,HashSet底层使用HashMap来保存所有元素,因此HashSet 的实现比转载 2018-01-29 15:50:26 · 97 阅读 · 0 评论 -
HashMap和HashSet的区别
HashMap和HashSet的区别是Java面试中最常被问到的问题。如果没有涉及到Collection框架以及多线程的面试,可以说是不完整。而Collection框架的问题不涉及到HashSet和HashMap,也可以说是不完整。HashMap和HashSet都是collection框架的一部分,它们让我们能够使用对象的集合。collection框架有自己的接口和实现,主要分为Set接口,Lis转载 2018-01-29 15:41:45 · 90 阅读 · 0 评论 -
Java 技术之垃圾回收机制
垃圾回收机制是 Java 非常重要的特性之一,也是面试题的常客。它让开发者无需关注空间的创建和释放,而是以守护进程的形式在后台自动回收垃圾。这样做不仅提高了开发效率,更改善了内存的使用状况。今天本文来对垃圾回收机制进行讲解,主要涉及下面几个问题:什么是堆内存?什么是垃圾?有哪些方法回收这些垃圾?什么是分代回收机制?什么是 Java 堆内存堆是在 JVM 启动时创建的,主要用来维护运行时数据,如运行...转载 2018-02-28 17:19:48 · 149 阅读 · 0 评论 -
Java程序员修炼之道 之 Logging(1/3) - Logback 配置
写在前面的话:作为《Java程序员修炼之道》博文的第一个主题Logging,我计划中按照如下三篇来写:Logback的简单介绍和配置 在Java代码中如何使用SLF4J来写日志以及写日志的要点 作为一个程序员,在日常工作中如何分析和挖掘Log。1. 缘起写代码中的日志是一个除了用代码实现功能之外最基础最基础的一个技能了,是一个必须掌握的技能。但是目前为止,关于如何日志的文章和书籍...转载 2019-04-09 13:49:40 · 306 阅读 · 0 评论 -
SigarUtils
import java.io.PrintWriter;import java.net.InetAddress;import java.net.UnknownHostException;import java.util.Map;import java.util.Properties;public class SigarUtil { public static void main...原创 2018-10-22 19:49:48 · 282 阅读 · 0 评论 -
什么是多线程中的竞争条件 - Java中的2个示例
什么是多线程中的竞争条件 - Java中的2个示例Java中的竞态条件是一种并发错误或问题,它是在您的程序中引入的,因为您的程序在多个线程同时并行执行,因为Java是一种多线程编程语言,因此在Java中竞争条件的风险更高要求清楚了解导致竞赛状况的原因以及如何避免这种情况。反正竞争条件只是é 危险或风险在Java中使用多线程的呈现就像在Java中的僵局。当两个线程在没有正确同步的同一对象上操作并且操...翻译 2018-03-07 21:37:19 · 4041 阅读 · 0 评论 -
如何在Java代码示例中停止线程
如何在Java代码示例中停止线程线程是Java中重要的类之一,多线程是最广泛使用的一个特性,但是没有明确的方法来阻止Java中的Thread。早些时候在Thread类中存在一种停止方法,但是由于一些安全原因,Java不赞成该方法。默认情况下,当run()方法的执行正常结束或由于任何Exception时,Thread停止。在本文中,我们将使用布尔状态变量或标志来停止Java中的Thread。使用一个...翻译 2018-03-07 21:28:41 · 261 阅读 · 0 评论 -
webservice 获得客户端ip
/** * 获得客户端IP * @return */ public String getClientIP() { org.apache.cxf.message.Message message = PhaseInterceptorChain.getCurrentMessage(); HttpServletRequest httpre...原创 2018-06-01 14:42:08 · 473 阅读 · 0 评论 -
JavaMail SMTP服务器 阿里云服务器发送失败
1、阿里云及腾讯云关闭了25端口2、根据不同的邮箱进行端口选择;我使用的是网易邮箱 端口设置994;注意要开启SSL否则还是发送失败;mail: host: smtp.163.com username: [email protected] password: xxxx port: 994 properties: mail.smtp.auth: true...原创 2018-05-04 17:22:50 · 1741 阅读 · 0 评论 -
利用jdk XML 转成 xsd 再转成 javaBean
原文地址:攻城狮不是猫 第一种方法首先拿到xml 例如:<status><sigar cpu="31.2" memory="87" jvm="79" disk="70" /><jvm><memory free='98567840' total='124780544' max='1825046528'/&g原创 2018-06-06 19:42:23 · 2117 阅读 · 4 评论 -
java面向对象的理解
java面向对象编程概念总结面向对象的实质就是一种认识事物的方法。,是一种以对象为中心的思维方式。每个对象都有特征和属性两大要素,属性是对象静态特征的描述,行为是对象动态特征的描述。类是具有相同属性和相同行为的对象集合。类是对象的抽象,而对象是类的实例。面向对象的三个主要特征:封装,继承,多态。 静态方法通常用于工具类,反复调用一个类用静态(申明为静态类)。静态类直转载 2018-01-24 17:54:16 · 198 阅读 · 0 评论 -
java 加密工具类(MD5、RSA、AES等加密方式)
1.加密工具类encryptionMD5加密原文 https://blog.csdn.net/u011659172/article/details/50627903[java] view plain copyimport org.apache.commons.codec.digest.DigestUtils; /** * MD5加密组件 * * @author wbw * @ver...转载 2018-04-19 13:28:29 · 697 阅读 · 0 评论 -
Java程序员修炼之道 之 Logging(3/3) - 怎么分析Log
1. 说明作为一个程序员我们经常要做一件事情:获取某个Log文件,从其中找出自己想要的信息。本文总结了我在工作中使用了哪些工具来分析Log文件获取我想要的信息,我最近几年的工作环境都是服务器在Linux上,工作机是Windows, 所以我用的工具主要是Linux上的一些命令行工具,当然他们在Windows上也可以用,具体看下面的工具篇。先声明,我只是非常普通的Linux用户,所以如果有些Li...转载 2019-04-09 13:52:30 · 189 阅读 · 0 评论 -
Java中Synchronized的用法
原文:http://blog.csdn.net/luoweifu/article/details/46613015 作者:luoweifu 转载请标名出处《编程思想之多线程与多进程(1)——以操作系统的角度述说线程与进程》一文详细讲述了线程、进程的关系及在操作系统中的表现,这是多线程学习必须了解的基础。本文将接着讲一下Java线程同步中的一个重要的概念synchronized.synchroniz...转载 2018-03-23 13:16:51 · 130 阅读 · 0 评论 -
SpringBoot Controller 中使用多个@RequestBody的正确姿势
最近遇到Controller中需要多个@RequestBody的情况,但是发现并不支持这种写法, 这样导致 1、单个字符串等包装类型都要写一个对象才可以用@RequestBody接收; 2、多个对象需要封装到一个对象里才可以用@RequestBody接收。 查阅StackOverFlow,受到一个解决方案的启发,本人改进为以下版本,并给出了详尽的注释,希望对大家有帮助。 改进...转载 2019-08-12 17:53:41 · 3537 阅读 · 0 评论 -
[java]byte和byte[]与int之间的转换
1、byte与int转换 public static byte intToByte(int x) { return (byte) x; } public static int byteToInt(byte b) { //Java 总是把 byte 当做有符处理;我们可以通过将其和 0xFF 进行二进制与得到它的无符值 return b & 0xFF; } 2、byte...转载 2018-02-24 17:11:06 · 2597 阅读 · 0 评论 -
HashMap、TreeMap、Hashtable、HashSet和ConcurrentHashMap区别
一、HashMap和TreeMap区别1、HashMap是基于散列表实现的,时间复杂度平均能达到O(1)。 TreeMap基于红黑树(一种自平衡二叉查找树)实现的,时间复杂度平均能达到O(log n)。2、HashMap、TreeMap都继承AbstractMap抽象类;TreeMap实现SortedMap接口,所以TreeMap是有序的!HashMap是无序的。转载 2018-01-29 15:52:20 · 151 阅读 · 0 评论 -
java switch while用法
public static void main(String args[]) { int month = 4; String season; switch (month) { case 12: case 1: case 2: season = "Winter"; break;原创 2018-01-02 17:37:13 · 1690 阅读 · 0 评论 -
【Java数据结构】HashMap扩容全过程
1.如果HashMap的大小超过了负载因子(load factor)定义的容量,怎么办?默认的负载因子大小为0.75,也就是说,当一个map填满了75%的bucket时候,和其它集合类(如ArrayList等)一样,将会创建原来HashMap大小的两倍的bucket数组,来重新调整map的大小,并将原来的对象放入新的bucket数组中。这个过程叫作rehashing,因为它调用hash方法找...转载 2019-03-14 10:43:30 · 6967 阅读 · 1 评论 -
Eclipse 的JEE 版本中,使用JAXB 生成XSD文件的Java 类
1. 问题Eclipse 的JEE 版本中,使用JAXB 生成XSD文件的Java 类 浏览器中点击xsd 文件, 右键,生成,JAXB 类, 报告错误: Generate JAXB Classes - cannot find XJCFacade 2. 解决方案 把工程的java运行时环境,从jre变成jdk即可。3. 参考http://www.eclipse.org/forums/in...转载 2018-03-26 09:38:35 · 639 阅读 · 0 评论