hive中如何进行行转列呢?
我们先创建一个表,并初始化一些数据进去
12345678CREATE TABLEtest( name STRING COMMENT '姓名', subject STRING COMMENT '主题', score INT COMMENT '分数' ) COMMENT '测试表' ;INSERT INTO test values('张三','语文',100),('李四','语文',90),('张三','数学',80),('李四','数学',80);
可以看到现在表test中的数据是这样的
现在我们用name进行分组,然后把subject的语文、数学变成列,再将score变成语文、数学列的值。
12345SELECT name,concat_ws('-',collect_ ...
背景最近发现阿里云的网站可用性监控不再免费了,免费版本到2022-08-31就结束了,之后按照测拨次数进行收费。于是只能开始找有没有免费的网站可用性监控了,毕竟对自己购买的云服务器也能有个基本的可靠性评估。
观测云在找了一段时间之后,发现这个观测云还是比较满足我的要求的。优点是有免费版的,可配置告警,能检测多个网站。缺点也很明显,就是配置起来太复杂了。观测云网址:https://console.guance.com/
监测任务首先配置可用性监测任务
可以配置网址、校验成功与否的条件(这里我们就简单认为返回200就是成功的)、拨测节点、频率(免费版的最短也要30分钟的间隔,马马虎虎算可以用)在查看器中可以看到所有的历史记录,绿色的代表成功,红色的代表失败。
监控器接着配置监控器
在这里我们可配置监控的条件,例如刚才我们的监测任务失败的数量。再根据数量大小配置不同的级别,注意检测任务配置的是3个网站每30分钟使用12个测拨点检测,那1小时就会产生3✖️30✖️12=1080次,可以根据失败数量占比推算多少数量的失败是什么级别。
在监控器列表中可以配置告警给谁
目前告警通知对象也支持钉钉机器 ...
今天发现又一个被互联网祸害的行业,配音。这个行业也开始内卷起来了。配音怎么卷呢?
一个人配音多个角色吗?当然不是!
打开B站,搜索“暂停!让我查攻略”,会惊奇的发现同一个角色由多位配音演员配音。
在播放视频的时候可以切换配音
所以,以后配音人员也是要凭绩效上岗了嘛?
程序人生
未读背景之前网站一直使用阿里云服务器,在上面编写sh脚本,从服务器上克隆仓库代码,然后复制到网站根目录下面。由于使用sh脚本拉取托管仓库代码,服务器必然存放了私钥,不是很安全。这次看到codeup可以通过流水线自动发布到阿里云服务器,感觉比自己去写脚本更好点,于是就更换了部署方式。
托管codeup并建立流水线第一步:建立codeup代码仓库
第二步:上传博客代码
第三步:建立流水线由于博客使用的hexo,所以编译依旧放在了本地,codeup上存放了所有内容(包含生成的静态页面文件)。
建立完流水线源之后,选择构建,由于编译放在了本地,所以只需要选择public目录进行打包就可以了。
接着选择部署,将打包的生成物下载到指定目录,使用脚本解压放到网站服务器上就可以了。
因为都是阿里的云服务,所以选择阿里云服务器也是非常方便的,授权方面也很简单,不用自己处理秘钥。
第四步:可以增加插件来进行发布通知
之后就可以使用代码提交自动完成发布了
代码检测使用codeup能自动发布之外,还能够使用它的代码检测功能,检测博客中是否存在一些敏感信息。先建立检测方案再设计代码库检测任务这样提交或者合并的时候就 ...
异形工厂这个游戏主要就是通过处理各种基础形状和颜色,最终形成需要的形状。
游戏可以通过stram玩,也可以通过https://happy0316.top/shapez.io.html 网站上玩。
第一关一个开采器链接传送带,就可以完成了。
第二关在第二关时,会得到一个切割机道具,用于竖着切割图形,能分成左右两半。
除此之外,还能得到一个垃圾桶,用于回收不需要的图形。
未交付或者堵在传送带上的图形,最终会一路拥堵。如果切割机的其中一路被阻塞,那么就不会再工作了。
第二关里,我们只需要切割一下圆形,就可以了。
第三关第三关也比较简单,只要拉出一个正方形就可以了。
另外之前搭建的东西也不必删除,持续交付可以升级道具。
第四关第四关会拿到一个平衡器,可以合并2个传送带的东西,也可以把一个传送带的东西拆成2个。
这个关卡本身并不难,把正方形切割开就好了。更多的是熟悉这个平衡器,节省一下传送带,毕竟交付的传送带最多只有16个。
第五关这一关可以获得旋转机,可以把图形旋转90°
这一关可以通过切割圆形,并旋转来完成,由于目前旋转道具只有顺时针,所以切割完的左半圆只需要旋转一次就可 ...
背景之前使用docker部署青龙面板,现在换了一台服务器,突然发现系统通知失效了,各种request timeout。相同的docker,相同的配置在阿里云上就一点问题都没有。排查了半天才发现是一个以前从没有接触过的设置问题。
排查
配置问题?
把相同的weWorkAppKey扔到阿里云的docker上,一点问题都没有,所有推送都很正常。
网络问题?
既然不是配置,那很可能是网络问题了。首先在docker内ping了一下企业微信的域名api.weixin.qq.com发现是可以ping通的
接着尝试使用curl来访问一下,就出现了奇怪的问题,访问超时了。立刻退出docker,在宿主机内curl一下,发现是可以访问的,这就非常奇怪了。
再次尝试了一下百度,发现问题依旧。这次使用-v来看到底哪里出了问题。docker内:宿主机内:
能发现在docker内,服务器已经返回了一部分可选协议,但是中断了。这使得问题变得复杂起来,并不是访问访问不通,而是会卡在其中某个环节。而在宿主机内一点问题都没有。
由于是https有问题,开始怀疑是openssl版本差异导致的查看docker内的open ...
程序人生
未读环境采用apache-tinkerpop-console 3.2.11,可以在官网下载到
先建立一个空的图数据库(内存)
1g = TinkerGraph.open().traversal()
基础一共有5种通用的单步(general-step)
一般来说, 每一个单步接受一个遍历对象,返回执行后的遍历对象结果,所以下一个单步操作同样使用这个遍历结果,再次返回一个遍历结果。 这样图的遍历过程就能如流式接口, 幺半群运算这样的方式持续进行下去。 但是,有一些单步操作不返回遍历对象,而是执行遍历并返回一个结果(类型不同或者不可迭代,所以遍历没法继续,从而终止)。 这些特殊的单步游就叫做 结束性单步
语法增加顶点addV可以添加顶点,配合property还可以设置属性
123g.addV('student').property('name','张三')g.addV('student').property('name','李四')g.addV('teacher& ...
背景这个问题源于一次讲座分享,我们使用网页浏览一些视频讲座,然后通过钉钉会议直播到群里。当然,类似的问题也会存在于通过录屏软件来录制网页视频。
mac上的录屏软件有很多,钉钉的直播也能直接分享窗口,这里就不展开讨论录屏的问题了。主要是如何内录音频呢?
内录关于内录,首先想到的就是声道。这在win系统中很好理解,也很常见。但我们在mac右上角状态栏中只找到音量设置,其中只有一个声道,没有多声道的选择。
这时我们需要安装一个软件来解决这个问题。soundflower
安装好之后就能在音量控制这里发现多出2个声道来,2ch和64ch
这个时候我们可以选择64ch声道播放系统声音,然后在钉钉或者录屏软件的声音选择上选择64ch声道。这样就可以做到声音内容,不会受到外界声音的影响了。
多输出设备按照上面的步骤的确可以做到声音内录了,因为系统的声音通过64ch声道发声,然后被录屏软件录制。但是扬声器却没有声音了,我们自己听不到了。
这就需要多输出设备帮助了,在mac自带的软件中有一个“音频MIDI设置”,在左下角+号添加一个多输出设备,同时选中64ch和扬声器,就可以做到外放和内录一起生效了。 ...
环境介绍neo4j是基于Java语言编写图形数据库。图是一组节点和连接这些节点的关系。图形数据库也被称为图形数据库管理系统或GDBMS。Neo4j的是一种流行的图形数据库。 其他的图形数据库是Oracle NoSQL数据库,OrientDB,HypherGraphDB,GraphBase,InfiniteGraph,AllegroGraph。
安装
既然是基于java语言编写的,那就需要安装JRE/JDK ,目前最新版需要java 12,否则会报jvm版本不支持高版本编译的class
从官网下载最新版 Neo4j 社区版(Community)
解压就可以了
使用启动:找到bin目录,使用./neo4j start 命令启动。停止:./neo4j stop
首次登陆用户名和密码都是neo4j,会提示修改密码。
修改好密码之后就可以进行操作了
语法基础语法命令列表
命令
说明
create
创建节点、关系或者属性
match
匹配有关节点、关系或者属性的数据
return
返回查询结果
where
提供条件过滤
delete
删除节 ...
程序人生
未读log4j2史诗级漏洞背景12月9日晚,Apache Log4j2被曝出一个高危漏洞CVE-2021-44228,攻击者只需要输入一段代码,就可以控制受害者服务器,利用门槛极低。目前Log4j 团队已注意到一个安全漏洞 CVE-2021-44228,该漏洞已在 Log4j 2.15.0 中得到解决。
漏洞基本信息受影响的版本为Log4j2.X < 2.15.0
修复方式
方法一:升级Log4j2的版本至2.15.0
方法二:在版本> = 2.10,设置系统属性log4j2.formatMsgNoLookups=true或环境变量LOG4J_FORMAT_MSG_NO_LOOKUPS=true。对于 >=2.7 和 <=2.14.1 的版本,PatternLayout可以修改所有模式以将消息转换器指定为 ,%m{nolookups}而不仅仅是%m。对于> = 2.0-beta9和<= 2.10.0,方法是去除JndiLookup类:zip -q -d log4j-core-* ...
公平粉蛋糕假设
N个人分蛋糕,每个人都认为自己拿到的蛋糕不少于N分之一。
每个参与分蛋糕的人都绝对理性,无私下结盟协商等现象。
每个人对于蛋糕有不同的喜好,所以需要拿到自认为的不少于N分支一的那一块。(即A认为自己拿到了三分之二,B也认为自己拿到了三分之二,这种情况是正常的,因为A和B对于蛋糕的喜好部分不一样)
每个人都认为自己拿到的和别人一样或者比别人好,那这种分发就不存在有人嫉妒。反之则认为存在有人嫉妒他人。
2人分蛋糕A和B 2人分蛋糕,由A先切蛋糕,然后由B先选择蛋糕。
首先A会将蛋糕平分切成两块(A自己认为)。因为如果一块大一块小的话,B就会选择大的,那A自己就只能拿小的那块了。为了避免这种情况,A会切成自己认为利益一样大小的两块。
B会根据A切分后的蛋糕得出自己心里认为的份额大小(很有可能和A认为的不一样),从而选择交大的一块(2/3)。
A会得到剩下的一块(1/2)
A认为自己拿到了1/2的份额(不少于二分之一),而B也拿到了自己认为剩下的1/2的份额(没有比A多),所以是公平无嫉妒的。B认为自己拿到了2/3的份 ...
UML之类图类(Class)
接口(Interface)接口是一种特殊的类,具有类的结构但不可被实例化,只可以被实现(继承)。
类图中的关系(relation)泛化(Generalization)是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。
带三角箭头的实线,箭头指向父类
实现(Realization)是一种类与接口的关系,表示类是接口所有特征和行为的实现.
带三角箭头的虚线,箭头指向接口
关联(Association)是一种拥有的关系,它使一个类知道另外一个类的属性和方法。关联可以是双向的,也可以是单向的。
双向关联用实线表示,没有箭头。单向关联用带普通箭头的实心线,指向被拥有者。
聚合(Aggregation)是整体和部分的关系,部分可以离开整体而单独存在。
带空心菱形的实心线,菱形指向整体
组合(Composition)是整体和部分的关系,但部分不能离开整体而单独存在
带实心菱形的实线,菱形指向整体
依赖(Dependency)是一种使用的关系,表示一个类的实线需要另一个类的协助。
带普通箭头的虚线,指向被使用 ...
UML的图
UML图
说明
用例图
从用户的角度提供系统或业务流程功能的概述。用户“使用”系统的方式是创建用例图的起点。
活动图
对系统中任何位置的流进行建模。特别是,描述正常用户交互以及替代和例外的用例中的流程由这些活动图很好地建模。
类图
类图表示类,它们的定义和关系 问题空间中的类和实体也是解决方案空间中的详细技术实体。 定义类的属性和操作包含在此类图中。类图中的关系说明了类如何与其他类交互,协作和继承。类还可以表示关系表,用户界面和控制器。
序列图
序列图根据对象的时间轴模拟对象之间的交互。对象可以在这些图上具体显示,也可以是属于类的匿名对象。运行时对象之间的消息执行顺序由这些图很好地建模,因此它们的名称为
交互概述图
交互概述图 以一般的高级别呈现系统内交互的概述;它还使得能够理解UML图(例如,序列图)如何依赖于彼此并且彼此相关。
通信图
通信图显示对象在运行时如何在内存中相互通信(交互)。这些通信图在其目的方面类似于序列图;但是,他们的代表性是不同的。
对象图
对象图 在运行时显示内存中的对象及其链接。 因此,这些对象图还有助于在实践中可 ...
左青龙右京东青龙加京东等于薅羊毛!青龙就是指的青龙面板,京东就是电商平台京东。京东APP搞了不少活动,每天都有一堆,用来获取各种京豆的。而京豆可以抵扣订单金额,大约从20%到70%不等。所以我们需要每天去做日常?当然不是啦,青龙面板是一个定时脚本平台,通过它我们可以使用各种脚本定时跑任务,来达到薅羊毛的效果。
免责声明{cat_tips_warning color=””}本教程所有内容仅用于测试和学习研究,不保证其合法性,准确性,完整性和有效性,请根据情况自行判断。请勿将本项目的任何内容用于商业或非法途径,否则后果由使用者自负。{/cat_tips_warning}
准备工作基础知识
了解基础的网络知识
了解基础的编程知识或开发经验
如果缺少以上知识,只能说声抱歉,目前还没有一键安装脚本。
硬件准备 一台能连互联网并且24小时开机的服务器即可。 最典型的就是云服务器,像阿里云。不想花钱买服务器?oracle提供了终身免费的云服务器。(自己百度一下又一个薅羊毛教程) 当然没有云服务器也可以,弄个树莓派连上网就可以了。没有树莓派?NAS+docker也可以!(反 ...
程序员的最大噩梦是什么?遇到这样的BUG
Bug只会出现在生产环境中,而且无法在本地重现或者触发
Bug出现的几率虽然很低,但并不足以忽略掉它
Bug出现的原因和竞态条件(race condition)有关,这只会在系统低负载时才出现
Bug出现的真正原因还未知
出现bug的代码并不是你编写的,但是你要负责修复它;写那段代码的人已经不在公司了
导致出现bug的是某个库,而这个库在99.9%的情况下都是可靠的。这是你解决该问题所剩的最后一块阵地了。
多年以来有许多人试图调试它,从没人成功过。
Bug会产生一个逻辑错误,而且只会在系统运行了很长一段时间后才会出现
调试需要你了解某个特定的领域知识,而你对那个领域却一无所知
解决bug的最后期限非常紧,时间不多了
不能忽略这个bug,因为你的饭碗能否保住就看它了
例如:想象一下在地球上通过光脉冲信号调试火星探测器上的一个竞态条件是多么令人恶心的一件事,更绝的是只有在火星的大气条件下当行星开始对齐时才会发生。这一切都是因为某个从NASA离职多年的人所编写的库中生成的嵌入式代码出现了一些微妙而深奥的问题所导致。你必须尽快解决这 ...
什么是mapstruct?一种属性复制、对象转换的工具。在java项目中,无论是MVC还是DDD模型,都少不了各种对象,例如DO、BO、DTO、VO 等等,那么对象转换就成了比较头疼的一个事情了。
如何解决对象转换?对象互相转换有以下几种方法
BeanUtils.copy为代表的自动复制属性工具,优点是较少了大量赋值语句,使代码可读性大大提高。缺点也很明显,基于运行时反射等的手段去获取对象结构并赋值,性能显然会有所下降。
以generateO2O为代表的idea插件,通过代码生成的方式将对象转换语句写入源码。性能自然没有什么可挑剔的,但可读性非常的差。有些对象有20~30个属性时,对象转换方法内语句非常多,可维护性也不好,后期增加修改属性,很难修改到所有地方。
以mapstruct为代表的,在编译时期自动生成class,既避免了运行时性能的下降,又使得源码比较简单,提升了可读性。
如何使用mapstruct?引入mapstruct1234567891011<dependency> <groupId>org.mapstruct</groupId&g ...
上帝掷骰子吗?推荐《上帝掷骰子吗》是一本关于量子论发展的科普史话,非常不错,非常推荐。说到这本书,说到量子物理就会想到玻尔的那句“如果谁不为量子论而感到困惑,那他就是没有理解量子论。”从波粒二象性到薛定谔的猫,从不确定性原理到多宇宙解释,从量子隧穿效应到量子擦除实验。在看完这些之后,我发现自己对量子物理更加困惑了。有种“这种东西是不可能存在的,但是,它却实际的存在”的感觉。
黑体辐射和不连续性科学家们从辐射出例子还是波两种不同形式推导出了两个黑体辐射公式。一个适用于短波,另一个适用于长波。而普朗克使用数学的方式推到了一个新公式,既能满足短波又能满足长波。但普朗克发现,要使得新公式有意义,就必须做一个假设,假设能量在发射和吸收的时候,不是连续不断的,而是分成一份一份的。
这就意味着能量只存在1份或者2份,并不存在介于两者之间的。(即,不存在比1份多一点点,但比2份少一点点的能量)这非常违反常识,能量是什么?最常见的就是温度,吸收能量温度变高。如果吸收能量是不连续的,那也就意味着温度也不是连续的。
既然有这么一个公式可以满足短波和长波的黑体辐射,那我们为什么非要在意这个公式的意义呢?先用着 ...