返回值

springboot中返回值json中null转换空字符串

余生颓废 提交于 2019-11-27 11:10:30
在实际项目中,我们难免会遇到一些无值。当我们转JSON时,不希望这些null出现,比如我们期望所有的null在转JSON时都变成“”“”这种空字符串,那怎么做呢? Jackson中对null的处理 1 @Configuration 2 public class JacksonConfig { 3 @Bean 4 @Primary 5 @ConditionalOnMissingBean(ObjectMapper.class) 6 public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) { 7 ObjectMapper objectMapper = builder.createXmlMapper(false).build(); 8 objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() { 9 @Override 10 public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException { 11

day33_8_15 并发编程4,线程池与协程,io模型

五迷三道 提交于 2019-11-27 10:56:00
一。线程池   线程池是一个处理线程任务的集合,他是可以接受一定量的线程任务,并创建线程,处理该任务,处理结束后不会立刻关闭池子,会继续等待提交的任务,也就是他们的进程/线程号不会改变。   当线程池中的任务没有结束时是不会接受下一个任务的。   它的操作有:   pool = ThreadPoolExecutor()   创建一个线程池,其中括号中代表的是一次可以接纳的线程任务,可以不加参数,不加参数其数量就是当前cpu的个数*5。   res = pool.submit(func,args)   提交一个任务,args代表的是函数的参数。res接受的是该submit的返回值,类似于如下的类: <Future at 0x2057e656940 state=running>   state代表的是当前该线程的状态。   res.result()   而使用result可以将提交的任务函数的返回值获取。   这里的result还有等待任务的返回值的作用。如果任务没结束,就会一直等待,可以将并行操作改成串行操作。   pool.shutdown()   可以将池子关闭,并等待池子终端 任务全部结束再执行下面代码。   例子: import time from concurrent.futures import ThreadPoolExecutor import os from

Linux字符设备驱动

孤街浪徒 提交于 2019-11-27 10:42:31
1、Linux字符设备驱动的基本结构 (1)cdev结构体 在Linux内核中,使用结构体cdev对字符设备进行描述,其定义如下图所示: Linux内核提供了一组函数用于对cdev结构体的操作: void cdev_init(struct cdev *, const struct file_operations *); struct cdev *cdev_alloc(void); void cdev_put(struct cdev *p); int cdev_add(struct cdev *, dev_t, unsigned); void cdev_del(struct cdev *); 1)cdev_init()函数 cdev_init()的作用用来初始化一个cdev结构体,函数的代码如下所示: 参数: cdev:要初始化化的cdev结构体 fops:设备的file_operations结构体 返回值: 无 2)cdev_alloc() cdev_alloc()的作用是用来动态分配一个cdev结构体,函数的代码如下所示: 参数: 无 返回值: 成功:返回cdev结构体的指针 失败:返回NULL 3)cdev_put() cdev_put()函数的作用用来释放cdev,函数的代码如下所示: 参数: p:cdev结构体指针 返回值: 无 4)cdev_add() cdev_add(

Redis集合(set)的命令操作

旧街凉风 提交于 2019-11-27 10:10:35
redis 对set集合的命令操作 redis的set集合是String类型的无序集合,集合元素是唯一的, sadd key value1 value2 作用:对key添加一个value或多个value 返回值:被添加到集合中的新元素的数量,不包括被忽略的元素。   scard key 作用:获取key对应的所有元素个数 返回值:不存在是返回0。存在时返回集合的数量   sismember key member 作用:查看member元素是不是key集合的成员 返回值:是的话返回1,不是或key集合不存在返回0   smembers key 作用:获取集合key的所有成员数量 返回值:集合中的所有成员 , 不存在时返回 (empty list or set)   smove source destination member 作用:将 member 元素从 source 集合移动到 destination 集合 返回值:如果 source 集合不存在或不包含指定的 member 元素,则 smove 命令不执行任何操作,仅返回 0 。否则, member 元素从 source 集合中被移除,并添加到 destination 集合中去。 当 destination 集合已经包含 member 元素时, smove 命令只是简单地将 source 集合中的 member 元素删除。 当

string类型小结

廉价感情. 提交于 2019-11-27 09:52:40
在C#中string字符串类型一直是比较常见,它是String的别名,我们可以根据自己的喜好来命名,下面总结一下它的常见方法: 1.比较两个字符串的大小 public static int Compare(string strA, string strB); 参数:strA是要比较的第一个参数,strB是要比较的第二个参数; 返回值:小于零,strA小于strB;等于零,strA等于strB;大于零,strA大于strB。 public static int Compare(string strA, string strB, bool ignoreCase); 参数:strA是要比较的第一个参数,strB是要比较的第二个参数;ignoreCase:要在比较过程中忽略大小写,则为 true;否则为 false。返回值:小于零,strA小于strB;等于零,strA等于strB;大于零,strA大于strB。 public static int Compare(string strA, int indexA, string strB, int indexB, int length); 参数:strA是要比较的第一个参数,indexA是strA 中子字符串的位置;strB是要比较的第二个参数,indexB是strB 中子字符串的位置;length是 要比较的子字符串中字符的最大数量

Callable接口、Runable接口、Future接口

こ雲淡風輕ζ 提交于 2019-11-27 09:41:07
1. Callable与Runable区别 Java从发布的第一个版本开始就可以很方便地编写多线程的应用程序,并在设计中引入异步处理。 Thread 类、 Runnable 接口和Java内存管理模型使得多线程编程简单直接。 但Thread类和Runnable接口都不允许声明检查型异常,也不能定义返回值。没有返回值这点稍微有点麻烦。 不能声明抛出检查型异常则更麻烦一些。 public void run() 方法契约意味着你必须捕获并处理检查型异常。即使你小心地保存了异常信息(在捕获异常时)以便稍后检查,但也不能保证这个类(Runnable对象)的所有使用者都读取异常信息。 你也可以修改Runnable实现的getter,让它们都能抛出任务执行中的异常。但这种方法除了繁琐也不是十分安全可靠,你不能强迫使用者调用这些方法,程序员很可能会调用join()方法等待线程结束然后就不管了。 但是现在不用担心了,以上的问题终于在1.5中解决了。Callable接口和Future接口的引入以及他们对线程池的支持优雅地解决了这两个问题。 不管用哪种方式创建线程,其本质都是Callable接口与Runable接口。两者都是可被其它线程执行的任务!!区别是: (1)Callable规定的方法是call(),而Runnable规定的方法是run()。 (2)Callable的任务执行后可返回值

Java泛型

≡放荡痞女 提交于 2019-11-27 08:18:07
原文链接: Jav泛型全总结 转 java泛型全总结 2018年07月05日 20:21:28 华山拎壶冲 阅读数 15082 概述 泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。 什么是泛型?为什么要使用泛型? 泛型,即“ 参数化类型 ”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。 泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型) 。也就是说在泛型使用过程中,操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。 List arrayList = new ArrayList(); arrayList.add( "aaaa" ); arrayList.add( 100 ); for ( int i = 0 ; i< arrayList.size();i++){ String item = ( String )arrayList. get (i); Log .d( "泛型测试" , "item = " + item); } 毫无疑问

稳定、兼容、高效、超低延时RTSP播放器网页web无插件直播流媒体音视频播放器libEasyPlayer-RTSP库接口调用说明

丶灬走出姿态 提交于 2019-11-27 07:53:48
EasyPlayer-RTSP播放器 EasyPlayer-RTSP播放器是一套RTSP专用的播放器,包括有:Windows(支持IE插件,npapi插件)、Android、iOS三个平台,是区别于市面上大部分的通用播放器,EasyPlayer-RTSP系列从2014年初发展至今得到了各行各业(尤其是安防行业)的广泛应用,其主要原因是EasyPlayer-RTSP更加精炼、更加专注,具备非常低的延时,非常高RTSP协议兼容性,编码数据解析等方面,都有非常大的优势。 libEasyPlayer-RTSP库接口调用说明 API接口函数定义 函数说明 :激活EasyPlayer int EasyPlayer_Init(char* key) 函数说明 :开始进行流播放 参数说明:url流媒体地址、hWnd窗口句柄、renderFormat编码格式、rtpovertcp拉取流的传输模式,0=udp,1=tcp、用户名、密码、callback数据回调、bHardDecode硬件解码1=是,0=否。 int EasyPlayer_OpenStream(const char *url, HWND hWnd, RENDER_FORMAT renderFormat, int rtpovertcp, const char *username, const char *password,

重载运算符强化--返回值

梦想与她 提交于 2019-11-27 07:13:32
''' 重载运算符强化--返回值 ''' # print(1+2)#不同的类型有不同的解释 # print('1'+'2') class complex: def __init__(self,x,y): self.x=x self.y=y def show(self): print(self.x,'+',self.y,'i') def __add__(self, other):#重载的含义就是针对本类型,对+ 重新解释 return complex(self.x+other.x,self.y+other.y)#加法的返回值 c1=complex(1,2) c2=complex(3,5) c1.show() c2.show() c3=c1+c2 c4=c1.__add__(c2)#效果同c3 c1.show() c2.show() c3.show() c4.show() ''' 1 + 2 i 3 + 5 i 1 + 2 i 3 + 5 i 4 + 7 i ''' 来源: https://www.cnblogs.com/liangliangzz/p/11350218.html

Shell总结2

生来就可爱ヽ(ⅴ<●) 提交于 2019-11-27 07:03:09
1---------->>sed命令用来取指定范围行。 2.--------------->>>>“$?“返回值的用法 (1)判断命令、脚本或函数等程序是否执行成功。 (2)若在脚本中调用"exit 数字",则会返回这个数字给"$?"变量。 (3)如果实在函数里,则通过"return 数字"把这个数字以函数返回值的形式传给"$?" 来源: https://www.cnblogs.com/wqs-Time/p/11349679.html