分类目录:技术

redis存储数据占用内存大小估算

最近新项目很多地方需要用到redis,但由于是新项目,不知道数据量能做到多大,服务器数量又有限,从节约成本的角度考虑,服务器是能省则省。这个开发人员提出了新的挑战,对redis的使用必须做好充分的评估和规划。比如做一个在线实时排行榜,如果不…

彻底搞懂递归

说起递归函数,我们的第一反应是很绕,一层又一层,看的很晕。在上一篇文章中,实现排列组合算法很多地方用到了递归,这是一种很重要的设计思想,真正掌握它的原理之后就会豁然开朗:噢!原来这么简单! 我们把“递归”拆成两个字去看: 递:进去 归:出来…

php实现排列组合算法

需求: 在rpg游戏中,游戏各种配置非常复杂,例如:有一个奖励池A,B,C,D,可以根据配置的奖品数量3,从奖品池中随机取出对应数量的商品,这些商品的组合可能是:AAA,AAB,ABB,ABC,BCD…这就需要实现一个排列组合算…

一次redis内存爆满问题

某天项目突然挂了,通过查看错误日志如下: 通过报错信息,我们可以定位到是redis的内存用完了。 一.查看redis内存使用情况 通过info命令我们可以查看redis内存使用情况,以下是info命令的一些参数说明: [crayon-5d8…

mysql常见的运维及监控

前言 前几天项目的mysql突然挂掉了,所有玩家登陆不进,大家急的团团转。我由此吸取教训,项目上线之后对服务器做相关运维监控显得非常重要。优秀的程序员不但能写出优雅风骚的代码,对线上问题能快速排查定位解决的话也是其能力和价值的体现。下面来谈…

go中的接收器类型与结构体嵌套

go中的指针接收器与值接收器 在go语言中,方法的接收器类型有值和指针两种类型,值接收器跟指针接收器之间的区别在于,在指针接收器的方法内部的改变对于调用者是可见的,然而值接收器的情况不是这样的。通过一段代码来理解这点: [crayon-5d…

使用gdb调试go程序

开发程序过程中调试代码是开发者经常要做的一件事情,Go语言不像PHP、Python等动态语言,只要修改不需要编译就可以直接输出,而且可以动态的在运行环境下打印数据。当然Go语言也可以通过Println之类的打印数据来调试,但是每次都需要重新…

beego源码分析之orm操作

任何一门服务端语言最终都离不开解决数据的存储问题,所以web框架的核心功能之一是封装db操作库(orm)。beego作为一款流行的go语言web开发框架,其orm操作的封装也值得学习,下面先来看看beego中orm使用。 [crayon-5…