- 博客(1987)
- 资源 (718)
- 收藏
- 关注
原创 并发技术2:多协程
创建Goroutineimport ( "fmt" "time")func newTask() { for { fmt.Println("劳资是子协程") time.Sleep(time.Second) }}func main() { //开一条协程,与主协程并发地执行newTask() go newTask() //主协程赖着不死,主协程如果死了,子协程也...
2018-11-16 09:33:44 317
原创 图形用户界面1:初识Walk
GO语言的图形界面库Walk简介GO没有原生的界面库,所以不能直接用来写GUI界面。但最近互联网上已经涌现出不少成熟、好用的第三方界面库。使用它们,就同样可以写出同C#、C++的界面。而且效率还更胜一筹。关于Walk界面库(官方介绍):Walk是一个写给Golang的Window应用程序库套件,它主要用于桌面GUI的开发,但也有更多的东西。###安装Walk在浏览这部分前,请确定已经配置安...
2018-11-16 09:33:10 1103
原创 Go语言项目实战:多人聊天室
功能需求实现单撩实现群撩实现用户上线的全网通知实现用户昵称实现聊天日志的存储和查看服务端实现type Client struct { conn net.Conn name string addr string}var ( //客户端信息,用昵称为键 //clientsMap = make(map[string]net.Conn) clientsMap = mak...
2018-11-16 09:32:24 3021
原创 图形用户界面2:常用控件
认识几种常用控件按钮菜单工具栏界面布局列表显示图片导入依赖import ( "github.com/lxn/walk" . "github.com/lxn/walk/declarative" "os" "strings" "io/ioutil" "fmt" "log")定义全局数据// 全局应用的菜单项var myAction
2018-11-16 09:31:54 569
原创 并发技术3:管道通信
#channel 介绍channel 提供了一种通信机制,通过它,一个 goroutine 可以想另一 goroutine 发送消息。channel 本身还需关联了一个类型,也就是 channel 可以发送数据的类型。例如: 发送 int 类型消息的 channel 写作 chan int 。#channel 创建channel 使用内置的 make 函数创建,下面声明了一个 chan in...
2018-11-16 09:31:25 308
原创 并发技术5:死锁问题
1. 同一个goroutine中,使用同一个 channel 读写package mainfunc main(){ ch:=make(chan int) //这就是在main程里面发生的死锁情况 ch<-6 // 这里会发生一直阻塞的情况,执行不到下面一句 <-ch}这是最简单的死锁情况看运行结果1. 2个 以上的go程中, 使用同一个 ...
2018-11-16 09:30:37 356
原创 并发技术4:同步调度
等待组在此之前,我们让主协程等待子协程结束的方式都是睡眠,睡足子协程需要的时间,这种方式显然是不理想的!等待组(sync.WaitGroup)的原理是:每增加一个子协程,就向等待组中+1,每结束一个协程,就从等待组中-1,主协程会阻塞等待直到组中的协程数等于0为止;这种方式可以令主协程恰好结束在最后一个子协程结束的时间点上,Perfect!互斥锁案例1在很多情境中,数据是不允许并...
2018-11-16 09:29:54 382
原创 MySQL数据库6:Go与MySQL事务
事务概念事务是将批量增删改操作视为一个整体,作为一个整体,它们要么全部成功,要么全部失败——这一特性称为事务的原子性(原子是不可再分割的);事务的应用场景很多,例如在一次电商的交易中,只有资金出入表、物流表、交易记录表、订单表、购物车表等一系列表的数据变动全部严丝合缝分毫不差时,才能视为交易成功,此时可以提交事务;只要有一点对不上号的地方,本次交易就不能视为成功,所有的数据应全部回滚至交易...
2018-11-16 09:27:53 462
原创 并发技术3:定时器
定时器概述Go为我们提供了两种不同方式的计时器:定时执行任务的计时器周期性执行任务的计时器固定时间定时器下面的例子演示了如何使用定时器延时2秒执行一项任务func main() { //创建2秒的定时器 timer := time.NewTimer(2*time.Second) //当前时间: 2018-09-25 19:17:16.8050379 +0800 CST m=+...
2018-11-16 09:15:50 379 1
原创 并发技术4:读写锁
读写锁概述除了上一篇提到的互斥锁以外,Go语言还给我们提供了另一种资源锁——读写锁(sync.RWMutex);读写锁可以锁定和解锁两种模式:只读模式和只写模式:只读模式:多路只读不可写;只写模式:单路只写不可读;只读模式示例//定义读写锁var rwMutex sync.RWMutex/*只读模式:多路只读不可写*/func main() { for i := 0; i...
2018-11-16 09:14:50 316
原创 5.1 PoW概念
比特币 最初由中本聪在2009年提出,根据中本聪的思路设计发布的开源软件以及建构其上的P2P网络 是一种P2P形式的数字货币,点对点的传输意味着一个去中心化的支付系统 从技术层面来看,比特币是最早和最成功的区块链应用,它可以被看作一个由加密算法,共识机制,p2p网络等技术组合而成的系统 由于这个系统在不停地分发货币,所以它也可以被看成是一个世界银行,但是与普通银行不同的是,它的...
2018-11-15 14:35:49 387
原创 4.10 负载均衡分布式
软件环境 CentOS7(4台) JDK1.8 2台http服务器 2台负载均衡:lvs+keepAlivedhttp服务器安装配置(2台) 输入 yum -y install httpd 安装http服务器 输入 systemctl enable httpd.service 设为开机自启动 输入 systemctl start httpd.service 启动ht...
2018-11-15 14:35:20 508
原创 4.9 CAP和BASE理论
分布式数据库CAP理论 CAP C:Consistency(强一致性) 更新操作成功并返回客户端完成后,所有节点在同一时间的数据完全一致。 A:Availability(可用性) 服务一直可用,而且是正常响应时间。 P:Partition tolerance(分区容错性) 分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。 C...
2018-11-15 14:34:54 282
原创 4.8 负载均衡的概念
负载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。部署方式负载均衡有三种部署方式:路由模式、桥接模式、服务直接...
2018-11-15 14:34:04 407
原创 4.7 Hadoop+zookeeper实现HA
集群规划 zk01——zk05,5台centos zk01——zk05部署了5个zookeeper zk01为namenode节点 zk05为namenode的HA节点 zk02、zk03、zk04为datanode节点搭建过程 修改主机名,hosts 搭建5台zookeeper,启动后5台机器都要zkServer.sh status查看状态,如果有启动没成功的节点...
2018-11-15 14:33:34 504
原创 4.5 zookeeper分布式
一、 为什么需要zookeeper 大部分分布式应用需要一个主控、协调器或控制器来管理物理分布的子进程(如资源、任务分配等) 大部分应用需要开发私有的协调程序,缺乏一个通用的机制 协调程序的反复编写浪费,且难以形成通用、伸缩性好的协调器 zookeeper可以提供通用的分布式锁服务,用以协调分布式应用,它是一个开源的分布式应用协调服务 分布式:多台计算机、它们之间通过网络进行通...
2018-11-15 14:32:45 452
原创 4.6 HA的概念
ha是High Available缩写,是双机集群系统简称,指高可用性集群,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动节点及备用节点定义HA(High Available),高可用性集群,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动节点及备用节点。通常把正在执行业务的称为活动节点,而作为活动节点的一个备份的则称为备用节点。当活动节点出现问题...
2018-11-15 14:32:11 801
原创 4.3 Hadoop概念
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throug...
2018-11-15 14:02:01 422
原创 4.4 Hadoop集群搭建
CentOS7下搭建hadoop2.7.3完全分布式这里搭建的是3个节点的完全分布式,即1个nameNode,2个dataNode,分别如下:CentOS-master nameNode 192.168.11.128CentOS-node1 dataNode 192.168.11.131CentOS-node2 dataNode 192.168…11.1321...
2018-11-15 14:00:34 294
原创 4.2 集群节点初步搭建
CentOS下搭建hadoop伪分布式1.打开配置好JDK的CentOS7,输入 mkdir /usr/local/hadoop 创建一个hadoop的文件夹2.将hadoop的tar包放到刚创建好的目录3.进入hadoop目录,输入 tar -zxvf hadoop-2.7.3.tar.gz 解压tar包4.输入 java -version 检查JDK是否配置成功,自己配置,不要用系统自...
2018-11-15 13:56:01 343
原创 4.1 CentOS7安装
CentOS7开发环境搭建一、 安装系统新建虚拟机选择“自定义(高级)”,并点击【下一步】选择虚拟机硬件兼容性,并点击【下一步】选择“稍后安装操作系统”,并点击【下一步】选择操作系统版本,并点击【下一步】命名虚拟机,可任意路径,并点击【下一步】配置处理器,并点击【下一步】设置虚拟机内存大小,并点击【下一步】选择“使用网络地址转换(NAT)”,...
2018-11-15 13:54:40 409
原创 多种格式数据输出
beego 当初设计的时候就考虑了 API 功能的设计,而我们在设计 API 的时候经常是输出 JSON 或者 XML 数据,那么 beego 提供了这样的方式直接输出:JSON 数据直接输出:func (this *AddController) Get() { mystruct := { ... } this.Data["json"] = &mystruct ...
2018-11-15 13:48:12 769
原创 表单数据验证
#安装及测试##安装:go get github.com/astaxie/beego/validation##测试:go test github.com/astaxie/beego/validationimport ( "github.com/astaxie/beego/validation" "log")type User struct { Name ...
2018-11-15 13:47:28 1117
原创 非对称加密体系
#简介对称加密的问题在于密钥配送问题,因为对称加密和解密使用的是同一个密钥,因此在发送密文的同时也要发送密钥,但是其中又存在矛盾,如果能安全的发送密钥,可以使用同样的方式发送明文,这样对称加密就没有存在的必要了,此时非对称加密就应运而生。非对称加密也叫做公钥密码,使用公钥密码可以很好的解决密钥配送的问题。公钥密码中,密钥分为加密密钥和解密密钥两种,发送者用加密密钥对消息进行加密,接收者用解密密...
2018-11-15 13:47:02 2147
原创 数据完整性
#简介完整性用来确保信息没有被修改,也可以防止假冒的信息。一个印刷在书面上的文件,要想通过修改其上面的文字或者数字来破坏其完整性是不容易的,你可以涂抹文件上面的文字,但可能很容易就被发现了。相对于现实世界而言,存储在计算机中的数字信息的完整性受到破坏的风险就大大增加了。一个存储在计算机中重要的文本文件,可能被其他人恶意修改了其中一个重要的数字而你没有发现就发出去了,甚至可能整个文件都给替换了而...
2018-11-15 13:46:37 6261
原创 数字签名
#简介假设Alice需要向Bob借100万元,不过,Alice和Bob离得很远,无法直接见面。通过银行汇款,Alice可以立刻从Bob那里收到钱,但是Alice的借条应该怎样发送给Bob呢?可以用挂号寄过去,不过那样需要花上一段时间,能不能用电子邮件来发送借条呢?比如:“Bob,我向你借款100万元。-----Alice"显然,这样的邮件无法代替借条,Bob看到这封邮件也不会轻易相信,因为电...
2018-11-15 13:45:08 2200
原创 国密算法
国密算法由国家密码局发布,包含SM1\ SM2\ SM3\ SM4\ SSF33算法;国际算法由美国的安全局发布,是现今最通用的商用算法。今天就以分组密码算法(SM4)、公钥密码算法(SM2)、摘要算法(SM3)为例,和大家谈谈国米算法。#分组密码算法——国产SM4分组密码就是将明文数据按固定长度进行分组,然后在同一密钥控制下逐组进行加密,从而将各个明文分组变换成一个等长的密文分组的密码。其中...
2018-11-14 16:24:33 9712
原创 博客项目环境搭建和Model设计
#准备工作:a.下载goland,安装go环境,在mysql创建数据库beego_blog,然后导入beego_blog.sqlb.然后安装beego和开发工具go get -u github.com/astaxie/beegogo get -u github.com/beego/beec.或许还需要安装go-mysql的驱动go get github.com/go-sql-driv...
2018-11-14 16:24:04 571
原创 博客项目前台实现
#项目前台整体页面在layout.html页面通过LayoutContent组合了index.html,通过LayoutSections组合了head.html,banner.html,middle.html,right.html,foot.html。具体实现了首页,关于我,成长录,碎言碎语,最新文章,点击排行,友情连接的展示。#首页由于首页是由多个页面而组成的,所以展示首页,需要分析各...
2018-11-14 16:23:18 1470
原创 古诗网站前台实现
#Models实现将ancientpoetry.sql导入数据库并执行,创建对应的数据库和表,在项目中的models文件夹下创建对应的model,并为每个model实现对应的基础方法。在init.go中获取配置文件中和数据库县官的信息,注册模型并连接数据库。部分代码如下:package modelsimport ( "net/url" "github.com/astaxie/bee...
2018-11-14 16:22:01 1362
原创 古诗网站后台实现
#账户管理##登录效果图如下:用户输入用户名和密码,点击登录系统按钮,在后台首先在cookie中获取用户登录相关信息,如果获取失败再获取用户的输入,对用户输入的数据进行校验并再数据库中查询用户,如果查询失败,再前台页面显示相应的提示信息,如果输入的用户名和密码正确,会将用户输入的数据做MD5处理,然后将处理之后的结果存入cookie中,并设置cookie的存活时间为一周。func (s...
2018-11-14 16:21:06 1923 1
原创 模板处理
beego 的模板处理引擎采用的是 Go 内置的 html/template 包进行处理,而且 beego 的模板处理逻辑是采用了缓存编译方式,也就是所有的模板会在 beego 应用启动的时候全部编译然后缓存在 map 里面。#模板目录beego 中默认的模板目录是 views,用户可以把模板文件放到该目录下,beego 会自动在该目录下的所有模板文件进行解析并缓存,开发模式下每次都会重新解析...
2018-11-14 16:17:49 396
原创 模板语法
#基本语法go 统一使用了 {{ 和 }} 作为左右标签,没有其他的标签符号。如果您想要修改为其它符号,可以参考 模板标签。使用 . 来访问当前位置的上下文使用 $ 来引用当前模板根级的上下文使用 $var 来访问创建的变量模板中支持的 go 语言符号{{"string"}} // 一般 string{{`raw string`}} // 原始 string{{'c'}} //...
2018-11-14 16:17:20 1221
原创 博客内容管理实现
#文章管理在文章管理模块主要实现了文章的添加,删除,编辑等功能。##发布文章效果图如下:该页面主要实现了文章的发布,用户在填写相应的信息之后点击提交按钮将文章信息提交到后台,主要的保存思路如下:1.获取用户输入的文章信息,插入数据库。2.获得用户输入的标签,因为用户输入的标签很可能有多个,所以我们在通过逗号切割之后,取出每个标签之后,去除两边的空格,然后判断用户输入的标签是否有重复,...
2018-11-14 16:16:58 653
原创 原生SQL查询
type SqlController struct { beego.Controller}#Preparesql语句在发送到服务器时会做语法检查和编译,然而我们多次执行同一功能的sql语句,只是每次传递的参数不一致,所以我们可以通过Prepare进行预处理,这样服务器只需要,做一次语法检查和编译,极大的提高了执行sql语句的效率func (this *SqlController) Ge...
2018-11-14 16:16:20 2380 1
原创 orm使用
用户结构体,和订单是一对多的关系type User struct { Id int //beego中默认Id为主键,且自增长 Name string //姓名 Age int //年龄 Nickname string //昵称 Userorders []*Userorder `orm:"reverse(many)"`}订单结构体,和用户是多对多一的关系type Userord...
2018-11-14 16:15:57 877
原创 前端内容概述
前端对于网站来说,通常是指网站的前台部分,包括网站的表现层和结构层。#前端三大基础技术##HTML超文本标记语言:超级文本标记语言是标准通用标记语言下的一个应用,也是一种规范,一种标准,它通过标记符号来标记要显示的网页中的各个部分。网页文件本身是一种文本文件,通过在文本文件中添加标记符,可以告诉浏览器如何显示其中的内容(如:文字如何处理,画面如何安排,图片如何显示等)。浏览器按顺序阅读网页文...
2018-11-14 16:15:34 651
原创 常用HTML标签1
#html标题通过 <h1>、<h2>、<h3>、<h4>、<h5>、<h6>,标签可以在网页上定义6种级别的标题。6种级别的标题表示文档的6级目录层级关系,比如说: <h1>用作主标题(最重要的),其后是 <h2>(次重要的),再其次是 <h3>,以此类推
2018-11-14 16:14:53 397
原创 常用HTML标签2:表格和列表
#html列表##有序列表在网页上定义一个有编号的内容列表可以用<ol>、<li>配合使用来实现,代码如下:<ol> <li>列表文字一</li> <li>列表文字二</li> <li>列表文字三</li></ol
2018-11-14 16:14:27 448
原创 常用HTML标签3:表单
html表单表单用于搜集不同类型的用户输入,表单由不同类型的标签组成,实现一个特定功能的表单区域(比如:注册),首先应该用<form>标签来定义表单区域整体,在此标签中再使用不同的表单控件来实现不同类型的信息输入,具体实现及注释可参照以下伪代码:<!-- form定义一个表单区域,action属性定义表单数据提交的地址,method属性定义提交的方式。 -->&l...
2018-11-14 16:13:58 383
VMware-workstation-full-12.5.0-4352439完美破解版.exe
2016-10-11
codeblocks-16.01mingw_fortran-setup.exe下载
2016-10-10
Java语言程序设计(基础篇)(原书第10版)
2016-09-29
20150329C定义变量->源代码
2016-09-08
20150329C补码->源代码
2016-09-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人