Maven实战与原理分析(二):maven实战
1 Maven 介绍1.1 为什么使用 Maven由于 Java 的生态非常丰富,无论你想实现什么功能,都能找到对应的工具类,这些工具类都是以 jar 包的形式出现的,例如 Spring,SpringMVC、MyBatis、数据库驱动,等等,都是以 jar 包的形式出现的,jar 包之间会有关联,在使用一个依赖之前,还需要确定这个依赖所依赖的其他依赖,所以,当项目比较大的时候,依赖
Maven实战与原理分析(一):maven超全使用指南总结
在 Java 8之前,一个实现了只有一个抽象方法的接口的匿名类看起来更像Lambda 表达式。下面的代码中,anonymousClass方法调用waitFor方法,参数是一个实现接口的Condition类,实现的功能为,当满足某些条件,Server 就会关闭。 下面的代码是典型的匿名类的使用。 void anonymousClass() { final Server server
Java中的屠龙之术(二):如何方便快捷地生成.class文件
在之前的“Java中的屠龙之术:如何修改语法树”中,我们详细介绍了如何使用Javac源码提供的工具类来修改语法树。 而在此基础上,有一款开源工具javapoet可以更加快捷地生成字节码,实现原理其实也就是对JavaAPT的封装,然而Javapoet有一个局限性,就是只能生成新的.class文件,却无法修改原有的类,这也是它的一大局限性所在。接下来就让我们看看它的使用方法把。 0x00
如果你想在Java中写一个Http客户端,你会选择哪一种方式?Okhttp vs Apache vs Jdk
除了本文推荐的几种方式,强烈推荐 OkHttp 目前JAVA实现HTTP请求的方法用的最多的有两种:一种是通过HTTPClient这种第三方的开源框架去实现。HTTPClient对HTTP的封装性比较不错,通过它基本上能够满足我们大部分的需求。 HttpClient3.1 是 org.apache.commons.httpclient下操作远程 url的工具包,虽然已不再更新,但实现工
Java8特性详解 lambda表达式(三):原理篇
Java为什么需要lambda表达式?能够提升代码简洁性、提高代码可读性。 例如,在平时的开发过程中,把一个列表转换成另一个列表或map等等这样的转换操作是一种常见需求。在没有lambda之前通常都是这样实现的。 List idList = Arrays.asList(1L, 2L, 3L);List personList = new A
Java8特性详解 lambda表达式(二):流式处理中的lambda
要讲 Stream ,那就不得不先说一下它的左膀右臂 Lambda 和方法引用,你用的 Stream API 其实就是函数式的编程风格,其中的「函数」就是方法引用,「式」就是 Lambda 表达式。 Lambda 表达式Lambda 表达式是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象,是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭
Java8特性详解 lambda表达式(一):使用篇
在 Java 8之前,一个实现了只有一个抽象方法的接口的匿名类看起来更像Lambda 表达式。下面的代码中,anonymousClass方法调用waitFor方法,参数是一个实现接口的Condition类,实现的功能为,当满足某些条件,Server 就会关闭。 下面的代码是典型的匿名类的使用。 void anonymousClass() { final Server server
lombok中的builder注解居然是一种设计模式:让我们了解一下“建造者模式”吧
lombok中的builder注解本质上是为你生成了一个构造器Builder类,通过这个类我们可以构造出带此注解的对象。本质上它实现了设计模式中一种经典的模式:建造者模式1.认识:①一句话来说:封装一个复杂对象的构建过程,并可以按步骤构造。因为需要对对象一步步建造起来,所以称为建造者模式。②将复杂产品的构建过程封装分解在不同的方法中,使得创建过程非常清晰,能够让我们更加精确的控制复杂产
从Java的类加载机制谈起:聊聊Java中如何实现热部署(热加载)
一 class的热替换ClassLoader中重要的方法 loadClassClassLoader.loadClass(...) 是ClassLoader的入口点。当一个类没有指明用什么加载器加载的时候,JVM默认采用AppClassLoader加载器加载没有加载过的class,调用的方法的入口就是loadClass(…)。如果一个class被自定义的ClassLoader加载,那么JVM
面试题:Spring 的循环依赖问题
Spring 的循环依赖问题什么是循环依赖什么是循环依赖呢?可以把它拆分成循环和依赖两个部分来看,循环是指计算机领域中的循环,执行流程形成闭合回路;依赖就是完成这个动作的前提准备条件,和我们平常说的依赖大体上含义一致。放到 Spring 中来看就一个或多个 Bean 实例之间存在直接或间接的依赖关系,构成循环调用,循环依赖可以分为直接循环依赖和间接循环依赖,直接循环依赖的简单依赖场景:Bean A
Java 中的屠龙之术:如何修改语法树?
作者:不学无数的程序员 来源:https://my.oschina.net/u/4030990/blog/3211858 在网上关于如何修改Java的抽象语法树的相关API文档并不多,于是本篇记录一下相关的知识点,以便随后查阅。 JCTree的介绍JCTree是语法树元素的基类,包含一个重要的字段pos,该字段用于指明当前语法树节点(JCTree)在语法树中的位置,因此我们不能直接用new关
@lombok注解背后的原理是什么,让我们走近自定义Java注解处理器
本文介绍了如何自定义Java注解处理器及涉及到的相关知识,看完本文可以很轻松看懂并理解各大开源框架的注解处理器的应用。 《游园不值》应怜屐齿印苍苔 ,小扣柴扉久不开 。春色满园关不住 ,一枝红杏出墙来 。-宋,叶绍翁 本文首发:http://yuweiguocn.github.io/ 关于自定义Java注解请查看自定义注解。 本文已授权微信公众号:鸿洋(hongyangAndr
书单 | 996时代,年轻人该不该拿命换钱?(上)
01《倦怠社会》韩炳哲(著)倦怠社会内容简介:否定性的社会已经消失,取而代之的是充溢着积极性的社会。从这一范式转移出发,韩炳哲展示了当今社会的病理形态,其中包括抑郁症、注意力缺乏症、过劳症等精神疾病。它们不是传染病,而是梗阻症;不是由否定性的、免疫学上的他者导致,而是源于过量的肯定性。作者的论述终以一个社会愿景结束,他有意赋予其一个含有歧义的名称“倦怠社会”。这是一部为当下全球化时代做出诊断的重要
打工人书单 | 我要悄悄读书 然后惊艳所有人
生活里80%的痛苦来源于打工,但是我知道,如果不打工,就会有100%的痛苦来源于没钱,所以在打工和没钱之间,我选择打工。 ——《打工宣言》 “打工人”火了。 “打工人”是对所有从事体力劳动和脑力劳动的人的统称。他们有着一系列显著特征,比如对现实有着清醒的认知——“不打工,就没饭吃”“今天搬砖不狠,明天地位不稳”。 又比如对工作有着高度的热情——“人可以一天不吃饭,但不能一天不打工”“我自从
从“负二代”到“富二代”,你只需要一份打工人书单
闷头加班到深夜,第二天却发现完全不是老板想要的东西。不好意思拒绝同事的请求,到最后却发现自己的工作都没完成。你以为自己很努力,却从周围的反馈中发现,自己的努力完全没有意义。 职场,是和校园完全不同的环境,在这里你要学会全新的游戏规则。每一个在职场中游刃有余的人,都拥有一套完整的职场认知体系。从职场新人到进阶,我们为你准备了一份完整的知乎书单。 1. 《一小时:面试加分项》 推荐理由:找工作先
送你一份perl书单
点击蓝色“程序员书单”关注我哟 加个“星标”,每天带你读好书! perl系列书单 Perl语言编程 内容简介 从1991年问世以来,《Perl语言编程》很快成为无可争议的Perl宝典,如今仍是这种高实用性语言的权 Wei 指南。Perl只是作为一个功能强大的文本处理工具,不过很快发展成为一种通用的编程语言,可以帮助成千上万的程序员、系统管理员,以及像你一样的技术爱好者轻松完成