自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

TheWayForDream

一个小白的见解

  • 博客(93)
  • 收藏
  • 关注

原创 SpringBoot系列---SpringBoot配置文件加载顺序

SpringBoot系列

2022-10-17 17:39:56 2356 1

原创 Spring系列---SpringBoot配置-profiles

SpringBoot学习

2022-10-17 17:01:47 440

原创 SpringBoot系列---application.yml配置文件

SpringBoot学习

2022-10-17 16:50:03 378

原创 JDK动态代理和CGLIB动态代理

了解动态代理的作用,以及如何使用动态代理,有助于理解Mybatis和Spring的AOP中如何使用的动态代理实现的

2022-07-26 19:50:32 200

原创 Java反射

Java基础知识中反射的作用,包括反射的原理,以及反射一般用来干嘛,它的使用场景有哪些地方,本博客都有很闲详细的说明

2022-07-26 14:19:22 105

原创 Netty框架之TCP粘包/半包解决方案

Netty框架之TCP粘包/半包解决方案一.TCP粘包二.TCP半包三.TCP粘包/半包解决方案1.FixedLengthFrameDecoder定长解析器2.LineBasedFrameDecoder行解析器3.LengthFieldBasedFrameDecoder谈到TCP粘包/半包的解决方案,我们不妨先认识造成TCP粘包/半包的原因有哪些,以便于更深刻理解解决方案的原理一.TCP粘包1.现象:发送:abc,def,接收:abcdef2.原因:应用层:接受数据的Bytebuf缓冲区设置太大

2022-05-03 18:25:26 1537

原创 Netty框架之Pipeline中InboundHandler和OutboundHandler的执行顺序

我们假设现在的Pipeline中的Handler执行器链是这样的:Pipeline->h1->h2->h3->h4->h5->h6->tail假设h1,h2,h3是ChannelInboudHadnler入栈处理器,h4,h5,h6是ChannelOutboundHandler出栈处理器那么Handler的执行顺序是h1->h2->h3->h6->h5->h4,先执行InboundHandler,再反从tail往前找执行Outbo

2022-05-01 17:49:43 806

原创 Netty框架之ChannelFuture和CloseFuture异步处理连接和断开

一.ChannelFuture异步处理连接请求1.说到异步处理,先从同步阻塞处理连接请求讲起public static void main(String[] args) { //bootstrap客户端启动器,启动客户端,绑定各个组件 Bootstrap bootstrap = new Bootstrap(); //设置NioEventLoopGroup作为Woker线程组处理IO读写请求,这里因为客户端不需要处理连接请求,所以不需要NioEventLoo

2022-05-01 12:19:26 2695

原创 Netty框架之Netty组件及其作用

Netty框架之Netty组件及其作用1.ServerBootStrap2.group(new NioEventLoopGroup())3.channel()4.ChildHandler和Handler5.ChannelPipeline说到Netty组件的作用,不得不从Netty的客户端或服务端创建流程分析,请看下面服务端的代码public static void main(String[] args) { //serverBootstrap,就是服务端启动器,启动服务端

2022-05-01 11:36:15 311

原创 Netty框架之网络通信入门程序~helloWorld

案例演示:创建客户端和服务端,实现客户端与服务端建立连接,并且发送消息给服务端Netty框架之网络通信入门程序~helloWorld1.服务端代码实现2.客户端代码实现请尝试阅读代码,并理解注释的含义1.服务端代码实现public class Server { public static void main(String[] args) { //serverBootstrap,就是服务端启动器,启动服务端,并且绑定组件 ServerBootstrap serv

2022-04-27 17:23:00 192

原创 Netty框架之多线程的Selector优化

Netty框架之多线程的Selector优化1.一个Boss线程,一个Woker线程实现服务器2.一个Boss线程,多个Woker线程实现服务器学习Selector之后,我们发现单个Selector轮询器在一个线程中既要处理连接事件(OP_ACCPET),又要处理IO读写事件(OP_READ,OP_WRITE),效率是很低的,所以利用多线程创建多个Selector分别负责连接事件,IO读写事件,充分利用电脑的CPU资源.那么这里我们就分类两个线程:1.Boss线程:专门负责OP_ACCPET事件,也就

2022-04-26 17:12:09 598

原创 Netty框架之Selector使用详解

谈到Selector的具体使用,那么就要结合BIO,NIO的知识讲解,Selector使用在非阻塞模式NIO场景下,学习NIO之前先要了解BIO原理,下面我们一步步讲解一.BIO(Blocking-IO)-阻塞IO模式先来看一下BIO下服务端的代码public static void main(String[] args) throws Exception { //创建服务端通道 ServerSocketChannel ssc = ServerSocketChannel

2022-04-25 15:16:34 1499 1

原创 ByteBuffer的原理和使用详解

ByteBuffer的原理和使用详解1.ByteBuffer的2种创建方式2.字符串转成ByteBuffer的3三种方式3.Bytebuffer的读写底层原理ByteBuffer是字节缓冲区,主要用户读取和缓存字节数据,多用于网络编程,Netty框架的重要知识点1.ByteBuffer的2种创建方式1.ByteBuffer buf = ByteBuffer.allocate(int size);方式1的buf缓冲区存储在堆内存中,内存开销在JVM中,受GC影响,会多拷贝一次,因为java程序收到的数

2022-04-24 17:02:37 2349 1

原创 Netty框架之Selector轮询器

Selector的原理详解1.传统多线程网络通信的服务器设计2.线程池版网络通信的服务器设计Selector版网络通信的服务器设计说到Selector的作用,我们不得不引入多线程网络通信的设计1.传统多线程网络通信的服务器设计服务器每建立一个客户端连接Socket,就会创建一个线程单独处理这个Socket中的IO请求(IO读写),那么这样当连接很多的时候,势必会造成线程资源不足的问题,浪费内存空间,且处理不同连接的IO请求时会频繁的切换线程,降低CPU的利用率缺点:1.浪费线程资源,消耗内存空间

2022-04-24 12:29:29 2052

原创 JVM类加载器ClassLoder加载流程,以及双亲委派机制(源码剖析,通俗易懂)

JVM类加载器概述从上图容易看出,类加载器就是把java程序生成的Class字节码文件的信息加载进JVM的一个类,每一个java类对象都对应着一个Class字节码文件,这些Class文件存储这java类对象的结构信息,通过类加载器把这些Class字节码文件转化为对应的class类对象,也就是java类对象->Class类对象的过程,这样的Class类才是能被虚拟机直接使用的Java类型类加载器的种类(主要是3种)1.启动类加载器(BootStrap)------------>加载路径

2022-01-08 11:12:55 490

原创 Java多线程与高并发基础篇,看这篇就够了(全是Gan货,Bao肝2天2夜终于写完啦)

Java多线程与高并发基础1.线程与进程的相关概念1.1 进程1.2 线程1.3 进程和线程的关系2.主线程和子线程2.1 主线程2.2 子线程2.3 子线程和主线程之间的关系3.串行,并发,并行3.1 串行3.2 并发3.3 并行3.4 串行,并发,并行的理解图4.线程的创建和启动4.1 线程的创建4.1.1 方法一:实现Runnable接口4.1.2 方法2:继承Thread类4.2 线程的启动5.线程的常用方法5.1 currentThread()方法获取当前线程5.2 setName()/getNa

2022-01-07 20:07:30 722

原创 JVM内存模型中的方法区

方法区概述方法区是JVM中的一个理想概念,它的实现是永久代和元空间,主要用来存放所有Class类信息,静态变量,以及常量等不依赖于对象而存在的数据,是只要定义好了就亘古不变的数据.方法区的实现方法区的实现有两个,Java8之前是永久代,Java8之后是元空间,永久代和元空间之间的区别是什么呢?为什么要从永久代升级为元空间呢?1.永久代(在JVM中):JDK8版本之前的实现,永久代,顾名思义是永久存在,不进行垃圾回收,数据一直在里面,但是永久代存在一个问题,也就是说永久代的内存大小是给定的,也就是M.

2022-01-03 18:06:26 456

原创 JVM中的堆空间详解,入门看这篇就够了

堆的简介堆是JVM虚拟机中最大的一块内存区域,它在JVM启动时被创建,主要用于存储实例对象的地址,堆的空间大小是可以在启动JVM前设置,是GC(垃圾回收机制)重点照顾的一块区域,会通过GC将堆中不需要的数据进行垃圾回收,以减少空间使用.堆的体系结构图堆空间逻辑上主要分为三大部分:1.新生代 2.老年代 3.方法区(持久代,元空间)新生代(Young generation)新生代占堆空间的1/3,而新手代又包括三个部分:1.Eden伊甸园 2.S0幸存者0区 3.S1幸存者1区这三个部分在新生

2022-01-03 17:33:01 1233

原创 JVM中的栈区域

一.栈:在JVM中也叫栈内存,主要负责java程序的运行,栈在线程创建时被创建,栈时线程私有的,也即每一个线程都有自己的栈空间,线程之间的运行不受影响,相互独立二.栈中存储的基本单位是栈帧,JVM只对栈帧进行进栈,出栈操作,栈帧中的数据它不管.三.栈帧在方法运行时被创建四.JVM栈图:由上图我们可以看出,栈帧存放的数据主要包括1.局部变量表:存放了方法参数,以及方法中局部变量的信息2.操作数栈3.运行时常量的引用:在一个class文件中,一个方法要调用其他方法,需要将这些方法的符号引用转化为

2022-01-02 14:31:02 1592

原创 JVM中的字符串常量池

JVM中的字符串常量池一.字符串常量池的简介二.字符串常量池的优缺点1.优点2.缺点三.字符串常量池的设计前提四.String对象的两种创建方式1.直接赋值方式,String s="XXX"2.new一个字符串对象五.案例分析一.字符串常量池的简介由于String是java开发中最常使用的引用类型之一,它和其他引用类型一样,在创建的时候是非常消耗空间的,于是为了程序提高性能以及减少内存开销,java设计者在JVM层面设计了字符串常量池二.字符串常量池的优缺点1.优点当我们创建一个字符串时,会首先去

2022-01-02 14:01:16 426 1

原创 Java的native方法作用和意义

java中的native方法1.native方法是java与其他语言协作的时候使用的,底层实现不是java(c,c++)2.native并不是java实现的,所以直接调用就好,不需要管他底层实现3.native方法实际上是java用于调用底层操作系统的方法,java只能调用,不能查看和修改4.java是跨平台语言,自然而然会失去对底层的控制,于是想要调用底层方法,就必须使用native方法间接调用底层操作系统的方法(c,c++实现)5.随着java的不断发展,native方法越来越少6.nati

2021-12-28 20:57:36 5773

原创 ThreadPool线程池用法及源码剖析

一.线程池用法1.Executors类用于创建线程池对象,线程池对象用ExecutorService接口接受2.这是API中Executors创建线程池的3大常用方法1.public static ExecutorService newFixedThreadPool(int nThreads)//一个线程池nThreads个工作线程,类似于一个银行nThreads个工作窗口2.public static ExecutorService newSingleThreadExecutor()//一个线程

2021-12-25 23:39:02 493

原创 更新Win10版本后,wifi图标不见了,并且连接不到wifi和宽带,以及点击网络和Internet闪退的情况

问题描述你们是不是遇到过这样的问题,更新系统前还好好的,更新之后wife图标不见了于是你尝试点击最右边的图标打开wife,如下图所示但是你发现没有任何可连接wife,就下面这样,甚至连下图的WLAN都没有,只有一个以太网于是你尝试点开 网络和internet设置,但发现出现闪退的情况,有可能也不闪退你死活连不上网络,无论是wife还是宽带,那多半就是和我情况一样的问题,下面就是解决方案解决方案步骤1.WIN+R 输入regedit步骤2.按照这样的顺序找到文件HKEY_LOC

2021-12-24 12:10:14 7837 7

原创 CountDownLatch的用法

CountDownLatch的用法1.CounDownLatch作用:2.CountDownLatch的使用:3.案例演示1.CounDownLatch作用:多线程工具类Countdownlatch的用法:特点:当我们需要 一个或多个线程 要等待其他线程执行完毕之后再执行时,就可以使用Countdownlatch工具类来完成2.CountDownLatch的使用:1.初始化CountDownLatch对象时,会传递一个整型参数count(计数器),这就是要在某些线程等待执行之前要执行的线程个数

2021-12-23 12:26:37 1024

原创 美团2021校招笔试-编程题(通用编程试题,第10场)

第一题:淘汰分数题意:某比赛已经进入了淘汰赛阶段,已知共有n名选手参与了此阶段比赛,他们的得分分别是a_1,a_2….a_n,小美作为比赛的裁判希望设定一个分数线m,使得所有分数大于m的选手晋级,其他人淘汰。但是为了保护粉丝脆弱的心脏,小美希望晋级和淘汰的人数均在[x,y]之间。显然这个m有可能是不存在的,也有可能存在多个m,如果不存在,请你输出-1,如果存在多个,请你输出符合条件的最低的分数线。思路:我们先对a数组从小到大排序首先我们讨论无解的情况:1.n-x<x 2.n-y>y(

2021-12-06 21:54:15 1659

原创 腾讯2020校园招聘笔试题解

第一题:小Q想要给他的朋友发送一个神秘字符串,但是他发现字符串的过于长了,于是小Q发明了一种压缩算法对字符串中重复的部分进行了压缩,对于字符串中连续的m个相同字符串S将会压缩为m|S(m为一个整数且1<=m<=100),例如字符串ABCABCABC将会被压缩为[3|ABC],现在小Q的同学收到了小Q发送过来的字符串,你能帮助他进行解压缩么?思路:这里直接dfs栈模拟即可#include<bits/stdc++.h>using namespace std;string str

2021-11-30 22:46:29 422

原创 Shiro缓存管理器的Ehcache.xml文件的配置及解析

<?xml version="1.0" encoding="UTF-8"?><ehcache updateCheck="false" dynamicConfig="false"><!--updateCheck是否根据数据库的更新同步更新缓存--> <diskStore path="C:\TEMP" /> <cache name="users" timeToLiveSeconds="300" maxEntriesLocalHeap

2021-11-28 22:02:23 843

原创 Shiro缓存管理器EhCacheManager的使用方法

Shiro缓存可以用来临时缓存权限信息,这样就不用每一次权限信息认证的时候都去数据库查询,可以打打提高效率1.ShiroConfig类中声明缓存管理器对象EhCacheManager2.给DefaultWebSecurityManager安全管理器对象注入EhCacheManager@Configuration//替代xml文件public class ShiroConfiguration {//缓存管理对象 @Bean public EhCacheManager getEhCac

2021-11-28 22:01:58 1955

原创 牛客 矩阵(二分+二维字符串hash)

分析:这道题就是一道二维字符串hash的模板题,学习下二维字符串hash,将图中的每一个子矩阵的hash值预处理出来,然后用二分答案去判断是否存在两个hash值相同的正方形即可.这里直接给出二维字符串hash计算模板一维hash是把一个字符串用一个整数表示,二维hash是把一个矩阵用一个整数表示。void init(){ p1[0] = p2[0] = 1; for(int i=1;i<505;i++){ p1[i] = p1[i-1]*base1; p2[i] = p2[i-1]

2021-11-16 17:58:09 360

原创 Java基础之25个重要关键字总结+实例讲解

Java基础之50个关键字总结Java关键字总结一.控制访问1.private:私有模式2.Default:默认模式(不声明任何访问控制的时候)3.protected:受保护模式4.public:公用模式二.8个Java基本类型5.int(整型32位)6.long(长整型64位)7.float(单精度浮点型32位)8.double(双精度浮点型64位)9.char(字符型16位)10.short(短整型16位)11.boolean(布尔型8位)12.byte(字节型8位,占一个字节)三.程序逻辑13.Con

2021-11-12 10:51:44 1660

原创 Codeforces E. Gold Transfer

原题链接http://codeforces.com/contest/1535/problem/E题意:一开始只有一个0号根节点节点,并且告诉你a0,c0a_{0},c_{0}a0​,c0​表示0号节点上面的金块个数以及单个金块的价格,现在有q次操作操作1:给你pi,ai,cip_{i},a_{i},c_{i}pi​,ai​,ci​,新的i号节点加入到pi节点的儿子节点,i号节点上面有ai个金块,以及每个金块的价格ci(保证ci>cpic_{i}>c_{pi}ci​>cpi​)操作2

2021-10-13 18:57:05 100

原创 Spring事务和Aspects框架管理事务,看这篇就够了!(简单易懂!)

数据库事务概念详解和Spring管理事务的用法一.事务的介绍1.1什么是事务1.2事务的四大特性二.事务的隔离级别以及导致的问题介绍2.1隔离级别介绍2.2导致的问题介绍2.2.1脏读2.2.2不可重复读2.2.3幻读2.2.4串行话读三.事务的传播行为三Spring管理事务3.1使用Spring的事务注解管理事务(掌握)3.1.1Spring的事务注解管理事务的特点3.1.2实现步骤3.2使用AspectJ的AOP配置管理事务(掌握)3.2.1AspectJ的AOP配置管理事务的特点3.1.2实现步骤四.

2021-10-06 15:28:36 3539

原创 Mybatis通用mapper.xml和mybatis-config.xml模板

Mybatis通用mapper.xml和mybatis-config.xml模板1.步骤2.模板代码1.mapper.xml2.mybatis-config.xml(mybatis的主配置文件)1.步骤1.点击Settings2.找到Editor编辑中的File and Code Templates3.点击+号4.输入文件名和文件类型(xml),把模板代码复制进去点击apply应用即可2.模板代码1.mapper.xml<?xml version="1.0" encoding=

2021-10-04 22:52:49 270

原创 Spring~浅谈IoC&DI的用法和理解(简单易懂!)

浅谈IoC&DI的用法和理解一.IoC的介绍以及作用1.1IoC的概述1.2IoC的作用二.IoC思想的技术实现(DI)2.1DI的概述2.2DI的作用2.3基于xml的DI实现2.3.0Spring的配置文件2.3.1set注入2.3.2构造注入2.3.3引用类型的自动注入(autowire参数)2.4基于注解的DI实现2.4.1使用注解实现DI的前置准备2.4.2Spring创建对象的注解2.4.3简单类型属性的赋值2.4.4引用类型属性的赋值一.IoC的介绍以及作用1.1IoC的概述I

2021-09-29 22:42:27 504

原创 Educational Codeforces Round 112 (Rated for Div. 2)(部分题解!)

A. PizzaForcesA. PizzaForces题意:易懂,略思路:简单贪心即可,把n分成这样的形式n=10+x+10y,那么10y个人用y个large蛋糕,剩下的10+x用三种蛋糕组合 看哪个最省时间AC_code:#include<bits/stdc++.h>using namespace std;typedef long long ll;int main(){ int t; cin>>t; while(t--){ ll n; cin&g

2021-09-15 22:18:00 133

原创 Codeforces Round #738 (Div. 2) 题解

Codeforces Round #738 Div. 2 题解A.Mocha and MathB. Mocha and Red and BlueC - Mocha and HikingD1. Mocha and Diana (Easy Version)D2. Mocha and Diana (Hard Version)A.Mocha and MathA.Mocha and Math题目大意:略思路:首先一个数和另一个数做&操作结果不会变大,那么我们对于每一个aia_iai​直接让它异或整个序

2021-09-14 18:26:19 118

原创 2017ICPC西安现场赛 XOR(线段树合并线性基)

题目链接:https://nanti.jisuanke.com/t/A1607题目大意 :给你长度为n的序列,以及一个数k,有q次询问,每一次询问给你一个区间[L,R],然后你可以在区间内取任意多个数(每个数只能去一次),异或这些数得到一个值val,使得k|val的最值大,输出这个最大值分析:或(|)操作,我们知道对应二进制为只要有一个1,结果就为1,所以我们让k|val最大,必须把k的高位0尽可能变为1,那么我们对k的二进制位取反得到一个数x,也变成了我们尽可能保留x的高位1,所以我们把原序列的所有数

2021-07-21 18:06:23 175

原创 点分治超详细分析+视频讲解+题目大全(不再为点分治而烦恼)!

点分治超详细分析+视频讲解+题目大全(不再为点分治而烦恼!一.点分治原理分析及应用二.点分治视频讲解视频链接三.点分治练习题1.P3806 【模板】点分治12.P2634 [国家集训队3.P4149 [IOI2011]Race4.CF161D Distance in Tree5.P4178 Tree一.点分治原理分析及应用二.点分治视频讲解视频链接https://www.bilibili.com/video/BV1PE41197md?p=1三.点分治练习题1.P3806 【模

2021-07-16 18:33:31 243

原创 树链剖分题目大集

树链剖分题目大集如果还没学树链剖分的伙伴可以跳转到下面的博客1.模板题 P3384 【模板】轻重链剖分/树链剖分2.洛谷-P3379 【模板】最近公共祖先(LCA)(强行用树剖写LCA)3.洛谷-P2590 [ZJOI2008]树的统计4.P3038 [USACO11DEC]Grass Planting G5.P3178 [HAOI2015]树上操作6.树链剖分+线段树 2019ICPC西安邀请赛E7.HDU - 5052树链剖分主要是解决对于树上路径的修改和查询操作,常常结合线段树来出题,使用线段树维护

2021-07-11 15:23:06 388

原创 2019ICPC西安邀请赛E题,线段树+述链剖分+nim博弈

Treehttps://nanti.jisuanke.com/t/39272题意:给你一颗树,结点权值告诉你,你有如下三种操作1 s t 修改从1到s的路径上的所有点,a[i]=a[i]|t2 s t 修改从1到s的路径上的所有点,a[i]=a[i]&t3 s t 询问将1到s的路径上的所有点作为石头堆,再加上一个个数为t的石头堆,进行一次尼姆(nim)博弈,先手胜利输出YES,否则输出NO前置知识:nim博弈先手的必胜条件为,n堆石头的异或和不为0,也即a[1] ^ a[2] ^a[

2021-07-08 19:24:20 151

空空如也

空空如也

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

TA关注的人

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