PyDto实现记录 实现背景 因为python语言的特性,在业务数据返回方面,没有类似JAVA DTO的概念实现主体,苦于目前返回的数据结构都需要自己写代码整合,所以需要模仿JAVA DTO的概念写一个工具包,方便定义返回结构体。 诉求 例如在返回一个用户数据的时候,python的sqlalchemy或者某一个类直接返回所有的结构数据,甚至会带上token等敏感数据,这时候通常会在返回前使用代码拼装整合,变动结构也需要变动代码。理解JAVA DTO概念后想到是否有类似的包,可以在数据层与业务层之间进行拦截,根据定义好的结构直接返回相应数据结构。 思路 如果要方便使用,肯定不能在sqlalchemy或者字典或者对象本身进行操作,需要进行隔离,那么选用的方式就是类继承的形式,将数据解析以及自动拼装的方法封装进去。 字典与类的形式相对简单,容易解析多层结构,但是遇到sqlalchemy需要进行调用返回链表数据结构,所以需要特殊的方式进行处理。 if type(obj) != dict and not hasattr(obj, "iter"): for key_name, k_typ.... 模仿JAVA DTO概念的实现的包PyDto DTO
概述 很久没更了,这段时间各方面都比较繁忙,没拿出那么多的时间去更新一些文档。本站的本意是从基础上去理解一些框架,提供一些框架的基础构建思路。很多框架文档没有写那么多复杂的东西,也是为了可以让大家快速应用。可能一些初学者会对里面的一些概念模糊,希望大家都可以找一些方面的基础文档去学习下,这里不说太多影响其他人思路的东西,因为本身也看过太多引人走弯路的文档了。。 回顾 上一篇文档讲解了一些SpringBoot的基本结构,从项目启动、目录到入口、路由、表模型映射等等。这篇就舒展开来对具体业务框架有一个简单的描述。 业务结构 DataRepository DAO这里的概念就直接复制一些资料上的。 DAO(Data Access Object) 数据访问对象是一个面向对象的数据库接口。 总结一下,用大白话来讲,springboot面向接口,DataRepository数据的提供,也就是数据的增删查改,可以封装成一个个的数据接口进行调用。 例如我们想要查询一个用户,有很多条件,那么这一条查询就可以封装为一个数据接口 @Query(value = "select * from user wher..... 接触企业级框架SpringBoot(二) java
概述 作为大程序猿子,相信没有人不知道Java,用过Java的人,应该也很少有人没有接触过SpringBoot,作为目前最为出名,且应用最为广泛的企业级应用框架,SpringBoot不管是使用的广泛性、可用性、实用性多个方面,都具有非常良好的验证。本篇开始,就SpringBoot框架进行初步的学习,大家自取所需。 环境 jdk 安装java的jdk,目前用的普遍1.8 https://www.oracle.com/java/technologies/javase-jdk8-downloads.html IDE IDE直接使用jetbrains全家桶吧,目前也比较流行好用了 https://www.jetbrains.com/idea/download/#section=linux 项目结构 整体树结构 ├── demo.iml ├── HELP.md ├── pom.xml ├── src │ ├── main │ │ ├── java │ │ │ └── com │ │ │ └── example │ │ │ └── demo │ │ │ ├── model │ │ │ │ └── .... 接触企业级框架SpringBoot(一) java
Redis 应该是我们比较常用的了吧,不管是缓存,还是消息队列,或者是快速查询的短存储,都经常用到。这篇主要是进行在K8S上进行Redis的主从部署。不讲太多了,大部分都是已经写好的配置文件,直接奉上。 Redis PV 首先创建Redis-PV,打算创建三个节点的主从,配置如下 redis-pv.yaml apiVersion: v1 kind: PersistentVolume metadata: name: pv-redis-sentinel-0 namespace: database spec: capacity: storage: 4Gi accessModes: - ReadWriteMany volumeMode: Filesystem persistentVolumeReclaimPolicy: Recycle storageClassName: "redis-sentinel-storage-class" nfs: # real share directory path: /data/nfs/redis-cluster/0 # nfs real ip server: .... K8S部署Redis主从 k8s
K8S Kubernetes就不多说了,之前也说过很多次了,作为目前大家都在谈论的东西,肯定是极好的。接下来直接上正文部署吧,接下来的几篇部署文档都很简单,直接上配置。 Mysql部署 部署Mysql的前提是有K8s集群,之前有一篇已经详细写过如何测试部署K8s集群了,这里就不再多说。 NFS服务创建 这里不说了,大家可以自行搜索一下创建NFS存储服务,这里依赖的持久化就是NFS服务。 Mysql PV/PVC创建 Persistent Volume和Persistent Volume Claim,主要是管理服务持久化的存储资源Volume。这里我们先创建PV,再创建PVC,将两者绑定。 首先是mysql-pv.yaml kind: PersistentVolume apiVersion: v1 metadata: name: mysql-pv namespace: database spec: accessModes: - ReadWriteOnce capacity: storage: 1Gi persistentVolumeReclaimPolicy: Retain storag.... K8S部署Mysql(NFS持久化) K8S
环境概述 一般再做数据工程时,除了数据流通流程啊,平台啊,剩下的就是做特征工程和分析。数据流通要说的还相对较多,这部分简单讲讲数据工程需要的环境。 环境准备 系统 不管是做特征处理,还是做数据分析,建模还是规则算法,基本都是需要Py的,另外可能很多人习惯用windows,不过我还是比较习惯linux,这里我选用的是centos7. Python3.7安装 在这里我需要在centos7上安装python3.7.5,步骤如下 安装编译工具 因为我们需要编译的方式安装python,提前安装相关依赖,以下命令逐条执行就可以。 yum -y groupinstall "Development tools" yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel yum install libffi-devel -y 下载安装包 我们选择直接去官网wge.... 数据工程(二):环境准备 Linux