- 博客(63)
- 资源 (1)
- 收藏
- 关注
原创 视频讲解leetcode力扣每日一题打卡2022.01.09--1629. 按键持续时间最长的键
视频讲解leetcode力扣每日一题打卡2022.01.09--1629. 按键持续时间最长的键
2022-01-09 09:39:36
356
原创 视频讲解大厂面试最重要算法母题,动态规划,leetcode力扣每日一题300.最长递增子序列
视频讲解大厂面试最重要算法母题,动态规划,leetcode力扣每日一题300.最长递增子序列
2022-01-08 09:54:35
210
原创 Mysql优化汇总2021最新
1. 概述数据库性能取决于数据库级别的几个因素,例如表,查询和配置设置。这些软件结构导致在硬件级别执行CPU和I / O操作,您必须将这些操作最小化并使其尽可能高效。在研究数据库性能时,首先要学习软件方面的高级规则和准则,并使用挂钟时间来衡量性能。成为专家后,您将了解有关内部情况的更多信息,并开始测量诸如CPU周期和I / O操作之类的东西。典型的用户旨在从其现有的软件和硬件配置中获得最佳的数据库性能。高级用户会寻找机会改进MySQL软件本身,或者开发自己的存储引擎和硬件设备来扩展MySQL生态系统。
2021-05-20 22:19:19
88
原创 Spring Cloud家族全家桶精析与实现
文章目录1.前言1.1SOA和微服务的区别1.2Dubbo和SpringCloud的区别1.3SpringCloud第一代和SpringCloudAlibaba第二代SpringCloud第一代SpringCloudAlibaba第二代2.SpringCloud第一代2.1Eureka简介2.1Eureka高可用实例搭建2.2Eureka远程调用的方式2.2.1DiscoveryClient2.2.2 LoadBalancerClient(Ribbon的负载均衡器,可以直接选择服务)2.2.3 @LoadB
2021-04-14 23:10:48
682
2
原创 Java亿级流量高并发设计解决方案 之 分布式网络编程核心-远程调用
当单服务器的负载超限时,通常会搭建集群服务或将系统拆分成分布式的结构。本章将讲解如何在多台服务器之间实现远程通信。1.OSI与TCP/IP网络模型1.1OSI七层模型物理层:用于原始信号(0,1)的传输。单位是比特。设备是中继器,集线器。数据链路层:通过MAC地址(全球唯一)在网络中定位目标计算机的位置,从而实现一个子网内的通信。传输的单位是Frame(帧)。主要设备是网卡,网桥,交换机。网络层:若多个设备在同一子网内,则通过数据链路层即可通信。若不在一个子网内,则需要通过网络层通信。网络层会在
2020-12-20 20:58:44
321
1
原创 Java亿级流量高并发设计解决方案 之多线程并发包JUC
文章目录1.JUC核心类的深度解析与使用案例1.1使用CopyOnWriteLock实现并发写操作1.2使用ReadWriteLock实现读写锁1.3ConcurrentHashMap的底层结构1.4使用BlockingQueue实现排序和定时任务1.5通过CountDownLatch实现多线程闭锁1.6使用CyclicBarrier在多线程设置屏障1.7使用FutureTask和Callable实现多线程2.通过源码掌握并发包的基石AQS1.JUC核心类的深度解析与使用案例1.1使用CopyOnWri
2020-12-19 22:45:44
348
1
原创 Java亿级流量高并发设计解决方案 之 JVM与JDK相关
文章目录1.JVM核心概念及JVM对高并发的支持1.1JVM内存区域1.2JVM内存模型(JMM)1.3使用volatile解决可见与重排序2.Java对同步机制的解决方案2.1使用synchronized解决并发2.2使用线程通信,队列,线程池模拟消费生产2.3使用Lock重构生产者消费者2.4CAS无锁算法1.JVM核心概念及JVM对高并发的支持JVM是安装在操作系统上的虚拟机,Java代码直接操作的对象就是JVM。因此Java可以实现一次编写,多处运行。1.1JVM内存区域方法区,堆,虚拟机
2020-12-18 23:37:38
159
1
原创 Java亿级流量高并发设计解决方案
在移动互联网时代,高并发场景无处不在,只要是你日常使用的APP,它一定会做高并发处理,原因就是目前的互联网用户实在是太多了!!所以,一旦你掌握了处理高并发的技术,那你在技术界一定是块抢手货!下面我将同不同角度带你切入高并发的世界!!!本文将从以下几个角度切入,层层递进,带你领略高并发的世界!!!文章目录1.系统分析与大型互联网设计2.JVM,JDK相关3.多线程并发4.分布式网络编程--远程调用5.NIO非阻塞IO6.NETTY7.主流RPC框架8.高并发框架Disruptor9.Spring Boot
2020-12-15 22:38:55
772
2
原创 Java亿级流量高并发设计 之 系统分析与大型互联网设计
本章节将从四个角度切入带你理解高并发1.系统分析原则本节将介绍设计过程中的高并发,容错性,可扩展性等几个方面1.1高并发原则垂直扩展:升级硬件,即砸钱买设备水平扩展:提高技术,利用分布式,集群等技术从技术层面提升并发如:我们可通过缓存减少数据库访问,熔断或降级提高响应速度,削峰来限流,微服务治理等方面提升并发量。1.2容错原则设计过程中也必须考虑到业务逻辑的容错性。如用Spring Boot+Redis来实现分布式缓存,MQ来实现事务一致性,使用MQ,Token来解决重复提交,“去重表”
2020-12-15 22:37:13
381
原创 刷算法题必备!!! Java中位运算详解
一.算数运算符1.<<向左移动一位,如4=1000 4<<1=8 4<<2=162.>>向右移动一位,如4=1000 4>>1=2 4>>2=1二.逻辑运算符1.与&(全1才1)1.或|(有1就1)
2020-10-05 16:59:39
146
原创 刷算法题必备!!java算法题优化策略总结
算法优化1. 递归优化(超时->可通过)本文就我在算法题中遇到到优化策略进行一个总结,欢迎大家指点改正。1. 递归优化(超时->可通过)递归是常见的一种解题策略,但缺点是递归层数太深的话会浪费巨大的时间空间,还会造成多次运算的情况出现。如下题。斐波那契数列f(0)=0,f(1)=1,f(n)=f(n-1)+f(n-2)类似这种题,在n比较大时,底层的数会重复加很多次(如f(4)本来只需算一次,但递归下可能每次遇到f(4)都得再算一遍),这样就浪费了大量的时间。优化:1
2020-09-30 16:15:53
543
原创 抽象类的构造方法应该如何用??
首先,大家要明确一个概念,就是抽象类无法被实例化,只能通过子类的继承 extends (一个子类只能继承一个抽象类)并且子类必须全部覆写抽象类中的全部抽象方法。下面我以一段代码为例进行讲解class AbstractDemo01 { public static void main(String[] args) { B b = new B("哦"); B b2 = new B(); }}abstract class A { public A()
2020-09-14 14:38:49
1020
原创 注解和反射
1.内置注解Override:只用于修饰方法,表示一个方法声明打算重写超类中的另一个声明。2.元注解作用:负责注解其他注解@Target:用于描述注解的适用范围(如类,方法)@Documented:说明该注解被包含在javadoc中@Retention:用于表示需要在什么级别保存该注释信息,用于描述注解的生命周期(Source-class-Runtime)@Inherited:说明子类可继承父类中的该注解3.自定义注解使用@Interface,配合元注解来进行自定义4.反射R
2020-09-07 19:51:33
200
原创 Spring中的事务精析
1.事务概念1.什么是事务事务是数据库操作最基本单元,逻辑上的一组操作,要么都成功,要么都失败。2.事务的四个特性(ACID)原子性(Atomicity):事务是一个原子操作,由一系列动作组成。事务的原子性确保动作要么全部完成,要么完全不起作用。一致性(Consistency):一旦事务完成(不管成功还是失败),系统必须确保它所建模的业务处于一致的状态,而不会是部分完成部分失败。在现实中的数据不应该被破坏。隔离性(Isolation):可能有许多事务会同时处理相同的数据,因此每个事务都应该与其
2020-08-29 00:21:47
169
原创 查找算法,排序算法,遍历算法之Java实现
文章目录1.查找算法1.二分/折半查找2.排序算法1.冒泡排序(Bubble Sort)-----不推荐2.选择排序(Selection Sort)----不推荐3.插入排序(Insertion Sort)----不推荐4.快速排序(Quick Sort)----推荐5.堆排序(Heap Sort)----推荐1.查找算法1.二分/折半查找时间复杂度:O(logn)空间复杂度public static int binarySearch(int[] array, int value) {
2020-08-24 00:05:27
276
原创 消息队列RabbitMq精析
文章目录1.Mq简介1.什么是Mq2.Mq有哪些3.不同Mq的不同特点4.AMQP2.RabbitMq简介1.RabbitMq基本消息模型-----直连1.1生产者1.2.消费者2.RabbitMq基本消息模型----work queue3.消息确认机制4.RabbitMq基本消息模型----fanout5.RabbitMq基本消息模型----Routing之订阅模型Direct(直连)6.RabbitMq基本消息模型----Topic1.Mq简介1.什么是MqMq翻译为消息队列(消息中间件),通过典
2020-08-23 00:52:14
300
原创 JUC编程详解
文章目录1.线程和进程1.线程状态2.wait和sleep区别2.Lock锁1.Synchronized和Lock区别锁精析ReadWriteLock2.并发下ArrayList和ArraySet不安全3.Callable4.辅助类CountDownLatch减法计数器CyclicBarrier加法计数器Semaphore5.阻塞队列四组API6.线程池池化技术ThreadPoolExecutor(推荐创建线程池的方式,可以自行设置参数)7.函数式接口8.Stream流计算CASABA问题:各种锁1.公平锁
2020-08-10 19:24:59
730
2
原创 Spring Boot秒杀系统超卖问题,高并发问题深析(有压力测试的演示)
1.超卖背景很多小伙伴可能觉得,我秒杀项目中的库存一个一个减,为什么会造成超卖呢?当然,如果你是单线程的小系统当然不需要担心任何问题,但秒杀项目的特点是短时间内的超高并发,一堆用户去冲击很少量的商品库存,系统当然会反应不过来是谁买走了真正的库存商品,超卖情况也就随之发生,下面我们用代码详细展示一下!2.情景再现新建一个spring web项目,controller,dao,service层分别如下Service层package com.seckillsample.demo.service;i
2020-08-07 14:26:27
1646
原创 Spring Boot秒杀项目实战教学
文章目录1.项目架构1.架构搭建1.Spring Boot环境搭建2.集成Thymeleaf,Result结果封装3.集成Mybatis+Druid4.集成Jedis+Redis+通用缓存Key封装2.实现登录功能1.数据库设计2.明文密码两次MD5处理3.JSR303参数校验+全局异常处理器4.分布式Session3.实现秒杀功能1.数据库设计2.商品列表页3.商品详细页4.订单详细页4.JMeter压测1.JMeter入门2.自定义变量模拟多用户3.JMeter命令行使用4.Spring Boot打wa
2020-08-04 20:21:47
274
原创 Java多线程之生产者/消费者模型(Synchronized版和Lock版)(附经过调试的演示代码)
所谓的生产者消费者模型,是通过一个容器来解决生产者和消费者的强耦合问题。通俗的讲,就是生产者在不断的生产,消费者也在不断的消费,可是消费者消费的产品是生产者生产的,这就必然存在一个中间容器,我们可以把这个容器想象成是一个货架,当货架空的时候,生产者要生产产品,此时消费者在等待生产者往货架上生产产品,而当货架满的时候,消费者可以从货架上拿走商品,生产者此时等待货架的空位,这样不断的循环。具体实现代码如下,都是笔者手撸!!class ProductAndConsumerDemo { public s
2020-08-04 19:08:02
157
原创 从零开始带你学习Java中的数据结构之String,StringBuffer,StringBuild详解
数据结构文章汇总从零开始带你学习Java中的数据结构之HashMap从零开始带你学习Java中的数据结构之Queue从零开始带你学习Java中的数据结构之Arrays/ArrayList从零开始带你学习Java中的数据结构之List/LinkedList从零开始带你学习Java中的数据结构之Map从零开始带你学习Java中的数据结构之Set从零开始带你学习Java中的数据结构之String,StringBuffer,StringBuild总结:...
2020-08-03 16:59:57
187
原创 从零开始带你学习Java中的数据结构之Stack
数据结构文章汇总从零开始带你学习Java中的数据结构之HashMap从零开始带你学习Java中的数据结构之Queue从零开始带你学习Java中的数据结构之Arrays/ArrayList从零开始带你学习Java中的数据结构之List从零开始带你学习Java中的数据结构之Map从零开始带你学习Java中的数据结构之Set...
2020-08-02 13:47:17
177
原创 从零开始带你学习Java中的数据结构之List和LinkedList
有序集合(也称为序列 )。 该界面的用户可以精确控制列表中每个元素的插入位置。 用户可以通过整数索引(列表中的位置)访问元素,并搜索列表中的元素。与集合不同,列表通常**允许重复的元素**。 更正式地,列表通常允许元素e1和e2成对使得e1.equals(e2) ,并且如果它们允许空元素,它们通常**允许多个空元素**。 有人可能希望实现一个禁止重复的列表,当用户尝试插入时会抛出运行时异常,但是我们预计这种使用是罕见的。该List接口放置额外的约定,超过在Collection指定接口上的iterat
2020-08-02 13:37:00
247
原创 从零开始带你学习Java中的数据结构之Queue队列
1.Queue简介Queue设计用于处理之前保持元件。 除了基本的Collection操作,队列提供额外的插入,提取和检查操作。 每一种方法以两种形式存在:如果操作失败之一抛出异常,其他返回一个特殊值( null或false ,这取决于操作)。 插入操作的后一种形式是专为与容量限制的使用而设计的Queue的实现; 在大多数实现中,插入操作不能失败队列通常但不一定是以FIFO(先进先出)方式排序元素。 除了优先级队列之外,优先级队列是根据提供的比较器对元素进行排序,还是元素的自然排序,以及对元素LIFO(
2020-08-02 13:32:39
178
原创 Java中23种设计模式精讲
文章目录1.单例模式饿汉式懒汉式双重检验锁2.简单工厂模式3.工厂模式4.抽象工厂模式4.装饰器模式1.单例模式饿汉式// 1.私有构造方法,其它类不能访问该构造方法 private Singleton1() { } // 2.创建本类对象,且让它私有,目的是不让其修改该对象 private static Singleton1 singleton1 = new Singleton1(); // 3.对外提供公共的访问方法 获取实例 public static S
2020-08-02 11:08:39
335
原创 从零开始带你学习Java中的数据结构之HashMap
数据结构文章汇总从零开始带你学习Java中的数据结构之HashMap从零开始带你学习Java中的数据结构之Queue从零开始带你学习Java中的数据结构之Stack从零开始带你学习Java中的数据结构之Arrays/ArrayList从零开始带你学习Java中的数据结构之List/LinkedList从零开始带你学习Java中的数据结构之Map从零开始带你学习Java中的数据结构之Set从零开始带你学习Java中的数据结构之String,Strin...
2020-07-27 18:01:25
168
人工智能算法下的遗传算法下载
2020-08-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人