自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 资源 (1)
  • 收藏
  • 关注

原创 vim 常用命令统计

vim对于开发人员来说也是使用比较频繁的命令了,下面就来记录比较常用的命令,作为学习记录。**一般(查看)模式下**:1、vim a.txt 打开一个文件2、set nu 设置行号 set nonu 取消设置行号3、gg 跳转到首行 G 查看多少行、到末行 58G 直接到58行 :58 也是直接到58行4、10G 向右边...

2019-06-28 16:09:05 935

原创 java.lang.NoSuchMethodError:com.google.common.base.Joiner.withKeyValueSeparator(C)

记录一次异常:“exception”:"java.lang.NoSuchMethodError: com.google.common.base.Joiner.withKeyValueSeparator©Lcom/google/common/base/Joiner$MapJoiner;\n\tat com.alibaba.cloudapi.sdk.core.util.SignUtil.buildH...

2019-02-26 11:14:40 3284

原创 常见面试——基础篇

最近一段时间,身边许多的朋友差不多都已经换过工作了。这里收集了一下他们遇到的常见面试题,作一个整理,也算是为后期跳槽做一个笔记吧!1、HasHmap和HashTable的区别 关于HasHmap可以参考:数据结构——HashMap,这篇文章已经讲的很详细了。HasHmap允许key、value可以为null,如果key为null,调用putForNullKey方法,放入到table[0...

2018-06-07 19:28:51 494

原创 谈谈==、hashCode和equals那些事

相信出去面试的小伙伴们对hashCode和equals这两个方法都不陌生了,接下来我们就来谈谈关于==、hashCode和equals那些事。==和equals()这两个在我们代码中可以说是出场频率非常高的,一般在比较一些基本类型时我们会使用==,而在比较两个对象时一般我们会使用equals。我们都知道Object是Java对象的超类,它里面提供了hashCode和equals,如果我们的...

2018-06-05 19:08:23 609

原创 MyBatis

一直以来在使用MyBatis,但仅仅是一些简单的使用,以前只知道要这么写,不知道为什么要这么写。在看完《深入浅出MyBatis技术原理和实践》后,发现有一些东西豁然开朗,这里就来进行下总结当作复习笔记。MyBatis的基本构成SqlSessionFactoryBuilder(构造器):它会根据配置信息或者代码来生产SqlSessionFactorySqlSessionFactory(工...

2018-06-05 12:46:50 204

原创 从JVM角度来看对象

在Java中要创建一个对象最简单方法就是new,当然大部分情况下我们还是通过spring来管理对象。但对于JVM来说一个对象的创建、存亡可没那么简单了。对象的创建虚拟机遇到一条new指令时,首先去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载、解析和初始化。如果没有,则必须先执行相应的类加载过程。参考:关于类加载机制 在类加载检查通过...

2018-06-04 18:46:31 250

原创 关于类加载机制

Java在刚刚诞生时提出过一个非常著名的宣传口号:”一次编写,到处运行”,java可以运行在不同的平台上,而Java语言之外的语言,如Clojure、Groovy、JRuby、Jython、Scala等也可以在Java虚拟机上运行。这种实现语言无关性的基础得益于虚拟机和字节码存储格式。 在Java代码被编译成Class文件(.class),在Class文件中描述的各种信息,最终都需要加载到虚...

2018-05-30 22:11:03 345

原创 关于String字符串详解

对于String相信大家已经都很熟悉了,在项目中出场率可以说是最高的。String不属于基本类型但它可以直接进行字面量赋值,如:String s = “adc”。而String字符串在面试题中也是出场率比较高的,当然深入了解String对我们也有一定的好处。需要注意的是在JDK1.6 、JDK1.7、JDK1.8中,由于常量池的从永久代移到堆空间,导致String也有所改变。移除永久代的工...

2018-05-30 12:50:41 302

原创 volatile关键字详解

对于synchronized关键字相信大家都已经不陌生了,synchronized的性能一直以来被各种吐槽(当然java团队一直没有放弃synchronized,一直在为性能的提升努力着,在JDK1.8中CurrentHashMap放弃了ReentrantLock而使用synchronized,可见synchronized性能应该是提升不少的)。而volatile关键字可以说是Java虚拟机提供的...

2018-05-29 22:59:58 243

原创 Java内存模型详解

有些人喜欢把Java内存模型和Java内存区域Java内存区域详解弄混淆,这两个是完全不同的概念。什么是java内存模型Java内存模型:Java内存模型(即Java Memory Model,简称JMM)本身是一种抽象的概念,并不真实存在,它描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式,详细来说就是在虚拟机中将变量存储到...

2018-05-29 19:00:32 4617

原创 java内存区域详解

java虚拟机在执行java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有区域随着虚拟机的进程的启动而存在,有些区域则是依赖用户线程的启动和结束而建立和销毁。如下图: Java堆对于大多数应用来说,Java堆(Java Heap)是Java虚拟机所管理的内存中最大的一块。Java堆是被所有线程共享的一块内存区域,在虚拟机启动...

2018-05-28 18:55:27 647

原创 数据结构——ConcurrentHashMap

参考博客:http://www.importnew.com/21781.html

2018-05-21 13:22:07 8267 3

原创 数据结构——HashMap

HashMap也是比较常用的一个集合,比如ZooKeeper中就用的比较多。而且HashMap也是面试中常被问到,今天就来探讨一下HashMap。HashMap结构从上图可以看出,HashMap底层就是一个数组结构,数组中的每一项又是一个链表。transient Entry<K, V>[] table;public HashMap(int paramInt, f...

2018-05-17 12:41:32 372

原创 Zookeeper之Leader选举

Leader选举是zookeeper很重要的机制,也是保证分布式数据一致性的关键所在。上一篇的zookeeper角色中我们提到只有Leader才具有事务请求处理的权利,本篇我们来看看Leader的选举。先来看几个术语 SID:服务器ID SID是一个数字,用来唯一标识一台Zookeeper集群中的机器,每台机器不能重复,和myid的值一致。关于myid可以参考Linxu集群搭建 ZXID...

2018-05-16 10:24:16 224

原创 zookeeper入门之角色

前段时间,一个同事面试被问到关于zookeeper的角色和选举问题,之前写过一篇关于LInxu环境zookeeper集群搭建的文章,今天就来看看关于zookeeper的角色。我们知道在分布式系统中, 构成集群的每一台机器都有自己的角色,最经典的集群模式就是Master/Slave(主备模式),我们把能够处理所有写操作的机器称之为Master,把所有通过异步复制的方式获取更新数据,然后提供...

2018-05-14 18:49:53 578

原创 分布式集群与分布式事务浅谈

分布式、集群、分布式事务相信这几个关键词大家都已经听了无数遍,而这些又是现在互联网不得不提的话题。 那么什么是分布式?什么是集群?什么是分布式事务? 在传统的互联网中,我们通过一个系统业务和存储来完成所有业务。但随着互联网的快速发展传统的架构已经不能满足我们的需求,需要将业务进行拆分处理、或者分库分表来存储业务数据。这时就不得不提到分布式、集群、分布式事务。 分布式:简单来说就是将业务进行拆...

2018-05-12 17:39:02 2512

原创 Redis入门(二)

上一篇我们主要讲Linxu环境下redis的简单安装,这篇我们讲讲redis的一些基本特性,主要包括五种数据结构,常用命令、客户端、及高可用等等。写这些博客,主要是对redis学习的练习及总结。Redis可以做什么?1、缓存 这种也是最常用的,相当于在应用和DB之间做了一个缓冲作用,缓存机制几乎在所有的大型网站都有使用, 合理地使用缓存不仅可以加快数据的访问速度, 而且能够有效地降低...

2018-05-11 12:51:18 187

转载 深入理解 Spring 事务原理

一、事务的基本原理Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的。对于纯JDBC操作数据库,想要用到事务,可以按照以下步骤进行:获取连接 Connection con = DriverManager.getConnection()开启事务con.setAutoCommit(true/false);执行CRUD提交事务/回滚事务...

2018-05-09 14:35:08 178

转载 Java的三种代理模式

此文转载,原文链接:https://www.cnblogs.com/cenyu/p/6289209.htmlJava的三种代理模式 1.代理模式代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能. 这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或...

2018-05-08 12:13:30 224

原创 Redis入门——Linxu环境redis安装

redis相信大家都不陌生,这篇主要讲如何在Linxu环境安装 redis及启动和关闭 首先需要一个redis安装包:redis-4.0.9.tar.gz linxu环境 可以自己百度安装。安装一、 选择一个目录讲安装包解压,我的目录是 /usr/local/bin/ (后面安装是将Redis的相关运行文 件放到/usr/local/bin/下,这样就可以在任意目录下执行Red...

2018-04-24 13:25:37 226

原创 Socket和NioSocket浅谈

Socket java中的网络通信是通过Socket实现的,之前说过TCP/IP协议只是一套规则,并不能具体工作,就像程序中的接口一样,而Socket是TCP/IP协议的一个具体的实现。Socket分为ServerSocket和Socket两大类,ServerSocket用于服务端,可以通过方法监听请求,监听到请求后返回Scoket,Socket用于具体完成数据传输,客户端直接使用Socket发...

2018-04-22 19:10:31 5618 2

转载 常见JedisConnectionException异常分析

纯属用于笔记,转自:http://blog.csdn.net/fachang/article/details/7984123最近项目开发中用到了Redis, 选择了官网推荐的java client Jedis。 Redis常用命令学习:http://redis.io/commands Redis官方推荐Java客户端Jedis(包含了所有Redis命令的实现):https://github...

2018-04-12 09:10:06 217

原创 Eclipse、IntelliJ IDEA远程断点调试

本地断点调试相信大家已经都已经玩的很溜了,但远程断点可能对有些人来说还有点陌生。在实际开发过程中我们可能会有几套不同的环境,比如开发环境、测试环境、生产环境。测试环境我们一般会部署在远程机上,有时我们在开发环境调试正常的代码部署到测试或者生产环境上会有莫名其妙的bug,对于生产环境我们基本上只能通过拉日志分析,分析日志文件并尝试重现bug.这会带来的问题还是不少的.首先,日志的分析是一项比较耗时的...

2018-03-30 17:03:19 5063 5

原创 长连接与短连接浅谈

由于项目中用到的http请求接口比较多,而其中遇到了一个问题就是因为长连接和短连接的原因引起,所以关于http协议、长连接与短连接的知识也了解了下。要理解长连接与短连接,首先需要了解一些相关协议及网络基础。 首先让我们看一下BS结构网络传输的分解方式有两种:一种是标准的OSI参考模型,另一种是TCP/IP参考模型。它们的分层方式及对应关系如图: OSI参考模型一共分7层,不过它主要用于教学...

2018-03-26 19:10:39 832

原创 常见协议浅谈

DNS协议DNS协议的作用是将域名解析为IP。我们知道网络上每个站点的位置都是用IP来确定的,所以要想访问一个网站首先就要知道它的IP,不过由数字组成的IP记起来很不方便,所以就设计了比较好的域名来代替IP,这就像我们平时看电视时只需要记着“中央一套”,而不需要去记他们是什么频率,不过实际传输还是需要按频率来传输的,我们在选择了相应的频道后电视就会自动接收相应频率的数据,频道和频率转换过程是电...

2018-03-26 17:22:45 666

转载 java线程池详解

一:简介线程的使用在java中占有极其重要的地位,在jdk1.4极其之前的jdk版本中,关于线程池的使用是极其简陋的。在jdk1.5之后这一情况有了很大的改观。Jdk1.5之后加入了java.util.concurrent包,这个包中主要介绍java中线程以及线程池的使用。为我们在开发中处理线程的问题提供了非常大的帮助。二:线程池线程池的作用:线程池作用就是限制系统中执行线程的数量...

2018-03-20 12:16:16 239

转载 Elastic-Job定时入门

主要功能定时任务: 基于成熟的定时任务作业框架Quartz cron表达式执行定时任务。作业注册中心: 基于Zookeeper和其客户端Curator实现的全局作业注册控制中心。用于注册,控制和协调分布式作业执行。作业分片: 将一个任务分片成为多个小任务项在多服务器上同时执行。弹性扩容缩容: 运行中的作业服务器崩溃,或新增加n台作业服务器,作业框架将在下次作业执行前重新分片,不影响...

2018-03-14 12:58:05 1069

转载 浅谈定时任务的分布式调度

单机定式任务调度的问题在很多应用系统中我们常常要定时执行一些任务。比如,订单系统的超时状态判断、缓存数据的定时更新、定式给用户发邮件,甚至是一些定期计算的报表等等。常见的处理方式有线程的while(true) 和sleep组合、使用Timer定时器触发任务又或者是使用quartz框架。貌似这些方法可以完美的解决方案,为什么还需要分布式呢?主要有如下两点原因:1.高可用:单机版的定式任务调度...

2018-03-12 16:48:41 591

原创 Spring简单概述

Spring框架是一个轻量级的企业开发的一战是解决方案。Spring框架主要提供了IOC容器、AOP、数据访问、Web开发、消息、测试等相关的技术支持。1、Spring的模块Spring是模块化的,这意味着你可以只使用你需要的Spring的模块。如图: 图中的每一个最小单元,Spring都至少有一个对应的jar包。下面介绍一些最常用的。(1)核心容器(Core Contain...

2018-03-12 15:45:09 187

原创 xshell连接远程虚拟机的简单使用

XShell 是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。 相信有些人会有这样的经历,自己在本地安装了一个虚拟机,想要学习下linxu,有时我们想从本地拷贝文件到虚拟机里,可能会有些棘手,那么XShell就能帮你解决这个问题。当然还有其他许多功能,下面我们就来讲讲如何使用xshell连接运程虚拟机的简单使用。 ...

2018-03-08 18:29:16 8719

原创 集合运用之在明确场景下,为集合指定初始容量

集合基本上面试时面试必问的,我一个同事曾经面试时就被问过集合的默认长度是多少。下面我们就ArrayList集合的长度来说说指定初始容量的事。List<Persion> list = new ArrayList<Persion>();相信大部分在使用集合是,都是类似的声明一个集合,然后用add、remove等方法对集合进行操作,而且因为它是自动管理长度的,所以不用...

2018-03-06 19:40:05 332

原创 关于java.lang.IncompatibleClassChangeError: Implementing class错误解决

由于项目中需要用到Rocket MQ,而公司已经有封装好的组件,所以引入封装好的组件后,发现启动项目报错:java.lang.IncompatibleClassChangeError: Implementing class at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoade...

2018-03-05 14:58:10 9118

原创 那些年,你看过有哪些让你记忆犹新的书

俗话说的好:“书中自有黄金屋,书中自有颜如玉”。看书的好处自然不必多说,相信也都听了不少吧!有的书能修身养性,有的书能为你送上一碗鸡汤,在你迷茫的时候精神抖擞。有的书让你渴望一场浪漫的爱情,有的书感动泪滴,有的书让你技上一层。 总有几首歌让你反复循环,静静聆听。总有几个人,让你念念不忘。那么,有哪些书让你记忆犹新? 下面介绍的是我记忆比较深刻,自认为是值得一读的书籍,作为曾经是一名伪文艺小青年...

2018-03-02 23:28:17 571

原创 文件比较工具-BCompare的简单使用

相信大家在工作中会接触到合代码的情况,特别像使用SVN这种类似的版本管理的工具,我们开发过程中不可能就拉一个主干,然后所有的需求都在主干上开发。这肯定是不合理的。一般我们会拉一个主干,然后拉一个分支,然后再分支上开发,开发完上线后再将分支代码合到主干。当然我们可能会拉多个分支来开发不同的需求。那么我们就可以用BCompare工具来合代码,操作起来也十分方便。第一步:我们将两个不同的分支代码(文...

2018-03-01 15:13:55 35110 1

原创 该如何教育我们的下一代

以前我们常常开玩笑说:“一人吃饱全家不饿”,可一旦你升级成爸妈了,你的身上自然就多了一份责任,你就不得不思考一些以前压根不当回事的问题,比如:该如何教育我的孩子。就在17年9月28号下午3:55,当医生叫宝宝交到我手上时,我内心激动万分,看着宝宝的那一刻我。我心里生出了一个思想:以后的一切都是为宝宝而活。而在丈母娘家过完年后,我开始意识到这种想法其实是不理智的。先说说丈母娘家的情况吧。家里...

2018-02-27 19:50:24 654

原创 集合应用---集合遍历该如何选择

相信大家在工作中使用集合已经算是家常便饭了吧,而对集合进行遍历也算是必不可少的操作了。而对集合进行遍历也有多种方法,而常用的一般就是for循环和增强for循环(也叫foreach循环)。可能有些人有些迷惑,这两种循环有什么区别呢?我们该如何选择使用呢?用好了系统的性能也能得到一点点的优化哦,接下来就解开神秘的面纱。 先来看一个需求:统计一个省的各科高考平均值,比如数学平均分数。public ...

2018-02-27 16:36:15 268

原创 eclipse如何简单的查看java源代码

有时候我们写代码时想要知l道jdk源码里是怎么实现的,或者是怎样的。比如我想看看StringUtils里面的isEmpty和isBlank有什么区别。那么最简单的方法是直接点进去查看,但这往往需要安装一个插件或者来一点小技巧。这里要介绍的就是小技巧。 需要的工具: 1、eclipse这个不用说,本篇主要就是针对eclipse来说的。 2、jd-gui 反编译工具(相信大家在其他地方

2018-01-24 15:20:35 1342

原创 Linxu常用命令(三)

Linxu用户切换 远程拷贝su命令 语法:su(选项)(参数) su命令用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号与密码选项: -c或–command=:执行完指定的指令后,即恢复原来的身份; -l或——login:改变身份时,也同时变更工作目录,以及HOME,SHELL,USER,logname。此外,也会变更PATH变量; -m,-p或–p

2018-01-23 18:06:45 194

原创 Linxu常用命令讲解(二)

tar(打包、压缩、解压缩)tar(常用) 语法:tar(选项)(参数) tar命令可以为linux的文件和目录创建档案。利用tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。tar最初被用来在磁带上创建档案,现在,用户可以在任何设备上创建档案。利用tar命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为

2018-01-23 11:07:37 205

原创 Linxu常用命令讲解(一)

cd(必用) 语法:cd (选项) (参数) cd命令用来切换工作目录至dirname。 其中dirName表示法可为绝对路径或相对路径。若目录名称省略,则变换至使用者的home directory(也就是刚login时所在的目录)。另外,~也表示为home directory的意思,.则是表示目前所在的目录,..则表示目前目录位置的上一层目录。cd 进入用户主目录;(刚登陆时的目录

2018-01-22 19:01:37 525

Advanced-REST-client_v3.1.9

一个Http接口调用工具,可以内嵌在Chrome浏览器内,无需再额外下载软件,非常方便好用,保证你用过一次会爱不释手。里面有安装使用文档

2018-08-06

空空如也

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

TA关注的人

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