自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Gandoph的博客

天道酬勤

  • 博客(118)
  • 资源 (1)
  • 收藏
  • 关注

原创 并发包有了AtomicLong为什么还需要LongAdder?

1.AutomaticLong和LongAdder区别       AutomaticLong的底层是通过CAS(compareAndSwap)来实现线程的同步,是在一个死循环内不断的尝试修改目标的值,直到修改成功。如果在竞争不激烈的情况下,它修改成功的概率很高,否则的话修改失败的概率就会很高, 在大量修改失败的时候这些原子操作就会多次循环尝试, 因此性能就会受到影响。对于普通类型的long和...

2018-08-11 09:47:26 1723 1

原创 数据结构经典算法

1.数组中除了两个数只出现过一次,其他的均出现过两次,请找出这两个只出现过一次的数。       例如:{10,9,8,7,6,6,7,8,9,10,5,5,4,3};4和3只出现过一次,请找出出现过一次的数。首先想到的代码应该是上一个提到的遍历两次取出没有找到的相同的数字,代码如下:public static List findOnlyNum(int[] array) { List&...

2018-07-25 22:13:03 1580

原创 高并发下接口幂等性解决方案

一、背景       我们实际系统中有很多操作,是不管做多少次,都应该产生一样的效果或返回一样的结果。 例如1. 前端重复提交选中的数据,应该后台只产生对应这个数据的一个反应结果;2. 我们发起一笔付款请求,应该只扣用户账户一次钱,当遇到网络重发或系统bug重发,也应该只扣一次钱;3. 发送消息,也应该只发一次,同样的短信发给用户,用户会哭的;4. 创建业务订单,一次业务请求只能创建一个,创建多个...

2018-07-15 23:01:54 95639 22

原创 Java方法区、永久代、元空间、常量池详解

 1.JVM内存模型简介堆——堆是所有线程共享的,主要用来存储对象。其中,堆可分为:年轻代和老年代两块区域。使用NewRatio参数来设定比例。对于年轻代,一个Eden区和两个Suvivor区,使用参数SuvivorRatio来设定大小; Java虚拟机栈/本地方法栈——线程私有的,主要存放局部变量表,操作数栈,动态链接和方法出口等; 程序计数器——同样是线程私有的,记录当前线程的行号...

2018-07-14 18:55:20 37170 36

转载 为什么Elasticsearch查询速度比B-tree块?

1.Elasticsearch简介      Elasticsearch是通过Lucene的倒排索引技术实现比关系型数据库更快的过滤。特别是它对多条件的过滤支持非常好,比如年龄在18和30之间,性别为女性这样的组合查询。倒排索引很多地方都有介绍,但是其比关系型数据库的b-tree索引快在哪里?到底为什么快呢?笼统的来说,b-tree索引是为写入优化的索引结构。当我们不需要支持快速的更新的时候,可以...

2018-07-12 22:15:56 14013 7

原创 Comparable和Comparator

Java比较器Comparable和Comparator详解排序原理简介数组Arrays.sort()排序原理通过Java API文档知道,Arrays.sort()调用的是DualPivotQuicksort.sort()方法,如下代码片段所示: public static void sort(int[] a) { DualPivotQuicksort.sort(a, 0, a.length - 1, null, 0, 0); }DualPivotQuicksort.s

2022-03-20 14:33:27 895

原创 Go快速入门

一、Go语言概述 Go是一种编译型语言,它结合了解释型语言的游刃有余,动态类型语言的开发效率,以及静态类型的安全性。它也打算成为现代的,支持网络与多核计算的语言。要满足这些目标,需要解决一些语言上的问题:一个富有表达能力但轻量级的类型系统,并发与垃圾回收机制,严格的依赖规范等等。这些无法通过库或工具解决好,因此Go也就应运而生了。Go是一种新的语言,一种并发的、带垃圾回收的、快速编...

2019-07-14 14:46:03 1123

原创 Java8性能监控与调优

前言生产环境发生了内存溢出该如何处理?生产环境应该给服务器分配多少内存合适?如何对垃圾收集器的性能进行调优?生产环境CPU负载飙高如何处理?生产环境应该给应用分配多少线程合适?不添加log的情况下,如何确定请求是否执行了某一行代码?不添加log的情况下,如何实时的查看某个方法的入参与返回值?JVM的字节码是什么东西?循环体中做字符串+拼接为什么效率低?字符串+拼接一定就是St...

2019-07-07 11:00:21 1191

原创 CentOS7安装Docker和Kubadm

一、卸载旧版本的Docker# 如果系统没有装过docker可跳过此步骤[root@localhost luna]$ yum remove docker docker-common container-selinux docker-selinux docker-engine -y二、安装yum-utils[root@localhost luna]$ yum install -y ...

2019-06-30 18:26:08 535

原创 Go函数和方法的区别

在Go语言中,函数和方法不太一样,有明确的概念区分。其他语言中,比如Java,一般来说函数就是方法,方法就是函数,但是在Go语言中,函数是指不属于任何结构体、类型的方法,也就是说函数是没有接收者的;而方法是有接收者的,我们说的方法要么是属于一个结构体的,要么属于一个新定义的类型的。一、函数 函数和方法虽然概念不同,但是定义非常相似。函数的定义声明没有接收者,...

2019-06-26 22:42:38 5144 2

转载 自己动手写一个服务网关

一、引言1.1什么是网关?为什么需要使用网关? 如图所示,在不使用网关的情况下,我们的服务是直接暴露给服务调用方。当调用方增多,势必需要添加定制化访问权限、校验等逻辑。当添加API网关后,再第三方调用端和服务提供方之间就创建了一面墙,这面墙直接与调用方通信进行权限控制。本文所实现的网关源码抄袭了---Oh,不对,是借鉴。借鉴了Zuul网关的源码,提炼出其核心思路,实现了一...

2019-04-15 17:38:02 1509 1

原创 Java自定义对象实现双向链表

package com.luna.util;/** * 定义双向链表结构对象:考虑到双向链表可以存储基本数据类型、字符串、对象故节点封装用泛型参数; * 考虑到双向链表数据结构的隐私和安全性,链表的所有属性和节点内部定义类均用private修饰;双向 * 链表:双向链表(双链表)是链表的一种。和单链表一样,双链表也是由节点组成,它的每个数据结点中 * 都有两个指针,分别指向直接后继和...

2019-04-05 17:45:10 611

转载 浅谈JVM调优

1.数据类型 Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:它代表的值就是数值本身,而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。基本类型包括:byte、short、int、long、char、float、double、boolean;引用类型包括:类类型、接口类型...

2019-03-23 11:57:26 307

原创 Markdown——写作从未如此简单

一、标题#MarkDown一级标题1##MarkDown二级标题1(自带下划线)###MarkDown三级标题####MarkDown四级标题#####MarkDown五级标题######MarkDown六级标题MarkDown一级标题2===MarkDown二级标题2----二、段落 一级标题(回车后按Table键实现文本块功能)&#1...

2019-03-11 13:09:02 263

原创 JS问题笔记

一、JS集合对象值的解析 初始化JS集合对象objectList: {"1":1,"2":3,"3":5,"4":7,"5":9,"6":11},解析objectList(key,value),对应key的value取值范围为当前值(包含当前值)到下一等级的初始值。var objectList;function validateGrades(){ var level

2019-03-06 17:04:53 141

原创 Linux性能优化

一、Linux性能指标概述 当看到性能指标时,我相信“高并发”和“响应快”一定是你最先想到的。而它们也正对应着性能优化的两个核心指标——“吞吐”和“延时”。这两个指标是从应用负载的角度来考察性能,并直接影响了产品终端用户的体验。性能分析,其实就是找出应用或系统的瓶颈,并设法去避免或者缓解它们,从而更高效地利用系统资源处理更多的请求。这包含了以下一系列的步骤: 选择指标评估应用程...

2019-03-02 08:14:05 4337

原创 Idea Mac OS 80端口被占用

一、概述       用Mac电脑做开发时,经常会碰到远程调试或者调用时需要用80端口来启动WEB服务,Intellij IDEA上把tomcat的默认端口改成80,启动web应用时一直提示80端口被占用。使用lsof -i:80命令查找发现是Chrome浏览器占用80端口,然后杀掉浏览器进程再次启动web应用,仍然提示80端口被占用。经过Google发现是由于 Mac 系统限制非root用户...

2019-01-25 18:20:36 2150 1

原创 Received fatal alert: protocol_version” ——Maven Project Error

Received fatal alert: protocol_version” or “peer not authenticated” from Maven Central?解决方案       这个错误主要发生在jdk7的maven项目中,因为jdk7默认不支持TSL 1.2协议,故可以手动安装TSL 1.2协议的支持,maven命令如下所示:mvn -Dhttps.protoco...

2019-01-24 18:19:56 4627

原创 猫、路由器和交换机的区别和联系

       记得前些年网络互联网并没有现在这么普及,尤其是在农村,对互联网更是知之甚少,而对构成互联网的一系列设备更是只有当地专业人士知道。时至如今,互联网普及到全国各地,大部分人都知道如何上网,如何使用互联网,却仍旧不知道猫、路由器和交换机的区别和联系。下面就给大家科普一下,什么是猫、路由器、交换机。猫、路由器和交换机都属于计算机网络系统中网络层,是用来使PC端连接到因特网中的连接设备。下面一...

2019-01-16 15:54:39 2120 2

原创 Linux基础命令大全

目录 一、学会使用命令帮助1.1概述1.2帮助命令使用查看程序的binary文件所在路径二、文件及目录管理2.1创建和删除2.2目录切换2.3列出目录项2.4查找目录及文件2.5查看文件内容2.6查找文件内容2.7文件目录与文件权限修改2.8给文件增加别名2.9管道和重定向2.10设置环境变量2.11bash快捷输入或删除2....

2019-01-16 15:38:27 542

转载 一条SQL查询语句是如何执行的?

一、MySQL执行引言       看一个事儿千万不要直接陷入细节里,你应该先鸟瞰其全貌,这样能够帮助你从高维度理解问题。同样,对于 MySQL 的学习也是这样。平时我们使用数据库,看到的通常都是一个整体。比如,你有个最简单的表,表里只有一个 ID 字段,在执行下面这个查询语句时:mysql> select * from T where ID=10;        我们看到的只...

2018-12-19 09:32:00 454

转载 减少代码中臃肿的if-else

一、概述       不知大家有没遇到过像“横放着的金字塔”一样的if else嵌套:if (true) {    if (true) {        if (true) {            if (true) {                if (true) {                    if (true) { ...

2018-12-17 09:31:41 446

原创 过滤器、拦截器、监听器的区别详解

一.定义过滤器:Java过滤器能够对目标资源的请求和响应进行截取。依赖于servlet容器,在实现上基于函数回调,可以对几乎所有请求进行过滤,但是缺点是一个过滤器实例只能在容器初始化时调用一次。使用过滤器的目的是用来做一些过滤操作,获取我们想要获取的数据,比如:在过滤器中修改字符编码;在过滤器中修改HttpServletRequest的一些参数,包括:过滤低俗文字、危险字符等过滤器是一个程序,...

2018-12-16 11:58:09 1359 2

转载 堆栈的深入理解

一、引言       编程语言书籍中经常解释值类型被创建在栈上,引用类型被创建在堆上,但是并没有本质上解释这堆和栈是什么。我仅有高级语言编程经验,没有看过对此更清晰的解释。我的意思是我理解什么是栈,但是它们到底是什么,在哪儿呢(站在实际的计算机物理内存的角度上看):1.在通常情况下由操作系统(OS)和语言的运行时(runtime)控制吗?2.它们的作用范围是什么?3.它们的大小由什么决定?4....

2018-12-15 11:44:06 421 1

转载 MAC终端命令颜色设置

 一、简单设置       打开 terminal 会发现 ls 和 grep 后的结果是没有色彩的,这时候可以这么干:用 vim 打开文件 ~/.bash_profile,然后把下边的环境变量放进去:# Tell ls to be colourfulexport CLICOLOR=1export LSCOLORS=Exfxcxdxbxegedabagacad# Tell g...

2018-11-23 10:38:25 6382 3

转载 SpringMVC监听器详解

一、ContextLoaderListener          ContextLoaderListener监听器的作用就是启动Web容器时,自动装配ApplicationContext的配置信息。因为它实现了ServletContextListener这个接口,web.xml配置这个监听器启动容器时,就会默认执行它实现的方法。在ContextLoader-Listener中关联了Contex...

2018-11-20 15:22:14 13773 2

原创 Top K问题详解

一、Top K问题的概述       在大规模数据处理中,经常会遇到的一类问题:在海量数据中找出出现频率最好的前k个数,或者从海量数据中找出最大的前k个数,这类问题通常被称为top K问题。例如在搜索引擎中,统计搜索最热门的10个查询词;在歌曲库中统计下载最高的前10首歌等。针对top K类问题通常比较好的方案是分治+Trie树/hash+小顶堆,即先将数据集按照Hash方法分解成多个小数据集...

2018-10-14 22:39:14 1686 1

原创 堆排序算法详解

一、堆排序算法原理和动态图解       将待排序的序列构造成一个大顶堆。此时,整个序列的最大值就是堆顶的根节点。将它移走(其实就是将其与堆数组的末尾元素交换,此时末尾元素就是最大值),然后将剩余的n-1个序列重新构造成一个堆,这样就会得到n个元素中的次最大值。如此反复执行,就能得到一个有序序列了。这个过程其实就是先构建一个最大/最小二叉堆,然后不停的取出最大/最小元素(头结点),插入到新的队...

2018-10-14 16:45:41 30241 24

转载 JAVA线程通信详解

目录一、概述二、wait/notify 机制三、Condition四、生产者/消费者模式五、线程间的通信——管道六、方法Join的使用一、概述       线程与线程之间不是相互独立的个体,它们彼此之间需要相互通信和协作,最典型的例子就是生产者-消费者问题:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间内,生产者必须释放对临界资源(即队列...

2018-10-14 09:11:36 23189 5

转载 Http和Https的浅析

1.Http与Https的区别HTTP 的URL 以http:// 开头,而HTTPS 的URL 以https:// 开头; HTTP 是不安全的,而 HTTPS 是安全的; HTTP 标准端口是80 ,而 HTTPS 的标准端口是443; 在OSI 网络模型中,HTTP工作于应用层,而HTTPS 的安全传输机制工作在传输层; HTTP 无法加密,而HTTPS 对传输的数据进行加密;...

2018-09-25 23:14:01 285

原创 Java对象的Clone

1.对象Clone的意义Java中对象的克隆是通过实现Cloneable接口,重写Object的clone()来实现的。Object类clone()源代码如下所示:Object中的clone方法是protected的,所以要使用clone就必须继承Object类(默认)。并且为了可以使其它类调用该方法,覆写克隆方法时必须将其作用域设置为public; Object中的clone方法是na...

2018-09-22 11:38:19 337

原创 两个大数相算法研究

       1.在平常的业务中也许会有很大的数字无法使用int或者long来存储了,那么只能存储成string类型,当需要两个这样的数字相加的时候,怎么办呢?算法如下所示:package com.luna.base;//借用了工具包commons-lang3import org.apache.commons.lang3.StringUtils;public class BigNu...

2018-09-19 22:05:01 358

原创 数据库分组查询最大值问题

1.初始化数据库表和数据SET NAMES utf8mb4;SET FOREIGN_KEY_CHECKS = 0;-- ------------------------------ Table structure for employee-- ----------------------------DROP TABLE IF EXISTS `employee`;CREATE T...

2018-07-29 13:06:31 920

原创 大幅提高慢如蜗牛的GitHub响应速度?

1.解决方案修改主机的hosts文件:添加映射13.229.188.59 github.com; 打开网址:http://tool.chinaz.com/dns/,在检测前面的输入框中输入:github.com,如下图所示:找到对应的域名的TTL值较大的IP和域名组成域名列表,将对应的列表值添加到PC的hosts文件中; Ubuntu/Mac OS/CentOS修改/etc/host...

2018-07-28 22:46:28 649

原创 如何判断一个字符串是否是数字?

1.用JAVA自带的函数package com.luna.test;public class IsNUmber { public static void main(String[] args) { String s1 = "10"; String s2 = "-10"; String s3 = "a10"; String s4 = "10b"; String s5 =...

2018-07-26 23:08:41 1950 1

转载 为什么重写Java对象的equals()方法需要同时重写hashcode()方法?

1.equals()的所属以及内部原理(即Object中equals方法的实现原理)       说起equals方法,我们都知道是超类Object中的一个基本方法,用于检测一个对象是否与另外一个对象相等。而在Object类中这个方法实际上是判断两个对象是否具有相同的引用,如果有,它们就一定相等。实际上我们知道所有的对象都拥有标识(内存地址)和状态(数据),同时“==”比较两个对象的的内存地址...

2018-07-25 22:50:15 1421

原创 Java排序算法进阶(希尔、堆、归并、奇偶)

package com.luna.test;import java.util.ArrayList;import java.util.List;public class JavaSort { public static void main(String[] args) { int a[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98...

2018-07-23 23:20:07 437

转载 逻辑主键、业务主键和复合主键

1.概念定义主键(PRIMARY KEY):表通常具有包含唯一标识表中每一行的值的一列或一组列。这样的一列或多列称为表的主键 (PK),用于强制表的实体完整性。 外键(FOREIGN KEY):外键 (FK) 是用于建立和加强两个表数据之间的链接的一列或多列。在外键引用中,当一个表的列被引用作为另一个表的主键值的列时,就在两表之间创建了链接。这个列就成为第二个表的外键。 聚集索引:聚集索引...

2018-07-17 00:09:49 3746

转载 SpringMVC的实现原理

1.SpringMVC框架介绍       Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。Spring的MVC框架主要由DispatcherServlet、处理器映射、处理器(控制器)、视图解析器、视图组成。2.SpringMV...

2018-07-15 22:42:05 419

转载 Tomcat与JVM的优化

Tomcat 的缺省配置是不能稳定长期运行的,也就是不适合生产环境,它会死机,让你不断重新启动,甚至在午夜时分唤醒你。对于操作系统优化来说,是尽可能的增大可使用的内存容量、提高CPU 的频率,保证文件系统的读写速率等。经过压力测试验证,在并发连接很多的情况下,CPU 的处理能力越强,系统运行速度越快。Tomcat 的优化不像其它软件那样,简简单单的修改几个参数就可以了,它的优化主要有三方面,分为系...

2018-07-15 21:50:49 649

自动生成Dao、Service工具类

Spring+SpringMVC+Mybatis+Redis+OSS项目工具类大合集

2018-05-05

空空如也

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

TA关注的人

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