精通Java系列
文章平均质量分 86
自学Java人员的理想专栏
冰 河
这个作者很懒,什么都没留下…
展开
-
一文讲透Java核心技术之高可扩展利器SPI
Java是一种面向对象语言,虽然Java8开始支持函数式编程和Stream,但是总体来说,还是面向对象的语言。在使用Java进行面向对象开发时,一般会推荐使用基于接口的编程,程序的模块与模块之前不会直接进行实现类的硬编码。而在实际的开发过程中,往往一个接口会有多个实现类,各实现类要么实现的逻辑不同,要么使用的方式不同,还有的就是实现的技术不同。为了使调用方在调用接口的时候,明确的知道自己调用的是接口的哪个实现类,或者说为了实现在模块装配的时候不用在程序里动态指明,这就需要一种服务发现机制。Java中的SPI原创 2022-08-15 10:00:11 · 1244 阅读 · 0 评论 -
【Java基础】四张图轻松拿捏Java VisualVM添加Visual GC插件实现JVM性能调优
今天给大家分享下如何在Java VisualVM中添加Visual GC插件实现JVM性能调优,整个步骤分享简单,我就简单的以JDK1.7为例吧,大家看图就好啦,一起加油!原创 2022-08-13 09:52:05 · 889 阅读 · 1 评论 -
千万不要在生产环境使用这个版本的JDK,这不?内存又溢出了!快要裂开了!(建议收藏)
这个版本的JDK中String的substring()方法在高并发大流量的场景下,会频繁引发内存溢出,冰河亲身经历,强烈建议大家收藏!!原创 2021-09-13 16:44:18 · 5173 阅读 · 28 评论 -
公司的报表工具太难用,我三天撸了个Excel工具,运营小姐姐直呼太好用了,现已开源!!(建议收藏)
冰河手把手教你撸Excel报表工具,俘获运营小姐姐的心,一起加油,搞起来!!冰河强烈建议收藏!!原创 2021-09-10 10:32:45 · 50016 阅读 · 63 评论 -
项目配置不当引发了数据泄露,人已裂开!!(建议收藏)
项目配置不当引起的数据泄露问题,看冰河如何带你解决这类问题,强烈建议收藏!!原创 2021-09-02 08:26:18 · 9048 阅读 · 37 评论 -
半小时实现Java手撸网络爬虫框架!!(附完整源码,建议收藏)
半小时实现Java网络爬虫,附完整源码,冰河强烈建议收藏!!原创 2021-06-29 08:41:45 · 8442 阅读 · 39 评论 -
面试官让我现场手写MyBatis框架,我10分钟就搞定了!!(全程实战,建议收藏)
很多小伙伴不知道像MyBatis和Hibernate这种ORM框架是如何实现的,今天,我们就手撸一个ORM框架,看看ORM框架到底是如何实现的!全程实战,建议收藏!原创 2021-05-31 08:14:09 · 18208 阅读 · 57 评论 -
面试官让我现场手写内存溢出案例代码,我反手就是一个王炸!!
当初面试官让我现场手写内存溢出案例代码,我就以Java代码的方式列举了几个典型的内存溢出案例。今天分享给大家,希望大家在日常工作中,尽量避免写这些low水平的代码原创 2021-05-27 08:48:43 · 12806 阅读 · 52 评论 -
半小时实现Java手撸Http协议,爽!!(附完整源码,建议收藏)
冰河就趁着周末,只用了几个Java类就简单的实现了Http协议,爽!!原创 2021-05-22 11:39:51 · 18077 阅读 · 71 评论 -
常用正则表达式合集,这一篇就够了!!(含完整案例,建议收藏)
正是掌握了这些正则表达式,冰河平均每天比别人少写200行代码,极大的提高了研发效率,有了很多摸鱼的时间!!原创 2021-05-14 07:46:17 · 169277 阅读 · 47 评论 -
Wechat之——微信配置模板消息进行订单消息推送[基于测试号]
首先在微信端配置好模板消息内容如下,注意{{*.DATA}} 是固定写法,占位符,是需要被替换掉的内容。{{first.DATA}} 订单商品:{{keyword1.DATA}} 订单编号:{{keyword2.DATA}}支付金额:{{keyword3.DATA}} 支付时间:{{keyword4.DATA}} {{remark.DATA}}配置成功后记录下模板ID...转载 2018-07-25 19:26:21 · 3931 阅读 · 0 评论 -
SpringBoot之——集成 Druid + Mybatis
最近把一个项目的框架由 SpringMVC 转为 Spring Boot。Spring Boot框架的使用入门很快,尤其是 Spring Boot 其实相当于对 Spring 做了一些改进,去除配置,改为代码约定。但是,没了配置,第三方库如何集成进来就是我 Spring Boot 入门学习遇到的第一个坎,尤其是一些没有官方支持 Spring Boot 的库。我把我的项目框架转为 Spring Bo...转载 2018-10-22 00:39:27 · 1397 阅读 · 0 评论 -
Druid之——连接池自定义数据库密码加解密的实现
转载请注明出处:https://blog.csdn.net/l1028386804/article/details/79920338Druid是阿里巴巴开发的一款数据库连接池,它支持对数据库密码的加密操作,今天我们就一起来实现如何利用Druid对数据库的密码进行加密操作。1、首先配置Druid的数据库连接池<!--数据源加密操作--><bean id="dbPasswordCa...原创 2018-04-12 21:49:59 · 6628 阅读 · 2 评论 -
正则之——知道这20个正则表达式,能让你少写1,000行代码
正则表达式,一个十分古老而又强大的文本处理工具,仅仅用一段非常简短的表达式语句,便能够快速实现一个非常复杂的业务逻辑。熟练地掌握正则表达式的话,能够使你的开发效率得到极大的提升。正则表达式经常被用于字段或任意字符串的校验,如下面这段校验基本日期格式的JavaScript代码:var reg = /^(\\d{1,4})(-|\\/)(\\d{1,2})\\2(\\d{1,2})$/; v原创 2016-04-28 12:52:52 · 2455 阅读 · 0 评论 -
一行代码引起的dll类库“爆炸”事件!
到底出啥问题了?JNA调用dll类库不行了?原创 2021-04-01 01:12:38 · 1538 阅读 · 6 评论 -
Java中一个逐渐被遗忘的强大功能,强到你难以置信!!
是什么技术如此强大?原创 2021-03-27 18:56:59 · 1696 阅读 · 6 评论 -
Eclipse项目发布到Tomcat下被加载两次
近来发现,Eclipse项目发布到Tomcat下被加载了两次。启动Tomcat时,项目被加载了两次,项目启动了两次。 启动tomcat会两次加载项目 原因是server.xml设置的问题。 解决方案:在右边的工程中,有一个Servers这里有个server.xml文件,打开,观察文件最末尾,删除Context标签。注意不要把也删了。改后,如下所示(即还剩原创 2015-04-30 20:02:17 · 2540 阅读 · 0 评论 -
解决Eclipse发布到Tomcat丢失依赖jar包的问题
如果jar文件是以外部依赖的形式导入的。Eclipse将web项目发布到Tomcat时,是不会自动发布这些依赖的。可以通过Eclipse在项目上右击 - Propertics - Deployment Assembly,添加“Java Build Path Entries”,添加所有依赖的jar包,就可以在发布时自动发布外部依赖的jar包。原创 2014-11-10 21:06:13 · 12775 阅读 · 1 评论 -
tomcat部署之后 本机访问本地部署的网站打开一个页面非常慢
tomcat部署之后 本机访问本地部署的网站打开一个页面非常慢。有时甚至会造成页面空白或直接卡死。解决方法:是连接池出的问题。改用c3p0连接池。原创 2014-05-14 14:21:07 · 7359 阅读 · 0 评论 -
Android之——任意时刻从子线程切换到主线程的实现(插曲)
一、引入 在Android开发中常常会遇到网络请求,数据库数据准备等一些耗时的操作;而这些操作是不允许在主线程中进行的。因为这样会堵塞主线程导致程序出现未响应情况。所以只能另起一个子线程进行这些耗时的操作,完成后再显示到界面。众所周知,界面等控件操作只能在主线程中完成;所以不可避免的需要从子线程切换到主线程。二、方法 对于这样的情况在Android 中原创 2015-05-24 13:04:53 · 3599 阅读 · 0 评论 -
我对多线程编程的理解与联想
由于最近工作原因,很久没有写日志了,今天在这写篇文章,是关于java多线程的。这也是我对于多线程编程的一点浅显的认识与理解。对于JAVA多线程的应用非常广泛,现在的系统没有多线程几乎什么也做不了,很多时候我们在何种场合如何应用多线程成为一种首先需要选择的问题,另外关于java多线程的知识也是非常的多,本文中先介绍和说明一些常用的,在后续文章中如果有必要再说明更加复杂的吧,本文主要说明多原创 2014-02-25 23:35:16 · 3631 阅读 · 1 评论 -
结合实战和源码来聊聊Java中的SPI机制?
一文搞懂Java的SPI机制!!原创 2020-11-20 20:17:53 · 731 阅读 · 4 评论 -
Java中的String到底占用多大的内存空间?你所了解的可能都是错误的!!
String类型占用的存储空间原来是可以计算的,你理解的对吗??原创 2020-10-21 01:37:09 · 4946 阅读 · 10 评论 -
【Java8新特性】冰河带你看尽Java8新特性,你想要的都在这儿了!!(文本有福利)
写在前面很多小伙伴留言说,冰河你能不能写一些关于Java8的文章呢,看书看不下去,看视频进度太慢。好吧,看到不少读者对Java8还是比较陌生的,那我就写一些关于Java8的文章吧,希望对大家有所帮助。经过一段时间的更新,【Java8新特性】专题基本更新完了,也算是告一段落了,今天,我就将【Java8新特性】专题的文章进行汇总,以PDF的形式开放出来,以便大家能够更好的学习和阅读。如何持续提升自身能力如果你觉得冰河写的还不错,请微信搜索并关注「 冰河技术 」微信公众号,跟冰河学习高并发、分布式、微服原创 2020-07-07 18:21:10 · 3075 阅读 · 1 评论 -
【Java8新特性】重复注解与类型注解,你真的学会了吗?
写在前面在Java8之前,在某个类或者方法,字段或者参数上标注注解时,同一个注解只能标注一次。但是在Java8中,新增了重复注解和类型注解,也就是说,从Java8开始,支持在某个类或者方法,字段或者参数上标注多个相同的注解。那么,有读者就会问了:如何实现呢?别急,往下看!文中不只是Java8中的注解。JDK5中的注解1.注解(@)注解就相当于一种标记,在程序中加了注解就等于为程序加了某种标记。(JDK1.5新特性)。2.作用告诉javac编译器或者java开发工具……向其传递某种信息,作为一原创 2020-06-03 13:34:20 · 1951 阅读 · 0 评论 -
【Java8新特性】关于Java8中的日期时间API,你需要掌握这些!!
写在前面Java8之前的日期和时间API,存在一些问题,比如:线程安全的问题,跨年的问题等等。这些问题都在Hava8中的日期和时间API中得到了解决,而且Java8中的日期和时间API更加强大。立志成为架构师的你,必须掌握Java8中的日期和时间API。本地时间和时间戳主要方法:now:静态方法,根据当前时间创建对象of:静态方法,根据指定日期/时间创建对象plusDays,plusWeeks,plusMonths,plusYears:向当前LocalDate 对象添加几天、几周、几个月、原创 2020-06-02 00:55:43 · 2195 阅读 · 5 评论 -
【Java8新特性】接口中的默认方法和静态方法,你都掌握了吗?
写在前面在Java8之前的版本中,接口中只能声明常量和抽象方法,接口的实现类中必须实现接口中所有的抽象方法。而在Java8中,接口中可以声明默认方法和静态方法,本文,我们就一起探讨下接口中的默认方法和静态方法。接口中的默认方法Java 8中允许接口中包含具有具体实现的方法,该方法称为“默认方法”,默认方法使用 default 关键字修饰 。例如,我们可以定义一个接口MyFunction,其中,包含有一个默认方法getName,如下所示。public interface MyFunction&l原创 2020-05-31 22:45:06 · 1627 阅读 · 1 评论 -
【Java8新特性】不了解Optional类,简历上别说你懂Java8!!
写在前面最近,很多读者出去面试都在Java8上栽了跟头,事后自己分析,确实对Java8的新特性一知半解。然而,却在简历显眼的技能部分写着:熟练掌握Java8的各种新特性,能够迅速使用Java8开发高并发应用!这不,又一名读者因为写了熟练掌握Java8的新特性而被面试官虐的体无完肤!我不是说不能写,可以这样写!但是,咱在写熟练掌握Java8新特性的时候,应该静下心来好好想想自己是否真的掌握了Java8。如果自己心中对是否掌握了Java8这个问题模棱两可的话,那确实要好好静下心来为自己充电了!一定要从模棱两原创 2020-05-30 21:09:42 · 8686 阅读 · 0 评论 -
【Java8新特性】关于并行流与串行流,你必须掌握这些!!
写在前面提到Java8,我们不得不说的就是Lambda表达式和Stream API。而在Java8中,对于并行流和串行流同样做了大量的优化。对于并行流和串行流的知识,也是在面试过程中,经常被问到的知识点。当然,我们不能只是为了应付面试来学习这些知识,更重要的是将这些知识运用到实际的工作中,更好的提高我们的工作效率和工作质量。什么是并行流?简单来说,并行流就是把一个内容分成多个数据块,并用不同的线程分别处理每个数据块的流。Java 8 中将并行进行了优化,我们可以很容易的对数据进行并行操作。 St原创 2020-05-29 21:53:26 · 2341 阅读 · 0 评论 -
【Java8新特性】面试官:谈谈Java8中的Stream API有哪些终止操作?
写在前面如果你出去面试,面试官问了你关于Java8 Stream API的一些问题,比如:Java8中创建Stream流有哪几种方式?(可以参见:《【Java8新特性】面试官问我:Java8中创建Stream流有哪几种方式?》)Java8中的Stream API有哪些中间操作?(可以参见:《【Java8新特性】Stream API有哪些中间操作?看完你也可以吊打面试官!!》)如果你都很好的回答了这些问题,那么,面试官可能又会问你:Java8中的Stream API有哪些终止操作呢?没错,这就是Java8原创 2020-05-29 00:19:20 · 1597 阅读 · 0 评论 -
【Java8新特性】Stream API有哪些中间操作?看完你也可以吊打面试官!!
写在前面在上一篇《【Java8新特性】面试官问我:Java8中创建Stream流有哪几种方式?》中,一名读者去面试被面试官暴虐!归根结底,那哥儿们还是对Java8的新特性不是很了解呀!那么,我们继续讲述Java8的新特性,旨在最终可以让每位读者在跳槽面试的过程中吊打面试官!!Stream的中间操作多个中间操作可以连接起来形成一个流水线,除非流水线上触发终止操作,否则中间操作不会执行任何的处理!而在终止操作时一次性全部处理,称为“惰性求值” 。 Stream的中间操作是不会有任何结果数据输出的。原创 2020-05-27 00:31:05 · 1468 阅读 · 0 评论 -
【Java8新特性】面试官问我:Java8中创建Stream流有哪几种方式?
写在前面先说点题外话:不少读者工作几年后,仍然在使用Java7之前版本的方法,对于Java8版本的新特性,甚至是Java7的新特性几乎没有接触过。真心想对这些读者说:你真的需要了解下Java8甚至以后版本的新特性了。今天,一名读者出去面试,面试官问他:说说Java8中创建Stream流有哪几种方式?他竟然没回答上来!!Stream概述Java8中有两大最为重要的改变。第一个是 Lambda 表达式;另外一个则是 Stream API(java.util.stream.*)。Stream 是原创 2020-05-25 22:54:28 · 6623 阅读 · 5 评论 -
【Java】面试官灵魂拷问:if语句执行完else语句真的不会再执行吗?
写在前面最近跳槽找工作的朋友确实不少,遇到的面试题也是千奇百怪,这不,一名读者面试时,被面试官问到了一个直击灵魂的问题:if 语句执行完else语句真的不会再执行吗?这个奇葩的问题把这名读者问倒了!问题分析最近一名读者留言说,自己出去面试被面试官的一道奇葩问题问倒了,这个问题就是:if语句执行完else语句真的不会再执行吗?这名读者确实不知道该如何回答这个问题。回去后,自己查阅了很多资料也没弄明白这个问题!想必很多读者朋友遇到这种奇葩面试题时,多多少少都会觉得闹心吧!不过,闹心归闹心,问题还是要原创 2020-05-23 22:26:37 · 4520 阅读 · 4 评论 -
【Java8新特性】关于Java8的Stream API,看这一篇就够了!!
Java8中有两大最为重要的改变。第一个是 Lambda 表达式;另外一个则是 Stream API(java.util.stream.*)。Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用Stream API 对集合数据进行操作,就类似于使用 SQL 执行的数据库查询。也可以使用 Stream API 来并行执行操作。简而言之,Stream API 提供了一种高效且易于使用的处理数据的方式原创 2020-05-22 00:46:13 · 2851 阅读 · 1 评论 -
【Java8新特性】还没搞懂函数式接口?赶快过来看看吧!
写在前面Java8中内置了一些在开发中常用的函数式接口,极大的提高了我们的开发效率。那么,问题来了,你知道都有哪些函数式接口吗?函数式接口总览这里,我使用表格的形式来简单说明下Java8中提供的函数式接口。四大核心函数式接口首先,我们来看四大核心函数式接口,如下所示。函数式接口参数类型返回类型使用场景Consumer消费型接口Tvoid对类型为T的对象...原创 2020-05-07 23:31:32 · 1414 阅读 · 1 评论 -
【Java新特性】Lambda表达式典型案例,你想要的的都在这儿了!!
写在前面不得不说,有些小伙伴的学习热情真高,学完了Lambda表达式的语法,想来几个典型案例再强化下。于是问冰河能否给几个Lambda表达式的典型使用示例。于是乎,便有了这篇文章。案例一需求调用Collections.sort()方法,通过定制排序比较两个Employee(先比较年龄,年龄相同按姓名比较),使用Lambda表达式作为参数传递。实现这里,我们先创建一个Employee...原创 2020-05-06 23:55:54 · 1673 阅读 · 2 评论 -
【Java8新特性】Lambda表达式基础语法,都在这儿了!!
写在前面前面积极响应读者的需求,写了两篇Java新特性的文章。有小伙伴留言说:感觉Lambda表达式很强大啊!一行代码就能够搞定那么多功能!我想学习下Lambda表达式的语法,可以吗?我的回答是:没问题!这不,Lambda表达式来了!匿名类到Lambda表达式我们先来看看从匿名类如何转换到Lambda表达式呢?这里,我们可以使用两个示例来说明如何从匿名内部类转换为Lambda表达式。...原创 2020-05-06 00:48:01 · 1391 阅读 · 0 评论 -
【Java8新特性】你知道Java8为什么要引入Lambda表达式吗?
写在前面这是一道真实的面试题,一个读者朋友出去面试,面试官竟然问他这样一个问题:你说说Java8中为什么引入Lambda表达式?引入Lambda表达式后有哪些好处呢?还好这个朋友对Java8早有准备。不过,如果是看文章的你出去面试,面试官问你这样的问题,你是否也能轻松回答呢?什么是Lambda表达式?Lambda表达式是一个匿名函数,我们可以这样理解Lambda表达式:Lambda是一段...原创 2020-05-04 23:46:16 · 2269 阅读 · 2 评论 -
【Java8新特性】一张图带你领略Java8有哪些新特性
写在前面很多小伙伴留言说,冰河你能不能写一些关于Java8的文章呢,看书看不下去,看视频进度太慢。好吧,看到不少读者对Java8还是比较陌生的,那我就写一些关于Java8的文章吧,希望对大家有所帮助。至于【高并发专题】,后续咱们会继续更新的。Java8有哪些新特性?简单来说,Java8新特性如下所示:Lambda表达式函数式接口方法引用与构造器引用Stream ...原创 2020-05-04 23:39:48 · 1297 阅读 · 0 评论 -
【Maven】pom.xml文件报错:Artifact has not been packaged yet. When used on reactor artifact, copy should be
导入一个新项目后pom.xml报错:Artifact has not been packaged yet. When used on reactor artifact, copy should be executed after packaging: see MDEP-187 is thrown经过在网上查找资料,将解决方案整理如下:首先,这个是eclipse的插件m2e的问题,并不...转载 2020-05-21 23:02:53 · 3406 阅读 · 0 评论