Java 异常中 e.getMessage() 和 e.toString() e.printStackTrace()的区别常见的几种异常

article/2025/10/25 7:29:01

Java 异常中 e.getMessage() 和 e.toString() e.printStackTrace()的区别

一、概述

在java异常体系中,要打印异常信息,可以通过:e.getMessage() 、 e.toString() e.printStackTrace() 等方法打印出 一些 异常信息。已知的是这些方法都可以打印异常信息,但是这些方法打印的异常信息 都不相同,那么问题来啦: 这些方法打印异常信息的区别是?日常开发工作中,该用哪个方法打印异常信息呢?

二、代码理解

1、 Junit 单元测试 — 模拟异常信息输出

@Test
public void test(){int num = 0 ;try {int  i = 3/num ;} catch (Exception e) {System.out.println(" e.printStackTrace() ==== start");e.printStackTrace();System.out.println(" e.printStackTrace() ==== end ");System.out.println();System.out.println(" e.getMessage() ==== start");System.out.println(e.getMessage());System.out.println(" e.getMessage() ==== end");System.out.println();System.out.println(" e.toString() ==== start");System.out.println(e.toString());System.out.println(" e.toString() ==== end");System.out.println();System.out.println(" e.getExceptionToString() ==== start");System.out.println(Exceptions.getExceptionToString(e));System.out.println(" e.getExceptionToString() ==== end");}
}

1.1、输出结果如下:

@Test
public void test(){int num = 0 ;try {int  i = 3/num ;} catch (Exception e) {System.out.println(" e.printStackTrace() ==== start");e.printStackTrace();System.out.println(" e.printStackTrace() ==== end ");System.out.println();System.out.println(" e.getMessage() ==== start");System.out.println(e.getMessage());System.out.println(" e.getMessage() ==== end");System.out.println();System.out.println(" e.toString() ==== start");System.out.println(e.toString());System.out.println(" e.toString() ==== end");System.out.println();System.out.println(" e.getExceptionToString() ==== start");System.out.println(Exceptions.getExceptionToString(e));System.out.println(" e.getExceptionToString() ==== end");}
}

1.2、结果分析 :

  • e.printStackTrace(): 打印完整的异常堆栈信息
  • e.getMessage(): 打印 异常的原因
  • e.toString(): 打印 异常类型 和 异常的原因
  • e.getExceptionToString(): 打印完整的异常堆栈信息

2、web 环境下 — 模拟异常信息输出

@RequestMapping("/exp")
@ResponseBody
public String exp(String key){int num = 0 ;try {int  i = 3/num ;} catch (Exception e) {System.out.println(" e.printStackTrace() ==== start");e.printStackTrace();System.out.println(" e.printStackTrace() ==== end ");System.out.println();System.out.println(" e.getMessage() ==== start");System.out.println(e.getMessage());System.out.println(" e.getMessage() ==== end");System.out.println();System.out.println(" e.toString() ==== start");System.out.println(e.toString());System.out.println(" e.toString() ==== end");System.out.println();System.out.println(" e.getExceptionToString() ==== start");System.out.println(Exceptions.getExceptionToString(e));System.out.println(" e.getExceptionToString() ==== end");}return "success";
}

2.1、输出结果如下:

e.printStackTrace() ==== starte.printStackTrace() ==== end e.getMessage() ==== start
/ by zeroe.getMessage() ==== ende.toString() ==== start
java.lang.ArithmeticException: / by zeroe.toString() ==== ende.getExceptionToString() ==== start
java.lang.ArithmeticException: / by zeroat com.runcode.springboottourist.ExpController.exp(ExpController.java:54)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:189)at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102)at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:800)at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1038)at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005)at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:897)at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882)at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:834)at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1417)at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)at java.lang.Thread.run(Thread.java:748)e.getExceptionToString() ==== end
java.lang.ArithmeticException: / by zeroat com.runcode.springboottourist.ExpController.exp(ExpController.java:54)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:189)at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102)at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:800)at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1038)at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005)at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:897)at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882)at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:834)at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1417)at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)at java.lang.Thread.run(Thread.java:748)

2.2、结果分析:

  • e.printStackTrace(): 打印完整的异常堆栈信息 (在e.getExceptionToString 后面) e.getMessage(): 打印 异常的原因
  • e.toString(): 打印 异常类型 和 异常的原因
  • e.getExceptionToString(): 打印完整的异常堆栈信息

三、总结

1、Exceptions.getExceptionToString(e) 方法,参考这里:java中将异常Exception转化为String字符串输出

2、e.getMessage() 和 e.toString() 方法: 打印的异常信息太少,没有具体的堆栈信息,不利于问题的定位处理, 不建议使用!

3、e.printStackTrace() 和 Exceptions.getExceptionToString(e) 方法:都可以打印完整的异常堆栈信息; 二者的区别是: e.printStackTrace() 在遇到大量并发访问 且 出现异常时,会发生:内存被占满的情况,导致服务挂掉,不可用 …

4、日常开发中,会使用 log.error 来打印异常信息,下面比较几种 log.error 打印异常信息的区别:

@RequestMapping("/log")
@ResponseBody
public String log(String key){int num = 0 ;try {int  i = 3/num ;} catch (Exception e) {System.out.println(" log.error(\"exp failure \"+ e) ==== start");log.error("exp failure "+ e);System.out.println(" log.error(\"exp failure \"+ e) ==== end");System.out.println();System.out.println(" log.error(\"exp failure {}\"+ e) ==== start");log.error("exp failure {}" + e);System.out.println(" log.error(\"exp failure {}\"+ e) ==== end");System.out.println();System.out.println(" log.error(\"exp failure {}\", e) ==== start");log.error("exp failure {}" , e);System.out.println(" log.error(\"exp failure {}\" ,e) ==== end");System.out.println();System.out.println(" log.error(\"exp failure {}\", getExceptionToString) ==== start");log.error("exp failure {}" , Exceptions.getExceptionToString(e));System.out.println(" log.error(\"exp failure {}\" ,getExceptionToString) ==== end");}return "success";
}

4.1、输出结果:

1、 log.error("exp failure "+ e) ==== start2022-09-20 16:48:51.783 ERROR 34220 --- [nio-8080-exec-8] c.r.springboottourist.ExpController : exp failure java.lang.ArithmeticException: / by zerolog.error("exp failure "+ e) ==== end2、 log.error("exp failure {}"+ e) ==== start2022-09-20 16:48:51.783 ERROR 34220 --- [nio-8080-exec-8] c.r.springboottourist.ExpController : exp failure {}java.lang.ArithmeticException: / by zerolog.error("exp failure {}"+ e) ==== end3、 log.error("exp failure {}", e) ==== start2022-09-20 16:48:51.784 ERROR 34220 --- [nio-8080-exec-8] c.r.springboottourist.ExpController : exp failure {}java.lang.ArithmeticException: / by zero-- 省略异常堆栈信息log.error("exp failure {}" ,e) ==== end4、 log.error("exp failure {}", getExceptionToString) ==== start2022-09-20 16:48:51.785 ERROR 34220 --- [nio-8080-exec-8] c.r.springboottourist.ExpController : exp failure java.lang.ArithmeticException: / by zero-- 省略异常堆栈信息log.error("exp failure {}" ,getExceptionToString) ==== end

4.2、结果分析:

1、2 两种情况:都是属于拼接字符串,实际调用的是 e.toString() 方法
3 :使用了占位符输出日志,打印了完整的堆栈信息, 但是 占位符 貌似没被识别到。
4 :使用了占位符输出日志,打印了完整的堆栈信息, 将异常对象转换为字符串后, 占位符 被识别到。

5、日常开发工作中,该用哪个方法打印异常信息呢:

1.异常对象转换为字符串:

String errMsg = Exceptions.getExceptionToString(e);
  1. 日志输出:
log.error("exp failure : {}",errMsg);

常见的几种异常常见的几种异常

异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。比如说,代码中少了一个分号,那么就会提示错误 java.lang.Error;又比如我们在数学运算的时候,让 0 作了除数,那么此时就会抛出 java.lang.ArithmeticException 异常。异常产生的原因有很多,通常来说,包括以下几类:

(1)用户输入了非法的数据;

(2)要打开的文件不存在

(3)网络通信时连接中断,或者 JVM 内存溢出

这些异常有些是因为用户的错误引起的,有些则是因为程序错误引起的,还有其他一些可能是因为物理错误引起的。通常来说,有以下三种类型的异常:

(1)检查性异常:最具代表的检查性异常就是用户错误引起的异常,这是程序无法预见的。例如要打开一个不存在的文件时,异常就会发生,这些异常在编译时不能被简单地忽略。

(2)运行时异常:运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。

(3)错误:其实错误并不是异常,而是脱离了程序员控制的问题。错误在代码中通常会被忽略。例如,当栈溢出时,错误就发生了,它们在编译也检查不到的。

Exception 类的层次

所有的异常类其实都是从 java.lang.Exception 类继承的子类,而 Exception 类又是 Throwable 类的子类,除了 Exception 外,Throwable 还有一个子类叫 Error。Error 用来指示运行时环境发生的错误,Java 程序通常不捕获错误,错误一般发生在严重故障时,它们是在 Java 程序处理的范畴之外的。例如,JVM 内存溢出时,一般情况下,程序是不会从错误中恢复的。Exception 类有两个主要的字类:IOException 类和 RuntimeException 类。

img

Java 内置异常类

Java 语言在 java.lang 标准包中定义了一些异常类。标准运行时异常类的子类是最常见的异常类,由于 java.lang 包是默认加载到所有的 Java 程序中的,所以大部分从运行时异常类继承而来的异常都是可以直接使用的。常见的非检查性异常有:

异常名称说明
ArithmeticException当出现异常的运算条件时,抛出此异常。如,0 作为除数
ArrayIndexOutOfBoundsException使用非法索引访问数组时抛出的异常。如索引为负,或者索引大于等于数组长度
ArrayStoreException试图将错误类型的对象存储到一个对象数组时抛出的异常
ClassCaseException试图将对象强制转换为不是实例的子类时,抛出该异常
IllegalArgumentException向方法传递了一个不合法或不正确的参数时抛出该异常
IllegalMonitorStateException某一线程已经试图等待对象的监视器,或者试图通知其他正在等待对象的监视器而本身没有指定监视器的线程时抛出该异常
IllegalThreadStateException线程没有处于请求操作所要求的适当状态时抛出的异常
IllegalStateException在非法或不适当的时间调用方法时产生的异常,即 Java 环境或 Java 应用程序没有处于请求操作所要求的适当状态下
IndexOutOfBoundsException某排序索引(如对数组、字符串或向量排序时)超出范围时抛出
NegativeArraySizeException如果应用程序试图创建大小为负的数组,抛出该异常
NullPointerException当应用程序试图在需要使用对象的地方使用 null 时,抛出该异常
NumberFormatException当应用程序试图将字符串转换成一种数值类型,但该字符串不能转换为适当格式时,抛出该异常
SecurityException由安全管理器抛出的异常,指示存在安全侵犯
StringIndexOutOfBoundsExceptionString 字符串中,索引为负,或者索引超出字符串的大小时抛出该异常
UnsupportedOperationException当不支持请求的操作时,抛出该异常

检查性异常有:

异常说明
ClassNotFoundException应用程序试图加载类时,找不到相应的类,抛出该异常
CloneNotSupportedException当调用 Object 类中的 clone 方法克隆对象,但该对象的类无法实现 Cloneable 接口时,抛出该异常
IllegalAccessException拒绝访问一个类的时候抛出该异常
InstantiationException当试图使用 class 类中的 newInstance 方法创建一个类的实例,而指定的类对象因为是一个接口或是一个抽象类而无法实例化时,抛出该异常
InterruptedException一个线程被另一个线程中断时,抛出该异常
NoSuchFieldException请求的变量不存在时抛出该异常
NoSuchMethodException请求的方法不存在时抛出该异常

异常方法

Throwable 类的主要方法:

方法说明
public String getMessage()返回关于发生的异常的详细信息
public Throwable getCause()返回一个 Throwable 对象代表异常原因
public String toString()使用 getMessage() 的结果返回类的串级名字
public void printStackTrace()打印 toString() 结果和栈层次到错误输出流
public StackTraceElement[] getStackTrace()返回一个包含堆栈层次的数组,下标为 0 的元素代表栈顶,最后一个元素代表方法调用堆栈的栈底
public Throwable fillInStackTrace()用当前的调用栈层次填充 Throwable 对象栈层次,添加栈层次中任何之前信息中

Java 异常处理方式

Java 通过面向对象的方法进行异常处理,一旦方法抛出异常,系统自动根据该异常对象寻找合适的异常处理器(Exception Handle)来处理该异常,把各种不同的异常进行分类,并提供了良好的接口。

在 Java 中,每个异常都是一个对象,它是 Throwable 类或其子类的实例。当一个方法出现异常之后便会抛出一个异常对象,该对象中包含异常信息,调用这个对象的方法可以捕获到这个异常并可以对其进行处理。Java 的异常处理是通过 5 个关键字来实现的:throw、throws、try、catch、finally。

在 Java 中,异常的处理机制分为声明异常(由关键字 throws 处理)、抛出异常(由关键字 throw 处理)和捕获异常。

throw 和 throws 的区别

位置不同:throw 在方法内部使用;throws 在方法的声明处使用;

内容不同:throw + 异常对象(检查异常,运行时异常);throws + 异常类型(可以 throws 多个类型,用 “,” 分隔即可)

作用不同:throw 使用在异常的源头,即制造异常;throws 使用在方法的声明处,即告诉方法的调用者,这个方法可能会出现声明的这种异常,调用者需要对这种异常进行处理,要么自己内部消化,要么继续向上抛。


http://chatgpt.dhexx.cn/article/coMjFYTS.shtml

相关文章

GetMessage以及消息循环说明

GetMessage以及消息循环说明 在创建窗口、显示窗口、更新窗口后,我们需要编写一个消息循环,不断地从消息队列中取出消息,并进行响应。要从消息队列中取出消息,我们需要调用GetMessage()函数,该函数的原型声明如下&…

redis使用配置文件的方式启动

文章目录 为什么用配置文件启动呢使用配置文件启动1.创建配置文件2.修改配置文件里面的参数3.以配置文件的方式启动4.查看日志文件 为什么用配置文件启动呢 因为在企业项目中不会只有单个redis实例,每个redis的config配置都可以能不一样,所以这个时候就需…

.NET Core使用Redis

环境Windows 首先安装Redis 1、下载最新版redis,选择.zip则是免安装的版本 下载地址:https://github.com/MicrosoftArchive/redis/releases 2、解压到指定目录,并运行cmd命令 3、在该文件夹下运行命令:redis-server.exe redis.…

flask使用redis

文章目录 前言一、环境二、使用步骤1.安装redis1.下载2.运行 2.安装并使用redis包1.安装2.使用 运行 前言 有人会有疑问,不是已经连上了mysql数据库了吗,为什么还要用redis数据库?有时候用户访问网页的时候,会产生一些临时性的数据&#xf…

最新版本Redis:Redis 7.0 安装使用,编译安装Redis,Redis使用场景-2022年最新Redis图解安装

最新版本Redis:Redis 7.0 安装使用,编译安装Redis,Redis使用场景。 本章主要目标: 1.Redis介绍 2.下载Redis,编译安装Redis 3.启动Redis使用 4.Redis常用数据类型 5.使用场景介绍 下面开始本章内容的学习 1.Redi…

TP5 使用redis

1.打开tp5官方手册,在缓存下面找到使用多个缓存类型 粘贴以下代码到tp框架config下面的缓存设置下 // 切换到redis操作 Cache::store(redis)->set(name,value);//获取redis Cache::store(redis)->get(rename); //实现redis 消息队列 在 /thinkphp/library/t…

C#使用Redis

Redis是一种key-value型数据库与非持久化数据,用来存于频繁操作的数据,与Sqlserver、Mysql等关系型数据库有着很大的区别,如Redis存储的数据结构不相同,还有Redis数据存于内存中,它也与Mongodb、Azure Cosmos Db、Azure TableStor…

springboot使用redis

springboot使用redis redis-service.exe : 服务端,启动后不要关闭 redis-cli.exe : 客户端,访问redis中的数据 redisclient-win32.x86_64.2.0.jar : redis的图形界面客户端,执行方式是在这个文件的目录执行 java -jar redisclient-win32.x86_64.2.0.jar或者在这个jar包的目录…

springboot集成redis使用注解

redis简介: Redis是当前比较热门的NOSQL系统之一,它是一个开源的使用ANSI c语言编写的key-value存储系统 (区别于MySQL的二维表格的形式存储。)。和Memcache类似,但很大程度补偿了Memcache的不 足。和Memcache一样&am…

Another Redis使用手册

Another Redis DeskTop Manager 跨平台、免费的redis可视化工具,完胜Redis DeskTop Manager。 下载地址:https://github.com/qishibo/AnotherRedisDesktopManager 界面、排版引起极度舒适,只是命令行的入口相对隐蔽,在此截图标出…

Redis使用认证密码登录

Redis默认配置是不需要密码认证的,也就是说只要连接的Redis服务器的host和port正确,就可以连接使用。这在安全性上会有一定的问题,所以需要启用Redis的认证密码,增加Redis服务器的安全性。 1. 修改配置文件 Redis的配置文件默认…

Redis使用密码登录

(1)进入redis客户端安装目录: (2)输入命令:redis-cli.exe -h 主机号 -p 端口号 如:redis-cli.exe -h 127.0.0.1-p 6379 (3)输入密码命令:auth 密码 若显示…

thinkphp5 redis使用

服务器必须要安装redis 我是通过宝塔安装的redis 不过也可以通过命令安装 测试安装成功 进入redis redis-cli 查看密码 config get requirepass 设置密码 config set requirepass “123456” 使用redis有两种方式 第一种是使用php里面的redis扩展(需要对服务器上…

redis使用详解

一.redis简介 redis是开源的BSD许可的高级key/valu存储系统,用于存储String,list,hash,set,zset,常用来提供数据结构服务。 redis与memcached比较 1.redis可以用来做存储storage,memcached只用来…

Redis基本使用!

目录 1.基本概念: 1.Redis的安装和启动 下载 目录结构 3.Redis的命令(重点) Redis数据结构 1.String字符串(重点) 2.Hash哈希(重点) 3.Set集合 4.ZSet集合 通用命令 4.Jedis的基本使用(了解) 相当于JDBC Jedi…

人工智能的几个研究方向

人工智能主要研究内容是:分布式人工智能与多智能主体系统、人工思维模型、知识系统、知识发现与数据挖掘、遗传与演化计算、人工生命、人工智能应用等等。 其中热门研究有以下几种。 一、计算机视觉 就包括图像识别,视频识别,具体应用有人…

学习人工智能可以从事哪些职业,有哪些就业前景和薪资待遇?

学习人工智能可以从事的职业非常广泛,就业前景非常广阔,随着人工智能技术的不断发展和应用,人工智能相关职位的需求将会越来越大。以下是一些主要的职业方向: 学习人工智能可以从事哪些职业,有哪些就业前景和薪资待遇&…

人工智能机器人专业就业前景怎样

在大数据时代,人工智能的相关技术越来越受到关注,人工智能产品的市场话语权也越来越大。因此,许多科技公司已经开始在人工智能领域实施战略布局。人工智能的就业前景如何?让我们来看看吧! 第一:智能化是未来…

学人工智能就业前景怎么样?学AI有前途吗?

学习人工智能已经成为了当前热门的趋势。由于人工智能的技术应用越来越广泛,因此,学习人工智能的前景非常广阔。以下是学习人工智能就业前景的一些解释: 学人工智能就业前景怎么样? 市场需求 近年来,人工智能技术的应…

人工智能行业,就业方向和研究领域的简单介绍

人工智能行业,目前的就业方向,主要分为搜索、图像处理、计算机视觉、模式识别和图像处理等等,具体如下: 搜索方向 :百度、谷歌、微软、yahoo等(包括智能搜索、语音搜索、图片搜索、视频搜索等都是未来的就业…