忘不掉就记着吧
码龄7年
关注
提问 私信
  • 博客:480,972
    480,972
    总访问量
  • 69
    原创
  • 1,575,104
    排名
  • 14
    粉丝
  • 0
    铁粉

个人简介:热爱生活,热爱学习!

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:江西省
  • 加入CSDN时间: 2017-12-25
博客简介:

逆流而上的博客

博客描述:
但愿此生,逆流而上!
查看详细资料
个人成就
  • 获得32次点赞
  • 内容获得12次评论
  • 获得127次收藏
创作历程
  • 45篇
    2020年
  • 22篇
    2019年
  • 2篇
    2018年
成就勋章
TA的专栏
  • MQ
    3篇
  • spring
    1篇
  • Netty
    1篇
  • IO
    2篇
  • 多线程与高并发
    14篇
  • java
    1篇
  • jvm
    6篇
  • 小技巧
    2篇
  • java面试
  • docker
    6篇
  • ZooKeeper
    5篇
  • web
    1篇
  • redis
    5篇
  • Spring Cloud
    7篇
  • mysql
    6篇
  • problems
    2篇
  • springboot
    3篇
兴趣领域 设置
  • 大数据
    mysqlredis
  • 后端
    spring架构
  • 搜索
    elasticsearch
  • 服务器
    linux
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

180人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

Netty简介

一、什么是Netty在网络编程领域,Netty是Java的卓越框架。它驾驭了Java高级API的能力,并将其隐藏在一个易于使用的API之后。Netty使你可以专注于自己真正的业务。简单的说,Netty是一个让网络编程变得简洁的框架,实现了真正的异步非阻塞,性能及其优越。二、为什么选择Netty通常,如果用NIO来实现一个服务端需要以下步骤。创建ServerSocketChannel,配置...
原创
发布博客 2020.02.27 ·
860 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

Java并发编程系列---Fork/Join框架

一、什么是Fork/Join框架Fork/Join框架是Java 7提供的一个用于并行执行任务的框架,是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。我们再通过Fork和Join这两个单词来理解一下Fork/Join框架。Fork就是把一个大任务 切分为若干子任务并行的执行,Join就是合并这些子任务的执行结果,最后得到这个大任 务的结果。比如计算1+2+…+1...
原创
发布博客 2020.02.18 ·
322 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Java并发编程系列---Java中的并发工具类CountDownLatch、CyclicBarrier、Semaphore、Exchanger

一、Java中的并发工具类在JDK的并发包里提供了几个非常有用的并发工具类。CountDownLatch、 CyclicBarrier和Semaphore工具类提供了一种并发流程控制的手段,Exchanger工具类则提供了在线程间交换数据的一种手段。二、CountDownLatch(等待多线程完成)CountDownLatch允许一个或多个线程等待其他线程完成操作。CountDownLat...
原创
发布博客 2020.02.18 ·
450 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Java并发编程系列---LockSupport工具和Condition接口

一、LockSupport工具LockSupport定义了一组的公共静态方法,这些方法提供了最基本的线程阻塞和唤醒功能,而LockSupport也成为构建同步组件的基础工具。LockSupport定义了一组以park开头的方法用来阻塞当前线程,以及unpark(Thread thread)方法来唤醒一个被阻塞的线程。Park有停车的意思,假设线程为车辆,那么park方法代表着停车,而unpar...
原创
发布博客 2020.02.15 ·
760 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Java并发编程系列---可重入锁和读写锁的实现原理、源码分析

一、重入锁1.1 什么是重入锁重入锁ReentrantLock,就是支持重进入的锁,它表示该锁能够支持一个线程对资源的重复加锁。除此之外,该锁的还支持获取锁时的公平和非公平性选择。1.2 重入锁有什么用例子:之前AQS的一个自己实现的锁package com.example.demo.thread;import java.util.concurrent.TimeUnit;impor...
原创
发布博客 2020.02.11 ·
1081 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

Java并发编程系列---AQS的实现原理、源码分析

一、同步队列AQS依赖内部的同步队列(一个FIFO双向队列)来完成同步状态的管理,当前线程获取同步状态失败时,同步器会将当前线程以及等待状态等信息构造成为一个节点 (Node)并将其加入同步队列,同时会阻塞当前线程,当同步状态释放时,会把首节点中的线程唤醒,使其再次尝试获取同步状态。同步队列中的节点(Node)用来保存获取同步状态失败的线程引用、等待状态以及前一个节点和后一个节点,节点的属...
原创
发布博客 2020.02.11 ·
759 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Java并发编程系列---Lock接口和AQS初识

一、 java中的锁1.1 什么是锁锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同 时访问共享资源(但是有些锁可以允许多个线程并发的访问共享资源,比如读写锁)。在 Lock接口出现之前,Java程序是靠synchronized关键字实现锁功能的,而Java SE 5之后, 并发包中新增了Lock接口(以及相关实现类)用来实现锁功能,它提供了与synchronized...
原创
发布博客 2020.02.10 ·
1643 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Java并发编程系列---线程池的创建和使用

一、线程池的使用1.1 线程池的创建我们可以通过ThreadPoolExecutor来创建一个线程池。new ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, ...
原创
发布博客 2020.02.06 ·
2666 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

Java并发编程系列---线程池的实现原理

一、线程池简介1.1 什么是线程池所谓线程池,通俗的理解就是有一个池子,里面存放着已经创建好的线程,当有任务提交给线程池执行时,池子中的某个线程会主动执行该任务。如果池子中的线程数量不够应付数量众多的任务时,则需要自动扩充新的线程到池子中,但是该数量是有限的,就好比池塘的水界线一样。当任务比较少的时候,池子中的线程能够自动回收,释放资源。为了能够异步地提交任务和缓存未被处理的任务,需要有一个任...
原创
发布博客 2020.02.06 ·
2699 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Java并发编程系列---Hook线程

一、Hook 线程介绍JVM进程的退出是由于JVM进程中没有活跃的非守护线程,或者收到了系统中断信号,向JVM程序注人一个Hook线程,在JVM进程退出的时候,Hook线程会启动执行,通过Runtime可以为JVM注人多个Hook线程。二、简单例子/** * @author : pengweiwei * @date : 2020/2/4 7:32 下午 */public class ...
原创
发布博客 2020.02.04 ·
3089 阅读 ·
0 点赞 ·
2 评论 ·
0 收藏

Java并发编程系列---线程间通信

一、线程间通信线程开始运行,拥有自己的栈空间,就如同一个脚本一样,按照既定的代码一步一步地执行,直到终止。但是,每个运行中的线程,如果仅仅是孤立地运行,那么没有一点儿 价值,或者说价值很少,如果多个线程能够相互配合完成工作,这将会带来巨大的价值。二、等待/通知机制等待/通知机制,是指一个线程A调用了对象O的wait()方法进入等待状态,而另一个 线程B调用了对象O的notify()或者not...
原创
发布博客 2020.02.03 ·
2867 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Java并发编程系列---Thread API详解

Thread API详解一、线程sleepsleep方法是一个静态方法。他有两个重载方法。 public static native void sleep(long millis) throws InterruptedException; public static void sleep(long millis, int nanos) throws InterruptedException...
原创
发布博客 2020.02.02 ·
3693 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Java并发编程系列---volatile和synchronized关键字详解

一、简介在多线程并发编程中synchronized和volatile都扮演着重要的角色,volatile是轻量级的 synchronized,它在多处理器开发中保证了共享变量的“可见性”。可见性的意思是当一个 线程修改一个共享变量时,另外一个线程能读到这个修改的值。如果volatile变量修饰符使 用恰当的话,它比synchronized的使用和执行成本更低,因为它不会引起线程上下文的切 换和调...
原创
发布博客 2020.02.01 ·
5246 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Java并发编程系列---线程的构建、启动和停止

一、构造线程在运行线程之前首先要构造一个线程对象,线程对象在构造的时候需要提供线程所需要的属性,如线程所属的线程组、线程优先级、是否是Daemon线程等信息。下面代码摘自java.lang.Thread中对线程进行初始化的部分。private void init(ThreadGroup g, Runnable target, String name, ...
原创
发布博客 2020.02.01 ·
5060 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Java并发编程系列---线程知识简介

一、什么是线程操作系统在运行一个程序时,会为其创建一个进程(就是windows任务管理器看到的那些运行的进程)。例如,启动一个Java程序, 操作系统就会创建一个Java进程。现代操作系统调度的最小单元是线程,也叫轻量级进程 (Light Weight Process),在一个进程里可以创建多个线程,这些线程都拥有各自的计数器、堆栈和局部变量等属性,并且能够访问共享的内存变量。处理器利用程序计数...
原创
发布博客 2020.02.01 ·
5014 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Java并发编程系列---上下文切换和死锁

一、上下文切换即使是单核处理器也支持多线程执行代码,CPU通过给每个线程分配CPU时间片来实现这个机制。时间片是CPU分配给各个线程的时间,因为时间片非常短,所以CPU通过不停地切换线程执行,让我们感觉多个线程是同时执行的,时间片一般是几十毫秒 (ms)。CPU通过时间片分配算法来循环执行任务,当前任务执行一个时间片后会切换到下一 个任务。但是,在切换前会保存上一个任务的状态,以便下次切换回这...
原创
发布博客 2020.01.31 ·
6848 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

RabbitMQ实现可靠性消息投递---保证消费者接收到消息

一、保证可靠性消息投递首先需要明确,效率与可靠性是无法兼得的,如果要保证每一个环节都成功,势必会对消息的收发效率造成影响。 如果是一些业务实时一致性要求不是特别高的场合,可以牺牲一些可靠性来换取效率。在消息投递过程中,一共有四处需要保证可靠性。如图。①代表消息从生产者发送到Exchange;②代表消息从Exchange路由到Queue;③代表消息在Queue中存储;④代表消费者订阅...
原创
发布博客 2020.01.31 ·
7400 阅读 ·
1 点赞 ·
0 评论 ·
4 收藏

Springboot整合RabbitMQ实现发送接收消息

一、发送消息的步骤二、项目准备新建两个springboot项目,分别取名为producer 和 consumer。新建项目的时候引入Rabbitmq依赖。或者手动添加。 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot...
原创
发布博客 2020.01.30 ·
9287 阅读 ·
0 点赞 ·
1 评论 ·
7 收藏

RabbitMQ入门介绍以及安装使用

一、RabbitMQ初识RabbitMQ是一个实现了高级消息队列协议(AMQP的消息代理(也叫消息中间件),它接受并转发消息。它可以帮你处理一些逻辑的事务,从而进行解耦,比如用户注册落库之后,还需要发送邮件验证、需要发送新人红包等等事情,就可以交给中间件去做。也可以把它当成一个邮局:当你想邮寄信件的时候,你会把信件放在投递箱中,并确信邮递员最终会将信件送到收件人的手里。在这个例子中,Rabbit...
原创
发布博客 2020.01.29 ·
6778 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

NIO的网络IO操作

一、网络IO1.1 概述文件IO用到的FileChannel并不支持非阻塞操作,学习NIO主要就是进行网络IO,JavaNIO中的网络通道是非阻塞10的实现,基于事件驱动,非常适用于服务器需要维持大量连接,但是数据交换量不大的情况,例如一些即时通信的服务等…在Java中编写Socket服务器,通常有以下几种模式:一个客户 端连接用一个线程,优点:程序编写简单;缺点:如果连接非常多,分配的...
原创
发布博客 2020.01.28 ·
6898 阅读 ·
1 点赞 ·
0 评论 ·
4 收藏
加载更多