自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 go get xxx: disabled by GOPRIVATE/GONOPROXY解决方案

go拉包比如go get的时候出了这个错,资料比较少:disabled by GOPRIVATE/GONOPROXY长话短说,解决方案:给你的GOPROXY加上direct,注意逗号链接,如“export GOPROXY=https://goproxy.io,direct问题应该是设置了GOPRIVATE参数,要拉的包匹配了GOPRIVATE的路径,GOPROXY没设置直连,根据配置没地方找包,所以加上direct即可这个issues提到了这个错误https://github.

2021-03-15 17:52:38 4622

原创 go语言使用olivere/elastic es客户端实现SearchAfter深度分页

我们go项目里使用的es客户端是olivere/elastic包,资料比较少,SearchAfter的实现更是少,所以记录下来给有缘人,也给记性差的自己。关于深度分页、浅分页的区别优缺点另行了解,我的es版本是6.4,过低版本会不支持关于SearchAfter官方的简单实例https://www.elastic.co/guide/en/elasticsearch/reference/6.4/search-request-search-after.html简单演示下客户端的创建:impo

2020-05-12 21:26:48 3691 1

原创 goland debug : could not launch process: decoding dwarf section info at offset 0x0: too short

这是一个卡了我两天的报错(痛心),先上解决办法:解决办法:go build去掉参数-ldflags "-w" goland启动的时候会带上你设置的启动参数(如果你设置了)背景:我有两个go项目,项目A go版本 (1.13)什么问题都没有,项目B (go版本1.10)用ide的debug会报错如题:could not launch process: decoding dwarf section info at offset 0x0: too short过程:这种问题没头.

2020-05-11 19:35:27 599

原创 go单例实现—双重检测是否安全

起因今天看到项目中的kafka客户端包装结构体的获取是单例模式<br>单例的实现是老生常谈的问题了,懒汉饿汉线程安全,因为看到项目中写的还是有些问题,网上go单例实现的搜索结果比较少经测试也并不靠谱,所以在这记录下现状当前有的项目直接使用Mutex锁,有的就直接判断nil则创建,对于前者,每次都加锁性能差,对于后者则会出现多个实例,也就不是单例了改进进而想要改进一下...

2020-04-30 21:45:12 1320 2

原创 go同名字段复制工具函数(类似BeanUtils.copy)介绍和性能测试

介绍说明:本文是在介绍一个go的不同类型结构体的复制工具函数,能减少重复劳动,提高开发效率,让代码可读性强,减少出错几率本篇包含背景的介绍,工具函数源码的展示,性能测试等部分问题背景:故事的起因是看到了业务代码里有些字段比较多的部分,比如获取订单详情大概涉及到大几十个字段的复制,会有几十行甚至上百行的x.a = y.a这样的代码即问题的根源是dto和vo是不同类型的结构题...

2020-04-17 22:50:30 5081

原创 awk学习总结

本文算是学习的总结,整体是按照菜鸟教程的流程一步步练习的,多一些自己的理解AWK:awk [选项参数] 'script' var=value file(s)awk [选项参数] -f scriptfile var=value file(s)常用选项参数:-F fs指定输入文件分隔符,相当于内置变量FS指定分割字符fs是一个字符串或者是一个正则表达式如":"分隔-F: ","分隔...

2020-04-11 21:19:46 286

原创 gin框架源码阅读笔记:RouterGroup部分

engines包下:这个结构体是中间件和controller方法的格式:typeHandlerFuncfunc(*Context)加粗部分是比较重要的变量/结构体,上下文一半会提到RouterGroup相关:路由组定义:typeRouterGroupstruct {Handlers HandlersChainbasePath stringe...

2020-04-08 22:21:11 3220

原创 gin框架和xorm踩坑记录

记录一下实操过程中遇到的问题或者疑惑,也有一些是需要注意的点,既然花了时间解决就值得记录下来 required认为值为0不通过校验 背景: gin框架中一般用通过定义结构体中的字段Tag标签来设置参数校验规则和解析字段名,转json相关信息,其中字段是否为必须项规则写在字段Tag:`binding:"required"` 场景描述: 我定义了一个VO结构体用来绑定前端参...

2020-04-08 19:17:14 2784

原创 分库分表存在的问题

分布式事务的问题 跨节点 Join 的问题 跨节点合并排序分页的问题 多数据源管理问题 额外的数据管理负担和数据运算压力 扩容与部署对线上的影响事务问题在执行分库分表之后,由于数据存储到了不同的库上,数据库事务管理出现了困难。如果依赖数据库本身的分布式事务管理功能去执行事务,将付出高昂的性能代价;如果由应用程序去协助控制,形成程序逻辑上的事务,又会造成编程方面的负担。...

2019-09-20 16:30:35 386

原创 mysql隔离级别要点

不介绍概念,记录要点mysql对acid的实现隔离性的实现原理就是锁,因而隔离性也可以称为并发控制、锁等。事务的隔离性要求每个读写事务的对象对其他事务的操作对象能互相分离。原子性、一致性和持久性由数据库的 redo log 和 undo log 实现。redo log 称为重做日志,用来保证事务的原子性和持久性,恢复提交事务修改的页操作。undo log 来保证事务的一致性...

2019-09-20 13:01:10 146

原创 mybatis 一级缓存二级缓存要点

惯例,不介绍概念,这里记录需要记录的要点: 缓存通过HashMap实现 一级缓存作用域是sqlSession,默认开启,在高并发或者分布式(每个节点有自己的缓存)的情况下会产生脏数据。所以建议 一级缓存级别调成 statement,每次查询结束都会清掉一级缓存 mybatis集合spring一级缓存失效问题:https://www.cnblogs.com/zemliu/...

2019-09-20 09:37:29 178

原创 nssm把jar包制作成windows服务遇到的问题(无法启动服务,服务器并未返回错误)

关于nssm的用法网上很多,不再赘述,这次的应用场景是把jar包制作成windows服务,遇到了一些问题资料比较少记录一下启动路径指向一个bat文件第一个问题就是制作完,服务起不来,错误如图:查到网上有人遇到过:https://blog.csdn.net/v6543210/article/details/81944191缺少系统环境变量,在设置里加上如下(根据自身情况调整路径)...

2019-09-18 12:10:02 6342

原创 java.lang.NoClassDefFoundError: Could not initialize class XXX

该错误是类初始化时遇到该异常,除了检查异常信息中的类在依赖中是否存在,很大可能就是类里某static变量或static代码块,它的相关依赖类可能不存在。如上来自网络的错误原因,至于具体原因各自不通,这里记录下我这次的错误原因和解决办法我的情况是新启了个springboot项目,把用到的一些老项目的maven依赖原样复制过来了(包括其中的exclusion内容),结果访问接口的时候一个依...

2019-08-29 15:25:19 1759

原创 可达性分析算法中,哪些可以作为 root?

java垃圾回收的可达性分析算法, 列举可以作为root的对象:由于网上的博客回答都不全, 找了份来自help.eclipse.org的, 先上原文与连接供大佬参考, 后边挂上垃圾翻译, 不接受关于翻译的质疑! (认真脸)https://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.mat.ui.help%2Fconcepts%...

2019-03-16 17:59:19 1937

原创 sql语句正确mybatis查找不出结果不报错----映射关系不能加表名.列名

问题描述:项目中需要多表查询时相同的列起了别名, 在mybatis中查询无法得到left join的表中对应信息, 只有主表的信息在数据库中直接测试sql语句排除了语句问题, 也没有报错, 所以不是哪里敲错了最后关注在别名的问题上, 发现mybatis的映射关系中列名有别名必须用别名, 不能用表名. 列名的形式, 否则不会报错但就是查询不到该表的结果省略了很多无关列, 用一列说...

2019-01-19 16:51:36 2573

原创 Mybatis中and和循环or混用 (or转换成in)

这次项目用到一个and和or混用的场景 , 因为用到多个or(循环), 没想到好的办法最终转换成用 IN实现:场景:用left join链接多个表, 多个条件and筛选, 其中状态(state)条件筛选出多个可选状态的条目,本来想用and 和 or 但是 or的条件是个数组参数, 需要遍历states , 可能0个可能多个, 拼了半天没有成功 , 最后发现用 IN 和FOREACH...

2019-01-19 14:14:40 13954 1

原创 Java并发编程----ThreadLocal详解

ThreadLocal是什么首先,它是一个数据结构,有点像HashMap,可以保存"key : value"键值对,但是一个ThreadLocal只能保存一个,并且各个线程的数据互不干扰。ThreadLocal用于保存某个线程共享变量:对于同一个static ThreadLocal,不同线程只能从中get,set,remove自己的变量,而不会影响其他线程的变量, 在高并发场景下,可以实现...

2019-01-03 14:19:03 2185

原创 TCP三次握手与四次挥手及TCP各种细节

关于TCP的四层结构参考上一篇博客:https://blog.csdn.net/q5706503/article/details/85641790TCP三次握手所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换 TCP 窗口大小...

2019-01-03 09:42:28 2231

原创 网络----TCP/IP协议结构

为了把全世界的所有不同类型的计算机都连接起来,就必须规定一套全球通用的协议,为了实现互联网这个目标,互联网协议簇(Internet Protocol Suite)就是通用协议标准。Internet是由inter和net两个单词组合起来的,原意就是连接“网络”的网络,有了Internet,任何私有网络,只要支持这个协议,就可以联入互联网。因为互联网协议包含了上百种协议标准,但是最重要的两个协议...

2019-01-02 22:04:39 2425

原创 网络----OSI模型

 OSI(Open System Interconnect),即开放式系统互联。 一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互连模型。它是由国际标准化组织提出的一种概念模型,是一个试图使各种计算机在世界范围内互连为网络的标准框架。OSI定义了网络互连的七层框架(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层),即ISO开放互连系统参考模型。...

2019-01-02 21:19:22 3073 1

原创 单例模式 的 双重检查锁定 错在哪?

在Java多线程程序中,有时候需要采用延迟初始化来降低初始化类和创建对象的开销。双重检查锁定是常见的延迟初始化技术,但它是一个错误的用法。本文将分析双重检查锁定的错误根源 。双重检查锁定的由来在Java程序中,有时候可能需要推迟一些高开销的对象初始化操作,并且只有在使用这些对象时才进行初始化(单例)。此时程序员可能会采用延迟初始化。但要正确实现线程安全的延迟初始化需要一些技巧,否则很容易出...

2018-12-27 17:50:15 2122

原创 java中 Map, List与Set的 区别和联系

集合类存放于java.util包中。集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引(reference)。集合的主要分为三种类型:Set(集) List(列表) Map(映射)三者关系Collection├List│ ├LinkedList│ ├ArrayList│ └Vector│   └Stack└SetMap...

2018-12-24 16:52:25 2168

原创 Java中 ( Iterator ) 迭代器 详解 ( JDK8源码 )

Java集合框架的集合类,我们有时候称之为容器。容器的种类有很多种,比如ArrayList、LinkedList、HashSet...,每种容器都有自己的特点,ArrayList底层维护的是一个数组;LinkedList是链表结构的;HashSet依赖的是哈希表,每种容器都有自己特有的数据结构。因为容器的内部结构不同,很多时候可能不知道该怎样去遍历一个容器中的元素。所以为了使对容器内元素的操作...

2018-12-24 12:18:58 3020 1

原创 Https的加密过程 / 对称加密和非对称加密

先说具体过程client请求服务端(指定SSL版本和加密组件) server返回CA证书+公钥 client用机构公钥认证server返回的CA证书上的签名是否正确 client生成一个密钥R,用公钥对密钥R加密发送给server server用服务器的私钥解密获取密钥R 后续通信都是采用密钥R进行加密Https和Http区别WEB服务存在http和https两种通信方式,h...

2018-12-24 11:21:00 7692 1

原创 Java语言是" 解释执行" 的语言吗

本篇来自周志明的&lt;&lt;深入理解java虚拟机&gt;&gt;许多Java虚拟机的执行引擎在执行Java代码的时候都有解释执行(通过解释器执行)和编译执行(通过即时编译器产生本地代码执行)两种选择,在本章中,我们先来探讨一下在解释执行时,虚拟机执行引擎是如何工作的。解释执行Java语言经常被人们定位为“解释执行”的语言,在Java初生的JDK 1.0时代 ,这种定义还算是比较准...

2018-12-22 11:50:14 3480

原创 ConcurrentHashMap详解 ( JDK6,7,8 区别 )

线程不安全的HashMap因为多线程环境下,使用Hashmap进行put操作会引起死循环(导致CPU利用率接近100%), 数据丢失等情况 , HashMap是线程不安全的 ,所以在并发情况下不能使用HashMap。关于HashMap参考:https://blog.csdn.net/q5706503/article/details/85123141效率低下的HashTable容器...

2018-12-21 22:19:19 2988

原创 HashMap详解( JDK8 之前与之后对比)

HashMap简介HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。HashMap 继承于AbstractMap,实现了Map、Cloneable、java.io.Serializable接口。HashMap 的实现不是同步的,这意味着它不是线程安全的。它的key、value都可以为null。此外,HashMap中的映射不是有序的。HashMap 的实例...

2018-12-21 19:23:12 3054

原创 Java中Map的 entrySet() 详解以及用法(四种遍历map的方式)

Entry由于Map中存放的元素均为键值对,故每一个键值对必然存在一个映射关系。 Map中采用Entry内部类来表示一个映射项,映射项包含Key和Value (我们总说键值对键值对, 每一个键值对也就是一个Entry)Map.Entry里面包含getKey()和getValue()方法Iterator&lt;Map.Entry&lt;Integer, Integer&gt;&gt; ...

2018-12-20 15:09:52 150374 17

原创 深入理解 hashcode() 和 HashMap 中的hash 算法

前言Java中的HashMap非常常用也非常重要, 提到HashMap是离不开hashcode()方法的, 整天嘴边挂着HashMap、Hashtable、TreeMap、LinkedHashMap、IdentityHashMap、ConcurrentHashMap和WeakHashMap等词, 也许用起来简单, hash的原理也很简单, 经常不以为然, 但是细想下来总觉得有哪里有疑惑, 这里...

2018-12-20 12:09:13 18946 3

原创 JVM----重载 与 重写的本质 : 分派

本篇来自周志明的&lt;&lt;深入理解java虚拟机&gt;&gt;众所周知,Java是一门面向对象的程序语言,因为Java具备面向对象的3个基本特征:继承、封装和多态。本节讲解的分派调用过程将会揭示多态性特征的一些最基本的体现, 如“重载”和“重写”在Java虚拟机之中是如何实现的,这里的实现当然不是语法上该如何写, 我们关心的依然是虚拟机如何确定正确的目标方法。1.静态分派在开始...

2018-12-18 10:32:27 565 1

原创 JVM----类加载的过程

本篇来自周志明的<<深入理解java虚拟机>>上一篇介绍了类加载的时机:https://blog.csdn.net/q5706503/article/details/85012392这篇详细讲解一下 Java 虚拟机中类加载的全过程,也即是加载、验证、准备、解析和初始化这 5 个阶段所执行的具体动作加载 “加载” 是 “类加载”(Class L...

2018-12-15 17:11:10 271

原创 JVM----类加载的时机

本篇来自周志明的&lt;&lt;深入理解java虚拟机&gt;&gt;类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)7个阶段。其中验证、准备、解析三个部分统称为连接(...

2018-12-15 11:20:35 1578 1

原创 java 代理的原理与实现

Java中的动态代理,涉及到一种常用的设计模式--代理模式,而对于代理,根据创建代理类的时间点,又可以分为静态代理和动态代理。静态代理静态代理:由程序员创建或特定工具自动生成源代码,也就是在编译时就已经将接口,被代理类,代理类等确定下来。在程序运行之前,代理类的.class文件就已经生成静态代理简单实现静态代理:由程序员创建或特定工具自动生成源代码,也就是在编译时就已经将...

2018-12-14 17:10:28 367

原创 JAVA----静态方法上加锁 和 非静态方法加锁 区别

Synchronized修饰非静态方法,是对调用该方法的对象加锁,俗称“对象锁”。这里的对象加锁并非是说执行该加锁方法的时候整个对象的所有成员都不允许其他线程访问了,而是说该对象内所有的加锁的非静态方法共用这一把锁, 一个加锁非静态方法执行, 另一个加锁非静态方法不能执行,要等持有锁的线程释放锁, 不同对象之间的方法不互相作用这里举第一个例子:两个线程执行同一个对象的不同加锁非静态...

2018-12-14 00:24:15 7884 2

原创 通俗易懂happens-before理解

在JMM(JAVA内存模型)中,如果一个操作执行的结果需要对另一个操作可见,那么这两个操作之间必须存在happens-before关系。JMM可以通过happens-before关系向程序员提供跨线程的内存可见性保证(如果A线程的写操作a与B线程的读操作b之间存在happensbefore关系,尽管a操作和b操作在不同的线程中执行,但JMM向程序员保证a操作将对b操作可见)。 happen...

2018-12-13 23:02:28 4530 1

原创 为啥要指令重排序?

我们知道java在运行的时候有两个地方可能会把指令重排序,一个是编译器编译的的时候,一个是处理器运行的时候。那么为啥要用指令重排序呢?编译期重排序有啥好处?CPU计算的时候要访问值,如果常常利用到寄存器中已有的值就不用去内存读取了,比如说int a = 1;int b = 1;a = a + 1;b = b +1 ;就可能没有int a = 1;a = a ...

2018-12-12 22:54:24 2545

原创 并发与并行的区别

只是一个概念问题, 并不是很复杂, 网络上大多数的解释是:并发(concurrency):指应用能够交替执行不同的任务例:吃完饭-->喝口水-->继续吃饭-->再喝口水-->再吃饭......这时候时候就算是喝水和吃饭并发执行并行(parallellism):指应用能够同时执行不同的任务例:吃饭的时候边吃饭边打电话,这两件事情可以同时执行这...

2018-12-12 21:45:07 315

原创 JVM----G1垃圾收集器

本篇来自周志明的&lt;&lt;深入理解java虚拟机&gt;&gt;G1(Garbage-First)收集器是当今收集器技术发展的最前沿成果之一,早在JDK 1.7刚刚确立项目目标,Sun公司给出的JDK 1.7 RoadMap里面,它就被视为JDK 1.7中HotSpot虚拟机的一个重要进化特征。从JDK 6u14中开始就有Early Access版本的G1收集器供开发人员实验、试用,由此...

2018-12-08 23:49:35 183

原创 JVM----CMS垃圾收集器

本篇来自周志明的&lt;&lt;深入理解java虚拟机&gt;&gt;CMS(Concurrent Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的收集器。目前很大一部分的Java应用都集中在互联网站或B/S系统的服务端上,这类应用尤其重视服务的响应速度,希望系统停顿时间最短,以给用户带来较好的体验。CMS收集器就非常符合这类应用的需求。从名字(包含“Mark Sweep”...

2018-12-08 23:31:22 262

原创 JVM----根节点的枚举, 安全点与安全区域

本篇来自周志明的&lt;&lt;深入理解java虚拟机&gt;&gt;枚举根节点  以可达性分析中从GC Roots 节点找引用链这个操作为例,可作为GC Roots 的节点主要在全局性的引用(例如常量或类静态属性)与执行上下文(例如栈帧中的本地变量表)中,现在的很多应用仅仅方法区就有数百兆,如果要逐个检查这里面的引用,那么必然会消耗很多时间。  另外,可达性分析对执行时间的敏感还体现...

2018-12-08 22:45:49 806 1

空空如也

空空如也

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

TA关注的人

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