龙翔云际的实验室

龙翔云际欢迎你


Go语言中的数据类型

发布于:2017-01-21

Go语言类型分类分类 Go语言将数据类型分为四类: 基础类型:数值、字符串、布尔型 复合类型:数组、结构体 引用类型:指针、切片、字典、函数、通道 接口类型:接口、错误 数值类型 Go语言的数值类型包括几种不同大小的整数、浮点数和复数,每种数值类型都决定了对应的大小范围和是否支持正负符号。 有符号整数类型包括:int8、int16、int32和int64 无符号整数类型包括:uint8、uint16、uint32和uint64 浮点数类型包括:float32、float64 复数类型包括:complex64、complex128 还有两种一般对应特定CPU平台机器字大小的有符号和无符号整 …...

进入阅读

Maven的使用简介

发布于:2016-10-12

maven maven是一个JAVA项目构建和管理的工具,提供了帮助管理 构建、文档、报告、依赖、scms、发布、分发的方法。可以方便的编译代码、进行依赖管理、管理二进制库等等。 maven的好处在于可以将项目过程规范化、自动化、高效化以及强大的可扩展性,利用maven自身及其插件还可以获得代码检查报告、单元测试覆盖率、实现持续集成等等。 Pom pom是指project object Model。pom是一个xml文件,在maven2里为pom.xml。是maven工作的基础,在执行task或者goal时,maven会去项目根目录下读取pom.xml获得需要的配置信息 pom文件中包含了项目 …...

进入阅读

MySQL高可用架构

发布于:2016-08-23

前言 Mysql数据库作为最基础的数据存储服务之一,在整个系统中有着非常重要的地位,因此要求其具备高可用性是无可厚非的。有很多解决方案能实现不同的SLA(服务水平协定),这些方案可以保证数据库服务器在硬件或软件出现故障时服务继续可用。 理解高可用系统 高可用,英文叫High Availability(Wikipedia词条),基本上来说,就是要让我们的计算环境(包括软硬件)做到full-time的可用性。在设计上一般来说,需要做好如下的设计: 对软硬件的冗余,以消除单点故障。任何系统都会有一个或多个冗余系统做standby 对故障的检测和恢复。检测故障以及用备份的结点接管故障点。这也就 …...

进入阅读

Linux IO模式

发布于:2016-08-09

前言 服务器端编程经常需要构造高性能的IO模型,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)这4中IO模型,那么这四种模型具体如何定义,有何区别?本文将介绍相关的内容。 一些基本概念 用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方)。操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。为了保证用户进程不能直接操作内核(kernel),保证内核的安全,操心系统将虚拟空间划分为两部分,一部分为内核空间,一部分为用户空间。 …...

进入阅读

数据库事务理论——ACID

发布于:2016-05-01

ACID理论 ACID,是指数据库管理系统在写入或更新资料的过程中,为保证事务是正确可靠的,所必须具备的四个特性:原子性(atomicity,或称不可分割性)、一致性(consistency)、隔离性(isolation,又称独立性)、持久性(durability)。 在数据库系统中,一个事务是指由一系列数据库操作组成的一个完整的逻辑过程。例如银行转帐,从原账户扣除金额,以及向目标账户添加金额,这两个数据库操作的总和构成一个完整的逻辑过程,不可拆分。 原子性(Atomicity) 一个事务中的所有操作,或者全部完成,或者全部不完成,不会结束在中间某个环节。 通常一个事务关联的操作具有共同的目 …...

进入阅读

Mysql查询执行计划—Explain

发布于:2016-04-06

explain 在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句。找出这些SQL语句并不意味着完事了,我们常常用到explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做全表扫描。所以我们深入了解MySQL的基于开销的优化器,还可以获得很多可能被优化器考虑到的访问策略的细节,以及当运行SQL语句时哪种策略预计会被优化器采用。 explain语法和示例 explain select * from servers; …...

进入阅读

MYSQL主从架构

发布于:2016-01-04

MySQL主从复制 随着数据量不断的增加,由单台Mysql作为独立的数据库有的时候是不能满足实际需求的,无论是在安全性,高可用性以及高并发等各个方面。因此,一般来说都是通过主从复制(Master-Slave)的方式来同步数据,再通过读写分离(MySQL-Proxy)来提升数据库的并发负载能力这样的方案来进行部署与实施的。 使用mysql主从复制的好处有: 采用主从服务器这种架构,稳定性得以提升。如果主服务器发生故障,我们可以使用从服务器来提供服务。 在主从服务器上分开处理用户的请求,可以提升数据处理效率。 将主服务器上的数据复制到从服务器上,保护数据免受意外的损失。 主从复制原理 复制过程 …...

进入阅读

MySQL索引原理

发布于:2015-12-24

索引的本质 MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是数据结构。 数据库查询是数据库的最主要功能之一。我们都希望查询数据的速度能尽可能的快,因此数据库系统的设计者会从查询算法的角度进行优化。 最基本的查询算法当然是顺序查找(linear search),这种复杂度为O(n)的算法在数据量很大时显然是糟糕的,好在计算机科学的发展提供了很多更优秀的查找算法,例如二分查找(binary search)、二叉树查找(binary tree search)等。 如果稍微分析一下会发现,每种查找算法都只能应用于特定的数 …...

进入阅读

PHP底层——变量及其数据结构

发布于:2015-12-03

前言 众说周知PHP是一门弱类型语言,PHP中的一个变量可以声明为任意的PHP数据类型,在程序的运行阶段也可以几乎任意的进行类型转换。这是PHP一个灵活而高效的设计,那么PHP的变量是如何进行存储的呢?这篇文章将介绍相关的知识。 PHP类型 PHP是弱类型语言,这并不表示PHP没有类型,在PHP中,存在8种变量类型,可以分为三类: 类型 描述 标量类型 布尔类型——boolean、整型——integer、浮点型——float(double)、字符类型——string 复合类型 关联数组——array、对象——object 特殊类型 资源——resource、常 …...

进入阅读

Mac上的包管理工具Brew

发布于:2015-11-25

关于brew mac系统也是基于unix的系统,所以也继承类很多unix的特性,包括软件的编译,安装等。ubuntu下有快捷命令apt-get install来快速安装软件。centos下有yum install来快速安装。所以,mac下也有一种方式,就是使用brew。是Mac OSX上的软件包管理工具,能在Mac中方便的安装软件或者卸载软件, 只需要一个命令, 非常方便brew类似ubuntu系统下的apt-get的功能。 brew是Mac下的一个包管理工具,它从下载源码解压然后 ./configure && make install ,同时会包含相关依存库。并自动配置好各种 …...

进入阅读

RESTful架构

发布于:2015-08-02

什么是REST和RESTful REST这个词,是Roy Thomas Fielding在他2000年的博士论文中提出的,REST(英文:Representational State Transfer,一般译为"表现层状态转化")是一种思维方式,而非协议或标准。它是设计基于命名资源而非消息的松耦合应用程序的一种风格。如果一个架构符合REST原则,就称它为RESTful架构。 REST的三个要素是唯一的资源标识, 简单的方法, 一定的表达方式。REST是以资源为中心, 名词即资源的地址, 动词即施加于名词上的一些有限操作, 表达是对各种资源形态的抽象。 以HTTP为例, 名词 …...

进入阅读

序列化和反序列化解决方案

发布于:2015-07-26

什么是序列化和反序列化 序列化 (Serialization)将对象的状态信息转换为可以存储或传输的形式的过程,与之相对应的过程称之为反序列化(Unserialization)。序列化和反序列化主要用于解决在跨平台和跨语言的情况下, 模块之间的交互和调用,但其本质是为了解决数据传输问题。 早期的序列化和序列化解决方案中主要是文本协议的方案,即实现了对象和字符串之间的相互转换,然后在实际的传输过程中再将字符串转化为二进制数据,Xml、Json等等都是解决了对象与字符串之间的相互转换问题。 当大数据时代来临的时候, 大家发现基于XML, 甚至Json的文本协议的方案的传输效率很成问题 所 …...

进入阅读

使用PHP_CodeSniffer进行PHP代码规范检测

发布于:2015-07-09

PHP_CodeSniffer是什么 PHP_CodeSniffer是PEAR中的一个用PHP5写的用来检查嗅探PHP代码是否有违反一组预先设置好的编码标准的一个包,它是确保你的代码简洁一致的必不可少的开发工具,甚至还可以帮助程序员减少一些语义错误。 CodeSniffer内置MySource、PEAR、PHPCS、PSR1、PSR2、Squiz和Zend等几套代码规范。 PHP_CodeSniffer包含两个工具phpcs用来检查代码规范,phpcbf用来纠正代码规范。 安装PHP_CodeSniffer 如果你的WEB服务器上已经安装了PHP和PEAR,那么直接运行下列命令就可以安 …...

进入阅读

使用Composer进行PHP依赖管理

发布于:2015-06-30

Composer是什么 对于现代语言而言,包管理器基本上是标配。Java有Maven,Python有pip,Ruby有gem,Nodejs有npm。PHP的则是PEAR,不过PEAR坑不少。好在我们有Composer,Composer是PHP 的一个依赖管理工具。它是开源的,使用起来也很简单,提交自己的包也很容易。它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们。 Composer 不是一个包管理器。是的,它涉及 “packages” 和 “libraries”,但它在每个项目的基础上进行管理,在你项目的某个目录中( …...

进入阅读

算法研究(PHP版本)——拓扑排序问题

发布于:2015-06-02

问题 假设一个工程分为若干阶段,每个阶段需要耗费一定的天数,有些工程的开始必须以其他一个和多个工程的结束为前提。假设每次只能同时进行一个阶段,问如何安排执行工程的阶段确保工程能顺利的完成。 解决问题的思路 用一个有向图表示一个工程的各子工程及其相互制约的关系,其中以顶点表示活动,弧表示活动之间的优先制约关系,称这种有向图为顶点表示活动的网,简称AOV (Activity On Vertex network)网。 在AOV网没有回路的前提下,我们将全部活动排列成一个线性序,使得若AOV网中有弧<i,j>存在,则在这个序列中,,i一定排在j的前面,具有这种性质的线性序列称为拓扑有序序 …...

进入阅读

算法研究(PHP版本)——带权二分图最佳匹配问题

发布于:2015-05-13

问题 假设要给5位工人分配不同的5项工作,每位工人都能完成这5项工作,但是每一位工人完成不同工作能带来的效益是不一样的,如何分配工作能使得总效益达到最大值。 解决问题的思路 对于这个问题最容易想到的解决思路是请举所有的排列组合,然后计算总的效益后取最大值即可。上述问题的因子是5,5求全排列一共有120种组合,对于计算机而言,循环求120次求解不是很难的问题,效率也高,但是一旦问题变大,例如因子变为20,那么时间复杂度和空间复杂度都会呈现几何级数级别的上升。 上述问题可定义为寻找带权二分图最佳匹配,解决这个问题的著名算法是KM算法。 对KM算法的描述,基本上可以概括成以下几个步骤: 初始化可行 …...

进入阅读

算法研究(PHP版本)——最大匹配问题

发布于:2015-05-07

问题 假设某一婚介单位要给10位男生和10位女生安排1对1相亲,每个男生都有自己喜好的几位女生(喜好程度假设相同)。问如何进行男女匹配使得男生最大限度的能和自己喜好的女生进行约会,即使得能安排到喜好女生的男生数目最大。 解决问题的思路 此问题实质上是经典的二分图最大匹配问题,求解二分图最大匹配问题的一个算法是匈牙利算法。 匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名。匈牙利算法是基于Hall定理中充分性证明的思想,它是部图匹配最常见的算法,该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最大匹配的算法。 二分图以及匹配相关概念 二分图 简单来说,如果图中点可以被分 …...

进入阅读

算法研究(PHP版本)——妖怪与和尚过河问题

发布于:2015-03-09

问题 有三个和尚(或传教士)和三个妖怪(或食人怪)过河,只有一条能装下两个人(和尚或妖怪)的船,在河的任何一方或者船上,如果妖怪的人数大于和尚的人数,那么和尚就会有被吃掉的危险。你能不能找出一种安全的渡河方法呢? 解决问题的思路 题目的初始条件是三个和尚和三个妖怪在河的一边(还有一条船),解决问题后的终止条件是三个和尚和三个妖怪安全地过到河的对岸,如果把任意时刻妖怪和和尚的位置看作一个“状态”,则解决问题就是找到一条从初始状态变换到终止状态的路径。 从初始状态开始,每选择一批妖怪或和尚过河(移动一次小船),就会从原状态产生一个新的状态,如果以人类思维解决这个问题,每次都会选择最佳的妖怪与和尚组 …...

进入阅读

关于javascript原型与继承的那点事

发布于:2015-03-09

JavaScript中的对象、类、原型、原型链 真正意义上来说Javascript并不是一门面向对象的语言,没有提供传统的继承方式,但是它提供了一种原型继承的方式,利用自身提供的原型属性来实现继承。 JavaScript中并没有类和实例的概念(ECMAScript 6中出现了class关键字),全是对象。这指的是传统意义上的对象,也就是“一个包含了状态和行为的单一实体”。 通常我们会将function函数模仿“类”来使用,但是并不像在 C++、Java 或 C# 中了解的经典继承模式一样,JavaScript中的继承是通过原型和原型链的形式实现的。 在Javascript中,每 …...

进入阅读

算法研究(PHP版本)——三只水桶等分水问题

发布于:2015-03-05

问题 有一个容积为8升的水桶里装满了水,另外还有一个容积为3升的空桶和一个容积为5升的空桶,如何利用这两个空桶等分8升水?附加条件是三个水桶都没有体积刻度,也不能使用其它辅助容器。 解决问题的思路 如果我们把某一时刻三个水桶中存水的容积称为一个状态,则问题的初始状态是8升的水桶装满水,求解的解出状态(最终状态)是8升水桶中4升水,5升水桶中4升水。穷举法的实质就是把从初始状态开始,根据某种状态变化的规则搜索全部可能的状态,每当找到一个从初始状态到最终状态的变化路径,就可以理解为找到了一种答案。 这样的状态变化搜索的结果通常是得到一棵状态搜索树,根节点是初始状态,叶子节点可能是最终状态,也可能是 …...

进入阅读

分类

开发
    --go (9)
    --java (5)
    --php (11)
    --mysql (9)
    --javascript (3)
    --html (1)
    --算法 (6)
架构
    --理论 (9)
    --网络 (3)
    --服务器 (2)
    --消息队列 (3)
    --容器 (5)
    --监控 (1)
    --搜索引擎 (3)
    --大数据 (0)
    --测试 (1)
系统
    --linux (10)
    --mac (2)
    --windows (1)
足球
    --世界杯 (60)
    --欧洲杯 (28)
    --文迷 (3)
大学时光
    --校园生活 (96)
    --假期生活 (17)
    --广院杯那些事 (14)
    --北京奥运 (6)
    --胡思乱写 (17)


最近发布

零拷贝技术介绍

服务网格技术简介

C语言标准和标准库简介

Kubernetes简介及环境搭建

Go语言开发的顶级项目


归档

2006 (109)
2007 (40)
2008 (47)
2009 (10)
2010 (6)
2012 (10)
2013 (14)
2014 (27)
2015 (15)
2016 (6)
2017 (8)
2018 (11)
2019 (17)
2020 (5)