
Java
文章平均质量分 88
Java技术栈知识集合
Jin_Kwok
QS TOP100 本硕,优快云博客专家,曾在阿里、微软等公司重要项目中担任技术负责人或核心研发成员。在人工智能领域顶会+SCI期刊发表多篇论文,授权发明专利多项
展开
-
Java 日志系列(三):日志使用示例及常见报错
详细解读Java日志使用案例及常见报错1: Failed to load class "org.slf4j.impl.StaticLoggerBinder";报错2:Class path contains multiple SLF4J bindings;报错3:Detected both log4j-over-slf4j.jar AND bound slf4j-log4j12.jar on the class path, preempting StackOverflowError原创 2023-09-12 09:54:34 · 594 阅读 · 0 评论 -
Java 日志系列(二):Java 日志使用中需要遵循的规范及注意事项
笔者将通过 3 篇文章全面系统地介绍 Java 日志框架,主要内容如下:日志的意义与价值;Java 日志框架进化史;日志门面与日志系统;日志框架的使用选择;日志使用中需要遵循的规范及注意事项;日志使用示例及常见报错。本文作为日志话题的第二篇,将结合具体案例介绍日志的使用。原创 2023-09-11 10:13:07 · 1327 阅读 · 0 评论 -
Java 日志系列(一):详解主流日志框架Log4j、Log4j 2、JUL、Commons Logging和Slf4j&Logback
优雅的日志系统可以记录操作轨迹,监控系统运行状况以及回溯系统故障。在工作中,部分工程师对主流的日志框架仍然是一知半解,日常应用还停留在复制粘贴的层面,因此写作本文,希望对读者有所帮助。笔者将通过 3 篇文章全面系统地介绍 Java 日志框架,主要内容如下:日志的意义与价值;Java 日志框架进化史;日志门面与日志系统;日志框架的使用选择;日志使用中需要遵循的规范及注意事项;日志使用示例及常见报错。原创 2023-09-11 10:00:54 · 2631 阅读 · 0 评论 -
后端开发进阶之路:从 Lock 指令前缀切入,解读 Java Volatile、CAS 及 Automic 包
初见之下,锁如同一把“万能钥匙”,但其缺陷也很明显——较“重”,并不适合简单的应用场景,比如,多线程环境下保证共享变量 i++ 操作的原子性,加锁可以实现,但有点“牛刀杀鸡” 的味道。因此,Java 提供了更 “轻” 的方案:volatile、CAS 和 Automic 系列原子类。三者联系紧密,volatile 和 CAS 都是基于 LOCK 指令前缀实现的,Automic 系列原子类是基于 volatile 和 CAS 实现的。原创 2023-09-05 17:35:41 · 543 阅读 · 0 评论 -
后端开发进阶之路:后端开发核心竞争力之一抽象建模能力
服务端开发工程师在大部分工作时间里并不是在写代码,而是在抽象建模。工程师需将业务需求抽象成领域模型、模块、服务和系统,面向对象开发时需抽象出类和对象,面向过程开发时抽象出方法和函数。某种意义上,软件的本质就是抽象,建模则是系统地实施抽象的过程。作为一种将事物形象化的有效手段,建模可将现实世界中的事物及事物之间的关系准确地表达出来。本文通过一个真实案例详细深入浅出解读抽象建模。原创 2023-09-08 17:30:41 · 488 阅读 · 1 评论 -
jetbrains(IDEA/PyCharm)官网地址打不开
@TOCjetbrains(IDEA/PyCharm)官网地址打不开今天新换了Mac Pro M1,准备重新下载 IDEA 并安装,却发现IDEA 官网下载地址 根本打不开,于是我又尝试下载 PyCharm ,同样打不开。考虑到两个 IDE 的开发商相同,初步判断是某种配置问题。1.官网地址IDEA:https://www.jetbrains.com/idea/download/#section=mac;PyCharm:https://www.jetbrains.com/pycharm/down原创 2022-01-25 19:16:26 · 5959 阅读 · 1 评论 -
Spring容器中的Bean是否会被GC呢?
Spring容器中的Bean是否会被GC呢?最近经常被校招新同学问到这个问题,顺便写个文档。原创 2021-08-06 17:42:07 · 2954 阅读 · 5 评论 -
-Java连接Excel、MySQL、SQLServer数据源及相关增、删、改、查方法和问题总结-【Part II】
【Part II】-Java连接Mysql数据源及相关增、删、改、查方法和问题总结-一、前言接续【Part I】,在项目中,经常会遇到需要读取数据源数据并进行处理的场景,数据源通常为Excel、MySQL、SQLServer三种,不久前,我刚好参加了这样一个项目,同时涉及到了上述三种数据源,中途也踩了一些坑,因此,觉得有写一个总结的必要,希望对读到这篇文章的人能够有所帮助。二、原创 2017-04-22 19:04:56 · 779 阅读 · 0 评论 -
【Java】List接口的应用,与C++中vector应用比较 (一)
【写作原因】 在解决【LeetCode.113 Path Sum II】时,我分别采用Java和C++,感觉其中差异有整理一下的必要。 【动态数组的创建】 在编程中,很多情况下,在预编译过程阶段,数组的长度是不能预先知道的,必须在程序运行时动态的给出,但是问题是,编程语言C/C++、Java要求定义数组时,必须明确给定数组的大小,要不然编译通不过。形如LeetCo原创 2016-05-10 16:35:53 · 5696 阅读 · 0 评论 -
如何设计一个好的接口/API
如何设计一个好的接口/API1. 引言如果说好的 UI 设计可以让用户更容易地使用一款产品,那么,好的 API 设计则可以让其他开发者更高效地使用一个系统的能力。良好的 API 可以很大程度上减轻使用者的负担,同时也可以极大地减轻技术支持的工作量,尤其是对那些使用者众多的 API 来说。在实践中,一个较复杂的系统通常由多位开发者共同开发。往往由于缺乏统一的规范,开发者各自为政,导致同一个系统...原创 2020-03-14 11:42:28 · 2433 阅读 · 2 评论 -
深入浅出理解Java NIO系列—第1篇
NIO含义 NIO的本意是:New I/O,原因在于它相对于之前的I/O类库是新增的。由于之前老的I/O类库是阻塞I/O,Ne...原创 2018-05-23 17:35:25 · 1354 阅读 · 0 评论 -
Java实现大数乘法
今天无意中看到一个C++实现的大数乘法,感觉不顺眼,遂用Java写了一个。这里所说的大数,是指编程语言提供的基本数据类型无法表达的数据,比如1000位的数据,这样的数据通常用字符串或者数组表示,比如:12345678899878676768787786867868762342。两个大数之间的乘法实现参考如下:import java.util.Arrays;public class B...原创 2018-08-22 17:29:37 · 4065 阅读 · 4 评论 -
Java语言实现Google方程式
有一个字符组成的等式:WWWDOT - GOOGLE = DOTCOM,每个字符代表一个0-9之间的数字,WWWDOT、GOOGLE和DOTCOM都是合法的数字,不能以0开头。请找出一组字符和数字的对应关系,使它们互相替换,并且替换后的数字能够满足等式。这个字符等式是Google公司能力倾向测试实验室的一道题目,这种题目主要考察人的逻辑推导能力和短期记忆能力。此类型的题目有很多变种,各种编程比赛中...原创 2018-08-16 21:48:00 · 490 阅读 · 0 评论 -
如何设置JVM使用的垃圾收集器及各种垃圾回收器采用的算法
一、垃圾收集器的种类1. Serial 收集器:历史最悠久,单线程工作,回收垃圾时,必须暂停所有其它线程——stop the world,采用复制算法;2. ParNew收集器:本质为Serial收集器的多线程版本,采用复制算法;3. Parallel scavenge:具备自使用调节功能,以提供最合适的暂停时间和吞吐量,采用复制算法;4. Serial old 收集器:是Seri...原创 2018-08-08 17:48:25 · 7687 阅读 · 3 评论 -
详解JVM 垃圾回收——GC Roots Tracing
作者:RednaxelaFX链接:https://www.zhihu.com/question/53613423/answer/135743258来源:知乎著作权归作者所有,转载请联系作者获得授权。 之前看深入理解JVM这本书,对里面的GC ROOT的真实含义不是太清楚,网上查了一大堆资料都没有说的很清楚,下面这是从知乎大神上看到的,这里面记录一下,和大家一起学习 所谓“GC...转载 2018-08-08 15:11:15 · 5290 阅读 · 0 评论 -
Java内存分析工具MAT(Memory Analyzer Tool)安装使用实例
1. 前言生产环境中,尤其是吃大内存的JVM,一旦出现内存泄露等问题是非常容易引发OutofMemory的,如果没有一个好的工具提供给开发人员定位问题和分析问题,那么这将会是一场噩梦。目前JDK其实自带有一些内存泄露分析工具专门用于帮助开发人员定位内存泄露等问题,但是这些工具往往并不是能够满足一些现状,这里笔者所指的现状更多是迅速、便捷、高效的定位出问题,方便开发人员迅速进行调整。2. 目...原创 2018-05-15 21:06:38 · 53608 阅读 · 4 评论 -
Java之transient关键字用法解读
1. transient 简介java语言的关键字,变量修饰符,如果用transient声明一个实例变量,当对象存储时,它的值不需要维持。换句话来说就是,用transient关键字标记的成员变量不参与序列化过程。2. transient 作用Java的serialization提供了一种持久化对象实例的机制。当持久化对象时,可能有一个特殊的对象数据成员,我们不想用serializati...原创 2018-08-28 15:26:27 · 1217 阅读 · 0 评论 -
布隆过滤器(Bloom Filter)详解
转载自:https://www.cnblogs.com/liyulong1982/p/6013002.html布隆过滤器(Bloom Filter)详解直观的说,bloom算法类似一个hash set,用来判断某个元素(key)是否在某个集合中。和一般的hash set不同的是,这个算法无需存储key的值,对于每个key,只需要k个比特位,每个存储一个标志,用来判断key是否在集合中。...转载 2018-08-28 15:46:49 · 898 阅读 · 0 评论 -
关于synchronized、wait、notify已经notifyAll的使用(转)
前言:关于synchronized、wait、notify已经notifyAll大家应该不陌生,现在我大致说一下我的理解。一:synchronizedsynchronized中文解释是同步,那么什么是同步呢,解释就是程序中用于控制不同线程间操作发生相对顺序的机制,通俗来讲就是2点,第一要有多线程,第二当多个线程同时竞争某个资源的时候会有先后顺序。在java中有三种写synchronized...转载 2018-09-05 14:54:30 · 801 阅读 · 0 评论 -
【LeetCode】347. Top K Frequent Elements——基于Java的解决方案
347. Top K Frequent ElementsTotal Accepted: 12022 Total Submissions: 28556 Difficulty: MediumGiven a non-empty array of integers, return the k most frequent elements.For example,Gi原创 2016-05-31 22:43:35 · 4952 阅读 · 1 评论 -
Java 进阶:实例详解 Java 虚拟机字节码指令(二)
Java 进阶:实例详解 Java 虚拟机字节码指令(二)在上一场 Chat《Java 进阶: 实例详解 Java 虚拟机字节码指令(一)》中,介绍了 Java class 文件结构、Java 字节码,虚拟机栈、变量、常量、方法、域的访问原理和指令体系。本场 Chat 为这个系列的第二篇文章,将接续上一场 Chat 继续介绍 Java 虚拟机字节码指令。特别提示:如果您未阅读上一篇文章,...原创 2019-07-23 23:09:32 · 335 阅读 · 0 评论 -
Java 进阶:实例详解 Java 虚拟机字节码指令(一)
众所周知,Java 语言编译生成的 class 文件可以运行在任何支持 Java 虚拟机的硬件平台和操作系统上。那么,你是否思考过:class 文件包含哪些内容?是如何在虚拟机中执行的?要弄清楚这些问题,须了解 class 文件结构和 Java 虚拟机字节码指令。Java 虚拟机字节码指令非常重要,学习它对深入理解虚拟机、栈、锁、异常、同步等的原理十分有益,是 Java 进阶之路必读内容之一。...原创 2019-07-23 23:05:46 · 273 阅读 · 0 评论 -
Java 进阶之路:异常处理的内在原理及优雅的处理方式
永远不要期待程序在完全理想的状态下运行,异常往往不期而遇,如果没有完善的异常处理机制,后果可能是灾难性的。对于 Java 工程师而言,合理地处理异常是一种基本而重要的能力,然而,在近来的面试中,笔者发现很多应聘者对异常处理的内在原理几无了解,现场手写的异常处理代码也极为“原始”。鉴于此,笔者试图通过本场 Chat 为读者呈现 Java 异常处理的内在原理、处理原则及优雅的处理方式。主要内容如下...原创 2019-05-04 21:50:51 · 641 阅读 · 0 评论 -
MyBatis学习笔记(一):MyBatis 架构及运作流程
MyBatis学习笔记(一):MyBatis 架构及运作流程目录MyBatis学习笔记(一):MyBatis 架构及运作流程1. MyBatis 简介2. MyBatis 特点3. MyBatis 架构4. MyBatis 总体流程参考文献:1. MyBatis 简介MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache ...原创 2018-09-17 19:35:58 · 969 阅读 · 0 评论 -
平面最近点对问题求解—基于Java语言
平面最近点对问题求解—基于Java语言1. 问题描述:本问题来自《编程之美2.11—寻找最近点对》,文中给出了两种解法:暴力解法,分治解法。其中,暴力解法很简单,求出所有点之间的距离并做比较,便可找到距离最小的点对;当然,这不是最优解,时间复杂度为O(n^2)。文中还介绍了分治法,不过,没有给出源代码,网上的解法也多是基于C写的,本文将基于Java用分治法解决这个问题。2.分...原创 2018-09-03 16:46:01 · 7228 阅读 · 4 评论 -
-Java连接Excel、MySQL、SQLServer数据源及相关增、删、改、查方法和问题总结-【Part I】
【Part I】-Java连接Excel数据源及相关增、删、改、查方法和问题总结-一、前言在项目中,经常会遇到需要读取数据源数据并进行处理的场景,数据源通常为Excel、MySQL、SQLServer三种,不久前,我刚好参加了这样一个项目,同时涉及到了上述三种数据源,中途也踩了一些坑,因此,觉得有写一个总结的必要,希望对读到这篇文章的人能够有所帮助。二、准备工作需要下载一个ja原创 2017-04-20 12:43:00 · 1578 阅读 · 0 评论 -
Java 读写Excel文件整理
Java 读写Excel文件整理前言:由于工作比较忙,很久没有写博客了,最近接手了一个某工业过程故障诊断应用软件的项目,其中实例化模拟采用的数据来源为Excel文件,其中遇到一些问题,虽最终得以解决,但仍觉有记录之必要。正文:section1:需要下载一个处理Excel文件的jar包下载链接:点击下载section2:读取Excel文件数据及常用处理public void原创 2016-11-20 22:04:04 · 702 阅读 · 0 评论 -
Jetty for Mac的安装及Myeclipse下的配置(Myeclipse for mac 插件安装link方法详述)
Jetty for Mac的安装及Myeclipse下的配置与Tomcat类似原创 2016-07-19 22:58:00 · 3461 阅读 · 0 评论 -
【Debug】Hander processing failed; nested exception is java.lang.NoClassDefFoundError; javax/servlet/j
Hander processing failed; nested exception is java.lang.NoClassDefFoundError; javax/servlet/jsp/jstl/core/Config【问题描述】 今天我将之前调试过的一个 web project 直接复制到另一个文件夹里面,原工程是没有问题的(至少可以正常运行)。然后,我将新路径下的工程impo原创 2016-06-13 16:06:50 · 5341 阅读 · 0 评论 -
Cookie/Session机制详解
Cookie/Session机制详解原文链接:http://blog.youkuaiyun.com/fangaoxin/article/details/6952954会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身转载 2016-06-25 22:25:40 · 1333 阅读 · 0 评论 -
【LeetCode】215. Kth Largest Element in an Array,基于Java和C++的解法
215. Kth Largest Element in an ArrayTotal Accepted: 57859 Total Submissions: 171725 Difficulty: MediumFind the kth largest element in an unsorted array. Note that it is the kth largest e原创 2016-05-31 11:40:47 · 1897 阅读 · 0 评论 -
【Java Learning】泛型类ArrayList 的用法介绍
泛型类ArrayList 的用法介绍 学过C++的人都知道,C++中的vector容器是一个非常有用的工具,与之类似,Java中有一个Vector类,不过它用得很少,我们更青睐于功能更加强大泛型类ArrayList. 为何而生?在程序设计中,有时候我们需要定义一个数组,但却不确定数据的大小,在Java中我们可以通过new方法来定义,如:public voi原创 2016-05-18 00:14:07 · 1376 阅读 · 0 评论 -
【Java Learning】重载、多态和动态绑定——Overloading、Ploymorphism&Dynamic binding
Title:重载、多态和动态绑定——Overloading、Ploymorphism&Dynamic binding【Section one】 对于面向对象编程语言,重载、多态和动态绑定是非常重要的概念,并且其中细节容易误解,在此,我写下这篇文章既为总结,亦为学习。【Section two】一、重载 在Java中,方法的名称和形参列表称为方法的签名,只原创 2016-05-30 20:31:28 · 839 阅读 · 0 评论 -
【LeetCode】132. Palindrome Partitioning II 基于动态规划DP、C++、Java的分析及解法
132. Palindrome Partitioning IITotal Accepted: 50256 Total Submissions: 230441 Difficulty: HardGiven a string s, partition s such that every substring of the partition is a palindrome.原创 2016-05-16 20:29:43 · 4372 阅读 · 2 评论 -
【LeetCode】120. Triangle 基于C++和Java的分析及解法,动态规划
120. TriangleTotal Accepted: 69567 Total Submissions: 229977 Difficulty: MediumGiven a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent numbers原创 2016-05-15 21:05:31 · 3609 阅读 · 1 评论 -
【JavaLearning】接口与抽象类的比较(The comparison of Interface and Abstract Class )
【Section one】Abstract 近来,在学习Java的过程中遇到了一个新的概念(本人有C/C++开发基础)——接口(Interface),这个概念在C++中并不存在,因此,不由得一阵困惑,感觉所谓接口似乎与抽象类有很多共同之处,故,在深入理解并通过编程验证之后,写下这篇文章,浅析Java中接口与抽象类的异同。【Section two】Interface原创 2016-05-24 17:09:34 · 813 阅读 · 0 评论 -
-Java连接Excel、MySQL、SQLServer数据源及相关增、删、改、查方法和问题总结-【Part III】
【Part III】-Java连接SQLServer数据源及相关查询、插入、删除、更新方法和问题小结-一、前言接续【Part II】,在项目中,经常会遇到需要读取数据源数据并进行处理的场景,数据源通常为Excel、MySQL、SQLServer三种,不久前,我刚好参加了这样一个项目,同时涉及到了上述三种数据源,中途也踩了一些坑,因此,觉得有写一个总结的必要,希望对读到这篇文章的人能够有原创 2017-04-23 11:24:05 · 908 阅读 · 0 评论 -
JAVA线程池应用实践
0.引言 在上一篇文章:http://blog.youkuaiyun.com/jin_kwok/article/details/74898102 中,我简单介绍过线程和多线程,在这里,我将详细介绍一下内容:线程的创建方法和线程池的应用。1.线程的创建方法 1.1.【继承Thread类,覆写run()方法】 如下代码所示,扩展了Thread类,并覆写了run方法,run()方法的内容就原创 2017-07-16 21:32:09 · 901 阅读 · 0 评论 -
synchronized 同步锁(java)实例解析
0引言 在多线程应用场景中,同步锁是一种非常重要的机制,例如:ID号的分配,多个客户端分别与服务端建立连接,客户端并发请求的情况下,为提升吞吐量,服务端一般采用多线程处理请求,若无同步锁机制,不同线程分配到相同ID号的情况将不可避免,而这种情况与预期相违背。1.java多线程简述 Java中线程的创建一般有三种形式,最常见的是继承Thread类覆写run()方法的方式,此外还原创 2017-07-09 22:02:53 · 17868 阅读 · 2 评论 -
Java 内存模型解读-I
1. 前言 Java内存模型即Java Memory Model,简称JMM。JMM定义了Java 虚拟机(JVM)在计算机内存(RAM)中的工作方式。JVM是整个计算机虚拟模型,所以JMM是隶属于JVM的。 如果我们要想深入了解Java并发编程,就要先理解好Java内存模型。Java内存模型定义了多线程之间共享变量的可见性以及如何在需要的时候对共享变量进行同步。原始的Java内存模型...转载 2018-05-18 11:23:43 · 385 阅读 · 0 评论