177 天前 / 沉默王二
空了的时候,我都会在群里偷偷摸摸地潜水,对小伙伴们的一举一动、一言一行筛查诊断。一副班主任的即时感,让我感到非常的快乐,略微夹带一丝丝的枯燥。 这不,我在战国时代读者群里发现了这么一串聊天记录: 竟然有小伙伴不知道“打日志”是什么意思,不知道该怎么学习,还有小伙伴回答说,只知道 Log4j! 有那么一刻,我遭受到了一万点暴击,内心莫名的伤感,犹如一匹垂头丧气的狗。因为网络上总有一些不怀好意的人不停地攻击我,说我写的文章入门,毫无深度——他们就是我命中注定的黑子,不信你到脉脉上搜“沉默王二”,就能看到他们毫无新意的抨击。
177 天前 / 爱笑的架构师
用注解一时爽,一直用一直爽 Java 后端开发进入 spring 全家桶时代后,开发一个微服务提供简单的增删改查接口跟玩泥巴似的非常简单,一顿操作猛如虎,回头一看代码加了一堆注解:@Controller @Autowired @Value,面向注解编程变成了大家不可缺少的操作。 想象一下如果没有注解 Java 程序员可以要哭瞎 既然注解(annotation)这么重要,用的这么爽,那注解的实现原理你知道么?我猜你只会用注解不会自己写注解(手动滑稽)。 好了,下面的内容带大家从零开始写一个注解,揭开注解神秘的面纱。
181 天前 / 知了一笑
一、IO 流分类 1、分类角度 流的方向 输入流:从数据源中读取数据到应用中的流; 输出流:从应用中将数据写入到目的地的流; 流数据类型 字节流:以字节形式来读写的流,标识是名称以 Stream 结尾; 字符流:以字符形式来读写的流,标识是名称以 Writer、Reader 结尾; 管道流:以数据块为单位来处理,缓冲区就是用于读写的数据块; 流的角色 节点流:可以从一个节点或者向一个节点读 / 写数据的流,也被称为低级流; 处理流:对存在的流进行连接或者封装、封装后的流来进行读 / 写、也被称为高级流。
181 天前 / Tony沈哲
pexels-sobhan-joodi-3215050.jpg 一。 集合中的函数式 API 虽然 Kotlin Collection 中的函数式 API 类似于 Java 8 Stream 中的 API。但是 Kotlin 的集合跟 Java 的集合并不一致。 Kolin 的集合分为可变集合 (mutable collection)和不可变集合 (immutable collection)。不可变集合是 List、Set、Map,它们是只读类型,不能对集合进行修改。可变集合是 MutableList、MutableSet、MutableMap,它们是支持读写的类型,能够对集合进行修改的操作。 Kotlin 集合中的函数式 API 跟大部分支持 Lambda 语言的函数式 API 都类似。
182 天前 / why技术
这是 why 的第 69 篇原创文章 BUG 描述一个编号为 8073704 的 JDK BUG,将串联起我的这篇文章。 也就是下面的这个链接。 https://bugs.openjdk.java.net/browse/JDK-8073704 这个 BUG 在 JDK 9 版本中进行了修复。也就是说,如果你用的 JDK 8,也许会遇到这样的问题。 先带大家看看这个问题是怎么样的: 这个 BUG 说:FutureTask.isDone 方法在任务还没有完成的时候就会返回 true。 可以看到,这是一个 P4 级别(优先级不高)的 BUG,这个 BUG 也是分配给了 Doug Lea,因为 FutureTask 类就是他写的: 响应了国家政策:谁污染,谁治理。
182 天前 / 开发者头条
多线程编程的理论 ↓↓↓ 今天给小伙伴们出几道阿里必问的面试题,测测你能完美的回答几道呢? 有没有一种一定能保证线程安全的代码写法?(偷偷告诉你,真的有!) 多个线程如何保持 A1B2C3 等顺序交替输出? synchronized volatile 的 CPU 原语是如何实现的? 无锁、偏向锁、轻量级锁、重量级锁有什么差别? 如何正确的启动和停止一个线程? 线程和纤程的区别的是什么?为什么纤程比较轻量级? ThreadLocal 有没有内存泄漏的问题?为什么? 下列三种业务...
183 天前 / 爱笑的架构师
Java8 由 Oracle 在 2014 年发布,是继 Java5 之后最具革命性的版本了。Java8 吸收其他语言的精髓带来了函数式编程,lambda 表达式,Stream 流等一系列新特性,学会了这些新特性,可以让你实现高效编码优雅编码。 Lambda 表达式小试牛刀 Lambada 表达式可以理解为:可传递的匿名函数的一种简洁表达方式。Lambda 表达式没有名称,同普通方法一样有参数列表、函数主体、返回类型等; 下面简单看一个例子,new 一个线程打印字符串,采用 lambda 表达式非常简洁: newThread(()->System.out.println("hellojava8lambda")).start() Thread 类接受一个 Runnable...
185 天前 / fanchaoo
We use optional third-party analytics cookies to understand how you use GitHub.com so we can build better products.You can always update your selection by clicking Cookie Preferences at the bottom of the page.For more information, see our Privacy Statement. Essential cookiesWe use essential cookies to perform essential website functions, e.g. they're used to log you in.Learn more
186 天前 / Joinncat
写这篇的时候,相信有很多朋友还在用 Jedis 作为 Redis 的客户端,我不禁有很多问号,Jedis 还香吗?如果你早些年说它香我信,但是都 2020 年了,它真的不那么香了。那为什么还继续使用它呢?大部分原因或多或少是因为遗留代码没人敢大动,就这样吧;二是新项目没人主导使用其它实现做替换。祖传代码不轻易大动,这个真理必须相信,且坚持相信;至于没人主导拍板做技术替换,可能是习惯了 Jedis 的用法,也可能是没人了解其它技术实现,当然还有其它原因,有兴趣分享的朋友可以在评论区聊一聊。咳咳,扯远了,来聊我们今天的话题 -Redisson 实战用法。
190 天前 / 四杯酒
ObjectiveSql’s mission is to provide the most intuitive and convenient approach to access various databases, without configuration, without coding relevant to JDBC&ORM. It is an abstraction and encapsulation of java in relation database domain logic. ObjectiveSql-based programming is the best practice in ActiveRecord pattern in Java, which incorporates both behavior and data and avoids meaningless Interface declaration of Java. Thus, ObjectiveSql-based programming will change the way to build an application...
191 天前 / 码农UP2U
Java 中常用的数据库连接池有 C3P0、Hikari、Druid 等。数据库的连接池,对于整个项目的性能还是很关键的,因此所有的 Java 项目当中都会使用数据库连接池。在 Java 的各种数据库连接池中,Druid 是阿里巴巴推出的开源的、号称最好用数据库连接池,它提供了强大的监控和扩展功能。Druid 在 github 的地址如下: https://github.com/alibaba/druid/wiki/ 常见问题 本次来整理一下关于 Spring 和 Druid 的整合。
191 天前 / WriteOnRead
1. 前言 之前断断续续读过一部分 JDK 常用类的源码,这里想把过程中的一些心得和方法记录下来,如果能帮到需要的小伙伴就再好不过了! 本文主要分享一下我的阅读工具和阅读顺序。 PS: 由于当前主流使用的 JDK 版本仍是 1.8,因此源码阅读主要是 1.8 版本,有些地方可以参考 1.7(面试可能问到)。 2. 工具 工欲善其事,必先利其器。 需要的工具不多,IDE + Google 翻译足够了。 使用 IDE 的主要目的是可以写一些测试代码以便跟踪调试。这个还是很有必要的,跟进代码的执行流程更容易理解它的实现原理。
195 天前 / 飞哥王某
今年,Java 达到了一个令人难以置信的里程碑,并达到了 25 岁的高龄。 这让我们开始思考并决定深入研究数据,以一劳永逸地发现 Java 的普遍状态,并帮助回答您的一些迫切问题。我们发现的某些内容可能不足为奇,但也有一些非常出乎意料的见解。 开发者分布在哪里第一个问题是:“大多数 Java 开发人员都在哪里,我们中有多少人呢?” 我们通过结合可以获取的最准确的信息来进行回答,然后进行推断以得出我们认为是很好的猜测。 市场研究和分析团队对开发人员估计模型的最佳估计表明,当今世界上有大约 520 万专业 Java 开发人员将 Java 作为主要语言。
196 天前 / 沉默王二
假如有那么残酷的一天,我不小心喝错了一瓶药,一下子抹掉了我这十多年的编程经验,把我变成了一只小白。我想自学 Java,并且想要找到一份工作,我预计需要 6 个月的时间,前提条件是每天都处于高效率的学习状态当中,并且每天的学习时间至少在 12 个小时以上。 即便是这样,我敢肯定,找到的工作肯定不会太好,勉强能够维持生活吧,毕竟是零基础入门啊。 如果想更进一步,真正成为一名不可或缺的高级 Java 工程师,时间需要更久,两年、三年、五年,直到秃的那天。 想着想着,我就觉得有必要为那一天做点准备,以备不时之需。
198 天前 / 编程一生
背景 工程中用到 guava 的本地缓存。它底层实现和 API 接口上使用了强引用、软引用、弱引用。所以温故知新下,也夯实下基础。 预备知识 先来看下 GC 日志每个字段的含义 Young GC 示例解释 [GC (Allocation Failure) [PSYoungGen: 273405K->20968K(278016K)] 480289K->473619K(737792K), 0.1090103 secs] [Times: user=0.19 sys=0.27, real=0.11 secs] 解释 [GC( 产生 GC 的原因,例子中是由于分配内存失败) [PSYoungGen: 年轻代回收前空间 ->年轻代回收后空间 ( 年轻代总空间)] 堆区的回收前空间 ->堆区的回收后空间 ( 堆区的总空间), GC 耗时』 [Times: ...