
core java
文章平均质量分 90
我,大虫
任何一个程序员都能写能够让机器理解的代码,只有优秀的程序员才能写出人类可以理解的代码。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java NIO:浅析I/O模型
Java NIO:浅析I/O模型问题:一.什么是同步?什么是异步?二.什么是阻塞?什么是非阻塞?三.什么是阻塞IO?什么是非阻塞IO?四.什么是同步IO?什么是异步IO?五.五种IO模型六.两种高性能IO设计模式一、什么是同步?什么是异步?同步就是:如果有多个任务或者事件要发生,这些任务或者事件必须逐个地进行,一个事件或者任务的执行会导致整个流程的暂时等待,这些事件没有办法并发地执行;异步就是:如果有多个任务或者事件发生,这些事件可以并发地执行,一个事件或者任务的执行原创 2021-02-25 09:41:27 · 247 阅读 · 0 评论 -
Java NIO:NIO概述
Java NIO:NIO概述在上一篇文章中讲述了几种IO模型,现在我们开始进入Java NIO编程主题。NIO是Java 4里面提供的新的API,目的是用来解决传统IO的问题。本文下面分别从Java NIO的几个基础概念介绍起。以下是本文的目录大纲: 一.NIO中的几个基础概念 二.Channel 三.Buffer 四.Selector 若有不正之处,请多多谅解并欢迎批评指正。一.NIO中的几个基础概念在NIO中有几个比较关键的概念:Channel(通道),Bu原创 2021-02-25 09:44:35 · 367 阅读 · 0 评论 -
反射生成的类无法进行自动注入的解决方案
造成问题的原因:之前我有一个设计,需要设置一个灵活的过滤规则,但考虑到各部门之间的过滤规则过于繁复,依靠个人能力完全无法在短时间内完成,因此我写了一个接口,让使用者通过实现接口来实现他们自己的过滤规则。问题:设计就是让使用者通过实现该接口,并在我的配置文件里写他们的类路径,我通过反射生成这个类,并加载进我的方法。然后,问题发生了:在这个类中,无法进行Spring工厂注入。问题发生的原理:...原创 2019-09-06 20:06:14 · 2029 阅读 · 0 评论 -
理解2PC,3PC与TCC
理解TCC、2PC和3PC2PC2PC,是Two-Phase Commit的缩写,二阶段提交。过程如下:阶段一:提交事务请求事务询问协调者节点向所有参与者节点询问是否可以执行提交操作(vote),并开始等待各参与者节点的响应。执行事务参与者节点执行询问发起为止的所有事务操作,并将Undo信息和Redo信息写入日志。(注意:若成功这里其实每个参与者已经执行了事务操作)各参与者向...原创 2019-08-29 15:53:32 · 3389 阅读 · 0 评论 -
java的泛型入门
第一次看到类型后面的<\? extends class>,请无视那个反斜杠。我十分迷惑,不知道这时干什么的。直到我学到了泛型,哦,原来泛型没有我想象的那么神秘。 因为Java集合有个缺点,将一个对象放进集合之后,集合就会忘记这个对象的数据类型,当再次取出对象时,这个对象就变成了Object类型(当然实际类型并没有发生变化)。因此泛型被提了出来就是为了解决这个问题入门List<String> str翻译 2017-07-23 11:51:50 · 340 阅读 · 0 评论 -
Queue集合中的PriorityQueue实现类
Queue用于创建模拟队列这种数据结构,Queue接口中定义了如下几种方法:方法void add(Object e):将指定元素加入此队列的尾部boolean offer(Object e):将指定元素加入此队列的尾部。当使用有容量限制的队列时,此方法更好用些。Object element():获取队列头部的元素,但是不删除该元素Object peek():获取队列头部的元素,但是不删除该元原创 2017-07-20 20:22:44 · 503 阅读 · 0 评论 -
java 中 Collection,Iterator,Iterable的简单了解
Collection接口: 1 public interface Collection<T> extends Iterable<T> 2 { 3 int size(); 4 boolean isEmpty(); 5 void clear(); 6 boolean contains(); 7 boolean a原创 2017-07-17 17:53:40 · 438 阅读 · 0 评论 -
Java 8新增的Lambda表达式
Lambda表达式是Java 8的重要更新。Lambda表达式支持将代码块作为方法参数,Lambda表达式允许使用更简洁的代码来创建只有一个抽象方法的接口(这种接口被称为函数式接口)的实例。 1. Lambda表达式入门下面我将采用匿名内部类与Lambda表达式分别处理同样的代码:Command.java:package Lambda;public interface Command { v原创 2017-07-17 10:33:03 · 328 阅读 · 1 评论 -
Kafka的API-Java篇
上一篇文章已经将Kafka的服务配置分享了一遍,这篇主要是将java的API分享一波。Kafka有四个核心API:Producer API :允许应用程序发送数据流到kafka集群中的topic。Consumer API :允许应用程序从kafka集群的topic中读取数据流。Streams API :允许从输入topic转换数据流到输出topic。Connect API:通过实现连接...原创 2019-08-12 15:22:26 · 560 阅读 · 0 评论 -
读取配置文件中值,并声明数组
读取配置文件中值,并声称数组原创 2019-08-20 10:41:19 · 2193 阅读 · 0 评论 -
消息队列(二)-RabbitMQ初步认识
1、什么是MQ消息队列(Message Queue,简称MQ),从字面意思上看,本质是个队列,FIFO先入先出,只不过队列中存放的内容是message而已。其主要用途:不同进程Process/线程Thread之间通信。1.1 MQ产生的原因不同进程(process)之间传递消息时,两个进程之间耦合程度过高,改动一个进程,引发必须修改另一个进程,为了隔离这两个进程,在两进程间抽离出一层(一...原创 2019-07-03 10:50:48 · 273 阅读 · 0 评论 -
消息队列(一)-技术选型
最近有个需求是做一个消息队列的技术组件。技术比较:特性 ActiveMQ RabbitMQ RocketMQ Kalfa 单机吞吐量 万级 万级 10万级 10万级 topic 数量对吞吐量的影响 topic 可以达到几百/几千的级别,吞吐量会有较小幅度的下降。 topic 从几十到几百个时候,吞吐量会...原创 2019-06-26 09:47:47 · 578 阅读 · 0 评论 -
CAS无锁算法
锁(lock)的代价锁是用来做并发最简单的方式,当然其代价也是最高的。内核态的锁的时候需要操作系统进行一次上下文切换,加锁、释放锁会导致比较多的上下文切换和调度延时,等待锁的线程会被挂起直至锁释放。在上下文切换的时候,cpu之前缓存的指令和数据都将失效,对性能有很大的损失。Java在JDK1.5之前都是靠synchronized关键字保证同步的,这种通过使用一致的锁定协议来协调对共享状态的访问...原创 2018-12-18 21:30:38 · 419 阅读 · 0 评论