自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 资源 (2)
  • 收藏
  • 关注

原创 从源码重新真正认识RateLimiter(SmoothBursty实现)

相信大家对于谷歌RateLimiter一定并不陌生,在项目中应该也经常拿来进行限流,但是对于其实现原理并不一定能用熟于心,本文带大家从源码探究RateLimiter的设计与具体实现。

2023-11-26 22:51:50 972

原创 关于幂等那些事

幂等的一些方式

2023-11-26 15:51:45 444

原创 一个Java程序的一生(编译-加载-执行)

前言学习Java也不短的日子了,总想写些东西纪录下学习的过程,不如就从Java程序的一生开始谈起吧。Java程序的一生一个Java程序,从被我们编辑的.java文件,到执行程序,完成我们想要的功能。这中间发生了哪些有趣的事情呢,让我们来一探究竟!简单来说可以分为以下几个过程:编写源代码即.java文件编译.java文件生成字节码.class文件jvm虚拟机通过类加载器加载.class文件jvm通过执行引擎找到main()方法入口,执行代码编译字节码...

2021-02-23 00:30:36 234

原创 Spring入门——DI与AOP简介

前言在诞生之初,创建Spring的主要目的是用赖替代更加重量级的企业级java技术,尤其是EJB。相对于EJB来说,Spring提供了更加轻量级和简单的编程模型。他增强了简单老式java对象POJO的功能,使其具备了之前只有EJB和其他企业级Java规范才具有的功能。简化java开发为了降低java开发的复杂性,Spring采取了以下4中关键策略:基于POJO的轻量级和最小侵入性编程;...

2019-03-12 16:05:22 369

原创 【内推贴】求职看机会的私信哦

岗位:pdd-跨境电商-B端-仓配供方向。语言:java(之前其他语言也不限)学历:211、985优先。工作经验:3年以上优先。

2024-01-02 11:43:55 359

原创 一文弄懂Redis慢查询

什么是Redis慢查询?redis的"慢查询"与redis定义慢查询的时间阈值有关,Redis提供了slowlog-log-slower-than和slowlog-max-len两个配置,slowlog-log-slower-than指当redis命令的执行时间超过该值时,redis会将其记录在redis的慢查询日志中,slowlog-max-len表示记录的条数(超过时会只存储最新的slowlog-max-len条),slowlog-log-slower-than的默认值为10000us,也就是一般来说

2022-05-29 13:24:29 4984

原创 深入理解Redis分布式锁

背景项目中有个场景是做数据分析,然后将目标数据保存在db,有个要求是将同类型的目标数据值保存一次,因此每次保存时需要判断之前是否已经存在了,由于qps较高,之前使用redis来缓存已经保存的数据,来抵挡对db的大部分流量,最近业务拓展同类型目标数据的qps可能超大(极限时达到20Wqps以上),此时由于在分布式场景下redis查询未加锁,可能多个线程同时查询redis得到的结果为并未保存,此时问题发生了,可能同时有多个线程执行保存到db操作,虽然db做了unique Key的限制,但担心到db qps过高

2022-05-28 22:50:15 1025

原创 深入理解volatile(Java)

前言除了上篇文章讲到的关键字synchronize关键字外可以实现同步外,java中还有另一个关键字volatile可以实现一些简单的同步。synchronized知识的了解可查看深入理解synchronized(一)——初识synchronized。定义volatile是一个特征修饰符.volatile的作用是作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值。其在许多语言中都有应用,在java中是一个关键字,其作用主要有以下两点:保证此变量对所有的线程的可见性。即一个线

2022-04-13 12:14:00 666 1

原创 深入理解synchronized(二)——synchronized实现原理

前言深入理解synchronized(一)——初识synchronized 在上一篇文章中,我们介绍了synchronized的作用以及用法,本文我们来探究下synchronized到底如何实现在对象加锁的。MonitorMonitor可以理解为一个同步工具,也可以描述为一种同步机制,它通常被描述为一个对象。与一切皆对象一样,所有的Java对象是天生的Monitor,每一个Java对象都有成为Monitor的潜质,因为在Java的设计中 ,每一个Java对象自打娘胎里出来就带了一把看不见的锁,它叫做

2022-04-10 20:17:30 571

原创 深入理解synchronized(一)——初识synchronized

synchronizedsynchronized是java中的一个关键字,简单来说,synchronized关键字以同步方法和同步代码块的方式,为方法和代码块上的对象加锁。使得同一时刻,在这个对象上的多个线程,只能由持有这个对象锁的单个线程进行代码的调用执行,本文将介绍为什么要加锁以及synchronized的用法以及使用上的区别。为什么要加锁?简单的说,加锁是为了避免多线程下并发冲突,锁是一种数据保护机制,可允许某一个线程(进程)进行操作锁,当文件锁上时,其他线程(进程)根据锁的性质(读写锁,阻塞非

2022-04-10 00:28:59 747

原创 深入理解Kafka

深入理解kafka的设计思想

2022-04-06 15:40:28 2561

原创 IDEA Run启动成功,Debug失败原因

按ctrl+shift+F10,关闭 Java Exception BreakpointsJava Exception Breakpoints:当程序抛出指定异常时会激活异常断点。因此debug启动出现一些非致命异常时会阻塞程序

2022-03-08 19:01:55 353

原创 GO语言的基础知识学习总结

GO语言基础知识目录

2021-09-12 01:14:39 1225 1

原创 Spring简单学习

简介spring是一个分层的java SE/EE应用一站式的轻量级开源框架。其核心是IOC与AOP。Ioc:将对象之间的依赖关系交给spring提供的ioc容器进行处理,方便解耦AOP:方便进行面向切面编程。体系结构数据集成模块事务模块:用于管理事务,支持声明式与编程式管理jdbc模块:提供了jdbc模板,还可以享受spring事务管理orm模块:提供“对象-关系”映射框架的无缝集成,包括hibernate,mybatis,jpa等。oxm模块:提供一个对象Object与xml文件的映射实

2021-02-21 23:55:14 121

原创 idea启动项目zookeeper报错

idea启动时zookeeper报错java.lang.IllegalArgumentException: Unable to canonicalize address 172.22.8.9/:2181 because it’s not resolvable原因:使用jdk14导致的不兼容,换成jdk1.8后解决

2021-02-21 23:52:46 4031

原创 国内git 解决安装慢的问题

最近在需要安装git,发现官网实在太慢。于是找到了国内阿里云的镜像地址:下载地址https://npm.taobao.org/mirrors/git-for-windows/进入获取需要的版本即可

2020-05-10 19:39:01 413

原创 求问python3.8怎么都安装不了gi模块是咋回事?

python3.8安装不了gi模块是咋回事?

2020-02-28 14:56:51 3174 4

原创 并查集的实现查询图中有多少个连通分支

所谓并查集算法,涉及到两个操作,一是寻找到祖先节点(我们可以定义数组parent[i]=i满足时,i为祖先节点),而是合并连通分支import java.util.HashMap;import java.util.HashSet;public class UnionSet { public static void main(String[] args) { } i...

2019-08-26 19:34:38 795

原创 平衡搜索树的一种简单代码

public class AvlTree { //平衡二叉树不平衡有四种情况(去除对称其实只有两种) //即左左,右右,左右,右左(可自行画图脑补) //对应解决办法为 左旋 右旋 先左旋后右旋 先右旋后左旋 //这里写的是最直观最简单也是效率比较低的写法 class TreeNode{ int val; int heigh...

2019-07-04 20:57:07 168

原创 操作系统面试(概述)

操作系统面试(概述)基本特征并发并发是指宏观上一段时间内运行多个程序,而并行是真正意义上同一时刻同事运行多个程序并行需要硬件的支持,如多流水线、多核处理器或者分布式系统操作系统通过引入进程和线程,使得程序能够并发运行共享共享是指系统中的资源可以被多个并发进程共同使用共享可以分为互斥共享和同时共享互斥共享的资源成为临界资源,例如打印机,在同一时刻只能有一个进程进行资源访问,需要使用...

2019-07-03 21:56:38 133

原创 操作系统面试(死锁)

操作系统面试(死锁)死锁产生的必要条件[外链图片转存失败(img-Vs8tCLxS-1562162502867)(https://github.com/CyC2018/CS-Notes/raw/master/notes/pics/c037c901-7eae-4e31-a1e4-9d41329e5c3e.png)]互斥:每个资源要么已经分配给了一个进程,要么就是可用的。占有和等待:已经得到...

2019-07-03 21:56:00 354

原创 操作系统面试(设备管理)

操作系统面试(设备管理)磁盘结构盘面(Platter):一个磁盘有多个盘面;磁道(Track):盘面上的圆形带状区域,一个盘面可以有多个磁道;扇区(Track Sector):磁道上的一个弧段,一个磁道可以有多个扇区,它是最小的物理储存单位,目前主要有 512 bytes 与 4 K 两种大小;磁头(Head):与盘面非常接近,能够将盘面上的磁场转换为电信号(读),或者将电信号转换为盘...

2019-07-03 21:55:22 186

原创 操作系统面试(内存管理)

操作系统面试(内存管理)虚拟内存虚拟内存的目的是为了让物理内存扩充成更大的逻辑内存,从而让程序获得更多的可用内存。为了更好的管理内存,操作系统将内存抽象成地址空间。每个程序拥有自己的地址空间,这个地址空间被分割成多个块,每一块称为一页。这些页被映射到物理内存,但不需要映射到连续的物理内存,也不需要所有页都必须在物理内存中。当程序引用到不在物理内存中的页时,由硬件执行必要的映射,将缺失的部分装...

2019-07-03 21:54:54 597

原创 操作系统面试(进程管理)

操作系统面试(进程管理)进程与线程1.进程进程是资源分配的基本单位狭义定义:进程是正在运行的程序的实例(an instance of a computer program that is being executed)。广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。...

2019-07-03 21:54:07 551

原创 消息队列面试知识扫盲

消息队列面试知识扫盲文章目录消息队列面试知识扫盲什么是消息队列为什么要使用消息队列通过异步处理提高系统性能(削峰、减少相应所需的时间)降低系统耦合性使用消息队列带来的一些问题JMS VS AMQPJMSJMS简介JMS的两种消息模型JMS五种不同的消息正文格式AMQPJMS VS AMQP常见的消息队列对比消息队列如何做到高可用性如何保证消息不被重复消费如何保证消息传输的可靠性(不会丢失数据)R...

2019-06-28 15:05:52 288

原创 排序算法总结

算法总结排序插入排序简介:假设前面i个元素已经排好序,将第i+1个元素插入到合适的位置``public int[] InsertSort(int []nums){ if(nums.length<=1){ return nums; } for(int i=1;i<nums.length;i++){ //找到插入的位置 ...

2019-06-27 19:51:27 83

原创 RabbitMQ原理剖析

RabbitMQ原理剖析都知道RabbitMQ是消息队列,是一种应用程序对应用程序的通信方法;应用程序通过读写消息对列来进行通信,而无需专用连接来链接他们。RabbitMQ的网络架构图可以看到,大致过程是数据发布者发布数据给Exchange,Exchange接受数据后与对应Queue Binding,然后消费者与Queue建立连接Connection,通过通道消费Queue中的消息。可...

2019-06-27 15:16:12 311

原创 消息队列面试知识扫盲

消息队列面试知识扫盲什么是消息队列消息队列其实就是一个存放消息的容器,我们可以把消息放在消息队列中,当需要消息时,再从消息队列中取出消息处理。消息队列是分布式系统中的重要组件,使用消息队列主要是为了通过异步处理提高系统性能和削峰、降低系统的耦合性。目前使用较多的消息队列有ActiveMQ、RabbitMQ、KAfKa、RocketMQ-。为什么要使用消息队列消息队列带来的好处主要有以下两...

2019-06-26 21:25:28 155

原创 Redis面试知识扫盲(面试宝典)

Redis面试知识扫盲Redis简介Redis是一个把数据存在内存中的数据库,因此读写速度非常快,被广泛用于缓存方向。此外Redis还可用来做分布式锁。Redis提供了多种数据类型来支持不同的业务场景。redis支持事务 持久化 lua脚本 LRU事件驱动 多种集群方案为什么要用redis/为什么要用缓存?使用缓存可以带来两个好处:高性能与高并发。高性能如果用户是第一次访问数据库中的数...

2019-06-26 17:32:54 260

原创 JAVA重点(扫盲)知识

JAVA基础文章目录JAVA基础1.面向过程与面向对象面向过程面向对象2.Java语言的特点3.JVM,JDK,与JREJVMJDK与JRE4.Oracle JDK与Open JDK5.Java和C++的区别6. Java 程序的主类 应用程序和小程序的主类有何不同?7. Java 应用程序与小程序之间有那些差别?8.字符型常量和字符串常量的区别?9.构造器 Constructor 是否可被 o...

2019-06-18 13:24:04 161

原创 Matlab基础知识

Matlab基础知识文章目录Matlab基础知识概述Matlab的基础语法常用的一些运算符命名变量保存工作Matlab变量Matlab命令管理会话的命令系统命令输入和输出命令向量,矩阵和数组命令绘图命令概述Matlab是MathWorks开发的用来进行数字计算,可视化和编程的第四代高级编程语言和交互式环境。它允许矩阵运算,绘制功能和数据;实现算法;创建用户界面;并可以与其它编程语言相交互;...

2019-06-18 13:21:29 2886 1

原创 JAVA重点(扫盲)知识

JAVA基础1.面向过程与面向对象面向过程优点:性能高(因为面向对象类调用时需要实例化,开销大,消耗资源)缺点:没有面型对象易维护 易复用 易扩展面向对象优点:易维护 易复用 易扩展,具有封装多态继承的特性,可以设计出低耦合的系统,是系统更加灵活和更加易于维护缺点:性能低2.Java语言的特点简单易学;面向对象(封装,继承,多态);平台无关性( Java 虚拟机实现平台无关...

2019-06-16 16:46:16 136

原创 JAVA重点(扫盲)知识

JAVA基础1.面向过程与面向对象面向过程优点:性能高(因为面向对象类调用时需要实例化,开销大,消耗资源)缺点:没有面型对象易维护 易复用 易扩展面向对象优点:易维护 易复用 易扩展,具有封装多态继承的特性,可以设计出低耦合的系统,是系统更加灵活和更加易于维护缺点:性能低2.Java语言的特点简单易学;面向对象(封装,继承,多态);平台无关性( Java 虚拟机实现平台无关...

2019-06-14 16:47:24 526

原创 Planar Isotropic平面各向同性

Isotropic各向同性简单的说各向同性就是说物质在各个方向保持同样性质的特性,就想一根金属导线无论是正接反接还是侧接,都能导电,而且电阻等电性参数保持相同。Planar Isotropic平面各向同性通过查阅资料,从我的理解来看就是在同一个平面上,由一点出发,不同方向测量的性质相同。...

2019-06-10 09:24:13 273

原创 牛客网剑指offer题解(66题)

import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.Comparator;import java.util.List;import java.util.PriorityQueue;import java.util.Queue;import ja...

2019-04-26 14:48:39 345

原创 Spring源码----Idea阅读环境搭建

前言搭建Idea环境阅读Spring源码1.Spring源码的下载可以去我的github地址下载:spring官方源码https://github.com/tigerchicken/spring-framework2.Spring源码的编译windows下需要安装gradlegradle的下载地址为https://gradle.org/install/下载完成后配置好对应的环境变量...

2019-04-15 16:52:20 328

原创 有感而发

世界突然变得好安静确乎不知道该做什么想来想去也不懂又何必苦苦煎熬自己所以 不如 放弃来的 痛快 又美丽

2019-04-11 15:54:46 112

原创 Kafka学习笔记

Kafaka 基本概念物理概念逻辑概念Producer:消息和数据的生产者,向Kafka的一个topic发布消息的进程/代码/服务Consumer:消息和数据的消费者,订阅数据(Topic)并且处理其发布的消息的进程/代码/服务Consumer Group:逻辑概念,对于一个topic,会广播给不同的group,一个group中只有一个consumer可以消费该消息。Br...

2019-04-11 15:29:35 186

原创 Kafka报错 找不到或无法加载主类Kafka

在网上找了很多方法,有的说是jdk环境变量以及zookeeper环境配置的问题,有的说是jdk版本太旧了,有的说是没有启动zookeeper。很奇怪我的上面问题都配置好了,还是出现这个问题...

2019-04-11 15:23:10 2519 5

原创 java标准输出流问题

在使用标准输出流时,有时会碰见没有把数据完全写入文件中,是因为还有部分数据存在于缓冲中,这是可以通过flush或者.close()来刷新缓冲

2019-04-03 15:59:22 197

ACM程序设计导引及在线实践.rar

练习ACM的同学可下载,对于初入门想要学习算法打ACM的同学很有帮助

2021-02-24

实战Java高并发程序设计.pdf

实战Java高并发程序设计 学习高并发知识的一本好书 内容全面 且具体详细

2019-04-01

空空如也

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

TA关注的人

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