自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

行无所至,学无所尽。

学就完了,奥利给!

  • 博客(149)
  • 资源 (1)
  • 收藏
  • 关注

原创 Python基础学习(一)

age = 99user_list = ["李白","苏轼","辛弃疾"]data_list = [1,True,"Alan", "张楚岚"]user_list.append("盖聂")print(user_list) # ["盖聂",123,False]不可变类型:字符串、布尔、整型可变类型:列表v2 = ("小明","Alan")# 建议:在元组的最后一个元素后面多加一个逗号,用来表示它是一个元组无序:无法通过索引定位值可变:可以添加和删除元素v1.add(44)不允许数据重复。

2024-01-10 21:44:55 1200

原创 Go语言基础知识学习(一)

go语言基础学习(一)

2023-12-10 18:41:13 261 1

原创 【函数式编程】Optional接口

在编写代码的时候遇到最多的就是空指针异常,在很多情况下都要进行很多的非空判断;尤其是对象中的属性还是一个对象的情况下,这种判断会更多。JDK8中引入了Optional,使用Optional可以用更优雅的代码避免空指针异常;

2022-09-19 22:19:22 389 1

原创 【函数式编程】Java函数式编程学习

Java8的Steam使用的是函数式编程模式,如他名字一样,它可以用来对集合或数字进行链状流式操作,可以更加方便的对集合或者数组进行操作;

2022-09-04 16:11:25 233

原创 SpringSecurity学习(一)

认证和授权认证解决“我是谁的问题”什么是认证?授权解决“我能做什么”的问题Filer和FilterChainSpring Filters任何Spring Web应用本质上只是一个Servlet;Security Filter在Http请求到达Controller之前过滤每一个传入的Http请求;Filter Chain常见的内建过滤器过滤器名称作用BasicAuthenticationFilter如果在请求中找到一个Basic Auth Http头,如

2022-05-28 21:35:18 259

原创 前端基础学习(四)CSS过渡与动画

transition过渡transition过渡属性是CSS3浓墨重彩的特性,过渡可以为一个元素在不同样式之间变化自动添加“补间动画”;兼容性良好,动画更细腻,内存开销小;过渡的基本使用transition属性基本使用transition有四个要素transition: width 1s linear 0s;哪些属性可以参与过渡所有数值类型的属性,都可以参与过渡,比如width、height、left、top、border-radius;背景颜色和文字颜色可以被过渡;所有

2022-01-12 22:46:02 605

原创 前端基础学习(四)CSS新特性之变形

变形2D变形旋转变形将transform属性的值设置为rotate(),即可实现旋转变形;transform: rotate(45deg);若角度为正,这顺时针方向旋转,否则逆时针方向旋转;transform-origin属性可以使用transform-origin属性设置自己的自定义变换原点;缩放变形斜切变形位移变形3D变形3D旋转空间移动...

2022-01-05 23:20:57 179

原创 前端CSS基础学习(三)边框与背景

边框与圆角边框边框三要素border属性border属性需要三个要素;border: 1px solid red;线型线型值意义solid实线dashed虚线dotted点状线border三要素小属性边框三要素可拆分为小属性;小属性意义border-width线宽border-style线型border-color线颜色四个方向的边框属性意义border-top上边框

2022-01-03 22:43:59 548

原创 前端基础学习(三)浮动与定位

浮动浮动浮动的基本概念浮动用来实现并排浮动的最本质功能:用来实现并排浮动使用要点:要浮动,并排的盒子都要设置浮动;盒子要有足够的宽度,否则盒子会掉下去;浮动的顺序贴靠特性子盒子会按照顺序进行贴靠,如果没有足够空间,则会寻找前一个兄弟元素;浮动的元素一定能设置宽高浮动的元素不再区分块级元素、行内元素,已经脱离了标准文档流,一定能设置宽度和高度,即使他是span或者a标签;右浮动float: right;,即可设置右浮动使用浮动的注意事项垂直显示的盒子,不需要

2021-12-28 22:47:14 396

原创 前端基础学习(二)-- 攻破CSS盒模型

盒模型认识盒模型所有HTML标签都可以看成是矩形盒子,有width、height、padding、border构成,称为"盒模型";width、height不是盒子的总宽高盒子的总宽度=width + 左右padding + 左右border盒子的总高度=height + 上下padding + 上下borderwidth和height属性详解padding属性详解margin属性详解盒模型计算box-sizing属性行内元素和块级元素display属性行内元素和块级元素

2021-12-23 23:05:10 107

原创 前端基础学习(一)

基础标签学习img<p> <img src="images/gugong.jpg" alt="故宫角楼" width="300"> </p>alt: 如果图片裂开了可以添加一个图片提示之类的东西;网页支持的图片格式格式说明.bmpWindows画图软件默认保存的格式,位图.gif支持动画(比如表情包).jpeg有损压缩图片,用于照片.png便携式网络图像,用于logo、背景图形等,支持透明和半透明

2021-12-19 22:30:28 407

原创 Git学习大全

Git安装;Git命令:基于开发案例,详细了解git的常用命令;Git分支:分支特性,分支创建,分支转换,分支合并,代码合并冲突解决;Idea集成Git;GitHub:创建远程库,代码推送push,代码拉取pull,代码克隆clone,ssh免密登录,Idea集成Github;Gitee;GitLabGit概述Git 是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。Git 易于学习,占地面积小,性能极快。 它具有廉价的本地库,方便的暂存区域和多个工作流.

2021-10-12 23:16:18 368

原创 记某公司面试算法题:查找一个有序数组某个数字出现的次数

记录记某公司面试算法题:查找一个有序数组某个数字出现的次数,要求是不能使用暴力破解的方式;本来知道怎么做,结果因为不会写二分导致没手撕出来,着实够菜的。。代码package com.vleus.algorithm.strings;/** * @author vleus * @date 2021年09月26日 20:26 */public class GetNumCount {// public static int getNumCount(int[] array, int nu

2021-09-27 23:18:06 143 3

原创 记一次某公司面试题:合并有序数组

来源2021/09/24:接到某公司面试,手撕一到合并有序数组的题,当时做的差不多了,面试官时间给的相对短了一些,临界值处理有问题, 没完全写出来有些遗憾,不过至少自己思路没错,参考网上给出的资料,现整理出一个比较好的解决方式,自己也只是写了一点测试用例,若有错误,烦请指正!具体题目不讲了,就看题目标题吧上代码package com.vleus.algorithm.strings;import java.util.Arrays;/** * @author vleus * @date 20

2021-09-26 18:51:36 120 2

原创 MySQL的一些随笔记录

数据库三大范式第一范式:强调字段的原子性,一个字段表示的含义不可分割,精确表达其字段含义;第二范式:强调记录的唯一性,主键能够唯一标识一个数据,不能有冗余数据;表:学号、学生姓名、课程、学分第三范式:强调字段的冗余性,一张表的任何字段不能由其他字段派生出来,要求字段没有荣有,即不存在传递关系;表:学号、姓名、年龄、学院名称、学院电话;存在传递依赖,学号->学生->所在学院->学院电话...

2021-08-23 22:44:25 81

原创 RabbitMQ学习(六)--死信队列

死信队列概念死信,指的是无法被消费的消息,字面意思可以这样理解,一般来说,producer 将消息投递到 broker 或者直接到 queue 里了,consumer 从 queue 取出消息进行消费,但某些时候由于特定的原因导致** queue 中的某些消息无法被消费**,这样的消息如果没有后续的处理,就变成了死信,有死信自然就有了死信队列。应用场景:为了保证订单业务的消息数据不丢失,需要使用到RabbitMQ 的死信队列机制,当消息消费发生异常时,将消息投入死信队列中.还有比如说: 用户在商城下单

2021-08-11 22:35:42 155

原创 LeetCode #461 汉明距离

题目两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。给你两个整数 x 和 y,计算并返回它们之间的汉明距离。示例最佳代码package com.vleus.algorithm.bit_operator;/** * @author vleus * @date 2021年08月03日 22:35 */public class HammingDistance { //方法一:异或:调库统计1的个数 public int hammingDistanc

2021-08-03 22:59:41 86

原创 RabbitMQ学习(十)--RabbitMQ集群相关学习

使用集群的原因最开始我们介绍了如何安装及运行 RabbitMQ 服务,不过这些是单机版的,无法满足目前真实应用的要求。如果 RabbitMQ 服务器遇到内存崩溃、机器掉电或者主板故障等情况,该怎么办?单台 RabbitMQ服务器可以满足每秒 1000 条消息的吞吐量,那么如果应用需要RabbitMQ 服务满足每秒 10 万条消息的吞吐量呢?购买昂贵的服务器来增强单机 RabbitMQ 务的性能显得捉襟见肘,搭建一个 RabbitMQ 集群才是解决实际问题的关键;搭建RabbitMQ集群在使用VM w

2021-08-01 10:50:49 192

原创 RabbitMQ学习(九)--RabbitMq的其他知识点

RabbitMQ幂等性概念用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。举个最简单的例子,那就是支付,用户购买商品后支付,支付扣款成功,但是返回结果的时候网络异常,此时钱已经扣了,用户再次点击按钮,此时会进行第二次扣款,返回结果成功,用户查询余额发现多扣钱了,流水记录也变成了两条。在以前的单应用系统中,我们只需要把数据操作放入事务中即可,发生错误立即回滚,但是再响应客户端的时候也有可能出现网络中断或者异常等等;对于消息队列来说就是可能会发生消息的重复消费消息

2021-07-29 23:52:32 131

原创 RabbitMQ学习(八)--发布确认高级

背景在生产环境中由于一些不明原因,导致 rabbitmq 重启,在 RabbitMQ 重启期间生产者消息投递失败,导致消息丢失,需要手动处理和恢复。于是,我们开始思考,如何才能进行 RabbitMQ 的消息可靠投递呢?特别是在这样比较极端的情况,RabbitMQ 集群不可用的时候,无法投递的消息该如何处理呢:应 用 [xxx] 在 [08-1516:36:04] 发 生 [ 错误日志异常 ] , alertId=[xxx] 。 由[org.springframework.amqp.rabbit.li

2021-07-29 22:54:26 992

原创 RabbitMQ学习(七)-- 延迟队列的学习

延迟队列的概念延时队列,队列内部是有序的,最重要的特性就体现在它的延时属性上,延时队列中的元素是**希望在指定时间到了以后或之前取出和处理,**简单来说,延时队列就是用来存放需要在指定时间被处理的元素的队列。RabbitMQ中的延迟队列TTL是什么?TTL 是 RabbitMQ 中一个消息或者队列的属性,表明一条消息或者该队列中的所有消息的最大存活时间,单位是毫秒。换句话说,如果一条消息设置了 TTL 属性或者进入了设置 TTL 属性的队列,那么这条消息如果在 TTL 设置的时间内没有被消费,则会成为

2021-07-25 19:02:01 319 3

原创 RabbitMQ学习(五)-- 交换机学习(第三个部分:发布-订阅模式)

RabbitMQ交换机学习在之前的学习中,我们是创建了一个工资队列。我们假设的是在工作队列背后,每个人物都恰好交付给一个确认的消费者(工作进程)。在本节的学习中,我们将做一些不同的事情:将消息传递给多个消费者。这种模式被称为发布/订阅模式;为了说明这种模式,我们将构建一个简单的日志系统,由两个程序组成:第一个程序将发出日志消息;第二个程序是消费者;届时将启动两个消费者,其中一个消费者接收到消息之后将日志存储在磁盘中,另外一个消费者接收到消息之后打印在屏幕上,相当于是第一个程序发出的日志消息将广播

2021-07-24 12:25:02 164 3

原创 RabbitMQ学习(四)-- 消息的发布确认

消息的发布确认发布确认原理生产者将信道设置成 confirm 模式,一旦信道进入 confirm 模式,== 所有在该信道上面发布的消息都将会被指派一个唯一的 ID(从 1 开始),==一旦消息被投递到所有匹配的队列之后,broker就会发送一个确认给生产者(包含消息的唯一 ID),这就使得生产者知道消息已经正确到达目的队列了,如果消息和队列是可持久化的,那么确认消息会在将消息写入磁盘之后发出,broker 回传给生产者的确认消息中 delivery-tag 域包含了确认消息的序列号,此外 brok

2021-07-22 22:47:00 507 1

原创 RabbitMQ学习(三)-- 队列持久化

RabbitMQ持久化概念刚刚我们已经看到了如何处理任务不丢失的情况,但是如何保障当 RabbitMQ 服务停掉以后消息生产者发送过来的消息不丢失。默认情况下 RabbitMQ 退出或由于某种原因崩溃时,它忽视队列和消息,除非告知它不要这样做。确保消息不会丢失需要做两件事: 我们需要将队列和消息都标记为持久化;队列如何持久化之前我们创建的队列都是非持久化的,rabbitmq 如果重启的化,该队列就会被删除掉,如果要队列实现持久化 需要在声明队列的时候把 durable 参数设置为持久化;但是需要

2021-07-21 23:18:02 872 1

原创 RabbitMQ学习(二)RabbitMQ六大核心部分学习

六大核心部分Java代码实现HelloWorld新建Maven工程,引入依赖<!-- 指定 jdk 编译版本 --> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compil

2021-07-21 22:21:11 296 1

原创 RabbitMQ学习(一)初识RabbitMQ、RabbitMQ的安装

MQ的相关概念什么是MQMQ(message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是message 而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ 是一种非常常见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了 MQ 之后,消息发送上游只需要依赖 MQ,不用依赖其他服务。为什么要使用MQ流量削峰举个例子,如果订单系统最多能处理一万次订单,这个处理能力应付正常时段的下单时绰绰有余,正常时段我们下单一秒后就能返回结果。但是

2021-07-19 22:24:45 189 2

原创 JUC学习(四)--线程池的学习

ThreadPool线程池线程池概述线程池(英语:thread pool):一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度。线程池的优势线程池做的工作只要是控制运行的线程数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量,超出数量的线程排队等候,等其他线程执行完毕,再从队列中取出

2021-07-18 18:46:29 273 3

原创 JUC学习(二)--Java多线程辅助类

多线程辅助类减少计数CountDownLatch(-1操作)CountDownLatch 类可以设置一个计数器,然后通过 countDown 方法来进行减 1 的操作,使用 await 方法等待计数器不大于 0,然后继续执行 await 方法之后的语句。• CountDownLatch 主要有两个方法,当一个或多个线程调用 await 方法时,这些线程会阻塞• 其它线程调用 countDown 方法会将计数器减 1(调用 countDown 方法的线程不会阻塞)• 当计数器的值变为 0 时,因

2021-07-18 15:12:07 145

原创 JUC学习(一)

线程基础知识复习为什么多线程极其重要硬件方面摩尔定律失效它是由英特尔创始人之一Gordon Moore(戈登·摩尔)提出来的。其内容为:当价格不变时,集成电路上可容纳的元器件的数目约每隔18-24个月便会增加一倍,性能也将提升一倍。换言之,每一美元所能买到的电脑性能,将每隔18-24个月翻一倍以上。这一定律揭示了信息技术进步的速度。可是从2003年开始CPU主频已经不再翻倍,而是采用多核而不是更快的主频。摩尔定律失效。在主频不再提高且核数在不断增加的情况下,要想让程序更快就要用到并行或并发

2021-07-18 10:08:36 165 2

原创 Redis学习(八)--应用问题解决以及Redis6新功能

Redis应用问题解决缓存穿透问题描述key对应的数据在数据源并不存在,每次针对此key的请求从缓存获取不到,请求都会压到数据源,从而可能压垮数据源。比如用一个不存在的用户id获取用户信息,不论缓存还是数据库都没有,若黑客利用此漏洞进行攻击可能压垮数据库。解决方案一个一定不存在缓存及查询不到的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。解决方案(1)对空值缓存:如果一个查询返回的

2021-07-11 22:06:32 115 1

原创 Redis学习(七)--Redis主从复制与Redis集群搭建

Redis主从复制主从复制是什么主机数据更新后根据配置和策略, 自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主主从复制能干嘛读写分离,性能扩展;容灾快速恢复;怎么玩:主从复制拷贝多个redis.conf文件include(写绝对路径);开启daemonize yes;Pid文件名字pidfile;指定端口port;Log文件名字;dump.rdb名字dbfilename;Appendonly 关掉或者换名字;新建redis637

2021-07-10 14:45:14 200

原创 Redis学习(六)--Redis的持久化RDB、AOF

Redis持久化Redis持久化之RDB(Redis DataBase)在指定的时间间隔内将内存中的数据集快照写入磁盘, 也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里。如何备份数据Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到 一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。 整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能 如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式要

2021-07-08 22:11:56 96

原创 Redis学习(五)-- Java操作Redis的几种方式

Jedis操作Redis创建idea工程建立一个Maven项目,导入Jedis依赖即可:<!-- 导入Jedis依赖 --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.2.0</version&

2021-07-04 14:52:11 889 1

原创 Redis学习(四)-- Redis的发布和订阅

什么是发布订阅Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。Redis 客户端可以订阅任意数量的频道。Redis的发布和订阅客户端可以订阅频道如下:当给这个频道发布消息后,消息就会发送给订阅的客户端发布订阅命令行实现1、 打开一个客户端订阅channel1SUBSCRIBE channel12、打开另一个客户端,给channel1发布消息hellopublish channel1 hello

2021-07-03 23:44:43 78

原创 Redis学习(三)--Redis配置文件详解

找到自定义目录我的自定义目录:/etc/redis.confUnits单位配置大小单位,开头定义了一些基本的度量单位,只支持bytes,不支持bit大小写不敏感INCLUDES包含类似jsp中的include,多实例的情况可以把公用的配置文件提取出来网络相关配置bind配置默认情况bind=127.0.0.1只能接受本机的访问请求不写的情况下,无限制接受任何ip地址的访问生产环境肯定要写你应用服务器的地址;服务器是需要远程访问的,所以需要将其注释掉如果开启了protec

2021-07-03 23:33:20 100

原创 Redis学习(二)五大数据类型学习以及特殊的三大类型了解

Redis字符串(String)String类型是二进制安全的。意味着Redis的string可以包含任何数据。比如jpg图片或者序列化的对象。String类型是Redis最基本的数据类型,一个Redis中字符串value最多可以是512M;操作命令set key value: 添加键值对;get key: 获取key;append key value:将给定的 追加到原值的末尾strlen key:获得值的长度setnx key value:只有在 key 不存在时 设置

2021-07-03 23:00:41 80

原创 LeetCode #17 电话号码的字母组合

题目给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number示例代码package com.vleus.algorithm.backtrack;import java.util.ArrayList;imp

2021-06-27 13:32:52 82

原创 LeetCode #46 全排列

题目给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。示例代码package com.vleus.algorithm.backtrack;import java.util.*;/** * @author vleus * @date 2021年06月26日 22:03 */public class Permutation { //定义一个辅助集合,保存已经用过的数 Set<Integer> filledNu

2021-06-26 22:26:11 58

原创 回溯算法--八皇后问题

八皇后问题在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上。问有多少种摆法。八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出。 高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。计算机发明后,有多种计算机语言可以解决此问题。代码实现package com.vleus.algorithm.backtrack;im

2021-06-26 22:03:38 256 1

原创 LeetCode #1143 最长公共子序列

题目给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。两个字符串的 公共子序列 是这两个字符串所共同拥有的子序列。来源:力扣(LeetCode)链接:https://leetcode-

2021-06-20 16:51:41 54

极速PDF阅读器 v3.0.0.1023 绿色精简版.rar

极速PDF阅读器 v3.0.0.1023 绿色精简版.rar

2021-03-11

空空如也

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

TA关注的人

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