- 博客(96)
- 资源 (4)
- 收藏
- 关注
原创 Ribbon负载均衡
Ribbon是微服务架构中,可以作为负载均衡的技术实现,如下图所示Ribbon负载均衡Ribbon负载均衡策略RoundRobinRule:简单轮询服务列表来选择服务器。它是Ribbon默认的负载均衡规则。可以由客户端的 < clientName > . < clientConfigNameSpace > . ActiveConnectionsLimit属性进行配置。修改负载均衡策略2、配置文件修改:服务名.ribbon.NFLoadBalancerRuleClassName,此配置是针对配置的服务名指
2022-12-08 00:06:29
451
原创 Nacos基本使用
Nacos是微服务架构中,可以作为注册中心或者配置中心的技术实现,如下图所示服务提供者:一次业务中,暴露接口给其它微服务调用,被其它微服务调用的服务。(提供接口给其它微服务)服务消费者:一次业务中,调用其它微服务的服务。(调用其它微服务提供的接口)提供者与消费者角色其实是相对的,一个服务可以同时是服务提供者和服务消费者服务提供者在向注册中心注册时,可以选择实例类型,若为临时实例,则主动向注册中心发送心跳续约,失效时被中心剔除;若为非临时实例,则注册中心主动向该实例发送心跳探测,失效时不会被中心剔除。若
2022-12-08 00:00:03
735
原创 Erueka基本使用
Erueka是微服务架构中,可以作为注册中心的技术实现,如下图所示服务提供者:一次业务中,暴露接口给其它微服务调用,被其它微服务调用的服务。(提供接口给其它微服务)服务消费者:一次业务中,调用其它微服务的服务。(调用其它微服务提供的接口)提供者与消费者角色其实是相对的,一个服务可以同时是服务提供者和服务消费者Eureka注册中心:服务提供者定时向注册中心发送心跳续约Eureka服务中心搭建:1、引入起步依赖(服务端)2、添加注解3、配置文件配置信息Eureka服务提供者搭建:1、引入起步依赖(客户
2022-12-07 23:41:13
502
原创 十四、SpringBoot-自动装配原理
SpringBoot与Spring比较起来,优化的点主要有:SpringBoot不能直接从jar包或者其他项目中获取Bean,可以通过以下方式获取SpringBoot项目当我们想使用某个非自定义Bean时,通常只需要@Bean就能获取,不用再特殊引入依赖或者指定Bean,这就是用到了SpringBoot的自动配置,它的的实现就用到了几个重要的注解:假设现在项目A引用了依赖B,需要获取通过自定义@Enable获取到依赖B中的Bean信息依赖B中的Bean信息有一个为User的类对应的有一个UserConfi
2022-12-07 22:56:43
343
原创 Java Spring Bean的生命周期 三级缓存
是从 Bean 实例化之后(即通过反射创建出对象之后),到Bean成为一个完整对象,最终存储到单例池中,这个过程被称为Spring Bean的生命周期。为了解决循环依赖的问题,Spring提供了。来存储不同初始化完成度的Bean实例。还是上述的问题,有了三级缓存就能解决。
2022-11-25 14:52:30
1806
原创 Java Spring后处理器
是Spring对外开放的重要扩展点,允许我们介入到Bean的整个实例化流程中来,以达到动态注册BeanDefinition,动态修改BeanDefinition,以及动态修改Bean的作用。BeanBeanDefintion到beanBeanDefintionMap中去,注册功能可以理解注解的实现,工厂后处理器去遍历带上注解的类,让后将其进行注册。的Map集合中去,那么除了直接将类信息配置的方式外,还有别的方式可以对想要交给Spring管理的类进行针对性处理封装,这里就可以使用到Spring的后处理器。
2022-11-24 16:13:26
889
原创 Java Spring Bean的实例化
Spring框架会取出beanDefinitionMap中的每个BeanDefinition信息,反射构造方法或调用指定的工厂方法生成Bean实例对象,所以只要将BeanDefinition注册到beanDefinitionMap这个Map中,Spring就会进行对应的Bean的实例化操作。:单例,默认值,Spring容器创建时进行Bean的实例化,存到Spring容器内部的singletonObjects单例池中,每次getBean都是从单例池中获取相同的Bean实例。
2022-11-23 16:13:25
547
原创 Java Spring-AOP动态代理-JDK和CGlib实现
代理增强的方法和Bean本身的方法当作一个切面,是对面向对象编程OOP的升华。OOP是纵向对一个事物的抽象,一个对象包括静态的属性信息,包括动态的方法信息等。而AOP是横向的对不同事物的抽象,属性与属性、方法与方法、对象与对象都可以组成一个切面,而用这种思维去设计编程的方式叫做。思想,我们会new一个筷子对象,new一个手机对象,然后先调用 chopsticks.pickUp() ,再调用 phone.user()。编码是为了解决生活中的问题,譬如现在我想用筷子吃饭的时候看手机,那么首先会有两个对象。
2022-11-18 17:04:01
1494
原创 双色球大乐透随机实现
每次抱着一夜暴富的梦想去买彩票,懒得自己选号,又不放心彩票店机选机制,那不如自己随机,中不了也没法抱怨,兄弟们,等我中奖的好消息吧
2022-09-07 14:09:28
1300
原创 Java 锁
Java 锁本篇文章主要介绍 乐观锁、悲观锁、自旋锁、同步锁、ReentrantLock、信号量、可重入锁(递归锁)、公平锁/非公平锁、读写锁、共享锁/独占锁、重量级锁/轻量级锁、偏向锁乐观锁乐观锁是一种乐观思想,即认为读多写少,遇到并发写的可能性低,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,采取在写时先读出当前版本号,然后加锁操作(比较跟上一次的版本号,如果一样则更新),如果失败则要重复读-比较-写的操作。java 中的乐观锁基
2022-03-28 19:59:32
265
原创 Java CAS
Java 锁本篇文章主要介绍三类:悲观锁、乐观锁、自旋锁首先引入一个CAS的概念,它是一种更新的原子操作。原子操作类指的java.util.concurrent.atomic包下,一系列以Atomic开头的包装类。如AtomicBoolean,AtomicInteger,AtomicLong。它们分别用于Boolean,Integer,Long类型的原子性操作。以AtomicInteger为例,有提供以下方法:public final int get() //获取当前的值public final
2022-03-28 14:21:28
1189
原创 Java 线程池
Java 线程池Java 里面线程池的顶级接口是 Executor,但是严格意义上讲 Executor 并不是一个线程池,而只是一个执行线程的工具。真正的线程池接口是 ExecutorService。以一个实例来引出线程池,实现线程的方式除了继承Thread、实现Runnable外,还有一种实现Callable的接口,实现Callable可以接收返回值。CallableTestpublic class CallableTest implements Callable { private i
2022-03-25 14:28:28
155
原创 Java 集合
Java 集合集合类存放于 Java.util 包中,主要有 3 种:set(集)、list(列表包含 Queue)和 map(映射)。Colleciton:Collection是集合List、Set、Queue的基本接口。Map:映射表的基本接口。Iterator:迭代器,可遍历集合中的元素。Collection和Collections有什么区别:Collection是JDK中集合层次结构中的最根本的接口,定义了集合类的基本方法。Collections是一个包装类。它包含有各种有关集合
2022-03-24 15:45:47
772
原创 Java IO/NIO模型
Java IO/NIOJava的IO有5种模型:阻塞IO模型、非阻塞IO模型、多路复用IO模型、信号驱动IO模型、异步IO模型阻塞IO模型:最传统的一种IO模型,即在读写数据过程中会发生阻塞现象。当用户线程发出IO请求之后,内核会去查看数据是否就绪,如果没有就绪就会等待数据就绪,而用户线程就会处于阻塞状态,用户线程交出CPU。当数据就绪之后,内核会将数据拷贝到用户线程,并返回结果给用户线程,用户线程才解除block状态。如果数据没有就绪,就会一直阻塞在read方法 while(true) d
2022-03-24 13:57:55
154
原创 Java 类的加载过程
Java 类的加载过程当程序主动使用某个类时,如果该类还没有加载到内存中,则通过以下三个步骤对类进行加载初始化:类的加载:将类的class文件读入内存,并为之创建一个java.lang.Class对象到方法区中,此过程由类加载器完成类的链接:将类的二进制数据合并到JRE中类的初始化:JVM负责对类进行初始化其中,类的链接可以分为以下几点:验证:确保加载的类符合JVM规范准备:正式为类变量(static)分配内存并设置类变量默认初始值的阶段,这些内存都将在方法区中进行分配解析:虚拟机常量
2022-03-18 16:30:51
3843
原创 Java 反射
Java 反射首先区分下动态语言和静态语言的概念:动态语言:在运行时确定数据类型的语言。变量使用之前不需要类型声明,通常变量的类型是被赋值的那个值的类型;例如:C#,PHP,Python等静态语言:在编译时变量的数据类型即可确定的语言,多数静态类型语言要求在使用变量之前必须声明数据类型;例如:Java,C等反射概念:允许程序在执行期间借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。通过反射机制,可以使Java获得类似动态语言的特性一个类在内存中只有一个
2022-03-17 14:12:43
396
原创 Java 注解
Java 注解作用:对程序作出解释,可以被其他程序读取格式:以@符号开头,部分注解含有参数内置注解:@Override-重写@Deprecated-不推荐使用@SuppressWarnings-镇压警告,取值有all, unchecked, deprecation等元注解:负责解释其他注解的注解@Target-描述注解使用范围,取值有TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE等@Retention-描述注解生命周期
2022-01-20 21:09:36
327
原创 快速排序算法
快速排序算法快速排序算法: 快速排序的原理:选择一个关键值作为基准值。比基准值小的都在左边序列(一般是无序的),比基准值大的都在右边(一般是无序的)。一般选择序列的第一个元素。一次循环:从后往前比较,用基准值和最后一个值比较,如果比基准值小的交换位置,如果没有继续比较下一个,直到找到第一个比基准值小的值才交换。找到这个值之后,又从前往后开始比较,如果有比基准值大的,交换位置,如果没有继续比较下一个,直到找到第一个比基准值大的值才交换。直到从前往后的比较索引>从后往前比较的索引,结束第一次循环,此时
2021-12-28 20:41:35
93
原创 插入排序算法
插入排序算法插入排序算法: 通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应的位置并插入。如果输入数组已经是排好序的话,插入排序出现最佳情况,其运行时间是输入规模的一个线性函数。如果输入数组是逆序排列的,将出现最坏情况。平均情况与最坏情况一样,其时间代价是(n2)。 List<Integer> list2 = new ArrayList<Integer>(); list2.add(8); list2.add(7); list2.add(10);
2021-12-28 20:39:56
73
原创 冒泡排序算法
冒泡排序算法冒泡排序算法:比较前后相邻的二个数据,如果前面数据大于后面的数据,就将这二个数据交换。这样对数组的第 0 个数据到 N-1 个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1 个位置。N=N-1,如果 N 不为 0 就重复前面二步,否则排序完成。实例: List<Integer> list2 = new ArrayList<Integer>(); list2.add(8); list2.add(7); list2.add(10);
2021-12-28 20:35:23
134
原创 二分查找算法
二分查找算法二分查找: 又叫折半查找,要求待查找的序列有序。每次取中间位置的值与待查关键字比较,如果中间位置的值比待查关键字大,则在前半部分循环这个查找的过程,如果中间位置的值比待查关键字小,则在后半部分循环这个查找的过程。直到查找到了为止,否则序列中没有待查的关键字。实例: List<Integer> list1 = new ArrayList<Integer>(); list1.add(1); list1.add(3); list1.add(5); lis
2021-12-28 20:29:28
231
原创 Java IO流
Java IO流四大抽象类:InputStream/OutputStream,Reader/Writer流的划分:输入流:InputStream/Reader;输出流:OutputStream/Writer字节流:InputStream/OutputStream;字符流:Reader/Writer节点流:基本流对象;包装流:操作基本流对象的流(例如BufferedInputStream)特殊流:InputStreamReader/OutputStreamWriter,将字节流对象转换为字符流
2021-12-28 14:17:01
237
原创 Java JVM区域划分、运行时内存、GC
Java JVM基本概念:存在于操作系统之上的运行Java代码的虚拟计算机基本划分:程序计数器/PC寄存器、虚拟机栈、本地方法栈、方法区、堆、直接内存线程私有区域包含(即生命周期与线程相同,依赖用户线程的启动/结束,而创建/销毁JVM内):程序计数器/PC寄存器、虚拟机栈、本地方法栈线程共享区域包含(即随虚拟机的启动/关闭而创建/销毁):方法区、堆直接内存并不是 JVM 运行时数据区的一部分,但也会被频繁的使用,不受JVM GC管理程序计数器/PC寄存器:指向虚拟机字节码指令的位置虚拟机栈:在
2021-12-21 12:00:16
824
原创 十三、SpringBoot-集成Redis
此处提供IDEA-SpringBoot-总目录链接,可查看整个项目过程其他步骤文章:点击此处跳转至总目录链接此处提供IDEA-SpringBoot-总目录链接,可查看整个项目过程其他步骤文章:点击此处跳转至总目录链接此处提供IDEA-SpringBoot-总目录链接,可查看整个项目过程其他步骤文章:点击此处跳转至总目录链接十三、SpringBoot-集成Redis案例基础可看上一篇博客,在基础上进行修改...
2021-11-10 16:49:29
637
原创 十二、SpringBoot-集成SpringMVC的常见注解
此处提供IDEA-SpringBoot-总目录链接,可查看整个项目过程其他步骤文章:点击此处跳转至总目录链接此处提供IDEA-SpringBoot-总目录链接,可查看整个项目过程其他步骤文章:点击此处跳转至总目录链接此处提供IDEA-SpringBoot-总目录链接,可查看整个项目过程其他步骤文章:点击此处跳转至总目录链接十二、SpringBoot-集成SpringMVC的常见注解Spring Boot 下的 Spring MVC 和之前的 Spring MVC 使用是完全一样的,主要有以下注解
2021-11-10 15:03:41
319
原创 十一、SpringBoot-支持事务
此处提供IDEA-SpringBoot-总目录链接,可查看整个项目过程其他步骤文章:点击此处跳转至总目录链接此处提供IDEA-SpringBoot-总目录链接,可查看整个项目过程其他步骤文章:点击此处跳转至总目录链接此处提供IDEA-SpringBoot-总目录链接,可查看整个项目过程其他步骤文章:点击此处跳转至总目录链接十、SpringBoot-支持事务Spring Boot 使用事务非常简单,底层依然采用的是 Spring 本身提供的事务管理,案例基础可看上一篇博客,在基础上进行修改测试目标:
2021-11-10 14:34:56
175
原创 十、SpringBoot-集成MyBatis
此处提供IDEA-SpringBoot-总目录链接,可查看整个项目过程其他步骤文章:点击此处跳转至总目录链接此处提供IDEA-SpringBoot-总目录链接,可查看整个项目过程其他步骤文章:点击此处跳转至总目录链接此处提供IDEA-SpringBoot-总目录链接,可查看整个项目过程其他步骤文章:点击此处跳转至总目录链接十、SpringBoot-集成MyBatis处理思路及开发流程如下:目标:快速实现查询数据库中某张表数据引用依赖,创建虚拟库配置Generator生成工具环境使用Gene
2021-11-10 13:41:04
704
原创 九、SpringBoot-集成jsp
此处提供IDEA-SpringBoot-总目录链接,可查看整个项目过程其他步骤文章:点击此处跳转至总目录链接此处提供IDEA-SpringBoot-总目录链接,可查看整个项目过程其他步骤文章:点击此处跳转至总目录链接此处提供IDEA-SpringBoot-总目录链接,可查看整个项目过程其他步骤文章:点击此处跳转至总目录链接九、SpringBoot-集成jsp...
2021-11-09 15:08:56
308
原创 数据库笔记
数据库笔记数据库用户拷贝create or replace directory data as '/home/oracle';grant read,write on directory data to ibps;expdp ibps/ibps directory=data dumpfile=ibps.DMP logfile=ibps.log schemas=ibpsgrant connect to ibps5;grant resource to ibps5;grant dba to ibps
2021-11-08 18:37:12
544
原创 八、SpringBoot-从配置文件获取参数映射到对象中
此处提供IDEA-SpringBoot-总目录链接,可查看整个项目过程其他步骤文章:点击此处跳转至总目录链接此处提供IDEA-SpringBoot-总目录链接,可查看整个项目过程其他步骤文章:点击此处跳转至总目录链接此处提供IDEA-SpringBoot-总目录链接,可查看整个项目过程其他步骤文章:点击此处跳转至总目录链接八、SpringBoot-从配置文件获取参数映射到对象中如果我们需要从application.properties中获取多个自定义参数值并映射成对象的时候,可以使用@Configu
2021-11-06 13:48:53
574
原创 七、SpringBoot-从配置文件获取单个自定义参数值
此处提供IDEA-SpringBoot-总目录链接,可查看整个项目过程其他步骤文章:点击此处跳转至总目录链接此处提供IDEA-SpringBoot-总目录链接,可查看整个项目过程其他步骤文章:点击此处跳转至总目录链接此处提供IDEA-SpringBoot-总目录链接,可查看整个项目过程其他步骤文章:点击此处跳转至总目录链接七、SpringBoot-从配置文件获取单个自定义参数如果我们需要从application.properties中获取单个自定义参数值的时候,可以使用@Value("${参数名}"
2021-11-06 13:38:29
194
原创 MQ笔记笔记
MQ笔记操作命令:目标命令查看版本dspmqver显示运行的队列管理器dspmq进入队列管理器runmqsc 队列管理器名启动队列管理器strmqm 队列管理器名停止队列管理器endmqm 队列管理器名删除队列管理器dltmqm 队列管理器名查看通道状态dis chs(*)查看所有通道dis chl(*)查看所有队列dis queue(*)清除队列堵塞消息CLEAR QLOCAL(队列名)查看队列占用情况
2021-11-05 17:49:33
979
原创 Linux 笔记
Linux 笔记操作命令:目标命令查看内存free -m [ -h ]清除缓存echo 3 >/proc/sys/vm/drop_caches查看CPU个数cat /proc/cpuinfo | grep "physical id" | wc -l查找内容grep -lr "XXXXXX" *查找文件find -name ./ XXXXXX查看硬盘空间df -h查看当前目录下大小du -sh查看内存netstat -an
2021-11-05 17:41:27
755
原创 六、SpringBoot-application.properties多环境配置
此处提供IDEA-SpringBoot-总目录链接,可查看整个项目过程其他步骤文章:点击此处跳转至总目录链接此处提供IDEA-SpringBoot-总目录链接,可查看整个项目过程其他步骤文章:点击此处跳转至总目录链接此处提供IDEA-SpringBoot-总目录链接,可查看整个项目过程其他步骤文章:点击此处跳转至总目录链接六、IDEA-SpringBoot-多环境application.properties配置当项目开发时,拥有多套环境,比如DEV-开发,SIT-测试,UAT-联调,BVT-准生产等
2021-11-05 17:20:19
1588
原创 五、SpringBoot-application.yml/yaml配置文件
此处提供IDEA-SpringBoot-总目录链接,可查看整个项目过程其他步骤文章:点击此处跳转至总目录链接此处提供IDEA-SpringBoot-总目录链接,可查看整个项目过程其他步骤文章:点击此处跳转至总目录链接此处提供IDEA-SpringBoot-总目录链接,可查看整个项目过程其他步骤文章:点击此处跳转至总目录链接五、IDEA-SpringBoot-application.yml/yaml配置文件核心配置文件有两种格式,一种是application.properties和applicatio
2021-11-05 16:55:00
384
SQL 查询语句练习.zip
2019-11-22
飞机大战.zip
2019-08-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人