自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Anur IjuoKaruKas的博客

三流作家、魔法师学徒。

  • 博客(33)
  • 问答 (30)
  • 收藏
  • 关注

原创 支持连表等复杂查询的PageHelper修改 —— 支持PageHelper5.1.4 Mybatis3.4.6

这是旧版本的做法以及一些当时遇到的问题《支持连表等复杂查询的PageHelper修改》一、PageHelper中分页存在的问题:- 主表结构如下:provider_order表,订单主表。我们这里简化处理,它只有一个字段,即id。VARCHAR  |  po_id   |    订单表id- 从表结构如下:order_info表,订单从表。它负责记录订单的一些信...

2018-06-11 13:49:44 5569 4

原创 分布式事务柔性事务解决方案:可靠消息最终一致性(异步确保型) —— 三、生产者实战

建议简单看看上一篇文章再往下阅读接下来就到了我们的实战时刻~项目基于spring cloud编写,没有spring cloud基础看起来可能有一点点费力。定义可靠消息接口package com.anur.messageapi.api;import org.springframework.web.bind.annotation.RequestMapping;import ...

2018-05-17 23:59:27 1759

原创 Kafka源码剖析 —— 生产者消息发送流水线上的大体流程

一、唤醒Selector上篇文章说到,消息是怎么被生产出来,简单来说,就是消息被追加到了RecordAccumulator中,以ByteBuffer的形式存了下来。那么在消息添加到ByteBuffer中后,后续的步骤又是怎么样的呢?首先上篇文章提到了Kafka追加消息时加锁的粒度,是一个Deque<RecordBatch> dq,我们根据topic(tp)来获取到要发往这个...

2018-09-12 20:56:55 910

原创 Kafka源码剖析 —— 生产者消息追加中的优秀设计与大体流程

Kafka生产者的消息发生大体需要经过以下这个流程。其中消息的追加包含以下几个组件。我们在KafkaProducer中调用send方法发送一个消息,在消息追加步骤,最终是将消息添加到了ByteBuffer中。一、KafkaProducer1.1、拦截器的实现我们发现在send的时候,如果存在拦截器,则调用onSend方法。 @Override publ...

2018-09-06 15:31:42 1053

原创 仿照Kafka,实现一个简单的监听器 + 适配器吧!

前言不同于Spring中复杂的实现,在Kafka中,对于Listener和对应的Adaptor,都十分的简单与简洁。下面我们就以Kafka的实现作为参考,简单说说如何去实现一个监听器与适配器。一、监听器1.1 从 Kafka RequestFuture<\T> 简单看看监听器的实现我们可以看到,在这个RequestFuture类中,有一个 addListener 方法,...

2018-09-03 18:25:16 1784

原创 Kafka源码剖析 —— 网络I/O篇 —— 浅析KafkaChannel、NetworkReceive、Send

一、SocketChannel和KafkaChannel有什么区别?上篇文章说道KafkaSelector在创建一个连接的时候和普通的nioSelector并没有什么不同,它是基于nioSelector的封装。我们知道创建连接的一系列操作都是由Channel去完成,而KafkaChannel实际上就是对它的进一步封装:      KafkaChannel不仅封装了SocketChannel...

2018-08-07 10:29:23 1914 1

原创 Kafka源码剖析 —— 网络I/O篇 —— 浅析KafkaSelector

NioSelector和KafkaSelector有什么区别?先说结论,KafkaSelector(org.apache.kafka.common.network.selector)是对NioSelector(java.nio.channels.Selector)的进一步封装。回想一下NioSelector,它参与了IO中的哪些过程?1、创建一个通道,并将通道注册到NioSelector上...

2018-07-20 18:21:36 1246

原创 从 NIO SelectionKey 看按位运算符在权限设计中的运用

一、为什么要这样设计权限 /** * Operation-set bit for read operations. * * <p> Suppose that a selection key's interest set contains * <tt>OP_READ</tt> at the start of a <...

2018-07-14 00:06:14 611

原创 细粒度的线程控制?使用Lock Condition~

这里举一个栗子,我们对一个资源进行加锁,可是又要进行细粒度的控制,该如何实现呢?比如我们开了了个餐馆。餐馆有一个厨房,服务员可以通知厨房进行做菜,当前冰箱里有菜时,厨房就会开始做菜,冰箱里没菜则会等待。/** * Created by Anur IjuoKaruKas on 6/28/2018 */@SuppressWarnings("Duplicates")public cl...

2018-06-28 14:45:03 388

原创 netty之——@Shareable注解

什么是@Shareable?@Inherited @Documented @Target(value=TYPE) @Retention(value=RUNTIME)public static @interface ChannelHandler.SharableIndicates that the same instance of the annotated ChannelHandl...

2018-06-01 14:20:42 9758

原创 源码解读ExcutorService之ScheduledExecutorService

ScheduledExecutorService继承自ExcutorService,也就是它是一种线程池,它不仅能实现任务的跟踪与管理,还能定时、定频执行任务。文档渣翻An ExecutorService that can schedule commands to run after a given delay, or to execute periodically.它是一种可...

2018-05-23 11:06:21 500

原创 分布式事务柔性事务解决方案:可靠消息最终一致性(异步确保型) —— 二、生产者的设计

本方案分布式事务柔性事务解决方案:可靠消息最终一致性(异步确保型)实现自 本方案与龙果学院的方案思想基本一致,但本方案使用Spring Cloud实现 方案中用到的主要技术为: Spring Cloud、Spring Boot、MyBatis、JDK8、RabbitMQ为什么要使用柔性事务上篇文章已经详细说过,这里简单提下,传统的刚性事务无法满足高并发场景。而柔性事务可在牺牲一...

2018-05-14 17:52:46 4998 1

原创 分布式事务柔性事务解决方案:可靠消息最终一致性(异步确保型) —— 一、大白话理论

分布式事务简介理论不多说,谈起事务,必然就绕不过ACID。然而传统的分布式事务在当下的分布式、微服务结构中中并不太合适,数据在传统的分布式事务中会被锁住,而且还要应对XA协议带来的开销(建立和关闭与资源管理器的连接、预提交、提交和回滚一个本地事务等等)。与之相对的,是更符合当下业务需求的基于BASE理论的柔性事务。看看ACID和BASE的区别Soft State:柔性状态【...

2018-05-13 15:18:58 1551

原创 Spring Boot / Spring Cloud 项目中获取本项目端口号

import org.springframework.boot.context.embedded.EmbeddedServletContainerInitializedEvent;import org.springframework.context.ApplicationListener;import org.springframework.context.annotation.Configu...

2018-05-08 11:11:44 9539 2

原创 RabbitMQ 在 Spring Boot 进阶之交换器 Topic Exchange

上文中说到,文件上传服务器有这么多的需求:给所有用户一点奖励,还要记录一条日志,甚至还要通知某某人去对上传的资料进行审核。 那如果我们不想这么做了,我们想要的是:只有上传达到15m的才给奖励某些类型的文件不需要进行审核那怎么来设计我们的消息中间件呢?这时候就需要我们的Topic交换器了Topic交换器将路由键和某模式进行匹配。此时队列需要绑定要一个模式上。符号“#”...

2018-05-01 21:56:29 424

原创 RabbitMQ 在 Spring Boot 进阶之交换器 Fanout Exchange

最好阅读一下上篇文章《 RabbitMQ 在 Spring Boot 进阶之交换器 Direct Exchange》还是这个业务,它负责资料的上传。它之前的需求是,不同的用户上传后,后续的处理不同。普通用户上传资料后,可以获得一定的积分。内部人员上传资料后,不需要积分,但它会增加一定的业绩。现在又来了一个需求我们不需要积分和业绩了,要给所有用户一点奖励,还要记录...

2018-04-28 13:56:23 515

原创 RabbitMQ 在 Spring Boot 进阶之交换器 Direct Exchange

上篇文章中我们只看到了的生产者的消息发送与消费者的消息消费,实际上它隐藏了rabbitMQ中一个重要的环节。 上篇文章中,我们在生产者中直接定义了消息送达队列的名字@Componentpublic class Sender { @Autowired private AmqpTemplate rabbitTemplate; public void send()...

2018-04-26 19:50:01 1766

转载 RabbitMQ 入门 与 RabbitMQ 在 Spring Boot 中的使用

Message Broker与AMQP简介Message Broker是一种消息验证、传输、路由的架构模式,其设计目标主要应用于下面这些场景:消息路由到一个或多个目的地消息转化为其他的表现方式执行消息的聚集、消息的分解,并将结果发送到他们的目的地,然后重新组合相应返回给消息用户调用Web服务来检索数据响应事件或错误使用发布-订阅模式来提供内容或基于主题的消息路由AMQP是Ad...

2018-04-26 09:37:47 337

原创 java.lang.TypeNotPresentException: Type javax.xml.bind.JAXBContext not present JAVA9

java.lang.TypeNotPresentException: Type javax.xml.bind.JAXBContext not present at java.base/sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(CoreReflectionFactory.java:117) ~[na:na...

2018-04-10 11:00:34 3682

转载 Spring AOP概念Aspect、Advice、JoinPoint、JoinCut与Execution

基本知识其实, 接触了这么久的 AOP, 我感觉, AOP 给人难以理解的一个关键点是它的概念比较多, 而且坑爹的是, 这些概念经过了中文翻译后, 变得面目全非, 相同的一个术语, 在不同的翻译下, 含义总有着各种莫名其妙的差别. 鉴于此, 我在本章的开头, 着重为为大家介绍一个 Spring AOP 的各项术语的基本含义. 为了术语传达的准确性, 我在接下来的叙述中, 能使用英文术语的地方,...

2018-04-03 09:39:33 14830 1

原创 从ArrayList说起的JAVA复制与参数传递机制

这两者都算是java基础中的基础,平常写代码可能并没有过多的去深究它,但这样容易引发一些不可预知的BUG。这里有一个简单的类,文章中会提到多次。一个学生类,它有两个属性,String类型的name与Integer类型的age。public class Student { private String name; private Integer age; p...

2018-03-20 10:21:58 2538 2

原创 定义一个Configuration Processor读取spring配置!

1、引入maven依赖 <!-- configuration-processor --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-c...

2018-03-20 10:21:03 4380 2

原创 用JAVA反射去构建一个对象吧!

比如想把 A (以下称modelWantToCast)的所有字段 赋值给B(以下称modelCastTo) 【需要字段名一样】 public static <T> T castModelToAnotherModel(Object modelWantToCast, Class<T> modelCastToClazz) { if (modelWa...

2018-03-20 10:19:38 204

原创 Java中空指针异常及其处理

在Java中,null值可以被分配给一个对象的引用,表示该对象当前正在指向未知的数据。当程序试图访问这个引用时,将会抛出 NullPointerException。那么如何避免程序抛出空指针异常?1、避免去调用可能为null的对象的方法(静态方法除外)String str = null;if(str.equals("Test")) { /* The code ...

2018-03-19 17:59:40 8047

原创 Java Socket基础

Socket,也叫套接字..emmmmm…. 。三次握手socket通信的连接可分为四个步骤:服务器监听:服务器实时监控网络,等待客户端的连接。客户端请求:客户端发出了请求,向服务器提出连接请求,连接要提供ip+端口。服务器确认连接:服务器接收到了来自客户端的请求,它会新建一个线程,将套接字的描述发送给客户端。客户端连接确认一旦客户确...

2018-03-19 17:58:58 160

原创 简单说说重入锁与读写锁

先说说重入锁,既然说到了重入锁,那么也顺带提一下不可重入锁(自旋锁)吧。这两个概念实际上很好区分,重入锁:就如同在饭堂打饭,你在窗口排着队。排到你的时候,突然路人A让你顺带着打个饭吧,然后你就打了两份饭,这时候你还没离开窗口,又有路人B让你打一份汤,于是你又额外打了一份汤。即:可重入锁,也叫做递归锁,指的是同一线程 外层函数获得锁之后 ,内层递归函数仍然有获取该锁的代码,但...

2018-03-19 17:58:21 2132

原创 线程池的创建以及CyclicBarrier与CountDownLatch的简单使用

一、线程池的简单创建(1)、使用Executors进行创建 ExecutorService poo1 = Executors.newFixedThreadPool(10); ExecutorService pool = Executors.newSingleThreadExecutor();这两种线程池都是无界队列的线程池,创建比较简单,但可能导...

2018-03-19 17:57:14 989

原创 简单的Future模式及其实现

Future模式是一个多线程的设计模式,以下一个简单的实现例子。实现的原理有点类似订蛋糕,你去商店定做蛋糕时,并不能直接拿到蛋糕,而是拿到购物小票之类的,你需要等蛋糕制作完成后,再来取。在这期间你可以去做其他的事情,而不必在蛋糕店等待蛋糕的制作。这和单独开一个线程没有什么区别,具体有什么好处我目前也不是很清楚,能感受到的就是代码更加简洁了..易读性增强了吧~/** * Created...

2018-03-19 17:56:16 448

原创 支持连表等复杂查询的PageHelper修改

先说说使用PageHelper踩过的坑: - 在mapper映射文件中,如果使用了limit关键字,而又使用了PageHelper的功能,比如orderBy,那么就会报错。 - 在使用稍微复杂的查询时,PageHelper是针对最外层(最下方)的数据进行分页的。出现这样的问题,归根结底还是PageHelper源码的问题。这套修改的原理即是修改pagehelper “li...

2018-03-19 17:55:16 5074

原创 线程基础之挂起与通知

public class NotifyAndWaitTest extends Thread { private Integer num = 0; private static Boolean lock = false; private void addNum() { num++; } private void soutNum() { ...

2018-03-19 17:53:01 260

原创 线程基础之锁的级别

public class MultiThread { static Logger logger = LoggerFactory.getLogger(TestThread.class); private int num = 0; public synchronized void printNum(String tag) { if (tag.equal...

2018-03-19 17:52:15 456

原创 简单看看PageHelper配置

在java代码中对于PageHelper的配置 @Bean public SqlSessionFactory sqlSessionFactoryBean(DataSource dataSource) throws Exception { SqlSessionFactoryBean factory = new SqlSessionFactoryBean(); ...

2018-03-19 17:44:24 3377

原创 Shiro的简单使用

一、shiro认证1、请求认证Subject subject = SecurityUtils.getSubject();// 根据运行环境返回subjectsubject.login(token);// 这里的token一般指的是 UsernamePasswordToken,参数有 // String username, String p...

2018-03-19 17:43:09 482

空空如也

spring下使用redis的问题!!!

2017-09-06

intellij有没有办法可以进入切面?

2017-08-15

spring AOP 实现日志管理

2017-08-08

spring boot 如何设置不拦截某个url?

2017-08-07

shiro基于某条数据的细粒度的管理

2017-07-26

问怎么将一个方法写得通用?【基于java ee,spring】

2017-07-19

关于java泛型,如何做一个通用的方法?

2017-07-19

基于Spring AOP的日志管理,如何进行简易的拓展?

2017-07-19

mybaits的model中如何通过注解忽略非数据库字段?

2017-07-16

mybatis或者tkmybatis怎么快速实现多表查询?

2017-07-16

tkmybatis或者mybatis连表查询问题

2017-07-12

jsp报错org.apache.jasper.JasperException

2017-07-06

dubbo的注册中心出现问题!

2017-04-07

请问一下intellij和eclipse

2017-04-06

dubbo spring 报错问题

2017-04-06

关于Dubbo配置的问题~ spring整合Dubbo出现问题。

2017-04-05

关于intellij的tomcat问题,求助!!!!

2017-03-30

chrome浏览器页面审查的时候 连接无法点击?

2017-02-22

web页面图片的间隔问题~

2017-02-13

html或者jsp的问题!a标签的点击事件实现!

2017-02-12

问一下,我把一个web项目迁移到另一个电脑上报404错误?

2017-02-03

我该如何把项目部署到本地的电脑?

2017-02-02

java基础问题 这种循环怎么写?

2017-02-01

hibernate的求和问题!!!!!!!!!!!

2017-02-01

java web实现页面显示前加载表单数据,但是页面闪过空白

2017-01-20

如何实现struts <s:iterator> 迭代器里的删除功能?

2017-01-20

spring AOP报错 Cannot resolve reference to bean

2017-01-16

如何使用myeclipse导入框架官方的源码?

2017-01-11

【spring入门级问题】spring.xml的以下这两种头文件中有什么区别?

2017-01-10

一个刚学习ssh框架的初学者,跟着视频里的做一个基本配置,但是怎么都是失败

2017-01-06

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除