Java从入门到精通21天养成计划
文章平均质量分 83
Java常见问题解决方案及源码解析
优惠券已抵扣
余额抵扣
还需支付
¥19.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
普通网友
这个作者很懒,什么都没留下…
展开
-
Java高阶部分知识点汇总(二)-封装与隐藏详讲
零.前言在前面程序中,经常会出现通过某个对象的直接访问其属性的情况,这会出现很多潜在问题,例如前面我们定义过的学生类Student,我可以通过其实例对象直接访问到实例的age属性,并赋值,这在Java语法上是没有任何问题的,但是,如果我把这个age设置为负数或者设置为1000,这明显违背了现实,而前面说过对象是现实生活的描述,我们对一些现实类也需要有符合现实的数值,这就要提到面向对象的三大特性之一封装。一.什么是封装?封装是面向对象的三大特性之一,他的意思是将对象的属性隐藏起来在对象内部,.原创 2021-12-06 06:00:00 · 1098 阅读 · 0 评论 -
Java实战应用50篇(二)-SSM框架中的设计模式:动态代理
前言动态代理和责任链无论在Spring还是MyBatis中都有重要的应用,代理模式的意义在于生成一个占位(又称代理对象),来代理真实对象(又称目标对象),从而控制真实对象的访问。先来谈谈什么是代理模式。假设这样一个场景,你的公司是一家软件公司,你是一位软件工程师。客户带着需求去找公司显然不会直接和你谈,而是去找商务谈,此时客户会认为商务就代表公司。让我们用一张图来表示代理模式的含义,如图1所示。图1代理模式示意图显然客户是通过商务去访问软件工程师的,那么商务(代理对象)的意义..原创 2021-11-27 06:00:00 · 1186 阅读 · 0 评论 -
Java实战应用50篇(一)-Java并发编程:volatile关键字解析
volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先来了解一下与内存模型相关的概念和知识,然后分析了volatile关键字的实现原理,最后给出了几个使用volatil原创 2021-10-25 06:15:00 · 1004 阅读 · 0 评论 -
编程语言中的Lambda 函数是如何产生的 它究竟有什么用
什么是Lambda?我们知道,对于一个Java变量,我们可以赋给其一个“值”。如果你想把“一块代码”赋给一个Java变量,应该怎么做呢?比如,我想把右边那块代码,赋给一个叫做aBlockOfCode的Java变量:在Java 8之前,这个是做不到的。但是Java 8问世之后,利用Lambda特性,就可以做到了。当然,这个并不是一个很简洁的写法。所以,为了使这个赋值操作更加elegant, 我们可以移除一些没用的声明。这样,我们就成功的非原创 2021-11-05 06:00:00 · 992 阅读 · 0 评论 -
Java序列化和反序列化为什么要实现Serializable接口
目录 序列化和反序列化 什么时候需要用到序列化和反序列化呢? 实现序列化和反序列化为什么要实现 Serializable 接口? 实现 Serializable 接口就算了,为什么还要显示指定 serialVersionUID 的值? Java 序列化的其他特性 static 属性为什么不会被序列化? 最近公司的在做服务化, 需要把所有 model 包里的类都实现 Serializable 接口,同时还要显示指定 serialVersion...原创 2021-10-20 06:00:00 · 898 阅读 · 0 评论 -
Spring 的 BeanUtils 踩坑记,你是不是遇到过这些问题?
背景最近项目中在和第三方进行联调一个接口,我们这边发送http请求给对方,然后接收对方的回应,代码都是老代码。根据注释,对方的SDK中写好的Request类有一个无法序列化的bug,所以这边重新写了一个Request类,基本属性都是相同的,但是重点是有一个属性是静态内部类,还有两个是list属性,类似于下面这样:privateList<Order>orders;privateAddRequest.Ticketticket;privateList<Payment>...原创 2021-10-18 06:30:00 · 941 阅读 · 0 评论 -
Java面试题目解析-如何解决Java性能问题
Java性能分析是一门科学和艺术。科学指的是性能分析一般都包括大量的数字、测量和分析;艺术指的是知识、经验和直觉的使用。性能分析的工具或者手段各有千秋,但性能的分析的过程却都大相径庭。本文就已知适用的Java性能分析窍门进行一些分享,帮助用户更好的理解和运用。窍门一:线程栈剖析线程栈分析是对正在运行的Java线程的快照分析,是一种轻量级的分析手段,用户在不清楚应用存在什么性能问题的时候可优先尝试。虽然判定Java线程是否异常并没有统一的标准,但用户可以通过一些指标进行定量的评估。以下分享4个检测指标原创 2021-09-15 08:45:52 · 897 阅读 · 0 评论 -
控制台上的内容不输入到nohup.out
test.out && nohup ./test 2>&1 >test.out & 最简单的方法让nohup执行后不产生日志文件,可以在nohup命令行中增加输出目标文件,并指向/dev/null。也就是 nohup ./run.sh >/dev/null &,这样可以保证nohup.out文件不会自动生成;另外也可以编辑./run.sh文件,使该运行脚本简单化。比如nohup java原创 2014-09-17 10:09:06 · 5376 阅读 · 0 评论 -
java 中调用 Matlab 的函数
一、matlab版本必须支持java在command 模式下面运行deploytool,如果支持该命令即可使用二、matlab中function的书写%定义一个函数operation(a,b),求a与b的加减乘除运算,并返回结果%函数定义function 输出变量列表[s,m,...] 函数名(输入变量列表)sum,sub,mul,div中function [sum原创 2014-06-19 10:47:05 · 1388 阅读 · 0 评论 -
Java项目导出为可执行jar包,并在windows/linux下运行
Java项目导出为jar包,项目文件结构:在你的项目的根目录下新建一个文件:MANIFEST.MF和一个lib文件夹(该文件夹放的是用的第三方包)。文件内容是这样的:Manifest-Version: 1.0 Main-Class: test.DeltaMakeIndexTest (此处需要根据main函数所在类做相应修改,包名.类名 格式)Class-Path: ./ ./lib/原创 2014-06-19 10:44:04 · 4112 阅读 · 0 评论 -
Java实战系列之关于双十一秒杀架构模型的一点思考
秒杀系统相信很多人见过,比如京东或者淘宝的秒杀,小米手机的秒杀,那么秒杀系统的后台是如何实现的呢?我们如何设计一个秒杀系统呢?对于秒杀系统应该考虑哪些问题?如何设计出健壮的秒杀系统?本文我们就来探讨一下这个问题。秒杀应该考虑哪些问题超卖问题分析秒杀的业务场景,最重要的有一点就是超卖问题,假如备货只有100个,但是最终超卖了200,一般来讲秒杀系统的价格都比较低,如果超卖将严重影响公司的财产利益,因此首当其冲的就是解决商品的超卖问题。高并发秒杀具...原创 2020-11-10 08:56:56 · 1097 阅读 · 0 评论 -
Java进阶知识-数组类型
零.前言本来数组类型应该属于基础部分的知识,我将它写在进阶部分是因为数组既可以是基础数据类型数组,也可以是引用数据类型数组。所以我想先介绍完类与对象的基础之后,再给大家介绍数组。于是,今天这篇内容给大家详细介绍数组类型。数组是编程语言中最常见的一种数据结构,用于储存多个同类型数据,每个数组元素可以存放一个数据,通常数组元素可以通过其索引来访问,包括为数组元素赋值和取出数组元素的值。Java语言的数组也具有一些独特的特征,下面给大家详细结束Java语言的数组。提前说明:教程比较小白,大佬不喜勿喷,原创 2021-05-15 07:07:59 · 1273 阅读 · 5 评论 -
Java高阶部分知识点汇总(三)-内存空间的引用
零.前言在前面给大家展示的代码中,有这样一行代码Studentstu = new Student();这行代码创建了一个Student对象,这个对象被赋给stu变量。今天我们就来好好学习一下这行代码的运行的具体过程,以及引用数据类型中引用二字的意义,也会带着大家将实参与形参之间的关系弄明白。本篇中使用的类定义如下: class Student{String name;int age;publicStuden...原创 2021-12-25 06:00:00 · 1167 阅读 · 0 评论 -
Java高阶部分知识点汇总(一)- 成员变量与局部变量详讲
零.前言在Java语言中,根据定义变量的位置不同,可以将变量分为两大类:成员变量与局部变量。而两者的运行机制也存在着较大的差异,本篇文章将详细介绍这两种变量的运行差异。一.成员变量成员变量指的是类范围里所定义的变量,也就是前面介绍过的属性;局部变量指的是在方法中所定义的变量。不管是成员变量还是局部变量,都遵守同一个命名规则。变量分类图成员变量被分为类属性和实例属性两种,定义属性时没有被static修饰的属性就是实例属性,有static修饰的就是类属性。其中类属性使从类的准备阶段.原创 2021-12-05 06:00:00 · 1148 阅读 · 0 评论 -
Java高阶部分知识点汇总(四)-继承与多态
零.前言前面讲了面向对象的两个特性,封装和继承。这节将面向对象的最后一个特性多态,而多态是在继承的基础上存在的。Java的引用变量有两个类型:一个是编译时的类型,另一个是运行时的类型。编译时的类型由声明变量时所使用的类型决定,运行时类型由实际赋给变量的对象决定。如果编译时类型和运行时类型不一致,就会出现多态。至于什么是编译时类型和运行时类型,请继续往下看。一.多态性先来看一段程序: ...原创 2021-12-26 06:00:00 · 1167 阅读 · 0 评论 -
Java高阶部分知识点汇总(三)-基本类型的包装类详讲
零.前言Java语言为8个基本数据类型都提供了对应得包装类,通过8个包装类可以把8个基本数据类型的值包装成对象使用,JDK1.5提供了自动装箱和自动拆箱功能,也就是基本类型和对应包装类可以直接互相赋值使用。本节内容将给大家介绍Java中的包装类。一.包装类现在我们已经非常清楚,Java是一门面向对象的语言。但是作为面向对象语言他也不得不包含8种不支持面向对象语法的基本数据类型,基本数据类型不具备对象的特性,没有属性没有方法。这8种基本数据类型带来了一定的方便性,可以直接进行简单的常规数.原创 2021-12-07 06:00:00 · 1066 阅读 · 0 评论 -
Java 动态调试技术原理及实践
调试是发现和减少计算机程序或电子仪器设备中程序错误的一个过程。最常用的断点调试技术会在断点位置停顿,导致应用停止响应。本文将介绍一种Java动态调试技术,希望能对大家有帮助。同时也欢迎读者朋友们一起交流,继续探索动态化调试技术。1. 动态调试要解决的问题断点调试是我们最常使用的调试手段,它可以获取到方法执行过程中的变量信息,并可以观察到方法的执行路径。但断点调试会在断点位置停顿,使得整个应用停止响应。在线上停顿应用是致命的,动态调试技术给了我们创造新的调试模式的想象空间。本文将研究Java语言.原创 2020-09-13 07:54:46 · 1149 阅读 · 0 评论 -
Elasticsearch 常见的 8 种错误及最佳实践
题记Elasticsearch 社区有大量关于 Elasticsearch 错误和异常的问题。深挖这些错误背后的原因,把常见的错误积累为自己的实战经验甚至是工具,不仅可以节省我们的开发和运维时间,而且可以帮助确保 Elasticsearch 集群的长期健康运行。常见的异常、原因和常规最佳实践拆解如下,这些最佳实践可以帮助我们更有效地识别、最小化定位和处理异常问题。1、 Mapper_parsing_exceptionElasticsearch 依靠映射(Mapping)定义的数据类型处理原创 2020-08-24 14:38:09 · 1258 阅读 · 0 评论 -
IDEA 2020.2 稳定版发布,带来了不少新功能...
IntelliJ IDEA 2020.2 稳定版已发布,此版本带来了不少新功能,包括支持在 IDE 中审查和合并 GitHub PR、新增加的 Inspections 小组件(Inspections Widget)支持在文件的警告和错误之间快速导航、使用 Problems 工具窗口查看当前文件中的完整问题列表,并在更改会破坏其他文件时收到通知。此外还有针对部分框架和技术的新功能,包括支持使用 Jakarta EE 9 以及改进对 Quarkus, Micronaut, Amazon SQS API 和原创 2020-08-08 08:22:06 · 1088 阅读 · 0 评论 -
还在为快捷键烦恼吗?IntelliJ IDEA 快捷键大全 Mac 版
Mac键盘符号和修饰键说明 ⌘Command ⇧Shift ⌥Option ⌃Control ↩︎Return/Enter ⌫Delete ⌦向前删除键(Fn+Delete) ↑上箭头 ↓下箭头 ←左箭头 →右箭头 ⇞Page Up(Fn+↑) ⇟Page Down(Fn+↓) HomeFn + ← EndFn + → ⇥...原创 2020-08-17 08:37:53 · 994 阅读 · 0 评论 -
SpringBoot 源码解析——如何进行源码环境调试?
已经分析过 spring-boot-tests/spring-boot-smoke-tests 下的冒烟测试和很早之前版本的 sample 是一样的,所以我们想直接利用这些 sample code 来进行运行调试代码,从而可以 debug 进入到源码中。但是默认情况下的 spring-boot-tests module 里面只包含了下图两个,我们可以将 spring-boot-smoke-tests 写在下面的这个 modules 里面,这样 IDEA 就会将里面的代码进行当做一个 maven 项目了原创 2020-08-16 09:15:37 · 1241 阅读 · 0 评论 -
SpringBoot 源码解析——SpringBoot 中的日志基础服务
背景在看 spring-boot module 的时候,看到有一个专门的 logging 的 package,因为日志是平时接触的非常多的一个东西,不仅仅是应用本身的日志需要关心,如果是要去做一个统一的日志收集和管理系统,也是一件很费心思的事情,比如: 可能要考虑日志打印的格式是什么样子的; 采集日志的时候怎么能够一行一行的采集; 对于那种堆栈异常日志如何采集收集在一起; 日志文件满了后出现滚动到新文件后如何识别并采集新的日志文件; 如果应用在出现异常的情原创 2020-08-19 08:31:18 · 986 阅读 · 0 评论 -
让bug无处藏身,Java 线上问题排查思路、常用工具
本文总结了一些常见的线上应急现象和对应排查步骤和工具。分享的主要目的是想让对线上问题接触少的同学有个预先认知,免得在遇到实际问题时手忙脚乱。只不过这里先提示一下。在线上应急过程中要记住,只有一个总体目标:尽快恢复服务,消除影响。不管处于应急的哪个阶段,我们首先必须想到的是恢复问题,恢复问题不一定能够定位问题,也不一定有完美的解决方案,也许是通过经验判断,也许是预设开关等,但都可能让我们达到快速恢复的目的,然后保留部分现场,再去定位问题、解决问题和复盘。在大多数情况下,我们都是先优先恢复服务,保留下当原创 2020-08-20 08:36:35 · 1071 阅读 · 0 评论 -
SpringBoot 源码解析 —— SpringApplication 源码分析
正常的 SpringBoot 应用程序一个正常的 SpringBoot 项目的启动类中常见代码如下:@SpringBootApplicationpublicclassSpringbotApplication{publicstaticvoidmain(String[]args){SpringApplication.run(SpringbotApplication.class,args);}}上面的代码也就两个比较引人注意的地方: @SpringBoo...原创 2020-10-24 07:42:48 · 1053 阅读 · 0 评论 -
Flink从入门到精通100篇(十一)-Java SPI 机制在 Flink SQL 中的应用
Java SPI 机制简介Java SPI机制,即Java Service Provider Interface,是Java提供的基于“接口编程 + 策略模式 + 配置文件”组合实现的动态加载机制。调用者可以根据实际使用需要,来启用、扩展或者替换框架的现有实现策略。在Java中,基于该SPI思想,提供了具体的实现,ServiceLoader,利用该类可以轻松实现面向服务的注册与发现,完成服务提供与使用的解耦。Java SPI机制常见的例子,如: 数据库驱动接口实现类的加载:JDBC可以根据实际原创 2020-10-26 07:22:49 · 1111 阅读 · 0 评论 -
深度解析Google Java 编程风格指南
这份文档是Google Java编程风格规范的完整定义。当且仅当一个Java源文件符合此文档中的规则, 我们才认为它符合Google的Java编程风格。与其它的编程风格指南一样,这里所讨论的不仅仅是编码格式美不美观的问题, 同时也讨论一些约定及编码标准。然而,这份文档主要侧重于我们所普遍遵循的规则, 对于那些不是明确强制要求的,我们尽量避免提供意见。1.1 术语说明在本文档中,除非另有说明: 术语class可表示一个普通类,枚举类,接口或是annotation类型(@interface)原创 2020-08-09 07:02:33 · 1013 阅读 · 0 评论 -
Java 应用线上问题排查思路、常用工具小结
前言本文总结了一些常见的线上应急现象和对应排查步骤和工具。分享的主要目的是想让对线上问题接触少的同学有个预先认知,免得在遇到实际问题时手忙脚乱。毕竟作者自己也是从手忙脚乱时走过来的。只不过这里先提示一下。在线上应急过程中要记住,只有一个总体目标:尽快恢复服务,消除影响。不管处于应急的哪个阶段,我们首先必须想到的是恢复问题,恢复问题不一定能够定位问题,也不一定有完美的解决方案,也许是通过经验判断,也许是预设开关等,但都可能让我们达到快速恢复的目的,然后保留部分现场,再去定位问题、解决问题和复盘。在原创 2020-10-23 10:35:17 · 1031 阅读 · 0 评论 -
Spring + Struts + Hibernate联合开发(多对一关系)
一、项目搭建的整体效果:1、建立好项目后,需要再建立两个单独的源文件夹,分别为test和config在config下分别建立struts,spring和hibernate三个文件夹,以便分别放这三部分的配置2、加入Spring支持Spring的默认配置文件先使用-hibernate.xml,方便配置,将这个生成的配置文件复制多份:1) -hibernate.xml:放入原创 2014-06-02 21:54:13 · 1661 阅读 · 0 评论 -
(经典)Hibernate多对一关系映射(四)
多对一关系主要应用在添加,修改,列表上,删除功能用不到多对一关系。(实际开发中多对一的应用较多)例:这里多加入一张新闻类型表,完成新闻的分类功能。在新闻表中多加入一个分类的字段,表示该新闻属于某一类。新闻类型是 一, 新闻是 多。实现的效果:建立数据库表:[sql] view plaincopyCREATE TABLE news_type (原创 2014-06-02 21:58:35 · 1360 阅读 · 0 评论 -
(经典)分页组件,3种不同样式的分页效果,数字,按钮,标题搜索等功能
"java" import="java.util.*" pageEncoding="UTF-8"%> String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";原创 2014-06-03 09:41:14 · 1723 阅读 · 0 评论 -
Spring + JDBC + Struts联合开发(实现单表的CRUD)
这里使用Spring + JDBC +Struts,完成新闻表的添加,修改,删除和查询功能。建立数据库:[sql] view plaincopyCREATE TABLE news_type ( tid number(8) primary key , tname原创 2014-06-02 21:55:44 · 1692 阅读 · 0 评论 -
(详细)Hibernate查询技术(Query、Session、Criteria),Hibernate的三种状态,Hibernate集合struts2实现登录功能(二)
一、Hibernate的三种查询方式(掌握) Hibernate中提供了三种查询方式:1)Session的查询:按主键查询查询,方法为get或load2)Query的查询:使用HQL语句或SQL语句完成查询3)Criteria的查询:通过方法和类中属性的关系,来设置查询条件,完成查询。Session中get和load方法的区别?1) 如果没有查询到数据,get会返回n原创 2014-06-03 09:43:00 · 1847 阅读 · 0 评论 -
(精简)Spring框架的IoC(替代工厂类实现方法)和AOP(定义规则,约定大于配置)
Spring的核心框架主要包含两个技术,分别用来处理工厂类,以及事务处理和连接管理的。两大核心概念1) IoC:控制反转,在现在的开发中,如果想建立对象并设置属性,是需要先new对象,再通过setter或构造方法设置属性。而使用Spring的IoC后,则是先通过配置声明属性的值或关系,再通过Spring框架建立对象,建立好的对象中就自动设置好了配置的属性。此功能可以替代工厂类。在IoC原创 2014-06-02 21:57:07 · 1817 阅读 · 0 评论 -
Java调用Matlab
1 Java调用Matlab方法举例◆ 将Matlab编写的m文件转化为COM(Component Object Model)组件,在Java程序中利用第三方工具包调用com组件,实现对Matlab程序的调用。1) Jawin(Java/Win32)jawin是一个免费开源的体系结构,用于 Java 组件和通过 Windows COM 对象或 Windows DLL 来公开的组件之间原创 2014-06-24 17:01:20 · 1786 阅读 · 0 评论 -
SSH框架联合开发(Annotation精简Spring的配置文件)
配置信息的改变在Spring3.0及以上版本中,可以使用Annotation替代一部分XML配置,从而简化一些配置代码。使用此功能前,需要先在头信息中加入允许使用context支持的配置。(这里头信息是在初始创建的applicationContext中,我这里是在application-hibernate,xml中)xmlns:xsi="http://www原创 2014-06-02 21:55:02 · 1613 阅读 · 0 评论 -
(经典)Hibernate多对多关系映射(五)
多对多关系是产生在三张表的关系中的,必须有一张中间表,必须保证中间表只有两个字段,必须是复合主键,必须是另两张表的外键。一、用多对多关系来设计类例如:学生选课这里只创建学生和课程类,中间表不生成对应的pojo。类中通过以下方式表示关系:1) 学生会选择多门课程,因此在学生类中包含了多个课程类的对象,使用Set集合来保存。2) 一门课程有多个学生选择,因此课程类中也要包含原创 2014-06-02 21:57:57 · 1477 阅读 · 0 评论 -
(经典)Hibernate的一对多关系映射(三)
一对多关系是表提出来的概念,两张表之间会存在这种,前提是有外键关联。例如:省份和城市如果设计类,怎样描述省份和城市之间的一对多关系省份类里包含多个城市对象,使用 Set集合来描述城市类里包含一个省份对象。使用Hibernate开发时,如果表中存在一对多关系,而且这些表一起选择生成映射,则会自动生成包含一对多关系的类。这里建立两张表(省份和城市)[sql] v原创 2014-06-03 09:40:27 · 1614 阅读 · 0 评论 -
(详细)Hibernate框架的搭建,Hibernate的CRUD操作(一)
一、框架概述:框架的优点:开发速度快,规范后台框架:Hibernate,MyBATIS(iBATIS),EJB前台框架(MVC):Struts(1/2),SpringMVC,JSFSpring框架:Spring,SeamJS框架:JQuery,ExtJS二、Hibernate框架与ORMapping概念ORMapping:对象关系映射,通过在类与表之间建立关系,使程序操原创 2014-06-03 09:43:45 · 1580 阅读 · 0 评论 -
JVM--参数设置
1.在eclipse设置JVM参数 打开eclipse-窗口-首选项-Java-已安装的JRE(对在当前开发环境中运行的java程序皆生效,也就是在eclipse中运行的java程序)编辑当前使用的JRE,在缺省VM参数中输入:-Xmx128m-Xms64m -Xmn32m -Xss16m 或者在运行一个java程序的时候执行:java -Xmx128m -Xms原创 2014-07-30 09:49:06 · 1417 阅读 · 0 评论 -
java.lang.UnsatisfiedLinkError解决方法汇集
运行JSP报表程序页面出现java.lang.UnsatisfiedLinkError: CC错误有以下几种原因和处理方法:1、请查看控制台的错误信息a:如果控制台的消息是类似java.lang.UnsatisfiedLinkError: no MRChkLib in java.library.path,Error loading library MRChkLib这样的错误信息原创 2014-09-16 14:00:03 · 2815 阅读 · 0 评论