精华内容
下载资源
问答
  • 元宵节要到了,给大家猜几个谜语

    万次阅读 2020-02-07 16:07:32
    1.一直和党心连心(打一字) 忠 2、 永久太平(打一中国地名) 长宁 3、 贸易协定(打一数学名词) 交换律 4、 直上重霄九(打一成语) 平步青云 5、 环境幽静,生活安逸。...9、 拍一巴掌(打一中国地名)...

    1.一直和党心连心(打一字)

    2、 永久太平(打一中国地名)
    长宁

    3、 贸易协定(打一数学名词)
    交换律

    4、 直上重霄九(打一成语)
    平步青云

    5、 环境幽静,生活安逸。(打一成语)
    世外桃源

    6、 八抬大轿讲礼节,四方贵客进家门。(打一校园用语)
    桃李满天下

    7、 久雨初晴(打一中国城市名)
    贵阳

    8、 猫窝里的老鼠(打一成语)
    战战兢兢

    9、 拍一个巴掌(打一中国地名)
    五指山

    10、 牢牢掌握(打二字常用语)
    固执

    11、 无师自通(打一学校组织机构)
    学生会

    12、 天明月隐日高升(打一字)

    13、 除夕就是岁尾(打一字)

    14、 白云深处有人家(打一建筑名词)
    太华观

    15、 两人力大冲破天(打一字)

    16、 旭日升空 (打一字)

    17、 始终台湾归一统 (打一字)

    18、 双方离别泪纷纷(打一字)

    19、 招收演员(打数学名词)
    补角

    20、 请人做事(打数学名词)
    求作

    21、 大家的样子(打数学名词)
    同类项

    22、 十五的月亮悬庭前 (打一北京地名)
    圆明园

    23、 新春佳节话元宵 (打一报刊名)
    半月谈

    24、 万家灯火闹元宵 (打一电影名)
    不夜城,乡情

    25、 欢欢喜喜做元宵 (打一音乐词语)
    快节奏

    26、 赤橙黄绿青蓝紫(打一晚会专业用语)
    彩排

    27、 嘴尖尾巴长,偷油又偷粮,白天洞里躲,夜晚出来忙。 (打一动物一个字)

    28、 头上两根毛,身穿彩花袍。飞舞花丛中,快乐又逍遥。 (打一昆虫)
    蝴蝶

    29、 衣(依)靠一口田 (打一字)

    30、 一条大船不靠岸,海里沉浮随心愿,不烧煤来不用油,烟筒冒水不见烟。 (打

    一动物)
    鲸鱼

    31、 哪个数字倒立后能变大?(猜一数字)
    6

    32、 小小姑娘黑又黑,秋天走了春天回,带着一把小剪刀,半天空里飞呀飞。(打一

    动物)
    燕子

    33、 人的一辈子 (打一成语)
    出生入死

    34、 中国姑娘(打一神话人物)
    龙女

    35、 鼠年旧岁(打一古代名人)
    老子

    36、 海里有颗五角星,星上多刺皮不平,看它叭着无动静,五角是它捕食器。(打一

    动物)
    海星

    37、 妻子去旅游(打二字常用语)
    内行

    38、 头戴尖尖帽,手执两把矛,汤朝皇帝下圣旨,赐它一件大红袍。(打一动物)

    39、 救了田鸡饿了蛇 (打一成语)
    顾此失彼

    40、 一扇玻璃窗,里面亮堂堂,演戏又唱歌,经常换花样。 (打一家用电器)
    电视

    41、 良性循环(打二个字的常用语)
    心清

    42、 气质优雅脖子长,走起路来好神气,一摇一摆乐逍遥。 (打一动物)
    天鹅

    43、 一个数字,前面的数去掉是十三,后面的数去掉是四十。(猜这一数字)
    43

    44、 什么老鼠用两只脚走路? (打一影视动物名)
    米老鼠

    45、 动物做标本 (打一成语)
    装模作样

    46、 离婚(打一物理名词)
    绝缘

    47、 上林垂钓 (打一成语)
    缘木求鱼

    48、 没有女人的地方(打一外国城市)
    汉城

    49、 举头望明月(打一外国地名)
    仰光

    50、 千里两头陌上飞(打一传统节日)
    重阳

    51、 冰雪半掩塞上路(打一节气)
    寒露

    52、 爱好旅游(打一成语)
    喜出望外

    53、 蜜饯黄连(打一成语)
    同甘共苦

    54、 学子远去,又见归来。(打一字)

    55、 门前流水映明日(打一字)

    56、 遇事不求人(打一成语)
    自力更生

    57、 盲人摸象(打一成语)
    不识大体

    58、 四面不通(打一成语)
    走投无路

    59、 白床铺,黄帐子。(打一水果)
    桂圆

    60、 圆规画鸡蛋(打一中国城市名)
    太原

    61、 一圈一圈又一圈,一晚一晚又一晚。(打一物品)
    蚊香

    62、 用手拿不起,用刀劈不开,煮饭和洗衣,都得请我来。(打一自然物)

    63、 倾盆大雨(打一中国城市名)
    天水

    64、 鸡蛋(打一歌名)
    心太软

    65、 世界上只有你和我(打一数字)
    2

    66、 狗放不出屁(打一成语)
    狗屁不通

    67、 七六五四三二一(打一数学名词)
    倒数

    68、 弟兄六七个,围着柱子坐,大家一分手,衣服全扯破。(打一蔬菜)
    大蒜

    69、 小小售货员,肩上不挑担,背上背着针,满地到处串。(打一动物)
    :刺猬

    70、 身穿绿袍小英雄,夏天田里捉害虫,冷风吹来找不见,春天又在池塘里。(打一

    动物)
    青蛙

    71、 白天草里住,晚上往外飞,带着灯儿把路照,飞来飞去不怕黑。 (打一动物)
    萤火虫

    72、 泵 (打一成语)
    水落石出

    73、 眼如铜铃,身象铁钉,有翅无毛,有脚难行。(打一昆虫)
    蜻蜓

    74、 再见吧,妈妈。(打一数学名词)
    分母

    75、 西安一住三星期 (打一字)

    76、 叶儿长长牙齿多,树儿杈杈结刺果,果皮青青果内黑,剥到心中雪雪白。(打

    一果树)
    板栗树

    77、 弯弯一座彩色桥,高高挂在半山腰,七色鲜艳真正好,一会儿工夫不见了。(打

    一自然现象)
    彩虹

    78、 一个英雄汉,设下天罗网,整天打埋伏,专捉飞来虫。(打一昆虫)
    蜘蛛

    79、 瞎猫逮着死耗子(打两个字的礼貌用语)
    幸会

    80、 放松(打三个字的礼貌用语)
    不要紧

    81、 暗疾尚在潜伏期(打二个字的安全用语)
    隐患

    82、 空头非穴女儿到,令下有误王者来(打二个字的词语)
    安全

    83、 节约用电(打四个字的礼貌用语)
    请多关照

    84、 叶落花也落(打两个字的礼貌用语)
    谢谢

    85、 皇阿玛开金口(打一成语)
    一言九鼎

    86、 得天独厚艳而香,国色天香美名扬,不爱攀附献媚色,何惧飘落到他乡。(打

    一植物名)
    牡丹

    87、 生在山里,死在锅里,藏在瓶里,活在杯里。(打一植物)
    茶叶

    88、 体圆似球,色红如血,皮亮如珠,汁甜如蜜。(打一水果)
    樱桃

    89、 青色棒子棚上架,少时做汤味道佳,老来还能把锅刷。(打一蔬菜)
    丝瓜

    90、 白胖小子四四方,一块一块能做汤。(打一食品)
    豆腐

    91、 身材瘦小尾巴尖,浑身彤红惹人怜。(打一蔬菜)
    辣椒

    92、 小时胖乎乎,老来皮肉皱,吃掉它的肉,吐出红骨头。 (打一植物)

    93、 愿花常开(打一三字礼貌用语)
    不用谢

    94、 访贫问苦(打一四字礼貌用语)
    光临寒舍

    95、 橡皮管,挂耳上;小圆块,贴心房;白衣大夫依靠它,懂得病情怎么样。(打一

    医疗用品)
    听诊器

    96、 楼台接楼台,层层叠起来。上面飘白雾,下面水花开。(打一日常用品)
    蒸笼

    97、 一队胡子兵,当了牙医生。早晚来巡逻,打扫真干净。(打一日常用品)
    牙刷

    98、 远看两个零,近看两个零。有人用了行不得,有人不用不得行。(打一日常用品

    )
    眼镜

    99、 一棵麻,多枝丫。雨一淋,就开花。(打一日常用品)
    雨伞

    100、 有头没有尾,有角又有嘴。扭动它的角,嘴里直淌水。(打一日常用品)
    水龙头

    展开全文
  • 如果不排除节假日周日的话,处理起来非常easy,是程序员都能写出来,但是…如果排除法定节假日,排除正常周日,同时特殊支持法定的工作日(有一些周日,国家强制正常上班),那么处理起来就非常麻烦,我...

    项目组有一个需求,计算两个Date类型参数,相差的小时数。业务上有一些特殊的用途,可能用于绩效考核的目的吧…

    如果不排除节假日周六日的话,处理起来非常easy,是个程序员都能写出来,但是…如果要排除法定节假日,排除正常周六日,同时特殊支持法定的工作日(有一些周六日,国家强制正常上班),那么处理起来就非常麻烦,我耗时大概1天半的时间,用基础的Date和Calendar实现,下面是具体的实现代码,要是有更好的实现,欢迎大家留言。

    注意:项目组要求如果开始或者截止时间属于休息日,对应当天处理小时数为0。例如:2018-2-14 8:00:00 到2018-2-15 10:00:00,2-15是国家规定放假时间,不算时间,只算2-14号的16个小时。可以根据你们自己项目组的需求,灵活的修改哦

    /**
    	 * 判断输入的年月日日期是否属于休息日
    	 * @param date  需要判断的日期(年月日)
    	 * @param lawHolidayList  国家规定放假的时间
    	 * @param lawWorkList  国家规定的工作日期
    	 * @return
    	 */
    	public static boolean isDayOff(Date date,List<Date> lawHolidayList,List<Date> lawWorkList){
    
    		for(Date date1 :lawHolidayList){
    			int c = date.compareTo(date1);
    			if(c==0){
    				//休息日
    				return true;
    			}
    		}
    
    		for(Date date1 :lawWorkList){
    			int c = date.compareTo(date1);
    			if(c==0){
    				//工作日
    				return false;
    			}
    		}
    
    		return isZhouLiuZhouRiDate(date);
        }
    
    
    	/**
    	 * 判断时间是否属于正常周六日
    	 * @param date
    	 * @return
    	 */
    	public static boolean isZhouLiuZhouRiDate(Date date){
    
    		Calendar cal = Calendar.getInstance();
    		cal.setTime(date);
    		int week = cal.get(Calendar.DAY_OF_WEEK) - 1;
    		//是否属于周六日
    		boolean flag = (week == 0 || week == 6);
    		return flag;
    
    	}
    
    	/**
    	 * 排除国家法定的休息日、正常周六日,计算两个时间相差多少小时数(休息日当天时间为零处理)
    	 * @param startTimeYYYYMMDDHHMMSS  年月日时分秒
    	 * @param endTimeYYYYMMDDHHMMSS  年月日时分秒
    	 * @param lawHolidayList
    	 * @param lawWorkList
    	 * @return
    	 */
    	public static long workHours(Date startTimeYYYYMMDDHHMMSS,
    								 Date endTimeYYYYMMDDHHMMSS,
    								 List<Date> lawHolidayList,
    								 List<Date> lawWorkList) throws Exception {
    		//开始时间转成年月日格式
    		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    		String strStartTimeYYYYMMDD = sdf.format(startTimeYYYYMMDDHHMMSS);
    		Date startTimeYYYYMMDD = sdf.parse(strStartTimeYYYYMMDD);
    		//开始时间是否属于休息日
    		boolean startTimeIsDayOff = isDayOff(startTimeYYYYMMDD, lawHolidayList, lawWorkList);
    
    		//结束时间转成年月日格式
    		String strEndTimeYYYYMMDD = sdf.format(endTimeYYYYMMDDHHMMSS);
    		Date endTimeYYYYMMDD = sdf.parse(strEndTimeYYYYMMDD);
    		//结束时间是否属于休息日
    		boolean endTimeIsDayOff = isDayOff(endTimeYYYYMMDD, lawHolidayList, lawWorkList);
    
    		//分为4种情况
    		if (startTimeIsDayOff) {
    			if (!endTimeIsDayOff) {
    				//开始时间在休息日里,结束时间不在休息日里(开始那天不计算小时数,结束那天计算小时数)
    				Calendar cal = Calendar.getInstance();
    				cal.setTime(startTimeYYYYMMDD);
    				cal.add(Calendar.DAY_OF_MONTH, +1);
    				Date validStartTimeYYYYMMDD = cal.getTime();
    				Date validStartTimeYYYYMMDDTemp = validStartTimeYYYYMMDD;
    				int skipDay = 0;
    
    				//循环遍历开始时间之后的每一个日期
    				while (validStartTimeYYYYMMDDTemp.compareTo(endTimeYYYYMMDDHHMMSS) != 1) {
    					if (isDayOff(validStartTimeYYYYMMDDTemp, lawHolidayList, lawWorkList)) {
    						skipDay += 1;
    					}
    					cal.add(Calendar.DAY_OF_MONTH, +1);
    					validStartTimeYYYYMMDDTemp = cal.getTime();
    				}
    
    				return ((endTimeYYYYMMDDHHMMSS.getTime() - validStartTimeYYYYMMDD.getTime()) / (60 * 60 * 1000)) - skipDay * 24;
    			} else {
    				//开始时间在休息日里,结束时间也在休息日里(开始那天不计算小时数,结束那天也不计算小时数,看中间有多少个工作日)
    					Calendar cal = Calendar.getInstance();
    				cal.setTime(startTimeYYYYMMDD);
    				cal.add(Calendar.DAY_OF_MONTH, +1);
    				Date validStartTimeYYYYMMDD = cal.getTime();
    				//工作日天数
    				int workDays = 0;
    				//循环遍历开始时间之后的每一个日期
    				while (validStartTimeYYYYMMDD.compareTo(endTimeYYYYMMDDHHMMSS) != 1) {
    					if (!isDayOff(validStartTimeYYYYMMDD, lawHolidayList, lawWorkList)) {
    						workDays += 1;
    					}
    					cal.add(Calendar.DAY_OF_MONTH, +1);
    					validStartTimeYYYYMMDD = cal.getTime();
    				}
    				return workDays * 24;
    			}
    		} else {
    			if (endTimeIsDayOff) {
    
    				int skipDay = 0;
    				//开始时间不在休息日里,结束时间在休息日里
    				Calendar cal = Calendar.getInstance();
    				cal.setTime(startTimeYYYYMMDD);
    				cal.add(Calendar.DAY_OF_MONTH, +1);
    				Date validStartTimeYYYYMMDD = cal.getTime();
    				while (validStartTimeYYYYMMDD.compareTo(endTimeYYYYMMDDHHMMSS) != 1) {
    					if (!isDayOff(validStartTimeYYYYMMDD, lawHolidayList, lawWorkList)) {
    						skipDay += 1;
    					}
    					cal.add(Calendar.DAY_OF_MONTH, +1);
    					validStartTimeYYYYMMDD = cal.getTime();
    				}
    
    				Calendar ca = Calendar.getInstance();
    				ca.setTime(startTimeYYYYMMDDHHMMSS);
    				int startHour = ca.get(Calendar.HOUR_OF_DAY);
    				return (24-startHour) + skipDay * 24;
    			} else {
    				//开始时间在不在休息日里,结束时间也不在休息日里
    				int skipDay = 0;
    				Calendar cal = Calendar.getInstance();
    				cal.setTime(startTimeYYYYMMDD);
    				cal.add(Calendar.DAY_OF_MONTH, +1);
    				Date validStartTimeYYYYMMDD = cal.getTime();
    				while (validStartTimeYYYYMMDD.compareTo(endTimeYYYYMMDDHHMMSS) != 1) {
    					if (isDayOff(validStartTimeYYYYMMDD, lawHolidayList, lawWorkList)) {
    						skipDay += 1;
    					}
    					cal.add(Calendar.DAY_OF_MONTH, +1);
    					validStartTimeYYYYMMDD = cal.getTime();
    				}
    				return ((endTimeYYYYMMDDHHMMSS.getTime() - startTimeYYYYMMDDHHMMSS.getTime()) / (60 * 60 * 1000)) - skipDay * 24;
    			}
    		}
    	}
    
    
    
    
    	public static void main(String args[]) throws Exception{
    
    		SimpleDateFormat yyyyMMdd = new SimpleDateFormat("yyyy-MM-dd");
    		List<Date> lawHolidayDate = new ArrayList<>();
    		List<Date> lawWorkDate = new ArrayList<>();
    		String [] lawHolidayDateStr =
    				new String[] {
    				        "2018-01-01",
    						"2018-02-15",
    						"2018-02-16",
    						"2018-02-17",
    						"2018-02-18",
    						"2018-02-19",
    						"2018-02-20",
    						"2018-02-21",
    						"2018-04-05",
    						"2018-04-06",
    						"2018-04-07",
    						"2018-04-29",
    						"2018-04-30",
    						"2018-05-01",
    						"2018-06-16",
    						"2018-06-17",
    						"2018-06-18",
    						"2018-09-22",
    						"2018-09-23",
    						"2018-09-24",
    						"2018-10-01",
    						"2018-10-02",
    						"2018-10-03",
    						"2018-10-04",
    						"2018-10-05",
    						"2018-10-06",
    						"2018-10-07",
    						"2018-12-30",
    						"2018-12-31",
    						"2019-01-01",
    						"2019-02-04",
    						"2019-02-05",
    						"2019-02-06",
    						"2019-02-07",
    						"2019-02-08",
    						"2019-02-09",
    						"2019-02-10",
    						"2019-04-05",
    						"2019-04-06",
    						"2019-04-07",
    						"2019-05-01",
    						"2019-06-07",
    						"2019-06-08",
    						"2019-06-09",
    						"2019-09-13",
    						"2019-09-14",
    						"2019-09-15",
    						"2019-10-01",
    						"2019-10-02",
    						"2019-10-03",
    						"2019-10-04",
    						"2019-10-05",
    						"2019-10-06",
    						"2019-10-07"};
    		String [] lawWorkDateStr =
    				new String[] {
    						"2018-02-11",
    						"2018-02-24",
    						"2018-04-08",
    						"2018-04-28",
    						"2018-09-29",
    						"2018-09-30",
    						"2018-12-29",
    						"2019-02-02",
    						"2019-02-03",
    						"2019-09-29",
    						"2019-10-12"};
    
    		for(String str :lawHolidayDateStr){
    			lawHolidayDate.add(yyyyMMdd.parse(str));
    		}
    
    		for(String str :lawWorkDateStr){
    			lawWorkDate.add(yyyyMMdd.parse(str));
    		}
    
    		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    		Date startDate = sdf.parse("2018-02-22 8:45:10");
    		Date endDate = sdf.parse("2018-02-24 7:10:10");
    
    
    		System.out.println("相差小时数:"+workHours(startDate,endDate,lawHolidayDate,lawWorkDate));
    	}
    

    上面的例子,需要在项目里配置两种时间,一是国家法律规定的休息的时间,二是国家规定要正常上班的时间(例如一些周六日,为了十一的一天放假,调休前一个或者后一个周六日必须上班)。上面的例子是直接写死的2018/2019年的两种时间,自己项目的话,可以配置在配置文件或者数据库中哦!

    展开全文
  • 从下午六点多开始学习golang,花了三个小时了解变量、指针、数据类型、结构体、语法、函数以及golang的切片、管道、(go程)协程等特性,用半小时思考我该写个啥,花了一个半小时写了个小白入门爬虫,最后傻乐了半...

    在这里插入图片描述

    写在前面

           竟然大半夜不睡觉写博客。这个标题,是不是像一些无良卖课吸睛公众号,点开一看味同嚼蜡。


          好吧,大半夜码字,因为实在激动。从下午六点多开始学习golang,花了三个小时了解变量、指针、数据类型、结构体、语法、函数以及golang的切片、管道、(go程)协程等特性,用半小时思考我该写个啥,花了一个半小时写了个小白入门爬虫,最后傻乐了半小时。


    前言

          我是写Java的,所以本文是浅尝辄止golang后一得之见,才疏学浅,希望对想了解golang的小伙伴有所帮助。

    一、Golang是什么?

    1.简介

    官话:golang是Google开发的一种 静态强类型、编译型,并发型,并具有垃圾回收功能的编程语言。

    个人看法:

    • 有很多C语言的影子,比如语法、控制流结构、基础数据类型、传参、指针等,方便上手(Java写习惯了,顺手扔出来的分号,是那么的格格不入无处安放)
    • 能访问底层操作系统,还提供了强大的网络编程和并发编程支持(channel和Goroutine是核心)

    二、使用步骤

    1.下载镜像

    在这里插入图片描述

    镜像地址

    下载对应的版本就行

    2.下载GoLang(别的也行,VSCode)

    链接在此

    3.开干

    个人途径

    三、核心特性

    1.goroutine协程

         大道至简

    1.1 什么是 Go 协程?

    先理解进程、线程 之间概念的区别

    对于 进程、线程,都是有内核进行调度,有 CPU 时间片的概念,进行 抢占式调度(有多种调度算法)

    • 协程是用户级线程,对内核是透明的,系统并不知道有协程的存在。
    • 完全由用户自己的程序进行调度,通常只能进行协作式调度,需要协程自己主动把控制权转让出去之后,其他协程才能被执行到。

    goroutine 和协程区别

    • 本质上,goroutine 就是协程。 不同的是,Golang 在 runtime、系统调用等多方面对 goroutine调度进行了封装和处理,当遇到长时间执行或者进行系统调用时,会主动把当前 goroutine 的CPU 转让出去,让其他goroutine 能被调度并执行。
    • 从语言层面原生支持协程,在函数或者方法前面加 go关键字就可创建一个协程。

    1.2 goroutine和线程的比较

    内存消耗 切换调度开销
    每个 goroutine (协程) 默认占用内存远比 Java 、C 的线程少。goroutine:2KB 线程:8MB goroutine 远比线程小;线程:涉及模式切换(从用户态切换到内核态)、16个寄存器、PC、SP…等寄存器的刷新等。goroutine:只有三个寄存器的值修改 - PC / SP / DX.

    1.3 goroutine协程实现原理

    协程是基于线程的。内部实现上,维护了一组数据结构和 n 个线程,真正的执行还是线程,协程执行的代码被扔进一个待执行队列中,由这 n 个线程从队列中拉出来执行。这就解决了协程的执行问题。
    暂时只了解到这里,待续


    2.channel

    2.1 什么是 channel?

    channel是Go语言中各个并发结构体(goroutine)之前的通信机制。 通俗的讲,就是各个goroutine之间通信的”管道“,有点类似于Linux中的管道。

    2.2 咋用?

    1.声明channel
    2.引用类型
    3.单向channel
    
    
    var 变量名 chan 数据类型
    
    channel和和map类似,channel也一个对应make创建的底层数据结构的引用。
    
    当我们复制一个channel或用于函数参数传递时,我们只是拷贝了一个channel引用,因此调用者和被调用者将引用同一个channel对象。和其它的引用类型一样,channel的零值也是nil。定义一个channel时,也需要定义发送到channel的值的类型。
    
    // 方法一:channel的创建赋值
    
    var ch chan int;
    
    ch = make(chan int);
    
    // 方法二:短写法
    
     ch:=make(chan int);
    
    // 方法三:综合写法:全局写法!!!!
    
    var ch = make(chan int);
    
    
    单向chan
    
    //定义只读的channel
    
    read_only := make (<-chan int)
    
     
    //定义只写的channel
    
    write_only := make (chan<- int)
    

    四、小小爬虫

    1.爬虫四步

    1. 踩点(找目标)http://www.netbian.com/fengjing/index_2.htm
    2. 爬(拿数据)
    3. 过滤(获取想要的)
    4. 数据处理

    2.代码

    package main
    
    import (
    	"fmt"
    	"io/ioutil"
    	"net/http"
    	"regexp"
    	"strconv"
    	"strings"
    	"sync"
    	"time"
    )
    
    var (
    	//存放图片的管道
    	chanImageUrls chan string
    	wg            sync.WaitGroup
    
    	//监控协程
    	chanTask chan string
    )
    
    
    func main() {
    
    	chanImageUrls = make(chan string, 1000000)
    	chanTask = make(chan string, 26)
    
    	for i := 2; i < 10; i++ {
    		wg.Add(1)
    		go getImageUrls("http://www.netbian.com/fengjing/index_" + strconv.Itoa(i) + ".htm")
    	}
    
    	wg.Add(1)
    	go checkOK()
    
    	//下载
    	for i := 0; i < 3; i++ {
    		wg.Add(1)
    		go downloadImg()
    	}
    	wg.Wait()
    
    }
    //下载文件
    func downLoadFile(url string, filename string) (ok bool) {
    	resp, err := http.Get(url)
    	HandleError(err, "http.get.url")
    	defer resp.Body.Close()
    	bytes, err := ioutil.ReadAll(resp.Body)
    	HandleError(err, "res.Body")
    	filename = "D:/test/" + filename
    	err = ioutil.WriteFile(filename, bytes, 0666)
    	if err != nil {
    		return false
    	} else {
    		return true
    	}
    }
    
    //下载图片
    func downloadImg() {
    	for url := range chanImageUrls {
    		filename := getFilenameFromUrl(url)
    		ok := downLoadFile(url, filename)
    		if ok {
    			fmt.Println(filename + "下载成功")
    		} else {
    			fmt.Println(filename + "下载失败")
    		}
    	}
    
    }
    
    //截取名字
    func getFilenameFromUrl(url string) (filename string) {
    	lastIndex := strings.LastIndex(url, "/")
    	filename = url[lastIndex+1:]
    	timePrefix := strconv.Itoa(int(time.Now().UnixNano()))
    	filename = timePrefix + "_" + filename
    	return
    
    }
    
    //任务统计协程
    func checkOK() {
    	var count int
    	for {
    		url := <-chanTask
    		fmt.Println("完成爬取  " + url)
    		count++
    		if count == 26 {
    			close(chanImageUrls)
    			break
    		}
    	}
    	wg.Done()
    }
    
    //爬取图片链接到管道
    func getImageUrls(url string) {
    	urls := getImages(url)
    	for _, url := range urls {
    		chanImageUrls <- url
    	}
    	chanTask <- url
    	wg.Done()
    
    }
    
    //获取当前页面图片链接
    func getImages(url string) (urls []string) {
    	pageStr := getResByPage(url)
    	re := regexp.MustCompile(reImage)
    	result := re.FindAllStringSubmatch(pageStr, -1)
    	for _, res := range result {
    		url := res[0]
    		urls = append(urls, url)
    	}
    	return urls
    }
    
    

    3.结果

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述


    总结

    睡觉

    展开全文
  • 从php5.1.0开始,php.ini里加了date.timezone这个选项,并且默认情况下是关闭的也就是显示的时间(无论用什么php命令)都是格林威治标准时间和我们的时间(北京时间)差了正好8个小时。  关于timezone 大陆内地...

     从php5.1.0开始,php.ini里加了date.timezone这个选项,并且默认情况下是关闭的也就是显示的时间(无论用什么php命令)都是格林威治标准时间和我们的时间(北京时间)差了正好8个小时。

            关于timezone 大陆内地可用的值是:Asia/Chongqing ,Asia/Shanghai ,Asia/Urumqi ,PRC(依次为重庆,上海,乌鲁木齐,中华人民共和国)港台地区可用:Asia/Macao ,Asia/Hong_Kong ,Asia/Taipei (依次为澳门,香港,台北)还有新加坡:Asia/Singapore其它:Etc/GMT-8 ,Singapore ,Hongkong

    解决方法一:

            再添加时间前 插入:CODE:(好像不用加) date_default_timezone_set(PRC);

    解决方法二:

            echo date("Y-m-d H:i:s", time()+8*60*60);

    解决方法三(修改php.ini文件):

            找到php.ini中的“;date.timezone =”这行,将“;”去掉,改成“date.timezone = PRC”(PRC:People's Republic of China 中华人民共和国),重启Apache,问题解决。

     

    附:date时间格式

    date("Y-m-d H:i:s"); 显示的格式: 年-月-日 小时:分钟:秒

    相关时间参数:

    a - "am" 或是 "pm" 
    A - "AM" 或是 "PM" 
    d - 几日,二位数字,若不足二位则前面补零; 如: "01" 至 "31" 
    D - 星期几,三个英文字母; 如: "Fri" 
    F - 月份,英文全名; 如: "January" 
    h - 12 小时制的小时; 如: "01" 至 "12" 
    H - 24 小时制的小时; 如: "00" 至 "23" 
    g - 12 小时制的小时,不足二位不补零; 如: "1" 至 12" 
    G - 24 小时制的小时,不足二位不补零; 如: "0" 至 "23" 
    i - 分钟; 如: "00" 至 "59" 
    j - 几日,二位数字,若不足二位不补零; 如: "1" 至 "31" 
    l - 星期几,英文全名; 如: "Friday" 
    m - 月份,二位数字,若不足二位则在前面补零; 如: "01" 至 "12" 
    n - 月份,二位数字,若不足二位则不补零; 如: "1" 至 "12" 
    M - 月份,三个英文字母; 如: "Jan" 
    s - 秒; 如: "00" 至 "59" 
    S - 字尾加英文序数,二个英文字母; 如: "th","nd" 
    t - 指定月份的天数; 如: "28" 至 "31" 
    U - 总秒数 
    w - 数字型的星期几,如: "0" (星期日) 至 "6" (星期六) 
    Y - 年,四位数字; 如: "1999" 
    y - 年,二位数字; 如: "99" 
    z - 一年中的第几天; 如: "0" 至 "365"

    展开全文
  • 线上故障了,这个时候不然就是修复consumer的问题,让他恢复消费速度,然后傻傻的等待几个小时消费完毕。这个肯定不行。一个消费者一秒是1000条,一秒3个消费者是3000条,一分钟是18万条,1000多万条。 所以如果你...
  • 在ThoughtWorks实习六个月所学

    千次阅读 2014-07-19 14:42:22
    引言: 看到某篇文章在说在微软8个月所学的,想想自己也可以总结一下自己在实习的时候所学的。半年前,我开始了在ThoughtWorks某项目的学习生涯,并在大学毕业(本科)后,在原来的团队中工作。确实对于一刚毕业...
  • 宋宝华:Docker 最初的2小时(Docker从入门入门)

    万次阅读 多人点赞 2017-02-21 09:42:31
    最初的2小时,你会爱上Docker,对原理和使用流程有最基本的理解,避免满世界无头苍蝇式找资料。本人反对暴风骤雨式多管齐下狂轰滥炸的学习方式,提倡迭代学习法,就是先知道怎么玩,有感性认识,再深入学习高级...
  • 以7为例: select sysdate - interval '7' day from dual 当前时间减去7分钟的时间 ...当前时间减去7小时的时间 select sysdate - interval '7' hour from dual 当前时间减去7天的时间 select sysd...
  • 现有8种药水,其中有且仅有一种有毒,药水24小时见效,现在要求在24小时内找出有毒药水,需要至少只小白鼠? 对于这题,不同于二分法找有毒的情况,这关键在于只能一次,这是考察对二进制数据的理解,每只...
  • 记今年阿里巴巴招聘的几个失误

    千次阅读 2013-09-15 15:05:37
    小吐槽。 1. 同学帮忙内推,我把简历发给了同学。天后,收到短信,让我去网上注册,又填了一遍简历,...2. 发的笔试通知的短信写错了,地点算法工程师,职位北京大学二教101教室,笔试时间9-13下午六点到八点。 3. 大
  • 我选取了我人生中的几个重要经历和抉择,这些事件,持续影响了我的一生,希望对大家有所启发。 通过这篇文章,我只想让大家知道,我跟大家一样都只是普通人,也曾经处在比大家更差的阶段,只是靠坚持和毅力,把一手...
  • 最好是15~20之间。另外18数字不好,18层地狱,没电梯上下方便,低了视野不好,地面噪音大,着火救援不超过20层,太低...高层住宅的楼层选择考虑采光、视野等因素。 高层的住宅层好,这是很多的购房者在
  • 几个前端时间插件总结

    万次阅读 2016-06-08 14:45:10
    @(JAVA开发)几个前端时间插件总结总结一下几款时间插件,分别是 - [ ] jeDate 下载地址 - [ ] bootstrap-datetimepicker 下载地址 - [ ] My97DatePicker 下载地址 - [ ] jquery UI 插件Datepicker 下载地址并...
  • 8瓶酒一瓶有毒,用人测试。每次测试结果8小时后才会得出,而你只有8个小时的时间。问最少需要(B)人测试? A、2 B、3 C、4 D、6 解析:用3位2进制代表8瓶酒,如下表所示 瓶序号 二进制 中毒情况 第一瓶
  • 八个超级经典小故事

    千次阅读 2006-05-30 10:02:00
    八个超级经典小故事一、用人之道 去过庙的人都知道,一进庙门,首先是弥陀佛,笑脸迎客,而在他的北面,则是黑口黑脸的韦陀。但相传在很久以前,他们并不在同一庙里,而是分别掌管不同的庙。 弥乐佛热情快乐,...
  • PHP的date()获得当前时间 少8个小时的解决 摘要:PHP的date()获得的当前时间和实际的本地时间不一致的,和北京时间正好差8个小时的解决方法。 难度:20 初学PHP想获得当前时间,翻翻PHP手册或书就知道用时间...
  • 那时我还有些犹豫:老公每天早上8点上班,经常加班深夜11。偶尔能正常下班,都好像放了假一样。他刚毕业时还是一白衣飘飘的少年郎,没年就变成了大腹便便的油腻大叔。亏得他头发牢固,不然也像其他程序员...
  • 标红的字注意一下,有可能这几个简单的字,就是最能概括这个概念的关键,个人在回顾的时候把这些红色标出来了,会在题干中以不同的案例形式来考察,但是这些考察的关键字还是能找到的!有条件的 建议打印下来...
  • 虽然我觉得尽量从实际问题说起,尽量不要说的很专业,但有几个词却是谈摄影无法避开的词,它们是:光圈,快门, 曝光,焦距, ISO,景深。  一、ISO(感光度)与图片质量  ISO -- 感光度,是一个曝光率极高的...
  • B代表药水,M代表老鼠;Mn代表老鼠正常,Mn'代表老鼠死亡;Bn代表药水正常,Bn'代表药水有毒; ...1. 最显而易见的答案是:1000只,每只对应一瓶药水,M1 => B1 , M1' => B1'……。...这是一很好的思路。我们考虑
  • 从ADAS自动驾驶(一):自动驾驶的发展及分级 从今天起,我将根据自己所接触的ADAS和无人驾驶技术,来写一写无人驾驶的基本知识,主要是帮助自己总结,还有是自己做了一些工作,这里就当做是用来保存的笔记。本人...
  • 升级这十认知,你就是大佬!

    千次阅读 多人点赞 2019-06-15 14:52:55
    成为某个领域的专家,需要10000小时,按比例计算就是:如果每天工作八个小时,一周工作五天,那么成为一个领域的专家至少需要五年。 一万小时理论强调的是大佬的成功不是一蹴而就,是需要时间累积的。 单纯的...
  • 用三只老鼠可以分清种状态: 001:药1有毒 010:药2有毒 011:药3有毒 100:药4有毒 101:药5有毒 110:药6有毒 111:药7有毒 000:药8有毒 上面的第一位表示第一只鼠的状态, 比如:第一行是鼠1,2活,...
  • 我一生中的几个重要抉择

    千次阅读 2005-05-28 21:39:00
    我一生中的几个重要抉择 王选 于 August 19, 1999 at 04:33:10: 王选教授1998年10月在北大做的讲座《我一生中的个重要抉择》,由于篇幅所限只选摘了其中的几个部分。 王选教授是北大方正的开创者,他以敏锐...
  • 松哥的 Spring Boot 教程分为几个阶段。2016我最早在 2016 年底的时候开始写 Spring Boot 系列的教程,记得当时在广州上班,年底那段时间在深圳...
  • 身为管理者 会讲的八个故事

    千次阅读 2012-09-29 11:29:52
    一、用人之道    去过庙的人都知道,一进庙门,首先是弥陀佛,笑脸迎...但相传在很久以前,他们并不在同一庙里,而是分别掌管不同的庙。  弥乐佛热情快乐,所以来的人非常多,但他什么都不在乎,丢三拉
  •  九月二十多号停止了忙碌找工作的...10月11回到学校,开始回顾下找工作的这几个月。  三月底至四月初实习生招聘开始,想抱着增长面试经验的态度去试试。在家里安安稳稳的过了一个“幸福”的新年,了学校才
  • 俗话说磨刀不误砍柴工,确实,一早上花一个小时去磨刀一天下来肯定能多砍很多柴。我们做软件开发也是同样的道理,有套好开发框架在手里,开发也是事半功倍。那么一套MVC快速开发框架至少得具有哪些功能才能帮我们...
  • --【作业常用的几个步骤】 EXEC msdb.dbo.sp_delete_job EXEC msdb.dbo.sp_add_job EXEC msdb.dbo.sp_add_jobstep EXEC msdb..sp_add_jobschedule EXEC msdb.dbo.sp_add_jobserver EXEC msdb.dbo.sp_start_job -...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 113,195
精华内容 45,278
关键字:

六点到八点要几个小时