- 博客(311)
- 资源 (25)
- 收藏
- 关注

原创 Kong网关研究
Kong网关基于OpenResty,而OpenResty基于Nginx,Nginx本身是性能强大的方向代理与web容器,OpenResty增加Lua支持以响应式地织入业务逻辑,让其可以直接可以写业务代码了,跟上面我们提的PostgREST直接把PostgreSQL的关系表转成Rest接口,使用SQL函数与存储过程写业务代码异曲同工,常规软件架构的每一层能力都很强,都可以有深挖掘的骚操作,如果想简化架构,方法可多的是。(这样想最开始的JavaScript拿到后端的json解析后渲染也很合理了,前端/web容器
2025-03-31 18:43:23
993

原创 PostgREST实现DBaaS(数据库即服务)
上文部署高可用PostgreSQL14集群后,本文介绍PostgREST,以及如何基于PostgREST实现数据库即服务,PostgREST可以在 PostgreSQL 数据库上通过解析数据库结构(如表、视图、存储过程、权限等)自动生成 RESTful API,并直接转换为标准的 HTTP 接口,相当于消除了简单场景下的后端代码和服务,与之前绍过的MagicAPI这种基于SpringBoot的快速api生成工具(magicApi)相比,magicAPI因为复杂度高反而意义不大了(至少在pg数据库中)
2025-03-24 17:43:32
401

原创 部署高可用PostgreSQL14集群
本文将介绍如何使用Patroni、Consul、vip-manager、Pgbouncer、HaProxy组件来部署一个3节点的高可用、高吞吐、负载均衡的PostgresSQL集群(14版本),大致的架构图如下,这种架构是业界比较认可和广泛实用的(例如Pigsty)优点是:使用Patroni和Consul来接管pg,完成它的生命周期管理,包括initdb到切换,避免手动的backup操作,Consul会选举Patroni的主当做pg的主;使用冗余的Pgbouncer来完成pg的连接池化,降低进程开销;
2025-03-24 09:41:13
953

原创 阿里云搭建docker私有仓库
薅羊毛阿里云主机是99元/年,续费2年,顺手搭建docker私有仓库,如果docker.io无法下载通过公有云在阿里云私有仓库中转镜像下载;
2025-03-21 10:05:00
570

原创 滴滴工作流引擎Turbo与logicFlow研究
工作流引擎很多,也都提供了前端UI库,但是太过于冗杂了,元数据表都几十个,logincFlow和Turbo的组合提供了轻量化方式,turbo后端代码只有5个元数据表,logicFlow也提供了bpm的相关扩展功能,但缺点是turbo社区不活跃,logicFlow个人认为跟echarts这种内置完成所有实现的开源设计方案相比,以插件方式扩展来提供自由度的方式,上手有点难度;
2025-01-03 17:04:54
371

原创 PostgreSQL数据库内核(二):增加controlfile参数
新增guc参数pg_test_parameter,支持从initdb和pg_ctl命令中传递/覆盖参数,使用场景是TDE透明加密指定算法或者某些定制化需求。
2024-08-03 17:49:04
475
1

原创 PostgreSQL数据库内核(一):增加系统表pg_test_catalog
使用PostgreSQL14.5源码版本编译,操作系统CentOS,本地windos系统+CLion代码工具,首先下载。以上就完成了增加系统表流程,这里系统表并没有一些逻辑交互,如果涉及复杂的逻辑交互需要修改backend里面的代码或者调用;
2024-08-03 15:09:27
1460

原创 SpringBoot实践(三十九):如何使用AOP
面向切面(AOP) 是spring重要特性,在功能上切面编程是面向对象编程的很好的补充,面向对象强调封装和开闭原则,如果多个对象有通用行为和方法,将造成很多冗余代码,AOP将通用功能作为切面插入到业务逻辑中(如通用的日志打印,异常处理,license判断等)抽取通用逻辑,减少代码冗余,并且无侵入地修改代码,在实现层面上都是通过动态代理实现,默认cglib方式,
2023-01-13 22:21:49
1130
4

原创 SpringBoot实践(三十八):自定义spring-boot-starter
测试自定义starter包,该starter包中引入springboot的自动配置依赖,配置spring.factories文件中的自动加载类,实现的功能是在测试的springBoot工程中引入自定义的starter包的pom依赖后,能够调用starter包中的某些实例方法,具体而言是读取application.properties或者application.yml的配置输出;
2023-01-11 16:32:04
994
4

原创 SpringBoot实践(三十七):Bean的生命周期
了解springBoot启动过程能够帮助我们快速熟悉/集成/定制化第三方依赖包,快速地上手搭建工程,在实际上要完成比较复杂的业务代码,还需要继续探索bean的生命周期管理,并且能够在bean的生命周期内增加各种自定义的逻辑,bean的生命周期包括:创建,使用,销毁。bean的使用大家一般都比较熟悉,但最重要的是bean的创建过程,也就是跟随springBoot启动中加载bean的过程。;
2023-01-05 14:42:56
788

原创 SpringBoot实践(三十六):动态代理和反射
动态代理从大的讲是动态语言特性,JAVA作为需要编译才能运行的静态语言,动态代理机制可以为JAVA提供在运行态时对某些对象进行功能增强,Spring中如果有对象使用了AOP相关注解,那么在bean进行实例化后会将对应的动态代理对象放在bean工厂,动态代理有2种实现方式:实现JDK原生动态代理接口,或者使用cglib实现,在默认情况下 Spring AOP 会采用 Java 动态代理实现,而当该类没有对应接口时才会使用 CGLib 动态代理实现。
2023-01-05 12:37:10
1247

原创 SpringBoot实践(三十五):JVM信息分析
JVM分析可以也可以使用,那么什么时候用到jvm信息分析呢,一般生产测试环境,能够最大化将问题暴露,但是总有些问题只有生产运行很长时间后才会被发现,jvm分析经常用于运行了很久的系统有异常情况时的调优,比如堆内存本身分配不合理,新生代中eden比例太低等。
2022-12-30 13:56:14
1043

原创 SpringBoot实践(三十四):Gradle的使用
gradle-wrapper会绑定一个版本的gradle,在gradle-wrapper.properties中,如6.1版本绑定的是6.4.1版本的gradle,其默认会下载对应版本的gradle,使用 GRADLE_USER_HOME作为包的本地仓库,gradle-wrapper.properties 文件记录:当前项目想使用的 gradle 版本?去哪里下载这个版本的 gradle?Gradle没有依赖包管理功能,它本地保存的是依赖缓存,没有本地仓库的概念,想在Gradle里加一个私有依赖比较麻烦;
2022-11-07 18:11:51
916

原创 SpringBoot实践(三十三):Maven使用及POM详解
Maven是一个Java工程的管理工具,跟其相同功能的工具如Gradle,Maven通过项目对象模型(POM:Project Object Model)用来描述整个项目,也就是POM.xml文件,使用Maven能够方便的管理JAR包依赖,Maven将当前工程需要的JAR 包从远程仓库下载到本地并自动完成依赖的传递,每个JAR有唯一标识也就是坐标,这是依赖可维护性的基础,Maven中的坐标是通过groupId、artifactId、version、packaging、classfier等这些元素定义。mave
2022-11-06 00:59:32
1394

原创 SpringBoot实践(三十二):5分钟搭建springboot单体应用开发框架
熟悉语言和开发工具上基础快速使用框架构建应用是个机械工作,5分钟完成开发准备工作,没有冗余动作。
2022-09-05 15:03:51
1159
3

原创 SpringBoot实践(三十):了解SpringBoot的启动过程
纵览springboot启动过程会发现,其本质是创建1个IOC容器,也就是存放bean的容器,使用自动装配简化了spring的各种bean配置(xml文件),启动的所有过程都是为了构建这个bean容器服务。本来首先分析启动类上的注解,再分析SpringApplication的构建过程和run方法流程。
2022-08-13 15:15:59
611

原创 Python后端框架(二):使用vue和tornado开发股票展示/分析系统
前端vue-element-admin已经上手,基于python的tornado框架开发股票分析后台,拿到akshare的数据,定时任务写入mysql,前端表格展示,能结合vue,echarts,tornado,pandas,seaborn等涉及过的知识,是个练手的好项目。torndb适配python3tornado的torndb模块没有适配python3,首先把它适配,修改torndb.py如下:#!/usr/bin/env python## Copyright 2009 Faceboo
2022-05-21 14:16:53
1402
1

原创 Vue和Vue-Element-Admin(十一):axios,mockjs和vuex
axios,mockjs和vuex在开发/生产环境基本是耦合的,axios完成请求发送/接收及封装,mockjs进行数据的拦截/模拟,vuex进行本地数据存储及全局变量维护。以登录场景为例,登录表单el-form标签绑定form.item数据,el-input分别对应item.username和item.passwd,点击登录的button触发login()方法,入参即item数据,login()方法使用被axios统一封装的request(增加baseurl,请求头等)发起http请求,mockjs拦截
2022-05-17 15:07:43
838
1

原创 Python后端框架(一):Tornado的使用
python和javascript是轮子王语言,容易上手出机会,tornado开发代码量介于bottle和django之间,简单易用,异步特征,引入web和ioloop就可以用,如下:# -*- coding:utf8 -import tornado.webimport tornado.ioloopimport tornado.genfrom concurrent.futures import ThreadPoolExecutorimport tornado.concurrentimpor
2022-05-16 14:32:07
1225
1

原创 Vue和Vue-Element-Admin(十):HTML和CSS快速学习笔记
目录html标签分类网页布局盒子模型浮动定位css标签选择flex布局transform转换Vue开发tipsless和scssVScode常用插件后端语言框架很多,Java适合企业级应用(规范且稳定),Go适合高并发场景(比如云上产品),Python框架(bottle,tornado,django)简单且快速,也天然适合数据分析场景,PHP适合快速建站,前端变化小,所见即所得,因此抽空记录下学习笔记。如果把页面理解成一台运转的机器,html使用标签(..
2022-05-11 17:48:11
877

原创 Vue和Vue-Element-Admin(九):el-table(多列排序),el-form,echarts组件化
目录el-table表组件化el-form组件化echarts组件化component即元素,组件,components中封装通用组件定义props传入数组,在views中父子关系引用,根据需要设置特殊样式。el-table表组件化最简单写法:<template> <el-table :data="tableData" border style="width: 100%"> <el-table-column v-for=".
2022-05-01 15:32:26
1151

原创 Vue和Vue-Element-Admin(八):根据menu数组或router动态渲染侧边栏
一般情况下menu动态获取的(通过登录权限获取),Vue-Element-Admin则是通过动态获取router和child渲染menu;最基本方式直接copy使用elementui的侧边栏,使得侧边栏100%高,header固定60,main是100%-60px,侧边栏的menu写死,如下代码, <template> <el-container style="height: 100%"> <el-aside width="200px" styl
2022-04-28 17:47:55
1833

原创 Vue和Vue-Element-Admin(七):把管理系统发布阿里云(公网)
目录打包nginx配置阿里云安全组配置上一节使用Vue快速实现后台管理系统做的demo系统是是纯前端,通过mock模拟后台接口返回,打包成静态文件后,配置nginx转发,发布到阿里云上,地址:yezonggang打包npm run buildvue是单页面富应用,本次demo开发使用全局的组件引入,所以无需特殊配置直接打包问题不大,打包完成后会在项目统计目录生成dist文件夹,目录结构:把dist文件打包成zip包,放在/usr/share/nginx/后解压;..
2022-04-19 19:10:11
2986

原创 SpringBoot实践(二十):使用Vue快速实现后台管理系统(仅前端)
使用vue快速地开发一套后台管理系统,入门级别,对于登录和首页可以自行优化,代码地址:https://github.com/yezonggang/vue-for-backend
2022-04-15 18:29:44
2273
1

原创 SpringBoot实践(十九):使用magic-api与vue-element-admin集成开发
java后端太复杂影响开发效率,怎么用简单框架快速完成数据库信息交互,然后对外提供各种crud接口呢,这里有个magic-api可以用,可以跟上一篇的mybatis-plus对比以下,或者magic-api的自我介绍:magic-apimagic-api 是一个基于Java的接口快速开发框架,编写接口将通过magic-api提供的UI界面完成,自动映射为HTTP接口,无需定义Controller、Service、Dao、Mapper、XML、VO等Java对象即可完成常见的HTTP API接口开发;
2022-01-21 12:58:22
1782
1

原创 SpringBoot实践(十八):mybatis-plus简单demo
mybatis的需要写繁杂的xml,plus可以理解是为了解决这个问题而存在的,它可以不用写xml进行持久层调用,把复杂的SQL封装成方法使用,简单的demo,后续补充复杂查询;目录pom文件aplication.properties实体类mapperservicecontrollerswagger-ui测试接口复杂查询与高级特性pom文件用到lombok,swagger,h2,mybatis-plus;<?xml version="1.0"...
2022-01-20 09:49:13
1797

原创 数据库与MPP数仓(二十三):postgreSQL集群与高级特性
pg作为最先进的开源数据库诞生之初就带有许多高级的使用特性,比如丰富的函数、高级扩展包等,pg是单机数据库,集群化是把多个单机数据库以集群化对外提供服务,但节点状态保持和检测需要第三方中间件支持,比如pgbouncer,这里介绍使用pgpool中间件实现pg的集群化以及高级特性(故障切换、读写分离、负载均衡);...
2021-11-09 16:31:40
2590
8

原创 SpringBoot实践(十七):与vue-element-admin登录集成
前面博客有vue-element-admin的登录集成:登录集成,本次写个简易版,只需要前端需要的user/login、user/logout、user/info这3个接口,login实现token生成,logout直接退出登录没有操作逻辑,info是拿到login返回token后存在vuex后携带token拿当前user的权限的,把返回的roles列表读取出来,权限是对应不同的路由路径的,后端demo在git上,写的很随意需要可以参考:后端vue-element-admin环境链接教程很详..
2021-09-16 13:19:50
5474
3

原创 数据库与MPP数仓(二十一):Mysql深入之事务性保证
近期在回顾RDBMS基础,再次加深事务与实现方面的认识,存储是数据库之本,查询与交互的效率是数据库好坏的衡量标准,但绝大部分场景中要求交互前后需要满足事务性(并不是所有场景都需要),也即是常说的ACID约束,原子性、一致性、隔离性、持久性,在mysql中使用undo、mvcc、redo、binlog、锁机制实现其ACID特性,本节将详细介绍这几个概念,衍生到其他几个数据库的实现;
2021-07-04 11:31:47
979
8

原创 数据挖掘算法和实践(二十八):如何选择最优算法
通常每个算法都有最佳的应用场景,大部分情况下我们可以采用循环遍历方法找到最优的那个算法(默认参数),然后进行调参使其准确率更高,本次例子依然采用最经典的kaggle的离职率分析的数据集,跟之前的案例相比其数据探索思路也不同;数据集地址:离职率分析数据集
2021-06-13 08:41:29
1214
1

原创 数据挖掘算法和实践(二十六):DataFrame的常用方法温故
最近在完成一个分类模型在使用dataframe使用还有一些不是得心应手的地方,这里再次系统地总结dataframe使用以及数据探索、建模过程中的疑惑;DataFrame中groupbygroupby函数有很多妙用,从数据库得到的要分析的数据必然是粗粒度的数据,pandas提供类似于sql语句的工具进行数据分析和挖掘,再结合seaborn的作图包,做数据探索和分析就很美妙,看个例子:data['Current_Status'] = data['left'].apply(lambda x: 'Stay.
2021-06-04 16:59:59
905
3

原创 数据挖掘算法和实践(二十四):CrossValidation交叉验证及模型选择
> 主要是在模型训练阶段的知识,及其常见的交叉验证/CV在样本集选择和模型构建中的作用;## 关于正负样本比例在二分类中一般是1:3的正负样本比例状态;## 训练集、测试集、验证集比例三个概念容易混淆,得到正负样本后合并数据集然后按照8:2的比例把20%数据放在一边(即是测试集),剩下80%数据进行建模(训练集+验证集),开始进行模型构建必然要进行训练集和验证集的拆分,可以用K折法均分成K份分别进行建模,每次建模都会产生(k-1)份的真实训练集和1份真实验证集,然后求平均得到该模型的平均准确率,固
2021-06-03 11:10:03
955
2

原创 数据挖掘算法和实践(二十五):分类模型的评估方法
分类模型的评估方法内容包括常见二分类模型的分类效果评估方法,包括绝对指标、相对指标、通用指标,衍生到多分类模型的处理及验证,最后鸢尾花的三分类模型实例,附带有基于OVO和OVR的其他分类模型代码;一、什么是分类模型?分类模型是监督学习的一种,需要样本支撑进行模型构建,其输入可以是连续性也可以是离散型的变量,输出则是提前限定的离散分类标签,在实际使用中根据分类标签的种类可以分为二分类和多分类问题。回归算法的策略函数多是均值方差最小,分类算法的策略函数比较多样,有纯线性代数层面的均值方差最小,也有纯
2021-06-01 11:17:18
1291
7

原创 数据库与MPP数仓(十九):高效SQL
create table SCORE_fengzi( cname VARCHAR(10), sciense VARCHAR(10), score INT)--- 插入数据insert into SCORES values("zhangsan","language",81);insert into SCORES values("zhangsan","math",75);insert into SCORES values("lisi",".
2021-03-23 14:40:17
3829

原创 数据挖掘算法和实践(二十七):Python基础知识再整理
磨刀不误砍柴工,python刷题比java写起来更得心应手,语言越高级,底层细节越隐晦,再系统记录一下,方便后续查找;
2021-03-17 19:38:00
7166
11

原创 硬件/操作系统/网络(九):了解常见linux服务器硬件配置
最近工作涉及服务器配置采购安装,以及网络布线、云平台搭建,看见硬件的配置有点懵逼,B站up主说得好,硬件配置、Linux系统、运维搞好什么都很简单,做开发应该了解底层的硬件和网络,所以对自己目前接触过的硬件知识和配置做个总结,方便后续使用查阅,学习即记忆;一、磁盘和Raid二、内存条三、CPU四、服务器...
2021-02-03 15:02:11
16506
27

原创 容器和云原生(一):初识容器化和云原生
总聚焦于应用系统开发和建立在应用系统上的业务模型开发,很容易忽略基础资源重要性(包括裸金属服务器配置和优化、最优组网实践和网络拓扑优化、应用部署的持续集成和持续开发、云上资源分配和云原生),努力走出舒适区尝试新知识才能打开新思路,目前亟待增加裸金属服务器配置相关知识和云原生相关内容,那就从容器化和云原生下手,本节把基于k8s的容器化知识挂载到自己的知识树上,然后在测试环境进行开发测试;一、理解容器化什么是容器容器是云原生概念的重要组成部分,一种计算单元,容器比虚拟化技术更轻量化、更小开销的方.
2021-01-29 15:49:45
13745
8

原创 骚操作,VSCode上发布知乎
本想着把csdn的博客内容同步到知乎上,无意中搜索到zhihu On VSCode,在vscode上登录并发知乎帖子,真是骚操作;首先在vscode的插进搜索zhihu on vscode,安装后进入主页面使用Ctrl + Shift + P打开命令面板,搜索并执行Zhihu: Login命令,使用知乎app扫码登录后就可以编辑发布知乎帖子了,vscode真是万能idea;新建以md结尾的文件,只需要按照你最熟悉的 Markdown 语法写即可,右上就有发布和预览的图标;mark...
2021-01-28 22:01:24
11001
18
mysql5.7离线安装包
2023-03-27
DecisionTree.RandomForest.ipynb
2021-01-20
Softmax_MNIST.ipynb
2020-05-28
LinearRegression.ipynb
2020-05-22
CDH-5.14搭建手册v3.docx
2020-05-21
47_Flume、Logstash、Filebeat调研报告
2019-05-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人