自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(124)
  • 收藏
  • 关注

原创 GoORM连接数据库错误:register db Ping `default1`, Error 1049: Unknown database

在学习Go语言写项目的过程中遇到了使用beego的ORM注册数据库的问题:register db Ping `default1`, Error 1049: Unknown database 'test_beego' must have one register DataBase alias named `default`,自己找了很多解决的办法,(ps:自己犯的是最傻的哪一个…)很多人的错误的原因如下:(1)写的是127.0.0.1的方式连接本地数据库"root:xxxxx@tcp(127

2021-02-18 19:14:38 2502

原创 单引号反引号的错误——Go里面的单引号,反引号和双引号

今天在学习Go的时候遇到了这样的一个问题:这里一直有报错。自己仔细看了看电子教程,发现里面的代码的引号和自己的引号有一点不同。自己的引号''这叫做单引号。而想要正确的使用,这里的应该是反引号:``。而反引号在ESC键下**~`**键。而单引号就是双引号的英文输入是的键。而在Go语言中,单引号,双引号,反引号还有着不同的规定。双引号用来创建可解析的字符串字面量(支持转义,但不能用来引用多行);单引号则是用于单个字符如:‘5’反引号用来创建原生的字符串字面量,这些字符串可能由多行组成(不支持

2021-02-18 14:40:31 384 1

原创 导入fdfs_client遇到的go.mod区分大小写问题

开发中遇到的go.mod区分大小写问题自己在使用go get -u github.com/keonjeo/fdfs_client这个包时遇到了这个问题:go get -u github.com/keonjeo/fdfs_clientgo: github.com/keonjeo/fdfs_client upgrade => v1.0.1go: finding module for package github.com/keonjeo/goconfiggo: finding module for

2021-02-18 13:53:46 412

原创 beego——快速入门2

beego——快速入门21,参数配置2,路由设置3,controller运行机制1,参数配置eego 目前支持 INI、XML、JSON、YAML 格式的配置文件解析,但是默认采用了 INI 格式解析,用户可以通过简单的配置就可以获得很大的灵活性。beego的默认配置文件位于conf文件夹下的app.conf通过这个文件可以初始化beego的默认参数:(使用bee创建项目时已经有的默认配置)appname = myprojecthttpport = 8080runmode = dev

2021-01-31 17:36:21 383

原创 beego——快速入门

beego——快速入门1,beego的安装2,bee工具的安装与使用3、beego的快速入门1,beego的安装打开命令行使用git安装go get github.com/astaxie/beegobeego升级方式: go get -u github.com/astaxie/beego2,bee工具的安装与使用bee工具的介绍:bee 工具是一个为了协助快速开发 beego 项目而创建的项目,通过 bee 可以很容易的进行 beego 项目的创建、热编译、开发、测试、和部署bee的

2021-01-29 21:01:43 7958 2

原创 Go语言基础——MySQL连接与使用

Go语言基础——MySQL连接与使用一,MySQL的连接二,Insert操作:三,Select操作四,update操作一,MySQL的连接mysql的连接需要使用到的第三方mysql库:github.com/go-sql-driver/mysql (mysql驱动)github.com/jmoiron/sqlx (基于mysql驱动的封装)获取方式:在IDE的命令行中输入: go get github.com/go-sql-driver/mysql go get github.c

2021-01-28 22:29:36 384

转载 Go语言并发编程_GMP

由线程到协程进程:是应用程序的启动实例,拥有自己独立的资源。线程:从属于进程,没有自己独立的资源。只有程序计数器,一组寄存器以及栈。一个进程可以拥有多个线程。线程是CPU最小的执行单元,进程是最小的资源管理单元。而线程和进程有一个明显的弊端就是切换成本很高。对于线程还要考虑同步问题。协程也就应运而生。协程:(Coroutines)是一种比线程更加轻量级的存在。一个进程拥有多个线程,一个线程也可以拥有多个协程。协程跟线程是有区别的,线程由 CPU 调度是抢占式的,协程由用户态调度是协作式的,

2021-01-25 16:41:24 131

原创 Go语言并发编程_同步Sync

Go语言中对于同步任务的使用主要是通过Sync包下的对象进行实现。Sync包位于src/sync。其包下有常使用的锁,waitGroup,原子类型数据等。sync.WaitGroupGo语言中除了锁还可以使用sync.WaitGroup来实现并发任务的同步。sync.WaitGroup的解释:A WaitGroup waits for a collection of goroutines to finish.The main goroutine calls Add to set the numb

2021-01-24 21:50:09 215 1

原创 Go语言并发编程_锁

在Go的代码中多个goroutine同时操作一个临界区资源的时候可能会发生竞态问题。因此Go也提供了不同的锁解决不同情景下的问题。互斥锁互斥锁是一种常用的资源访问控制,他能保证同时只有一个goroutine可以访问共享资源。Go语言中使用sync包和Mutex类型来实现互斥锁。代码实例import ( "fmt" "sync")var x int64var wg sync.WaitGroupvar lock sync.Mutexfunc add() { for i:=0;

2021-01-24 20:55:59 118

原创 Go语言并发编程_select

select的应用场景多个通道在接收数据的时候,如果没有数据接收,就会发生阻塞,导致其余通道无法接收。为了实现同时监控多个通道并且从多个通道接收值的需求,同时避免使用循环提高效率,Go内置了select关键字来同时响应多个通道的操作。select的使用Go语言中的select使用了类似switch的语句,他有一系列的case分支和一个默认分支。每个case对应一个通道的通信过程。select会一直等待,直到某个case通信操作完成时,就会执行case分支对应的语句。语法如下: select {

2021-01-24 16:07:16 124

原创 Go语言并发编程_Channel

channel的简介Go语言的并发模型实CSP(Communicating Sequential Processes)提倡通过通信共享内存而不是通过共享内存实现通信。虽然可以使用共享内存进行数据交换,但是共享内存在不同的goroutine中容易发生竞态问题。为了保证数据交换的正确性,必须使用互斥量对内存进行加锁,这种做法势必造成性能问题。channel:就是Go语言中,将一个goroutine发送特定值到另一个goroutine的通信机制。Go 语言中的通道(channel)是一种特殊的类型。

2021-01-22 16:31:36 1427

原创 Go语言并发编程_Goroutine

进程和线程进程:进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。线程:线程是进程的一个执行实体,是CPU调度和分派的基本单位,他是比进程更小的能独立执行的基本单位。两者的关系:一个进程可以创建和撤销多个线程,同一个进程中的多个线程之间可以并发执行。Go语言中的协程协程:独立的栈空间,共享堆空间,调度由用户自己控制,类似于用户级线程。与线程的关系:一个线程可以创建多个协程,协程是轻量级的线程。Go语言中Goroutine在java/c++中我们要实现并发编

2021-01-21 17:49:05 140

原创 Go语言基础——一个简单的TCP编程

Go语言的TCP编程与很多其他编程语言的结构顺序一样,只是存在着语法的不同TCP/IP协议TCP/IP协议,即传输控制协议/网间协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议,其传输的单位是报文段,因为是面向连接的协议,会存在黏包问题。TCP编程的服务端和Java编程中的一样,Go语言的服务端也可以连接多个客户端,执行的顺序也大致一样。(都遵循TCP/IP协议,肯定一样啊,此处为废话)Go语言中的服务端的工作流程:(1)监听端口,等待被连接(2)接收客户端的连接请求(3).

2021-01-18 16:13:43 204

原创 面试准备-JVM

JVMJVM1.JVM中的结构JAVA的堆栈JVM中的堆栈运行时数据区程序计数器是什么?Java虚拟机栈的作用?本地方法栈的作用堆的作用?方法区的作用运行时常量池的作用直接内存是什么?2.OOM(Out of Memory)内存溢出内存溢出和内存泄漏的区别堆溢出的原因?栈溢出的原因运行时常量池溢出方法区溢出的原因3.JVM垃圾处理JVM垃圾处理算法Java对于小对象的内存分配垃圾回收判断算法Java中的引用软引用,弱引用,虚引用的区别:垃圾回收算法垃圾回收器CMS回收器G1垃圾回收器ZGCGC什么时候触发判

2020-08-17 06:44:55 160

原创 面试准备——JAVA NIO&Netty总结

Netty总结IO基本知识IO读写基本原理缓冲区的作用四大IO模型如何通过合理的配置支持百万级并发连接Java NIONIO和OIO的区别使用Buffer的方式Channel类型NIO Selector选择器选择器使用流程Reactor反应器模式什么是反应器模式?Netty什么是NettyNetty好在哪里?Netty的核心组件Netty中的Reactor反应器模式使用的体现?EventloopGroup 了解么?和 EventLoop 啥关系?Bootstrap 和 ServerBootstrap 了解么

2020-08-02 23:24:17 459

原创 Spring-IOC/AOP

什么是Spring IOC?IOC控制反转,其实是设计模式中的依赖倒置思想的实现,将原本在程序中手动创建对象的控制权交给Spring框架来管理。依赖注入:把底层类作为参数传入上层类,实现上层类对下层类的“控制”。图片于来源:网络Spring IOC初始化过程...

2020-08-02 17:31:40 169

原创 面试准备——计网中的高频面试题

面试准备——计网中的高频面试题输入一个url到显示页面的过程在这个过程中使用了那些协议TCP的三次握手和四次挥手TCP和UDP协议的区别UDP的不可靠和效率高的原因TCP如何保证传输可靠滑动窗口和流量控制拥塞控制TCP采用的拥塞控制算法TCP的time_waitTCP超时重传,会一直传吗。详细说说HTTP的构成HTTP请求头HTTP响应头HTTP状态码HTTP的长连接和短连接HTTP不保存状态的协议,如何保存用户状态Cookie的作用以及和Session的区别HTTP1.0,HTTP1.1和HTTP2.0的

2020-07-29 22:50:17 549

原创 剑指Offer-62——矩阵中的路径

思路解析dfs真的是看着简单。用起来很难明白。这里附上一个大佬解法代码链接:https://www.nowcoder.com/questionTerminal/c61c6999eecb4b8f88a98f66b273a3cc?f=discussion来源:牛客网public class Solution { public boolean hasPath(char[] matrix, int rows, int cols, char[] str) { //标志.

2020-07-26 19:04:04 118

原创 剑指Offer-61——滑动窗口中的最大值

题目描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1}, {2,3,4,[2,6,2],5,1}, {2,3,4,2,[6,2,5],1}, {2,3,4,2,

2020-07-26 16:03:45 112

原创 剑指Offer-60——数据流中的中位数

题目描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。解题思路其实这个题,解决不麻烦。但是优化麻烦。自己想到了一个解决的方法。优化只能看大佬的了代码import java.util.ArrayList;import java.util.Collections;

2020-07-26 15:30:32 105

原创 剑指Offer-59——二叉搜索树的第K个节点

题目描述给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。思路解析二叉搜索树的特点是:左结点大于根节点,右结点小于根节点。中序遍历的结果是:左-》中-》右两者结合就是有序的序列。代码import java.util.ArrayList;/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode rig

2020-07-26 14:41:07 81

原创 剑指Offer-58——序列化二叉树

题目描述请实现两个函数,分别用来序列化和反序列化二叉树二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示空节点(#),以 ! 表示一个结点值的结束(value!)。二叉树的反序列化是指:根据某种遍历顺序得到的序列化字符串结果str,重构二叉树。例如,我们可以把一个只有根节点为1的二叉树序列化为"1,"

2020-07-26 14:04:24 132

原创 剑指Offer-57——把二叉树打印成多行

题目描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行思路解析这道题和前面的Z字形打印二叉树有着相同之处。但是也有着不同的地方,Z字形打印的题目,他会交换使用栈,因此不用考虑本层存储和下一层的顺序的问题。这里就使用一个队列,根据先进先出的特点来进行一个层次的遍历。代码import java.util.ArrayList;import java.util.Queue;import java.util.LinkedList;/*public class TreeNode {

2020-07-26 13:12:22 106

原创 剑指Offer-56——按之字形顺序打印二叉树

题目描述请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。思路解析每两层各自都有自己的打印的顺序,所以需要考虑如何如何将第一层的打印完了,然后第二层的从另外一个方向进行打印。而且需要将特定的节点顺序传给下一层。因此这里考虑使用两个栈来存储,第一个栈stack1存储第一层打印的顺序,可以记做奇数层打印顺序。第二个栈Stack2存储第二层的打印顺序,可以记做偶数层的打印顺序。在每层遍历完后就pop出遍历过

2020-07-26 11:20:42 95

原创 HashMap相关面试题

本文是自己根据JavaGuide写的总结,方便自己记忆。如果需要更详细的内容还是推荐读原文

2020-07-23 21:26:36 575

原创 ArrayList相关面试题

该文是自己根据JavaGuide写的一些总结,方便自己的记忆

2020-07-23 15:16:27 308

原创 剑指Offer-55——对称的二叉树

题目描述请实现一个函数,用来判断一棵二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。思路描述首先需要知道什么是对称二叉树。以及他的镜像是什么样的。其次是,明白这样多次的遍历左右子树,肯定是要用到递归的思想来解决的。递归,真就是想到了就很简单,理解起来也很简单。但没想到突破点,真的是想破脑袋也不会明白。这里就采用的是,同时递归左右子树,来获得最终结果。代码/*public class TreeNode { int val = 0; Tre

2020-07-22 16:57:24 167

原创 剑指Offer-54——二叉树的下一个节点

题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。思路自己一直明白这个题目中的next是什么意思,指向哪里?后来看了别人的解析才明白。next指向的是父节点。下面这个解法不是自己原创的:链接:https://www.nowcoder.com/questionTerminal/9023a0c988684a53960365b889ceaf5e?f=discussion来源:牛客网分析二叉树的下一个节

2020-07-22 15:38:27 149

原创 剑指Offer-53——链表中环的入口节点

题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5思路解析解决这个问题的难点在于如何删除指针指向的那个节点,同时保证指针能够继续使用下去而不是因为删除变成了null。这里采用新建一个含有首节点的链表。然后将pHead连接上去。达到延后一个的效果来删除重复节点。首先,设置两个指针一个作为快指针,另外一个作为慢指针。快指针

2020-07-22 14:49:29 98

原创 剑指Offer-52——链表中环的入口节点

题目描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。思路解析这个方法不是自己的,但是确实解法很巧妙因此就以此方法作为博客内容了。原方法地址:https://blog.nowcoder.net/n/deaa284f105e48f49f38b5d7cb809cd7?f=comment思路描述:假设链表结构如下:首先判断是否是环。设置两个指针,fasth和slwo。fast一次走两步,slow一次走一步。fast肯定会比slow更早的进入环中,且经过多次循环,最终

2020-07-22 11:50:30 122

原创 剑指Offer-51——字符流中第一个不重复的字符与本题中HashMap和LinkedHashMap的区别

题目描述请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。输出描述:如果当前字符流没有存在出现一次的字符,返回#字符。思路解析这里使用的是LinkedHashMap来解决。输入进来就判断是否map中含有,不含有就放入并设置值为1,。含有,则取出value值并将其加1后放入。代码import java.util.Map;imp

2020-07-22 10:10:12 106

原创 剑指Offer-50——表示数值的字符串

题目描述请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。这个题自己写了一大堆,结果报错了。裂开。然后发现了一个大佬的正则表达式解法,给了自己一巴掌,并觉得自己是个five正则表达式解法传送门代码import java.util.regex.Pattern; public class Sol

2020-07-21 23:35:28 224

原创 剑指Offer-49——正则表达式匹配

题目描述请实现一个函数用来匹配包括’.‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但是与"aa.a"和"ab*a"均不匹配思路解析心态炸裂。我按照自己的方法一步步做下去。但是就是有问题。我去看了别人的解答,和我的一样的逻辑,就是能通过,于是我一个个的对照着写。还是错了。算了,还是要灵活的解决这个问题。不能太死板。看看别人大佬的动态

2020-07-21 23:08:25 103

原创 剑指Offer-48——构建乘积数组

题目描述给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…*A[i-1]A[i+1]…*A[n-1]。不能使用除法。(注意:规定B[0] = A[1] * A[2] * … * A[n-1],B[n-1] = A[0] * A[1] * … * A[n-2];)思路解析由题意假设:left[i] = A[0]A[1]…A[i-1]rigth[i] =A[i+1]…*A[n-1];B[i] = left[i] * rigth[

2020-07-21 19:32:23 102

原创 剑指Offer-47——数组中重复的数组

题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。思路解析:这个题目说明一大串。代码里面还一堆英文解释。搞得我都懵了。结果还是一个hashmap解决。代码:import java.util.HashMap;public class Solution { // Pa

2020-07-21 17:40:54 122

原创 剑指Offer-46——把字符串转换为整数

题目描述将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0输入描述:输入一个字符串,包括数字字母符号,可以为空输出描述:如果是合法的数值表达则返回该数字,否则返回0示例1输入+21474836471a33输出21474836470代码由于代码的注释充足,因此不写思路解析了,直接看代码懂得更快。public class Solution { public int StrToInt(String str)

2020-07-21 16:59:23 104

原创 剑指Offer-45——不用加减乘除做加法

题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。思路解析但不能使用加减乘除进行运算的时候,其实意思就是叫用计算机底层的按位与&,按位或|, 按位异或^进行实现。举例:5的二进制是101,3的二进制是011。两个二进制的相加结果是用一个异或门实现的;两个二进制的进位结果是用一个与门来实现的。而我们在计算101+011d的时候就需要将其进行异或和与来保证相加位的结果和进位的结果。代码public class Solution {public

2020-07-21 16:05:12 106

原创 剑指Offer-44——求1+2+3+……n的和

题目描述求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。思路解析初看题目很简单,在看题目动不了手。菜的抠脚。老老实实的当一回搬运工吧。各路大神的解法短路:短路值的是A&&B,A正确就执行B。用这个方法可以代替if和三元运算符。public class Solution { public int Sum_Solution(int n) { int sum = n;

2020-07-20 00:14:02 149

原创 剑指Offer-43——孩子们的游戏(圆圈中最后剩下的数)

题目描述每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0…m-1报数…这样下去…直到剩下最后一个小朋友,可以不用表演,并且拿到牛客名贵的“名侦探柯南”典藏版(名额有限哦!!_)。请你试着想下,哪个小朋友会得

2020-07-19 23:55:30 123

原创 剑指Offer-42——扑克牌顺子

题目描述LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张_)…他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子…LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,K为13。上面的5张牌就可以变成“1,2,3,4,5”(大小王分别看作2和4),“So Lucky!”。LL决定去买体育彩票啦。 现

2020-07-19 23:13:13 123

空空如也

空空如也

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

TA关注的人

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