自定义博客皮肤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)
  • 收藏
  • 关注

原创 SpringBoot整合RabbitMQ

/1.交换机//2.Queue 队列//3. 队列和交互机绑定关系 Binding/*1. 知道哪个队列2. 知道哪个交换机*/@Bean@Component启动运行结果。

2023-09-16 12:35:04 317 1

原创 Spring整合RabbitMQ

① 创建生产者工程② 添加依赖③ 配置整合④ 编写代码发送消息① 创建消费者工程② 添加依赖③ 配置整合④ 编写消息监听器。

2023-09-15 16:45:59 652

原创 RabbitMQ及各种模式

MQ全称MessageQueue(消息队列),是在消息的传输过程中保存消息的容器。多用于分布式系统之间进行通信。MQ,消息队列,存储消息的中间件。发送方称为生产者,接收方称为消费者分布式系统通信两种方式:直接远程调用借助第三方完成间接通信。

2023-09-15 14:57:30 854

原创 Spring----IOC、注解

Spring:春天------>给软件行业带来了春天!2002,首次推出了Spring框架的雏形: interface21框架!Spring框架即以interface21框架为基础,经过重新设计,并不断丰富其内涵,于2004年3月24日,发布了1.0正式版。,著名作者。很难想象Rod Johnson的学历,真的让好多人大吃一惊,他是悉尼大学的博士,然而他的专业不是计算机,而是音乐学。spring理念:使现有的技术更加容易使用,本身是一个大杂烩,整合了现有的技术框架!

2023-09-11 11:29:41 220

原创 Redis进阶

主从切换技术的方法是︰当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式。Redis从2.8开始正式提供了Sentinel (哨兵)架构来解决这个问题。谋朝篡位的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库。哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。

2023-09-08 21:22:07 331

原创 Redis基础详解

真实的开发一般使用json来传递对象,直接传递对象会报错,所有的对象需要序列化@Component//在企业中,我们的所有pojo都会序列化//自己定义一个RedisTemplate@Bean//我们为了自己开发方便,一般直接使用// Json序列化配置//String 的序列化// key采用String的序列化方式// hash的key采用String的序列化方式// Value序列化方式采用jackson。

2023-09-08 10:08:04 490

原创 Java泛型(待补充)

泛型类型是在实例化对象时确定的,而静态方法是在类加载时就可以直接调用的,无需创建对象实例。所以静态方法中的返回值、参数等不能依赖泛型类型,必须将静态方法的泛型类型和实例类型的泛型类型区分开。此外,静态方法是与类本身相关联的,而不是与类的实例相关联的。因此,即使创建了一个类的实例,静态方法也无法访问实例的泛型类型。这是不可能的,JDK的class就有上千个,而且它还不知道其他人编写的class。可以在接口中定义泛型类型,实现此接口的类必须实现正确的泛型类型。通常来说,泛型类一般用在集合类中,例如。

2023-09-04 23:12:37 121

原创 JavaBean

如果读写方法符合以下这种命名规范:那么这种被称为上面的字段是,那么读写方法名分别以和开头,并且后接大写字母开头的字段名,因此两个读写方法名分别是和。字段比较特殊,它的读方法一般命名为:二、我们通常把一组对应的读方法()和写方法()称为属性()。例如,属性:只有的属性称为只读属性(read-only),例如,定义一个age只读属性:类似的,只有的属性称为只写属性(write-only)。很明显,只读属性很常见,只写属性不常见。属性只需要定

2023-09-04 12:20:51 81

原创 Java动态代理

所谓动态代理,是和静态相对应的。Java标准库提供了动态代理功能,允许在运行期动态创建一个接口的实例;没有实现类但是在运行期动态创建了一个接口对象的方式,我们称为动态代码。JDK提供的动态创建接口对象的方式,就叫动态代理。需要实现的接口数组,至少需要传入一个接口进去;,并不存在可以直接实例化接口的黑魔法。创建代理对象,然后将接口方法“代理”给。这种方式就是我们通常编写代码的方式。还有一种方式是动态代码,我们仍然。实例,它负责实现接口的方法调用;用来处理接口方法调用的。在运行期动态创建一个。

2023-09-02 22:25:28 215

原创 Java空指针异常

在所有的异常中,Java程序员最熟悉的恐怕就是了。即空指针异常,俗称NPE。null指针这个概念实际上源自C语言,Java语言中并无指针。我们定义的变量实际上是引用,Null Pointer更确切地说是Null Reference,不过两者区别不大。

2023-09-02 22:03:27 317

原创 Java自定义异常

在一个大型项目中,可以自定义新的异常类型,但是,保持一个合理的异常继承体系是非常重要的。通过IDE可以根据父类快速生成子类的构造方法。抛出异常时,尽量复用JDK已定义的异常类型;自定义异常时,应该提供多种构造方法。派生“根异常”,再派生出业务异常;例如,参数检查不合法,应该抛出。当我们在代码中需要抛出异常时,上述构造方法实际上都是原样照抄。自定义异常体系时,推荐从。

2023-09-02 21:15:39 513

原创 Java抛出异常

调用可以打印异常的传播栈,对于调试非常有用;捕获异常并再次抛出新的异常时,应该持有原始异常信息;通常不要在finally中抛出异常。如果在finally中抛出异常,应该原始异常加入到原有异常中。调用方可通过获取所有添加的。通过可以打印出方法的调用栈,类似:对于调试错误非常有用,上述信息表示:NumberFormatExceptionmain()process1()process1()process2()process2()查看并且,每层调用均给出了源代码的行号,可直接定位。

2023-09-02 20:57:21 362

原创 Java捕获异常

使用时:多个catch语句的匹配顺序非常重要,子类必须放在前面;finally语句保证了有无异常都会执行,它是可选的;一个catch语句也可以匹配多个非继承关系的异常。

2023-09-02 17:36:46 333

原创 Java异常处理

一个健壮的程序必须处理各种各样的错误。所谓错误,就是程序调用某个函数的时候,如果失败了,就表示出错异常是一种class,因此它本身带有类型信息。异常可以在任何地方抛出,但只需要在上层捕获,这样就和方法调用分离了classThrowableObject。Throwable有两个体系:ErrorExceptionError而Exception。某些异常是应用程序逻辑处理的一部分,应该捕获并处理。还有一些异常是程序逻辑编写不对造成的,应该修复程序本身。

2023-09-02 17:11:02 172

原创 Java注解和反射

一个Class对象包含了特定某个结构(class/interface/enum/annotation/primitive type/void/[])的有关信息。这些类型和它们所支持的类在java.lang.annotation包中可以找到(@Target , @Retention,@Documented , @lnherited )只要在操作的时候明确的调用类中的构造器,并将参数传递进去之后,才可以实例化操作。//结果db_student。通过反射,调用类中的方法,通过Method类完成。

2023-09-01 18:23:27 163

原创 JVM类加载器

类加载器虽然只用于实现类的加载动作,但它在Java程序中起到的作用却远超类加载阶段。对于任意一个类,都必须由加载它的类加载器和这个类本身一起共同确立其在Java虚拟机中的唯一性,每一个类加载器,都拥有一个独立的类名称空间。这句话可以表达得更通俗一些:比较两个类是否“相等”,只有在这两个类是由同一个类加载器加载的前提下才有意义,否则,即使这两个类来源于同一个Class文件,被同一个Java虚拟机加载,只要加载它们的类加载器不同,那这两个类就必定不相等。这里所指的“相等”,包括代表类的Class对象的equa

2023-08-31 21:47:28 533

原创 JVM类加载机制

从概念上讲,这些变量所使用的内存都应当在方法区中进行分配,但必须注意到方法区本身是一个逻辑上的区域,在JDK 7及之前,HotSpot使用永久代来实现方法区时,实现是完全符合这种逻辑概念的;而在JDK 8及之后,类变量则会随着Class对象一起存放在Java堆中,这时候“类变量在方法区”就完全是一种对逻辑概念的表述了。

2023-08-31 17:00:16 553

原创 JVM垃圾回收算法和CMS垃圾收集器

垃圾收集需要完成的三件事情:引用计数法:在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加一;当引用失效时,计数器值就减一;任何时刻计数器为零的对象就是不可能再被使用的。客观地说,引用计数算法(Reference Counting)虽然占用了一些额外的内存空间来进行计数,但它的原理简单,判定效率也很高,在大多数情况下它都是一个不错的算法。但是,在Java领域,至少主流的Java虚拟机里面都没有选用引用计数算法来管理内存,主要原因是,这个看似简单的算法有很多例外情况要考虑,必须要配合大量额外处

2023-08-31 14:12:38 564

原创 JVM虚拟机对象探秘

以便在极小的空间内存储尽量多的数据,根据对象的状态复用自己的存储空间。例如在32位的HotSpot虚拟机中,如对象未被同步锁锁定的状态下,Mark Word的32个比特存储空间中的25个比特用于存储对象哈希码,4个比特用于存储对象分代年龄,2个比特用于存储锁标志位,1个比特固定为0,在其他状态(轻量级锁定、重量级锁定、GC标记、可偏向)下对象的存储内容如下图所示。对象头的另外一部分是。

2023-08-31 11:00:24 283

原创 Java虚拟机内部组成

在GC开始的时候,对象只会存在于Eden区和名为From的Survivor区,To区是空的,一次MinorGc过后,Eden区和SurvivorFrom区存活的对象会移动到SurvivorTo区中,然后会清空Eden区和SurvivorFrom区,并对存活的。Java程序是多线程运行的,比如当我们执行线程A的11行代码,突然出现优先级更高的线程B,那么线程A会被挂起,线程B执行结束后继续执行线程A,那么从哪里开始继续运行呢?本地方法栈:本地方法调用时,本地方法栈会给当前线程分配一块栈内存来运行本地方法 (

2023-08-30 15:39:53 244

原创 gitee教程详解(超详细,看这一篇就够了!)

版本控制系统不但能自动帮记录每次文件的改动,还可以让其他人协作编辑,这样就不用自己管理一堆类似的文件了,也不需要把文件传来传去。如果想查看某次改动,只需要在软件里查看就可以,能记录每次文件的改动。

2023-08-27 22:55:24 3935

原创 npm 卸载 vuecli后还是存在

运行了npm uninstall vue-cli -g,之后是up to date in,然后vue -V,版本号一直都在,说明没有卸载掉

2023-08-26 11:05:25 1245 1

原创 vue ui 创建项目没有反应

vue ui命令需要vue3.0以上的版本vue版本在3.0以下是没有ui命令的vue -hvue -V等待安装......vue -Vvue -h。

2023-08-25 22:45:01 1732

原创 synchronized锁升级

在 Java SE 1.6中,锁一共有4种状态级别从低到高依次是:无锁状态、偏向锁状态轻量级锁状 态和重量级锁状态这几个状态会随着竞争情况逐渐升级。锁可以升级但不能降级,意味着偏向锁升级成轻量级锁后不能降级成偏向锁。

2023-08-24 21:05:30 257 1

原创 Java面向对象

java是面型对象的编程语言,而面向对象又是什么呢???面向过程呢?面向对象和面向过程其实都是编程思路。举一个例子,做一件事:把大象放到冰箱中。做这件事的思路有两种,面向过程思路:按照步骤依次执行程序,大象放到冰箱前->冰箱门打开->大象放进去->关门,重点是做事。面向对象思路:首先区抽离出参与的对象,然后,调用对象相关方法完成执行程序需求。抽离出大象、冰箱两个对象,创建类,大象类有,大耳朵长鼻子体重,身高,跑跳走方法等等单独定义出来;冰箱类有尺寸,制冷,冰箱门开,冰箱门关等等方法。

2023-08-23 23:11:23 252

原创 Spring循环依赖

代码上述代码如果交给Spring IOC就会很复杂,面临两个问题,死循环创建和AOP代理。

2023-08-22 23:07:05 313

原创 Java详解编译型和解释型语言

字面上来说编译和解释都有‘翻译’的意思,而她们两个的区别是‘翻译’的时机不同,什么时候去翻译。举一个例子,A是中国人,B是美国人。A写了一本小说,B想看但因为语言不同,可以选择两种解决方式。第一种:把整本书全部翻译成一本英文书;第二种,找一个翻译官,看一段翻译一段,他翻回去看之前的,翻译官也要回去重新翻译。这两种方式都可以让美国人把书看完,但是如果小说更新了,第一种就需要把正本小说重新翻译一遍,代价比较大,而第二种可以实时翻译,那边改了这边可以直接翻译节省一些成本,两种方式各有好处。

2023-08-21 22:55:25 342

原创 JDK JRE JVM 三者之间的详解

JDK包含JRE,相当于是JRE的父亲级别,JDK是在JRE的基础上扩充了一些开发工具,让我们开发者可以使用的,而JRE是我们的运行时环境,只要安装了JRE我们就能运行java程序,但是如果要学开发的话就需要安装JDK,现实情况下安装JDK就行了,因为JDK包含JRE。可以简单地把它当作一种规范,可以用软件来实现,也可以用硬件来实现,相当于在所有的操作系统中模拟一个小小的CPU去处理Java相关的东西,有两种运行方式,分别是解释型和编译型。,可以从上图可以看出,JDK和JRE的联系?

2023-08-21 22:14:50 1013

原创 块/ if else/ switch /for for each

块/ if else/ switch /for for each

2023-08-20 22:49:05 369

原创 java可变字符串

起初计算机操作字符串,要求稳,StringBuffer支持多线程操作,这个字符串可能被好多个任务同时进行操作,例如A线程要改为“asd”B现成要改为“vbn”,会出现一些错乱问题,而StringBuffer牺牲了些性能,去协调多线程,保证线程安全,数据不丢失不发生错乱。如果不需要多线程,单线程下可以用StringBuilder,快一些。str),例如insert(2,"吖吼"),在索引号2的位置插入字符串''吖吼''StringBuilder所需时间。str)替换字串,替头不替尾。String所需时间。

2023-08-20 21:42:14 462

原创 String类的常用方法(api)

左闭右开[0,5),要头不要尾只有一个参数从第6位开始直到最后二、equals(Object anObject)等值比较int index。

2023-08-20 15:44:27 172

原创 Java字符串

虽然输出结果变了,但是并不是代表字符串是可变的;而是新建了"4"的字符串,地址从String a 指向地址333改为指向地址555。用"==" 比较,是对"值(字符串的地址)"进行比较,0x88=0x88,返回结果为true,引用的是统一份内容。根据JDK的版本不同,字符串常量池存放的位置不同。(a==b)地址不同,9999!当字符串没有变量引用的时候,而是现成的字符串,直接合并。字符串常量池从方法区的永久代移除,放在了。之前字符串常量池在方法区(想法)中的。,字符串常量池存放在元空间中。

2023-08-19 23:26:04 151

原创 互联网架构BS

有jdk选项点击finish结束,没有jdk选项的,执行下述操作-----------------------------------------------如果没有勾选这个框,不会自动生成web.xml文件;想要添加,可以手动添加。右击-->Run As--->Run on Server。在WebContent目录下新建html文件。右击项目-->点击Properties。找到文件中jdk所在位置。

2023-08-18 22:53:41 36

原创 Java---变量、常量

(例如:建一个方便面工厂的类,对象属性:面重量,面饼形状,包装,生产日期... 【每个都不相同】,类属性:厂长,地址【只有一个,相同共享】)整型默认是0,字符型默认是空,布尔型默认是false,浮点型默认0.0,引用类型默认是null。局部变量是在栈区开辟空间的,全局变量是在堆区或静态常量池中开辟空间。全局变量分为对象属性(独立空间)和类属性〈共享空间)全局变量(不在任何方法中定义)常量是使用final关键字修饰。并且可以是字母或者下划线开头。局部变量(在方法中定义)全局常量必须初始化赋值。

2023-08-08 23:21:06 283

原创 Java2--引用类型 JVM内存分配图

属性定义方法定义int a =10;//基本类型,直接赋值//引用类型的使用//new出具体的对象,实例化。Person是一个概念,p1是一个具体的//引用类型的定义class Person{//Person类在所属包下范围都可用//属性定义//方法定义public void m1() {//void表示没有返回值类型,啥也不返回System.out.println("我是Persion类的m1方法");

2023-07-31 22:40:32 277

原创 金银铜奖牌排序----Java

其次,编写一个排序方法Hand(arr)对二维数组中的一维数组进行排序,首先根据第一位(金)排序,第一位相同,再根据第二位(银)排序,第二位相同再根据第三位(铜)排序,这里使用Arrays.sort()和lambda 表达式()->{}对数组进行排序,首先构建一个样例输入中的数组----即构建二维数组int[][] arr。接来下的n 行 每行三个数字 分别代表 金牌数量 银牌数量 铜牌数量 中间用空格隔开。奥运会开始了,想请你为各个国家和地区做奖牌排序,按照金牌>银牌>铜牌的格式进行排序。

2023-07-25 21:40:48 651

原创 十七、SSM框架整合

由于,所以Spring MVC 与Spring之间不存在整合的问题,只要引入相应JAR包就可以直接使用。因此 SSM框架的整合就只涉及,以及,如图所示。在第10章讲解同样,要实现SSM框架的整合,首先要准备,以及其他。在第10章讲解Spring 与MyBatis框架整合时,已经介绍了Spring 与MyBatis整合所需要的JAR包,这里只需要再加入 Spring MVC的相关JAR包即可,具体如下。因此,SSM整合时所需的全部JAR包如图所示。

2023-07-19 17:37:44 167

原创 十六、文件上传和下载

在 Eclipse 的 WebContent目录下,创建一个页面文件 download.jsp,将上述第(1)步的页面代码编写到 download.jsp 中,然后将第(2)步的 fileDownload()方法编写在FileUploadController类中。在后台使用Spring MVC提供的ResponseEntity类型对象完成文件下载,使用它可以很方便的定义返回的HttpHeaders对象和HttpStatus对象,通过对这两个对象的设置,即可完成下载文件时所需的配置信息。

2023-07-19 15:03:57 251

原创 十五、通过拦截器来完成一个用户登录权限验证的案例

在用户登录方法中,先通过User类型的参数获取了用户名和密码,然后通过if语句来模拟从数据库中获取到用户名和密码后的判断。( 6)在 WEB-INF目录下的jsp文件夹中,创建一个登录页面login.jsp,在页面中编写一个用于实现登录操作的 form表单。从图可以看出,当用户未登录而直接访问主页面时,访问请求会被登录拦截器拦截,从而跳转到登录页面,并提示用户未登录信息。如果在用户名输入框中输入“jack",密码框中输入“123456”,当单击“登录”按钮后,浏览器的显示结果如图所示。

2023-07-18 18:12:15 192

原创 十五、拦截器

在实际项目中,拦截器的使用是非常普遍的,例如在购物网站中通过拦截器可以拦截未登录的用户,禁止其购买商品,或者使用它来验证已登录用户是否有相应的操作权限等。(1)在Eclipse 中,创建一个名为chapter15的 Web项目,将Spring MVC程序运行所需JAR包复制到项目的lib目录中,并发布到类路径下。在上述拦截器的配置代码中,第一个拦截器会作用于所有路径下的请求,而第二个拦截器会作用于以“/hello”结尾的请求。如果在项目中只定义了一个拦截器,那么该拦截器在程序中的执行流程如图所示。

2023-07-18 17:12:47 286

空空如也

空空如也

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

TA关注的人

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