精华内容
下载资源
问答
  • 想打印的时候换行,就挨着加了换行符试了一下 post_response=requests.post(url,headers=headers,data=None,json=None) #打印出来是显示响应状态码,通过.text 方法可以返回是unicode 型数据,一般是在网页...

    背景:获得网页post请求结果的各项参数

    一开始不知道这些参数是干什么的。。想打印的时候换行,就挨着加了换行符试了一下

    post_response=requests.post(url,headers=headers,data=None,json=None)
    
    #打印出来是显示响应状态码,通过.text 方法可以返回是unicode 型的数据,一般是在网页的header中定义的编码形式
    
    print(post_response)
    
    print(get_response.text+'\n')
    
    print(get_response.content+'\n')
    
    print(get_response.json+'\n')

    报错:

    print(get_response.content+'\n')
    TypeError: can't concat str to bytes

    原因:

    encode返回的是bytes型的数据,不可以和str相加,将‘\n’前加b

    所以修改为:

    print(get_response.text+b'\n')
    
    print(get_response.content+b'\n')
    
    print(get_response.json+b'\n')

    继续报错:

    print(get_response.text+b'\n')
    TypeError: can only concatenate str (not "bytes") to str

    原因:

    还是说类型不匹配

    已知.content接收到的是bytes,所以把换行符在换行符前面加一个b,转换成bytes类型,结果打印出来的结果和没加换行符的结果是一样的,都不能换行

    b'<!doctype html>\n<html data-n-head-ssr>\n  <head >\n    <title>\xe7\x88\xb1\xe5\xa........

    但是为什么开头都有b?

    原网页没有啊

    那么也强制转换一下text和json

    print(str(get_response.json)+'\n')
    print(str(get_response.test)+'\n')

    结果是可以换行的

    本次尝试的结论如下:

    print(str(get_response.content)+'\n') #可以打印,可以换行
    print(get_response.content+b'\n') #可以打印,不能换行
    
    print(str(get_response.json)+'\n') #可以打印,可以换行
    print(get_response.json+b'\n') #不能打印,报错:TypeError: unsupported operand type(s) for +: 'method' and 'bytes'

    参考博客:

    https://www.dazhuanlan.com/2019/10/23/5db06fc518b1c/

    展开全文
  • SAP Report 打印

    2010-03-25 21:56:39
    本来我意思是用Page Format为X_65_132纵向打印出来,但是结果总是横向打出来,我将Line-size都缩小到了125,还是不行,后来我将Page Format改为X_90_120居然纵向打印出来了,并且数据很完整,不知道怎么回事?...
  • 当您使用JMH运行基准测试时,通常会查看运行后打印的结果表,或者生成一个JSON文件并将其馈送到以立即使用。 当您对许多不同的变化进行基准测试或要比较历史数据或以图形方式显示更复杂的基准测试结果时,这种方法...
  •  *想知道大于7个节点单链表为啥就不能实现反向排序呢?  **/ public void sort2(Node head){<!-- -->  Node pre=head;  Node cur=pre.next;  Node tem=cur.next;...
  • 开发环境struts2+Hibernate+spring用了json,不知道action写对不对,但是页面能取到json值,就是用上“.”取不到值。该怎么来取值呢? Action类: public class GoodsAction extends ActionSupport{ ...
  • 你必须知道的495个C语言问题

    千次下载 热门讨论 2015-05-08 11:09:25
    3.7 是否可以安全地认为,一旦&&和||左边的表达式已经决定了整个表达式的结果,则右边的表达式不会被求值? 3.8 为什么表达式printf("%d%d",f1(),f2());先调用了f2?我觉得逗号表达式应该确保从左到右的求值顺序...
  • PHP使用Echo打印字符串

    2021-05-31 22:13:33
    echo可以打印字符串,注意,这里不能打印数组其他复杂数据结构 echo是个函数,我们后面讲到函数时就知道是怎么回事了 我们用一个在线php工具测试下 打开菜鸟工具在线编辑器 https://c.runoob.com/compile/1 echo '...

    echo是什么?上篇已经用到过了

    echo可以打印字符串,注意,这里不能打印数组其他复杂的数据结构

    echo是个函数,我们后面讲到函数时就知道是怎么回事了

    我们用一个在线php工具测试下

    打开菜鸟工具在线编辑器 https://c.runoob.com/compile/1

    echo 'php客栈网,免费学习php'; ?> 然后运行可以看到结果

    如果你试下数组呢,会有报错

    如果想要打印数组可以使用

    print([1,2,3]); ?> 当然print也可以打印字符串等 文章原地址:https://www.php-inn.com/detail/21.html 文章名::PHP使用Echo打印字符串 转载本文请附上文章原地址!

    微信小程序免费学习 PHP零基础免费学习

    欢迎关注我的公众号:子枫的奇妙世界,获得独家整理的学习资源和日常干货推送。 如果您对我的其他专题内容感兴趣,直达我的个人博客:www.wangmingchang.com

    展开全文
  • 知道大家有没有遇到过,在使用Python读取 Excel行列或是单元格时,如果其内容是日期格式,那么打印出来却不是日期,而是一串数字,如下图: 我们期望这个日期解析出来是:1919/1/20以及2019/11/20,而结果却...

    不知道大家有没有遇到过,在使用Python读取 Excel的行列或是单元格时,如果其内容是日期格式的,而打印出来后却不是日期,而是一串数字,如下图:
    在这里插入图片描述
    我们期望这个日期解析出来是:1919/1/20以及2019/11/20,而结果却是数字6960.0和43789.0,这是什么原因呢?这个数字又是什么呢?
    其实这是以1900年为原点,到指定日期经过的天数。

    想要将数字转换为日期,可以通过 xlrd 中的 xldate_as_tuple 方法可以将数字转换为日期,在代码块中添加代码进行转换,参考代码如下:

    from datetime import datetime
    from xlrd import xldate_as_tuple
    
    ExcelDate = []
    for date in lv_1:
        print('数字日期:',date,end = '  ')  
        new_date =str ( datetime ( * xldate_as_tuple(date,0)))#使用xldate_as_tuple方法转换,并将转换后的值变为string类型
        print('转换后日期:',new_date)  
        new_date = new_date[0:10]  # 取日期部分
        print('最终打印效果:',new_date)
        
        ExcelDate.append(new_date)
       
    print('最终得到的日期列表', ExcelDate )  
    

    效果:
    在这里插入图片描述
    当然,如果使用pandas库读取Excel就不会遇到这种情况了,【读取Excel】组件使用便是pandas的read_excel方法:
    在这里插入图片描述

    免费下载试用:https://support.i-search.com.cn/

    展开全文
  • 在Mybatis项目中,代码测试时候,知道每一个Sql在代码中执行时间以及返回结果来判断Sql编写是否有问题,一开始只是在自己怀疑有问题Sqlmapper方法前后获取时间进行打印,但是,当项目里面Sql很多...

    背景

    在Mybatis项目中,代码测试的时候,想要知道每一个Sql在代码中的执行时间以及返回结果来判断Sql编写的是否有问题,一开始只是在自己怀疑有问题的Sql的mapper方法前后获取时间进行打印,但是,当项目里面的Sql很多的时候,这种方法显然不能够一劳永逸,那么有没有一种方法可以自动获取到每一个mapper中的每一个Sql语句的执行时间和执行结果呢?

    解决方案

    刚开时的时候想到了Springboot中的AOP功能,后来发现SpringBoot中的AOP切面功能切不到mapper中的方法,原因是mapper是接口而不是具体的实现类,因此使用AOP切不到mapper的具体实现,智能找另一种方法。

    网上查找到另一种实现方式,也就是使用Mybatis的拦截器,拦截器的使用比较简单,继承自Interceptor类,然后在**@Intercepts**注解里面添加要拦截的Mybatis方法即可。通过拦截器可以很方便获取到执行方法,它的使用方式和SpringBoot的AOP切面操作有点类似,但是看它实现应该是使用的函数回调而不是像AOP那样是使用动态代理来实现的。具体原理不赘述,网上有很多这样的文章讲解。

    下面通过拦截器来实现一个异常SQL检测的功能

    代码实现

    import lombok.extern.slf4j.Slf4j;
    import org.apache.ibatis.executor.Executor;
    import org.apache.ibatis.executor.statement.StatementHandler;
    import org.apache.ibatis.mapping.MappedStatement;
    import org.apache.ibatis.plugin.*;
    import org.apache.ibatis.session.ResultHandler;
    import org.apache.ibatis.session.RowBounds;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.stereotype.Component;
    
    import java.sql.Statement;
    import java.util.List;
    
    /**
     * Sql执行时间记录拦截器,此拦截器会将异常的Sql进行打印,包过执行超时的,返回结果异常多的Sql
     *
     * @author wangp
     */
    @Intercepts({
            @Signature(type = Executor.class, method = "query", args = {MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class}),
            @Signature(type = Executor.class, method = "update", args = {MappedStatement.class, Object.class})
    })
    
    @Component
    @Configuration
    @Slf4j
    public class SqlCheckInterceptor implements Interceptor {
    
        private static final boolean DEBUG = true;
        /**
         * 超时警告时间临界值,超过这个时间的Sql将会被打印警告
         */
        private static final int LIMIT_QUERY_TIME = 2000;
        /**
         * 返回长度警告临界值,超过这个长度的Sql将会被打印警告
         */
        private static final int MAX_LENGTH = 5000;
    
        @Override
        public Object intercept(Invocation invocation) throws Throwable {
            if (!DEBUG) {
                return invocation.proceed();
            }
    
            long startTime = System.currentTimeMillis();
            String sql = null;
            try {
                Object[] args = invocation.getArgs();
                if (args != null && args.length > 0 && args[0] instanceof MappedStatement) {
                	// 定位到是哪一个mapper的哪一个函数
                    sql = ((MappedStatement) args[0]).getId();
                }
                Object proceed = invocation.proceed();
                if (proceed instanceof List) {
                    if (((List<?>) proceed).size() > MAX_LENGTH) {
                        log.warn(">> [SQL WARN:数据量过多 ({})条] -> [{}]", ((List<?>) proceed).size(), sql);
                    }
                }
                return proceed;
            } finally {
                long sqlCost = System.currentTimeMillis() - startTime;
                if (sqlCost > LIMIT_QUERY_TIME) {
                    log.warn(">> [SQL WARN:执行超过时限({})ms] -> [{}]", sqlCost, sql);
                }
            }
        }
    
        @Override
        public Object plugin(Object target) {
            return Plugin.wrap(target, this);
        }
    
        @Override
        public void setProperties(java.util.Properties properties) {
    
        }
    
    }
    
    

    代码简述

    上面首先我们通过注解拦截了Executor的两个方法query与update,虽然这里只拦截了两个方法,但是细心地伙伴可以发现Executor里面只会有这两个和sql执行有关的方法,原因估计就在于update,insert,delete这三种头属于update范畴,因此这里就已经把增删改查数据库的四种操作已经涵盖了,后面的args是每个方法所需要的参数,这个可以通过Executor的源码看到。

    值得注意的是我们拦截的Executor的方法的第一个参数都是MappedStatement,这个参数封装了我们定义在mapper中的sql信息,通过这个参数我们就可以定位到这个拦截器拦截的究竟是那个mapper中的哪一个函数。获取mapper函数的方式也很简单,获取第一个参数,然后调用它的getId方法即可。

    在上面的逻辑中,首先定位到具体的mapper函数,然后获取执行时间,这里做了两个限制,1. 超过2S的sql会被警告 2. 返回数据个数超过5000条的Sql会被警告

    注册拦截器

    把写完的拦截器注册进mybatis中即可

      /**
         * 根据数据源创建SqlSessionFactory
         */
        @Bean
        public SqlSessionFactory sqlSessionFactory(DynamicDataSource ds) throws Exception {
            PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
            SqlSessionFactoryBean fb = new SqlSessionFactoryBean();
            // 指定数据源(这个必须有,否则报错)
            fb.setDataSource(ds);
            // 指定基包
            fb.setTypeAliasesPackage("com.example.entity");
            fb.setMapperLocations(resolver.getResources("classpath:mapper/**/*.xml"));
            fb.setPlugins(new SqlCheckInterceptor());
            return fb.getObject();
        }
    

    效果

    这样在我们代码运行的时候,会自动打印出来可能存在问题的SQL,很方便我们进行问题的排查,例如下面是我的日志的输出,实际工作中感觉也挺实用的,能快速排查sql问题。

    >> [SQL WARN:执行超过时限(3463)ms] -> [com.example.mapper.TestMapper.findMaxAcquisitionTimeBy]
    >> [SQL WARN:数据量过多 (4322)] -> [{com.example.mapper.TestMapper.queryAllData}]
    

    通过日志可以很方便观察到可能是哪一个sql出现了问题,然后就进行判断这个sql有没有优化的必要,从而排除项目中因为sql问题而导致的卡顿或者执行时间过长的问题。

    展开全文
  • 我去,本来着凑合用吧,后来与G5S效准,还是挺准。 网上有很多检测仪设计,不过大家不知道发现了没有,自己做和买来成品测出来数值差别非常大,原因在于修正数据算法,侧重点就是算法。 别不多说...
  • 3.7 是否可以安全地认为,一旦&&和||左边的表达式已经决定了整个表达式的结果,则右边的表达式不会被求值? 36  3.8 为什么表达式printf(%d %d, f1(), f2()); 先调用了f2?我觉得逗号表达式应该确保从左到右的求...
  • 《你必须知道的495个C语言问题》

    热门讨论 2010-03-20 16:41:18
    3.7 是否可以安全地认为,一旦&&和||左边的表达式已经决定了整个表达式的结果,则右边的表达式不会被求值? 36  3.8 为什么表达式printf("%d %d", f1(), f2()); 先调用了f2?我觉得逗号表达式应该确保从左到右的...
  • java笔试题重复字符串 内容 一、简介 REGEX 表示 REGular EXpression,它只是字符序列。 例如,这些表达式表示 [0–9] 表示该表达式应包含数字。...,并将文件中所有数字打印到控制台。 到目前为止,只考虑假设[0-9
  • java多线程循环打印A,B,C

    千次阅读 2016-05-05 22:27:04
    我最近在准备面试,突然起来大概二年前汽车之家面试一道题,题目是java多...写完,顺手百度了一下,对比一下,结果发现这个搜索词还比较少,只有一个百度知道提问,截图: 我只想说真是逗比啊,本来
  • 导致crul端发出指令一直等待回传的结果未遂。 通过执行获取数据库列表的指令curl -XGET http://127.0.0.1:4101/list/db ,同时打印4101的插件服务器日志,可以看到main.py里TableHandler与...
  • 这么写是可以,但不会被自动绑定进PO,我来问就是想知道在不调用SET方法情况下能否自动把非字段属性绑定进PO。 如果是单调set方法,我是知道~~有没有自动方式,谢谢walsh不遗余力帮我...
  • 我希望统计指定条件下,买入和卖出的总和,此sql语句我直接中mysql中执行,可以正确的获取到我的结果,但是中django中不知道怎么读取查询的内容,代码如下: ``` sql = "SELECT sum(CASE WHEN direction = 1 ...
  • 3.7 是否可以安全地认为,一旦&&和||左边的表达式已经决定了整个表达式的结果,则右边的表达式不会被求值? 65 3.8 为什么表达式printf("%d %d", f1(), f2()); 先调用了f2?我觉得逗号表达式应该确保从左到右的求...
  • 3.7 是否可以安全地认为,一旦&&和||左边的表达式已经决定了整个表达式的结果,则右边的表达式不会被求值? 65 3.8 为什么表达式printf("%d %d", f1(), f2()); 先调用了f2?我觉得逗号表达式应该确保从左到右的求...
  • 结果把查询的多个条件放进了()里就好了,我琢磨着不把查询条件放进括号是会对每条记录进行过滤,加了括号优先把前面的查询做完了,在从查询过的结果中进行过滤,也只能这么猜测了 你可以试着把容易过滤的条件...
  • 它跳转到另一个页面,确取不到Session中值,我我对比了两个页面它们SessionSession ID ,结果 ID 是不一样, 而且我又用 w1.yingxin186.com 登录tomcat服务器主页,输入了用户名和密码也进不了tomcat...
  • 突然暴露了打印BUG,很严重,必现。这种难题,只能是吾这边解决。吾首先另办法应付一下,然后就深入分析。  相比于这个BUG,吾发现相关人员态度才是真正问题。什么意思?从上到下,从研发到测试,都一副...
  • 于是自己把每个参数都打印出来,发现没什么问题,就是结果有问题。最后还是问了度娘,才知道这是javascript浮点运算一个缺陷。 所以我感觉这种计算东西还是要交给后端去算,前端算起来有点危险,哈哈。 解决...
  • 因为我们知道,Go语言中结构体是值传递,所以要做改变其中成员操作方法和函数参数,必然要做地址传递。 * ``` package main import "fmt" //实现单链队列,队尾入队,队头出队 //定义队列每个节点属性...
  • 下面例子会在控制台中打印出一些信息(具体打印出什么?可以猜猜😀),然后返回<code>hello world。 <pre><code> javascript let koa = require('koa') let app = koa() app....
  • python2与python3中range()方法对比

    千次阅读 2018-12-29 15:52:44
    今天在使用python3中的range()方法的时候出现了错误,最开始一直不知道怎么回事,后来打印出来意识到了问题,在python2中,range方法得到的结果就是一个确定的列表对象,列表对象所拥有的方法,range方法生成...
  • #include int main() { printf("abc"); ... printf("\refg\n"); //\r切换到句首, \n为换行键 ...运行结果如上,我想知道的是第一行打印的efg后面为什么不再打印abc,切换 到句首,后面abc就不再打印了吗

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 208
精华内容 83
关键字:

想知道打印后的结果