工作中常需要产生某一年的周数、月份,比如按周排计划、按月核算工资……
1、自动产生周数(含每周起始及结束日期)
DECLARE @FirstDateOfYear DATETIME SET @FirstDateOfYear='2017-01-01'; WITH T AS ( SELECT DATEADD(D,NUMBER,@FirstDateOfYear) D FROM MASTER.DBO.SPT_VALUES WHERE [TYPE]='P' AND NUMBER<DATEDIFF(D,@FirstDateOfYear,DATEADD(YY,1,@FirstDateOfYear)) ) SELECT DATEPART(YY,D) '年份',DATEPART(WEEK,D) '周数',CONVERT(VARCHAR,MIN(D),120) '起始日期',CONVERT(VARCHAR,MAX(D),120) '结束日期' FROM T GROUP BY DATEPART(YY,D),DATEPART(WEEK,D) 执行结果:
2、自动产生月份(含每月起始及结束日期)
DECLARE @FirstDateOfYear DATETIME SET @FirstDateOfYear='2017-01-01'; WITH T AS ( SELECT DATEADD(M,NUMBER,@FirstDateOfYear) D FROM MASTER.DBO.SPT_VALUES WHERE [TYPE]='P' AND NUMBER BETWEEN 0 AND 11 ) SELECT DATEPART(YY,D) '年份',DATEPART(MM,D) '月份',CONVERT(VARCHAR(10),D,120) '起始日期', CONVERT(VARCHAR(10),DATEADD(Y,-1,DATEADD(M,1,D)),120) '结束日期' FROM T 执行结果:
1.请分析SparkSQL出现的原因,并简述SparkSQL的起源与发展。
因为关系数据库已经很流行,而且关系数据库在大数据时代已经不能满足要求。首先,用户需要从不同数据源执行各种操作,包括结构化、半结构化和非结构化数据。其次,用户需要执行高级分析,比如机器学习和图像处理。在实际大数据应用中,经常需要融合关系查询和复杂分析算法(比如机器学习或图像处理),但是,缺少这样的系统。
Spark SQL填补了这个鸿沟:首先,可以提供DataFrame API,可以对内部和外部各种数据源执行各种关系型操作。其次,可以支持大数据中的大量数据源和数据分析算法Spark SQL可以融合:传统关系数据库的结构化数据管理能力和机器学习算法的数据处理能力。
2.简述RDD和DataFrame的联系与区别?
区别:RDD是分布式的java对象的集合,但是对象内部结构对于RDD而言却是不可知的。DataFrame是一种以RDD为基础的分布式数据集,提供了详细的结构信息,相当于关系数据库中的一张表。
联系:1.都是spark平台下的分布式弹性数据集,为处理超大型数据提供便利。2、都有惰性机制,在进行创建、转换,如map方法时,不会立即执行,只有在遇到Action才会运算。3.都会根据spark的内存情况自动缓存运算,这样即使数据量很大,也不用担心会内存溢出4、三者都有partition的概念。5.三者有许多共同的函数,如filter,排序等。
3.DataFrame的创建
spark.read.text(url)
spark.read.json(url)
spark.read.format(text).load(people.txt)
spark.read.format(json).load(people.json)
4. PySpark-DataFrame各种常用操作基于df的操作:打印数据 df.show()默认打印前20条数据
打印概要 df.printSchema()
查询总行数 df.count()
df.head(3) #list类型,list中每个元素是Row类
输出全部行 df.collect() #list类型,list中每个元素是Row类
查询概况 df.describe().show()
取列 df[‘name’], df.name, df[1]
基于sparksql的操作:
创建临时表虚拟表 df.registerTempTable('people')
spark.sql执行SQL语句 spark.sql('select name from people').show() 5. Pyspark中DataFrame与pandas中DataFrame
1、概述
在指定的时间间隔内将内存中的数据集快照写入磁盘, 也就是行话讲的 Snapshot 快照,它恢复时是将快照文件直接读到内存里。
2、备份时如何执行的
Redis 会单独创建(fork)一个子进程来进行持久化,首先会将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。整个过程中,主进程是不进行任何 IO 操作的,这就确保了极高的性能。如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那 RDB 方式要比 AOF 方式更加的高效。RDB 的缺点是最后一次持久化后的数据可能丢失。
3、RDB持久化流程
4、rdb文件
在 redis.conf 中配置文件名称,默认为 dump.rdb。
rdb 文件的保存路径,也可以修改。默认为 Redis 启动时命令行所在的目录下 “dir ./”
5、相关配置和操作
参考:(29条消息) Redis中RDB操作_21-夜一的博客-CSDN博客_redis开启rdb
参考:Redis RDB说明和实际操作 - 简书 (jianshu.com)
6、缺点
Fork 的时候,内存中的数据被克隆了一份,大致 2 倍的膨胀性需要考虑。 虽然 Redis 在 fork 时使用了写时拷贝技术,但是如果数据庞大时还是比较消耗性能。 在备份周期在一定间隔时间做一次备份,所以如果 Redis 意外 down 掉的话,就会丢失最后一次快照后的所有修改。 7、停止
动态停止 RDB:redis-cli config set save “”#save 后给空值,表示禁用保存策略。
原题链接在这里:https://leetcode.com/problems/minimum-insertions-to-balance-a-parentheses-string/
题目:
Given a parentheses string s containing only the characters '(' and ')'. A parentheses string is balanced if:
Any left parenthesis '(' must have a corresponding two consecutive right parenthesis '))'. Left parenthesis '(' must go before the corresponding two consecutive right parenthesis '))'. In other words, we treat '(' as an opening parenthesis and '))' as a closing parenthesis.
For example, ()), ())(()))) and (())()))) are balanced, )(), ())) and (())) are not balanced.
Python 修改 pip 源为国内源 1.临时换源:
#清华源 pip install markdown -i https://pypi.tuna.tsinghua.edu.cn/simple # 阿里源 pip install markdown -i https://mirrors.aliyun.com/pypi/simple/ # 腾讯源 pip install markdown -i http://mirrors.cloud.tencent.com/pypi/simple # 豆瓣源 pip install markdown -i http://pypi.douban.com/simple/ 2.永久换源:
# 清华源 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple # 阿里源 pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ # 腾讯源 pip config set global.index-url http://mirrors.cloud.tencent.com/pypi/simple # 豆瓣源 pip config set global.index-url http://pypi.douban.com/simple/# 换回默认源pip config unset global.index-url pip换源的方式 在使用Python安装包工具pip时经常会出现下载很慢的情况,这其中有很大一部分原因和pip的源有关,在我们安装python后,通常python解释器自带pip这个工具,但是这里pip是设置的默认源,也就是官方源:
console.log(1) 最后最后一句设置 断点,可以下断点地方下断,单步跟踪进去就能看到结果
方法2 通过hook 函数eval,Function ,然后通过argument 属性拿到 实际结果
概述 本文章主要是为了展示如何从一个 List 列表中删除所有的 null 元素。
在本文中,我们使用了下面的几个实现:
纯 Java Guava Apache Commons Collections Java 8 提供的 lambda 表达式 使用纯 Java 来将 List 中的 null 元素删除 Java 中的 Collections 框架提供了一个简单的解决方案:
基于使用 while 循环将 List 列表中的所有空元素进行删除。
@Test public void givenListContainsNulls_whenRemovingNullsWithPlainJava_thenCorrect() { final List<Integer> list = Lists.newArrayList(null, 1, null); while (list.remove(null)); assertThat(list, hasSize(1)); } 可选的,我们可以使用一个更加简单的方法,使用 list 中使用 removeAll 的方法来将 null 删除。
@Test public void givenListContainsNulls_whenRemovingNullsWithPlainJavaAlternative_thenCorrect() { final List<Integer> list = Lists.
又通宵了。。。Jabra PanaCast 50 这种camera,在webrtc m91上,_mediaControl没有Run,就Pause的情况下,下次再Stop,Run的时候可能会没有响应,从而导致绿屏。
解决办法是在前面先Run一下,或者Pause之后Run一下再Stop,Run。就好了。
顺便整理了一下DShow的工作流程。 参考https://zhuanlan.zhihu.com/p/406261550
其中有几个概念封装了Com对象,主要是将硬件和用户程序隔离。
capture_filter --> output_Pinsink_filter --> input_pin_graphBuild负责把两个pin connect在一起。
_mediaControl负责Run、Pause、Stop Camera.
上次没有买糖粉,然后饼干放凉之后就变脆,但是再过一会,又变软了,
然后视频说要放糖粉,或者弄好之后就用罐子盖住,然后放一颗方糖进去,
刚好家里还有2个鸡蛋,上次做的手指饼干是1个鸡蛋。
材料:2个鸡蛋,40g的白糖,60g的面粉
步骤:
蛋黄蛋白分开,然后把糖分三次或者一次性加入,打发,打发完就放鸡蛋进去打发,打发均匀之后,就筛入面粉,用翻拌的手法搅拌就可以装入裱花袋。
弄好饼干形状之后,就筛入糖粉,然后放入烤箱烤。
烘烤时间:150°烤30分钟,由于第一次用油布的这盘不熟悉,所以后面又单独给它加了10分钟,还是多少,忘记了
优点:
1、用罐子装,然后放入冰柜到第二天还是脆脆的。
2、成色还是可以的。
缺点:
1、这里弄了两盘,一起放入烤箱,一盘放入带有油布的烤盘(放入上层)里面的,然后出炉之后饼干不熟,
而带有油纸的这一盘(放入下层)就熟了。
2、用油布烤的这一盘熟了之后脱模有点黏,但是用油纸的这一盘脱模就很干爽。
3、这次虽然买了糖粉,但是可能面粉筛的孔太密了,晒布进去,不像人家的晒的很均匀,而且糖粉的是密封袋,感觉不太好用,有罐子的就好。
上图:
原题链接在这里:https://leetcode.com/problems/minimum-number-of-swaps-to-make-the-string-balanced/
题目:
You are given a 0-indexed string s of even length n. The string consists of exactly n / 2 opening brackets '[' and n / 2 closing brackets ']'.
A string is called balanced if and only if:
It is the empty string, or It can be written as AB, where both A and B are balanced strings, or It can be written as [C], where C is a balanced string.