7 meng-xiang

尚未进行身份认证

记录点什么

等级
TA的排名 5w+

每天一块钱,拥有自己的云服务器

在云服务已经普及的今天,购买云服务器的成本越来越低了。拥有一台云服务器有哪些好处呢?永远在线,无需运维,云服务商帮我们打理好一切只要能连接网络,随时可以访问、控制服务器在云端搭建自己的博客、网站… …作者近期购买了一台云服务器,平均下来一天不到一块钱,性价比颇高,在此介绍一下配置方式,供大家参考。首先需要选择服务器的基础配置。如下图主要关注以下几个项目计费方式选择包年包月...

2019-12-09 15:47:35

生活中的程序员思维(二)

生活中的程序员思维(二)在生活中的程序员思维(一)中,讲到了并行、并发、防御式编程等思维,下面继续讲另外三种思维。同步/异步公司楼下开了一个饮品店,颇受欢迎。有些公司会大批量购买,作为员工的下午茶。一开始,顾客需要亲自到店、点单、等待饮品做好,最后取走饮品。时间长了,无论是店家还是顾客,都觉得很不方便。对店家来说,突然来了大批订单,然而店里人手有限,此时别的顾客就只能长时间等待了,这导致了...

2019-11-06 20:23:42

一种低冗余、客户端按需获取的API开发方法:map式API开发

map式API开发方法简介为什么叫 map 式?默认情况下API只返回极简的数据结构,最极端的情况,API默认只返回数据ID。客户端通过传参,向API索取自身所需的其它数据,传参越多,返回数据越多。随着业务需求的不断变化,API返回的数据越来越丰富,此时API只需要增加支持的传参,每一种参数都代表API能够提供的一类数据。例如参数 name 对应** ID 和名称**的 map参数 ca...

2019-10-24 17:05:32

ignition: 从1开始搭建golang web应用

github地址帮助一些从PHP、Python等语言转Golang的web开发者,快速熟悉Go的一些特性,快速搭建自己的web应用。特性数据库连接池:支持MySQL、PsSQL、Redis等将请求参数和校验规则封装成实体(entity)引入getter,使客户端可以按需获取数据封装好的、易于使用的参数校验支持YAML配置文件环境要求go1.11或更高版本示例示例灵感来源...

2019-10-19 18:53:25

唯快不破:如何快速处理大量数据

背景将数百张数据结构相同的表(用Tn代表),合并至一张表(用C代表)T表数据量分布很不均衡,少至一位数,多至几十万T表间没有业务关联C表结构在T表结构的基础上增加了几个字段,无法使用INSERT INTO (SELECT * FROM)数据总量约300万,经单进程测试,处理速度约500/s,预估耗时约100min目标最大化提升数据处理速度,将耗时降至10min左右,此时C表的写入...

2019-10-10 13:48:20

生活中的程序员思维(一)

前言回顾大约7年的程序员生涯,从一开始的小白,到现在成长为一个可以去帮助他人的程序员,虽然离大牛还差得远,但还是有些东西想写一写,就当思绪的偶尔停留。如果能对他人有所启发,就是意外的收获了。这里不写具体的编程语言、技术内幕,而是写一些普遍适用的,甚至不止适用于编程领域的内容。这些所谓“进阶思维”,有些是我在成为程序员之前就具备的,有些是我后来慢慢学会的。按照惯例,先总体罗列出来:并行思维...

2019-09-29 15:10:53

golang buffered channel demo

package mainimport ( "sync" "fmt" "time")type numPipe struct { Mu sync.Mutex Nums chan int}// 向管道写入数据func push(np numPipe, num int, sleep int) { np.Mu.Lock() for i := 0; i < sleep; ...

2019-01-26 17:34:50

redigo源码解析

前言redigo是用Go语言开发的Redis客户端,受到Redis官方的推荐。redigo的源码量比较少,也比较清晰易读。redigo主要做了以下事项与Redis server建立连接按照RESP协议组装指令向Redis server发用指令接收Redis server返回的数据将返回数据解析成Go的数据类型连接池(Pool),支持设置最大的活动连接数,最大的空闲连接数源码概...

2018-12-09 13:24:02

队列、堆栈和优先队列介绍及Redis实现

Redis丰富的数据类型,如list和zset,可以用来实现队列。已实现了以下几种队列。普通队列队列:FIFO双向队列:两个方向均可以PUSH、POP堆栈:LIFO优先队列:POP按优先级从高到低先后弹出元素其中,队列、双向队列和堆栈用list存储,优先队列用zset存储。增强特性支持容量固定,向一个满的队列PUSH会失败,向一个容量不足的队列PUSH也会失败支持可溢出(堆...

2018-11-25 21:21:49

Redis Lua编程与调试工具使用

前言Redis自2.6.0版本开始内置Lua解释器。Lua,轻量级脚本语言,号称最快的脚本语言。两者结合将爆发出巨大的威力。简介Redis Lua脚本可以调用原生的Redis命令,也可以包含自定义的控制流、逻辑运算、数学运算等,将复杂的业务逻辑封装起来,形成一个原子事务。这些特性使我们可以自由地扩展Redis,封装“自定义命令”。与MULTI+EXEC对比使用MULTI+EXEC及...

2018-09-30 16:29:56

mongodb字段验证规则(schema validation)

在我们通常的印象中,mongodb是模式自由的(schemaless),可以往一个集合里插入任意类型的数据,这会带来一些问题,例如对于PHP这种弱类型的语言,一个本应该是int型的字段,可能会同时存在string和int类型的数据。例如一个集合members,存储会员信息,包含的文档如下> db.members.find();{ "_id" : ObjectId("5b62a5c7...

2018-08-02 15:10:39

让redis操作更简单:为不同数据类型封装统一的命令

Redis内置了Lua解释器,可以运行一段lua脚本,完成相对复杂的操作。实现一个简单的操作:创建一个hash类型的key,并设置过期时间,lua代码如下local values = {}; for i,v in ipairs(KEYS) do values[#values+1] = redis.pcall('hmset', v, ARGV[2], ARGV[3], ARGV[...

2018-06-15 17:15:10

jobs:一个帮助你更好地组织任务的PHP库

在你的项目中,可能会遇到使用异步任务的场景,异步任务需要满足以下需求任务执行时间可自主设定(延时任务)任务失败可重试,并有最大重试次数限制任务失败后,下次重试的时间可自主设定,如固定间隔时间,随着失败次数增加逐渐增大间隔时间对于有依赖关系的任务,需要按顺序执行有些任务的执行结果依赖外部回调,需要有一个中间状态php-jobs 是一个不错的实现。这是一个抽象的库,具体的mod...

2018-03-29 16:39:59

在业务代码中植入异步通知功能

对异步通知的定位,是作为核心业务的一种补充,应该尽量与核心业务解耦。采用的解耦方式为“事件+监听器”。一些主流的php web框架,如laravel、yii2对“事件+监听器”的支持是“开箱即用”的,只需写少量的代码(通常是增加一些配置项)即可。这里描述的设计思想是“解耦”,是和语言无关的,属于“设计模式”的范畴。概念事件业务系统在某个时机触发事件,例如订单发货了,这时...

2018-02-24 11:33:34

认识redis:redis计数器与数量控制

这篇文章是我个人对redis的一些理解,可以帮助大家系统的认识redis。本文的目标读者是使用过redis,但对redis了解不深的朋友。文章内容以redis为主,也会少量提到memcached。文章从redis的设计目的、工作模式、应用场景等方面阐述,最后会讲解一些具体的应用场景,还会夹带一些代码作为“干货”。鉴于本人水平有限,文中如有不准确的内容,敬请斧正。redis是什么redis是一种内存型

2017-12-04 08:27:51

mysql如何对待非法的enum值

mysql enum

2017-11-13 17:00:01

将10进制整数转为64进制形式的PHP实现

/** * @param int $integer 10进制正整数 * @return string 64进制形式 */function decimal_to_base64($integer){ $chars_map = [ 0 => '0', 1 => '1', 2 => '2', 3 => '3',

2017-11-13 14:44:20

像查询MySql一样查询Redis

关系型数据库如MySql有丰富的SQL语句供我们使用,如wherewhere ininsertupdatedeleteorder bycount, sum, max, min等等。有些人曾经期待过,能否像查询MySql一样查询Redis?我就是其中的一员。现在有一个php库可以帮助你达成这个期待:redmodel安装推荐通过composer安装composer require "li

2017-03-30 13:18:31

PHP empty函数测试对象使用魔术方法获取的属性

php empty

2017-03-17 10:05:07

一个抢红包的PHP库:redenvelope

抢红包红包php

2017-03-06 18:00:56

查看更多

勋章 我的勋章
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。