前言相信大家对于list简单数组的去重很熟悉了,例如以下代码int[]arrays={1,2,2,2,3,3,3};Arrays.stream(arrays).distinct().forEach(item->{System.out.println("item->"+item);});那我们来探讨下,对于list中保存为对象的数组,根据内部对象的某一个字段去重有什么好的思路呢?给出一个简单的Student对象publicclassStudent{Stringid;Stringindex;Stringname;} 针对该Student对象,以下是我想到的三种方法去重方法方法一:List.cont
系列文章目录数通王国历险记(2)目录前言 一、TCP我们称之为可靠的传输层协议,为什么称它为可靠呢?二、TCP的建立——三次握手1,提前知道TCP协议报文中都有些啥?2.第一次握手总的来说:就是PC1向PC2发出一个同步报文说,我想和你建立连接3,第二次握手总的来说:就是PC2同意和PC1建立连接,同时确认告诉PC1自己也想和PC1建立连接和的自己已经收到了PC1的同步报文的这件事4,第三次握手总的来说:就是PC1对PC2发送消息说:我已经收到你的同步报文和确认报文了,关系就此建立。三,TCP关闭----四次挥手1,为什么是四次挥手呢?2.第一次挥手提前知道:因为四次挥手有两次是重复的,只不过
一般重启deployment,常规操作是删掉对应的pod,但如果有多个副本集的话,一个个删很麻烦。除了删除pod,还可以:方案一:加上环境变量kubectlpatchdeploy-p'{"spec":{"template":{"spec":{"containers":[{"name":"","env":[{"name":"RESTART_TIME","value":"'$(date+%s)'"}]}]}}}}'方案二:重新设置镜像kubectlsetimagedeploy/=-n方案三:使用rolloutkubectlrolloutrestartdeploy-nPS:rolloutrestar
方法一:Controller中增加request参数@RestControllerpublicclassDemoController{@RequestMapping("/demo")publicvoiddemo(HttpServletRequestrequest){System.out.println(request.getParameter("hello"));}}线程安全缺点:每个方法都需要写一遍方法二:自动注入@Slf4j@RequestMapping(path="/request")@RestControllerpublicclassDemoRequestController{@Res
目录1.动态路由传参2.params传参3.query传参1.动态路由传参 使用“路径参数”使用冒号 : 标记。当匹配到一个路由时,参数值会被设置到 this.$route.params,也可以使用props来接收//路由{path:"/test/:id",name:"test",component:Test}//跳转方式有三种写法://或者this.$router.push("/test/123")//或者使用params传参this.$router.push({name:test,params:{id:"123"}})//Test组件使用props接收,或者this.$route.p
一、Robot,Thread和Timerimportjava.awt.AWTException;importjava.awt.Robot;importjava.text.SimpleDateFormat;importjava.util.Date;importjava.util.Timer;importjava.util.TimerTask;publicclassText1{publicstaticvoidmain(String[]args)throwsAWTException{//延时方法一Robotrobot=newRobot();SimpleDateFormatdateFormat=new
第一种 使用 html2canvas 对dom元素截图 1.npm安装npminstallhtml2canvas yarn安装yarnaddhtml2canvas 2.组件引入importhtml2canvasfrom"html2canvas" 3.代码//导出多张图表为一张图片//dmo元素里的内容转换为canvas,并将canvas下载为图片constdownload=()=>{//转换成canvashtml2canvas(document.getElementById("echarts")).then(function(canvas){varimg=canvas.toD
selenium的三种等待方式selenium中一般分为三种等待方式:显示等待、隐式等待、sleep强制等待1、显示等待(有条件)程序提前指定等待条件和等待时间,在查找元素时,判断规定时间内是否满足条件,满足则继续执行,不满足或超出时间则抛出异常fromseleniumimportwebdriverfromselenium.webdriver.common.byimportByfromselenium.webdriver.support.uiimportWebDriverWait#导入显示等待模块fromselenium.webdriver.supportimportexpected_cond
一、用set方法去重后与原列表长度比较lst=[1,3,5,3,4,4,2,9,6,7]set_lst=set(lst)iflen(set_lst)==len(lst):print('列表里的元素互不重复!')else:print('列表里有重复的元素!')二、用append的方式把原列表中的元素添加到一个新列表,确保新列表里不存在重复的元素,然后比较两个列表lst=[1,3,5,8,9,9,0,0,3,3]new_list=[]foriinlst:ifinotinnew_list:new_list.append(i)#这样能确保新的列表里包含原列表里所有种类的元素,且元素互不重复iflen(
方法一:直接执行命令:mysql>selectcount(1)fromtableintooutfile'/tmp/test.xls';QueryOK,31rowsaffected(0.00sec)在目录/tmp/下会产生文件test.xls遇到的问题:mysql>selectcount(1)fromtableintooutfile'/data/test.xls';--报错:ERROR1(HY000):Can'tcreate/writetofile'/data/test.xls'(Errcode:13)可能原因:mysql没有向/data/下写的权限方法二:查询都自动写入文件:mysql>pag