自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

CW

  • 博客(38)
  • 资源 (4)
  • 收藏
  • 关注

原创 Netty项目

一、项目构成二、项目学到的知识1)Netty框架主从reactor模式Reactor在一个单独的线程中负责监听和分发事件主Reactor只处理“accept”事件,从Reactor处理其他业务Netty模型BossGroup与WorkGroup都是NioEventLoopGroup(事件循环)其中都是多个NioEventLoop(上图中不对,上面的NioEventGroup)对于BossGroup中的每个NioEventLoop,是一个负责处理accept的事件循环:1.轮询a

2022-11-12 17:25:32 700

原创 秒杀web项目

秒杀项目出现的问题1)在引入redis的过程中循环引用问题代码@Servicepublic class RedisService { @Autowired JedisPool jedisPool; @Autowired RedisConfig redisConfig; public <T> T get(String key, Class<T> clazz){ Jedis jedis = null;

2022-11-12 17:25:04 452

原创 Mysql

一、Mysql索引结构1)数据结构——B+树但是红黑树的问题是:如果数据量大了之后,树的高度就会很大。B+数叶子节点是双向链表,父节点存放子节点的最大值。B树与B+树的区别:由于B+树中间节点不存指针,同样大小的磁盘页可以容纳更多的节点元素,树的高度就小。(数据量相同的情况下,B+树比B树更加“矮胖”),查找起来就更快。B+树每次查找都必须到叶子节点才能获取数据,而B树不一定,B树可以在非叶子节点上获取数据。因此B+树查找的时间更稳定。B+树的每一个叶子节点都有指向下一个叶子节点的

2022-11-12 17:22:15 1651

原创 面试题111111

面试题1. 一个对象在哪里?一个成员变量存在哪里?一个局部变量存在哪里?如果是局部变量是一个对象的引用存在哪里?对象在堆,成员变量在堆(因为是某一个对象的成员变量),局部变量在虚拟机栈的局部变量表,局部变量的引用也在虚拟机栈的局部变量表。2. Java创建对象流程类加载检查: 虚拟机遇到一条 new 指令时,首先将去检查这个指令的参数是否能在常量池中定位到这个类的符号引用,并且检查这个符号引用代表的类是否已被加载过、解析和初始化过。如果没有,那必须先执行相应的类加载过程。分配内存:

2022-11-12 17:21:50 387

原创 Alibaba_Arthus问题排查工具

官方文档:https://gitee.com/arthas/arthas#dashboardwget https://arthas.aliyun.com/arthas-boot.jarjava -jar arthas-boot.jar通过以上命令安装authus并启动运行dashboard命令可以看到青年代用的是复制算法;而老年代用的是标记整理算法;(中间缺少的一行是老年代gc的次数,看一下下面的,Scavenge是对于青年代的复制算法)通过thread命令查看当前线程的栈:通过s

2022-02-19 13:11:24 528 1

原创 Netty学习笔记

一、Netty初识Netty 是一个异步的、基于事件驱动的网络应用框架,用以快速开发高性能、高可靠性的网络 IO 程序。Netty 主要针对在 TCP 协议下,面向 Client 端的高并发应用,或者 Peer-to-Peer 场景下的大量数据持续传输的应用。本质是NIO框架二、IO模型IO模型:用什么样的通道进行数据的发送和接收,决定着通信性能1) BIO模型(Blocking IO)一个线程在accpet()死循环去获取客户端连接,只要产生连接就拿一个线程进行处理。概念传统阻塞

2021-10-02 23:31:12 146

原创 leetcode总结

判断是否二次幂​一般有两种做法:方法一的复杂度为 O(logn),方法二为 O(1)。①第一种是通过不断的相除,看能否除净,由于除法精度问题,一般采用乘法再比较。boolean check(long x) { //方法一 long cur = 1; while (cur < x) { cur = cur * 2; } return cur == x;}②与HashMap中静

2021-09-04 14:36:29 74

原创 SpringCloud学习笔记

文章目录一、SpringCloud概述SpringCloud微服务全家桶二、微服务架构编码构建一、SpringCloud概述微服务是一种架构风格将单个应用程序开发为一组小服务每个服务在自己的进程中运行,服务与服务之间通过HTTP进行通信服务自治SpringCloud微服务全家桶二、微服务架构编码构建...

2021-09-01 13:37:10 104

原创 Java——容器源码解析

文章目录一、PriorityQueue构造函数添加删除一、PriorityQueue实现了Queue接口,不允许加null,完全二叉树小顶堆(子节点不大于此节点),底层是数组,初始大小为11,继承了AbstractQueue,实现Serializable。构造函数public PriorityQueue() { this(11, (Comparator)null); }添加grow即数组长度不够用了,就选取一个新的数组长度,将老数组复制过去。(与ArrayList一样)

2021-08-20 13:18:25 68

原创 Java——其他知识汇总(更新中...)

代理代理:为其他对象提供一个代理以控制对某个对象的访问。代理类主要负责为委托了(真实对象)预处理消息、过滤消息、传递消息给委托类,代理类不现实具体服务,而是利用委托类来完成服务,并将执行结果封装处理。简记:我现在有个登录的功能(被代理类,旧了,不想要了),但我现在又不想完全修改以前的代码,就写个代理类,在代理类里添加了对地区的验证、对登录次数的验证等等功能,再调用被代理类,这样就实现了代理!静态代理需要:接口、被代理类、代理类关系:被代理类or代理类—>实现了接口举例:接口:publi

2021-08-16 20:16:34 110

原创 SpringMVC——学习笔记

MVC这位的笔记很好:https://blog.csdn.net/m0_46357847/article/details/109753731?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefa

2021-08-16 15:40:51 77

原创 Spring——学习笔记

SpringIOC:控制反转,把创建对象过程交给spring进行管理AOP:面向切面,不修改源代码进行功能增强Spring入门maven导入spring创建普通用户类加个方法public class User { public void add(){ System.out.println("add....."); }}创建xml配置文件,在配置文件中创建对象<?xml version="1.0" encoding="UTF-8"?&gt

2021-08-16 13:15:57 101

原创 Java——排序算法

Java——排序一、概览二、复杂度三、冒泡排序N2 两层循环,N2复杂度,外层i从头到尾,当i=1时,内层从头到尾-i,如果j大于j+1,交换j与j+1的元素,依次将最大的向后扔。class MaoPao{ public static void sort(int []arr){ for(int i = 0;i<arr.length-1;i++){ for(int j = 0;j<arr.length-1-i;j++){ if (array[j + 1] <

2021-08-14 14:36:49 70

原创 RabbitMQ学习笔记

一、MQ1)什么是MQ?消息队列(message queue)本质是个队列, FIFO 先入先出,只不过队列中存放的内容是message 而已,还是一种跨进程的通信机制,用于上下游传递消息。2)MQ作用流量消峰如果订单系统最多能处理一万次订单,这个处理能力应付正常时段的下单时绰绰有余,正常时段我们下单一秒后就能返回结果。但是在高峰期,如果有两万次下单操作系统是处理不了的,只能限制订单超过一万后不允许用户下单。使用消息队列做缓冲,我们可以取消这个限制,把一秒内下的订单分散成一段时间来处理

2021-08-12 16:22:43 175

原创 Java——容器的线程安全性

Java基本容器介绍Collection接口是集合类的根接口,Java中没有提供这个接口的直接的实现类。Set和List两个类继承于它。Set中不能包含重复的元素,也没有顺序来存放。而List是一个有序的集合,可以包含重复的元素。而Map又是另一个接口,它和Collection接口没有关系。Map包含了key-value键值对,同一个Map里key是不能重复的,而不同key的value是可以相同的。Java集合容器框架图:1.1. ListList在collection中的框架图:1.1.1

2021-08-11 19:39:22 508

原创 Spring——spring单例模式的线程安全

1.有状态的与无状态的bean有状态就是有数据存储功能。 有状态对象(Stateful Bean),就是有实例变量的对象 ,可以保存数据,是非线程安全的。无状态就是一次操作不能保存数据。 无状态对象(Stateless Bean),就是没有实例变量的对象 ,不能保存数据是不变类,是线程安全的。无状态bean单例模式共享实例,提高性能有状态beanprototype原型模式对每次bean请求都创建一个新的bean实例2. Spring中的单例设计模式的单例是在整

2021-08-11 12:26:26 2132 1

原创 JVM学习笔记

一、JVM 内存红色是线程共享的,黄色是线程私有的。1)内存总览程序计数器:当前线程所执行的字节码的行号指示器。虚拟机栈:Java方法执行的内存模型,里面是栈帧用于存储局部变量表、操作数栈、动态链接、方法出口等信息。本地方法栈:本地方法执行的内存模型,和虚拟机栈非常相似,其区别是本地方法栈为JVM使用到的Native方法服务。堆:用于存储对象实例,是垃圾收集器管理的主要区域。方法区:用于存储已被JVM加载的类信息、常量、静态变量、JIT编译器编译后的代码等数据。2)程序计数器——线程私

2021-08-10 14:15:42 97

原创 Docker学习笔记

Docker一、Docker概述1) Docker定义:应用容器引擎 日常例子就是,我们安装系统就必须安装mysql,redis,tomcat,多个服务器就多次安装不方便,docker就是为了将安装好的mysql,redis,tomcat软件等打包成各个镜像,直接启动镜像即可。百度搜索docker hub2)核心概念3)步骤安装docker去docker registry找镜像使用docker运行镜像生成一个容器二、docker安装虚拟机安装centos,注意3.10版本以上,

2021-08-09 22:36:17 196

原创 Java中的线程安全性

Java中的线程安全性一、原子性——atomic定义:提供互斥访问,同一时刻只能有一个线程对数据进行操作(atomic,synchronized);atomic类:比如AtomicInteger,AtomicLong,AtomicBoolean等等。通过CAS实现原子性!CAS:compare and swap  JDK5以前之前Java语言是靠synchronized关键字保证同步的,这会导致有锁。有锁的劣势:  synchronized悲观锁让没得到锁的进程进入阻塞态,争夺到资

2021-08-09 20:13:59 204

原创 操作系统——内存(更新中)

一、内存的概念存储单元:1字节 or 1字编址方式:按字节编制 or 按字编址内存地址:每一个内存地址对应一个存储单元内存:由存储单元组成的一段连续的地址空间二、程序运行的基本原理一个程序执行经过三步:编译链接装入:绝对装入静态重定位动态重定位#mermaid-svg-ZFGYsZ4fery8FZAV .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-f

2021-08-06 16:33:47 59

原创 redis——集群原理

一、主从模式1.当主机挂掉以后还有从机继续提供服务。2.比较好的方式是配置DNS(domain name system,域名系统),访问是访问的域名,某主机挂掉了,我们也能将其连接到从机。需要运维介入!二、哨兵模式前面的需要人工介入,这个自动切换,注意用户一定连的是哨兵集群。这种模式的问题:无法满足高可用:所有的写操作都指向主机,虽然哨兵集群能够自动切换,但是要一定的时间判断是否主机下线,再选举,在这一段时间内“写”是不可以的——访问瞬断! 无法满足大并发:RD..

2021-08-03 21:05:47 260

原创 Mysql——redis

原子性(Atomic)一个事务包含多个操作,这些操作要么全部执行,要么全都不执行。实现事务的原子性,要支持回滚操作,在某个操作失败后,回滚到事务执行之前的状态。 如何做到?①大部分数据库操作时先在数据快照上做,不成功就不提交。②可以先预演一边所有要执行的操作,如果失败则这些操作不会被执行,通过这种方式很简单的实现了原子性。一致性(Consistency)一致性是指事务使得系统从一个一致的状态转换到另一个一致状态隔离性(Isolation)...

2021-07-22 14:26:51 649

原创 spring——IOC容器

目录引入Ioc1.构造函数注入法2. 属性注入IoC容器Ioc容器的好处spring实现Ioc容器举例springIoc容器实现原理引入依赖倒置原则(DIP):高层设计不能依赖于底层设计,而是要求“高层定义接口,底层实现接口”这样的好处是:当有新的底层代码时,高层无需修改。控制反转(IoC):这是一种设计模式,底层的对象交给第三方控制,也就是底层模块的生成对象不在高层对象的类中new出来。比如:在订单输入的服务中首先采用的是SQL server数据库,用.

2021-07-22 13:14:35 45

原创 springboot2——7.总结

打包时在pom.xml中加入<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins></build>再利用maven点击pack

2021-07-20 17:28:03 213

原创 springboot08——6.学生管理系统

遇到的问题:1. mysql中的date类型在java中用你date类型接收时会报错。 解决方案:设置为String类型接收。2.设置的int类型的departmentId不显示。 解决方案:pojo中的属性名必须和mysql中的属性名完全一致才行。3. 目前的department是数字,现存两个表,希望做到:得到department数字以后,用这个数字在department表中查询出名字,再写在这一列。 解决方案:...

2021-07-19 15:46:17 318

原创 HTTP——后续

1.http报文首部: 请求报文:方法+URI+HTTP版本+HTTP首部字段 响应报文:HTTP版本+状态码+HTTP首部2. HTTPS: 引入:在HTTP协议中可能存在着信息窃听和身份伪装的问题,引入HTTPSHTTP的不足:通信使用明文,内容可能被窃听 不验证通信方的身份,可能被伪装 无法证明报文完整性,可能被篡改加密处理: 1)通信加密:HTTP与SSL(secure socket layer)结合...

2021-07-12 15:21:35 360

原创 Java——锁

1. 悲观锁:面对共享数据,每次线程操作时都会上锁,其他线程阻塞。Java中的synchronized和ReentrantLock等就是典型的悲观锁,还有一些使用了 synchronized 关键字的容器类如HashTable等也是悲观锁的应用。2. 乐观锁:操作共享数据时不会上锁,会判断一下在此期间是否有其他线程操作此数据。乐观锁可以使用版本号机制和CAS算法实现。在 Java 语言中java.util.concurrent.atomic...

2021-07-12 14:00:34 70

原创 HTTP——5. 与http协作的web服务器

1.单台虚拟主机实现多域名 http1.1允许一台http服务器搭建多个web站点“虚拟服务器”,可以为每位客户持有的域名运行各自不同的网站。 用户最终会拿着这个IP地址去访问服务器,但是此时寄存了多个不同主机名和域名的web网站,因此再发送http请求时必须在首部指定主机名或域名的URI。2. 通信数据转发程序: ①代理:服务器与客户端之间的“中介”,透明代理(不做任何处理)和缓存代理(预先将资源缓存在代理服务器上) ②网...

2021-07-03 22:19:28 85

原创 HTTP——4.状态码

1.状态码:让用户知道是正常还是错误。三位数字加原因短语2. 2XX——成功 ①200OK:请求已经正常处理 ②204No Content:请求处理成功,但没有资源返回 ③206Partial Content:返回其中一部分请求3. 3XX——重定向 ①301Moved Permanently:永久性重定向,所请求的资源已经被分配了新的URI ②302Found:临时重定向,所请求的资...

2021-07-03 21:23:23 462

原创 HTTP——3.HTTP信息

1.HTTP报文:2.请求报文和相应报文的首部: 请求行+状态行+首部字段+其他(cookie等)3.编码提升传输速率4.发送多种数据的多对象集合: 比如邮件服务,采用MIME技术5.获取部分内容的范围请求 指的是万一在下载过程中中断了,可以从断开的地方恢复下载6.内容协商: 访问相同的URI的web界面是,根据浏览器默认语言能够显示对应的英语中文等...

2021-07-03 20:32:27 34

原创 HTTP——2.http协议

1. http:应用于客户端与服务端之间的通信2.http协议包括:请求与响应 请求: 响应:3. 无状态协议:不会保存之前发送的请求或响应(简化处理,更快地处理大量事务)这样也引入了问题,比如在购物网站,不可能每次点击都要重新登录用户,这时为了保持装填引入cookie技术。4.使用URI定位互联网的资源5.HTTP/1.1中的方法: GET:获取资源:客户端想要获取服务器的某个资源 POST:传输实体主...

2021-07-03 19:59:30 295

原创 springboot2——5.web实战

一、静态资源导入打开WebMvcAutoConfiguration.java源码:可以看到第一个静态资源存放路径:打开后面红线的源码:还有四个地方储存静态资源:优先级为:

2021-06-29 22:02:39 150

原创 springboot2——4.自动配置原理

注解一:@Configuration含义:这是一个配置类注解二:@EnableConfigurationProperties(HttpProperties.class)含义:自动配置属性点开HttpProperties类有如下注解并有一些属性:@ConfigurationProperties(prefix = "spring.http")意义是将配置文件中的配置加载到此类中:这时能够和自己写的配置文件联系起来,我们需要在配置文件中写入(规定一些属性的值):注解三:@Con

2021-06-28 13:29:16 107

原创 springboot2——3.多环境切换

1. springboot官方文档规定,如下位置能存放配置文件(application.yaml):注意:file为根目录下,以上四个位置对应为:(优先级即为1.2.3.4) 当多个配置文件时可以自行选择:假设当前配置文件有如下: ​​​​​​​想要激活哪个配置就加上这句话 in application.properties: spring.profiles.active=test(即激...

2021-06-28 12:48:53 176

原创 springboot2——2.yaml注入

传统的注入方法是:这样可以直接初始化name与age,但是如果类很多这样写不方便。故采用yaml文件注入:Yaml存放位置为:具体调用句式为:注意此时第一次导入不成功(yaml导入为null),原因是没有设置Dog类的get和set方法测试当两种方法共存时,yaml注入优先级更高!后续修改更加方便,比如在链接数据库时写url等配置文件。yaml并不是唯一的,也可以是properties文件,properties文件在IDEA中容易乱码(需要设置一下)并且写

2021-06-27 20:26:31 54

原创 springboot2——1.原理

pom.xml文件:每个springboot项目都添加了如下依赖:<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.2.5.RELEASE</version> <relativePath>../...

2021-06-27 19:17:23 35

原创 HTTP——1.网络基础

1. TCP、IP协议簇层协议应用层FTP(file transfer protocol)、DNS(domain name system)传输层

2021-06-25 22:30:26 50

原创 JDBC——druid连接池异常错误

报错为:java.sql.SQLException: Cannot create people: class org.apache.commons.dbutils.BeanProcessor cannot access a member of class people with modifiers "public" Query: select * from people where id = ? Parameters: [1]找了很多文档没找到结果,后来自己测试是必须将声明的类声明为public才能正常

2021-06-25 14:50:40 372

基于Netty实现了dubbo rpc

基于Netty实现了dubbo rpc

2021-10-02

Navicamysql

Navicamysql

2021-09-13

springcloud教程

springcloud教程

2021-09-01

springcloud第四章结束.zip

springcloud第四章结束代码

2021-08-27

空空如也

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

TA关注的人

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