自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(293)
  • 收藏
  • 关注

原创 算法模板

1. 基本算法快速排序&归并排序模板二分C++高精度运算前缀与差分双指针算法离散化

2020-02-17 12:03:54 345 2

原创 ACM信息学竞赛算法总结

基础知识位运算递推与递归前缀与差分二分排序倍增贪心尺取法数据结构栈与队列 : 单调栈 单调队列 双端队列Hash: 字符串Hash 与Hash表字符串处理: KMP算法,-- Rabin-Karp 算法 — 最小表示法Tire(字典树)AC自动机二叉堆并查集树状数组线段树分块拓扑排序点分治离线分治算法二叉查找树与二叉平衡树可持久化数据结...

2020-02-02 16:10:11 3091 2

原创 浅谈SpringBoot启动流程

SpringBoot启动流程就是创建IOC容器的过程。

2023-08-18 16:12:21 161

原创 Nacos AP架构集群搭建(Windows)

MySql中执行\conf文件夹下的nacos-mysql.sql,建表。直接复制粘贴运行SQL语句就行。

2023-08-13 15:19:21 762

原创 手写SpringCloud系列-负载均衡算法实现

最开始的系统访问量很少,就一个单机就足够,随着系统越来越大,访问量越来越大,系统逐渐变为微服务架构体系,同一个功能需要多台服务器同时提供服务,这个时候我们的请求具体落在哪台服务器就成了一个需要思考的问题,如何使资源合理分配就是负载均衡要解决的问题常见的负载均衡算法包括轮询(Round Robin)、加权轮询、最少连接(Least Connections)、最短响应时间,固定IP访问等等。这是一种最简单的负载均衡算法,请求按顺序依次分配到每个服务器。每个请求都会被依次发送到不同的服务器,然后从头开始。

2023-08-10 15:18:52 206

原创 手写SpringCloud系列-一分钟理解微服务注册中心(Nacos)原理。

我们可以理解注册中心就是一个HashMap,服务注册上去,需要用的时候去拉取,通过服务名称可以找到对应服务的IP地址和端口,我们就可以发送http请求(或者直接使用UDP/TCP)进行远程服务调用。

2023-08-07 21:16:00 306

原创 使用gitee创建远程maven仓库

id随意,url是打包到哪个文件夹里面。在需要打包的项目的pom中添加。

2023-08-06 20:24:31 1425

原创 什么是SpringCloud?如何理解微服务架构

手写SpringCLoud项目地址。

2023-08-05 15:32:09 98

原创 JAVA实现文字识别

【代码】JAVA实现文字识别。

2023-06-21 11:30:55 1003

原创 docker运行mysql不能远程连接和不能创建数据库

【代码】docker运行mysql不能远程连接。

2022-09-22 21:52:34 633 1

原创 安卓开发-发送广播(普通/本地)

接收者就和上一节的方法接收即可,静态注册不可以接收隐式广播,而这个就是隐式广播。所以这里直接用动态注册即可,或者改为显式广播。

2022-07-27 11:52:41 1809

原创 安卓开发-接收系统广播

那么该如何创建一个广播接收器呢?其实只需要新建一个类,让它继承自BroadcastReceiver,并重写父类的onReceive()方法就行了。这样当有广播到来时,onReceive()方法就会得到执行,具体的逻辑就可以在这个方法中处理。我们在MainActivity中定义了一个内部类NetworkChangeReceiver,这个类是继承自BroadcastReceiver的,并重写了父类的onReceive()方法。这样每当网络状态发生变化。时,onReceive()方法就会得到执行,........

2022-07-27 10:11:00 1294

原创 安卓Activity生命周期

活动在onCreate()方法和onDestroy()方法之间。在onCreate()方法中完成各种初始化操作,而在onDestroy()方。活动在onStart()方法和onStop()方法之间所经历。活动在onResume()方法和onPause()方法之间所。源进行加载,而在onStop()方法中对资源进行释放,从而保证处。经历的就是前台生存期。的,此时的活动是可以和用户进行交互的,我们平时看到和接触最。的,就是可见生存期。所经历的,就是完整生存期。多的也就是这个状态下的活动。...

2022-07-26 14:43:26 267

原创 kali2021改为中文

sudo dpkg-reconfigure locales选择zh_CN.UTF-8下载字体sudo apt-get install ttf-wqy-microhei ttf-wqy-zenhei xfonts-wqy重启sudo reboot

2022-02-07 15:07:24 808

原创 uniapp 图片上传与下载更新

上传多张图片, 用files<template> <view class="page"> <view> <view class="cu-load load-modal" v-if="finsh == false"> <view class="cuIcon-emojifill text-orange"></view> <view class="gray-text">加载中...</

2021-11-20 14:32:22 509

原创 mybatis-plus配置多数据源, 记录一下

依赖 <!-- 动态数据源 --> <dependency> <groupId>com.baomidou</groupId> <artifactId>dynamic-datasource-spring-boot-starter</artifactId> <version>3.2.1</version> &l

2021-09-27 18:05:04 212

原创 JPA动态SQL查询(记录一下)

// 构建分页参数 PageRequest pageReq = PageRequest.of(pageIndex, pageSize); // 分页查询 Page<IncomeRuleDo> page = null; // 组装查询条件 Specification<IncomeRuleDo> spec = (root, cq, cb) -> { // 创建集合,用于存放拼

2021-09-10 14:58:40 810

原创 rocketMQ的安装以及基本使用(windows)

//启动命名服务start mqnamesrv.cmd//启动服务器start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnaable=true//发消息测试tools.cmd org.apache.rocketmq.example.quickstart.Producer//测试消费者接受消息tools.cmd org.apache.rocketmq.example.quickstart.Consumer...

2021-07-29 14:40:30 330

原创 JUC - SynchronousQueue

SynchronousQueue:同步队列的作用类似于一种匹配原则,它只能放一个东西进去。场景:一个线程放数据进去,另一个线程去取。放进去的线程放进去以后, 就要等待消费者去取, 只有取出来了才可以继续放进去,同时,消费者也是只有等生产者放进去才可以取, 如果没有, 就只有继续等待。SynchronousQueue<String> queue = new SynchronousQueue<>(); new Thread(() -> {

2021-07-28 10:45:08 121

原创 JUC - ReentrantReadWriteLock(读写锁)

ReentrantReadWriteLock:在读的时候可以多个线程一起读, 在写的时候,只能一个线程写。场景:用Map模拟一个缓存,put方法是用写锁加锁, get用读锁加锁。public class Test4 { public static void main(String[] args) { MyCache myCache = new MyCache(); for (int i = 1; i <= 5; i++) { fi

2021-07-28 10:32:17 110

原创 JUC辅助类-(countDownLatch,cyclicBarrier,semaphore,BlockingQueue)

ava1.5引入工具类有CyclicBarrier、Semaphore、concurrentHashMap和BlockingQueue。1. countDownLatchcountDownLatch的实现是一个计数器, 作用是使一个线程等待其他线程执行结束后才继续执行。使用方法, 先设置一个数, 每次减少一, 等减少到0就继续执行public static void main(String[] args) throws InterruptedException { //必须要执行任务

2021-07-28 10:28:35 178

原创 设计模式七大原则-依赖倒转原则

依赖倒转原则(Dependence Inversion Principle)是指:1)高层模块不应该依赖低层模块,二者都应该依赖其抽象2)抽象不应该依赖细节,细节应该依赖抽象3)依赖倒转(倒置)的中心思想是面向接口编程4)依赖倒转原则是基于这样的设计理念:相对于细节的多变性,抽象的东西要稳定的多。以抽象为基础搭建的架构比以细节为基础的架构要稳定的多。在java中,抽象指的是接口或抽象类,细节就是具体的实现类5)使用接口或抽象类的目的是制定好规范,而不涉及任何具体的操作,把展现细节的任务交给他们

2021-07-05 15:33:17 90

原创 spring事务管理

事务的ACID特性atomicity: 原子性: 一个事务要么全部提交成功, 要么全部失败回滚。consistency: 一致性:事务的执行不能破坏数据库数据的完整性和一致性,一个事务在执行之前和执行之后,数据库都必须处于一致性状态。isolation:隔离性: 在并发环境下, 事务是相互隔离的, 互不影响。durability:持久性:事务的作用是持久的, 一旦事务提交, 就永远保存。关于隔离性, 数据库的4个隔离级别:读未提交(Read Uncommited):脏读。已提交读(Read C

2021-07-03 14:36:18 78

原创 线程相关面试题

1.线程进程的区别具体例子: 打开网易云,相当于打开一个进程, 点击播放音乐, 就相当于创建了一个线程, 点击下载, 相当于又创建了一个线程, 我们再去打开QQ, 就是又打开了一个进程, 总结: 线程是进程的子关系。具体对比:进程线程资源分配的最小单位系统调度的最小单位有独立空间,相互之间是隔离的没有独立空间, 同一个进程下的线程共享内存空间一个进程有多个线程一个线程隶属于一个进程创建时消耗大,打开一个应用当然大消耗小, 让操作系统去fork()一个线程

2021-07-03 11:09:53 234

原创 swagger的使用

<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <dependency> ...

2021-07-02 19:25:11 102 1

原创 mybatis-plus的代码生成器的使用

依赖文件 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <dependency&

2021-07-02 19:21:38 82

原创 解决连接远端sentinel控制台空白问题

服务器使用docker 直接安装, 然后连接。由于服务器文法访问我们本地的电脑, 所以会连接失败, 所以要想连接远端sentinel就必须把项目部署到服务器上面。在项目中配置文件这样写server: port: 8401spring: application: name: cloudalibaba-sentinel-service cloud: nacos: discovery: server-addr: 服务器IP地址:8848 #Naco

2021-06-26 15:14:27 1744

原创 nacos的安装与使用(docker安装nacos)

安装命令docker run \--name nacos -d \-p 8848:8848 \--privileged=true \--restart=always \-e JVM_XMS=256m \-e JVM_XMX=256m \-e MODE=standalone \-e PREFER_HOST_MODE=hostname \-v /home/nacos/logs:/home/nacos/logs \-v /home/nacos/init.d/custom.propert.

2021-06-25 19:37:53 255

原创 consul入门(安装与使用)

docker安装consuldocker pull consuldocker run -d -p 8500:8500 --name=consul consul:latest agent -server -bootstrap -ui -node=1 -client='0.0.0.0'生产者注册进去依赖 <!--SpringCloud consul-server --> <dependency> <groupId&gt.

2021-06-22 16:57:21 138

原创 zookeeper入门(安装+业务代码实现)

安装docker 安装zookeeperdocker pull zookeeperdocker run -d --name zookeeper -p 2181:2181 id使用生产者向注册中心注册进去。pom依赖 <!-- SpringBoot整合zookeeper客户端 --> <dependency> <groupId>org.springframework.cloud</groupId>

2021-06-21 16:12:40 85

原创 Eureka使用详解

Eureka是spring cloud中的一个负责服务注册与发现的组件。遵循着CAP理论中的AP原则一个Eureka中分为eureka server和eureka client。其中eureka server是作为服务的注册与发现中心。eureka client既可以作为服务的生产者,又可以作为服务的消费者。Eureka的使用:服务端的书写依赖包 <dependency> <groupId>org.springframework.cloud</

2021-06-20 16:02:52 1075

原创 使用restTemplate(httpClient)实现微服务之间的调用

一:需要调用的微服务, 就和平时写的微服务一样, 能实现数据的增删改查就行。 @RequestMapping("/add") public CommonResult add(Payment payment) { @RequestMapping("/getPayment") public CommonResult getPayment(Long id) {二:消费者的实现将restTemplate注入到容器里面@Configurationpublic class

2021-06-09 15:46:00 586

原创 装饰者模式

装饰者模式:动态的将新功能附加到对象上。在对象功能扩展方面,它比继承更有弹性,装饰者模式也体现了开闭原则(ocp)这里提到的动态的将新功能附加到对象和ocp原则,在后面的应用实例上会以代码的形式体现。场景:我们在点咖啡的时候,会加入一些不同的配料,不同的配料和不同的咖啡会组合出不同的口味的咖啡,如果把这些组合都写成具体的类,就会类爆炸,而且调料的组合也是阶乘级别,不可能具体实现,核心就是附加,通过递归的思想,完成添加的功能。代码:public class SingleFantasy { ..

2021-05-27 14:06:18 73

原创 桥接模式

桥接模式: 将抽象部分与它的实现部分分离,使它们都可以独立地变化考虑到手机生产过程, 有下面这个类的关系。如果新增加一个手机样式, 就要新增加很多类,考虑如何优化这个问题。类似于, 我们使用排列组合的方式, 组合出一个我们想要的手机。这里的手机类就是我们所说的桥接类, 用于组合出我们想要的手机。public class SingleFantasy { public static void main(String[] args) throws CloneNotSupportedExcepti

2021-05-21 18:35:13 60

原创 适配器模式

1. 类适配器模式角色:被适配的类适配接口适配器(继承上面两个,实现适配接口的方法,在方法中,得到被适配类的成果,把成果做相应的转换,然后输出成果)使用者类场景: 手机充电时候,不能直接冲220V的电,必须室友充电器抓换成5V,这里面被适配的类(220V的电)适配接口(5V的电, 里面定义一个转换方法)适配器(在方法中拿到220V,转换成5V,然后返回)使用者类(手机, 直接使用适配器类进行充电)代码:public class SingleFantasy { publ

2021-05-20 16:44:02 72

原创 建造者模式

建造者模式中的4个角色:Product(产品类):要创建的对象。builder(抽象建造者):定义对象的创建过程方法。ConcreteBuilder(具体建造者):实现具体的方法,不同的创建者方法内部的代码不一样, 从而可以创建不同的对象。Director(指导者):调用具体建造者来创建复杂对象的各个部分,在指导者中不涉及具体产品的信息,只负责保证对象各部分完整创建或按某种顺序创建。简单说: 具体产品定义好产品由那些部分组成,抽象建造者定义产品组成部分的实现方法, 具体建造者实现这些方法,最后

2021-05-19 19:36:34 57

原创 原型模式

原型模式: 采用克隆方式,把对象的创建变成复制粘贴一样,大大的提升了性能。实现方式: 1. 类继承Cloneable接口, 这个接口的作用就是让这个类可以拷贝, 如果没有继承就去拷贝会出现异常。 2. 重写Object的clone方法浅拷贝: Object类的clone方法只会拷贝对象中的基本的数据类型,对于数组、容器对象、引用对象等都不会拷贝,这就是浅拷贝。如果要实现深拷贝,必须将原型模式中的数组、容器对象、引用对象等另行拷贝public class SingleFantasy { publ

2021-05-19 16:29:13 53

原创 抽象工厂

抽象工厂是简单工厂的工厂方法的结合。具体来说, 和工厂方法比较工厂方法:一个工厂对应一个产品实例化。抽象方法:一个工厂对应一系列产品实例化。public class SingleFantasy { public static void main(String[] args) { ColaChickenFactory colaChickenFactory = new ColaChickenFactory(); CurryChickenFactory curryC

2021-05-18 22:55:55 72

原创 工厂方法模式

在简单工厂中, 我们知道,简单工厂违背了开闭原则, 并且在食物鸡有很多种的时候, 我们要写那么多if判断, 这是很不可的, 维护性也不好,所有我们引出工厂方法。工厂方法模式:定义一个创建对象的抽象方法,由子类决定要实例化的类。工厂方法模式将对象实例化推迟到子类核心就是: 我们定义工厂的抽象类, 如果新增一个类, 就还需要新增对应的工厂,这样就不用再改变原有的代码, 提高可维护性。public class SingleFantasy { public static void main(Strin

2021-05-18 22:25:16 134

原创 简单工厂模式

简单工厂模式: 我们在去吃鸡的时候, 不需要去后厨找不同的厨师给我们做各种各样的鸡, 只需要给服务员说我们要吃的鸡的名称,就可以得到想要的鸡。这里: 服务员就是工厂,我们给工厂一个信息, 工厂就给我们相应的结果。这里其实违背了开闭原则, 我们增加一个菜品的时候, 需要修改工厂里面的代码。public class SingleFantasy { public static void main(String[] args) { Chicken colaChicken = Facto

2021-05-18 22:03:40 64

空空如也

空空如也

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

TA关注的人

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