![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 72
都让你们叫老了
这个作者很懒,什么都没留下…
展开
-
线程池中的阻塞队列选择
这是一个十分...转载 2020-04-15 15:00:48 · 4266 阅读 · 1 评论 -
Kafka(五、构造可靠的数据传递)
可靠性保证在讨论可靠性时,我们一般会使用保证这个词,它是指确保系统在各种不同的环境下能够发生一致的行为。 ACID 大概是大家最熟悉的一个例子,它是关系型数据库普遍支持的标准可靠性保证。ACID 指的是原子性、 一致性、隔离性和持久性。如果一个供应商说他们的数据库遵循 ACID 规范,其实就是在说他们的数据库支持与事务相关的行为。有了这些保证,我们才能相信关系型数据库的事务特性可以确保应用程...翻译 2019-11-13 11:34:19 · 446 阅读 · 0 评论 -
Kafka(四、深入Kafka)
集群成员关系kafka 使用zookeeper 来维护集群成员关系。每个broker都有一个唯一标识符。这个标识符可以在配置文件里指定,也可以自动生成。在broker启动的时候,它通过创建临时节点把自己的ID注册到zookeeper。kafka组件订阅Zookeeper的 /brokers/ids 路径,当有broker加入集群或退出进群时,这些组件就可以获得通知。如果你要启动另一个具有与相同...翻译 2019-11-12 18:39:37 · 510 阅读 · 0 评论 -
Kafka(三、Kafka消费者 - 从Kafka读取数据)
Kakfa 消费者配置同样由于配置太多,在此不一一列举,只显示使用率最高的几个配置,其他配置请参考官网。http://kafka.apache.org/documentation/#consumerconfigsNAMEDESCRIPTIONTYPEDEFAULTVALID VALUESkey.serializerkey序列化,可以使用Kafka默认的序列化和自定...原创 2019-11-08 17:30:04 · 1597 阅读 · 0 评论 -
Kafka(二、Kafka生产者 - 向kafka写入数据)
Kakfa 生产者配置由于配置太多,在此不一一列举,只显示使用率最高的几个配置,其他配置请参考官网。http://kafka.apache.org/documentation/#producerconfigsNAMEDESCRIPTIONTYPEDEFAULTVALID VALUESkey.serializerkey序列化,可以使用Kafka默认的序列化和自定义序...原创 2019-11-07 17:27:30 · 779 阅读 · 0 评论 -
Spring 4.x IOC介绍(五.Spring boot 启动流程以及 IoC 构建)
之前的文章介绍了:BeanFactory 、ApplicationContext、WebApplicationContext也写了各个部分的实现,总觉得缺点什么,最近整理自己博客的时候,终于发现了。少SpringBoot的啊。Spring 4.x IOC介绍(一.BeanFactory 、ApplicationContext、WebApplicationContext之BeanFactory)...原创 2019-07-27 19:05:18 · 572 阅读 · 0 评论 -
HttpServletRequest 学习,基于Servlet 4.0
官方API 基于Servlet 3.0Servlet 4.0 的主要新功能Servlet 4.0 的主要新功能为服务器推送和全新 API,该 API 可在运行时发现 servlet 的 URL 映射。服务器推送是最直观的 HTTP/2 强化功能,通过 PushBuilder 接口在 servlet 中公开。服务器推送功能还在 JavaServer Faces API 中实现,并在 Rende...原创 2019-04-17 18:04:21 · 1237 阅读 · 0 评论 -
redis 数据结构与对象
本文基于《Redis 设计与实现》第一部分整理。数据结构简单说下redis的数据结构,这些在网上也都有很详细的解释,《Redis 设计与实现》这本书基于Redis3.0的,但是现在已经5.0 了,所以有些数据结构发生了变化,其中我自己实现发现了一部分,可能还有没发现的。慢慢实践吧简单动态字符串(Simple dynamic string)为什么叫简单动态字符串链表(List)字典...原创 2019-04-26 18:04:19 · 189 阅读 · 0 评论 -
Spring事务(一、数据库事务)
本文整理自:《精通Spring4.X 企业应用开发实战》什么是事务:事务是一组原子性的SQL查询,是一个独立的工作单元。要么所有全部执行成功,要么全部执行失败。这种思想反映到数据库上,就是多条SQL语句,要么所有执行成功,要么所有执行失败。事务的四个特性:原子性(Atomicity):表示组成一个事务的多个数据库操作是一个不可分割的原子单元(可以理解为一个整体),只有所有的操作执行成...原创 2019-07-12 17:17:12 · 180 阅读 · 0 评论 -
Comparator 使用详解及部分代码解析
Comparator使用,源码解析。List排序以及获取最大值原创 2019-07-04 14:42:04 · 6724 阅读 · 4 评论 -
过滤器和拦截器的区别
整理自:https://www.cnblogs.com/panxuejun/p/7715917.html先看下权威的说法:过滤器和拦截器的区别:总体区别:拦截器是基于java的反射机制的,而过滤器是基于函数回调。拦截器不依赖与servlet容器,过滤器依赖与servlet容器。拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。拦截器可以访问action上下...转载 2019-04-16 13:47:44 · 4078 阅读 · 2 评论 -
Spring Boot 自定义注解 + 拦截器
先看一个大家比较熟悉的东西,for example@Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD, ElementType.ANNOTATION_TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented...原创 2019-04-16 11:38:23 · 4634 阅读 · 1 评论 -
Redis报错:-bash: redis-cli: command not found
同样,安装redis后,使用redis-cli指令报错:sudo cp src/redis-cli /usr/local/bin/将redis-cli拷贝到bin下,让redis-cli指令可以在任意目录下直接使用原创 2019-03-14 17:51:11 · 20891 阅读 · 2 评论 -
Redis报错:xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing
今天安装Redis的时候,报了一个错误:xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun后来发现是因为Mac最新场景下安装Xcode时已经没...原创 2019-03-14 17:27:07 · 13785 阅读 · 2 评论 -
JUC包 — locks — AbstractQueuedSynchronizer(AQS源码分析)
继续拆解JUC包,其中子包除了atomic还有一个locks包。打开之后我们能看到几个熟悉的锁,比如:Lock,LockSupport,ReentrantLock,ReadWriteLock,ReentrantReadWriteLock等。但是里面还有一个非常重要的类,ReentrantLock,ReentrantReadWriteLock的底层都是由它实现。这个类就是——AbstractQueu...原创 2019-02-21 17:12:35 · 227 阅读 · 0 评论 -
关于Unsafe类一些知识
我们看过了AtomicInteger类,会发现里面有个类:private static final Unsafe unsafe = Unsafe.getUnsafe();同时调用了一个方法:valueOffset = unsafe.objectFieldOffset (AtomicInteger.class.getDeclaredField("value"));这个Unsafe类是干...原创 2018-11-27 19:22:19 · 1561 阅读 · 0 评论 -
JUC包 — atomic包—AtomicLong,AtomicIntegerArray等类
之前看了AtomicInteger的使用,代码。我们再看下atomic包下的其他类。我们先对其进行简单的分类:第一类:使用原子的方式更新基本类型AtomicIntergerAtomicBooleanAtomicLong在之前的文章介绍过AtomicInterger:https://blog.csdn.net/java_yes/article/details/83864042而Atomi...原创 2018-12-04 18:26:58 · 201 阅读 · 0 评论 -
Spring事务(二、源码分析之ThreadLocal)
Thread在管理request作用域的Bean、事务管理、任务调度、AOP等模块中都有它的身影,所以想了解Spring事务管理的底层技术,ThreadLocal是必须攻克的“山头堡垒”。ThreadLocal是什么ThreadLocal未解决多线程程序的并发问题提供了一种新的思路,使用这个工具类可以很简洁地编写出优美的多线程程序。ThreadLocal,顾名思义,它不是一个线程,而且保存线...原创 2019-07-16 15:19:30 · 965 阅读 · 0 评论 -
Spring事务(四、编程式事务管理以及声明式事务管理)
编程式事务管理在实际应用中,我们很少通过编程来进行事务管理。但是Spring还是位编程式事务管理提供了模板类:TransactionTemplate。其在org.springframework.transaction.support包下。来满足一些特殊场合的需要。所以下面主要说的就是基于TransactionTemplate的编程式事务管理。先看下例子:public class Trans...原创 2019-07-19 12:46:37 · 252 阅读 · 0 评论 -
Caffeine缓存使用
package com.study.caffeine_cache;import com.alibaba.fastjson.JSON;import com.github.benmanes.caffeine.cache.*;import com.study.domin.Airport;import com.study.mapper.AirPortMapper;import org.chec...原创 2019-09-25 17:58:01 · 3610 阅读 · 1 评论 -
走向未来-caffeine
整理自:https://juejin.im/post/5b7593496fb9a009b62904fa#heading-12https://www.cnblogs.com/liujinhua306/p/9808500.htmlguava cache的功能的确是很强大,满足了绝大多数的人的需求,但是其本质上还是LRU的一层封装,所以在众多其他较为优良的淘汰算法中就相形见绌了。而caffei...转载 2019-09-25 17:43:19 · 439 阅读 · 0 评论 -
你应该知道的缓存进化史
本文转载自:https://juejin.im/post/5b7593496fb9a009b62904fa#heading-121.原始社会 - 查库在大家的一般开发过程中,会直接查库。在流量不大的时候,查数据库或者读取文件是最为方便,也能完全满足我们的业务要求。古代社会 - HashMap当我们应用有一定流量之后或者查询数据库特别频繁,这个时候就可以祭出我们的java中自带的Hash...转载 2019-09-25 17:42:43 · 520 阅读 · 0 评论 -
Redis使用注意事项(欢迎补充)
整理自:https://nicky-chen.github.io/2018/08/07/cache-redis-optimize/一、键值设计1. key 名设计【建议】: 可读性和可管理性以业务名 (或数据库名) 为前缀 (防止 key 冲突),用冒号分隔,比如业务名: 表名:id例如:ugc:video:1【建议】:简洁性保证语义的前提下,控制 key 的长度,当 key 较多...转载 2019-09-17 15:19:13 · 2404 阅读 · 0 评论 -
SpringAop (四、AOP源码解析 之 获取 BeanDefinition 再之 applyBeanPostProcessorsAfterInitialization)
上一篇文章说完了applyBeanPostProcessorsBeforeInitialization,那么这篇文章说下applyBeanPostProcessorsAfterInitialization,也就是在Bean初始化完,调用的后置处理器。原创 2019-08-10 13:23:11 · 2165 阅读 · 1 评论 -
SpringAop (三、AOP源码解析 之 获取 BeanDefinition 再之 applyBeanPostProcessorsBeforeInstantiation)
还是从Spring Boot 自动配置开始看。spring.factories# Auto Configureorg.springframework.boot.autoconfigure.aop.AopAutoConfiguration,\AopAutoConfiguration@Configuration@ConditionalOnClass({ EnableAspectJAutoP...原创 2019-08-06 16:23:19 · 2886 阅读 · 3 评论 -
SpringAop (二、AOP源码解析 之 创建 BeanDefinition)
还是从Spring Boot 自动配置开始看。spring.factories# Auto Configureorg.springframework.boot.autoconfigure.aop.AopAutoConfiguration,\AopAutoConfiguration@Configuration@ConditionalOnClass({ EnableAspectJAutoP...原创 2019-08-06 16:22:58 · 1005 阅读 · 0 评论 -
SpringAop (一、AOP基础概述以及示例)
说过IOC,就接着说一下AOP吧。AOP是个啥?IOC是控制反转,将Bean的初始化交给Spring容器,然后通过DI依赖注入到程序中,那AOP是干嘛的?它有没有什么类似DI的方法?AOPAOP 是 Aspect Oriented Programming 的缩写,翻译为:面向切面编程所以切面是什么意思?理解了切面,我们才是真正的理解了AOP。在实现业务的时候,每个接口都会做用户是否被禁...原创 2019-08-01 16:51:22 · 311 阅读 · 0 评论 -
Spring事务(五、源码详解)
之前说到了“编程式事务管理”以及“声明式事务管理”,下面我们来分析一下这两个Spring实现原理以及看下源代码编程式事务管理编程式事务管理调用了TransactionTemplate。那就从这里入手看下TransactionTemplate的继承结构:可以看到继承了DefaultTransactionDefinition类,同时实现了TransactionOperations 以及 In...原创 2019-07-25 12:05:32 · 859 阅读 · 0 评论 -
Spring事务(三、Spring事务管理以及事务传播)
在Spring事务管理SPI(Service Provider Interface)的抽象层主要包括三个接口分别是:PlatformTransactionManager,TransactionDefinition,TransactionStatus,均位于org.springframework.transaction包下。TransactionDefinition用于描述事务的隔离级别、超时时间...翻译 2019-07-17 18:56:45 · 355 阅读 · 0 评论 -
JUC包 — atomic包—AtomicInteger
打开JUC包,看见的第一个就是atomic包,看下包结构:JAVA版本:1.8.0_172我们简单的回顾一下原子性。原子性原子性是指:一个操作是不可中断的,要么全部执行成功,要么全部执行失败。在具体点,就是在多个线程一起执行的过程中,一个操作一旦开始,就不会被其他线程所干扰。以保证数据的准确性。举几个常见的例子: 1. int a = 10; 2. a++; 3. int b...原创 2018-11-08 18:57:00 · 848 阅读 · 0 评论 -
IDEA debug 调试 —— Evaluate Expression窗口使用以及注意事项
昨天晚上调试代码的时候发现一个调试窗口—— Evaluate Expression我们再用IDEA调试代码的时候,虽然很数值都可以显示出来,可有些东西还是看不到的,比如加载的mapper,xml,或者一些需要计算才有数值的东西。但我们可以通过 Evaluate Expression窗口进行查看。下面举个栗子:一:我们在加载xml的文件的时候,在这里打断点:二:右键—找到Evaluate E...原创 2018-10-23 19:20:12 · 24257 阅读 · 0 评论 -
Spring 4.x (五、BeanFactory 源码分析)
我们在之前的文章简单的介绍了BeanFactory,现在看下源码。启动我们看下之前的代码ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();// 获取xml文件。生成ResourceResource res = resolver.getResource("classpath:resour...原创 2018-10-09 16:22:37 · 310 阅读 · 0 评论 -
Java利用poi导出Excel
首先说一下什么是POIPOI简介Apache POI是一种流行的API,它允许程序员使用Java程序创建,修改和显示MS Office文件。这由Apache软件基金会开发使用Java分布式设计或修改Microsoft Office文件的开源库。它包含类和方法对用户输入数据或文件到Office文档进行解码。 可操作文档类: 1. HSSF [1] - 提供读写Microsoft Ex...原创 2018-04-02 12:47:51 · 235 阅读 · 0 评论 -
浅谈HashMap,LinkedHashMap,ConcurrentHashMap、synchronizedMap(五.总结)
前面简单说了一下Map,这里简单的总结一下。HashMap数据结构数组+链表+红黑树。优点理想状态下:插入和查找时间复杂度为O(1)。缺点无序:既不能按照访问循序排序,也不能根据插入循序进行排序。不支持高并发:在多线程情况快,其扩容机制会出现死循环。所以根据这两个缺点,开发人员又编写了相对应的Map类有顺序的Map——LinkedHas...原创 2018-04-14 13:44:06 · 328 阅读 · 0 评论 -
浅谈HashMap,LinkedHashMap,ConcurrentHashMap、synchronizedMap(四.synchronizedMap)
直接看synchronizedMap源码吧,相对来说简单很多了。 public static <K,V> Map<K,V> synchronizedMap(Map<K,V> m) { // 返回一个synchronizedMap对象。 return new SynchronizedMap<>(m); ...原创 2018-04-14 11:19:58 · 215 阅读 · 0 评论 -
时间工具类
import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.HashMap;import java.util.Map;import org.apache.commons.logging...原创 2018-04-01 19:12:13 · 160 阅读 · 0 评论 -
Mysql存储引擎
先简单说一下什么是Mysql的事务:Mysql事务 应用中的一个业务逻辑,往往由多条语句组合完成。那么我们就可以简单地将事务理解为一组SQL语句的集合,要么这个集合全部成功集合,要么这个集合就全部失败退回到第一句之前的状态。这就是事务。 事务的机制通常被概括为“ACID”原则即原子性(A)、稳定性(C)、隔离性(I)和持久性(D)。 1. 原子性:构成事务的的所有操作必须是一...原创 2018-03-04 18:28:09 · 181 阅读 · 0 评论 -
SwaggerAPI注解详解,以及注解常用参数配置
官网github地址:https://github.com/swagger-api/swagger-core/wiki/Annotations-1.5.X注解@Api:作用在类上,用来标注该类具体实现内容。表示标识这个类是swagger的资源 。 参数: 1. tags:可以使用tags()允许您为操作设置多个标签的属性,而不是使用该属性。 2. descriptio...原创 2018-01-29 17:48:17 · 77588 阅读 · 14 评论 -
SpringBoot集成Swagger构建api文档
最近在做项目的时候,一直用一个叫做API的东西,controller注解我会写,这个东西我也会用,但是我确实不知道这个东西是个什么,有点神奇。关键还坑了我一次,他的注解会影响到代码的运行,不光是起到注解的作用。所以我就研究了一下。Swagger是什么:THE WORLD’S MOST POPULAR API TOOLING根据官网的介绍: Swagger Inspector:测试AP...原创 2018-01-25 23:44:09 · 32658 阅读 · 6 评论 -
Zookeeper第二天
zoo_sample.cfg参数详解 tickTime=2000 ZooKeeper使用的基本时间单位(以毫秒为单位)。它用于做心跳,最小session超时将是tickTime的两倍。也就是每到tickTime时间就会发送一个心跳。 initLimit=10 官方文档说:initLimit是超时值,ZooKeeper用来限制仲裁中的ZooKeeper原创 2017-11-30 16:40:53 · 318 阅读 · 0 评论