自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一只IT小小鸟

还有很多未完成的梦,怎能停下脚步,加油!

  • 博客(93)
  • 资源 (17)
  • 收藏
  • 关注

原创 SQL--快速参考

SQL 是用于访问和处理数据库的标准的计算机语言。什么是 SQL?SQL 指结构化查询语言 SQL 使我们有能力访问数据库 SQL 是一种 ANSI 的标准计算机语言SQL 能做什么?SQL 面向数据库执行查询 SQL 可从数据库取回数据 SQL 可在数据库中插入新的记录 SQL 可更新数据库中的数据 SQL 可从数据库删除记录 SQL 可创建新数据库 SQL 可在数...

2018-07-30 10:34:17 465

原创 Go语言基础--Printf格式化输出、Scanf格式化输入详解

几种输出方式的区别Print、Println 、Printf 、Sprintf 、Fprintf都是fmt 包中的公共方法,在需要打印信息时需要用到这些函数,那么这些函数有什么区别呢?Print: 输出到控制台(不接受任何格式化,它等价于对每一个操作数都应用 %v) fmt.Print(str)Println: 输出到控制台并换行 fmt.Pri...

2018-07-29 00:39:08 42550 3

原创 MySQL数据库--命令行操作

查看服务器mysql服务有没有开启:ps -ef | grep mysql登录到MySQL:mysql -h 主机名 -u 用户名 -p-h : 该命令用于指定客户端所要登录的MySQL主机名, 登录当前机器该参数可以省略;-u : 所要登录的用户名;-p : 告诉服务器将会使用一个密码来登录, 如果所要登录的用户名密码为空, 可以忽略此选项。一 查看数据库、表、数...

2018-07-24 23:05:43 54810 10

原创 Go语言database/sql包--学习笔记

概述sql.DB不是一个连接,它是数据库的抽象接口。它可以根据driver打开关闭数据库连接,管理连接池。正在使用的连接被标记为繁忙,用完后回到连接池等待下次使用。所以,如果你没有把连接释放回连接池,会导致过多连接使系统资源耗尽。导入driver这里使用的是MySQL driversimport ( "database/sql" _ "github.com/go-...

2018-07-23 11:52:14 1655

原创 Go语言Web框架--Gin介绍和使用

所谓框架框架一直是敏捷开发中的利器,能让开发者很快的上手并做出应用,甚至有的时候,脱离了框架,一些开发者都不会写程序了。成长总不会一蹴而就,从写出程序获取成就感,再到精通框架,快速构造应用,当这些方面都得心应手的时候,可以尝试改造一些框架,或是自己创造一个。曾经我以为Python世界里的框架已经够多了,后来发现相比golang简直小巫见大巫。golang提供的net/http库已经很好...

2018-07-23 11:05:11 22673

原创 Go语言Web服务--RPC编程

概要前面几篇博客我们介绍了如何基于Socket和HTTP来编写网络应用,通过学习我们了解了Socket和HTTP采用的是类似"信息交换"模式,即客户端发送一条信息到服务端,然后(一般来说)服务器端都会返回一定的信息以表示响应。客户端和服务端之间约定了交互信息的格式,以便双方都能够解析交互所产生的信息。但是很多独立的应用并没有采用这种模式,而是采用类似常规的函数调用的方式来完成想要的功能。R...

2018-07-22 22:05:51 1730 1

原创 Go语言Web服务--REST编程

背景RESTful,是目前最为流行的一种互联网软件架构。因为它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用。本小节我们将来学习它到底是一种什么样的架构?以及在Go里面如何来实现它。什么是REST ?REST(REpresentational State Transfer)这个概念,首次出现是在 2000年Roy Thomas Fielding(他是HTTP规范的...

2018-07-22 21:46:01 1805

原创 Go语言Web服务--WebSocket编程

 WebSocketWebSocket是HTML5的重要特性,它实现了基于浏览器的远程socket,它使浏览器和服务器可以进行全双工通信,许多浏览器(Firefox、Google Chrome和Safari)都已对此做了支持。在WebSocket出现之前,为了实现即时通信,采用的技术都是“轮询”,即在特定的时间间隔内,由浏览器对服务器发出HTTP Request,服务器在收到请求后,返回最...

2018-07-22 21:20:58 4594 2

原创 Go语言Web服务--Socket编程

Web服务Web服务可以让你在HTTP协议的基础上通过XML或者JSON来交换信息。如果你想知道上海的天气预报、中国石油的股价或者淘宝商家的一个商品信息,你可以编写一段简短的代码,通过抓取这些信息然后通过标准的接口开放出来,就如同你调用一个本地函数并返回一个值。Web服务背后的关键在于平台的无关性,你可以运行你的服务在Linux系统,可以与其他Window的asp.net程序交互,同样的,...

2018-07-22 20:59:33 2236

原创 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基础--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

原创 Go语言Web基础--Web工作方式

背景学习基于Web的编程,通过Go来编写Web应用。Go目前已经拥有成熟的HTTP处理包,这使得编写能够做任何事清的动态web程序易如反掌。Web工作原理我们平时浏览网页的时候,会打开浏览器,输入网址后按下回车键,然后就会显示出你想要浏览的内容。在这个看似简单的用户行为背后,到底隐藏了些什么呢?对于普通的上网过程,系统其实是这样做的:浏览器本身是一个客户端,当你输入URL的时候,首...

2018-07-22 19:10:08 2314

原创 Git 基础知识

概述Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。Git 与 SVN 区别GIT不仅仅是个版本控制系统,它也是个内容管...

2018-07-19 12:14:56 906

原创 Go语言--函数与方法区别

概述接触到go之前,我认为函数和方法只是同一个东西的两个名字而已。但是在go中是两个不同的东西。官方解释:一个方法就是一个包含了接收者的函数。接收者可以是命名类型或者结构体类型的一个值或者是一个指针。所有给定类型的方法属于该类型的方法集。区别:对于普通函数:接收者(函数参数)为值类型时,不能将指针类型的数据直接传递,反之亦然。func function_name( [parameter list]...

2018-07-13 10:27:54 3293

原创 Go语言并发与并行--goroutine和channel和deadlock详解

概述进程,线程的概念在操作系统的书上已经有详细的介绍。进程是内存资源管理和cpu调度的执行单元。为了有效利用多核处理器的优势,将进程进一步细分,允许一个进程里存在多个线程,这多个线程还是共享同一片内存空间,但cpu调度的最小单元变成了线程。那协程又是什么东西,以及与线程的差异性?协程,可以看作是轻量级的线程。但与线程不同的是,线程的切换是由操作系统控制的,而协程的切换则是由用户控制的。最早支持协程...

2018-07-12 23:58:55 2243

原创 STL源码学习系列九: 序列式容器( Deque)

序列式容器( Deque)概述deque是一种双向开口的分段连续线性空间,可以在头尾端进行元素的插入和删除。 deque与vector最大的差异就是:第一是deque允许于常数时间内对头端进行插入或删除元素;第二是deque是分段连续线性空间,随时可以增加一段新的空间;deque不像vector那样,vector当内存不够时,需重新分配/复制数据/释放原始空间;不过deque...

2018-06-16 20:48:00 334

原创 STL源码学习系列八: 序列式容器( List)

序列式容器( List)前言在SGI STL中,list容器是一个循环的双向链表,它的内存空间效率较前文介绍的vector容器高。相对于 vector 的连续线性空间,list 就显得复杂许多,他的好处是每次插入和删除一个元素,就配置和释放一个元素空间。因此,list 对于空间的运用有绝对的精准,一点也不浪费。而且,对于任何位置的元素插入或元素移除,list 永远是常数时间。与ve...

2018-06-13 23:23:22 333

原创 STL源码学习系列七: 序列式容器( Vector )

序列式容器(Vector)前言在STL编程中,我们最常用到的就是容器,容器可分为序列容器和关联容器;本文记录的是我们经常使用的序列容器之vector,vector的数据安排和操作方式类似于C++内置数组类型array,唯一的区别就是在于空间的灵活运用。内置数组array是静态空间,一旦分配了内存空间就不能改变,而vector容器可以根据用户数据的变化而不断调整内存空间的大小。v...

2018-06-04 22:21:38 360

原创 STL源码学习系列六: 算法(Algorithm)

算法(Algorithm)前言以有限的步骤,解决逻辑或数学上的问题,这一专门科目称为算法(Algorithm)。广而言之,我们所写的每一个程序都是一个算法,其中的每个函数也都是一个算法。当我们发现一个可以解决问题的算法时,下一个重要的步骤就是决定该算法所耗的资源,包括空间时间。STL算法部分主要是由三个头文件承担: algorithm、numeric、functional...

2018-05-29 22:30:05 1581

原创 STL源码学习系列五: 内存处理工具(construct,destroy,uninitialized_copy,uninitialized_fill,uninitialized_fill)

内存处理工具–五个全局函数(construct(),destroy(),uninitialized_copy(),uninitialized_fill(),uninitialized_fill)前言在STL中,内存处理时很关键的,特别是对于容器的实现,内存处理相当的重要。为了实现内存配置跟对象的构造行为分离开来,STL定义的五个基本全局函数,这五个全局函数中,贯穿在里面的基本上是T...

2018-05-24 17:06:40 742

原创 STL源码学习系列四: 迭代器(Iterator)

迭代器(Iterator)前言在STL的思想中,容器和算法是彼此独立设计的,再通过某种方式使它们连接;而迭代器是使算法独立于使用的容器类型,即迭代器是连接算法和容器的方法。由于迭代器是一种行为类似指针的对象,也就说迭代器是一种广义指针,即迭代器对解除引用操作(operator*)和访问成员操作(operator->)进行重载。然而要对这两个操作符进行重载,对容器内部对象的数据...

2018-05-23 22:43:39 6140

原创 STL源码学习系列三: 编程技法(Traits)

Traits编程技法前言Traits编程技术是STL中最重要的编程技术,Traits可以获取一个类型的相关信息。在C/C++中可以使用sizeof()来获取变量的大小,但是如果想获取变量的类型,却没有typeof()这样的函数,而Traits编程技法就是为了实现typeof()的功能,这种功能主要可以用于迭代器相应型别的设计上。Traits编程Traits可以获取一...

2018-05-23 20:13:19 483

原创 STL源码学习系列二: 空间配置器(Allocator)

STL空间适配器侯捷在《STL源码剖析》一书讲到: 因此我们需要先去学习空间配置器。这是STL学习的第一部分,空间适配器,所谓空间适配器,就是用来管理内存的一个器具。对于STL来说,空间适配器是它可以正常工作的基础,也为它可以高效工作提供了动力。对于使用STL来说,它是不和用户直接打交道的,而是隐藏在一切STL组建之后,默默为各种内存申请提供支持的。 对于c++用户来说,...

2018-05-22 23:41:44 384

原创 STL源码学习系列一: 理论基础(Theory)

STL标准模板库STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称。现然主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间。 STL的从广义上讲分为三类: algorithm(算法) container(容器) iterator(迭代器)容器和算法通过迭代器可以进行无缝地连接。几乎所有的...

2018-05-21 23:00:03 428

原创 二叉树遍历:递归--非递归(前序、中序、后序)

二叉树遍历:递归–非递归(前序、中序、后序)【写在前面】   二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就 是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。而对于树的遍历若采用非递归的方法,就要采用栈去模拟实现。在三种遍历 中,前序和中序遍历的非递归算法都很容易实现...

2018-04-18 15:24:29 210

原创 Hexo+Github 搭建属于自己的博客

个人博客界面:首先呢,先说一下吧,作为一个程序猿来说,大多的大牛都是使用的是msdn/github这些来交流技术,但是我后来发现csdn上面好多的大牛都已经摒弃csdn,自己搭建个人博客进行发表文章记录点滴了。虽然说我不会放弃csdn,因为已经养成了习惯了,但是还是想拥有一个自己的博客,那是因为这是一种信仰。今天呢,花了一天的时候,研究了一下,颇有收获。搭建个人博客=域名(...

2018-03-30 23:38:10 2556

原创 动态规划--树形DP

动态规划--树形DP 1、什么是树型动态规划 顾名思义,树型动态规划就是在“树”的数据结构上的动态规划,平时作的动态规划都是线性的或者是建立在图上的,线性的动态规划有二种方向既向前和向后,相应的线性的动态规划有二种方法既顺推与逆推,而树型动态规划是建立在树上的,所以也相应的有二个方向:     1、叶->根:在回溯的时候从叶子节点往上更新信息    2、根 - >叶:往往是在从叶往根d...

2018-03-26 22:50:32 2794

原创 动态规划--区间DP

动态规划--区间DP所谓区间dp,顾名思义就是在一段区间上的动态规划。它既要满足dp问题的最优子结构和无后效性外,还应该符合在区间上操作的特点。我的理解是往往会对区间进行合并操作。亦或是单个元素(可看成一个小区间)跨区间进行操作。例如括号匹配问题,石子合并问题(通过多次的相邻合并,最后实质上会产生跨区间的合并,如果你把其中的石子看作参考系的话就很容易感觉出来),还有在整数中插入运算符号的问题(利用...

2018-03-25 16:16:50 650

原创 动态规划--最长递增子序列(LIS)-最长公共子序列(LCS)

动态规划--最长递增子序列(LIS)-最长公共子序列(LCS)LIS最长递增子序列,朴素的是o(n^2)算法,二分下可以写成o(nlgn):维护一个当前最优的递增序列——找到恰好大于它更新LCS最长公共子序列,通常o(n^2)的算法************************************************************************************...

2018-03-24 22:03:51 445

原创 动态规划--背包

背包分类:0-1背包、完全背包、分组背包、多重背包。 01背包(ZeroOnePack):有N件物品和一个容量为V的背包。每种物品均只有一件。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。完全背包(CompletePack):有N种物品和一个容量为V的背包,每种物品都有无限件可用。第i种物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可...

2018-03-24 17:21:42 243

原创 动态规划--简单递推

动态规划一直是ACM竞赛中的重点,同时又是难点,因为该算法时间效率高,代码量少,多元性强,主要考察思维能力、建模抽象能力、灵活度。*************************************************************************************************************动态规划(英语:Dynamic programmin...

2018-03-24 14:24:27 974

原创 进程调度-作业调度: 先来先服务--短作业优先--响应比高算法

进程调度-作业调度: 先来先服务--短作业优先--响应比高算法1.调度的概念1. 调度的基本概念在多道程序系统中,进程的数量往往多于处理机的个数,进程争用处理机的情况就在所难免。处理机调度是对处理机进行分配,就是从就绪队列中,按照一定的算法(公平、髙效)选择一个进程并将处理机分配给它运行,以实现进程并发地执行。 处理机调度是多道程序操作系统的基础,它是操作系统设计的核心问题。 2. 调度的层次一个...

2018-03-10 18:26:05 22734 10

原创 避免死锁: 银行家算法

避免死锁: 银行家算法1.背景在银行中,客户申请贷款的数量是有限的,每个客户在第一次申请贷款时要声明完成该项目所需的最大资金量,在满足所有贷款要求时,客户应及时归还。银行家在客户申请的贷款数量不超过自己拥有的最大值时,都应尽量满足客户的需要。在这样的描述中,银行家就好比操作系统,资金就是资源,客户就相当于要申请资源的进程。2.死锁概念死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼...

2018-03-10 17:32:18 23876 3

原创 页式存储管理: 最佳置换(OPT)--先进先出页面置换(FIFO)--最久未使用置换(LRU)

页式存储管理: 最佳置换--先进先出页面置换--最久未使用置换1.背景进程运行时,若其访问的页面不在内存而需将其调入,但内存已无空闲空间时,就需要从内存中调出一页程序或数据,送入磁盘的对换区。选择调出页面的算法就称为页面置换算法。好的页面置换算法应有较低的页面更换频率,也就是说,应将以后不会再访问或者以后较长时间内不会再访问的页面先调出。2.置换策略理论1. 最佳置换算法(OPT)最佳(Optim...

2018-03-10 16:27:20 22015 3

原创 动态分区存储管理: 首次适应--最佳适应-最坏适应算法

动态分区存储管理: 首次适应--最佳适应-最坏适应算法1.背景多个应用程序请求主存空间是一个多对多的问题,在分区存储分配方法中由多个空闲区组成了空闲队列。对一个要进入主存的应用程序而言,主存分配程序在多个空闲区中选择那一个给该应用程序这就是一个放置 策略问题。2.理论分析空闲区队列的排序原则就体现了选择一个空闲区的策略。这个队列可以是无序的,即按照主存块释放的先后顺序排列。也可以按照某种分类方法进...

2018-03-10 15:24:53 28927 13

原创 数值积分: 梯形规则--复合梯形规则--辛普森规则--复合辛普森规则--龙贝格求积公式

数值积分:梯形规则--复合梯形规则--辛普森规则--复合辛普森规则--龙贝格求积公式1.问题描述微积分方法求积有很大的局限性,当碰到被积函数很复杂时,找不到相应的原函数。积分值在几何上可解释为由 x=a,x=b,y=0和y=f(x) 所围成的曲边梯形的面积。积分计算之所以有困难,就是因为这个曲边梯形有一条边y=f(x)是曲线。2.理论与方法依据积分中值定理,底为b-a,而高为f(e)的矩形面积恰等...

2018-03-09 21:48:49 25231 4

原创 插值方法: 拉格朗日插值--逐步插值的自适应算法

插值方法: 拉格朗日插值--逐步插值的自适应算法1.问题描述所谓插值,就是设法利用已给数据表求出给定点x的函数值y.表中的数据点称为插值节点,所要插值的点x称插值点。插值计算的目的在于,通过尽可能简便的方法,利用所给数据表加工出插值点x上具有足够精度的插值结果y.在这种意义,插值过程是个数据加工的过程。2.理论与方法Largrange 插值,回顾我们之前的多项式插值多项式的系数与所给的数据点并没有...

2018-03-09 20:54:36 5475 1

原创 数据拟合: 直线拟合--多项式拟合

数据拟合: 直线拟合--多项式拟合1.问题概述在实际问题中,常常需要从一组观察数据       (xi,yi)  i=1,2,,..,n去预测函数 y=f(x) 的表达式,从几何角度来说,这个问题就是要由给定的一组数据点(xi,yi)去描绘曲线 y=f(x) 的近似图像。插值方法是处理这类问题的一种数值方法。不过,由于插值曲线要求严格通过所给的每一个数据点,这种限制会保留所给数据的误差。如果个别数...

2018-03-09 20:13:11 21100

原创 求解线性方程组: 高斯消元--LU分解--Jacobi迭代--高斯赛德尔--sor超松弛迭代

求解线性方程组: 高斯消元--LU分解--Jacobi迭代--高斯赛德尔--sor超松弛迭代1.问题概述假定线性方程组     是一个最基本的计算模型,它在科学与工程计算中扮演着极其重要的角色。在解决此线性方程组时,我们首先想到的是线性代数课程中的求解方法,然而对于计算机来说,这是很难实现的,所以我们应当对此方法进行变形拓展。随着未知数个数的增加,求解就会变得越来越困难,当n很大时,用手工计算已经...

2018-03-09 19:02:41 4497

原创 方程求根:二分法--不动点迭代--牛顿法--弦截法

方程求根:二分法--不动点迭代--牛顿法--弦截法1.问题概述    许多复杂的求解问题,都可以转换成方程f(x)=0的求解问题。这一系列的解叫做方程的根。对于非线性方程的求解,在自变量范围内往往有多个解,我们将此变化区域分为多个小的子区间,对每个区间进行分别求解。我们在求解过程中,选取一个近似值或者近似区间,然后运用迭代方法逐步逼近真实解。2.理论与方法1.二分法(Bisection Metho...

2018-03-09 11:41:54 18030

大数据--大数据科学基础

大数据 大数据科学基础

2017-08-09

人工智能--循环神经网络

人工智能--循环神经网络详解

2017-08-09

人工智能--深度学习应用

人工智能--深度学习应用

2017-08-09

人工智能--卷积神经网络

人工智能--卷积神经网络详解

2017-08-09

人工智能--Pre-training and Generative Models

人工智能--Pre-training and Generative Models

2017-08-09

人工智能--Deep Neural Networks

人工智能--Deep Neural Networks详解

2017-08-09

人工智能--Deep Learning

人工智能 Deep Learning 详解

2017-08-09

大数据--SQL and pySpark

大数据--SQL and pySpark 对比分析

2017-08-09

大数据-- Apache Spark Semi-Structured data

大数据-- Apache Spark Semi-Structured data

2017-08-09

大数据--Apache Spark编程详解

大数据--Apache Spark编程详解

2017-08-09

大数据--Apache Spark实用详解

大数据--Apache Spark实用详解

2017-08-09

人工智能-- recommender systems

人工智能-- recommender systems详解

2017-08-09

人工智能--Machine learning

人工智能--Machine learning详解

2017-08-09

大数据--Hadoop MapReduce

大数据--Hadoop MapReduce详解

2017-08-09

大数据--Hadoop HDFS

大数据--Hadoop HDFS详解

2017-08-09

大数据--Apache Spark

大数据--Apache Spark

2017-08-09

大数据--基础数据科学详解

大数据--基础数据科学详解

2017-08-09

空空如也

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

TA关注的人

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