用法
文章平均质量分 77
IT--Fly
静听心灵的窗户
展开
-
ApplicationContextAware 接口妙用
但是SpringBoot的强大让我们无需再配置xml文件,也因此我们无法通过上述方式拿到ApplicationContext对象,所以当在项目需要用到spring中的bean对象时,一般做法就是实现ApplicationContextAware接口,通过这个接口就可以获取到ApplicationContext对象,进入从ApplicationContext中获取所需要bean对象。ApplicationContextAware接口的基本介绍。原创 2023-12-06 15:11:16 · 94 阅读 · 0 评论 -
Netty&NIO
Netty&NIO原创 2022-09-01 18:55:47 · 356 阅读 · 1 评论 -
认证中心(单点登陆)之SpringSecurity+OAuth2
认证中心(单点登陆)之SpringSecurity+OAuth2原创 2022-08-25 19:16:21 · 833 阅读 · 0 评论 -
Redis核心技术与实战
Redis 三大主线高性能主线,包括线程模型、数据结构、持久化、网络框架;高可靠主线,包括主从复制、哨兵机制;高可扩展主线,包括数据分片、负载均衡。Redis底层数据结构动态字符串、双向链表、压缩列表、哈希表、跳表和整数数组为什么哈希表操作变慢了?当你往 Redis 中写入大量数据后,就可能发现操作有时候会突然变慢了。这其实是因为你忽略了一个潜在的风险点,那就是哈希表的冲突问题和 rehash 可能带来的操作阻塞。Redis 解决哈希冲突的方式,就是链式哈希。链式哈希也很容易理解,就是指同原创 2022-04-18 22:26:52 · 3303 阅读 · 0 评论 -
数据结构与算法之链表
如何分析、统计算法的执行效率和资源消耗?多项式时间复杂度。O(1)首先你必须明确一个概念,O(1) 只是常量级时间复杂度的一种表示方法,并不是指只执行了一行代码。比如这段代码,即便有 3 行,它的时间复杂度也是 O(1),而不是 O(3)。 int i = 8; int j = 6; int sum = i + j;我稍微总结一下,只要代码的执行时间不随 n 的增大而增长,这样代码的时间复杂度我们都记作 O(1)。或者说,一般情况下,只要算法中不存在循环语句、递归语句,即使有成千上万行的代原创 2022-02-11 21:14:29 · 445 阅读 · 0 评论 -
如何对CPU过载进行排查
如何对CPU过载进行排查?1、怎么找出有问题的进程2、掌握简单的GC分析技巧3、掌握多线程分析技巧4、多线程的使用注意的问题案例现象CUP使用率持续在80%左右持续在3~8之间1、业务量,高峰期6000/分钟发送量,平均2000/分钟发送量2、服务器状况,两个节点接收数据,单节点消费数据3、每个消息发送处理时间平均为10秒4、单线程模式下节点最大消费能力每秒100条分析1、数据量并不大2、服务器物力资源够用3、单节点有足够的处理能力分析排查-CPU的负载什么事load数?原创 2022-01-28 11:32:51 · 1747 阅读 · 0 评论 -
Executor与线程池
定义线程是一个重量级的对象,应该避免频繁创建和销毁。class XXXPool{ // 获取池化资源 XXX acquire() { } // 释放池化资源 void release(XXX x){ }} 线程池是一种生产者 - 消费者模式//采用一般意义上池化资源的设计方法class ThreadPool{ // 获取空闲线程 Thread acquire() { } // 释放线程 void release(Thread t){ }}原创 2021-12-30 23:30:26 · 1076 阅读 · 0 评论 -
并发编程之解决原子性问题
那原子性问题到底该如何解决呢?原子性问题的源头是线程切换,如果能够禁用线程切换那不就能解决这个问题了吗?而操作系统做线程切换是依赖 CPU 中断的,所以禁止 CPU 发生中断就能够禁止线程切换。在早期单核 CPU 时代,这个方案的确是可行的,而且也有很多应用案例,但是并不适合多核场景。这里我们以 32 位 CPU 上执行 long 型变量的写操作为例来说明这个问题,long 型变量是 64 位,在 32 位 CPU 上执行写操作会被拆分成两次写操作(写高 32 位和写低 32 位,如下图所示)。在单原创 2021-11-19 22:45:00 · 174 阅读 · 0 评论 -
Dubbo的调用过程
注册服务:resources/dubbo/dubbo_registry.xml#id:标识需要在zookeeper上注册的服务的ID,方便下面暴露服务时引用。#protocol:协议名称#address:注册中心地址#register:是否向此注册中心注册服务,如果设为false,将只订阅,不注册。#check:注册中心不存在时,是否报错。#group:Dubbo提供服务分组,用于当一个接口有多种实现时,可使用group分组。即暴露的服务接口通过group来区分不同的实现类。#inte原创 2021-09-08 20:00:08 · 176 阅读 · 0 评论 -
Dubbo服务调用过程分析
简单的想想大致流程在分析Dubbo 的服务调用过程前我们先来思考一下如果让我们自己实现的话一次调用过程需要经历哪些步骤?首先我们已经知晓了远程服务的地址,然后我们要做的就是把我们要调用的方法具体信息告知远程服务,让远程服务解析这些信息。然后根据这些信息找到对应的实现类,然后进行调用,调用完了之后再原路返回,然后客户端解析响应再返回即可。调用具体的信息那客户端告知服务端的具体信息应该包含哪些呢?首先客户端肯定要告知要调用是服务端的哪个接口,当然还需要方法名、方法的参数类型、方法的参数值,还有可能原创 2021-08-24 18:54:57 · 266 阅读 · 0 评论 -
Spring Security
什么是Spring SecuritySpring Security 是基于Spring AOP和Servlet过滤器的安全框架,它提供全面的安全解决方案,同时在Web请求级别和方法调用级别处理身份确认和授权Spring Security 核心功能1、认证(你是谁,用户/设备/系统)2、验证(你能干什么,也叫权限控制/授权,允许执行的操作)3、攻击防护(防止伪造身份)Spring Security原理技术Filter、Servlet、Spring DI、Spring AOP常用的安全框架目前原创 2021-01-21 20:46:56 · 113 阅读 · 0 评论 -
消息队列之RibbitMQ
eeeee原创 2020-07-19 22:25:10 · 284 阅读 · 0 评论 -
Java实现链表的创建、删除、修改、查询以及用链表实现一个Stack、Quque
一、什么是链表链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,操作复杂。由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而线性表和顺序表相应的时间复杂度分别是O(lo原创 2020-06-22 05:07:19 · 175 阅读 · 0 评论 -
JWT与加密算法(RSA)实现Token以及Zuul实现鉴权
JWT1、简介JWT,全称json Web Token,是JSON风格轻量级的授权和身份认证规范可以实现无状态、分布式的Web应用授权;官网:https://jwt.io2、JWT数据格式:JWT包含三部分:Header :头部,通常头部有两部分信息Payload :载荷,就是有效数据,一般包含用户身份信息、注册声明Signature:签名是整个数据的认证信息。一般根据前两步的数据,再加上服务的秘钥(secret)3、JWT交互流程(1)用户登录(一般POST方式保证安全)(2)服务认原创 2020-06-19 22:05:32 · 942 阅读 · 0 评论 -
git相关命令
git将本地项目推送到远程仓库github提示:手动创建一个空项【my-pro-ui】目如何将本地项目my-pro-ui同步进来echo “# my-pro-ui” >> README.mdgit initgit add README.mdgit commit -m “first commit”git remote add origin git@github.com:Sha...原创 2020-01-16 10:01:33 · 410 阅读 · 0 评论 -
Java底层:JVM(五)
类的加载方式1.隐式加载:new2.显示加载:loadClass,forNameloadClass和forName的区别类的装载过程public class LoadDifference { public static void main(String[] args) throws ClassNotFoundException { ClassLoader cl ...原创 2019-10-28 21:10:40 · 77 阅读 · 0 评论 -
Java底层--JVM(一)
谈谈你对Java的理解?##平台无关性##GC##语言特点##面向对象##类库##异常处理Compile Once,Run Anywhere如何实现?##编译##运行G:\java\src>javap -help用法: javap <options> <classes>其中, 可能的选项包括: -help --help -? ...原创 2019-10-25 22:00:56 · 118 阅读 · 0 评论 -
SpringBoot 新手入门(一)
一.SpringBoot简介 SpringBoot简化了Spring框架开发中各种复杂配置,使开发者快速、敏捷的开发基于Spring框架的应用程序。 SpringBoot使用 “约定优于配置” 的思想来摆脱Spring对XML配置文件的依赖,同时又集成了大量的常用第三方库配置(如Redis,Mongo,Mail),在Spring Boot应用中这些第三方库几乎可以零配置的开箱即用,使开发者能...原创 2020-01-09 17:59:08 · 162 阅读 · 0 评论 -
SpringBoot 新手入门 (三)
一、SpringApplication的几种常用方式在之前的两篇SpringBoot 入门介绍中,都使用了在main方法中执行SpringApplication.run()这种方式来启动我们的工程// 方式一@SpringBootApplication public class Application { public static void main(String[] args...原创 2020-01-13 19:46:10 · 233 阅读 · 0 评论 -
SpringBoot 新手入门 (二)
一、SpringBoot常用注解 在上一篇文章中https://blog.csdn.net/hukehukehukehuke/article/details/103912822)引用了官方文档的入门例子,这个例子中只是告诉我们如何去快速上手SpringBoot,我们实际开发中,肯定不会在一个类中把所有业务处理包圆,通常会划分出Controller层、Service层、Dao层等。SpringB...原创 2020-01-10 19:15:09 · 114 阅读 · 0 评论 -
SpringBoot 新手入门(五)
一、SpringBoot的yml配置文件(1)SpringBoot的配置文件常用的有2种类型,.properties和.yml。默认情况下,SpringBoot会加载classpath或者classpath:/config下的application.properties或者a pplication.yml文件。.properties文件是我们常用的配置文件,.yml则是YAML文件...原创 2020-01-20 19:49:28 · 162 阅读 · 0 评论 -
JAVA中的Collection FrameWork(包括如何写自己的数据结构)------详解
Collection├List│├LinkedList│├ArrayList│└Vector│ └Stack└SetMap├Hashtable├HashMap└WeakHashMapCollection接口Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接继承自Collection的类,Java S原创 2020-05-12 23:32:15 · 460 阅读 · 0 评论 -
Java基础---abstract class、interface 、extends、implements
在Java语言中,abstract class 和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于abstract class和interface的选择显得比较随意。abstract class 和 interface 在Java语言中都是用来进行抽象类定义的1.abstract clas原创 2020-05-13 23:22:15 · 1772 阅读 · 0 评论 -
SpringBoot下Redis的操作并连接Redis
1、pom.xml文件导入依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.3.RELEASE</version> </parent> <dependency>原创 2020-05-18 18:59:04 · 310 阅读 · 0 评论 -
SpringBoot 新手入门(四)
SpringBoot外部配置属性值的方式有很多种,SpringBoot为这多种配置方式指定了优先级,在属性相同的情况下,优先级高的配置方式会覆盖优先级低的配置方式。当然,如果属性不相同,则这些配置方式中的属性值都会被加载。 SpringBoot官方文档指明了这多种配置方式的优先级,按照从高到低排序如下:(1)如果使用了Devtools,则优先级最高的是在home目录下指定的Devtools全局...原创 2020-01-19 19:21:43 · 118 阅读 · 0 评论 -
基于maven构建的SSM架构的基本环境搭建
基于maven构建的SSM架构的基本环境搭建 *开发工具 ---------------------idea整体工程结构:父工程搭建:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" ...原创 2019-09-05 14:16:21 · 242 阅读 · 0 评论 -
SQL按照时间统计相关查询
-- 统计 select count(*) as '当天记录数' from web_product where date(p_createtime) = curdate();select count(*) as '当天记录数' from web_product where to_days(p_createtime) = to_days(now()); SELECT count(*) a...原创 2020-04-09 23:43:20 · 341 阅读 · 0 评论 -
SpringCloud(一)Eureka
1、SpringCloud将诸多流行的技术整合在一起,实现了诸如:配置管理、服务发现、智能路由、负载均衡、熔断器、控制总线、集群状态等等功能。其主要涉及的组件包括(1)Eureka:服务治理组件,包含服务注册中心,服务注册与发现机制的实现(2)Zuul:网关组件,提供智能路由,访问过滤功能(3)Ribbon:客户端负载均衡的服务调用组件(负载均衡)(4)Feign:服务调用,给与Ribbon和Hystrix的声明式服务调用组件(声明式服务调用)(5)Hystrix:容错管理组件,实现断路由模式,帮原创 2020-05-21 17:57:07 · 97 阅读 · 0 评论 -
线程的实现方式
1、多线程随机打印结果2、多线程方法的内存图解3、Thread类获取线程名称的两种方式4、创建线程的第二种方式Runnable5、Thread和Runnable接口的区别6、匿名内部类实现线程创建7、线程安全问题8、解决线程安全问题9、并发与并行...原创 2020-05-19 01:48:08 · 164 阅读 · 0 评论 -
Java IO知识点及其NIO优势
概览Java 的 I/O 大概可以分成以下几类:磁盘操作:File字节操作:InputStream 和 OutputStream字符操作:Reader 和 Writer对象操作:Serializable网络操作:Socket新的输入/输出:NIO磁盘操作File 类可以用于表示文件和目录的信息,但是它不表示文件的内容。递归地列出一个目录下所有文件:字节操作实现文件复制字符操作编码与解码编码就是把字符转换为字节,而解码是把字节重新组合成字符。如果编码和解码过程使用不同的编原创 2020-05-08 23:56:49 · 226 阅读 · 0 评论 -
新手学习Lambda表达式案例
1、用Lambda表达式实现Runnable接口public class test1 { public static void main(String[] args) { new Thread(new Runnable() { public void run() { System.out.println("JDK8之前 代码比较多 做事儿少"); } }).sta...原创 2020-04-22 00:09:00 · 132 阅读 · 0 评论 -
Mysql之慢查询日志、SQL、索引、配置、分库、分表优化
1、数据库优化的目的2、可以从哪几个方面进行数据库优化原创 2020-05-27 01:23:25 · 275 阅读 · 0 评论 -
集合相关数据结构、栈、队列、数组、链表、红黑树
一、栈栈 :stack又称堆栈,它是运算受限的线性表,其限制是仅仅允许在栈的一端进行插入和删除操作,不允许在其他任何位置进行添加、查找、删除等操作先进后出:如:子弹压进弹夹 栈的入口、出口都是在栈的顶端位置二、队列队列:queue 简称队,它同堆栈一样,是一种受限制的线性表,其限制仅允许在表的一端进行插入,而在另一端进行删除先进先出、对垒的入口出口各自占一侧三、数组数组 :Array 是有序的元素序列,数组是在内存中开辟的一段连续的空间,并在此空间存放元素。就像一排出租屋,有以100个房间原创 2020-06-15 07:33:12 · 145 阅读 · 0 评论 -
RibbitMQ
一、消息队列1、什么是消息队列,即MQ,Message QueueMQ全称为MQ,Message Queue消息队列(MQ)是一种应用程序得通信方法,应用程序通过读写出入队列得消息来通信,而无需要专用得连接来链接他们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常用于诸如远程过程调用技术。排队指的是应用程序通过队列来存储通信,队列得使用除去了接受和发送应用程序同时执行的要求消息队列是典型的:生产者、消费者模型。生产者不断向消息队列中生产消息,消费者的从原创 2020-06-15 05:01:27 · 245 阅读 · 1 评论 -
Collection、List、Set、Map集合及泛型
一、Collection集合集合 : 集合是java中提供的一种容器,可以用来存储多个数据。数组和集合都是容器,它们的区别(1)数组长度是固定的,集合长度是可变的(2)数组中存储的都是同一类型元素,可以存储基本数据类型值。集合存储的都是对象,而且对象的类型可以不一致,在开发中一般当对象多的时候,使用集合进行存储集合框架集合按照其存储结构可以分为两大类,分别是单列集合java.util.Collection和双列集合java.util.MapCollection:单列集合的根接口,用于存储一系列原创 2020-06-13 05:53:38 · 535 阅读 · 1 评论 -
Linux基础知识及相关命令
一、Linux简介1、LinuxOS体系结构----LinuxOS类似UNIX OS----内核 : 模块化管理----Shell: 用户与内核之间交互的一个接口----应用工具:编辑器、过滤器2、软件模式开源软件(Open Source):软件发布,并公布源代码闭源软件(Close Source):仅推出可执行的二进制程序免费软件(Freeware):共享软件(Shareware):商业软件(Commercial Software):由开发者出售拷贝并提供软件技术服务,用户只有使用权原创 2020-06-12 20:45:47 · 1297 阅读 · 0 评论 -
Mysql基本知识、语法及操作
一、数据库的概念1、数据库的英文单词:DataBase 简称 :DB2、什么是数据库?----用于存储和管理数据的仓库3、数据库的特点:—持久化存储数据的(相当于一个文件系统)—方便存储和管理数据—使用了同一方式操作数据库(SQL)待更新...原创 2020-06-10 02:27:57 · 199 阅读 · 0 评论 -
Redis基本知识、语法及相关操作
一、Redis初识1、Redis是什么—开源—多种数据结构—基于键值的存储服务器系统—高性能、功能丰富2、Redis的特性—速度快(10w OPS)Redis将数据存储在内存当中、C语言写的、单线程模式—持久化(断电数据不丢失)Redis所有数据保存在内存中,对数据的更新将异步地保存到磁盘上—多种数据结构BitMaps(位图)、HyperLogLog(超小内存唯一值计数)GEO(地理信息定位)—功能丰富发布订阅、Lua脚本、事务、pipeline—简单不依赖外部库、单线程原创 2020-06-08 23:06:34 · 282 阅读 · 0 评论 -
Spring之AOP
1、什么是AOP2、AOP的相关术语3、基于XML的AOP实现(1)pom.xml导入jar包(2)bean.xml配置aop:config、aop:apect标签切入点execution表达式4、四种常用的通知类型及环绕通知前置通知aop:before、后置通知aop:after-returning、异常通知aop:after-throwing、最终通知aop:after、环绕通知aop:aroundaop:pointcut标签配置切入点表达式环绕通知(可以在代码中原创 2020-06-04 03:21:39 · 164 阅读 · 0 评论 -
JavaIO之字节流、字符流、缓冲流、转换流、序列化流、打印流
1、硬盘、内存与IO流的关系2、字节输出流OutputStream(java.lang.Object)子类ByteArrayOutputStream、FileOutputStream、FilterOutputStream、ObjectOutputStream、OutputStream、PipedOutputStream3、FileInputStream字节输入流写读取字节数据4、利用OutputStream、InputStream字节流实现文件复制**5、字符输入流Reader(java原创 2020-06-02 04:12:14 · 237 阅读 · 0 评论