草庐IT

Redis—问题(1)

写在前面Redis是一种NoSQL数据库,包含多种数据结构、支持网络、基于内存、可选持久性的键值对存储数据库,在我们的日常开发中会经常使用Redis来解决许多问题,比如排行榜、消息队列系统、计数器以及缓存系统等。在作为缓存使用时,不可避免的会遇到缓存穿透、缓存雪崩、缓存击穿(热点key)的问题,那么究竟这些问题具体值的是什么,又该如何解决呢?什么是缓存穿透缓存穿透是指客户端请求的数据在缓存和数据库中都不存在,引起缓存失效,并会对数据库造成极大的压力。常见的解决方案有两种:缓存空对象优点:实现简单,维护方便缺点:额外的内存消耗可能造成短期的不一致布隆过滤优点:内存占用少,没有多余的key缺点:实

javase重开2022年9月21日

Boolean类型java中返回trueorfalse而在C语言中返回0表示false其余皆为true类型转换隐式类型转换隐式类型转换支持字节数小的类型自动转换为字节数大的类型,整数类型自动转换为小数类型,转换规则如下:●byte→short(char)→int→long→float→double是全长度参与计算,所以看似小的float也可以容纳long,只是会丢失部分精度显示类型转换显式类型转换也叫做强制类型转换,也就是说,违反隐式转换的规则,牺牲精度强行进行类型转换。Stringbuilderinta=1;intb=2;System.out.println(a+b);//输出12调用Str

javase重开2022年9月21日

Boolean类型java中返回trueorfalse而在C语言中返回0表示false其余皆为true类型转换隐式类型转换隐式类型转换支持字节数小的类型自动转换为字节数大的类型,整数类型自动转换为小数类型,转换规则如下:●byte→short(char)→int→long→float→double是全长度参与计算,所以看似小的float也可以容纳long,只是会丢失部分精度显示类型转换显式类型转换也叫做强制类型转换,也就是说,违反隐式转换的规则,牺牲精度强行进行类型转换。Stringbuilderinta=1;intb=2;System.out.println(a+b);//输出12调用Str

项目实战:并发下保证接口的幂等性

1.1幂等性的概念Methodscanalsohavethepropertyof"idempotence"inthat(asidefromerrororexpirationissues)theside-effectsofN>0identicalrequestsisthesameasforasinglerequest.多次请求一个资源时,应该有相同的结果(网络超时等问题除外)。也就是说,一次请求被多次重复执行对资源自身的影响与第一次执行的影响相同。例如:用户查询结果多次扣款。流水记录变成两个就是没有保证接口的幂等性。1.2防重设计和幂等设计防重设计和幂等设计在很多情况下是可以通用的,解决方案也比

项目实战:并发下保证接口的幂等性

1.1幂等性的概念Methodscanalsohavethepropertyof"idempotence"inthat(asidefromerrororexpirationissues)theside-effectsofN>0identicalrequestsisthesameasforasinglerequest.多次请求一个资源时,应该有相同的结果(网络超时等问题除外)。也就是说,一次请求被多次重复执行对资源自身的影响与第一次执行的影响相同。例如:用户查询结果多次扣款。流水记录变成两个就是没有保证接口的幂等性。1.2防重设计和幂等设计防重设计和幂等设计在很多情况下是可以通用的,解决方案也比

01-Maven入门

1、Maven1.1、Maven概念背景在一个项目中经常需要手动导入jar包,当需要的jar包数量多的时候,非常难以管理;同时还需要人为去下载各种jar包。同时不同IDE之间,项目结构不一样,造成迁移性低下,不通用的问题因此Maven被创造出来解决这个难题概念Maven是专门用于管理和构建Java项目的工具,其主要功能有:提供了一套标准化的项目结构Maven提供了一套标准化的项目结构,所有IDE使用Maven创建的项目结构完全一样,这样所有IDE创建的Maven项目就可以通用提供了一套标准化的构建流程(编译,测试,打包,发布....)提供了一套依赖管理机制Maven使用标准化的坐标配置来管理各

01-Maven入门

1、Maven1.1、Maven概念背景在一个项目中经常需要手动导入jar包,当需要的jar包数量多的时候,非常难以管理;同时还需要人为去下载各种jar包。同时不同IDE之间,项目结构不一样,造成迁移性低下,不通用的问题因此Maven被创造出来解决这个难题概念Maven是专门用于管理和构建Java项目的工具,其主要功能有:提供了一套标准化的项目结构Maven提供了一套标准化的项目结构,所有IDE使用Maven创建的项目结构完全一样,这样所有IDE创建的Maven项目就可以通用提供了一套标准化的构建流程(编译,测试,打包,发布....)提供了一套依赖管理机制Maven使用标准化的坐标配置来管理各

04-HTTP&Tomcat&Servlet入门

HTTP&Tomcat&Servlet1、JavaWeb概念Web:全球局域网,也称万维网(www),能够通过浏览器访问的网站JavaWeb:是用Java相关的技术来做网站2、JavaWeb技术栈B/S架构Browser/Server,浏览器/服务器架构模式。它的特点是,客户端只需要浏览器,应用程序的逻辑和数据都存储在服务器端。浏览器只需要请求服务器,获取Web子u按,服务器把Web资源发送给浏览器即可好处易于维护升级:服务端升级后,客户端无需任何部署就可以使用到新的版本静态资源HTML、CSS、JavaScript、图片等。负责页面展现,资源是一成不变的。动态资源Servlet、JSP等。负

04-HTTP&Tomcat&Servlet入门

HTTP&Tomcat&Servlet1、JavaWeb概念Web:全球局域网,也称万维网(www),能够通过浏览器访问的网站JavaWeb:是用Java相关的技术来做网站2、JavaWeb技术栈B/S架构Browser/Server,浏览器/服务器架构模式。它的特点是,客户端只需要浏览器,应用程序的逻辑和数据都存储在服务器端。浏览器只需要请求服务器,获取Web子u按,服务器把Web资源发送给浏览器即可好处易于维护升级:服务端升级后,客户端无需任何部署就可以使用到新的版本静态资源HTML、CSS、JavaScript、图片等。负责页面展现,资源是一成不变的。动态资源Servlet、JSP等。负

04-项目部署到Linux

三、项目部署之前我们讲解Linux操作系统时,就提到,我们服务端开发工程师学习Linux系统的目的就是将来我们开发的项目绝大部分情况下都需要部署在Linux系统中。那么在本章节,我们将通过两种方式,来演示项目部署,分别是:手动部署项目和基于shell脚本自动部署。3.1、手动部署项目3.1.1、在IDEA中开发SpringBoot项目并打包成jar包创建一个简单的项目,结构如下所示项目运行结果执行package指令,进行打包操作,将当前的SpringBoot项目,打包成jar包操作步骤Step1helloworldorg.springframework.bootspring-boot-mave