自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 聊聊我的近况

聊聊我的近况2020年6月,北京又发疫情。希望所有人能够健康幸福。2020年真是让我印象深刻的一年,我选择结束了安稳的日子,在疫情形势严峻的情况下,毅然选择了离职。从实习开始选择的公司,一起成长了将近五年,收获很多。也许是呆腻了,早在很早之前,就萌生了『世界那么大,我想去看看』的想法。今年终于做出了选择,选择去外面看看。4月份办完了离职,裸辞。去年就计划好的318川藏线自驾游也因为疫情泡汤了,疫情期间大家都劝我再考虑一下,可是,既然做出了选择,怼就完了。工作了这几年,手里的钱居然不够我在北京没收入生存

2020-06-19 18:51:03 219 1

原创 基于Elasticsearch的企业信息查询优化实践

需求基于elasticsearch基础的相关度查询,返回的结果往往不是我们想要的结果。精确率达不到要求。如何能做到让搜索引擎返回的结果就是我想要搜的,这是一个伪命题。elasticsearch官方说明:通常,经过对策略字段应用权重提升,或通过对查询语句结构的调整来强调某个句子的重要性这些方法,就足以获得良好的结果。有时,如果 Lucene 基于词的 TF/IDF 模型不再满足评分需求(例如希望...

2019-12-10 15:47:53 318

原创 支付系统设计

通用的PHP支付系统设计业务->功能->实现->演进过程1.业务架构业务架构的前提要搞清楚我们面临的业务量有多大,增长走势是什么样,而且解决的过程,一定是一个循序渐进逐步的过程。预计两年需要实现可以支撑月流水500万笔交易的系统。 API接口需要支持高并发和稳定性。 保证核心业务的稳定性 2.应用架构前期为了系统快速上线,使用单体应用结构。系统内部采用模...

2019-08-10 10:03:40 459

原创 go-micro项目实战七 logging

logging我们之前分别讲了微服务架构下的tracing,metrics。这节我们来讲一下logging日志作为整个代码行为的记录,是程序执行逻辑和异常最直接的反馈。对于整个系统来说,日志是至关重要的组成部分。通过分析日志我们不仅可以发现系统的问题,同时日志中也蕴含了大量有价值可以被挖掘的信息,因此合理地记录日志是十分必要的。个人理解 tracing对于系统性能分析很重要。metrics...

2019-04-29 17:31:29 2098

原创 go-micro项目实战六 go-config

go-config你可能已经发现了,我们之前的项目里的所有数据库连接和一些其他需要配置的东西我们都硬编码在代码里了。这并不合理。因此我们这一节来引入go-config,来解决这个问题。go-config 官方文档说这是一个动态的可插拔的配置库。go-config的使用1.在项目根目录创建config.json文件{ "mysql" : { "host" : "192.168....

2019-04-28 14:32:07 3097

原创 go-micro项目实战五 服务监控

服务监控可能读者会问,链路追踪和服务监控不是一个东西么?以下知识普及来源于网上。我这里从网上找到一张图 很形象。Logging - 用于记录离散的事件。例如,应用程序的调试信息或错误信息。它是我们诊断问题的依据。Metrics - 用于记录可聚合的数据。例如,队列的当前深度可被定义为一个度量值,在元素入队或出队时被更新;HTTP 请求个数可被定义为一个计数器,新请求到来时进行累加。Tr...

2019-04-26 16:20:53 3753 2

原创 go-micro项目实战四 链路追踪

链路追踪微服务架构下,所有的服务都分散在不同的地方,一旦某个服务出现问题,排查起来很费时费力。所以在微服务的演进下,需要一个全链路追踪系统来分析服务的运行状态。go-micro的trace插件Micro通过Wrapper实现了三种trace接口,aswxray,opencensus,opentracing。第一个是亚马逊AWS的。没有尝试。opentracing是一个开源的标准。提供对厂商...

2019-04-26 08:59:46 4079

原创 go-micro项目实战二 创建商品服务和订单服务

商品服务提供商品列表、详情、库存更新等服务订单服务提供订单提交、订单查询、状态变更等服务创建服务创建服务的过程和创建用户服务的过程一样。这里就不赘述了。如需查看源码可以参考https://github.com/qin-jd/shopping服务间交互例如在订单服务中,提交订单时需要先去商品服务那查询库存数量,然后生成订单,再对商品进行减库存操作。我们需要在订单服务的handler里...

2019-04-24 14:24:34 1321 1

原创 go-micro项目实战三 消息订阅

通知服务提供发送通知服务新建服务micro new shopping/notification该服务比较简单,只实验了消息发布和订阅的功能,未提供真正通知的逻辑。实现的功能是:订单提交成功后,通知用户订单已经提交。消息代理基于go-micro强大的插件机制。go-plugins内置了诸如grpc,rabbitmq,nats,redis。几乎可以在这些代理之间无缝切换。本次实验采用r...

2019-04-24 14:24:19 3160 5

原创 go-micro项目实战一 创建用户服务

###用户服务用户服务,提供登录、注册、修改密码等功能。###新建服务micro new shopping/user整理结构增加model目录和repository目录,删掉proto里默认的example文件夹,创建user文件夹。开发步骤:1.定义接口 -> 2.生成接口代码 -> 3.编写model层代码 -> 4.编写repository数据操作代码 -&gt...

2019-04-24 14:24:09 3332 18

原创 go-micro电商项目实战简介

项目简介该项目是我自学go-micro的练手项目。作为一个用来学习的小型的电商项目。该项目会包括以下微服务:user-srv 用户服务,提供注册、登录、修改密码等操作product-srv 商品服务,提供商品搜索,商品详情,减少库存等操作order-srv 订单服务,提供提交订单、查看订单详情等操作notification-srv 通知服务,提供发送通知的操作代码比较糙,因为我完全没...

2019-04-24 14:23:43 5024 1

原创 micro 使用grpc协议

gRPCgrpc 是谷歌开源的rpc框架,基于http2实现,并支持跨语言。高性能,跨语言。go-micro和grpc无缝集成。go-micro里默认使用的通讯协议是MUCP https://github.com/micro/protocol如果想要在go-micro里使用grpc协议,可以使用官方的grpc插件go-grpchttps://github.com/micro/go-gr...

2019-04-10 17:20:33 3018 2

原创 micro api入门

上一节学习了go-micro的入门。这一节我们来熟悉micro的工具集里的api用法。micro api网关Micro的api就是api网关API参考了API网关模式为服务提供了一个单一的公共入口。基于服务发现,使得micro api可以提供具备http及动态路由的服务。下载micro工具集go install github.com/micro/micro该命令会在GOPATH/bi...

2019-04-01 17:25:25 3578 5

原创 go-micro入门

安装go-micro1.安装服务发现能力,docker安装consuldocker run -d --net=host -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt": true}' --name consul_server consul agent -server -bind=192.168.0.111 -bootstrap-expe...

2019-04-01 11:43:45 5888 4

原创 otter自定义扩展

otter自定义扩展otter支持数据处理自定义过程。Extract模块:EventProcessor : 自定义数据处理,可以改变一条变更数据的任意内容FileResolver : 解决数据和文件的关联关系目前两者都只支持java语言编写,但都支持运行时动态编译&lib包载入的功能。通过Otter Manager直接发布source文件代码,然后推送到node节点上即时生效,...

2019-01-14 10:45:58 1757 7

原创 otter

otterhttps://github.com/alibaba/otter同样是阿里巴巴开源的数据同步工具定位: 基于数据库增量日志解析,准实时同步到本机房或异地机房的mysql/oracle数据库. 一个分布式数据库同步系统注意:基于cannal原理基于Canal开源产品,获取数据库增量日志数据。 什么是Canal, 请点击典型管理系统架构,manager(web管理)+n...

2019-01-14 10:44:34 4032

原创 canal

canalhttps://github.com/alibaba/canal又一个阿里巴巴开源的数据同步工具定位: 基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了mysql###基于日志增量订阅&消费支持的业务:数据库镜像数据库实时备份多级索引 (卖家和买家各自分库索引)search build业务cache刷新价格变化等重要业务消息###原理...

2019-01-14 10:42:09 20886

原创 dataX使用指南

DataXDataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各种异构数据源之间高效的数据同步功能。DataXgit地址安装直接下载DataX工具包:DataX下载地址下载后解压至本地某个...

2019-01-14 10:41:09 2558

原创 api平台通用签名机制

通用API平台需要对每一个访问请求进行身份验证。借鉴阿里云的SDK。用户机制API平台里的每一个用户有自己的uid。每一个用户可以有一个或者多个appKey和appSecret。即一组appKey和appSecret标记一个应用。其中appKey用来管理权限。【唯一】(24位随机字符串)(lumen里可以使用str_random()生成)appSecret用来签名。(32位随机字符串)...

2018-11-19 15:50:30 1284

原创 数据平台简介

目标为了给各个业务平台提供稳定可靠的数据提供一个通用的数据处理流程解决方案生成一些面向主题的、集成的、随时间变化的、但信息本身相对稳定的数据集合整合多个数据源的历史数据进行细粒度的、多维的分析说白了就是读取数据–>生产数据–>交付数据的过程一些概念ETLETL,Extraction-Transformation-Loading的缩写,中文名为数据抽取、转换和加载。E...

2018-10-31 18:28:31 4662

原创 Elasticsearch未授权访问漏洞

写在前面的话说出来你们可能不信,我玩ElasticSearch被人勒索了删了我的数据,还要我支付0.05的比特币卧槽?以前听说的事居然是真的,还发生到我的头上了哈哈哈哈哈,于是我果断给这个邮箱回复了一句言归正传漏洞描述:ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearc...

2018-09-27 15:33:55 13852 3

原创 ElasticSearch使用

ElasticSearchElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。说白了就是一个搜索引擎。环境安装1.安装JDK环境我使用的是以下方式安装,但是貌似yum库里最高只有到JDK1.8的版本。截止笔者发稿前,如想体验JDK10的自行去java官网下rpm包去安装用yum安装JDK1.查看yu...

2018-09-27 15:31:10 194

原创 rsync做文件备份

rsyncrsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。可以镜像保存整个目录树和文件系统。可以很容易做到保持原来文件的权限、时间、软硬链接等等。无须特殊权限即可安装。快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件。rsync 在传输数据的过程中可以实...

2018-09-25 16:56:53 561

原创 PHP代码加密+扩展解密实战

代码加密+扩展解密实战这种方案是通过对代码进行加密,然后利用C语音写解密的PHP扩展。破解难度会有提升,但依然是会被破解的。 从网上找过各种代码加密的开源方案。 一旦开源,就不可能保证安全性。毕竟加密和解密的东西都是公开的。 目前我们没有能力自己去写扩展。还是需要采用开源的方案。 我找到的比较好用的是php-beast。 https://github.com/liexusong/ph...

2018-09-14 15:39:20 10168

原创 PHP代码加密的几种方案

如何保护自己的PHP代码:代码混淆+加密实际加密算不上,具体实现思路就是把代码base64加密,然后对base64里的字符串进行字符串映射(随机生成字典混淆)然后eval执行 这种百分之百能被破解还原 代表代码如下:<?php function RandAbc($length = "") { // 返回随机字符串 $str = "ABCDEFGHIJKL...

2018-09-13 15:16:57 28984

原创 利用ngrok做内网穿透

内网穿透内网穿透,即NAT穿透,让外网与内网的计算机节点进行连接通信。 有时候我们需要在外网访问我们局域网里的应用,这时候就需要使用内网穿透技术。NATNAT英文全称是“Network Address Translation”,中文意思是“网络地址转换”,它是一个IETF(Internet Engineering Task Force, Internet工程任务组)标准,允许一个...

2018-09-04 14:04:01 1290

原创 提高INSERT速度

当我采集的数据量达到8000万时,往一张具有唯一索引的表里批量插入数据时,需要检查重复,因此插入熟读越来越慢。今天就来聊下如何提高INSERT的执行速度。批量插入比单条插入速度快INSERT INTO table (field1,field2,field3) VALUES (‘a’,”b”,”c”), (‘a’,”b”,”c”),(‘a’,”b”,”c”);INSERT INTO ...

2018-09-01 13:57:00 4534

原创 mysql组合索引的有序性

昨天同事关于军规里的一条mysql索引的问题咨询我,才发现自己也不太了解组合索引的规则。于是来记录一下:【推荐】如果有order by的场景,请注意利用索引的有序性。order by 最后的字段是组合索引的一部分,并且放在索引组合顺序的最后,避免出现file_sort的情况,影响查询性能。 正例:where a=? and b=? order by c; 索引:a_b_c 反例:索引中有范...

2018-08-31 15:28:21 4889 3

原创 利用sonar做代码检查

sonar介绍Sonar 是一个用于代码质量管理的开放平台。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具。与持续集成工具(例如 Hudson/Jenkins 等)不同,Sonar 并不是简单地把不同的代码检查工具结果(例如 FindBugs,PMD 等)直接显示在 Web 页面上,而是通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,...

2018-08-28 15:00:35 5828

原创 docker 访问宿主机

有时候就需要在docker容器里访问宿主机提供的服务。 例如容器里的应用需要访问宿主机的mysql服务。方案一: 宿主机执行ifconfig 会看到docker0那个ip,可以使用来访问宿主机方案二: docker 18.03 加入了一个 feature,在容器中可以通过 host.docker.internal来访问主机 Use your internal IP addres...

2018-08-23 11:54:13 18512 1

原创 定时备份数据库脚本

定时任务crontab命令用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。 通常linux里都内置了crontab命令。如果没有请自行安装。文件crontab在/etc目录下面存在cron.hourly,cron.daily,cron.weekly,cron.monthly,cron.d五个目录和crontab,cr...

2018-08-22 14:42:55 2317

原创 xtrabackup做数据备份

xtrabackupXtraBackup(PXB) 工具是 Percona 公司用 perl 语言开发的一个用于 MySQL 数据库物理热备的备份工具,支持 MySQl(Oracle)、Percona Server 和 MariaDB,并且全部开源,真可谓是业界良心。阿里的 RDS MySQL 物理备份就是基于这个工具做的。由于是采取物理拷贝的方式来做的备份,所以速度非常快,几十G数据几分钟就...

2018-08-20 15:48:36 118

原创 RabbitMQ使用

什么是MQ?消息总线(Message Queue),后文称MQ,是一种跨进程的通信机制,用于上下游传递消息。 在互联网架构中,MQ是一种非常常见的上下游“逻辑解耦+物理解耦”的消息通信服务。 使用了MQ之后,消息发送上游只需要依赖MQ,逻辑上和物理上都不用依赖其他服务。 MQ是一个互联网架构中常见的解耦利器。 顺便推荐一个介绍MQ的链接https://www.w3cschool.cn...

2018-08-06 14:25:12 446

原创 MyCAT读写分离与MySQL主从同步

很多开发框架在框架底层就引入了读写分离的机制,面对一些没有底层支持读写分离的框架,如何实现读写分离呢?Mycat一个开源的高性能的数据库中间件产品,支持读写分离,支持MySQL主从,数据切分以及galera cluster集群。 它是一个开源的分布式数据库系统,是一个实现了 MySQL 协议的的 Server,前端用户可以把它看作是一个数据库代理,用 MySQL 客户端工具和命令行...

2018-08-02 11:30:04 1073

原创 何时使用RDD和DataFrame/DataSet

下面是使用RDD的场景和常见案例:你希望可以对你的数据集进行最基本的转换、处理和控制; 你的数据是非结构化的,比如流媒体或者字符流;你不希望像进行列式处理一样定义一个模式,通过名字或字段来处理或访问数据属性;你并不在意通过DataFrame和Dataset进行结构化和半结构化数据处理所能获得的一些优化和性能上的好处;该什么时候使用DataFrame或Dataset呢?如果你需要丰富的语义

2018-04-27 16:09:48 570

原创 docker使用案例(利用docker搭建spark集群)

利用docker搭建spark集群这里是docker的文档中心,因此就忽略spark的安装过程。我们这里讲解如何使用Dockerfile生成spark集群环境。 关于spark集群的搭建会在爬虫的数据分析章节来讲述。 笔者使用的是https://github.com/SingularitiesCR/spark-docker 来讲述如何使用docker安装spark集群。1.利用git下载该项目。

2018-04-21 16:16:52 11222 8

原创 docker-machine

docker-machine是什么?Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。Docker官方是这样介绍Machine的初衷的: 之前,Docker的安装流程非常复杂,用户需要登录到相应的主机上,根据官方的安装和配置指南来安装Do

2018-04-21 16:12:30 1089

原创 docker-compose

docker-compose是什么?Compose 是一个用户定义和运行多个容器的 Docker 应用程序。在 Compose 中你可以使用 YAML 文件来配置你的应用服务。然后,只需要一个简单的命令,就可以创建并启动你配置的所有服务。 通俗地说就是大家都懂PHP的composer包管理器吧。就是执行一个命令,就能帮我们按需加载指定的包。这里我理解的就是我们写完命令以后,一键运行我们的容器。安装

2018-04-21 16:10:41 1371

原创 docker的安装与基本命令

docker安装以及使用

2018-04-21 16:09:21 179

原创 docker学习笔记

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。一些概念镜像:就如同系统镜像一样,有了这个镜像,我们就可以装系统了。同理有了docker镜像,我们就能使用这个镜像里提供的一些东西 容器:是镜像运行的实例。镜像就是一些数据,没有运行之前是没有用的,

2018-04-21 16:07:19 354

GB/T 4754-2017

GB/T 4754-2017 行业国标代码 2017版 数据预览: INSERT INTO `trade` VALUES ('1', '0', '0', '农、林、牧、渔业', 'n', '0', 'A', '本门类包括01~05大类'); INSERT INTO `trade` VALUES ('2', '1', '1', '农业', 'n', '0', 'A', '指对各种农作物的种植'); INSERT INTO `trade` VALUES ('3', '2', '11', '谷物种植', 'g', '0', 'A', '指以收获籽实为主,供人类食用的农作物的种植,如稻谷、小麦、玉米等农作物的种植'); INSERT INTO `trade` VALUES ('4', '3', '111', '稻谷种植', 'd', '0', 'A', null); INSERT INTO `trade` VALUES ('5', '3', '112', '小麦种植', 'x', '0', 'A', null); INSERT INTO `trade` VALUES ('6', '3', '113', '玉米种植', 'y', '0', 'A', null); INSERT INTO `trade` VALUES ('7', '3', '119', '其他谷物种植', 'q', '0', 'A', null); INSERT INTO `trade` VALUES ('8', '2', '12', '豆类、油料和薯类种植', 'd', '0', 'A', null);

2019-03-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除