自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 StringRedisTemplate和RedisTemplate的区别和选择

我主要想说的是Redis和Java当中Spring结合起来的时候,使用到的RedisTemplate和StringRedisTemplate他们两者之间的区别,以及该怎么使用。RedisTemplate看这个类的名字后缀是Template,如果了解过Spring如何连接关系型数据库的,大概不会难猜出这个类是做什么的 ,它跟JdbcTemplate一样封装了对Redis的一些常用的操作,当然StringRedisTemplate跟RedisTemplate功能类似那么肯定就会有人问,为什么会需要两个Templ

2023-04-03 13:53:09 395

原创 Redis事务

mysql: ACID原则 原子性,隔离性,一致性,持久性。如果被watch的值被另一个线程修改,则事务不会提交成功。运行时异常, 语法没有问题,但是报错了,其他的会被执行。所有命令在事务中,没有直接执行,只有发起执行才会执行。错误的命令 , 代码有问题,所有的命令都不会被执行。一次性、顺序性、排他性。

2023-04-01 18:41:55 323

原创 java环境下集成redis

是说Redis服务处于保护模式,我们需要修改配置文件redis.conf。为protected-mode no,然后重启服务(./bin/redis-server ./redis.conf)lettuce:采用netty , 实力可以在多个线程中共享 , 减少线程数据 , 性能更高。jedis: 采用直连 , 多线程不安全 , 如果要避免,需要使用jedis pool。原因是redisTemplate , 默认使用的JDK序列化方式。key的序列化使用String序列化。对象必须序列化,不序列化报错。

2023-04-01 18:37:54 742

原创 Redis进阶(2)

当后面的哨兵也检测到服务器不可用以后 , 哨兵之间会进行一次投票 , 投票的结果由一个哨兵发起 , 进行failover[故障转移]操作==(存在一个投票算法)==. 切换成功后 , 会通过发布订阅模式 , 让每个哨兵把自己监控的从服务器实现切换主机 , 叫做。哨兵是一个进程 , 哨兵模式是一个特殊的模式 , redis提供了哨兵的命令 , 作为进程 , 独立运行 , 哨兵通过发送命令 , 灯到redis服务器响应 , 从而监控多个redis实例。让自己变成主机 , 主机修复以后 , 也只能重新配置。

2023-04-01 18:36:34 309

原创 jvm-类加载系统

字节码存储在硬盘上需要运行时,由类加载系统负责将类的信息加载到内存中,为每个类创建一个class对象,使用ClassLoader进行加载。

2022-10-19 17:15:18 57

原创 数据结构——线性表:栈、队列

转换为stream,有两种方式: Stream.of(arr),Arrays.stream(arr) 2、使用Arrays.stream()转换时,如果是包装类,转换后的类型为Stream,基础类型,转换后为IntStream 3、使用Stream.of()转换时,如果是包装类,转换后的类型为Stream,基础类型,转换后为Stream只能从一端(队尾)添加元素,从另一端(队首)取出元素。解决出队是 时间复杂度问题 LoopQueue。使用Stream的方式。

2022-10-19 17:15:04 64

原创 Redis进阶

(1)数据是存储在内存中,读取快,cpu不是瓶颈;(2)结构简单,key-value形式,底层是hash结构,查询操作速度为O(1);(3)IO多路复用,非阻塞IO模型,提高连接访问速度;(4)单线程执行命令,不存在线程切换,减少消耗,且线程是安全的。

2022-10-19 17:08:39 65

原创 Redis

redis主要用于数据存储;redis运行在内存中,数据也保存在内存中;它可以用作数据库、缓存和消息中间件(缓存:让数据离程序更近)。

2022-10-19 17:07:07 51

原创 Linux

1.linux是一款开源的、免费的操作系统,是在unix基础上开发的。支持网络、多用户、多线程和多CPU的操作系统。Linux能运行主要的unix工具软件、应用程序和网络协议。它支持32位和64位硬件。2.内核版本一般所说的linux,指的是内核版本,最核心的,与硬件交互。内核是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序,它提供了一个在裸设备与应用程序间的抽象层。3.发行版本。

2022-10-19 17:05:16 48

原创 AOP面向切面编程

可以将一些公共的,重复出现的非业务代码进行提取,然后用动态代理的方式,为业务代码横切添加额外提取的功能,而且不需要显示的在业务代码中调用,可以通过一个代理对象,来帮我们调用这些抽取出来的方法。在业务代码执行时,有时一个业务操作需要向数据库发送多条sql,多条sql属于同一个业务的,要求是一个整体,要么都执行成功,要么都不成功。1.同一个类中方法调用,导致声明式事务失效(在自己类中调用,就是普通方法调用,不会走代理的环绕通知)(1)在xml中配置 (需要大量的配置,为需要在事务管理中的方法增强功能)

2022-10-19 17:01:53 322

原创 Spring JDBC

Spring 是个一站式框架:Spring 自身也提供了控制层的 SpringMVC 和 持久层的 Spring JdbcTemplate。1.spring是如何使用IOC管理其他bean,提供JDBC Template(了解即可)增删改查,mybatis1.1 spring管理数据库连接对象让spring管理阿里数据源对象 druid -德鲁伊实现了数据库连接池功能,减少了频繁创建销毁数据库连接的开销1.2 生成提供jdbcTemplate。

2022-10-19 16:59:25 49

原创 Spring

spring是什么?spring是一个轻量级的,非侵入式的,IOC和AOP的一站式框架,为简化企业级应用开发而生轻量级:体积小,占用资源少非侵入式:我们的业务代码中的类,不会继承实现spring框架中的类和接口IOC:Inversion of Control 控制反转 以前程序中使用对象是程序员自己new使用了spring以后,我们不需要new对象,由spring框架来管理生成对象AOP:面向切面编程一站式框架:它集项目整体管理,数据访问,web,测试等等于一体。

2022-10-19 16:44:16 179

原创 Mybatis

拼 接 符 , 会 传 入 参 数 字 符 串 , 取 值 以 后 再 去 编 译 S Q L 语 句 , {}拼接符,会传入参数字符串,取值以后再去编译SQL语句,拼接符,会传入参数字符串,取值以后再去编译SQL语句,方式无法防止sql注入。读取到了配置文件后,生成SqlSessionFactory对象,此对象的创建开销较大,所以在一个项目中一般只创建一次它里面就封装mybatis配置信息,由它来为每一次数据库连接操作创建一个SqlSession 对象*/帮助我们调用与接口中方法名相同的sql*/

2022-10-19 16:35:03 49

原创 maven

maven是apeche的一个开源项目,主要用来构建项目,可以帮助开发者,管理项目中jar,以及jar包之间依赖关系,完成项目编译,测试,打包等工作。在使用时,先从远程仓库将jar下载本地仓库,以后使用时,就直接从本地仓库关联即可。provided:项目打包时,不会将此jar包打包到项目中,因为服务器环境会提供。compile:默认值 编译运行时需要,打包时,会将jar包打包到项目中。maven建立一个jar的仓库,收集众多的jar包,在中央仓库。配置项目信息,如何编译,插件,最重要的是jar的坐标。

2022-10-19 13:06:09 51

原创 Servlet

会话对象是容器创建的,并保存在容器中,如果客户端连接到服务器后,不做任何操作,那么容器维护这些会话对象将占用很多资源。因此,容器会在默认时间内销毁会话对象,多数容器默认30分钟销毁会话对象。使用此对象异步向服务器发送请求,后端响应的内容会反馈给XMLHttpRequest对象,再从js中把响应的内容更新到网页的某个标签上,整个过程页面不会被覆盖,不会刷新。HttpSession是接口,会话对象是Web容器创建的,在Servlet中使用HttpServletRequest中的方法获得会话对象。...

2022-07-17 17:53:10 85

原创 day22:leetcode11

1

2022-06-20 22:13:18 45

原创 day21:leetcode349

算法

2022-06-09 00:42:39 47

原创 day20:leetcode9

/*9. 回文数 easy 给你一整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 例如,121 是回文,而 123 不是。*/class Solution9a { public boolean isPalindrome(int x) { Deque<Character> stack = new ArrayDeque&l.

2022-05-26 01:12:31 56

原创 day19:leetcode8

/*8.字符串转换整数(atoi)medium 请你来实现一个myAtoi(string s)函数,使其能将字符串转换成一个 32位有符号整数(类似 C/C++中的 atoi 函数)。 函数myAtoi(string s)的算法如下: 读入字符串并丢弃无用的前导空格 检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。 读入.

2022-05-26 01:11:25 53

原创 day18:leetcode108

/*108. 将有序数组转换为二叉搜索树 easy 给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。 高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。*//** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode rig.

2022-05-20 18:43:48 68

原创 day17:sword24

/*剑指 Offer 24. 反转链表 easy 定义一个函数,输入一个链表的头节点,反转该le链表并输出反转后链表的头节点。*/import java.util.List;/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */// .

2022-05-19 19:58:55 43

原创 day16:leetcode102

/*102. 二叉树的层序遍历 medium 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)*//** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val.

2022-05-19 19:56:49 69

转载 day15:sword22

/*剑指 Offer 22. 链表中倒数第k个节点 easy 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯, 本题从1开始计数,即链表的尾节点是倒数第1个节点。 例如,一个链表有 6 个节点,从头节点开始, 它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。*//** * Definition for singly-linked list. * public class List.

2022-05-17 19:28:44 51

原创 day14:leetcode21

/*21. 合并两个有序链表 easy 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。*//** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * .

2022-05-17 18:42:59 33

原创 day13:leetcode7

/*7. 整数反转 medium 给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围[−231, 231− 1] ,就返回 0。 假设环境不允许存储 64 位整数(有符号或无符号)。*/class Solution7 { public int reverse(int x) { int res = 0; while (x != 0) { .

2022-05-13 01:19:14 33

原创 day12:leetcode06

/* medium6. Z 字形变换将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行Z(v) 字形排列。 比如输入字符串为 "PAYPALISHIRING"行数为 3 时,排列如下: P A H N A P L S I I G Y I R */import java.util.ArrayList;import java.util.List;class Solution.

2022-05-12 00:56:46 41

原创 day11:sword59Ⅱ

/* medium请定义一个队列并实现函数 max_value 得到队列里的最大值, 要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。 若队列为空,pop_front 和 max_value需要返回 -1*/import java.util.*;class MaxQueue { Queue<Integer> q; Deque<Integer> dq; publi.

2022-05-11 00:59:57 40

原创 day10:sword09

/*剑指 Offer 09. 用两个栈实现队列 easy 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead , 分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead操作返回 -1 )*/import java.util.ArrayDeque;import java.util.Deque;class CQueue { Deque<Integer> st.

2022-05-11 00:58:19 42

原创 day08:sword03

/*剑指 Offer 03. 数组中重复的数字 easy 找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。 数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。 请找出数组中任意一个重复的数字。*/import java.util.HashSet;import java.util.Set;class Solution3 { public int .

2022-05-11 00:56:23 33

原创 day07:leetcode27

/*27. 移除元素 easy 给你一个数组 nums和一个值 val,你需要 原地 移除所有数值等于val的元素, 并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。*/class Solution27 { public int removeElement(int[] nums, int val) { .

2022-05-11 00:53:12 42

原创 day06:leetcode05

/*5. 最长回文子串 mdeium 给你一个字符串 s,找到 s 中最长的回文子串。*/// 中心扩散import java.lang.management.ManagementFactory;class Solution5a { public String longestPalindrome(String s) { int left = 0; int right = 0; int maxlen = 1; .

2022-05-11 00:51:53 31

原创 day05:leetcode1047

/*1047. 删除字符串中的所有相邻重复项 easy 给出由小写字母组成的字符串S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。 在 S 上反复执行重复项删除操作,直到无法继续删除。 在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。*/// 字符串模拟栈class Solution1047b { public String removeDuplicates(String s) { StringBuilder.

2022-05-11 00:49:48 116

原创 day04:leetcode682

/*682. 棒球比赛 easy 比赛开始时,记录是空白的。你会得到一个记录操作的字符串列表 ops, 其中 ops[i] 是你需要记录的第 i 项操作,ops 遵循下述规则: 整数 x - 表示本回合新获得分数 x "+" - 表示本回合新获得的得分是前两次得分的总和。题目数据保证记录此操作时前面总是存在两个有效的分数。 "D" - 表示本回合新获得的得分是前一次得分的两倍。题目数据保证记录此操作时前面总是存在一个有效的分.

2022-05-11 00:47:34 49

原创 day03:leetcode27

/* easy27. 移除元素 给你一个数组 nums和一个值 val,你需要 原地 移除所有数值等于val的元素, 并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。*/class Solution27 { public int removeElement(int[] nums, int val) { .

2022-05-11 00:45:59 63

原创 day02:leetcode03

/*3. 无重复字符的最长子串 medium 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。*/// 滑动窗口import java.util.HashMap;class Solution3 { public int lengthOfLongestSubstring(String s) { // k : 值 v:索引 HashMap<Character, Integer> m = new HashMa..

2022-05-11 00:44:15 38

原创 day1-leetcode01

/*1. 两数之和 easy 请你在该数组中找出 和为目标值 target 的那两个整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。*/import java.util.HashMap;class Solution1 { public int[] twoSum(int[] nums, int target) { HashMap<In.

2022-05-11 00:42:03 59

原创 CSS学习笔记

一. 入门CSS:Cascading Style Sheet 层叠样式表CSS:表现(美化网页)字体,颜色,边距,高度,宽度,背景图片,网页定位,网页浮动CSS 注释:/*注释内容*/二. 3种常用导入方式1.行内样式:在标签的 style 属性上设置”key:value value;”<body><!--需求 1,分别修改每个 div 标签的样式为:边框 1 个像素,实线,红色。--><div style="border: 1px so

2022-05-02 15:25:39 143

原创 html 知识点

一. 基本知识1. 图像标签<!--src:资源地址 相对地址,绝对地址 ../上级地址 alt:在图片加载失败的时候,就会用文字代替 title:鼠标悬停在图片上时,所显示的名字 width height 图片的高和宽 --><img src="../xxx.jpg" alt="图像不见了" title="悬停文字">2. 超链接<!--href:跳转页面的地址

2022-04-08 14:58:08 196

原创 Mysql数据处理之增删改

目录一. 插入数据二. 更新数据三. 删除数据四.MySQL8的新特性:计算列:一. 插入数据方式1:VALUES的方式添加,一次只能向表中插入一条数据。 情况1:为表的所有字段按默认顺序插入数据INSERT INTO departmentsVALUES (70, 'Pub', 100, 1700);情况2:指明要添加的字段 (推荐)INSERT INTO departments(department_id, departme...

2022-03-25 15:26:12 632

原创 Mysql之创建与管理表

目录一. 创建和管理数据库1. 创建数据库:2.使用数据库3. 修改数据库二. 创建表1.创建数据表2. 查看数据表结构三. 修改表1. 追加一个列2.修改一个列3.重命名一个列4.删除一个列5. 重命名表6. 删除表7. 清空表一. 创建和管理数据库1. 创建数据库:方式1:创建数据库CREATE DATABASE 数据库名;方式2:创建数据库并指定字符集CREATE DATABASE mytest...

2022-03-25 14:58:03 1027

空空如也

空空如也

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

TA关注的人

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