mybatis的工作原理(mybatis二级缓存原理)

2024-03-20 11:50:09 25

mybatis的工作原理(mybatis二级缓存原理)

本文目录

mybatis二级缓存原理

mybatis篇

一级缓存的作用域是Sqlsession级别的,也就是说不同的Sqlsession是不会走一级缓存的,那么如果需要跨Sqlsession的缓存,就需要使用到二级缓存了。

二级缓存的话默认是关闭的,所以需要我们开启,开启的方式官网也有介绍,需要在mybatis-config.xml核心配置文件中开启二级缓存功能,并且我们mapper.xml中也需要加入《cache/》标签,二者缺一不可,后面我们看源码就能知道为啥这两个缺一不可。

先来看个例子

执行结果很意外,为什么二级缓存的功能都开启了,结果sql还是执行了2次,并没有走缓存,其实,二级缓存还有一个要注意的点那就是必须要提交事务二级缓存才会保存记录,因为已经是跨SqlSession共享缓存了,所以事务必须要提交,否则会读取到因混滚导致的错误数据。

有个地方需要注意,二级缓存的Sqlsession中的Executor实际上是CachingExecutor

我们知道getMapper最终的执行都会走到MapperProxy类中的invoker方法,具体就来分析这个类。

最后来到了重点的地方

CacheKey我们可以认为他就是每个方法对应的一个唯一标识符。

这里我们就可以看出为什么之前两者必须要配置,cacheEnable开启了才会用CachingExecutor包装一下BaseExecutor,而《cache/》标签只有配置了才会走缓存的逻辑

这里的tcm

到这,我们就差不多揭开了二级缓存的秘密,重要的还是《cache/》这个标签,因为它的存在就对应着每个mapper.xml中的一个具体Cache类,而这个类在每个mapper.xml中又是同一个,所以最终的值是放入了Cache类中,key为CacheKey,value就是sql执行的结果。 至于为什么需要事务提交才能命中二级缓存,我们看下put方法就知道

这里的putObject并没有真正的把值存入Cache中,而是存入了待提交的Map中,所以再来看下commit做了什么

具体看tcm.commit()

而这里可以看到此处会遍历所有的TransactionCache并执行commit方法

真相就出来了,会遍历待提交的Map然后把里面的值都存入Cache中,所以后面的查询就能直接从Cache中拿到值了。

总结 二级缓存先会把Sqlsession中的Executor包装成包装成CacheingExecutor,所有的sql都会经过这个类,而该类通过mapper.xml中配置的唯一《cache/》标签生成的Cache类存放每个方法执行的结果

mybatis+druid+jdbc 原理介绍

mybatis是警察.druid是武器库(有很多枪).jdbc是武器商(他们造枪给武器库).当你需要一次"除暴安良"时,你需要去找警察,警察从武器库拿枪干活.以往的开发,是你使用jdbc直接造枪,然后自己干活.jdbc整合了:加载数据库驱动,创建连接,写原生语句,执行,关闭这些东西.而mybatis是对jdbc的封装,他允许你通过配置的形式,配置数据库参数,并且允许你通过xml来写动态sql语句.《if:test》让你可以把sql变得灵活起来.并且还能将你的查询结果直接映射到你想要的实体上面.然后你就去配置你的用户名,密码,连接超时,等等.等你下次使用mybatis时,他后面会根据你的配置,帮你加载数据库驱动,创建连接,写原生语句,执行,关闭.但是mybatis发现,在你每次访问都要重新创建创建连接,写,关.很麻烦,所以mybatis说,我可以接受你再配置一个连接池,比如druid.mybatis让你指定连接池是谁,如druid.之后将原来自己需要搞的东西都交给druid.什么账号了,密码了.都给他,让druid帮你创建一批连接,在你需要用的时候,mybatis从druid里面拿一个就行.下面是一次简单的访问流程: controller-》service-》dao-》mapper1.首先项目启动时druid就已经使用jdbc创建好一堆连接了,留待后用.2.当请求到mapper时,mybatis框架创建临时类.3.然后将动态sql进行替换重写,变成原始的native sql.4.从druid拿到一个连接.5.将sql通过连接交给数据库执行.6.然后获取执行结果.7.mybatis进行将结果进行映射,返回数据.说的有点乱,希望能说清楚吧...

mybatis原理是什么

MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。

MyBatis使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Ordinary Java Objects,普通的 Java对象)映射成数据库中的记录。

每个MyBatis应用程序主要都是使用SqlSessionFactory实例的,一个SqlSessionFactory实例可以通过SqlSessionFactoryBuilder获得。用xml文件构建SqlSessionFactory实例是非常简单的事情。

扩展资料:

mybatis的功能构架:

1、API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。

2、数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。

mybatis原理执行流程

第一步通过SqlSessionFactoryBuilder创建SqlSessionFactory     首先在SqlSessionFactoryBuilder的build()方法中可以看到MyBatis内部定义了一个类XMLConfigBuilder用来解析配置文件mybatis-config.xml。针对配置文件中的每一个节点进行解析并将数据存放到Configuration这个对象中,紧接着使用带有Configuration的构造方法发返回一个DefautSqlSessionFactory。 第二步通过SqlSessionFactory创建SqlSession 第三步通过SqlSession拿到Mapper对象的代理 第四步通过MapperProxy调用Maper中相应的方法

mybatis中动态sql执行原理

解释器模式: 初始化过程中构建出抽象语法树,请求处理时根据参数对象解释语法树,生成sql语句。 工厂模式: 为动态标签的处理方式创建工厂类(SqlTagHandlerFactory),根据标签名称获取对应的处理方式。 策略模式: 将动态标签处理方式抽象为接口,针对不同标签有相应的实现类。解释抽象语法树时,定义统一的解释流程,再调用标签对应的处理方式完成解释中的各个子环节

Spring整合Mybatis一文讲透,手把手带你实操

在介绍Spring整合Mybatis原理之前,我们得先来稍微介绍Mybatis的工作原理。

在Mybatis中,我们可以使用一个接口去定义要执行sql,简化代码如下: 定义一个接口,@Select表示要执行查询sql语句。

以下为执行sql代码:

Mybatis的目的是:使得程序员能够以调用方法的方式执行某个指定的sql,将执行sql的底层逻辑进行了封装。 这里重点思考以下mapper这个对象,当调用SqlSession的getMapper方法时,会对传入的接口生成一个 代理对象,而程序要真正用到的就是这个代理对象,在调用代理对象的方法时,Mybatis会取出该方法所对应的sql语句,然后利用JDBC去执行sql语句,最终得到结果。

UserService中的userMapper属性就会被自动注入为Mybatis中的代理对象。如果你基于一个已经完成整合的项目去调试即可发现,userMapper的类型为: org.apache.ibatis.binding.MapperProxy@41a0aa7d。证明确实是Mybatis中的代理对象。 好,那么现在我们要解决的问题的就是:如何能够把Mybatis的代理对象作为一个bean放入Spring容器中?要解决这个,我们需要对Spring的bean生成过程有一个了解。

Spring启动过程中,大致会经过如下步骤去生成bean

假设有一个A类,假设有如下代码: 一个A类

一个B类,不存在@Component注解

执行如下代码:

输出结果为:com.luban.util.A@6acdbdf5 A类对应的bean对象类型仍然为A类。但是这个结论是不确定的,我们可以利用BeanFactory后置处理器来 修改BeanDefinition,我们添加一个BeanFactory后置处理器:

这样就会导致,原本的A类对应的BeanDefiniton被修改了,被修改成了B类,那么后续正常生成的bean对 象的类型就是B类。此时,调用如下代码会报错:

但是调用如下代码不会报错,尽管B类上没有@Component注解:

并且,下面代码返回的结果是:com.luban.util.B@4b1c1ea0

之所以讲这个问题,是想说明 个问题:在Spring中,bean对象跟class没有直接关系,跟 BeanDefinition才有直接关系。 那么回到我们要解决的问题:如何能够把Mybatis的代理对象作为一个bean放入Spring容器中? 在Spring中,如果你想生成一个bean,那么得先生成一个BeanDefinition,就像你想new一个对象实 例,得先有一个class。

继续回到我们的问题,我们现在想自己生成一个bean,那么得先生成一个BeanDefinition,只要有了 BeanDefinition,通过在BeanDefinition中设置bean对象的类型,然后把BeanDefinition添加给 Spring,Spring就会根据BeanDefinition 动帮我们 成 个类型对应的bean对象。 所以,现在我们要解决两个问题:

注意:上文中我们使用的BeanFactory后置处理器,他只能修改BeanDefinition,并不能新增一个 BeanDefinition。我们应该使用Import技术来添加一个BeanDefinition。后面再详细介绍如果使用Import 技术来添加一个BeanDefinition,可以先看一下伪代码实现思路。

假设:我们有一个UserMapper接口,他的代理对象的类型为UserMapperProxy。 那么我们的思路就是这样的,伪代码如下:

但是,这里有一个严重的问题,就是上文中的UserMapperProxy是我们假设的,他表示一个代理类的类 型,然而Mybatis中的代理对象是利用的JDK的动态代理技术实现的,也就是代理对象的代理类是动态生成的,我们根本方法确定代理对象的代理类到底是什么。 所以回到我们的问题:Mybatis的代理对象的类型是什么? 本来可以有两个答案: 1. 代理对象对应的代理类 2. 代理对象对应的接口 那么答案1就相当于没有了,因为是代理类是动态生成的,那么我们来看答案2:代理对象对应的接口如果我们采用答案2,那么我们的思路就是:

但是,实际上给BeanDefinition对应的类型设置为一个接口是行不通的,因为Spring没有办法根据这个 BeanDefinition去new出对应类型的实例,接口是没法直接new出实例的。 那么现在问题来了,我要解决的问题:Mybatis的代理对象的类型是什么? 两个答案都被我们否定了,所以这个问题是无解的,所以我们不能再沿着这个思路去思考了,只能回到最 开始的问题:如何能够把Mybatis的代理对象作为一个bean放入Spring容器中?

总结上文的推理:我们想通过设置BeanDefinition的class类型,然后由Spring自动的帮助我们去生成对应的bean,但是这条路是行不通的。 终极解决方案 那么我们还有没有其他办法,可以去生成bean呢?并且生成bean的逻辑不能由Spring来帮我们做了,得 由我们自己来做。 FactoryBean 有,那就是Spring中的FactoryBean。我们可以利用FactoryBean去自定义我们要生成的bean对象,比如

我们定义了一个LubanFactoryBean,它实现了FactoryBean,getObject方法就是用来自定义生成bean 对象逻辑的。 执行如下代码:

将打印: lubanFactoryBean: com.luban.util.LubanFactoryBean 1@4d41cee &lubanFactoryBean: com.luban.util.LubanFactoryBean@3712b94 lubanFactoryBean-class: class com.sun.proxy. Proxy20 从结果我们可以看到,从Spring容器中拿名字为"lubanFactoryBean"的bean对象,就是我们所自定义的 jdk动态代理所生成的代理对象。

所以,我们可以通过FactoryBean来向Spring容器中添加一个自定义的bean对象。上文中所定义的 LubanFactoryBean对应的就是UserMapper,表示我们定义了一个LubanFactoryBean,相当于把 UserMapper对应的代理对象作为一个bean放入到了容器中。 但是作为程序员,我们不可能每定义了一个Mapper,还得去定义一个LubanFactoryBean,这是很麻烦的 事情,我们改造一下LubanFactoryBean,让他变得更通用,比如:

改造LubanFactoryBean之后,LubanFactoryBean变得灵活了,可以在构造LubanFactoryBean时,通 过构造传入不同的Mapper接口。 实际上LubanFactoryBean也是一个Bean,我们也可以通过生成一个BeanDefinition来生成一个 LubanFactoryBean,并给构造方法的参数设置不同的值,比如伪代码如下:

特别说一下注意二,表示表示当前BeanDefinition在生成bean对象时,会通过调用LubanFactoryBean的 构造方法来生成,并传入UserMapper的Class对象。那么在生成LubanFactoryBean时就会生成一个 UserMapper接口对应的代理对象作为bean了。 到此为止,其实就完成了我们要解决的问题:把Mybatis中的代理对象作为一个bean放入Spring容器中。

只是我们这是用简单的JDK代理对象模拟的Mybatis中的代理对象,如果有时间,我们完全可以调 Mybatis中提供的方法区生成一个代理对象。这里就不花时间去介绍了。 Import 到这里,我们还有一个事情没有做,就是怎么真正的定义一个BeanDefinition,并把它添加到Spring中, 上文说到我们要利用Import技术,比如可以这么实现: 定义如下类:

并且在AppConfig上添加@Import注解:

这样在启动Spring时就会新增一个BeanDefinition,该BeanDefinition会生成一个LubanFactoryBean对 象,并且在生成LubanFactoryBean对象时会传入UserMapper.class对象,通过LubanFactoryBean内部 的逻辑,相当于会自动生产一个UserMapper接口的代理对象作为一个bean。

总结一下,通过我们的分析,我们要整合Spring和Mybatis,需要我们做的事情如下:

作者:程序员周瑜***隐藏网址***

mybatis原理 接口怎么变成类的

用过MyBatis3的人可能会觉得为什么MyBatis的Mapper接口没有实现类,但是可以直接用?那是因为MyBatis使用Java动态代理实现的接口。这里仅仅举个简单例子来说明原理,不是完全针对MyBatis的,这种思想我们也可以应用在其他地方。定义一个接口public interface MethodInterface {String helloWorld();}123实现动态代理接口public class MethodProxy《T》 implements InvocationHandler {private Class《T》 methodInterface;public MethodProxy(Class《T》 methodInterface) {this.methodInterface = methodInterface;}@Overridepublic Object invoke(Object proxy, Method method, Object args) throws Throwable {System.out.println("=========================");System.out.println("方法名:" + method.getName());//针对不同的方法进行不同的操作return null;}}123456789101112131415这里针对invoke方法简单说说MyBatis的实现原理,在该方法中,我们通过Method能够获取接口和方法名,接口的全名相当于MyBatis XML中的namespace,方法名相当于具体一个方法中的id。也就是说通过动态代理后,可以通过SqlSession来通过namespace.id方式来调用相应的方法。使用接口更方便,但是是一种间接的方式。动态代理工厂类public class MethodProxyFactory {public static 《T》 T newInstance(Class《T》 methodInterface) {final MethodProxy《T》 methodProxy = new MethodProxy《T》(methodInterface);return (T) Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(),new Class{methodInterface},methodProxy);}}123456789通过该工厂类可以生成任意接口的动态代理类。测试MethodInterface method = MethodProxyFactory.newInstance(MethodInterface.class);method.helloWorld();12可以看到MethodInterface没有实现类也可以执行。总结一般谈到动态代理我们通常的用法都是处理事务、日志或者记录方法执行效率等方面的应用。都是对实现类方法的前置或者后置的特殊处理。

mybatis工作原理是什么

MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Ordinary Java Objects,普通的 Java对象)映射成数据库中的记录。

每个MyBatis应用程序主要都是使用SqlSessionFactory实例的,一个SqlSessionFactory实例可以通过SqlSessionFactoryBuilder获得。SqlSessionFactoryBuilder可以从一个xml配置文件或者一个预定义的配置类的实例获得。

用xml文件构建SqlSessionFactory实例是非常简单的事情。推荐在这个配置中使用类路径资源(classpath resource),但你可以使用任何Reader实例,包括用文件路径或file://开头的url创建的实例。MyBatis有一个实用类----Resources,它有很多方法,可以方便地从类路径及其它位置加载资源。

把Mybatis的功能架构分为三层:

1、API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。

2、数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。

3、基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件。为上层的数据处理层提供最基础的支撑。

mybatis的工作原理(mybatis二级缓存原理)

本文编辑:admin

本文相关文章:


mybatis的工作原理(mybatis工作原理是什么)

mybatis的工作原理(mybatis工作原理是什么)

本文目录mybatis工作原理是什么mybatis原理是什么mybatis二级缓存原理mybatis中动态sql执行原理mybatis+druid+jdbc 原理介绍mybatis原理 接口怎么变成类的mybatis原理执行流程Spring

2024年7月3日 07:27

mybatis的工作原理(mybatis中动态sql执行原理)

mybatis的工作原理(mybatis中动态sql执行原理)

本文目录mybatis中动态sql执行原理mybatis二级缓存原理mybatis+druid+jdbc 原理介绍mybatis原理 接口怎么变成类的mybatis工作原理是什么mybatis原理是什么Spring整合Mybatis一文讲透

2024年6月25日 03:41

更多文章:


纯dos下查看所有盘符(DOS下查看硬盘分区的命令.)

纯dos下查看所有盘符(DOS下查看硬盘分区的命令.)

本文目录DOS下查看硬盘分区的命令.纯DOS下如何检查磁盘就是和chkdsk功能相似的,损坏硬盘为ntfs文件系统 DOS下没有cdos检测硬盘的命令是什么查看所有盘符的DOS命令是什么啊如何在DOS下迅速查看所有的硬盘分区在dos下怎样看

2024年4月14日 22:50

font下载安卓版(安卓手机默认字体怎么修改)

font下载安卓版(安卓手机默认字体怎么修改)

各位老铁们,大家好,今天由我来为大家分享font下载安卓版,以及安卓手机默认字体怎么修改的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文目录安卓手机默认

2024年6月27日 09:20

shell命令的通配符有哪些(谁知道 RedHat linux9在shell下常用命令的注释)

shell命令的通配符有哪些(谁知道 RedHat linux9在shell下常用命令的注释)

大家好,今天小编来为大家解答以下的问题,关于shell命令的通配符有哪些,谁知道 RedHat linux9在shell下常用命令的注释这个很多人还不知道,现在让我们一起来看看吧!本文目录谁知道 RedHat linux9在shell下常用

2024年7月24日 17:30

c语言ascii码范围(为什么有说ASCII码是128个的C语言)

c语言ascii码范围(为什么有说ASCII码是128个的C语言)

本文目录为什么有说ASCII码是128个的C语言在c语言程序中,可以被识别的字符ascii范围为关于C语言ASCII码的问题在C语言中,字符的ASCII代码是什么啊为什么有说ASCII码是128个的C语言因为标准ASCII只有128个字符。

2024年6月30日 16:44

表单验证不能为空(asp中如何判断表单内容不能为空)

表单验证不能为空(asp中如何判断表单内容不能为空)

大家好,表单验证不能为空相信很多的网友都不是很明白,包括asp中如何判断表单内容不能为空也是一样,不过没有关系,接下来就来为大家分享关于表单验证不能为空和asp中如何判断表单内容不能为空的一些知识点,大家可以关注收藏,免得下次来找不到哦,下

2024年7月10日 08:25

js定义数组并赋值(javascript中定义一维数组,如何从TXT文件中为其赋值)

js定义数组并赋值(javascript中定义一维数组,如何从TXT文件中为其赋值)

本文目录javascript中定义一维数组,如何从TXT文件中为其赋值js给数组赋值js中定义数组,并把所赋的值,输出来javascript中定义一维数组,如何从TXT文件中为其赋值其实只要读取成字符串用 split(“\n“) 切割就可以

2024年7月8日 18:38

汇编语言王爽课后答案(有没有人学过(王爽)的汇编语言,我有道题搞不懂)

汇编语言王爽课后答案(有没有人学过(王爽)的汇编语言,我有道题搞不懂)

本文目录有没有人学过(王爽)的汇编语言,我有道题搞不懂汇编语言 王爽 题目求答案王爽《汇编语言(第二版)》习题求解王爽《汇编语言第2版》 第六章实验5(2)求王爽 汇编语言 实验17答案关于王爽汇编语言检测点13.1(01),求正确答案及详

2024年7月22日 19:10

二郎神杨戬演员(86版西游记的杨戬演员)

二郎神杨戬演员(86版西游记的杨戬演员)

本文目录86版西游记的杨戬演员忠义乾坤中杨戬的扮演者新西游记二郎神扮演者二郎神扮演者都有谁86版西游记的杨戬演员86版《西游记》杨戬的扮演者是 林志谦角色简介:二郎神是玉皇大帝的亲外甥,曾经劈山救母、弹打凤凰、力诛八怪、梅山结义。演员简介:

2024年5月6日 06:46

git服务器 windows(windows 浏览器下输入ubuntu上的gitlab服务器网址不能访问)

git服务器 windows(windows 浏览器下输入ubuntu上的gitlab服务器网址不能访问)

各位老铁们,大家好,今天由我来为大家分享git服务器 windows,以及windows 浏览器下输入ubuntu上的gitlab服务器网址不能访问的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最

2024年8月28日 17:55

操作系统有哪些分类(操作系统是如何分类的+site:zhidao.baidu.com)

操作系统有哪些分类(操作系统是如何分类的+site:zhidao.baidu.com)

本文目录操作系统是如何分类的+site:zhidao.baidu.com操作系统按所提供的功能进行分类,可分为哪几类计算机操作系统的分类有哪些操作系统有哪些,各有什么特点操作系统是如何分类的+site:zhidao.baidu.com摘要网

2024年6月30日 17:59

课代表用英语怎么说(课代表英语怎么说)

课代表用英语怎么说(课代表英语怎么说)

各位老铁们好,相信很多人对课代表用英语怎么说都不是特别的了解,因此呢,今天就来为大家分享下关于课代表用英语怎么说以及课代表英语怎么说的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录课代表英语怎么说英语课代表简称翻

2024年7月1日 11:56

iframe参数传递(在jsp页面中,frame之间以及子页面和父页面间参数是如何传递的)

iframe参数传递(在jsp页面中,frame之间以及子页面和父页面间参数是如何传递的)

本文目录在jsp页面中,frame之间以及子页面和父页面间参数是如何传递的怎么传递参数到iframe页面如何向iframe中传递参数iframe传参如何将JSP跨iframe传递参数jquery iframe之间参数传递父页面如何给它里面的

2024年5月11日 21:17

正确的字符常量格式(vf中不同类型的常量的书写格式不同是否正确)

正确的字符常量格式(vf中不同类型的常量的书写格式不同是否正确)

本文目录vf中不同类型的常量的书写格式不同是否正确以下选项中,( )为正确的字符常量.a、“B“ b、’\010’ c、68 d、Kvf中不同类型的常量的书写格式不同是否正确vfp只有5种常量类型:1、数值型常量:数值型常量可以是整数或实数

2024年4月6日 19:40

jsp改变字体大小代码格式(怎么在Myeclipse中改变JSP代码的字体大小)

jsp改变字体大小代码格式(怎么在Myeclipse中改变JSP代码的字体大小)

本篇文章给大家谈谈jsp改变字体大小代码格式,以及怎么在Myeclipse中改变JSP代码的字体大小对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2024年8月20日 02:55

xamarin安卓开发(如何用xamarin开发安卓程序)

xamarin安卓开发(如何用xamarin开发安卓程序)

各位老铁们,大家好,今天由我来为大家分享xamarin安卓开发,以及如何用xamarin开发安卓程序的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文目录

2024年8月21日 12:05

java左移运算符(JAVA中&&和||是什么意思怎么用)

java左移运算符(JAVA中&&和||是什么意思怎么用)

本文目录JAVA中&&和||是什么意思怎么用java中的位运算子及其用法Java如何用最有效的方法计算22*8JAVA中&&和||是什么意思怎么用JAVA中&&意思是“条件与”逻辑操作符,使用方法是x&&y,功能描述:x和y均为true,取

2024年7月9日 15:07

没有英语怎么写呢?没有英语怎么说

没有英语怎么写呢?没有英语怎么说

本文目录没有英语怎么写呢没有英语怎么说没有的英语单词是什么没有的英文 hav‘t没有的英语怎么写没有英语怎么说哦没有的英文是什么没有英语怎么写呢没有的英语是nothing。nothing读音:英[ˈnʌθɪŋ],美[ˈnʌθɪŋ]。释义:p

2024年7月19日 21:13

perhaps什么意思(perhaps怎么读)

perhaps什么意思(perhaps怎么读)

本文目录perhaps怎么读perhaps中文是什么意思perhaps怎么读perhaps的中文意思、音标、例句及语法单词音标英语音标:转载需注明“转自音标网yinbiao5.com/19-3532.html”,违者必究中文翻译adv.也许

2024年6月20日 23:49

django安装步骤(如何 安装 django 版本)

django安装步骤(如何 安装 django 版本)

本文目录如何 安装 django 版本django怎么安装在centos中怎么安装django如何在linux系统下安装django如何安装 Django如何 安装 django 版本安装Python,点开python-3.3.4.msi然

2024年6月26日 01:55

for循环语句的流程图(matlab for循环画图)

for循环语句的流程图(matlab for循环画图)

这篇文章给大家聊聊关于for循环语句的流程图,以及matlab for循环画图对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录matlab for循环画图三层for循环嵌套流程图怎么画多个for的嵌套流程图怎么画for循环问题

2024年7月18日 06:37

近期文章

本站热文

iphone vpn设置(ios设置vpn快捷开关)
2024-07-22 15:01:12 浏览:2334
windows12正式版下载(操作系统Windows Server 2012 R2,在哪能下载到,公司用的)
2024-07-20 17:26:53 浏览:1731
java安装教程(win10如何安装JAVA)
2024-07-19 19:55:49 浏览:1156
client mfc application未响应(每次进cf就提示client MFC Application未响应该怎么办啊!急急急)
2024-07-20 11:15:58 浏览:1152
标签列表

热门搜索