自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Oracle数据库

但其本质也不是真的有了返回值,而是在存储过程内部给out类型参数赋值,在执行完毕后,我们直接拿到输出类型参数的值。group by:MySQL前面可以使用select * ,Oracle:select后只能跟分组字段和聚合函数字段等,不能使用星号。判空函数:MySQL:ifnull(var,0) ,Oracle:NVL(var,0)number(m,n)表示一个小数,总共最大n位,n是小数点以后的位数。触发器,就是制定一个规则,在我们做增删改操作的时候,

2022-11-28 21:36:41 479 1

原创 Vue3快速开始

v-for:遍历数组或对象并进行分别展示。v-show:与v-if相似,不同的是v-show都会被渲染,只不过改变了display属性进行隐藏。v-bind: :动态的绑定属性的内容,如果是想动态属性名记得加中括号[动态属性名]src/main.js:入口函数,把组件的数据和界面首页的容器进行绑定。计算属性computed:有缓存的概念,只要依赖值没变就不会每次执行。v-once:当数据改变的时候,插值处不会实时更新。v-model:变量数据的双向绑定。v-if:符合条件的才会被渲染。变量发生变化时执行。

2022-09-21 23:25:44 1348 1

原创 SpringSecurity+JWT

前端将用户名密码发送给后端,后端核对成功后根据用户信息生成一个JWT(Token),后端将JWT作为登陆成功返回结果给前端,前端保存在本地localStorage或sessionStorage上(退出登录时前端删除保存的JWT即可),前端之后每次请求时将JWT放入HTTP Header中,后端校验JWT有效性,如签名是否正确、Token是否过期、检查Token的接收方是否是自己等,后端验证成功后使用JWT中的用户信息完成相关请求操作。默认的登录请求url是"/login",并且只允许POST方式的请求。

2022-09-17 22:37:13 780

原创 两个线程实现数字和字母的交替打印

打印输出1-52,A-Z 26个英文字母,打印顺序为A12B34C56D78E910F1112G1314H1516I1718J1920K2122L2324M2526N2728O2930P3132Q3334R3536S3738T3940U4142V4344W4546X4748Y4950Z5152。

2022-09-17 19:57:29 310

原创 指定概率的抽奖算法

在一组奖品中,每个奖品有自己的概率,总概率为 1.0,也就是说在库存充足的情况下,必然能抽中其中的一个。需要注意的是:如果一组中所有的奖品,总概率之和不为 1.0,那么数值代表的概率就不是真实概率了,需要用所占比例来作为新的概率:新概率值=奖品概率/总概率。举个例子:只有 A 和 B 两个奖品,A 概率是 0.1,B 概率是 0.3,那么总概率就是 0.4,A 的真实概率就是0.1/0.4=0.25,B 的真实概率是0.3/0.4=0.75,真实的总概率依然为1。

2022-09-17 16:54:03 726

原创 SpringBoot快速开始

spring缺点配置繁琐导入maven依赖繁琐。SpringBoot概述SpringBoot对上述Spring的缺点进行的改善和优化,基于约定优于配置的思想。SpringBoot的特点为基于Spring的开发提供更快的入门体验开箱即用,没有代码生成,也无需XML配置。同时也可以修改默认值来满足特定的需求提供了一些大型项目中常见的非功能性特性,如嵌入式服务器、安全、指标,健康检测、外部配置等SpringBoot不是对Spring功能上的增强,而是提供了一种快速使用Spring的方式。

2022-09-17 11:03:09 447

原创 设计模式概述

设计模式分为3种类型:1、创建型模式:用来描述 “如何创建对象”,它的主要特点是 “将对象的创建和使用分离”。包括单例、原型、工厂方法、抽象工厂和建造者 5 种模式。2、结构型模式:用来描述如何将类或对象按照某种布局组成更大的结构。包括代理、适配器、桥接、装饰、外观、享元和组合 7 种模式。3、行为型模式:用来识别对象之间的常用交流模式以及如何分配职责。包括模板方法、策略、命令、职责链、状态、观察者、中介者、迭代器、访问者、备忘录和解释器 11 种模式。建造者模式:封装一个复杂对象的构建过程,并可以按步骤

2022-08-06 11:30:42 127

原创 高并发高可用之秒杀系统

防止用恶意模拟请求攻击,请求链接加入随机码的请求参数,只有秒杀开始才才携带随机码请求接口链接。使用加入购物车的方式实现错峰,用户下单点击速度有快有慢。使用nginx请求静态资源,或使用CDN网络。秒杀成功的订单使用消息队列异步创建订单等信息。使用分布式信号量,把库存存入redis中。高并发微服务崩了也不影响其他服务。网关层识别非法攻击请求进行拦截。...

2022-08-03 15:24:54 221

原创 高并发高可用之MongoDB

MongoDB是一个文档数据库(以JSON为数据模型),由C++语言编写。MongoDB的数据是存储在硬盘上的,只不过需要操作的数据会被加载到内存中提高效率,所以MongoDB本身很吃内存。(本文章使用4.x版本,自带分布式事务)MongoDB基于灵活的JSON文档模型,非常适合敏捷式快速开发。与此同时,其与生俱来的高可用、高水平扩展能力使它在处理海量、高并发数据应用时颇具优势。如何考虑是否选择MongoDB?没有某个业务场景必须要使用MongoDB才能解决,但使用MongoDB通常能让你以更低的成本

2022-07-27 23:10:10 1903

原创 高并发高可用之Kafka

消息的消费者的消费速度,远赶不上生产者的生产消息的速度,导致kafka中有大量的数据没有被消费。随着没有被消费的数据堆积越多,消费者寻址的性能会越来越差,最后导致整个kafka对外提供的服务的性能很差,从而造成其他服务也访问速度变慢,造成服务雪崩。HW是已完成同步的位置。但是有个问题,如果说这个topic中的消息非常多,多到需要几个T来存,因为消息是保存在log日志文件中的,为了解决这个问题,kafka给出分区解决。–创建多个消费组,多个消费者,部署到其他机器上,一起消费,提高消费者的消费速度。...

2022-07-23 15:29:50 1060

原创 高并发高可用之RabbitMQ

MQ的两种消息模型MQ的类型注意:发消息是发给交换机,收消息是监听队列。一个连接有很多个信道,每个信道用于收发一个队列。虚拟主机可以用来环境隔离,如生产环境和开发环境隔离。使用15672端口号访问MQ管理网页界面。headers交换器和direct交换器完全一致但性能更差,所以几乎不用。常用交换机类型有:(路由键通配符:#匹配0个或多个单词,*匹配一个单词)(交换机绑定队列时需要设置一个路由键且如果是topic类型支持设置带有通配符的路由键。客户端发送消息时也需要携带一个消息的路由键给交换机)引.

2022-07-05 23:17:12 2198

原创 高并发高可用之ElasticSearch

ES的数据存储在磁盘中,数据操作在内存中。注意:ElasticSearch6.0之后移除了类型的概念。7.x使用类型会警告,8.x将彻底废除。安装ES查看日志命令:查看docker镜像ID命令:运行docker镜像:访问:安装kibanakibana访问地址:http://192.168.239.134:5601/(1)GET /_cat/nodes:查看所有节点(2)GET /_cat/healt...

2022-06-23 22:54:23 4522

原创 SpringCloudAlibaba

创建一个聚合服务(总工程)并配置pom.xml删除无用的只保留以下在总工程下,选择Spring Initializr快速构建一个微服务模块,(common模块可以用maven模式创建)选择每个微服务必备两个组件spring web和open feign以此类推,创建所有微服务模块所有微服务pom.xml导入common模块依赖创建数据库,服务自治 每个微服务都对应一个自己的数据库每个微服务在自己的springboot配置文件中配置数据源和服务端口号,并导入相关数据源maven依赖红色为Ali

2022-06-11 10:32:24 359

原创 亿级流量多级缓存架构

Tomcat支持并发量太低所以不直接使用service操作Redis等,而是使用lua:Nginx+lua+RedisNginx+lua+kafkaNginx+lua=openresty (可作软防火墙)大公司没有delete语句,只做update逻辑删除,不常用的冷数据扔到HBase。此架构是针对读请求的。写请求如秒杀,大多数是用的消峰(过滤扔掉一大部分请求)Lua又称胶水语言,其设计目的是为了通过灵活嵌入应用程序中从而为应用程序提供灵活的扩展和定制功能。Redis执行lua的时候 其他客户端命令都

2022-06-04 12:03:57 319

原创 高并发高可用之Redis

目录为什么Redis是单线程还这么快二进制安全为什么Redis是单线程还这么快二进制安全

2022-05-16 22:59:33 1347

原创 高并发高可用之Zookeeper

集群使用主从复制集群方式,主节点读写操作,从节只进行读操作。zookeeper有自我修复功能,本身自带高可用。

2022-05-11 00:00:33 1506

原创 定时任务Quartz

目录QuartzQuartz

2022-05-06 14:40:33 2135 3

原创 多线程与高并发

目录JMH工具Disruptor框架JMH工具JMH即Java Microbenchmark Harness,是Java用来做基准测试的一个工具,该工具由OpenJDK提供并维护,测试结果可信度高。JVM下的性能测试工具。使用步骤:引入Maven依赖<dependency> <groupId>org.openjdk.jmh</groupId> <artifactId>jmh-core</artifactId>

2022-05-04 17:37:33 1028

原创 JS获取每项中调用函数的当前元素DOM

jquery用$(this)的方式即可: for (var i in list) {.....<button type="button" class="btn " onclick="like(${p.id},this)"><img src="/fonts/hand-thumbs-up.svg" alt="hand" width="18" height="18">${p.like}</button>......}function like(id,obj) {

2021-03-25 20:57:37 306

转载 SpringBoot全局日期格式化(基于注解)

/** * 全局日期格式化 */@JsonComponentpublic class DateFormatConfig { private static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); /** * 日期格式化 */ public static class DateJsonSerializer extends JsonSerializer

2021-03-22 10:36:55 597

原创 Ajax嵌套Ajax的使用

需要post,get设置为同步,全局设置:$.ajaxSetup({ async:false});或$.ajax({ url:URL, type:'post,' async:false,//同步请求 data:"param=12233", dataType:'text', success:function(data){ }, error:function(data){}})...

2021-03-21 15:32:05 303

原创 input标签type=file的文件上传

一,通过表单提交的方式该提交方式只是提交普通表单;对于file组所选中的文件内容是不上传的,因此需要设置:enctype属性enctype="multipart/form-data"如果想上传多文件,可添加multiple<input type="file" name="img" multiple="multiple" />二,通过Ajax异步提交的方式获取文件内容://javascriptvar file = document.getElementById('fileToU

2021-03-20 17:51:07 1262

原创 Error:(3, 32) java: 程序包org.springframework.boot不存在

Error:(3, 38) java: 程序包org.springframework.stereotype不存在Error:(4, 47) java: 程序包org.springframework.web.bind.annotation不存在Error:(5, 47) java: 程序包org.springframework.web.bind.annotation不存在Error:(7, 2) java: 找不到符号 符号: 类 ControllerError:(10, 6) java: 找不到

2021-01-26 11:48:52 126

原创 解决org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)问题

Mapper接口开发需要遵循以下规范:Mapper.xml文件中的namespace与mapper接口的类路径相同。Mapper接口方法名和Mapper.xml中定义的每个statement的id相同Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType的类型相同Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同resources 底下xml和mapper接口的路径不同,这

2021-01-23 16:08:07 320

原创 复选框checkbox的数据回显JSP实现

在修改数据时需要回显数据。UserBean代码:public class User { private Long id; private String username; private String email; private String password; private String phoneNum; private List<Role> roles; ......后台Java代码:@RequestMapping("/al

2021-01-16 15:25:06 2498

原创 获取插入数据的自增ID值

在不使用其他框架的情况下,使用JdbcTemplate对象的**update(PreparedStatementCreator psc,KeyHolder generatedKeyHolder)**方法实现获取刚插入的自增ID值。Dao层代码如下:public Long save(final User user) { PreparedStatementCreator creator = new PreparedStatementCreator() { public

2021-01-15 20:16:48 939 2

原创 基数排序C/C++代码实现

链式基数排序:分配类排序不需要比较关键字的大小,它 是根据关键字中各位的值,通过对待排序记录进行若干趟 “ 分配 ” 与 “ 收集” 来实现排序的,是一种 借助于多关键字排序的思想对单关键字排序的方法。基数排序(RadixSorting)是典型的分配类排序算法属性:时间复杂度为O(n)空间复杂度为O(n+ rd),(假设每个记录含d个关键字,每个关键字的取值范围为rd个值)。稳定排序。基数排序使用条件有严格的要求:需要知道各级关键字的主次关系和各级关键字的取值范围。代码如下:#inclu

2020-07-08 17:24:28 4099 1

原创 归并排序C/C++代码实现

举例:归井排序(MergingSort)就是将两个或两个以上的有序表合并成一个有序表的过程。将两个有序表合并成一个有序表的过程称为2-路归井算法属性:时间复杂度为O(nlog2(n))。空间复杂度为O(n)稳定排序。归并多用于外部排序。代码如下:#include<stdio.h>#define MAXSIZE 20typedef int KeyType;typedef int InfoType;//记录类型typedef struct { KeyType key;

2020-07-08 15:53:50 2930

原创 堆选择排序C/C++代码实现

举例:树形排序即简单选择排序的改进,第一躺比较后对记录大小进行记录,以后不再逐一比较,堆排序 (Heap Sort) 是一种树形选择排序。堆实质上是满足如下性质的完全二叉树:树中所有非终端结点的值均不大于(或不小于) 其左、 右孩子结点的值。步骤:1,按堆的定义将待排序序列r[l…n]调整为大根堆(这个过程称为建初堆),交换r[l]和r[n] , 则r[n]为关键字最大的记录。2,将r[l . .n-1]重新调整为堆,交换r[I]和r[n-1], 则r[n-1]为关键字次大的记录。 3,循环n-

2020-07-07 19:40:03 241

原创 简单选择排序C/C++代码实现

举例:选择排序的基本思想是:每一趟从待排序的记录中选出关键字最小的记录,按顺序放在已排序的记录序列的最后,直到全部排完为止。括号内为已排完序的,每一趟结束待排序记录的个数就少一个。算法属性:时间复杂度为O(n^2)空间复杂度为O(1)根据“交换记录” 的策略不同可是稳定的排序,也可能是不稳定的排序。移动记录次数较少,当每一记录占用的空间较多时,此方法比直接插入排序快。另外:简单选择排序和堆选择排序不受初始序列顺序影响。代码如下:#include<stdio.h>#def

2020-07-07 16:29:52 2364 1

原创 快速交换排序C/C++代码实现

举例:快速排序(QuickSort) 是由冒泡排序改进而得的,选取一个记录作为枢轴(通常取第一个记录)一次性把小于的全冒到左边,然后对左右两边递归。快速排序方法中的一次交换可能消除多个逆序。low和high两个指针轮流进行移动交换。算法属性:时间复杂度为O(nlog2(n))。空间复杂度最坏情况为O(n)不稳定排序。适合用于顺序结构,很难用于链式结构。当n较大时,在平均情况下快速排序是所有内部排序方法中速度最快的一种,所以其适合初始记录无序、n较大时的情况。代码实现:#includ

2020-07-07 11:43:51 514

原创 冒泡交换排序C/C++代码实现

举例:通过两两比较相邻记录的关键字, 如果发生逆序,则进行交换。每进行一趟确定一个最大关键字的位置,其结果记录被安置到最后一个记录的位置上。 直到算法没有进行过交换记录的操作表示排序结束。算法属性:时间复杂度为O(n^2)空间复杂度为O(1)稳定排序。当初始记录无序,n较大时,此算法时间复杂度较高,不宜采用代码如下:#include<stdio.h>#define MAXSIZE 20typedef int KeyType;typedef int InfoType;

2020-07-07 11:19:20 192

原创 希尔插入排序C/C++代码实现

举例:希尔排序是跨度大一点的直接插入排序,直接插入排序可以看成一趟增量是 1 的希尔排序。算法属性:时间复杂度取决于所选取的增量序列。空间复杂度为O(1)不稳定排序。只能用于顺序结构,并且最后 一个增量值必须等于1。适合初始记录无序、n较大时的情况。代码实现:#include<stdio.h>#define MAXSIZE 20typedef int KeyType;typedef int InfoType;//记录类型typedef struct { KeyT

2020-07-06 14:27:36 213

原创 折半插入排序C/C++代码实现

折半插入排序就是查找操作使用折半查找的直接插入排序,除此之外它与直接插入排序基本一样。算法属性:时间复杂度为O(n^2)空间复杂度为O(1)稳定排序。因为要进行折半查找, 所以只能用于顺序结构。适合初始记录无序,n较大时的情况。代码如下:#include<stdio.h>#define MAXSIZE 20typedef int KeyType;typedef int InfoType;//记录类型typedef struct { KeyType key; Inf

2020-07-02 11:47:28 674

原创 直接插入排序C/C++代码实现

举例:时间复杂度为O(n^2)空间复杂度为O(1)代码如下:#include<stdio.h>#define MAXSIZE 20typedef int KeyType;typedef int InfoType;//记录类型typedef struct { KeyType key; InfoType otherinfo;}RedType;//顺序表类型typedef struct { RedType r[MAXSIZE + 1]; //r[0]闲置或作哨兵

2020-07-02 11:15:07 523

原创 哈希表(散列表)C/C++代码实现

哈希表(散列表):1,构造散列函数最常用的方法是除留余数法:H(key) = key%p这个方法的关键是选取适当的p, 一般情况下,可以选p为小于表长的最大质数。例如表长m=100, 可取p=97。2,处理冲突选择一个 “好” 的散列函数可以在一定程度上减少冲突,但在实际应用中,很难完全避免发生冲突1,开放地址法(1)线性勘测法(2)二次探测法(3)伪随机探测法线性探测法的优点是:只要散列表未填满,总能 找到一个不发生冲突的地址。缺点是:会产生 ”二次聚集“ 现象。而二次探测法和伪随机

2020-06-30 16:17:10 14956 5

原创 B-树C/C++代码实现

此坑待填!!!

2020-06-30 11:30:25 158

原创 平衡二叉树C/C++代码实现

此坑待填!!!

2020-06-30 11:28:29 317

原创 二叉排序树C/C++代码实现

二叉排序树(二叉查找树):二叉排序树的一个重要性质:中序遍历一棵二叉 树时可以得到一个结点值递增的有序序列。对于需要经常进行插入、 删除和查找运算的表,采用二叉排序树比较好查找:若二叉排序树为空,则查找失败,返回空指针。若二叉排序树非空,将给定值key与根结点的关键字T->data.key进行比较:1,若key等于T->data.key , 则查找成功,返回根结点地址;2,若key小于T->data.key, 则递归查找左子树;3,若key大于T->data.key

2020-06-29 16:15:12 3032 1

原创 分块查找C/C++代码实现

分块查找(索引顺序查找):这是一种性能介于顺序查找和折半查找之间的一种查找方法,是顺序查找和折半查找两种算法的简单合成。块内无序,块间有序所谓 “分块有序” 指的是第二个子表中所有记录的关键字均大于第一个子表中的最大关键字,第三个子表中的所有关键字均大于第二个子表中的最大关键字。算法适用情况:由于块内是无序的,故插入和删除比较容易,无需进行大量移动。 如果线性表既要快速查找又经常动态变化,则可采用分块查找。使用条件:线性表必须要能实现分块之间有序。代码如下:#include<stdi

2020-06-28 19:24:13 6026 1

空空如也

空空如也

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

TA关注的人

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