基础知识
文章平均质量分 83
一只IT小小鸟
还有很多未完成的梦,怎能停下脚步,加油!
展开
-
Go语言Web框架--Gin介绍和使用
所谓框架框架一直是敏捷开发中的利器,能让开发者很快的上手并做出应用,甚至有的时候,脱离了框架,一些开发者都不会写程序了。成长总不会一蹴而就,从写出程序获取成就感,再到精通框架,快速构造应用,当这些方面都得心应手的时候,可以尝试改造一些框架,或是自己创造一个。曾经我以为Python世界里的框架已经够多了,后来发现相比golang简直小巫见大巫。golang提供的net/http库已经很好...原创 2018-07-23 11:05:11 · 22670 阅读 · 0 评论 -
Go语言开发--select多路复用
golang 的 select 的功能与 select, poll, epoll 相似, 就是监听 IO 操作,当 IO 操作发生时,触发相应的动作。示例:ch1 := make (chan int, 1)ch2 := make (chan int, 1)...select {case <-ch1: fmt.Println("ch1 pop one elem...原创 2018-07-31 21:12:21 · 1043 阅读 · 0 评论 -
数据库--五大约束
五大约束 主键约束(Primary Key Constraint) 唯一性,非空性 唯一约束(Unique Constraint) 唯一性,可以空(但只能有一个) 检查约束(Check Constraint) 对该列数据的范围、格式的限制(如:年龄,性别等) 默认约束(Default Constraint)该列数据的默认值 外键约束(Foreign Key Constrain...原创 2018-08-07 22:44:40 · 556 阅读 · 0 评论 -
为什么使用 Redis ?
Redis特点 Redis是一个高性能(支持并发11万读8万写)的key-value存储系统。 支持丰富的存储value类型,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。 Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。 虽然运行在内存,...原创 2018-08-08 11:55:08 · 6567 阅读 · 0 评论 -
数据库--索引详解
索引概述数据库索引是用于提高数据库表的数据访问速度的。想要理解索引原理必须清楚一种数据结构「平衡树」(非二叉),也就是b tree或者 b+ tree,重要的事情说三遍:“平衡树,平衡树,平衡树”。当然, 有的数据库也使用哈希桶作用索引的数据结构 。然而,主流的RDBMS都是把平衡树当做数据表默认的索引数据结构的。索引特点 避免进行数据库全表的扫描,大多数情况,只需要扫描较少的索引页和...原创 2018-08-08 22:34:52 · 16535 阅读 · 1 评论 -
Kafka--原理详解
kafka简介kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。为什么需要消息队列解耦:允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。 冗余:消息队列把数据进行持久化直...原创 2018-08-08 23:04:14 · 375 阅读 · 0 评论 -
ELK原理与介绍
为什么用到ELK:ELK官网:https://www.elastic.co/ ELK官网文档:https://www.elastic.co/guide/index.html ELK中文手册:http://kibana.logstash.es/content/elasticsearch/monitor/logging.html一般我们需要进行日志分析场景:直接在日志文件中 grep、awk...原创 2018-08-27 14:46:37 · 385 阅读 · 0 评论 -
SQL语言--语句优化总结
概要性能不理想的系统中除了一部分是因为应用程序的负载确实超过了服务器的实际处理能力外,更多的是因为系统存在大量的SQL语句需要优化。为了获得稳定的执行性能,SQL语句越简单越好。对复杂的SQL语句,要设法对之进行简化。常见的简化规则如下: 不要有超过5个以上的表连接(JOIN) 考虑使用临时表或表变量存放中间结果。 少用子查询 视图嵌套不要过深,一般视图嵌套不要超过2个...原创 2018-08-20 14:24:22 · 12015 阅读 · 1 评论 -
ElasticSearch入门--索引
ElasticSearch介绍ElasticSearch是文档型数据库,索引(Index)定义了文档的逻辑存储和字段类型,每个索引可以包含多个文档类型,文档类型是文档的集合,文档以索引定义的逻辑存储模型,比如,指定分片和副本的数量,配置刷新频率,分配分析器等,存储在索引中的海量文档分布式存储在ElasticSearch集群中。ElasticSearch是基于Lucene框架的全文搜索引擎,...原创 2018-08-27 21:14:26 · 3056 阅读 · 0 评论 -
Go语言--函数作为值-类型-返回值、匿名函数、闭包
概要地球人都知道:函数只是一段可执行代码,编译后就“固化”了,每个函数在内存中只有一份实例,得到函数的入口点便可以执行函数了。go语言中函数可以作为另一个函数的参数或返回值,可以赋给一个变量。函数可以嵌套定义(使用匿名函数),即在一个函数内部可以定义另一个函数,有了嵌套函数这种结构,便会产生闭包问题。闭包是一个函数值,他来自函数体外部的变量引用。下面分别介绍:Go中的函数、函数作为值与类型...原创 2018-08-21 11:08:08 · 3491 阅读 · 1 评论 -
ElasticSearch索引--查询使用指南
1. 我们通常用_cat api检测集群是否健康。 确保9200端口号可用: curl 'localhost:9200/_cat/health?v'绿色表示一切正常, 黄色表示所有的数据可用但是部分副本还没有分配,红色表示部分数据因为某些原因不可用. 2. 通过如下语句,我们可以获取集群的节点列表:curl 'localhost:9200/_cat/nodes?v'...原创 2018-08-28 16:38:05 · 3157 阅读 · 0 评论 -
Go包管理--godep
关于Godepgolang设计者最初过于乐观的设计使得今天大 家不得不各自想办法解决这个问题。godep就是综合了多年第三方包依赖问题的解决方案后的一个趋向统一的方案,至少是在go get的设计没有进化前的一个比较不错的方案。发现好多golang项目都使用到godep作为包管理的工具,像比较大型的项目,比如kubernetes这种,都是使用的是godep来进行依赖管理操作的了,看了一下有点像m...原创 2018-11-06 16:40:40 · 2352 阅读 · 0 评论 -
Go语言开发--基本命令及使用
Go命令一般格式:go command [arg]其中,command是操作命令,arg是该命令的参数。常用命令Go的常用命令有:get、run、build、fmt、install、test等(1) go getgo get 命令主要是用来动态获取远程代码包的,目前支持的有BitBucket、GitHub、Google Code和Launchpad。这个命令在内部实际上分...原创 2018-07-31 20:55:20 · 502 阅读 · 0 评论 -
Go语言Web服务--RPC编程
概要前面几篇博客我们介绍了如何基于Socket和HTTP来编写网络应用,通过学习我们了解了Socket和HTTP采用的是类似"信息交换"模式,即客户端发送一条信息到服务端,然后(一般来说)服务器端都会返回一定的信息以表示响应。客户端和服务端之间约定了交互信息的格式,以便双方都能够解析交互所产生的信息。但是很多独立的应用并没有采用这种模式,而是采用类似常规的函数调用的方式来完成想要的功能。R...原创 2018-07-22 22:05:51 · 1730 阅读 · 1 评论 -
Go语言database/sql包--学习笔记
概述sql.DB不是一个连接,它是数据库的抽象接口。它可以根据driver打开关闭数据库连接,管理连接池。正在使用的连接被标记为繁忙,用完后回到连接池等待下次使用。所以,如果你没有把连接释放回连接池,会导致过多连接使系统资源耗尽。导入driver这里使用的是MySQL driversimport ( "database/sql" _ "github.com/go-...原创 2018-07-23 11:52:14 · 1655 阅读 · 0 评论 -
Go语言--函数与方法区别
概述接触到go之前,我认为函数和方法只是同一个东西的两个名字而已。但是在go中是两个不同的东西。官方解释:一个方法就是一个包含了接收者的函数。接收者可以是命名类型或者结构体类型的一个值或者是一个指针。所有给定类型的方法属于该类型的方法集。区别:对于普通函数:接收者(函数参数)为值类型时,不能将指针类型的数据直接传递,反之亦然。func function_name( [parameter list]...原创 2018-07-13 10:27:54 · 3293 阅读 · 0 评论 -
MySQL数据库--命令行操作
查看服务器mysql服务有没有开启:ps -ef | grep mysql登录到MySQL:mysql -h 主机名 -u 用户名 -p-h : 该命令用于指定客户端所要登录的MySQL主机名, 登录当前机器该参数可以省略;-u : 所要登录的用户名;-p : 告诉服务器将会使用一个密码来登录, 如果所要登录的用户名密码为空, 可以忽略此选项。一 查看数据库、表、数...原创 2018-07-24 23:05:43 · 54808 阅读 · 10 评论 -
Go语言基础--Printf格式化输出、Scanf格式化输入详解
几种输出方式的区别Print、Println 、Printf 、Sprintf 、Fprintf都是fmt 包中的公共方法,在需要打印信息时需要用到这些函数,那么这些函数有什么区别呢?Print: 输出到控制台(不接受任何格式化,它等价于对每一个操作数都应用 %v) fmt.Print(str)Println: 输出到控制台并换行 fmt.Pri...原创 2018-07-29 00:39:08 · 42549 阅读 · 3 评论 -
SQL--快速参考
SQL 是用于访问和处理数据库的标准的计算机语言。什么是 SQL?SQL 指结构化查询语言 SQL 使我们有能力访问数据库 SQL 是一种 ANSI 的标准计算机语言SQL 能做什么?SQL 面向数据库执行查询 SQL 可从数据库取回数据 SQL 可在数据库中插入新的记录 SQL 可更新数据库中的数据 SQL 可从数据库删除记录 SQL 可创建新数据库 SQL 可在数...原创 2018-07-30 10:34:17 · 465 阅读 · 0 评论 -
Go语言Web基础--Web工作方式
背景学习基于Web的编程,通过Go来编写Web应用。Go目前已经拥有成熟的HTTP处理包,这使得编写能够做任何事清的动态web程序易如反掌。Web工作原理我们平时浏览网页的时候,会打开浏览器,输入网址后按下回车键,然后就会显示出你想要浏览的内容。在这个看似简单的用户行为背后,到底隐藏了些什么呢?对于普通的上网过程,系统其实是这样做的:浏览器本身是一个客户端,当你输入URL的时候,首...原创 2018-07-22 19:10:08 · 2314 阅读 · 0 评论 -
Go语言开发--Redis的使用
理论知识Redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库。Redis 优势性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。 原子 – ...原创 2018-07-30 17:59:57 · 2193 阅读 · 0 评论 -
Go语言Web基础--Go如何使得Web工作
Go搭建一个Web服务器前面小节已经介绍了Web是基于http协议的一个服务,Go语言里面提供了一个完善的net/http包,通过http包可以很方便的就搭建起来一个可以运行的Web服务。同时使用这个包能很简单地对Web的路由,静态文件,模版,cookie等数据进行设置和操作。http包建立Web服务器package mainimport ( "fmt" "net...原创 2018-07-22 19:34:27 · 11678 阅读 · 0 评论 -
Go语言Web基础--Go的http包详解
概要前面介绍了Go怎么样实现了Web工作模式的一个流程,这里,我们将详细地解剖一下http包,看它到底是怎样实现整个过程的。Go的http有两个核心功能:Conn、ServeMuxConn的goroutine与我们一般编写的http服务器不同, Go为了实现高并发和高性能, 使用了goroutines来处理Conn的读写事件, 这样每个请求都能保持独立,相互不会阻塞,可以高效的响应...原创 2018-07-22 20:13:37 · 6087 阅读 · 3 评论 -
Go语言Web服务--Socket编程
Web服务Web服务可以让你在HTTP协议的基础上通过XML或者JSON来交换信息。如果你想知道上海的天气预报、中国石油的股价或者淘宝商家的一个商品信息,你可以编写一段简短的代码,通过抓取这些信息然后通过标准的接口开放出来,就如同你调用一个本地函数并返回一个值。Web服务背后的关键在于平台的无关性,你可以运行你的服务在Linux系统,可以与其他Window的asp.net程序交互,同样的,...原创 2018-07-22 20:59:33 · 2236 阅读 · 0 评论 -
Go语言Web服务--WebSocket编程
WebSocketWebSocket是HTML5的重要特性,它实现了基于浏览器的远程socket,它使浏览器和服务器可以进行全双工通信,许多浏览器(Firefox、Google Chrome和Safari)都已对此做了支持。在WebSocket出现之前,为了实现即时通信,采用的技术都是“轮询”,即在特定的时间间隔内,由浏览器对服务器发出HTTP Request,服务器在收到请求后,返回最...原创 2018-07-22 21:20:58 · 4594 阅读 · 2 评论 -
Go语言Web服务--REST编程
背景RESTful,是目前最为流行的一种互联网软件架构。因为它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用。本小节我们将来学习它到底是一种什么样的架构?以及在Go里面如何来实现它。什么是REST ?REST(REpresentational State Transfer)这个概念,首次出现是在 2000年Roy Thomas Fielding(他是HTTP规范的...原创 2018-07-22 21:46:01 · 1805 阅读 · 0 评论 -
并发编程--综述
概述并发编程:是一种现代计算机编程技术。可以是多进程编程、多线程编程、还可以是编写分布式程序。主要思想并发这个概念由来已久,其主要思想是:使多个任务可以在同一时间段内执行,以便能够更快地得到结果。并发编程的思想来源于多任务操作系统,它允许同时运行多个程序。在早期的单用户操作系统中,任务是一个接一个运行的,完全串行。而多任务操作系统则允许终端用户同时运行多个程序,当一个程序不需要使用...原创 2019-08-18 19:06:21 · 226 阅读 · 0 评论