自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Golang Sqlx Gorm 对比

Sqlx Gorm 对比170W数据下,sqlx和gorm查询不同条数数据性能对比,机器配置 8核/16G,mysql分别最大连接数为1 和 最大连接数500最大空闲连接数100的情况下测试。package tesstimport ( "fmt" "testing" "time" "github.com/jmoiron/sqlx" "gorm.io/driver/mysql" "gorm.io/gorm")type ShardingDB struct { ID u

2021-11-05 14:27:14 3987

原创 goland import 爆红(go list -m -json 报错)

异常场景按以下步骤创建项目后$ mkdir go-example && cd go-example$ go env -w GO111MODULE=on$ go env -w GOPROXY=https://goproxy.cn,direct$ go mod init go: creating new go.mod: go-example$ lsgo.mod导入 gin 包,且命令行下测试代码可运行。异常:goland 打开项目后,因为 go list -m -

2021-02-16 18:54:35 2921 2

原创 golang grpc protobuf 接收/发生未知对象

golang grpc protobuf 接收/发送未知对象grpc 无法像 http 那也直接把未知对象赋值给 interface 的引用,需要解析为pb定义的具体结构,可以用 google/protobuf/struct.proto 中的 struct 接收 object 类型,然后在golang里面进行解析,代码如下。效果:proto定义:syntax = "proto3";import "google/api/annotations.proto";import "google/pro

2020-10-28 18:11:05 966

原创 golang-mako 模版引擎二进制制作 (二)

golang-mako 模版引擎二进制制作一、效果:go语言通过exec传入模版和变量,去调用制作好的python二进制,并接收渲染结果。❯ go run test.go

2020-10-13 16:20:04 183

原创 mako 模版引擎二进制制作 (一)

mako 模版引擎二进制制作一、效果:编译好的二进制,可以根据命令行输入的模版和变量参数,将模版渲染完客户端输出。❯ ./test "{\"Template\":\"hello,\${name}! \${test}\",\"vars\":{\"name\":\"lgh\",\"test\":\"success\"}}"

2020-10-13 14:33:06 129

原创 Shell 学习

Shell 学习局部环境变量1. 变量命名规则:以小写字母命名2. 数组变量的使用# 声明数组局部变量[root@VM_12_72_centos ~]# mytest=(one two three) # 取数组值[root@VM_12_72_centos ~]# echo $mytestone[root@VM_12_72_centos ~]# echo ${mytest[2]}three[root@VM_12_72_centos ~]# echo ${mytest[1]}tw

2020-07-20 09:26:56 74

原创 golang 学习 - chan以及chan的一下用例

golang 学习 - chan1. 通道// _通道_ 是连接多个 Go 协程的管道。你可以从一个 Go 协程// 将值发送到通道,然后在别的 Go 协程中接收。package mainimport "fmt"func main() { // 使用 `make(chan val-type)` 创建一个新的通道。 // 通道类型就是他们需要传递值的类型。 messages := make(chan string) // 使用 `channel <-

2020-06-28 16:38:53 611 1

原创 golang 学习 - 闭包

golang 学习 - 闭包package mainimport "fmt"// 这个 `intSeq` 函数返回另一个在 `intSeq` 函数体内定义的// 匿名函数。这个返回的函数使用闭包的方式 _隐藏_ 变量 `i`。func intSeq() func() int { i := 0 return func() int { i += 1 return i }}func main() { // 我们调用 `intSe

2020-06-28 15:35:56 110

原创 git config

git 配置文件[user] name = lgh email = [email protected][color] branch = auto ui = auto status = auto[alias] st = status lgdo = log --decorate --oneline lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%ar) %C(bold bl

2020-06-25 15:44:41 124

原创 go 命令行库 cobra 学习与使用

go 命令行库 cobra 学习与使用一、Cobra 学习1. Cobra 介绍Cobra是一个库,其提供简单的接口来创建强大现代的CLI接口,类似于git或者go工具。同时,它也是一个应用,用来生成个人应用框架,从而开发以Cobra为基础的应用。2. Cobra 概念Cobra基于三个基本概念commands,arguments和flags。commands :行为arguments :数值flags : 表示对行为的改变基本模型如下:appName command argumen

2020-06-23 14:56:18 915

原创 CPU一直很高 如何定位问题?

CPU一直很高 如何定位问题?1. top 命令找出占用 cpu资源最多的进程查看进程运行信息表top -c按进程使用率排序输入P2. 查找进程中最耗CPU的线程查看线程运行信息表top -Hp 7521按进程使用率排序输入P3. 将线程 pid转化为 16 进制之所以要转化为16进制,是因为堆栈里,线程id是用16进制表示的。4. 打印进程堆栈,找到当前线程再干什么jstack 7521 | grep ‘1da4n’ -C5 --color打印进程

2020-05-14 11:16:06 557

原创 SpringBoot Swagger 快速 配置与使用

POM依赖<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.8.0</version></dependency><de...

2020-04-14 18:41:06 140

原创 Redis 数据持久化方式

Redis 数据持久化传统数据持久化方式将数据存储的结构清除,只保留数据将数据结构以及数据都保留下来RDB(快照持久化)redis可以通过创建某一时间结点的副本,将数据保留下来。既可以通过该副本让其他服务器拥有一样的数据,也可以用来重启服务器的时候使用。AOF(追加文件)redis通过保留每一次更改redis数据库的操作指令,写入硬盘中的AOF文件中,而且可以设置同步时间,最好是...

2020-03-14 14:16:49 108

原创 Redis 数据结构

Redis的数据结构字符串列表字典集合有序集合每种数据结构的底层实现1.字符串Redis虽然是由C语言编写的,但是没有使用C语言传统的字符串表示,而是自己构建了一种名为简单动态字符串(Simple Dynamic String SDS)的抽象类型,并且将SDS用作Redis的默认字符串。SDS还被用做缓存区,AOF的缓存区。SDS的好处是它的底层实现数据结构中除了传统字符...

2020-03-14 14:16:11 163

原创 Redis简介与优点

Redis简介Redis是什么REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统。Redis 提供了一些丰富的数据结构,包括 lists、sets、ordered sets 以及 hashes ,当然还有和 Memcached 一样的 strings 结构。Redis 当然还包括了对这些数据结构...

2020-03-14 14:14:54 282

原创 Mybatis 基本使用介绍

环境搭建需要的pom依赖 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.36</version> </dep...

2020-03-06 15:48:14 79

原创 Mysql复习学习_01_关于插入长度超过n问题的补充

一、n在不同数据类型中的不同含义int(n)n 不代表最大存储长度 n只是代表位数不够以0补存位数;存储最大数据依然是4个字节。char(n)n代表的字符的长度,重点是字符的长度,不是字节或其他。不可以插入超过n的长度的字符串。varchar(n)变成字符串,不可以插入超过n的长度的字符串。二、长度的三种模式# 查询长度的模式show variables like 'sql_mo...

2019-11-22 16:57:07 176

原创 Mysql复习学习_01_基础内容

简单介绍前面都是一些数据类型等概念知识,可以直接跳到下面的重点内容。一、Sql介绍Sql(Structured Query Language)是结构化的数据查询语句。以 “;” 结束;不区分大小写;注释具有以下方式 单行注释:# 或者 -- 多行注释:/*注释*/ 二、数据类型主要分为以下几种:数值类型浮点类型字符串类型时间日期类型1.数值类型每个数值类型...

2019-11-22 00:57:19 103

原创 ThreadLoacl分析

一、使用场景如果一段代码中的数据必须与另一段代码共享,且这些共享数据的可见范围在同一个线程之内,就可以使用 java.lang.ThreadLocal来解决。二、实现原理及其源码每个Thread里面其实都有一个 ThreadLocal.ThreadLocalMap 里面存储着ThreadLocal在当前Thread运行时存储的value。ThreadLocal的get()、set()方法都基...

2019-11-19 17:31:30 197

原创 springboot 无法访问静态资源问题

问题1:路径映射错误在application.properties下添加以下配置你想在url访问的请求路径spring.mvc.static-path-pattern=/image/**#资源映射地址,图片存放的真实路径spring.resources.static-locations=classpath:/static/img/问题2:自定义了WebConfig继承了WebMvcCo...

2019-11-15 09:12:09 329

原创 springboot JSR 303参数校验使用

一、使用场景:在我们应用程序的业务逻辑中,经常会碰到参数校验的情况,比如在Controller中,我们的参数是一个Entity的时候,经常要判断这个Entity的字段是否是null之类或者是长度等。通常来讲,我们用比如StringUtils或者是if等来进行教研,这样在我们的代码层上面就会带来很不好的体验,阅读、维护的成本会大大增加,造成冗余。因此有了这个JSR 303。二、添加pom.xml...

2019-11-14 09:28:48 125

原创 springboot 业务逻辑异常处理方式

一、使用场景业务中会出现各种不符合要求的参数以及逻辑,这时为了方便一般都会通过 throw new GlobalExcetion(错误信息) 抛出这个不符合逻辑的异常情况,然后通过全局异常处理器进行判断返回给前端。二、如何使用步骤:需要根据业务需求创建需要的异常类通过ExceptionHandler捕获异常进行处理返回前端1.定义异常类很简单,只要继承RuntimeExceti...

2019-11-14 09:01:14 727 1

原创 maven springboot Redis环境搭建

一、添加pom.xml依赖添加Jedis依赖添加Fastjson依赖<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId></dependency><dependency> <g...

2019-11-13 00:56:52 396 1

原创 maven springboot mybatis&druid环境搭建

一、添加pom.xml依赖 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.1</version&g...

2019-11-11 00:28:02 96

原创 maven springboot thymeleaf环境搭建

一、添加pom.xml依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId></dependency>二、在application.pr...

2019-11-10 00:47:28 252

原创 maven springboot web项目环境搭建

一、pom.xml添加依赖1.第一步在dependencies标签上面添加以下内容<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <versio...

2019-11-10 00:35:15 332

原创 Java11 高效垃圾回收器-ZGC

一:ZGC介绍ZGC 是最新的 JDK1.11 版本中提供的高效垃圾回收算法,ZGC 针对大堆内存设计可以支持 TB 级别的堆,ZGC 非常高效,能够做到 10ms 以下的回收停顿时间。ZGC实现的依赖技术:着色指针着色指针是一种将信息存储在指针(或使用Java术语引用)中的技术。因为在64位平台上(ZGC仅支持64位平台),指针可以处理更多的内存,因此可以使用一些位来存储状态。 ZG...

2019-10-29 21:11:13 979

原创 进程调度算法

时间片轮转调度算法每当执行进程调度时,进程调度程序总是选出就绪队列的队首进程,让它在CPU上运行一个时间片的时间。时间片是一个小的时间单位,通常为10~100ms数量级。先来先服务调度算法早就绪的进程在就绪队列的前面,迟就绪的进程排在就绪队列的后面,那么先来先服务总是把当前处于就绪队列之首的那个进程调度到运行状态。也就是说,它只考虑进程进入就绪队列的先后,而不考虑它的下一个CPU周期的长短及...

2019-10-29 00:21:31 193

原创 进程和线程的区别与联系

进程进程(process)是操作系统结构的基础;是一次程序的运行(在系统中正在运行的一个应用程序),它是系统进行资源分配的基本单元,在内存中有其完备的数据空间和代码空间,拥有完整的虚拟空间地址。一个进程所有数据和变量属于它自己。一个进程至少拥有一个线程,多个进程并发执行。由于在创建或撤销进程时,系统都要为之分配或回收资源,如内存空间、I/O设备等。因此,操作系统为此所付出的开销将显著地大于在创建...

2019-10-28 23:04:58 137

原创 HTTP请求有哪些,以及HTTP状态码

一:HTTP请求1.GET获取资源(请求指定页面信息,并返回实体主体)2.HEAD获取报文首部和GET方法类似,但是只返回报文首部主要用于确认url的有效性已经资源更新日期时间等。3.POST提交数据进行处理请求(提交表单、上传文件),有可能导致新的资源的建立或原有资源的修改4.PUT上传资源(从客户端向服务器传送的数据取代指定文档的内容)5.PATCH对资源进行...

2019-10-20 11:51:32 316

原创 发送一个url请求到页面渲染完成经历的流程

访问顺序1.在浏览器输入网址(url)2.域名解析3.TCP建立连接4.浏览器向服务器发送http请求5.服务器接收请求6.页面渲染一:在浏览器输入网址(url)在浏览器地址栏输入网址二:域名解析DNS解析:域名到IP地址的转换过程。域名的解析工作由DNS服务器完成。解析后可以获取域名相应的IP地址DNS解析过程:1. 先去本地hosts文件中读取对应ip映射,如果找到跳...

2019-10-20 10:26:25 910

原创 HashMap的4种遍历方式

直接上代码,简单高效public class MyHashMap{ static void method1(Map<String, String> map){ System.out.println("通过Map.keySet遍历key和value:"); for(String key: map.keySet()){ S...

2019-10-16 17:57:11 69

原创 JVM运行时数据区总结

一、运行时数据区分为以下几个模块注:其中本地方法栈、虚拟机栈、程序计数器是单线程私有,Java堆和方法区多线程共享二、分区简单介绍1. 虚拟机栈虚拟机栈是由栈帧组成的,调用一个方法就往虚拟机栈中压入一个栈帧。栈帧用于存储局部变量表、操作数栈、动态链接、方法出口等信息。2.程序计数器当前线程所执行的字节码行号指示器。3.本地方法栈为虚拟机用到的Native方法服务。4.Java堆...

2019-09-23 23:32:41 60

原创 java Integer.valueOf()源码分析

一:new Integer() 与 Integer.valueOf() 的区别1.首先先举一个例子Integer a = new Integer(111);Integer b = new Integer(111);System.out.println(a == b); // falseInteger m = Integer.valueOf(111);Integer n = Int...

2019-09-09 00:23:52 850 1

原创 Java继承类执行代码顺序

2019-08-30 23:34:32 196

转载 Java修饰符总结

2019-08-30 23:02:46 54

转载 Java修饰符总结

Java修饰符![在这里插入图片描述](https://img-blog.csdnimg.cn/20190830225903818.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5ODMzNjEy,size_16,color...

2019-08-30 23:00:20 59

转载 Mybatis逆向工程

再经历1小时折磨后,终于没有bug了,总结一下第一步导入依赖,千万不要冲突了,我因为冲突弄了半天<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>sprin...

2019-08-03 20:50:34 78

转载 classLoad和forName的区别与联系

为什么要把ClassLoader.loadClass(String name)和Class.forName(String name)进行比较呢,因为他们都能在运行时对任意一个类,都能够知道该类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性。在比较它俩之前需先了解一下java类装载的过程java类装载过程分为3步:1:加载Jvm把class文件字节码加载到内存中,并将这些静...

2019-06-23 13:29:27 149

原创 234. Palindrome Linked List java实现

234.Given a singly linked list, determine if it is a palindrome.这个代码时间复杂度和空间复杂度虽然不咋地,但是,这个想法很优秀,用递归实现了链表的倒序,自己画一下运行步骤,一下子就看出来了。class Solution { ListNode first = null; public boolean isPali...

2019-06-02 00:10:30 154

空空如也

空空如也

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

TA关注的人

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