参数

使用printf定制化打印对象

瘦欲@ 提交于 2020-03-01 15:01:27
TBOX内置的libc库,有一份自有的printf实现,在支持了所有标准格式化参数的同时,也对其进行了一些扩展,来支持自定义的格式化参数打印, 例如: // 输出定点数:3.14 tb_printf("%{fixed}\n", tb_float_to_fixed(3.14)); // 输出ipv4地址:127.0.0.1 tb_ipv4_t addr; tb_ipv4_set(&addr, "127.0.0.1"); tb_printf("%{ipv4}\n", &addr); 以上两种都是TBOX内置的对象参数打印,你只需要吧你需要打印的对象名和对象描述函数注册进来,就行了。 其中 %{object_name} 就是自定义参数化对象打印的格式,这个是对%s、%f等标准格式的扩展,使你可以像ios中的 NSLog(@"%@", object) 那样方便的打印自定义对象的内容。 例如:如果你要支持自定义打印如下内容: typedef struct _rect_t { tb_long_t x; tb_long_t y; tb_size_t w; tb_size_t h; }rect_t; tb_printf("%{rect}\n", &rect); 那么你只需要提供对应的rect对象的描述函数,并对其进行注册,就行了: // rect对象的描述函数,将描述内容格式化到cstr中

分多次累计随机出某指定整数(多次随机整数,其和固定)的方法

心不动则不痛 提交于 2020-02-29 09:27:16
分多次累计随机出某指定整数(多次随机整数,其和固定)的方法 Spads Shane Loo Li 摘要 本文描述了同过 n 次取随机整数,使其总和为 m 的方法,并对该方法给出了数学证明。 正文 本文分为 5 个部分 ---------- ---------- ---------- ---------- 1、提出问题 2、解法程序 3、测试结果 4、测试程序 5、公式证明 【提出问题】 ---------- ---------- ---------- ---------- 有 n 次机会,每次随机一个整数。希望这 n 个整数之和是 m ;该怎么随机呢? 对于编程语言,惯例是提供了随机函数 r() ,得到 [0, 1) 之间的一个随机浮点数。所以从编程角度来说,随机一个整数,最常见的方式就是通过对 L * r() 向下取整来获取某一个范围内的整数。以上问题就转变成为了,如何获得合适的 L ,来满足 n 次随机的整数之和为 m 。 传统的做法,就是用 2 * m / n 来做这个 L 。问题是因为取整这个操作,让这种算法会产生比较大的误差。具体误差有多大,下边测试结果一栏会详细描述。 【解法程序】 —— 以 Java 程序为例 ---------- ---------- ---------- ---------- /** * <b>获取总量固定多次随机的倍率</b><br/> *

Java参数是传值还是传引用

狂风中的少年 提交于 2020-02-28 16:44:30
Java参数传值还是传引用  参数是按值而不是按引用传递的说明 Java 应用程序有且仅有的一种参数传递机制,即按值传递。写它是为了揭穿普遍存在的一种神话,即认为 Java 应用程序按引用传递参数,以避免因依赖“按引用传递”这一行为而导致的常见编程错误。   对此节选的某些反馈意见认为,我把这一问题搞糊涂了,或者将它完全搞错了。许多不同意我的读者用 C++ 语言作为例子。因此,在此栏目中我将使用 C++ 和 Java 应用程序进一步阐明一些事实。    要点   读完所有的评论以后,问题终于明白了,考试吧提示: 至少在一个主要问题上产生了混淆。因为对象是按引用传递的。对象确实是按引用传递的;节选与这没有冲突。节选中说所有参数都是按值 -- 另一个参数 -- 传递的。下面的说法是正确的:在 Java 应用程序中永远不会传递对象,而只传递对象引用。因此是按引用传递对象。但重要的是要区分参数是如何传递的,这才是该节选的意图。Java 应用程序按引用传递对象这一事实并不意味着 Java 应用程序按引用传递参数。参数可以是对象引用,而 Java 应用程序是按值传递对象引用的。    C++ 和 Java 应用程序中的参数传递   Java 应用程序中的变量可以为以下两种类型之一:引用类型或基本类型。当作为参数传递给一个方法时,处理这两种类型的方式是相同的。两种类型都是按值传递的

(转载)Hive学习笔记--Hive 参数

大憨熊 提交于 2019-12-10 06:20:35
第一部分:Hive 参数 hive.exec.max.created.files •说明:所有hive运行的map与reduce任务可以产生的文件的和 •默认值:100000 hive.exec.dynamic.partition •说明:是否为自动分区 •默认值:false hive.mapred.reduce.tasks.speculative.execution •说明:是否打开推测执行 •默认值:true hive.input.format •说明:Hive默认的input format •默认值: org.apache.hadoop.hive.ql.io.CombineHiveInputFormat •如果有问题可以使用org.apache.hadoop.hive.ql.io.HiveInputFormat hive.exec.counters.pull.interval •说明:Hive与JobTracker拉取counter信息的时间 •默认值:1000ms hive.script.recordreader •说明:使用脚本时默认的读取类 •默认值: org.apache.hadoop.hive.ql.exec.TextRecordReader hive.script.recordwriter •说明:使用脚本时默认的数据写入类 •默认值: org.apache

weblogic部署Already connected

余生颓废 提交于 2019-12-07 19:21:27
项目在tomcat上部署没有问题,部署到weblogic中时遇到一个错误: <!-- lang: java --> java.lang.IllegalAccessError: Already connected at weblogic.net.http.HttpURLConnection.setRequestProperty(HttpURLConnection.java:761) at weblogic.net.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:237) 经过搜索各种网上的资料信息后发现需要加上: -DUseSunHttpHandler=true windows下AdminServer启动脚本: set JAVA_OPTIONS=%SAVE_JAVA_OPTIONS% -DUseSunHttpHandler=true linux下如果是使用受管服务,则在管理服务脚本中的 JAVA_OPTIONS="-Dweblogic.security.SSL.trustedCAKeyStore="/bea/weblogic/wlserver_10.3/server/lib/cacerts" ${JAVA_OPTIONS}" 下面添加一行 JAVA_OPTIONS="-DUseSunHttpHandler

redis info 参数详解

╄→гoц情女王★ 提交于 2019-12-05 19:25:21
redis info 参数 详解 info 以一种易于解释且易于阅读的格式,返回关于redis服务器的各种信息和统计数值 命令如下: (默认不需要all , 我习惯加 all ,你可以去掉all 对吧一下) redis-cli -h x.x.x.x -p xxxx info all all : 返回所有信息 default : 返回默认选择的信息 当不带参数直接调用 INFO 命令时,使用 default 作为默认参数。 这里的redis 版本是 redis 3.0.7 返回参数如下: Server 服务器的信息 # Server redis_version: 3.0.7 ## redis 服务器版本 redis_git_sha1:00000000 ## Git SHA1 redis_git_dirty:0 ## Git dirty flag redis_build_id:d811223d6cb3a727 ## redis_mode:standalone ## os:Linux 2.6.32-573.18.1.el6.x86_64 x86_64 ## redis 服务器的宿主操作系统 arch_bits:64 ## 架构(32 或 64 位) multiplexing_api:epoll ## redis 所使用的事件处理机制 gcc_version:4.4.7 ## 编译

小博老师浅谈Context(一)

拟墨画扇 提交于 2019-12-05 02:35:35
Context 表示上下文,framework package的android.content.Context中,该类为LONG型,许多方法需要通过Context才能识别到调用者的实例。我们在Toast使用过程中,第一个 参数 Context,一般在Activity中我们直接用this代替,代表调用者的实例为Activity,但是在button的onClick(View view)等方法时,我们用this时就会报错,所以我们可能使用ActivityName.this来解决,主要原因是因为实现Context的类主要有Android特有的几个模型,Activity、Service以及BroadcastReceiver。常规需要Context实例的方法主要有各种Service实现的类,比如说SensorManager在实例化时需要getSystemService(String)方法必须由Context的 实例 执行,还有一些私有的文件系统I/O比如说openFileInput以及常用的Toast的make Text方法。 来源: oschina 链接: https://my.oschina.net/u/2971691/blog/813164

深入了解MyBatis参数

核能气质少年 提交于 2019-12-04 22:32:44
深入了解MyBatis参数 相信很多人可能都遇到过下面这些异常: "Parameter 'xxx' not found. Available parameters are [...]" "Could not get property 'xxx' from xxxClass. Cause: "The expression 'xxx' evaluated to a null value." "Error evaluating expression 'xxx'. Return value (xxxxx) was not iterable." 不只是上面提到的这几个,我认为有很多的错误都产生在和参数有关的地方。 想要避免参数引起的错误,我们需要深入了解参数。 想了解参数,我们首先看MyBatis处理参数和使用参数的全部过程。 本篇由于为了便于理解和深入,使用了大量的源码,因此篇幅较长,需要一定的耐心看完,本文一定会对你起到很大的帮助。 参数处理过程 处理接口形式的入参 在使用MyBatis时,有两种使用方法。一种是使用的接口形式,另一种是通过SqlSession调用命名空间。这两种方式在传递参数时是不一样的,命名空间的方式更直接,但是多个参数时需要我们自己创建Map作为入参。相比而言,使用接口形式更简单。 接口形式的参数是由MyBatis自己处理的。如果使用接口调用

nodejs取参四种方法req.body,req.params,req.param,req.body

孤者浪人 提交于 2019-12-04 13:39:57
获取请求很中的参数是每个web后台处理的必经之路,nodejs的 express框架 提供了四种方法来实现。 req.body req.query req.params req.param() 首先介绍第一个req.body 官方文档解释: Contains key-value pairs of data submitted in the request body. By default, it is undefined, and is populated when you use body-parsing middleware such as body-parser and multer. 稍微翻译一下:包含了提交数据的键值对在请求的body中,默认是underfined, 你可以用body-parser或者multer来解析body 解析body不是nodejs默认提供的,你需要载入body-parser中间件才可以使用req.body 此方法通常用来解析POST请求中的数据 第二种是req.query 官方文档解释: An object containing a property for each query string parameter in the route. If there is no query string, it is the empty object,

报表性能优化方案之善用参数注入

雨燕双飞 提交于 2019-12-04 13:10:25
1. 问题描述 对于多数据集关联报表,当数据很大时报表的展现速度就会很慢,或通过写sql语句又很复杂。为此FineReport提供一种,既可加快报表的展现速度,又不用编写复杂的sql语句的方案。即使用动态参数注入功能。 2. 原理 动态参数注入,是通过注入的值对数据库中的数据进行操作的,只是取对应的数据,所以会提高报表的性能。 3. 示例 新建模板 展现多个关联数据表的数据 SQL语句,ds1:SELECT * FROM [订单] SQL语句,ds2:SELECT * FROM 订单明细 报表样式 传统做法:先定义多个数据集,然后在报表中设置过滤条件,或使用连接将多个数据表定义成一个sql,但这两种方案会产生的一系列问题(具体下面有介绍)。而使用动态参数注入的功能可解决大数量报表展现的速度,下面对比看下这三种做法。 3.1 设置过滤 此方法是定义两个数据集查询出所有数据,然后在报表中设置过滤条件。 分页预览query_like.cpt,从日志中可看出,是将第二个数据集中的数据全部取出了,如下所示: 注:对于数据量大的报表,若将数据全部取出会降低报表的性能,因此会降低报表的展现速度。 3.2 定义sql 若是采用将两个数据集定义成一个数据集,则SQL语句为:select a.订单ID,订购日期,到货日期,发货日期,产品ID,单价,数量,进价,折扣 from 订单 a,订单明细 b