自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Orz..一入码门深似海

在往架构的路上努力前行

  • 博客(42)
  • 收藏
  • 关注

原创 分布式事务分析

近期公司项目基于微服务架构需要涉及到实现一套分布式事务。经过几天在网上查阅资料发现大部分文章只是讲解了具体的其中一个模型。因此在这里做一个总结+自己的一些感悟和看法。1.CAP理论CAP理论本身并不是一套和事务相关的理论,而是用来解释分布式系统的理论。但是用来分析分布式事物的边界非常适合。关于CAP理论,可以查看阮一峰大神的这篇文章:CAP定理的含义CAP理论一个核心论证就是P(分区容错...

2019-08-22 13:45:29 199

原创 微服务架构总结--1.微服务的特点

微服务架构一书读后感,并结合自己实际工作的归纳总结。1.什么是微服务?官方说法:微服务架构就是将单一程序开发成一个微服务,每个微服务运行在自己的进程中,并使用轻量级的机制通信,通常是HTTP RESTFUL API。这些服务围绕业务能力来划分,并通过自动化部署机制来独立部署。这些服务可以使用不同的编程语言,不同数据库,以保证最低限度的集中式管理。个人理解:每一个服务都有自己独立的功能、...

2019-08-20 20:44:02 276

原创 程序、进程、线程、协程到底是什么

什么是程序简单来说就是一段指挥计算机运行的指令集合。一个可执行程序是由我们人所能理解的语言所写的代码编译而成的机器码(指令)。机器指令:40055d: 48 83 ec 08 sub $0x8,%rsp400561: be 04 06 40 00 mov $0x400604,%esi400566: bf 01 00 00 00 mov $0x1,%edi40056b:

2021-01-05 17:47:07 166

原创 1. DNS那些事

参考:​ 透视HTTP协议(06.域名有哪些门道)​ libcurl文档DNS是什么DNS(Domain Name System,域名系统)就是一个记录域名与IP对应关系的系统。DNS解析就是将域名转换成IP的过程。实际网络传输中,各端点均是通过IP+端口的四元组确定地址的。DNS的结构根域名服务器(Root DNS Server):管理顶级域名,例如com、cn等顶级域名服务器的IP地址。顶级域名服务器(Top-level DNS Server):管理各自域名下权威域名服务器,例如.

2020-12-03 16:10:29 183

原创 PHP底层那些事--生命周期、变量zval、引用计数

从内核层面解析PHP的声明周期、变量zval、引用计数。《Extending and Embedding PHP》读后总结1.PHP的生命周期不论是使用cli指令行还是使用webserver(apache、nginx)形式解释执行php程序。最终的进程模型都可以归为三类:单进程(cli):指令行执行php就是开启一个php进程,执行完php程序后控制权返回给shell。多进程(nginx+php-fpm):php-fpm实际处理php请求的只是worker进程,在单个进程空间中并不会创建线程.

2020-06-17 18:19:11 324

原创 Gitlab CI/CD部署使用

概念:CI/CD:持续集成/持续部署,简单来说就是将发布-测试-部署自动化,统一、规范开发流程。是敏捷开发理念、微服务架构的重要的一环。 Gitlab: 网址:https://gitlab.com 简介:与Github类似,是一个git仓库托管网站。可以免费私有化仓库。并对仓库、分支可以进行用户权限管理。也支持私有化部署。 Runner: 安装文档:https://docs.g...

2019-11-04 23:16:09 373

原创 分布式事务--最大努力通知

参照事务的基本特性,分析基于消息系统模型之最大努力通知模型。1.事务的特性A(Atomicity):事务中的全部操作都是一个原子操作序列,要么一起成功,要么一起失败。其中任何一个操作失败,之前已经成功操作也会回滚到操作之前的状态。C(Consistency):事务的执行结果从一个状态切换到另一个状态,当事务完成后各操作结果的状态都是操作成功的状态或操作之前的状态时,就可以说是满足一致性...

2019-08-22 18:21:51 269

原创 Linux、Mac时间戳转换小工具

工作中经常会和时间戳打交道,每当这个时候,都需要打开网页,去格式化或者反格式化某一个时间戳。因此用go写了一个小工具,命令行即可直接查看结果。github地址:https://github.com/Orz-Li/timestampHelper使用说明下载编译好的release程序可以将程序移动至/bin或/usr/bin下timehelper 时间戳或格式化日期字符串 即可时间戳...

2019-01-08 19:02:45 1673

原创 数据结构与算法---链表(包含GO源码分析)

链表的定义链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。----摘自百度百科链表的底层可见它并不是一组连续的内存,他是靠指针将零散的内存串联起来,形成的一个完整的数据结构。链表的一些重要概念结点链表中的某一个元素我们称之为结点后继指针如上图所示,链表中的元素不光包含数据,还应该包含一个指向下一个元素的指针,这个...

2018-11-28 17:36:39 260

原创 数据结构与算法---数组

数组的定义数组是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。其中有几个重要的概念:线性表线性表就是数据排成像线一样的结构。每个线性表最多只有前和后两个方向。是线性表的数据结构有:数组队列链表栈非线性表非线性表则与线性表相反,数据并不是简单的前后关系。非线性表的数据结构有:树图堆连续的内存空间数组在内存中...

2018-11-16 16:47:46 308

原创 数据结构与算法---算法复杂度分析

为什么需要复杂度分析对于一段算法,如何判定它是否高效?如何针对现有的数据量级对于这段代码以及数据增长之后的空间、时间进行预估?可能有人会认为,这个问题很简单,直接写一段测试代码,实际运行一下就知道了。这种统计的方法叫做:事后统计法单纯的事后统计法存在几点问题:统计结果完全依赖于你的硬件环境。例如你用i8的内核肯定比你i3内核的机器运行的快。测试结果收数据量级规模以及规则影响很大。例如排序...

2018-11-14 18:21:35 258

原创 Docker官方起步文档总结-第三节

官方起步文档—第三节: https://docs.docker.com/get-started/part3/compose文档:https://docs.docker.com/compose/overview/Services在实际的应用场景中,你的应用可能包含很多服务,这一节的配置,可以让你更精细化的操作你的每一个服务,设定不同的硬件使用阈值、负载均衡、启动的服务数等。关于微服务,可以查看...

2018-11-12 17:34:20 164

原创 Docker官方起步文档总结-第二节:Dockerfile详解

官方起步文档—第二节: https://docs.docker.com/get-started/part2/#your-new-development-environmentDockerfile文档:https://docs.docker.com/engine/reference/builder/#usageDockerfileA Dockerfile is a text document...

2018-11-09 18:10:38 229

原创 Docker官方起步文档总结-第一节

官方起步文档地址:https://docs.docker.com/get-started/ImageAn image is an executable package that includes everything needed to run an application–the code, a runtime, libraries, environment variables, and ...

2018-11-08 18:22:21 227

原创 从零打造通用游戏服务器----开篇、目录

文章目录开篇我理解的微服务服务列表开篇随着go语言学习的深入,包括实际中自己的需求,决定从头实现一套自己的微服务架构的游戏服务器。其中会融入很多我对于微服务的理解,以及对于整体架构设计思想的表达。全部文章不涉及到具体的代码实现,只包含结构设计、程序设计、表设计、缓存设计,力求按照文中内容无论使用任何语言均能快速搭建出设计的服务。我理解的微服务按照我对于微服务的理解,微服务应该符合的标准:...

2018-10-18 18:15:54 602

原创 UNIX网络编程第三版(卷1)读书笔记以及习题-章节2

1. 几个关键点常用连接协议TCP、UDP的特点:TCP:可靠的,全双工(同一时刻,允许数据在两个方向上同时传输)通信协议。完成一次连接需要进行3次握手:客户端发起请求(SYN) —— 服务器收到客户端请求(SYN)并返回确认(ACK) —— 客户端收到服务器确认(ACK)并发送确认的确认(ACK) —— 服务器收到客户端确认(ACK),建立连接。完成一次断开需要进行4次握手:主动

2018-02-01 23:46:02 852

原创 UNIX网络编程第三版(卷1)读书笔记以及习题-章节1

1. 几个关键点:client使用read读取socket返回的数据的时候,总是使用一个循环包裹,最主要的原因就是tcp/ip协议传输的时候,数据会根据实际情况进行分节,因此只有循环才能保证读出全部的数据。while ( (n = read(sockfd, recvline, MAXLINE)) > 0) { recvline[n] = 0; /* null termin

2018-01-31 16:21:27 1420 1

原创 GO语言基础-使用切片需要注意的点

因为切片实际是一个指向底层数组的指针的特性。使用切片的append函数的时候需要注意一些容易引起问题的地方。切片原理可以查看之前是文章:http://blog.csdn.net/ligongxiang123/article/details/79164393append方法,用于给切片增加长度,如果长度超过当前切片的容量那么底层会新建一个新长度的底层数组,并将切片指向新的底层数组,并返回。如

2018-01-29 18:17:44 492

原创 GO语言基础-refer语句特性

GO语言独有的refer,后面可以跟一个简单语句或者跟一个匿名函数。refer必须处于一个方法或者函数中。1. 简单理解:refer一定会在一个函数和方法全部执行完之后才会执行。可以理解成析构函数。2.refer中的语句,在编译过程中就会生成语句,并将语句插入一个栈结构的队列中,遵循先入后出的原则。因此,如果defer运用在循环中,一定要注意这一点。3.- 如果采用匿

2018-01-26 15:35:55 1262 1

原创 GO语言基础-for语句特性,字符串循环的一个小问题

GO语言for与其他语言for循环没有太大差别,只是通过条件的不同(range表达式)融合了其它语言的while/foreach等循环。string底层实际是一个[]rune的切片,因此也可以直接range循环。对于string类型来说,如果你将它转换成一个[]byte的切片,那么如果遇到中文字符,他实际的循环出的index的值会比你预期的大,因为一个中文字符占3个字节。对于str

2018-01-26 15:03:52 463

原创 GO语言基础-switch语句特性

GO语言的switch语句,除去和其他语言一致的基础使用方法外,还有一些特性1. 每一个case是可以直接省略break语句的,如果使用break和效果其他语言一致。2. 可以使用fallthrough语句,是之匹配后直接使用下一个case代码块的内容执行。注意:fallthrough语句必须为当前case代码块的最后一行!3.当switch后面的语句省略时,cas

2018-01-26 12:12:15 400

原创 GO语言基础-if语句特性

GO语言的if语句与其他语言没有太大区别,唯一一个比较有意思的点是,在if之后可以跟一条语句。

2018-01-26 12:07:39 347

原创 GO语言-切片特性以及容量的概念

1.切片的特点实际上指向底层模板数组的一直引用,因此创建切片的效率很好。修改切片实际会修改底层数组,修改底层数组的值会影响所有切片。例如: 2.切片底层的数据结构 切片很快的原因是因为切片最底层的数据结构里面,保存了一个指向底层数组的指针,一个int值长度,以及一个int值容量,并没有存储数组实体,因此创建和使用效率都很高。3.容量:slice1的容

2018-01-25 17:16:03 1741

原创 GO语言-数组特性

与其他语言不同,GO语言数组默认是按值传递,也就是说,数组变量实际上存储的是整个数组而不像其他语言那样存储的是指向数组开头的指针。 因此赋值的时候,如果需要避免额外的内存开销(特别是数组比较大的情况下),一定要使用取地址符去赋值,而不要直接的使用赋值符号赋值!test := […]string{“a”,”b”,”c”}test2 := test //test2实际上cop

2018-01-25 13:43:11 360

原创 GO语言中的关键字

25个关键字:程序声明:import、package程序实体声明和定义:chan、const、func、interface、map、struct、type、var程序流程控制:go、select、break、case、continue、default、defer、else、fallthrough、for、goto、if、range、return、switch比较特殊的关键字解释:

2018-01-25 13:40:31 2394

原创 MySQL Daemon failed to start. 无法启动

mysql Daemon failed to start.

2017-10-12 20:45:12 1556

原创 PHP hash_hmac与python hmac sha1匹配

因为不同语言,对应加密的规则有些许不同。然后这个问题在度娘上也搜不到一个正确的答案,特此记录一下。

2017-08-02 17:54:23 2788 2

原创 mysql、nginx、php-fpm、php配置优化

这里只列出了少数参数,根据工作中实际使用到的和结果,间断更新。php.inizlib.output_compression=On;zlib.output_compression_level=3;zlib.output_handler=;开启zlib压缩,开启后,php会将返回的数据压缩返回,并且返回头中的Content-Encoding值会变成gzip。压缩级别,一般设置在1-5之间,值越

2017-05-25 16:20:02 879

原创 使用remi源报错:epel-release >= 6 is needed by remi-release-6.5-1.el6.remi.noarch

按照remi源时提示需要XXX.noarch.rpm,直接使用下方的命令即可,下例是centos6.5按照示例 centos 6.x: rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm rpm -Uvh http://rpms.famillecollet.com/enterpri

2017-05-20 16:32:48 2192

原创 Angular2 ng2-file-upload使用FileReader在网页中显示用户选择图片

ng2-file-upload是一个angular2的文件上传指令插件,可支持拖拽上传、单选上传、多选上传等功能,具体使用方法可去github查看。地址:https://github.com/valor-software/ng2-file-uploadFileReader是什么?FileReader是一个可操作文件的web api,可以将用户选择的文件转行成所需格式的接口,例如二进制数据、Base

2017-05-05 14:31:56 6904 6

原创 Angular2 模型渲染的一个坑

今天在使用angular2开发一个CMS项目的时候发现了一个模型渲染的坑,特此记录。相信很多人使用angular2的时候都有这么一种情况,首先定义一个单例service,作为数据的提供者,在组件中注入,service中只简单的返回一个数组对象。例如: 在组件中定义一个私有变量,等于例如图中的columns(图中是我更改以后的代码,原本就是定义了一个私有变量,等于了对象中的columns数组,然后

2017-05-03 00:57:50 3694

原创 从零开始一个项目-1.项目规划篇

最近帮助新公司搭建一个数据分析后台,借此机会,把整个项目的点滴记录下来,顺便帮助一些朋友理清一个项目的流程,建立良好的开发习惯,提高效率1.需求整理公司需求只是一个简单的数据分析后台,只需要表格的展示功能,无需增删改的功能,但是考虑到之后扩展的可能(比如现在就已经增加了GM管理游戏基本数据的功能了…),因此决定写成一个框架,不管是现在公司使用,还是自己接一些项目都是使用到,节省开发成本。目标:

2017-04-12 22:46:17 1586

原创 Centos6.5 LNMP环境、git服务器搭建

环境:linux 发行版本:centos6.5 平台:阿里云 工具:yum1.安装nginx命令:yum install nginx默认配置地址:/etc/nginx/nginx.conf配置引用地址:/etc/nginx/conf.d/*.conf2.安装mysql命令:yum install mysql mysql-server默认配置地址:/etc/my.cnf2.安

2017-04-02 00:23:19 1905

原创 两种结构规划以及优劣

纯angular菜鸟,个人的一些想法与总结。 背景:一个数据的统计后台,左边导航栏,右边按需求的表格展示。先说说我现在的大致结构:service 左边导航的配置数据,包含title、link全局使用的其他常量数据,例如其中有一个是筛选的游戏渠道:1.网易、2.腾讯等一个loading服务,对应一个loading的view,ajax前显示,回调成功隐藏。config angular

2017-03-30 23:54:13 484

原创 mysql优化的一点感悟

背景:每张数据表约80W条,按照日期生成,对应用户在游戏中的各类操作。常规的优化方式1. 根据常用检索字段建立索引按照实际测试,不加其余任何操作,未建立索引的情况下,80W条数据,select语句耗时0.3-0.5s左右,建立索引后并未有很大提升(也许是数据总量依然过低),平均耗时只能降低0.0Xs。2.根据需求尽量精确查询字段、并尽量多的加入条件语句根据实际测试,未建立索引的情况下,select

2017-03-30 23:18:02 673

原创 php常用数组函数

php常用数组函数

2017-03-25 01:23:26 5958

原创 对于php、mysql优化、angularjs的一些小感悟

最近在新公司(游戏公司)因为业务需要,需要开发一套独立的数据统计后台,包括前端页面和php端数据处理。数据表是按照日期生成的log表,每日一张,包含了所有用户的一切操作,例如:登录、注册、游戏相关、在线相关等,按照type字段分类。前期有过小范围测试几千人左右,数据量每张表大约为80W条,因为只是一个内部使用的后台,因此对于性能要求没有那么变态,只需要尽力的优化即可。在这里将这些感悟整理、归纳一下

2017-03-25 00:32:08 853

原创 mac下java配置问题

Mac下java配置问题

2017-02-25 21:39:20 711

原创 好用易忽视的字符串处理函数

好用易忽视的字符串处理函数

2017-02-24 16:32:25 339

原创 php配置解析

php.ini部分配置解析以及配置作用域

2017-02-24 00:30:56 508

空空如也

空空如也

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

TA关注的人

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