自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小白的成长之路

用技术改变人生

  • 博客(87)
  • 收藏
  • 关注

原创 Java工程师的成长之路-Java学习路线规划

java开发工程师学习路线java基础篇java开发介绍java数组java面向对象java异常处理java集合java IO流java泛型java多线程java注解及反射java语法糖java8、9、10新特性java高级篇HTML5CSS3JavaScriptServletJSPAJAXjava框架篇SpringSpring MVCMyBatisStruts2HibernateSVN和GitM...

2019-12-26 23:11:07 1607 3

原创 如何解决golang开发中遇到的报错:checksum mismatch downloaded

解决golang开发中遇到的报错:checksum mismatch downloaded

2023-11-14 18:43:00 711

原创 解决Golang编译、执行单测、运行程序遇到:cgo: malformed DWARF TagVariable entry 的问题

解决cgo: malformed DWARF TagVariable entry问题

2023-11-10 11:36:08 1050

原创 Golang:全局变量初始化遇到的问题记录

Go 程序执行出现空指针,但是经过代码检查,变量有进行赋值,如何排查及解决呢?

2023-07-24 22:37:39 609 2

原创 goland高效编码技巧 - 第三部分(完)

goland高效编码技巧 - 第三部分剪贴板操作与剪贴板比较历史复制粘贴内容从剪贴板添加包通用提示切换到编辑器隐藏所有工具窗口快速打字全局搜索本地历史(local history)剪贴板操作与剪贴板比较Ctrl + D(Windows/Linux)或Command + D(macOS)通过使用Windows/Linux 上的Ctrl + D、macOS 上的Command + D快捷键,可以方便地比较文件内容,选中两个文件,按下快捷键,就可以对比两个文件的差异,如果选中单个文件再按下快捷键,则会提示

2021-11-18 11:25:16 1036

原创 goland高效编码技巧 - 第二部分

goland高效编码技巧 - 第一部分文件间导航导航到文件在打开的文件之间导航最近的文件最近的位置结构和导航结构弹出跳转到导航栏在特定视图中选中当前文件去到测试用例/返回方法定义类型层次结构查看函数或方法被调用的所有位置显示元素在哪被调用以及快速定位到被调用的地方文件间导航导航到文件Ctrl+Shift+N(Windows/Linux)或Command+Shift+O(macOS)通过使用Windows/Linux 上的Ctrl+Shift+N、macOS 上的Command+Shift+O快捷键,

2021-10-09 18:18:13 689

原创 goland高效编码技巧 - 第一部分

goland高效编码技巧 - 第一部分代码生成实现一个接口结构体标签自定义结构体标签生成测试用例代码选中扩选/缩选代码块选中多个相同的代码并编辑(批量修改)选中当前文件中的所有匹配的代码并编辑(批量修改)代码生成实现一个接口Ctrl + I使用快捷键 Ctrl + i 在弹出的选择框中回车选择 Create Type,然后在弹出的输入框中输入关键字,选择需要实现的接口类型。结构体标签json 或 xml在结构体字段后面输入:json 或 xml 来向结构体添加标签自定义结构体标签打开Set

2021-09-18 15:28:30 1475

原创 golang for循环使用细节——瞬间提高你的代码执行速度

golang for循环使用细节——瞬间提高你的代码执行速度案例样例一:样例二:分析样例一:样例二:优化样例一:样例二:本文将带你深入了解 golang 中 关于 for 循环的使用细节,以及如何避免在开发过程中犯一些错误,导致代码执行速度极慢,甚至引发一些未知的错误。别人在看到你的代码时,也不会内心在那吐槽了。。。案例在日常开发中经常看到的一些代码样例:样例一:for i := 0; i < getCount(); i++ { // do something}for i

2021-06-16 15:39:50 3702

原创 解golangci-lint错误:level=error msg=“Running error: can‘t combine options --disable-all and --disable

在本地搭建golangci-lint集成到goland,使用时出现以下错误:level=error msg="Running error: can't combine options --disable-all and --disable经过一番排查,又是升级golangci-lint的版本,又是放弃自动安装选择手动安装,都没能解决,根据提示找到golangci.yml文件,找到报错的 lint 类型,没有办法只能将其注释掉:但是这样不能从根本解决问题,而且项目中其他同事也没有说有这个问题,于是

2021-06-02 09:44:51 4929

原创 Java二维数组

Java二维数组创建二维数组初始化二维数组获取单个元素获取全部元素获取整行/整列元素为了方便组织各种信息,计算机常将信息以表的形式进行组织,然后再以行和列的形式呈现出来。二维数组的结构决定了其能非常方便地表示计算机中的表,以第一个下标表示元素所在的行,第二个下标表示元素所在的列。下面简单了解一下二维数组,包括数组的声明和初始化。创建二维数组在 Java 中二维数组被看作数组的数组,即二维数组为一个特殊的一维数组,其每个元素又是一个一维数组。Java 并不直接支持二维数组,但是允许定义数组元素是一维

2021-06-01 23:49:43 1509

原创 Git如何使用rebase操作修改已经提交了的commit信息(用户名和邮箱)

Git如何使用rebase操作修改已经提交了的commit信息(用户名和邮箱修改连续多个 commit修改连续多个 commit比如,你的 commit 历史为 A-B-C-D-E-F , F 为 HEAD , 你打算修改 C 和 D 的用户名或邮箱,你需要:运行 git rebase -i B,如果你需要修改 A ,可以运行 git rebase -i --root把 C 和 D 两个 commit 的那一行的 pick 改为 edit当 rebase 开始后,将会暂停在 commit C,运

2021-06-01 22:54:33 4104

原创 解决M1芯片 MAC 下 Goland(Intellij系列都适用) 无法 Debug 的问题

解决M1芯片 MAC 下 Goland(Intellij系列都适用) 无法 Debug 的问题解决M1芯片 MAC 下 Goland(Intellij系列都适用) 无法 Debug 的问题报错信息如下:解决方法如下:解决M1芯片 MAC 下 Goland(Intellij系列都适用) 无法 Debug 的问题报错信息如下:error: failed to allocate vm space for aot解决方法如下:安装dlvbrew install dlv查看dlv路径whi

2021-06-01 10:52:22 5601 7

原创 Java Arrays工具类的使用

Java Arrays工具类的使用1.数组转换字符串2.对数组进行升序排列3.所有元素赋特定值4.判断数组是否相等5.对数组复制6.查询数组下标7.数组转换成集合附Arrays 是JDK提供的操作数组的工具类,Arrays类提供了动态创建和访问 Java 数组的方法。Arrays类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂。下面列出常见的几种用法:1.数组转换字符串int[] a = {20, 3, 32, 1, 72, 26, 35};St

2021-05-29 23:44:35 1112

原创 Java 数组元素的顺序查找

Java 数组元素的顺序查找顺序查找二分查找顺序查找顺序查找:也就是按顺序一位一位的查找,找到要查找数的索引(下标)。示例: /** * 顺序查找 * * @param arr 查找的数组 * @param num 待查找的数 * @return -1:没有找到,>=0:下标 */ public static int findIndex(int[] arr, int num) { for (int i = 0; i < arr.

2021-05-29 22:50:53 1504

原创 配置中心

配置中心通过以下几个问题理解微服务中的集中配置中心:微服务配置中心是什么?为什么需要微服务配置中心?微服务配置中心实现技术?技术如何选型?微服务配置中心是什么:集中式配置是将应用系统中对配置信息的管理作为一个新的应用功能模块,区别与传统的配置信息分散到系统各个角落方式,进行集中统一管理,并且提供额外功能。尤其是在微服务架构中,是不可或缺组件,甚至是必要组件之一。为什么需要微服务配置中心:在微服务体系中,服务的数量以及配置信息的日益增多,比如各种服务器参数配置、各种数据库访问参数配置、各

2021-04-18 16:28:11 1629 1

原创 redis BITCOUNT

redis BITCOUNT统计指定位区间上值为1的个数语法:BITCOUNT key [start end]从左向右从0开始,从右向左从-1开始,注意start和end是字节。BITCOUNT testkey 0 0 表示从索引0个字节到索引0个字节,就是第一个字节的统计。BITCOUNT testkey 0 -1 等同于BITCOUNT testkey。最常用的就是BITCOUNT testkey 。为什么会介绍这个命令的用法呢?因为在业务中使用bitmap存储数据的时候,bit

2021-04-18 16:22:36 2467

原创 golang defer

golang deferdefer是golang的一个特色功能,defer用来声明一个延迟函数,把这个函数类似于放到一个栈上,在方法return之前触发调用。我们经常用他来做一些资源的释放,比如关闭io操作。defer的具体规则:延迟函数的参数在defer语句出现时就已经确定下来了。延迟函数执行按后进先出顺序执行,即先出现的defer后执行(类似于栈);延迟函数可能操作主函数的具名返回值;即使出现panic,defer函数也会正常执行。解释:defer语句中的参数值在defer出现时就

2021-04-18 16:19:36 1123

原创 golang channel

golang channelchannel类型:读写方式上来看,有以下三种:可读可写;仅可写;仅可读;使用情况来看,分为传输的数据类型和是否有缓冲两种情况:传输的数据类型:channel理论上可以传输任意的数据类型,根据声明时指定的数据类型,传输对应的数据,如chan int就是表示可读写int类型数据的channel;无缓冲channel(同步channel):实际就是同步channel,向无缓冲channel写入数据时,如果没有消费者取出数据,则在写入这个时机就阻塞住了,这

2021-04-18 16:14:44 1120

原创 Redis的数据结构

Redis的五种数据结构String 字符串类型List 列表类型Set 无序集合类型ZSet 有序集合类型Hash 哈希表类型每种数据结构对应的底层实现:首先,在Redis中有一个核心对象——redisObject,用来表示所有key和value。redisObject结构体用来表示五种数据类型,结构如下:typedef struct redisObject { // 类型 unsigned type:4; // 对齐位 unsigned notused

2021-04-18 16:11:27 1032

原创 golang数组和切片的区别

golang数组和切片的区别声明方式不同,数组声明需要指定长度(无论是显式指定还是编译器根据元素个数推断都是指定),切片则不用;数组长度固定,无法改变,切片长度不固定,可以自动扩容;数组是值类型,切片是引用类型。数组在作为参数传递时,是直接在内存中拷贝了一份数据进行传递,切片则传递的是引用地址,所以在方法中对数组进行修改不会影响原数组,而切片则会受影响;切片可以用cap函数计算容量、len函数计算长度,数组只有len函数计算长度,换句话说,切片比数组多一个cap属性;切片的底层是数组。附:

2021-04-18 16:08:13 2222

原创 mysql主从复制原理

mysql主从复制原理mysql主从复制涉及三个线程:log dump thread 运行在主节点;I/O thread 运行在从节点;SQL thread 运行在从节点。log dump thread:当从节点连接主节点时,主节点会创建一个log dump线程,用于发送binlog日志,在读取binlog日志时,此线程会对主节点上的binlog加锁,当读取完成,发送给从节点前,锁才会被释放;I/O thread:当从节点执行start slave命令后,从节点会创建一个I/O线程用来连接

2021-04-18 16:07:00 1054 2

原创 mysql binlog

mysql binlog二进制日志,记录了数据库上的所有改变,并以二进制形式保存在磁盘中,主要用于查看数据库的变更历史、数据库增量备份与恢复、主从复制等。binlog格式:statement 基于sql语句的复制row 基于行的复制mixed 混合模式复制statement格式下,每一条数据修改的sql都会记录在binlog中,同时还会记录每条语句在执行时的上下文信息;row格式下,不记录sql语句的上下文信息,仅保存哪条记录被修改成了什么;mixed格式下,就是statement

2021-04-18 16:04:59 1018

原创 mysql事务隔离级别

mysql事务隔离级别分为4种:读未提交读已提交可重复读序列化可能出现的问题:读未提交会出现赃读、不可重复读、幻读;读已提交会出现不可重复读、幻读;可重复读会出现幻读;序列化不会出现以上问题。脏读、不可重复读、幻读:脏读就是一个事务可能读取到其他事务未提交的数据。最容易混淆的是不可重复读和幻读的区别,mysql默认为可重复读隔离级别,也就是会出现幻读的情况,oracle默认是读已提交隔离级别,会出现不可重复读和幻读。不可重复读和幻读的区别:不可重复读重点在于更新和删

2021-04-18 16:02:08 1011

原创 跳表

跳表(skiplist):实际上就是一种运用空间换时间的思路实现的数据结构。首先有一个单链表,查询的时间复杂度是O(N)针对链表中的每两个节点建立一级索引;再对一级索引的每两个节点建立二级索引;建立3级、4级索引,依此类推。这样在查询数据时的时间复杂度降低为:O(log2n),相应的空间复杂度也会提高。...

2021-04-18 15:58:46 996

原创 golang时间戳、日期字符串、time类型数据互转

golang时间戳、日期字符串、time类型数据互转time转日期字符串time转时间戳时间戳转time时间戳转日期字符串日期字符串转time日期字符串转时间戳附:Github仓库地址time转日期字符串const ( YearMonthDay = "2006-01-02" HourMinuteSecond = "15:04:05" DefaultLayout = YearMonthDay + " " + HourMinuteSecond)// time转为默认格式的日期字符串

2021-02-04 19:04:39 4554

原创 2021-01-14某证券公司后台开发岗位面试记录(三面也是技术终面)

这次是技术终面,说实话,我面试向来都是裸面,没有提前准备,我觉得有真才实学,就没有必要准备,平时有做积累什么的基本都不会有太大问题,更多是面试经验,这个可以在不断的面试过程中去熟悉。自我介绍这个没啥好说的,面试的必经之路,如果你还不会,那就赶紧去学习!算法:假设您能预知某只股票未来n秒内价格(每秒1个价格),设计一个算法来找到最大的利润,并写出实现代码。限制如下:您最多只能交易2次(买一次,卖一次,且先买后卖)同时最多能持有1股空间复杂度O(1)时间复杂度O(N)这个就是.

2021-01-30 18:05:40 2873 3

原创 2021-01-12某证券公司后台开发岗位面试记录(二面)

本次面试为二面,问的问题偏向算法和计算机底层相关的,下面列出主要的问题。计算机网络+linux:ping www.baidu.com 这个命令是用的什么网络协议?(不是很清楚,回答的也很模棱两可,参考答案)除了使用ping命令,还可以使用什么命令判断与某个服务直接网络是否是通的?(主要考察如何定位线上服务不通的问题,参考答案)使用什么命令可以查询出域名绑定的ip?(参考答案)算法:输入两个整数,输出两个整数相除的结果字符串,如果是小数则输出小数,如果是无限循环小数则将循环的部分用一对小.

2021-01-30 17:45:32 1778 1

原创 2021-01-07某证券公司后台开发岗位面试记录

本次面试为初面,所以问的问题都比较基础,下面列出主要的问题,部分问题下面会给出参考答案。计算机网络:TCP 3次握手4次挥手(经典问题);网络请求的IP和端口信息存放在哪里(假设是内网之间互相访问)?TCP粘包;网友的解答算法:8个小球,一个重量与其他7个不等,求出如何使用一个称在最少次数找出那个重量不同的小球?(问题的难点就在于我们不知道那个特殊的小球是重了还是轻了,所以需要另外处理,面试官给的答案是最少3次可以找出,不知道你能不能想到3次找出的方法?)数组平移,将一个有序且元素不.

2021-01-08 10:53:40 1787 1

原创 Mysql count(1)、count(*) 与 count(‘列名‘) 的区别

区别如下:count(*)包括了所有的列,相当于行数,在统计结果的时候,不会忽略列值为NULL的数据行;count(1)忽略所有列,用1代表代码行,在统计结果的时候,不会忽略列值为NULL的数据行;count('列名')只包括列名那一列,在统计结果的时候,会忽略列值为空(这里的空不是指空字符串或者0,而是表示NULL)的计数,即某个字段值为NULL时,不统计。分析:最终统计结果count(*)和count(1)是没有区别的,count('列名')因为忽略了值为NULL的数据,所以可能比前两者

2020-12-11 11:10:44 1415

原创 解决idea编译提示: Error:(4, 28) java: 程序包com.xxx.xxx不存在 问题

问题:idea中通过maven已经导入了包,idea中也能定位到包的位置,但在编译的时候始终报error,找不到包。原因:idea的版本与maven构建的build不兼容解决方案:卸载idea,更换idea版本进行安装;设置将idea的构建和运行托管到maven下面,如下图:修改完成后,可能需要重启idea才能生效,如果还是遇到不能编译的问题,检查下maven的环境变量配置是否正确,如下图,需要配置有效的maven home:...

2020-11-16 09:43:17 7628

原创 300行Go代码实现钉钉或微信的网页解析功能

我们平时在使用微信或者钉钉聊天时,当我们发送一个网址到微信或钉钉聊天框时,微信或钉钉会帮我们进行解析,生成一个卡片式的网址预览样式,闲来无事,我用golang试着写了一个能够实现类似功能的代码。需求分析首先分析钉钉展示卡片样式如下:卡片内容包含:网址标题、网页描述、网页地址、网页的icon等信息。所以我们需要从网址中解析出以上信息,明白了需求,现在就开始撸代码了。话不多说直接上代码,设计思路在代码中有注释描述:package utilimport ( "fmt" "git.fo.

2020-10-29 18:05:49 1540 1

原创 网络抓包代理工具:Charles 超好用

Charles使用详解

2020-09-18 11:13:22 1868

原创 程序开发通用规范

开发通用规范开发通用规范源文件文件编码换行符行尾空白字符版本控制系统全局 `.gitignore` 文件配置方法开发通用规范通用规范包含在开发过程中必须遵循的一般性原则,适用于所有语言和项目。它同各语言编码规范一样是代码审查工作的重要参考资料。源文件文件编码源文件必须以 UTF-8 without BOM 方式编码。出特殊情况外,我们不接受任何其他编码。换行符源文件统一以 \n (Unix 换行符)为换行符。提交到 git 中的源文件不应该出现其他换行方式。行尾行尾指文件最后一行的内容。每

2020-09-17 14:35:23 1322

原创 Go 语言编码风格指南

Go 语言编码风格指南注释在注释文本和斜线之间插入一个空格为顶层的导出的名字添加文档注释命名Error 变量命名对于有多个大写字母的单词或专名,小写全部字母使用单数形式的仓库和文件夹名称切片不要显式地初始化切片使用len()检查切片是否为空使用`copy()`复制切片`append`可以将字符串添加到字节切片字符串空字符串检查随机数不要使用math/rand生成密码错误处理在适宜的地方使用error类型代替字符串包装你的错误不要使用panic进行普通的错误处理不要忽略错误变量在Go语言官方提供的Effec

2020-09-17 14:20:43 1243

原创 golang实现数组分割

golang 数组分割需求:给定一个数组和一个正整数,要求把数组分割成多个正整数大小的数组,如果不够分,则最后一个数组分到剩余的所有元素。示例1:数组:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],正整数:2期望结果: [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]示例2:数组:[1, 2, 3, 4, 5, 6, 7, 8, 9],正整数:2期望结果: [[1, 2], [3, 4], [5, 6], [7, 8], [9]

2020-09-06 15:13:00 6252

原创 kafka在linux下的安装及配置

kafka安装及配置安装配置附安装下载:可以选择下载源码包或者打包好的二进制文件。安装将上面下载好的文件解压缩即可,linux 下为了方便启动可以将bin目录配置到环境变量中配置依赖服务kafka 是依赖 zookeeper 服务的,所以需要启动 kafka 首先要安装zookeeper,这里不做介绍。你也可以使用已有的 zookeeper 服务,只需修改 kafka 启动配...

2020-05-02 12:10:12 1975

原创 go get 加 -u 和不加 -u 参数的区别

如题,区别如下:加上它可以利用网络来更新已有的代码包及其依赖包。如果已经下载过一个代码包,但是这个代码包又有更新了,那么这时候可以直接用 -u 标记来更新本地的对应的代码包。如果不加这个 -u 标记,执行 go get 一个已有的代码包,会发现命令什么都不执行。只有加了 -u 标记,命令会去执行 git pull 命令拉取最新的代码包的最新版本,下载并安装。...

2020-04-20 19:06:57 38280 7

原创 mysql使用limit和offset实现分页

如题,话不多说,直接上代码:# 其中 page 是页码,pageSize是每页显示的条数。select * from table_name limit (page - 1) * pageSize, pageSize;注:通常我们使用框架进行开发的时候,框架已经帮我们做好分页的处理了,但是我们还是要知道它的原理的,上面的方式实现分页性能比较低下,更好的做法是采用id限定优化,这里不做赘述。...

2020-04-17 23:22:12 3072

原创 Golang中方法接收者使用指针与非指针的区别

话不多说直接上代码:type interface1 interface { doubleValue() squareValue()}func newStruct1(value int) interface1 { return &struct1{value}}type struct1 struct { value int}func (s struct1) doub...

2020-03-28 15:08:26 2743 4

原创 解决:处理软件包 mysql-server (--configure)时出错的问题

命令行执行mysql命令时出错,提示:Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'原因是mysql配置文件有问题,避免麻烦,这里直接卸载重装,注意备份数据和自定义的配置文件。依次执行如下命令删除依赖包:sudo rm -rf /var/lib/mysql/ -R删除配...

2020-03-22 14:47:29 2923

空空如也

空空如也

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

TA关注的人

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