- 博客(78)
- 收藏
- 关注
原创 浅谈一下关系型数据库中json类型字段的处理
mysql以及postgresql针对json类型字段提供的处理方法会有差异,因此使用的时候需要注意这个点.其次实际开发过程中我们也可以不用使用如下这个表结构存储推荐job的结果file_nametypeidintstatusvarcharresultjson我们完全可以在定义推荐结果表的时候将book_id, user_id和score 也定义为字段,这样也不必做比较复杂的json字段解析.field_nametypeidintstatusvarcharbook_idint。
2024-06-06 01:33:12
722
原创 java集合类型一行代码实现创建且添加初始元素的实现汇总
common collections 提供了一些集合工具类(xxxUtils 命名规则: {集合类型}Utils) 来扩展jdk集合相关的api.当然它的关注点也不是创建集合对象的时候就添加初始化元素.后面我也会专门讲解一下apache commons相关的模块,此处也不再赘述.guava collection 是jdk collection的扩展, 它提供了丰富的集合相关的api看来帮助开发.真对每一种集合类型都提供了相应的工具类(比如Sets,Lists,Queues等,命名规则: {集合类型}s).
2024-05-07 16:33:32
737
原创 springboot模块以及非springboot模块构成的多模块maven项目最佳构建方式
这个结构看起来不是那么舒服,比如这里买的spark-job模块,跟spring完全没关, 不应该让spring-boot-started-parent作为其parent.那么有没有什么方法能够。的spring boot 相关的起步依赖包. 而不需要使用spring的模块可以完全不用管这个parent pom.spark-job的pom.xml(大致的pom不讨论细节)如下。spark-job的pom如下(大致的pom不讨论细节)core 模块 pom.xml 如下。web-service的pom如下。
2024-05-05 18:21:16
1050
1
原创 hive metastore使用mysql作为backend db遇到的问题
hms使用mysql作为Backend metadata database, 但是启动爆如下错误.原生的hive不带pg以及mysql的驱动包,所以这里要自己构建镜像添加这两个包到。docker-compose 文件。.所以要预先在mysql上面创建好。这个数据库,hms才能启动成功.
2024-04-14 08:27:04
364
原创 Fernet加密解密技术详解
参考关于fernet的定义结合cryptography package中关于fernet的说明: https://cryptography.io/en/latest/fernet/可以将fernet定义为一种对称加密算法, 它可以将用户信息(字节序列)32字节(256 bits)的密钥以及unix时间戳(单位秒)加密成密文.同理可以使用32字节密钥过期时间(单位秒)和给定的unix时间戳进行解密.
2024-02-28 13:37:33
1596
原创 kubernetes技巧(一):关于选择器
如果是基于资源的label筛选使用label-selector,如果是资源label之外的字段筛选使用field-selector.
2024-02-25 10:43:23
1164
原创 多podman machine设置连接问题
已经存在一个资源配置较小的的podman machine(named as A)前提,启动了一个资源设置较大的podman machine(named as B). 关闭A单独启动B,使用。早些启动的podman machine A 是默认的连接, 启动B之后默认连接还在A,不会自动切换到active的machine B所以导致。check可以确定当前连接上了machine B.发现不能连接到podman machine B.
2024-02-05 20:21:30
434
原创 python装饰器详解
自定义装饰器主要分三种,不带参数的函数装饰器带参数函数装饰器,以及类装饰器. 下面一一进行讲解不带参数的函数装饰器// 装饰器函数,接受一个参数,参数代表被装饰的函数// 内层函数,入参是被装饰函数的全部参数,内部可以在被装饰函数调用前后实现一些逻辑# before// 是否有返回值取决于被装饰的函数# afterreturn res运行结果before 1 2 after总结一下就是两层函数,外层为装饰器名称,只接收一个参数表示被装饰的函数,内层函数参数为被装饰函数的所有入参.
2024-01-27 07:38:06
856
原创 jupyterlab开发环境最佳构建方式
创建虚拟环境安装jupyterlab包.创建其他虚拟环境安装项目中python框架,包等等,进行环境隔离.需要映射成kernel的虚拟环境安装ipykernel, 使用指令将虚拟环境全局映射成jupyter kernel, 实现环境可进行访问.
2023-09-22 20:42:10
588
原创 ssh 免密码登录远程服务器最佳实践
工作中遇到需要使用多个云平台多个k8s集群的情况. 某些云平台不能使用desktop访问, 所以只能远程登录到指定访问权限的虚拟机. 在这个前提下一般是指知道这些虚拟的ip, user 以及 password. 使用ssh登录每一次都需要输入密码, 使用scp拷贝的时候也涉及到输入密码. 一旦涉及到较多的虚拟机需要登录,那么这回让工作效率变低. 这里总结一下免密码登录多个远程服务器的最佳实践.. 这里因为有多个服务器所以这里创建的时候使用特定的密钥文件名替换默认的密钥文件名字. 比如以。
2023-09-16 18:09:41
243
原创 k8s 中快速启动curl pod 做api test
k8s上运行的pod需要进行api测试,由于开发使用的镜像都是最小化构建,不能保证现有的pod中一定有curl工具,于是需要启动一个带有curl工具的测试pod专门进行api测试。上述指令实现在指定namespace下创建一个带有curl tool的pod, 可以用于进行api测试.
2023-08-17 10:23:11
1032
原创 配置podman ssl连接私有harbor仓库
当前私有仓库使用harbor且enable了ssl. 本地容器工具由docker切换到了podman. podman对比docker的各种优势此处不再赘述,这里主要讲一下podman本地配置问题.猜想可能是podman对自签名证书不支持, 因为如果使用的是podman desktop 可以在 registry中。私有仓库,笔者有试验过这种方式添加私有仓库,尝试连接的时候报如下错误。配置完毕重启一下podman 然后测试, 注意此此处的证书是。下面看详细的配置,笔者是mac, 所以配置文件路径是。
2023-04-29 21:23:25
1259
原创 快速生成tls证书相关文件enable https
平常开发过程中需要服务enable https, 涉及到CA证书和服务端证书秘钥, 但是由于openssl命令平时使用不多,每一次都要去搜索一下怎么用,于是在此处记录一下快速生成tls证书相关文件的openssl命令,使用时方便查询。这里生成证书带san, 适合生成。,假设需要证书的网站二级域名是。的以https协议访问服务器., 使用如下指令生成ca证书。作为域名的服务, 将。配置给浏览器且设置为。的证书即可实现浏览器。
2023-04-27 23:50:41
194
原创 Mac下SoapUI 启动无响应问题
不得已用SoapUI来写api测试, mac上第一次安装启动会出现无响应问题, 记录一下mac下SoapUI启动无响应问题的解决办法修改/Applications/SoapUI-{version}.app/Contents/vmoptions.txt文件, 添加内容-Dsoapui.browser.disabled=true修改/Applications/SoapUI-{version}.app/Contents/java/app/bin/soapui.sh去掉注释JAVA_O
2022-02-25 11:07:28
1014
1
原创 pip freeze vs pipreqs
问题规范的python 项目文件,都会有一个项目依赖包的文件requirements.txt文件里面罗列出了此项目运行依赖的所有python包, 以便于在切换到其他环境的时候, 使用pip install -r requirements.txt 指令完成项目依赖包的安装. requirements.txt文件引入就是为了方便项目在不同的环境下能够快速安装好依赖并且运行. 然而使用常规的命令pip freeze > ./requirements.txt生成requirements.txt 文件会将整
2022-01-01 16:43:42
761
1
原创 Chrome NET::ERR_CERT_COMMON_NAME_INVALID问题解决方案
文章目录背景原因最快捷方法: KeyStore explorer工具背景上集成测试环境中的spring boot 项目server 启动了ssl协议, 同时正确在Chrome浏览器配置好了自签名证书cer文件. 但是当前端调用后端https接口时报错Chrome NET::ERR_CERT_COMMON_NAME_INVALID. 一般纯浏览器访问,可能大家就是直接点击下面的unsafe链接了, 但是前端是通过ajax call访问后端的api, 因此不可能出现点击unsafe链接的行为, 所以这个问题
2021-12-21 08:54:34
5821
原创 Minikube使用小结
文章目录启动失败镜像无法下载微服务最佳实践. 需要考虑传统的非云原生以云原生的场景.云原生场景使用k8s做试验的时候, 需要解决环境问题. 选择单独用一台虚拟机去安装k8s, 造轮子耗时过长; 选择自家的k8s云服务又要收钱. 索性使用minikube 简单开箱即用. 不过在使用过程中也会遇到一些坑,这里总结一下以及提供相应的最快解决方案(不是最优解)启动失败网上很多讨论启动失败的问题. 归根到底都是依赖的镜像需要翻墙才能下载. 如果觉得翻墙麻烦, 那就利用公司网络保证start minikube成功
2021-12-08 18:01:43
2645
原创 idea maven download source 失败
经常遇到idea download source 失败, 这里记录一下解决办法.在idea的terminal中执行mvn dependency:resolve -Dclassifier=sources即可.
2021-12-02 08:59:20
838
1
原创 spring cloud sleuth 自定义traceId, spanId日志pattern
spring cloud sleuth 默认情况下会将traceId 和 spanId 写到MDC里面, 然后根据配置的pattern会将这两个值写到日志文件或者console里面. 但是如果此时自己的业务逻辑中也需要往MDC里面写入数据,然后写到日志文件. 比如业务中需要将aId 和 bId 两个属性写入MDC, 想将traceId, spanId 和业务aid和bid都保存在日志中, 一般做法就想到的就是去配置logging pattern如下:logging: pattern: console
2021-12-01 19:38:52
3948
原创 快速导入大量数据到Neo4j实例实现.
文章目录背景依赖数据分析方法1: LOAD CSV方法2: neo4j admin import背景中文开放知识图谱含有大量开放的知识图谱数据,可以做实验研究使用. 该平台上的提交的数据格式各种各样, 所以一般下载了平台开放数据都要做一些简单的ETL操作,将原始数据转换为(entity, entity, relation) 这样的三元组,方便直接导入Neo4j 实例. 部分开放数据集数据量比较大,常规方法可能会导致导入速度慢, 本文探讨如何将大量数据快速导入Neo4j实例.依赖Neo4j 3.5.9
2021-05-28 19:48:39
816
1
原创 docker容器启动Mysql执行初始化sql脚本实现
文章目录背景准备工作实现过程背景docker容器方式启动Mysql想在启动后执行一些初始化sql脚本(如创建访问数据库的user以及赋予相应权限,执行db创建sql脚本,执行table创建的sql脚本). 且这个初始化过程全局只运行一次(比如中途停掉容器再启动,不再运行脚本,这种全局运行一次的限制,不再sql脚本里面体现). 本文详细讲解如何实现这一过程.准备工作本地安装docker且安装docker-compose. 机器上安装的是docker desktop, 所以 docker-compose
2021-05-20 22:05:46
3868
1
原创 pandas 处理日期数据列
文章目录原始数据类型经常会遇到数据里面有时间相关的列, 时间列对于特征的构建非常重要, 下面主要总结一下时间列数据的处理.原始数据类型如下所示的DataFrame查看此列(Series.dtype)的取值类型和直接查看元素类型print(user_data['评论时间'].dtype)print(type(user_data['评论时间'][0]))结果:object<class 'str'>此列本质上是日期的字符串形式, 所以dtype是 object 单个元素类型是
2021-03-20 13:10:38
516
原创 pandas merge小结
文章目录pandas mergepd.mergeDataFrame.join小结pandas mergemerge 是 DataFrame之间类似于SQL的表连接操作, pandas 本身提供了 pd.merge的方法完成连接, 同时DataFrame(Series不存在此方法)也提供了join方法完成连接, 本文主要分析一下两种方法的异同.pd.mergeDataFrame.join小结...
2021-01-27 17:17:01
390
原创 Spark弹性数据集之间的转换
Spark弹性数据集之间的转换基本转换小结RDD -> DataFrame:可以直接toDF 简单实现, 复杂结构是 构建RDD[Row] + StructType 实现DataFrame -> RDD:df.rdd 实现DataFrame -> Dataset:Dataset是强类型的DataFrame, 所以只需要 df.as[case class] 即可, 注意字段类型匹配Dataset -> DataFrame:df.toDF 即可Dataset ->
2021-01-16 13:48:02
161
原创 Docker 容器环境下运行 Mongodb 非正常关闭时数据恢复办法
文章目录背景解决方案背景最近需要对中文职位做数据分析, 于是用scrapy从网上爬取了大量的job数据, 存储的时候也是图省事, 启动了一个mongodb container来存储爬取的job. db的数据通过卷挂载的方式存储到宿主机器上, dockercompose file 如下:version: "3"services: mongo: image: mongo:4.4.3 container_name: mongo environment: MONGO_
2021-01-14 14:20:00
1615
原创 K-Means 手写实现
文章目录K-Means 算法流程图python代码实现手写K-Means的python实现K-Means 算法流程图python代码实现kmeans_tool.py# -*- coding:utf-8 -*-''' description: kmeans tool kit time: 2020/12/10'''import randomimport mathclass Cluster(object): def __init__(self, samples
2020-12-12 12:46:24
234
原创 maven 构建 spark scala archetype
背景spark maven项目构建不像flink一样官方提供了各个版本的maven archetype, 方便在本地构建相应的项目. 由于官方没有, 所以只能自己基于一个基础的spark scala项目构建maven archetype.基于scala archetype 构建基础项目spark scala项目是基于scala项目构建, 所以选择最基本的scala archetype构建项目 再往其中添加spark运行所需的基本依赖包(spark-core, spark-mllib等按需求添加即可)
2020-07-22 22:54:44
1185
原创 flink PojoCsvInputFormat 处理 csv 文件数据问题小结
背景使用flink DataStream api 来处理一批数据, 数据本身就是保存在csv文件里面, 需要将csv文件里面的每一行转换为相应的POJO实例, 查询flink提供的FileInputFormat相关的类和接口(PojoCsvInputFormat)可以完成从CSV到DataStream的转换.但是在使用这个类的时候遇到一些问题, 而且网上也没有相关的答案,本文把这些问题以及解决的办法记录下来,希望能给遇到相似问题的同学一些参考.准备工作首先是csv测试文件,这里简单的使用两个字段age
2020-07-15 11:30:28
1755
原创 Flink docker 容器运行环境下不能够从Web UI 查看 Logs 以及Stdout的解决办法
背景最近业务需要使用Flink, 于是把之前Flink的相关技术拿出来重新回顾一下, 于是想起这个之前一直没有去解决的问题. 本文主要讲解如何解决这一问题以及发生这个问题的根本原因.运行Flink 官方docker image此处不多说,访问docker hub flink官方的Image. 选择自己需要版本的flink官方镜像(此处我选的是flink:scala_2.11 因为要使用到scala shell所以选的scala版本不是最新的) 然后按照官方给的docker-compose 文件简单改动
2020-06-19 17:26:19
6796
13
原创 LeetCode-21合并两个有序列表
描述将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例输入:1->2->4, 1->3->4输出:1->1->2->3->4->4解法初始解法:这个问题转换为经典的merge排序中的merge过程. merge排序中merge操作即是将两个有序子数组合并成一个数组,需要考虑比较过程...
2020-05-01 22:18:44
204
原创 LeetCode-202 快乐数
描述编写一个算法来判断一个数 n 是不是快乐数。「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。如果 n 是快乐数就返回 True ;不是,则返回 False来源:力扣(LeetCode)链接:https://leetcode-cn.com...
2020-04-30 23:16:20
208
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人