我理解的数据结构(七)—— 堆和优先队列(Heap And PriorityQueue)

我理解的数据结构(七)—— 堆和优先队列(Heap And PriorityQueue) 一、堆 1.堆的基础 堆也是一颗树 堆最为主流的一种实现方式:二叉堆 二叉堆是一颗完全二叉树 2.完全二叉树 完全二叉树是效率很高的数据结构,完全二叉树是由满二叉树而引出来的。对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。(通俗来说:完全二叉树不一定是满二叉树,当一层已满容纳不下新的节点时,新的一层从左至右来盛放新节点,缺失的节...阅读全文

Segmentfault 2018-10-21 18:04:21 罗纳尔多Coder

带入gRPC:分布式链路追踪 gRPC-Opentracing-Zipkin

带入gRPC:分布式链路追踪 gRPC + Opentracing + Zipkin 原文地址:带入gRPC:分布式链路追踪 gRPC + Opentracing + Zipkin项目地址:https://github.com/EDDYCJY/go... 前言 在实际应用中,你做了那么多 Server 端,写了 N 个 RPC 方法。想看看方法的指标,却无处下手? 本文将通过 gRPC + Opentracing + Zipkin 搭建一个分布式链路追踪系统来实现查看整个系统的链路、性能等指标 ...阅读全文

Segmentfault 2018-10-20 20:04:20 煎鱼

TP5 paginate()分页后给结果集追加字段和数据

在TP5中,我们常常会需要做数据分页查询,但是只查询得到的数据并不能完全满足我们的需求,我们偶尔会想数据集中追加我们需要的指定的字段和数据。 在TP官网中找了很久没招到相关资料,最后去翻开发手册后完美解决。 下面贴出解决方案: public function index(){ $sql = ""; $list = ""; $pagenumber = 20;//默认分页条数 //查询数据 $list = Db::name('wcmall_type','id,name,sort')->where($...阅读全文

Segmentfault 2018-10-19 18:04:21 JONGTY

Swagger 生成 PHP API 接口文档

Swagger 生成 PHP API 接口文档 标签(空格分隔): php 1、概况 有同学反馈写几十个接口文档需要两天的工作量, 随着多部门之间的协作越来越频繁, 维护成本越来越高, 文档的可维护性越来越差, 需要一个工具来管理这些接口的文档, 并能够充当mock server给调用方使用。 有同学推荐了swagger+easymock,Swagger是一个简单但功能强大的API表达工具。 这里介绍使用swagger-php生成PHP API文档的方法。 2、安装与使用 2.1 安装swagg...阅读全文

Segmentfault 2018-10-19 11:04:23 蒋建勇

nextcloud 自建应用

创建应用example,应用目录apps/example,目录结构如下 example/appinfo:包含应用元数据和配置 example/css :包含CSS example/img :包含图标和图像 example/js :包含JavaScript文件 example/lib :包含应用程序的PHP类文件 example/templates :包含模板 example/tests :包含测试 创建元数据配置文件 参考网址: https://docs.nextcloud.com/server...阅读全文

Segmentfault 2018-10-19 10:04:41 改改心情

PHP如何使用比特币Coinbase钱包库开发应用

这是Coinbase Wallet API v2的官方客户端库。我们提供直观,稳定的界面,将Coinbase Wallet集成到的PHP项目中。 重要提示:由于此库是针对较新的API v2的,因此需要v2权限(即wallet:accounts:read)。如果你仍在使用v1,请使用此库的旧版本。 安装 使用Composer安装库。如果你不熟悉Composer或依赖管理器,请阅读Composer文档。 "require": { "coinbase/coinbase": "~2.0" } 认证 AP...阅读全文

Segmentfault 2018-10-19 09:04:32 malakashi

PHP如何使用比特币Coinbase钱包库开发区块链应用

这是Coinbase Wallet API v2的官方客户端库。我们提供直观,稳定的界面,将Coinbase Wallet集成到的PHP项目中。重要提示:由于此库是针对较新的API v2的,因此需要v2权限(即wallet:accounts:read)。如果你仍在使用v1,请使用此库的旧版本。安装使用Composer安装库。如果你不熟悉Composer或依赖管理器,请阅读Composer文档。"require": { "coinbase/coinbase": "~2.0" }认证AP...阅读全文

PHPerzh 2018-10-19 08:33:07 jimi2018

架构思想之CAP原理

由于自己负责后端的设计已经有一段时间,对设计的一些思想和理论有一些理解,但最近被问到什么是CAP时,却一脸懵逼,下来后专门针对CAP架构思想进行了一些专题学习,在这里也将这个概念引入给大家,大家可以有意识地了解和学习这个思想理念,帮助自己在后续设计功能时有更好的参考。 分布式领域CAP理论,Consistency(一致性), 数据一致更新,所有数据变动都是同步的Availability(可用性), 好的响应性能Partition tolerance(分区容忍性) 可靠性 定理:任何分布式系统只可...阅读全文

Segmentfault 2018-10-17 20:04:28 码魇

PHP设计模式(七)适配器模式(Adapter For PHP)

适配器模式:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。 先来看一个案例: 设置书的接口 // 书接口 interface BookInterface { // 翻页方法 public function turnPage(); // 打开书方法 public function open(); } // 纸质书实现类 class Book implements BookInterface { public function turnPag...阅读全文

Segmentfault 2018-10-17 11:04:33 WilburXu

JSONP 是什么

JSONP 是什么 说实话,我学了这么久,其实也没有好好了解这个东西,当然平常自己在前端方面也涉猎较浅。 1) jsonp 是什么 JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的 跨域 数据访问的问题。 跨域? 由于同源策略的原因,也就是说你请求资源时,浏览器对于不是你当前域名或者端口号都相同的地址给与禁止访问,不允许你获取资源 同源策略: examle.com:8080 与 examle.com:9090 不同源 examle.com:80...阅读全文

Segmentfault 2018-10-17 11:04:32 surest

PHP 变量作用域

以下为 PHP 中的各种变量在底层实现中是如何存储的。 变量: $temp = 'temp'; $temp2 = $temp; // key p *executor_globals.symbol_table.arData[7].key.val@4 p *executor_globals.symbol_table.arData[8].key.val@4 // value p *executor_globals.symbol_table.arData[7].val.value.zv.value.st...阅读全文

Segmentfault 2018-10-17 11:04:32 wk2015

Linux下alias命令的使用

最近在使用ssh连接远程机器敲了类似ssh -i ~/.ssh/138.pem ec2-user@192.168.21.138 这么长一串命令的时候被我们的运维吐槽了一波,遂给我安利了这个命令 1.alias的使用 alias命令用来设置指令的别名。我们可以使用该命令可以将一些较长的命令进行简化.用alias 短命令='原命令 选项' alias 138ssh= 'ssh -i ~/.ssh/138.pem ec2-user@192.168.21.138' 这下子就可以直接使用138ssh 来代...阅读全文

Segmentfault 2018-10-17 11:04:31 张胜

PHP 数组

以下为 PHP 数组的基础结构,插入,查找和 rehash 过程。 基础结构: struct _zend_array { zend_refcounted_h gc; union { struct { ZEND_ENDIAN_LOHI_4( zend_uchar flags, zend_uchar nApplyCount, zend_uchar nIteratorsCount, zend_uchar consistency) } v; uint32_t flags; } u; uint32_t n...阅读全文

Segmentfault 2018-10-17 11:04:31 wk2015

GIT配置多用户

在公司工作的时候有时候想提交一点代码到github上,然后一台电脑上就需要配置两个账号分别访问github和公司的gitlab 1. 分别生成两个key 为什么要生成两个key的原因我也不清楚,望路过的大佬指点下. 分别用如下的命令给两个账户生成key,存储位置和密码随意,注意名称不要一样不要覆盖了 ssh-keygen -t rsa -C “youemail” 把公钥的内容分别复制粘贴到公司git和github上面配置ssh-key的地方,title可以随便填 2.配置对应host使用哪个私钥...阅读全文

Segmentfault 2018-10-17 11:04:31 张胜

9块钱部署一个小程序

小程序制作和部署从本质上是和其他的网站是一样的,需要域名、服务器空间和数据库。域名就是你们家的地址,服务器空间就是你们家房子,数据库就是你们家的保险柜。 但是小程序和网站又有不同,小程序的前端部分是需要通过微信开发工具上传到微信的服务器上,就是说你们家的装潢都在微信的服务器上。当然你也可以把小程序的全部代码上传到自己的服务器上去。 小程序的制作流程 第一步:注册小程序 https://mp.weixin.qq.com/ 按步骤注册小程序,获取appId和appSecret。 第二步:微信开发工具...阅读全文

Segmentfault 2018-10-17 10:04:37 xindy

PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql

在一般的 Server 程序中都会有一些耗时的任务,比如:发送邮件、聊天服务器发送广播等。如果我们采用同步阻塞的防水去执行这些任务,那么这肯定会非常的慢。 Swoole 的 TaskWorker 进程池可以用来执行一些异步的任务,而且不会影响接下来的任务,很适合处理以上场景。 那么什么是异步任务呢? 可以从下面的图示中来简单了解一下。(来源于网络,侵删) 我们上一个 Swoole 的文章介绍了如何创建一个简单的服务器,并且知道了几个核心的回调函数的使用方法。 要实现上述的异步处理,只需要增加两个...阅读全文

Segmentfault 2018-10-16 22:04:40 Amauri

带入gRPC:gRPC Deadlines

带入gRPC:gRPC Deadlines 原文地址:带入gRPC:gRPC Deadlines项目地址:https://github.com/EDDYCJY/go... 前言 在前面的章节中,已经介绍了 gRPC 的基本用法。那你想想,让它这么裸跑真的没问题吗? 那么,肯定是有问题了。今天将介绍 gRPC Deadlines 的用法,这一个必备技巧。内容也比较简单 Deadlines Deadlines 意指截止时间,在 gRPC 中强调 TL;DR(Too long, Don't read)...阅读全文

Segmentfault 2018-10-16 20:04:27 煎鱼