- 博客(48)
- 资源 (3)
- 收藏
- 关注
原创 IDEA批量修改变量快捷键
2.alt+F7(find usages):光标移至方法名,alt+F7,打开Find框,展示方法以及使用这些方法的地方3.Ctrl+F7(find usages in file):感觉同Ctrl+F(find...),但是,你会发现他可以同时查找多个单词,同时高亮显示用Ctrl+F的时候打开如下标志:通配符;然后自己加了个‘|’分隔符 ,达到了同样效果,所以
2022-05-07 12:49:31
1152
转载 git:修改.gitignore后生效
在使用git的时候我们有时候需要忽略一些文件或者文件夹。我们一般在仓库的根目录创建.gitignore文件在提交之前,修改.gitignore文件,添加需要忽略的文件。然后再做add commit push 等但是有时在使用过称中,需要对.gitignore文件进行再次的修改。这次我们需要清除一下缓存cache,才能是.gitignore 生效。具体做法:git rm -r --cached . #清除缓存git add . #重新trace filegit commit -m..
2022-01-26 20:37:54
8063
转载 intellij idea中快速抽取方法
问题:有时候一个方法里面嵌套了很多逻辑,想拆分为多个方法方便调用;或者一个方法复用性很高,这时,这个方法嵌套在局部方法里面肯定是不方便的,如何快速抽取出这个方法?public class Demo { private static void getInfo(Object obj) { Class<?> clazz = obj.getClass(); Method[] methods = clazz.getMethods(); for ...
2022-01-13 08:44:39
8485
转载 深入理解单例模式:静态内部类单例原理
本文主要介绍java的单例模式,以及详细剖析静态内部类之所以能够实现单例的原理。OK,废话不多说,进入正文。首先我们要先了解下单例的四大原则:1.构造私有。2.以静态方法或者枚举返回实例。3.确保实例只有一个,尤其是多线程环境。4.确保反序列换时不会重新构建对象。我们常用的单例模式有:饿汉模式、懒汉模式、双重锁懒汉模式、静态内部类模式、枚举模式,我们来逐一分析下这些模式的区别。1.饿汉模式:public class SingleTon{ private static ..
2021-03-11 16:57:40
598
原创 jvm进行Major GC的时候为什么会同时伴随Minor GC呢?
大家都知道在分代gc中,jvm会在青年代堆空间不足时触发Minor gc,在老年代堆空间不足时触发Full gc,但实际上,Full gc只是一个逻辑称呼,是同时进行Major gc和Minor gc的一个统称而已。那问题来了,为什么我们看不到只进行老年代堆内存回收而执行Major gc的情况呢?其实,jvm之所有这样是一种优化设计(其实也是一种妥协),目的是避免创建新生代引用老年代的跨代引用指针的Remember Set,同时,降低与之相关的Mutator写屏障开销。在空间和时间上都有很大的优化提
2020-12-09 15:04:10
796
5
转载 单例模式(防止反序列化恢复对象)
/** * 单例模式之防止利用反序列化恢复java对象 **/public class Singleton implements Serializable{ private static Singleton instance; private String name; private Singleton(String name){ System.out.println("调用有参数的构造器"); this.name = name; }.
2020-12-09 14:50:36
225
原创 十种GC收集器及原理(5)—G1
Garbage-First Collector(G1)是Oracle HotSpot Java虚拟机(JVM)6中引入的垃圾收集算法,自JDK 7 Update 4起受支持。它计划取代JVM 7中的并发标记清除收集器(CMS),并已实现。 Java 9中的默认设置。
2020-10-15 09:52:24
723
翻译 JVM体系结构介绍
每个Java开发人员都知道字节码将由JRE(Java运行时环境)执行。但是许多人并不知道JRE是Java虚拟机(JVM)的实现,它可以分析字节码,解释代码并执行它。作为开发人员,了解JVM的体系结构非常重要,因为它使我们能够更高效地编写代码。在本文中,我们将更深入地了解Java中的JVM体系结构以及JVM的不同组件。什么是JVM?虚拟机是物理机的软件实现。 Java是使用WORA(随时随地写入一次)的概念开发的,该概念可在VM上运行。编译器将Java文件编译为Java .class文件,然后将该.c
2020-09-21 09:57:08
216
转载 为什么Java进程使用的内存(RSS)比Heap Size大?
Java进程使用的虚拟内存确实比Java Heap要大很多。JVM包括很多子系统:垃圾收集器、类加载系统、JIT编译器等等,这些子系统各自都需要一定数量的RAM才能正常工作。当一个Java进程运行时,也不仅仅是JVM在消耗RAM,很多本地库(Java类库中引用的本地库)可能需要分配原生内存,这些内存无法被JVM的Native Memory Tracking机制监控到。Java应用自身也可能通过DirectByteBuffers等类来使用堆外内存。那么,当一个Java进程运行时,有哪些部分在消耗内存呢
2020-09-09 15:58:05
4335
原创 十种GC收集器及原理(3)—ParNew
ParNew是用于新生代的垃圾收集器,与Parallel Scavenge使用相同的算法。不同之处在于它具有内部“回调”,该功能使旧的收集器可以对其收集的对象进行操作(实际上是为了与并发收集器一起工作而编写的)。可以在带有“ ParNew”标签的GC日志消息中标识用于新生代的ParNew收集器,如本例所示:“ ParNew:1068K-> 63K(1152K)”。在JVM 9和更早版本中,可以使用“ -XX:+ UseParNewGC”选项显式调用用于Young一代的ParNew收集器。但是此选项
2020-09-08 15:47:25
2046
原创 十种GC收集器及原理(2)—Serial Old
Serial Old是Serial收集器的老年代版本,也属于单线程串行收集器。其采用的GC算法为Mark-Compact(标记-整理算法),与用于新生代的Serial收集器“复制算法”不同。Mark-Compact算法的
2020-09-07 16:27:02
722
转载 Dubbo和SpringCloud的区别
最大区别:SpringCloud抛弃了Dubbo的RPC通信,采用的是基于HTTP的REST方式。严格来说,这两种方式各有优劣。虽然从一定程度上来说,后者牺牲了服务调用的性能,但也避免了上面提到的原生RPC带来的问题。而且REST相比RPC更为灵活,服务提供方和调用方的依赖只依靠一纸契约,不存在代码级别的强依赖,这在强调快速演化的微服务环境下,显得更加合适。品牌机与组装机的区别很明显,Spring Cloud的功能比DUBBO更加强大,涵盖面更广,而且作为Spring的拳头项目,它也能够与Spr...
2020-06-29 13:40:44
1680
原创 springboot与dubbo整合的三种方式
常用的方式有以下3种:1、导入dubbo-starter,在appication.properties配置属性,使用@Service暴露服务,使用@Refrence引用服务。 【注意:开启@EnableDubbo注解】2、保留dubbo xml配置文件,导入dubbo-starter,使用@ImportRecource导入dubbo的配置文件即可。 【如果想做到方...
2020-01-22 10:49:56
226
原创 springboot整合shiro实现系统访问控制
最近,因为工作关系,涉及到需要从零开始搭建一套应用系统开发框架。系统权限管控这块,我选择了shiro来实现。因为服务端集成框架已经确定使用springboot1.5,所以就需要将shiro进行整合。 首先,先介绍下项目技术栈如下: 前端:bootstrap3、jquery1.10 服务端:jdk8、springboot1.5、sprin...
2019-06-20 18:57:35
983
转载 Java8内存模型—永久代(PermGen)和元空间(Metaspace)
一、JVM 内存模型 根据 JVM 规范,JVM 内存共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分。 1、虚拟机栈:每个线程有一个私有的栈,随着线程的创建而创建。栈里面存着的是一种叫“栈帧”的东西,每个方法会创建一个栈帧,栈帧中存放了局部变量表(基本数据类型和对象引用)、操作数栈、方法出口等信息。栈的大小可以固定也可以动态扩展。当栈调用深度大于JVM所允许的范围,会抛...
2018-12-18 17:43:41
211
转载 MySQL的四种事务隔离级别
本文实验的测试环境:Windows 10+cmd+MySQL5.6.36+InnoDB一、事务的基本要素(ACID) 1、原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位。 2、一...
2018-12-18 09:42:51
183
转载 拦截器(Interceptor)和过滤器(Filter)的执行顺序和区别
一、引言本来想记录一下关于用户登陆和登陆之后的权限管理、菜单管理的问题,想到解决这个问题用到Interceptor,但想到了Interceptor,就想到了Filter,于是就想说一下它们的执行顺序和区别。关于Interceptor解决权限和菜单管理的问题,在放在下一篇写吧,就酱紫。二、区别1、过滤器(Filter)首先说一下Filter的使用地方,我们在配置web.xml时,总会配置下...
2018-12-17 20:34:23
832
转载 循序渐进带你学习时间复杂度和空间复杂度
我们都知道,对于同一个问题来说,可以有多种解决问题的算法。尽管算法不是唯一的,但是对于问题本身来说相对好的算法还是存在的,这里可能有人会问区分好坏的标准是什么?这个要从「时效」和「存储」两方面来看。人总是贪婪的,在做一件事的时候,我们总是期望着可以付出最少的时间、精力或者金钱来获得最大的回报,这个类比到算法上也同样适用,那就是花最少的时间和最少的存储做成最棒的解决办法,所以好的算法应该具备时效...
2018-11-20 10:14:21
303
转载 15分钟了解TiDB
由于目前的项目把mysql换成了TiDb,所以特意来了解下tidb。其实也不能说换,由于tidb和mysql几乎完全兼容,所以我们的程序没有任何改动就完成了数据库从mysql到TiDb的转换,TiDB 是一个分布式 NewSQL (SQL 、 NoSQL 和 NewSQL 的优缺点比较 )数据库。它支持水平弹性扩展、ACID 事务、标准 SQL、MySQL 语法和 MySQL 协议,具有数据强一致...
2018-11-19 10:55:43
326
转载 Kylin 大数据时代的OLAP利器
Olap简介OLAP的历史与基本概念Olap全称为在线联机分析应用,是一种对于多维数据分析查询的解决方案。 典型的Olap应用场景包括销售、市场、管理等商务报表,预算决算,经济报表等等。最早的Olap查询工具是发布于1970年的Express,然而完整的Olap概念是在1993年由关系数据库之父 Edgar F.Codd 提出,伴随而来的是著名的“twelve laws of onli...
2018-11-19 10:24:32
2506
转载 REST和REST的四个级别
REST(表述性状态转移)是最近几年讨论的最为热烈的话题之一,其起源于Roy.T.Fielding博士的论文《软件架构风格和基于网路的软件架构设计》。Roy博士在他的论文里从架构风格角度阐述了网络应用程序中最佳架构风格REST。首先,REST是一个架构风格而不是一个架构,所谓架构风格就是凌驾于架构之上的一组约束。其次,REST对立面是RPC,而不是webservices或者SOAP,最近一...
2018-11-16 09:52:59
1206
转载 SpringBoot 中常用注解@Controller/@RestController/@RequestMapping介绍
@Controller//@ResponseBodypublic class HelloController { @RequestMapping(value="/hello",method= RequestMethod.GET) public String sayHello(){ return "hello"; }}如果直接使用@Contr...
2018-11-09 14:25:01
227
转载 JQuery——$对象,选择器,对象转换
//alert($); /*window.onload = function(){ var msgDiv = document.getElementById("msg"); alert(msgDiv); };*/ //类似上面 *****必须掌握****** //把document对象转换为jqueryObject对象,...
2018-11-07 18:00:58
1254
转载 Cannot assign requested address问题解决
TIME_WAIT过多及解决问题场景大量高并发日志传输,短连接,每次在传输一定数量的日志后,开始出现以下错误 Failed to establish a new connection: [Errno 99] Cannot assign requested address问题原因通过下述命令可以查看当前端口占用及分类 netstat -n | awk '/...
2018-09-17 22:25:57
11283
转载 Ajax 请求的http头信息特点 x-requested-with
很多用到AJAX请求,如何区别一个请求是传统的HTTP请求?还是Ajax请求?网上有很多,这里记录一下,方便以后直接查看,懒人计划,关键是看http请求头(header)信息中的 x-requested-with 信息项是否有无,如果无该头信息项,取出的是未定义的值,即null,则说明是传统请求;如果存在该头信息项,值是XMLHttpRequest 则说明是Ajax请求;在JAVA WEB...
2018-08-22 13:39:29
449
转载 JDK8堆默认比例
JDK8 默认的,新生代 ( Young ) 与老年代 ( Old ) 的比例的值为 1:2 ( 该值可以通过参数 –XX:NewRatio 来指定 ),即:新生代 ( Young ) = 1/3 的堆空间大小。老年代 ( Old ) = 2/3 的堆空间大小。其中,新生代 ( Young ) 被细分为 Eden 和 两个 Survivor 区域,这两个 Survivor 区域分别被命...
2018-08-09 19:38:10
8746
转载 为什么我要改用Kotlin
写在前面的话,作为一个不熬夜的人,一觉醒来发现Kotlin成为了Android的官方语言,可谓是大喜过望。为了趁热打铁,我决定提前三天放出原定本周日Release的文章。希望能及时让大家了解一下Kotlin。相信很多开发人员,尤其是Android开发者都会或多或少听说过Kotlin,当然如果没有听过或者不熟悉也没有关系。因为本篇文章以及博客后期的内容会涉及到很多关于Kotlin的知识分享。在写这篇...
2018-05-30 21:46:52
207
转载 微服务API版本控制
API版本控制常用实践URLhttp://example.com/v1/helloworldHEADER各大公司做法http://www.lexicalscope.com/blog/2012/03/12/how-are-rest-apis-versioned/Spring Boot实践API版本管理原理在SpringMVC中RequestMappingHandlerMapping是比较重要的一个角...
2018-05-25 10:58:12
7658
转载 Cas单点登录(整合shiro版本)
单点登录:Single Sign On,简称SSO,SSO使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。CAS框架:CAS(Central Authentication Service)是实现SSO单点登录的框架。逻辑关系图:(注:图为转载)分析:1.图中用户访问cas客户端;2.需要登录时,重定向到Cas-Server(Cas服务),其中service为Cas-Cli...
2018-05-25 10:54:28
4827
转载 CAS实现单点登录SSO执行原理探究
一、不落俗套的开始1、背景介绍单点登录:Single Sign On,简称SSO,SSO使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。CAS框架:CAS(Central Authentication Service)是实现SSO单点登录的框架。2、盗一张学习CAS绝大多都看过的图以及执行部分分析注:已分不清原创,此处就不给出地址了。从结构上看,CAS包含两个部分:CAS...
2018-04-24 13:40:09
259
转载 Protobuf协议的Java应用例子
Protobuf协议,全称:Protocol Buffer 它跟JSON,XML一样,是一个规定好的数据传播格式。不过,它的序列化和反序列化的效率太变态了……来看看几张图你就知道它有多变态。 Protobuf的Java实例一、 安装Protobuf去Protobuf的GitHub下载,解压。如果你是Windows环境,则还要下载多一个东西。protobuf-2.5.0-windows.zip。解压...
2018-04-10 17:38:01
1727
转载 在java中使用spring整合cxf实现webservice
在java中实现webservice有两种常用的方式,一种是cxf,另一种是axis。这两种方式的区别大家可以自己在网上找找参考一下。cxf可以与spring进行整合,是一款不错的webservice产品。今天给大家讲解一下使用spring整合cxf实现webservice的方法。1 创建服务器端程序1.1 新建一个web工程1.1.1 工程环境所依赖的各软件的版本首先需要新建一个web工程,工程...
2018-04-02 16:38:14
377
转载 监督学习和无监督学习的区别
机器学习的常用方法,主要分为有监督学习(supervised learning)和无监督学习(unsupervised learning)。监督学习,就是人们常说的分类,通过已有的训练样本(即已知数据以及其对应的输出)去训练得到一个最优模型(这个模型属于某个函数的集合,最优则表示在某个评价准则下是最佳的),再利用这个模型将所有的输入映射为相应的输出,对输出进行简单的判断从而实现分类的目...
2018-03-23 11:29:29
1344
转载 Spark中repartition和coalesce的用法
转载链接:http://blog.youkuaiyun.com/u011981433/article/details/50035851重分区函数: repartition(numPartitions:Int):RDD[T] coalesce(numPartitions:Int,shuffle:Boolean=false):RDD[T] 它们两个都是RDD的分区进行重新划分,repartiti...
2018-03-04 09:51:59
710
转载 HBase读延迟的12种优化套路
任何系统都会有各种各样的问题,有些是系统本身设计问题,有些却是使用姿势问题。HBase也一样,在真实生产线上大家或多或少都会遇到很多问题,有些是HBase还需要完善的,有些是我们确实对它了解太少。总结起来,大家遇到的主要问题无非是Full GC异常导致宕机问题、RIT问题、写吞吐量太低以及读延迟较大。 Full GC问题之前在一些文章里面已经讲过它的来龙去脉,主要的解决方案...
2018-02-12 15:46:36
655
转载 LSM树由来、设计思想以及应用到HBase的索引
讲LSM树之前,需要提下三种基本的存储引擎,这样才能清楚LSM树的由来:哈希存储引擎 是哈希表的持久化实现,支持增、删、改以及随机读取操作,但不支持顺序扫描,对应的存储系统为key-value存储系统。对于key-value的插入以及查询,哈希表的复杂度都是O(1),明显比树的操作O(n)快,如果不需要有序的遍历数据,哈希表就是your Mr.RightB树存储引擎是B树(关于B树的由来
2018-01-20 13:16:53
238
原创 weblogic10.3登录控制台报错Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandle解决办法
今天在自己电脑上安装了weblogic10.3.5+JDK7,安装和启动都成功了。但是,通过网页访问控制台时,输入正确的用户名和口令后,点击“登录”时,无法正常进入控制台。查看后台日志报错:Exception in thread "[ACTIVE] ExecuteThread: '15' for queue: 'weblogic.kernel.Default (self-tun
2017-11-28 14:38:13
6802
JVM GC原理深入学习.pdf
2020-09-25
IntelliJ IDEA 2017 简介
2017-11-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人