自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis布隆过滤器

布隆过滤器(Bloom filter)是一种非常节省空间的概率数据结构,运行速度快,占用内存小,但是有一定的误判率且无法删除元素。本质上由一个很长的二进制向量和一系列随机映射函数组成。

2022-08-08 22:59:11 1285

原创 【沉思录】工作三年半的一些反思

记录下工作三年的思考和反思,希望自己可以做的更好,或许给迷茫的人一些参考

2021-12-26 00:42:24 1487

原创 两大推送服务---jpush和fcm

因为工作需要,接触了游戏中必不可少的推送服务,我们用到的是JPush和FCM。JPush(极光推送)是独立的第三方云推送平台,开发者集成 SDK 后,可以通过调用 API 推送消息。 全面支持 Android, iOS, Winphone 三大手机平台,但是不支持海外Android,所以我们用FCM(Firebase) 来做海外Android的推送服务。因笔者是服务器开发,故此篇只介绍一些服务器相关的东西,不涉及客户端SDK的接入。 JPush JPush 提供四种消息形式:通知...

2020-11-27 22:16:28 1569

原创 【容器集群管理】Kubernetes

一、Kubernetes是什么    Kubernetes简称k8s,是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。将现有服务容器化也是目前的趋势,前段时间搭建了一个master,两个node的k8s环境,master调度整个集群,nodes负责运行应用,记录下。    pod是容器的集合,通常将紧密相关的一组容器放到同一个pod中,同一个pod中的所有容器共享IP地址和Port

2020-06-08 16:27:03 784

原创 【erlang】lager源码剖析

lager是erlang的日志库,源码在:https://github.com/erlang-lager/lager,支持多个日志接收器,能够通过配置控制大量日志输出时节点的处理,以防止节点宕掉,适合生产环境中使用。参照官方文档对于每个配置参数的解释,能够适应大多数使用情况,但是有可能遇到配置了某些参数却不生效的情况,这时候需要结合源码理解每个参数。 一、整体框架 lager主要使用了gen_event,可以有多个回调模块,当调用到gen_event:notify的时候,所...

2020-06-05 16:55:06 740

原创 【Lua】学习笔记-lua脚本

一、数据类型只有一种数据类型:number 双精度浮点数string可以用单引号双引号或者[[]]表示;字符串连接使用的是 ..使用 # 来计算字符串的长度Lua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字或者是字符串。table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。也...

2020-02-20 11:19:27 279

原创 【Erlang】学习笔记-actor模型

erlang面向并发编程的,而能够并发的核心就是actor模型,理解actor模型至关重要,当然actor模型并不是erlang所特有的。其他语言和库也有用到,例如:Elixir, Akka (for the JVM) 和 Celluloid (for Ruby)。 传统的并发实现一般是这样的:多线程或者多进程,多个请求来临时放入共享内存,通过加锁的方式达到正确的处理结果,但是加...

2020-02-19 11:54:22 1187 1

原创 【Erlang】学习笔记-erlang基础语法

一、关于erlang erlang是函数式编程语言,最初主要用在电信软件开发,他是面向并发编程的,和主流语言相比,主流语言并不能很好的利用多核CPU的资源,采取加锁的方式使得编程易出错,且锁也是耗资源的。学习erlang的过程中,发现erlang和主流语言的语法和思想差别很大,可能并不容易上手,但是作为一个程序员,越不容易才越有意思对不对?先从基本语法学起吧。二、基本语法部分2....

2020-02-17 16:19:00 2616

原创 【设计模式】代理模式

一、概述 代理模式从生活层面也很好理解,平常找代购买东西就是运用了一种代理模式,想买澳洲一款眼霜,并不是直接去澳洲购买再回来,而是通过代购,向代购买,代购再去澳洲买,买完了带回来给我们,代购充当的就是代理角色。代理模式的定义如下:给某一个对象提供一个代 理,并由代理对象控制对原对象的引用。它是一种对象结构型模式二、UML图Subject:抽象主题角色,声明了...

2019-08-17 17:54:42 124

原创 【设计模式】外观模式

概述 外观模式是一种使用频率非常高的结构型设计模式,它通过引入一个外观角色来简化客户端与子系统之间的交互,为复杂的子系统调用提供一个统一的入口,降低子系统与客户端的耦合度,且客户端调用非常方便。 定义:外观模式(Facade Pattern):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这...

2019-07-29 21:01:33 117

原创 【设计模式】装饰模式

概述 装饰模式以对客户端透明的方式为一个对象添加更多的责任,在不需要创建子类的情况下,将对象的功能加以扩展,他的定义如下: 动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活。装饰模式是一种对象结构型模式。UML图:介绍类图中的角色:Component:抽象构件,具体构件和抽象装饰的共同父类,声明了具体构件中的业务方法,它的引入可...

2019-07-26 12:00:20 143

原创 【设计模式】桥接模式

概述    之前学习的适配器模式一般常用在开发中后期,这里的桥接模式一般用在开发前期设计系统框架时。属于结构型模式,用抽象关联取代了传统的多层继承,将类之间的静态继承关系转换为动态的对象组合关系,使得系统更加灵活,并易于扩展,同时有效控制了系统中类的个数。模式定义:将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(...

2019-07-22 18:13:10 155

原创 【设计模式】适配器模式(C++)

概述    适配器模式属于结构型模式,结构型模式描述如何将类或者对 象结合在一起形成更大的结构,就像搭积木,可以通过 简单积木的组合形成复杂的、功能更为强大的结构。结构型模式有类结构型模式和对象结构型模式。适配器模式的定义    将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作,其...

2019-07-17 17:52:00 353

原创 【设计模式】单例模式,饿汉式单例和懒汉式单例

概述单例模式(Singleton Pattern):单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。属于创建型模式,UML图:代码体现class Singleton{public: //提供获取类实例的接口,静态方法,可以直接通过类名使用 static Singleton* getInstance() ...

2019-07-16 11:32:38 298

原创 【设计模式】建造者模式

    建造者模式也属于创建型模式,定义为:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一种对象创建型模式。客户端在使用时,只需要指定复杂对象的类型,无需知道构建细节,就可以生成一个复杂的对象,UML图:UML图中的角色介绍    Bulider:抽象创建角色,包含两类抽...

2019-07-15 10:13:44 134

原创 【设计模式】工厂模式

    工厂模式在实际开发中比较常见,工厂模式有简单工厂模式,工厂方法模式,抽象工厂模式,都属于创建型模式,其中工厂方法模式是我们一般情况下说的工厂模式。创建型模式指的是,能够将类的实例化过程进行抽象,将对象的创建和对象的使用使用过程进行分离的模式,所以除了工厂模式之外,有部分其他的设计模式也属于创建型模式。简单工厂模式  &nbsp...

2019-07-11 10:35:24 118

原创 【openssl】使用openssl库进行base64加解密,aes解密,rsa验证签名

一、前言    近期在处理http请求的时候接触到了有关加密解密的部分,因为之前几乎没碰过这方面,遇到了很多坑,所以记录一下解决过程,用到的加密解密函数都是来自openssl库。openssl库包含主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议。二、base64加密解密2.1 base64编码   &nbsp...

2019-07-02 12:40:27 2149

原创 【C++11】std::bind,std::function,std::placeholders

此篇博客主要包含三个C++11的新特性。可用于绑定接收到其他进程消息后的消息处理函数。一、std::function    使用时需要包含头文件functional。在实际工作中可实现函数回调,std::function的实例可以对任何可以调用的目标实体进行存储、复制、和调用操作,这些目标实体包括普通函数、Lambda表达式(也是C++11的特性)、函数...

2019-06-24 12:31:19 488 1

原创 【Redis】《Redis设计与实现》读书笔记

一、简单了解Redis    Redis是以快速读写数据为优势的工具,它是单线程的,占用较少的内存,开源的,以C语言实现的一种Key_Value数据库,在热点数据缓存,限时业务(利用了Redis的键生存时间),游戏排行榜后端服务器等等方面都有应用。二、Redis的数据结构2.1 字符串变量    Redis并没...

2019-06-20 18:56:38 204

原创 【沉思录】工作一年的一些反思

从18年7月毕业至今快一年了,原本以为自己的第一份工作会是测试开发,但是阴差阳错成为了游戏服务器开发女程,未来真是个有趣的东西,因为它永远无法预测。我能做到的,就是把握现在,不留遗憾。写这篇博客主要是对自己过去一年的工作进行一个反思,希望自己做的不好的方面能够不断改进,做的好的方面能够继续保持。一、工作态度和方法 刚刚毕业参加工作,有一种似曾相识的感觉,类似于高中毕业到大学,...

2019-06-09 13:02:59 259 2

原创 【python】ftp下载上传,socket编程

FTP上传下载相关函数:from ftplib import FTP #加载ftp模块ftp=FTP() #设置变量ftp.set_debuglevel(2) #打开调试级别2,显示详细信息ftp.connect("IP","port") #连接的ftp sever和端口...

2019-04-30 18:30:48 323

原创 【Redis】Redis-cli使用的简单记录

Redis是以快速读写数据为优势的工具,Key-Value结构,服务器端经常会用他来做数据的缓存,作为辅助存储方式,定时写入MySql中;用于不同进程间读取数据也很方便,但是有时候取到的数据不太对,所以需要查看此时Redis里存储的到底是什么来定位问题。此时就用到了redis-cli。1.连接Redisredis-cli -h {host} -p {port}eg:redis...

2019-04-22 16:13:24 556

原创 【Linux】tar指令

tar指令的使用选项稍微有点多,记录下来方便日后使用-c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。-z:有gzip属性的-j:有bz2属性的-Z:有compress属性的-v:...

2019-03-29 16:51:36 122

原创 【Linux】SecureCRT配置

SecureCRT可用于远程连接Linux服务器,但是直接下载下来的使用感觉很不好,配色难看,字体大小不合适;home,end,pageup,pagedown这些键盘指令使用习惯也不一样。一、外观配置Options—>Session Options—>Terminal选择Linux,勾选ANSI Color,可以将Ccrollback buffer的值改大一些,这个是输出缓冲,改...

2019-03-29 15:51:06 606

原创 《More Effective C++》读书笔记

1、指针和引用的使用场景确定变量永远不会为空且不会作为其他变量的代表时用引用;变量有可能会为空或者在不同的时间会指向不同的对象时用指针。2、类型装换最好使用C++转型操作符static_cast  基本类型之间的转换const_cast  常量转非常量(去除常量属性)dynamic_cast  继承体系中父类与子类之间的安全转型,失败返回NULLreinterpret_ca...

2018-12-21 16:10:18 161

原创 【STL】《STL源码剖析》读书笔记

算法算法可分为质变算法和非质变算法,质变算法改变操作对象的值,通常提供两个版本,一个直接改变操作对象值,另一种是拷贝一份操作对象并改变,最后返回改变后的副本;非质变算法不会改变操作对象的值。使用算法必须包含头文件<algorithm>。1.数值算法使用SGI版STL数值算法需要包含头文件<stl_numeric.h>1.1 accumulatetemplate&l...

2018-12-21 16:03:16 462

原创 如何用gdb调试以daemon进程运行的服务

小项目的调试,基本是在编译时加-g选项后,使用gdb可以直接调试。gdb 目标二进制文件名eg:gdb hello但是大多数服务端程序是以daemon进程形式运行的,demon进程详解见:点我点我这种服务直接gdb是不行的,需要加参数-p 加目标程序端口号。开始调试之前运行ps -x,查看目标程序的PID。gdb -p PID打断点的方法也有点差异,工程较大的时候,打断点方法:b 类型::方法名...

2018-04-16 21:28:18 2061

原创 【python】实战:“唱啥”app后台开发

项目背景 近期在Tencent实习,参加mini项目,我们做的是一款app,名曰“唱啥”,是一款基于用户个人声音特性和听歌偏好来匹配相似歌手,从而为用户定制个性化推荐K歌单的应用。以小组的形式开展,我在项目中的角色是后台开发的一员,主要负责后台逻辑代码的编写。 项目框架由于开发时间比较紧张,python代码开发效率高,可读性强,适合本次周期短人员多的现实情况,所以 后台开发语言选用的

2017-07-15 12:33:43 5924 1

原创 【Python】python基础学习笔记

Python数据类型整数浮点数字符串 ’ ’ ” “布尔值 True False 可以用and(与),or(或),not(非)运算 Python把0,空字符串,None视为False,其他都是True。 空值 None 不是0,是一个特殊的空值 python允许自定义数据类型Python变量属于动态语言,可以灵活赋值。字符串raw字符串:里面的字符不需要转义,直接

2017-06-24 23:19:59 686

原创 【shell脚本】常用工具的学习grep、sed、awk、cut

grep功能: 查找过滤工具,查找或者过滤出符合某个模式的字符串,可以和正则表达式搭配使用。 所以本篇博客适合有正则表达式基础的读者阅读哦~。 用法:grep '正则表达式' 操作的文件名egrep '正则表达式' 操作的文件名grep -E '正则表达式' 操作的文件名grep -F '匹配的字符串' 操作的文件名fgrep '匹配的字符串' 操作的文件名其中,egrep相当于gr

2017-04-25 16:18:53 711

原创 【Linux】webbench-1.5源码剖析

前言想法来源于博客:http://blog.jobbole.com/79023/ 里面说了值得剖析的10C语言开源项目,源码下载链接也有。注意是Linux下的C语言项目,下载完毕后使用解压命令:tar zxvf webbench-1.5.tar.gz解压,解压完毕进入目录切换到root用户安装使用。 1.make 2.make install 此时可能会出现错误提示: install: c

2017-04-21 12:46:12 717

原创 【测试】软件测试的流程图&&软件测试基本概念

1.测试工程师需要具备什么样的素质适应新环境的能力沟通能力善于发现问题的能力善于分析问题,定位缺陷耐性创新能力沉着稳重从用户的角度看问题善于总结问题2.为什么要做黑盒测试验证软件产品是否符合需求文档的设计证实软件产品符合最终用户的需求。3.软件测试周期中哪些阶段会用到黑盒测试单元测试组件测试集成测试系统测试用户

2017-04-17 17:15:11 14159

原创 【面经】深信服测试实习生面经

公司:深信服 应聘岗位:测试工程师1、你是出于什么原因应聘软件测试岗位呢?2、有学过Python没有?3、有了解多线程?4、能简单说一下多线程的tcp服务器吗?5、怎么达到互斥?哪种锁?6、Linux下kill -9 -11有什么区别?7、Linux系统常用吗?做哪方面的编程?8、Linux环境现在比较卡,你怎么查获取你想要的结果?9、如果查出来是IO消耗比较多

2017-04-09 22:20:12 6070

原创 【面经】美团外卖测试开发实习生面经

公司:美团外卖 应聘职位:测试开发 一面1、用Java多还是C++多?2、操作系统用过哪些?3、Linux用的什么版本,在Linux下主要是编程比较多还是往里面布应用多?4、在CentOS下怎么装软件,yum指令工作原理,怎么卸载软件?5、socket编程,TCP编程和udp编程的区别。6、select/poll/epoll区别。7、分析一个常用算法的时间复杂度,空间复

2017-04-09 22:14:25 4163

原创 【shell脚本】字符串截取的8种方式

在编写配置脚本时,经常会用到字符串的切割,所以,shell提供了8种字符串的切割方式我们定义一个变量a=test.c.sh。接下来对它进行切割,直接在命令行演示:1. # 号截取,删除左边字符,保留右边字符。a是我们定义的变量,#是截取运算符,*.表示从左边开始,删除第一个.和.左边的全部内容,所以结果是c.sh。2. ## 号截取,删除左边字符,保留右边字符。

2017-03-28 10:41:32 5848

原创 【shell脚本】shell脚本的三个小练习

1.利用shell脚本编写一个进度条     先介绍一下shell中printf命令的使用方法,与C语言风格类似,只不过在shell中是一个命令,所以不能通过圆括号传参,所有的参数用双引号括起来,第一个参数是格式控制,与C一致,参数之间不能用逗号,像命令传参一样,用空格隔开。    为了进度条能稍微美观一点,我们可以设置字体的颜色和背景色。在shell中,怎么做到呢? 颜色是通过添加专

2017-03-28 10:15:36 2350

原创 【剑指offer】请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

题目描述请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。解题思路1.可以新建一个string对象,从前向后遍历源字符串,遇到空格即替换成%20,不是空格直接拷贝,最后把string对象转换成C字符串拷贝给源字符串。2.先遍历源字符串得到空格的个数,得到替换后字符串的长度,使用两

2017-03-24 20:30:21 1363

原创 【测试】软件测试的艺术读书笔记

2017-03-24 16:42:37 620

原创 【shell脚本】命令代换 ` `, $( ) ,整数运算$(( )),变量代换${ },eval命令

一、命令代换命令代换的意识是:先完成引号里/括号里的命令行,然后将其结果替换出来,再重组成新的命令行。shell脚本里,可用于命令代换的有反引号(` `),和$()。但是,我们知道Linux下不会存在冗余的命令,既然存在两个可以实现相同作用的符号,那么它们一定有不同之处。使用反引号的缺点如下: 1.它比较陈旧。 2.非常容易和单引号混淆。 3.它会对\进行跳脱处理。而$()不会。 我们知道,

2017-03-24 12:10:11 1666

原创 【剑指offer】二维数组的查找

题目描述在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。解题思路由于从左到右递增,从上到下递增,由此可以发现,右上角的数字一定是所在行的最大数,所在列的最小数,所以,把要比较的数字和右上角的数字比较,相等说明直接找到了,大于那肯定不在当前行,直接去下一行找,小于则不可能在当前列,再去

2017-03-23 19:42:15 385

软件测试讲解.pdf

测试用例中一个必需部分是对预期输出或结果进行 定义  程序员应避免测试自己编写的程序  编写软件的组织不应当测试自已编写的软件  应当彻底检查每个测试的执行结果  测试用例的编写不仅应当根据有效和预料到的输入 情况,而且也应当根据无效和未预料到的输入情况

2019-06-10

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

TA关注的人

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