精华内容
下载资源
问答
  • return的各种用法

    千次阅读 多人点赞 2019-08-14 11:29:39
    今天在开发STM32的时候遇到了关于 return的问题,想想我也算学过C语言,但是对 return的用法却只懂点皮毛,所以在这里总结一下 return的具体几种用法和作用。 百度词条对 return的介绍如下: return 表示把程序流程...

    今天在开发STM32的时候遇到了关于 return的问题,想想我也算学过C语言,但是对 return的用法却只懂点皮毛,所以在这里总结一下 return的具体几种用法和作用。
    百度词条对 return的介绍如下:

    return 表示把程序流程从被调函数转向主调函数并把表达式的值带回主调函数,实现函数值的返回,返回时可附带一个返回值,由return后面的参数指定。 return通常是必要的,因为函数调用的时候计算结果通常是通过返回值带出的。 如果函数执行不需要返回计算结果,也经常需要返回一个状态码来表示函数执行的顺利与否(-1和0就是最常用的状态码),主调函数可以通过返回值判断被调函数的执行情况。

    这是较为官方的解释,按我初学的理解,return的任务就是在一个函数的最后返回对应的参数,然后在外层函数中对这个参数做进一步处理。然鹅,我对return的这种理解就像是外国人认为筷子只能夹菜,是片面肤浅的,筷子还可以用来喝汤、开啤酒盖、插着吃玉米…所以说return也有很多种用法,本质上return就是返回函数,只是我们在应用的过程中赋予了return更加丰富的作用罢了。

    一.为调用的函数返回参数值

    此类应用最为普遍,通常是在一个具有返回值的函数中,返回一个参数值,这个返回的参数可以是一个数、表达式。通常情况下,返回值是一个值,如果想返回多个值可以参考以下三点:
    1.设置全局变量,全局变量是定义在函数外的一个变量,其不属于任何一个函数,所以,虽然在调用函数中return返回一个值,但可以将其余的返回值赋值给全局变量,这样就做到了返回多个值的效果
    2.使用数组名或指针作为函数形参,返回的是一个地址,主函数可以根据这个地址找到多个,要返回的数据。
    3.使用结构体作为函数形参,结构体中可以包含多种形式的变量,以结构体作为形参相当于将所有返回值打包在一起,一次返回。

    二.提前结束函数

    由于return具有把程序流程从被调函数转向主调函数的作用,所以时候也会用来终止函数的调用,也就是说return是提前结束函数的唯一方法。因为函数一遇到return就立即返回,return后面的程序都不再执行,所以一个函数中可以有多个return,但只会执行一个。return后面可以跟一个参数作为返回值,也可以不跟参数,仅仅代表结束此函数

    三.返回一个函数

    如果return后面跟的是一个函数的话,就意味着,跳出此调用函数,并且跳出后执行return后的函数,然后继续在主函数中执行程序。有时利用return返回一个操作,比如在程序调试中出错后,需要return跳出错误函数并向串口打印出错误的原因,这个时候return后面的函数就用来向串口打印错误原因的。(个人理解)
    文章参考:
    C语言中文网
    麦兜家园

    展开全文
  • Spring中@Transactional用法深度分析之一

    万次阅读 多人点赞 2015-03-27 22:40:46
    引言: 在Spring中@Transactional提供种控制事务管理的快捷手段,但是很多都只是@Transactional简单使用,并未深入了解,其各个配置项的使用方法,本文将深入讲解各个配置项的使用。

    引言: 在Spring中@Transactional提供一种控制事务管理的快捷手段,但是很多人都只是@Transactional简单使用,并未深入了解,其各个配置项的使用方法,本文将深入讲解各个配置项的使用。

    1.  @Transactional的定义

        Spring中的@Transactional基于动态代理的机制,提供了一种透明的事务管理机制,方便快捷解决在开发中碰到的问题。在现实中,实际的问题往往比我们预期的要复杂很多,这就要求对@Transactional有深入的了解,以来应对复杂问题。

       首先我们来看看@Transactional的代码定义:

    @Target({ElementType.METHOD, ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @Inherited
    @Documented
    public @interface Transactional {
    
    	/**
    	 * A qualifier value for the specified transaction.
    	 * <p>May be used to determine the target transaction manager,
    	 * matching the qualifier value (or the bean name) of a specific
    	 * {@link org.springframework.transaction.PlatformTransactionManager}
    	 * bean definition.
    	 */
    	String value() default "";
    
    	/**
    	 * The transaction propagation type.
    	 * Defaults to {@link Propagation#REQUIRED}.
    	 * @see org.springframework.transaction.interceptor.TransactionAttribute#getPropagationBehavior()
    	 */
    	Propagation propagation() default Propagation.REQUIRED;
    
    	/**
    	 * The transaction isolation level.
    	 * Defaults to {@link Isolation#DEFAULT}.
    	 * @see org.springframework.transaction.interceptor.TransactionAttribute#getIsolationLevel()
    	 */
    	Isolation isolation() default Isolation.DEFAULT;
    
    	/**
    	 * The timeout for this transaction.
    	 * Defaults to the default timeout of the underlying transaction system.
    	 * @see org.springframework.transaction.interceptor.TransactionAttribute#getTimeout()
    	 */
    	int timeout() default TransactionDefinition.TIMEOUT_DEFAULT;
    
    	/**
    	 * {@code true} if the transaction is read-only.
    	 * Defaults to {@code false}.
    	 * <p>This just serves as a hint for the actual transaction subsystem;
    	 * it will <i>not necessarily</i> cause failure of write access attempts.
    	 * A transaction manager which cannot interpret the read-only hint will
    	 * <i>not</i> throw an exception when asked for a read-only transaction.
    	 * @see org.springframework.transaction.interceptor.TransactionAttribute#isReadOnly()
    	 */
    	boolean readOnly() default false;
    
    	/**
    	 * Defines zero (0) or more exception {@link Class classes}, which must be a
    	 * subclass of {@link Throwable}, indicating which exception types must cause
    	 * a transaction rollback.
    	 * <p>This is the preferred way to construct a rollback rule, matching the
    	 * exception class and subclasses.
    	 * <p>Similar to {@link org.springframework.transaction.interceptor.RollbackRuleAttribute#RollbackRuleAttribute(Class clazz)}
    	 */
    	Class<? extends Throwable>[] rollbackFor() default {};
    
    	/**
    	 * Defines zero (0) or more exception names (for exceptions which must be a
    	 * subclass of {@link Throwable}), indicating which exception types must cause
    	 * a transaction rollback.
    	 * <p>This can be a substring, with no wildcard support at present.
    	 * A value of "ServletException" would match
    	 * {@link javax.servlet.ServletException} and subclasses, for example.
    	 * <p><b>NB: </b>Consider carefully how specific the pattern is, and whether
    	 * to include package information (which isn't mandatory). For example,
    	 * "Exception" will match nearly anything, and will probably hide other rules.
    	 * "java.lang.Exception" would be correct if "Exception" was meant to define
    	 * a rule for all checked exceptions. With more unusual {@link Exception}
    	 * names such as "BaseBusinessException" there is no need to use a FQN.
    	 * <p>Similar to {@link org.springframework.transaction.interceptor.RollbackRuleAttribute#RollbackRuleAttribute(String exceptionName)}
    	 */
    	String[] rollbackForClassName() default {};
    
    	/**
    	 * Defines zero (0) or more exception {@link Class Classes}, which must be a
    	 * subclass of {@link Throwable}, indicating which exception types must <b>not</b>
    	 * cause a transaction rollback.
    	 * <p>This is the preferred way to construct a rollback rule, matching the
    	 * exception class and subclasses.
    	 * <p>Similar to {@link org.springframework.transaction.interceptor.NoRollbackRuleAttribute#NoRollbackRuleAttribute(Class clazz)}
    	 */
    	Class<? extends Throwable>[] noRollbackFor() default {};
    
    	/**
    	 * Defines zero (0) or more exception names (for exceptions which must be a
    	 * subclass of {@link Throwable}) indicating which exception types must <b>not</b>
    	 * cause a transaction rollback.
    	 * <p>See the description of {@link #rollbackForClassName()} for more info on how
    	 * the specified names are treated.
    	 * <p>Similar to {@link org.springframework.transaction.interceptor.NoRollbackRuleAttribute#NoRollbackRuleAttribute(String exceptionName)}
    	 */
    	String[] noRollbackForClassName() default {};
    
    }
      基于源代码,我们可以发现在@Transactional,原来有这么多的属性可以进行配置,从而达到复杂应用控制的目的。具体各个属性的用法和作用,将在本文的后面逐一进行讲解和说明。

    2.  使用@Transactional的Spring配置

         为了使用基于@Transactional的事务管理,需要在Spring中进行如下的配置:

        <beans:bean id="transactionManager"
    		class="org.springframework.orm.jpa.JpaTransactionManager">
    		<beans:property name="dataSource" ref="dataSource" />
    		<beans:property name="entityManagerFactory" ref="entityManagerFactory" />
    	</beans:bean>
    
    	<!-- 声明使用注解式事务 -->
    	<tx:annotation-driven transaction-manager="transactionManager" />
        dataSource是在Spring配置文件中定义的数据源的对象实例,EntityManagerFactory是基于JPA使用的实体类管理器:org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean。这些都是用来配置与数据库的连接信息,本质上,@Transactional使用了JDBC的事务来进行事务控制的。

        <annotation-driven>标签的声明,则是在Spring内部启用@Transactional来进行事务管理,类似开关之类的声明。

    3.  @Transactional之value

        value这里主要用来指定不同的事务管理器;主要用来满足在同一个系统中,存在不同的事务管理器。比如在Spring中,声明了两种事务管理器txManager1, txManager2.

    然后,用户可以根据这个参数来根据需要指定特定的txManager.

       那有同学会问什么情况下会存在多个事务管理器的情况呢? 比如在一个系统中,需要访问多个数据源或者多个数据库,则必然会配置多个事务管理器的。

    4.   @Transactional之propagation

          Propagation支持7种不同的传播机制:

    •  REQUIRED
                   业务方法需要在一个事务中运行,如果方法运行时,已处在一个事务中,那么就加入该事务,否则自己创建一个新的事务.这是spring默认的传播行为.。 
    •  SUPPORTS: 
                   如果业务方法在某个事务范围内被调用,则方法成为该事务的一部分,如果业务方法在事务范围外被调用,则方法在没有事务的环境下执行。
    •  MANDATORY:
                   只能在一个已存在事务中执行,业务方法不能发起自己的事务,如果业务方法在没有事务的环境下调用,就抛异常
    •  REQUIRES_NEW
                 业务方法总是会为自己发起一个新的事务,如果方法已运行在一个事务中,则原有事务被挂起,新的事务被创建,直到方法结束,新事务才结束,原先的事务才会恢复执行.
    •  NOT_SUPPORTED
               声明方法需要事务,如果方法没有关联到一个事务,容器不会为它开启事务.如果方法在一个事务中被调用,该事务会被挂起,在方法调用结束后,原先的事务便会恢复执行.
    • NEVER:
                  声明方法绝对不能在事务范围内执行,如果方法在某个事务范围内执行,容器就抛异常.只有没关联到事务,才正常执行.
    •  NESTED:

              如果一个活动的事务存在,则运行在一个嵌套的事务中.如果没有活动的事务,则按REQUIRED属性执行.它使用了一个单独的事务, 这个事务拥有多个可以回滚的保证点.内部事务回滚不会对外部事务造成影响, 它只对DataSourceTransactionManager 事务管理器起效.

         其实大家最感到困惑的是REQUIRED_NEW和NESTED两种不同的传播机制,功能类似,都涉及到了事务嵌套的问题,那两者有何区别呢?该如何正确使用这两种模式呢?

            以下是摘自Spring的文档:
               PROPAGATION_REQUIRES_NEW : uses a completely independent transaction for each affected transaction scope. In that case, the underlying physical transactions are different and hence can commit or roll back independently, with an outer transaction not affected by an inner transaction's rollback status.
             内部的事务独立运行,在各自的作用域中,可以独立的回滚或者提交;而外部的事务将不受内部事务的回滚状态影响。 
             ROPAGATION_NESTED : uses a single physical transaction with multiple savepoints that it can roll back to. Such partial rollbacks allow an inner transaction scope to trigger a rollback for its scope, with the outer transaction being able to continue the physical transaction despite some operations having been rolled back. This setting is typically mapped onto JDBC savepoints, so will only work with JDBC resource transactions.
           NESTED的事务,基于单一的事务来管理,提供了多个保存点。这种多个保存点的机制允许内部事务的变更触发外部事务的回滚。而外部事务在混滚之后,仍能继续进行事务处理,即使部分操作已经被混滚。 由于这个设置基于JDBC的保存点,所以只能工作在JDBC的机制智商。
           由此可知, 两者都是事务嵌套,不同之处在于,内外事务之间是否存在彼此之间的影响;NESTED之间会受到影响,而产生部分回滚,而REQUIRED_NEW则是独立的。


    展开全文
  • matlab中eval函数的用法之一

    万次阅读 2013-09-08 00:28:22
    我们在做写程序的时候,经常会遇到在个循环体里依次访问个按照有规律命名的变量,如beta,beta1,beta2...eval还有其他用法,值得深入研究,在此不多说,需要的自己看matlab帮助。下面给出eval解决上述问题的方法

                    我们在做程序的时候,经常会遇到在一个循环体里依次访问一个按照有规律命名的变量,如beta,beta1,beta2....betan.这时我们不可能写很多的if语句或者是有很多分支的switch语句,我们需要一个简洁的代码来解决这个问题。这时,eval这个神奇的函数,就派上用处了。eval还有其他用法,值得深入研究,在此不多说,需要的人自己看matlab帮助。下面给出eval解决上述问题的方法。

                   

    for i=1:9  
        if i==1
            beta=eval('beta')
            coeftab=eval('coeftab')
        else
               s1=['beta' num2str(i-1)];
               s2=['coeftab' num2str(i-1)];
               beta=eval(s1)
              coeftab=eval(s2)%beta,coeftab每循环一次,得到更新
              .....%省略后续对beta,coeftab的处理代码
            
        end
    end

    展开全文
  • Py之yacs:yacs的简介、安装、使用方法之详细攻略

    万次阅读 多人点赞 2020-01-07 20:49:40
    Py之yacs:yacs的简介、安装、使用方法之详细攻略 目录 yacs的简介 yacs的安装 yacs的使用方法 1、基础用法 yacs的简介 A simple experiment configuration system for research. yacs是作为个...

    Py之yacs:yacs的简介、安装、使用方法之详细攻略

     

     

    目录

    yacs的简介

    yacs的安装

    yacs的使用方法

    1、基础用法


     

     

     

    yacs的简介

           A simple experiment configuration system for research.
           yacs是作为一个轻量级库创建的,用于定义和管理系统配置,比如那些通常可以在为科学实验设计的软件中找到的配置。这些“配置”通常包括用于训练机器学习模型的超参数或可配置模型超参数(如卷积神经网络的深度)等概念。由于您正在进行科学研究,所以再现性是最重要的,因此您需要一种可靠的方法来序列化实验配置。YACS使用YAML作为一种简单的、人类可读的序列化格式。范例是:你的代码+实验E的yacs配置(+外部依赖+硬件+其他讨厌的术语…)=可重复的实验E。虽然你不能控制一切,但至少你可以控制你的代码和你的实验配置。yacs会帮你的。
           yacs是在py-fast -rcnn和Detectron中使用的实验配置系统中发展起来的。

     

     

    yacs的安装

    pip install yacs

     

    yacs的使用方法

    1、基础用法

    # my_project/config.py
    from yacs.config import CfgNode as CN
    
    
    _C = CN()
    
    _C.SYSTEM = CN()
    # Number of GPUS to use in the experiment
    _C.SYSTEM.NUM_GPUS = 8
    # Number of workers for doing things
    _C.SYSTEM.NUM_WORKERS = 4
    
    _C.TRAIN = CN()
    # A very important hyperparameter
    _C.TRAIN.HYPERPARAMETER_1 = 0.1
    # The all important scales for the stuff
    _C.TRAIN.SCALES = (2, 4, 8, 16)
    
    
    def get_cfg_defaults():
      """Get a yacs CfgNode object with default values for my_project."""
      # Return a clone so that the defaults will not be altered
      # This is for the "local variable" use pattern
      return _C.clone()
    
    # Alternatively, provide a way to import the defaults as
    # a global singleton:
    # cfg = _C  # users can `from config import cfg`

     

     

     

     

    展开全文
  • Java路:this关键字的用法

    万次阅读 多人点赞 2018-12-15 09:42:22
    (4)可以使用this关键字调用重载构造方法。避免相同的初始化代码,只能在构造方法中用,并且必须位于构造方法的第句。 (5)this不能用于static方法。 用this调用构造方法 package this_const...
  • Python异常(try的用法

    万次阅读 多人点赞 2019-06-12 09:27:43
    Python异常(try的用法) 什么是异常 异常: 程序在运行的时候,如果python解释器遇到个错误,会停止程序的执行, 并且提示一些错误的信息,这就是异常 我们在程序开发的时候,很难将所有的特殊情况都...
  • MySqlselect的具体用法示例

    万次阅读 多人点赞 2018-05-26 17:09:19
    select用于查询,其功能很多,我们起来了解一下它子句及函数的用法。 建一张表用于我们测试: create table student ( id int not null default 1, name varchar(20) not null default ’ ‘, chinese ...
  • 本文同步发表于我的微信公众号,扫扫文章底部的二维码或在微信搜索 郭霖 即可关注,每天都有文章更新。 现在Android上的图片加载框架非常成熟,从最早的老牌图片加载框架UniversalImageLoader,到后来Google...
  • MFCMessageBox、AfxMessageBox用法

    万次阅读 2015-07-01 11:07:01
    在Win32 API程序中只有MessageBox这用法. 而在MFC中就有三各方法: 1.调用API中的MessageBox; 2.调用CWnd的成员函数MessageBox; 3.调用全局函数AfxMessageBox; MFC中MessageBox的用法 ...
  • js中map的使用方法

    万次阅读 2020-03-02 09:50:35
    map()方法定义在JavaScript的Array中,它返回个新的数组,新返回数组中的每个元素为原始数组的每个元素分别调用map中的回调函数处理后的值。 注意: map()不会对空数组进行检测 map()不会改变原始数组(返回...
  • Python语言学习:python语言的特点、入门、基础用法之详细攻略 相关内容Python基础教程 目录 python语言的特点 python语言的入门 python语言的基础用法 python语言的特点 1、pickle功能:Python 有...
  • python 中map()函数的使用方法(重点)

    万次阅读 多人点赞 2019-02-22 16:33:18
    1. 概述 Python中的map() 会根据提供的函数对指定序列做...第个参数 function 以参数序列中的每个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。 2.2 参数: function – 函数 iterabl...
  • prompt 用法

    千次阅读 2018-09-11 22:28:00
    prompt()方法用于显示可提示用户进行输入的对话框。 这个方法返回用户输入的字符串。 例子 假设个简单的ATM机的取款过程是这样的:首先提示用户输入密码(password),最多只能输入三次,超过3次则提示用户...
  • AndroidEventBus3.0的简单用法

    万次阅读 2017-05-12 15:41:20
    EventBus3.0的简单讲解和用法
  • ES6 Promise用法小结

    万次阅读 多人点赞 2018-07-25 10:42:49
    Promise 是异步编程的种解决方案,其实是个构造函数,自己身上有all、reject、resolve这几个方法,原型上有then、catch等方法。 Promise对象有以下两个特点。 (1)对象的状态不受外界影响。Promise对象代表...
  • python——class类和方法用法详解

    千次阅读 多人点赞 2020-08-07 16:17:00
    因为一直不太清楚面向对象的类和方法的编程思想,所以特地补了一下python-class的知识,在这里记录和分享一下。 文章目录类和方法的概念和实例1.python类:`class`2.类的构造方法`__init__()`3.类中方法的参数`self...
  • ECharts介绍及使用方法

    万次阅读 多人点赞 2018-08-23 12:54:37
    前面做项目时用到ECharts,今天特此整理一下,作为笔记,同时希望帮助更多。 首先简单介绍一下,ECharts是个纯JavaScript图表库,底层依赖于轻量级的Canvas类库ZRender,基于BSD开原协议,是款非常优秀的可视...
  • chmod命令用法举例

    万次阅读 2018-07-23 14:11:02
    该命令有两种用法种是包含字母和操作符表达式的文字设定法;另种是包含数字的数字设定法。 利用chown命令来更改某个文件或目录的所有者。利用chgrp命令来更改某个文件或目录的用户组。  chmod命令详细情况...
  • random函数的用法

    万次阅读 多人点赞 2020-03-23 11:22:55
    用法: 1、random.random() 随机生成(0,1)之间的浮点数 2、random.randint(上限,下限) 随机生成在范围内的整数,两个参数分别表示上限和下限 3、random.randrange( , , ) 在指定范围内,按指定基数递增的集合中...
  • C++ extern用法总结

    万次阅读 2018-08-29 09:59:42
    1.extern用法总结 在C语言中,修饰符extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用”。 (1)extern修饰变量的声明 如果文件a.c需要引用b.c中变量int v,就可以在a.c中...
  • java中foreach的用法

    万次阅读 多人点赞 2019-07-17 16:48:44
    java中foreach,可以认为是增强版的for语句循环,它可以减少代码量,但是不是所有...用法1:输出维数组 用法2:输出二维数组 foreach的局限性 foreach是for循环的增强版本,简化了编程,提高了代码的可读性和安全...
  • Python编程学习:让函数更加灵活的*args和**kwargs(设计不同数量的参数的函数)的简介、使用方法、经典案例详细攻略 目录 *args和**kwargs(设计不同数量的参数的函数)的简介 1、*用法:统计个班内报名学...
  • Intent的用法(初步)

    万次阅读 多人点赞 2018-03-31 19:16:56
    可视化的知识便于复习和查找(注:笔记以学习《androi第行代码》这本书为基础) 什么是Intent?Intent在Android中的核心作用就是“跳转...不过Intent的“跳转”作用不仅于此,Intent还可以在其他地方使用,比如在...
  • groupby的用法

    万次阅读 2019-03-28 00:35:07
    –它的作用是通过一定的规则将个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。 –注意:group by 是先排序后分组; –举例子说明:如果要用到group by 一般用到的就是“每...
  • sprintf函数用法详解

    万次阅读 多人点赞 2017-07-14 09:06:41
    sprintf() 格式化输出函数(图形) 功能: 函数sprintf()用来作格式化的...说 明: 函数sprintf()的用法和printf()函数一样,只是sprintf()函数给出第个参数string(一般为字符数组),然后再调用 outtextxy()函数
  • python中join()函数的使用方法

    万次阅读 多人点赞 2019-06-23 17:00:23
    将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成个新的字符串 os.path.join():将多个路径组合后返回 、函数说明 1、join()函数 语法: 'sep'.join(seq) 参数说明 sep:分隔符。可...
  • laravel where的高级使用方法

    万次阅读 2018-05-26 18:13:27
    Laravel作为爱的框架,相信很多使用,那就避免不了对Sql语句的应用,很多情况下,在多种字段作为条件查询使用where的时候,不需要复杂的原生语句, 使用一个闭包,就能达到你想要的效果。 欢迎...
  • jps命令的使用方法

    万次阅读 多人点赞 2018-05-29 15:26:02
    jps(Java Virtual Machine Process Status Tool)是java提供的个显示当前所有java进程pid的命令,简单实用,非常适合在linux/unix平台上简单察看当前java进程的一些简单情况。很多都是用过unix系统里的ps命令,这...
  • C语言中extern用法详解

    千次阅读 多人点赞 2019-05-17 11:10:11
    extern的使用方法是直接了当的,想引用哪个函数就用extern声明哪个函数。这大概是KISS原则的种体现吧!这样做的个明显的好处是,会加速程序的编译(确切的说是预处理)的过程,节省时间。在大型C程序编译过程中...
  • AutoIt的基本用法

    万次阅读 2019-04-18 17:37:49
    今天在操作selenium的时候需要文件上传操作,所以寻找了很多解决方法,但是还是觉得使用python(os.system(r'E:\text.exe),这个解决方法比较好,所以各种查找教程,安装了aotuIt这个工具。 下载和安装不用说了,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,992,989
精华内容 1,197,195
关键字:

得一人之使的之用法