Java 锁系列(四)——ReentrantLock源码Condition实现分析

Condition 是个接口,依赖于 Lock 接口的实现,基本的方法就是 await() 和 signal() 方法,是在 java 1.5 中才出现的,用于替代 Object 的 wait()、notify() 实现线程间的协作,相比使用 Object 的 wait()、notify(),使用 Condition 的 await()、signal() 这种方式实现线程间协作更加安全和高效。因此通常来说比较推荐使用Condition,阻塞队列实际上是使用了Condition来模拟线程间协作。

spring概述、标签介绍、配置对象及简单的属性设置注入

写在前面很久以前在有道云笔记上写的笔记,打算放弃它了,将笔记迁移到这里来。文章可能还有很多不足,请大家谅解,欢迎大佬提意见。本文使用到的东西springjava1 spring的概述因为spring基于反射原理,在使用spring框架的对象类中要存在默认的没有参数的构造函数。spring 是一个非常

spring注解实现设值注入

写在前面很久以前在有道云笔记上写的笔记,打算放弃它了,将笔记迁移到这里来。文章可能还有很多不足,请大家谅解,欢迎大佬提意见。本文使用到的东西ecplipsespring1.正文在配置文件中设置注解扫描路径--这里spring配置头基于spring4.0的包, base-package注解表示注解的扫

Kafka 常用命令

本文以 kafka_2.5.1 版本为例,描述的常用命令,在 3.x 版本上命令有所不同。

运维 

网站访问速度优化之ServiceWorker

ServiceWorker 担任了服务器与浏览器的中间人角色,如果网站中注册了 ServiceWorker 那么它可以拦截当前网所有的请求,并做相应的处理动作。 ServiceWorker 内容就是一段 JavaScript 脚本,内部可以编写相应的处理逻辑,比如对请求进行缓存处理,能直接使用缓存的就直接返回缓存不再转给服务器,从而大大提高浏览体验。有些开源工具包存在多个 CDN 站点,使用 ServiceWorker 可以实现自动寻找访问最快的站点,如果某个站点发生错误,可以自动切换,FreeCDN 便是借此实现的。

使用FreeCDN提升网站的访问速度

freecdn 是一个纯前端的 CDN 解决方案,用于降低网站流量成本,同时提高网站稳定性、安全性,并且无需修改现有的业务逻辑。其核心使用了 HTML5 中一个重要的 API —— Service Worker。它是一种浏览器后台服务,能拦截当前站点产生的 HTTP 请求,并能控制返回结果,相当于给网站加了一层反向代理。有了这个黑科技,我们可以把传统 CDN 的功能搬到前端,例如负载均衡、故障切换等,通过 JS 灵活处理各种请求。

Java 并发系列(一)——CountDownLatch源码分析

CountDownLatch 构造一个用给定计数初始化的并发计数器,能够协调多个线程之间的同步,当前线程在计数器倒计数至零之前一直等待,除非线程被中断。一般用于流程控制之类的场景,大流程分成多个子流程,子流程全部结束后大流程开始操作。

在CentOS 7.6上单机部署Zookeeper

本文以 ZooKeeper 3.7.0 版本为例,描述在 CentOS 7.6 上单机方式部署 Zookeeper 的流程。

Java 基础之迭代器的使用

迭代器是一种设计模式,迭代器可以用于遍历集合,开发人员不必去了解这个集合的底层结构。迭代器封装了数据获取和预处理逻辑,屏蔽了容器的实现细节,无需暴露数据结构内部。在数据量非常庞大时使用迭代器进行数据迭代获取,避免全部取出占用过多的服务器资源,且可以对部分数据进行预加载,提升性能。本文将对 java 提供的 Iterator、Iterable 和 Spliterator 三个数据迭代接口做介绍,了解其使用场景。

SpringBoot 通过代理创建接口的实现类 Bean

需要实现的功能是使用指定的 SDK 开发包来访问其他服务的资源,这种场景其实和Mapper、Feign 类似。所以,希望也通过接口上配置注解的方式实现。 所以在本文使用了三个注解: @RkproblemMapperScan :自定义的注解,用于指定要扫描的包名; @RkproblemMapper :自定义的注解,用于标记当前接口需要被代理; @RequestMapping :SpringMvc 的注解,用于标记当前方法需要被代理,以及代理的 url。

Java 并发系列(二)——Semaphore源码分析

Semaphore 通常叫它信号量, 可以用来控制同时访问特定资源的线程数量,也可以用来保持资源生产者和消费者之间的资源限制关系,通过协调各个线程,以保证合理的使用资源。Semaphore 具有公平和非公平两种模式,本文通过源码对 Semaphore 的实现做简单分析。

Docker-Compose Yaml编写以及基础命令

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,降低了运维成本,但是在使用过程中也会发现一些弊端,如 Docker 命令参数太多太复杂、多容器管理繁琐等。Docker-compose 便是在这场景下诞生的一个用于定义和运行多容器 Docker 的应用程序工具,它可以轻松、高效的管理容器,本文将描述 Docker-compose 2.2.2 的 Yaml 配置和基础命令。

运维 

Dockerfile编写以及打包 java 程序为镜像

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux 或 Windows 操作系统的机器上,也可以实现虚拟化。本文介绍 Dockerfile 各项命令的作用,以及如何使用 Dockerfile 打包 java 程序为镜像,并导出和运行。

运维 

Java 集合类系列(二)——常见List源码分析

List 是对有序集合的分装,可对其中每个元素的插入位置进行精确地控制,并通过索引来访问、遍历元素。List 集合中,常用的是 ArrayList 和 LinkedList 这两个类。其中,ArrayList 底层通过数组实现,随着元素的增加而动态扩容,LinkedList底层通过双向链表来实现,随着元素的增加不断向链表的后端增加节点。