自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 spring cloud中微服务之间的调用以及eureka的自我保护机制

这篇主要讲一下服务和服务之间是怎样调用的如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:854630135,群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家。我自己搭建了一个客户端微服务:所以现在有两个微服务,我们所实现的就是微服务1和微服务2之间的调用注册中...

2018-12-09 17:35:33 2134

原创 springboot结合maven打包发布

欢迎工作一到八年的Java工程师朋友们加入Java高级交流群:854630135本群提供免费的学习指导 架构资料 以及免费的解答不懂得问题都可以在本群提出来 之后还会有直播平台和讲师直接交流噢本篇分享如何使用maven便利我们打springboot的发布包;我这里使用的是idea开发工具,首先创建了多个module的项目结构,如图: 要对多个module的项目做打包,一般情...

2018-11-25 20:21:19 950

原创 Git超实用总结,再也不怕记忆力不好了

Git 是什么?Git 是一个分布式的代码管理容器,本地和远端都保有一份相同的代码。 Git 仓库主要是由是三部分组成:本地代码,缓存区,提交历史,这几乎是所有操作的本质,但是为了文章更加简单易懂,就不围绕这块展开了,有兴趣的可以去了解下。 开门见山,我们直接来说说 Git 有哪些常见的操作。Git 有哪些常规操作?我们简单说说Git有哪些常规操作,能够让我们应付简单的开发需求。克...

2018-10-28 15:33:15 330

原创 如何快速清理 Docker 无用资源

如果经常使用 docker,你会发现 docker 占用的资源膨胀很快,其中最明显也最容易被察觉的应该是对磁盘空间的占用。本文将介绍如何快速的清理 docker 占用的系统资源,具体点说就是删除那些无用的 镜像、容器、网络和数据卷。查看 docker 占用的资源在进行资源清理之前我们有必要搞清楚 docker 都占用了哪些系统的资源。这需要综合使用不同的命令来完成。docker cont...

2018-10-06 16:32:22 1823

原创 RabbitMQ学习第一记:用java连接RabbitMQ

1、什么是RabbitMQ  MQ(Message Queue):消息队列,是服务端设计的一个可以存储大量消息的队列,并提供客户端操作队列的方法:生产队列(向队列中添加数据)、消费队列(从队列中取数据)。RabbitMQ就是基于消息队列的一个典型应用。RabbitMQ除了普通的生产消费功能,还有一些高级功能:公平分发,轮询分发,路由模式,通配符模式,发布订阅,队列持久化。2、java实现...

2018-09-09 16:50:58 642

原创 Springboot 中 Mybatis 的使用

Mybatis开发团队为Spring Boot 提供了MyBatis-Spring-Boot-Starter方便使用。要使用MyBatis-Spring-Boot-Starter模块,只需要在类路径中包含mybatis-spring-boot-autoconfigure.jar文件及其依赖项(mybatis.jar,mybatis-spring.jar等) 。下面介绍的是我用到...

2019-08-08 19:28:54 459

原创 JVM运行时数据区域和JVM内存模型实例

Java虚拟机使Java成为了一种跨平台的语言,Java不直接与操作系统接触,而是通过虚拟机这个中间桥梁,通过JVM与底层接触。不同的系统有不同的JVM,但是所有的这些JVM都完美的支持Java语法,这就使得WriteOnce,RunEveryWhere成为可能。除此之外,JVM的内存管理机制使得不需要再为每一个new操作去delete/free代码,由机器代替程序员这样就不容易出现内存泄露和...

2019-08-08 16:51:14 379

原创 mybatis中#「」和$「」的区别

1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id".2. $将传入的数据直接显示生成在sql中。如:order by $user_id$,如果传入的值是111,那么解析成sql时的值为orde...

2019-08-02 21:58:43 399

原创 Mybatis 缓存特性的使用及源码分析

MyBatis 的配置文件包含了影响 MyBatis 行为甚深的设置(settings)和属性(properties)信息。文档的顶层结构如下:configuration 配置 properties 属性 settings 设置 typeAliases 类型命名 typeHandlers 类型处理器(类型句柄) objectFactory 对象工厂 plugins 插件 envi...

2019-08-02 16:23:21 273

原创 高并发问题 - 如何解决Redis缓存和MySQL数据一致性的问题

需求起因在高并发的业务场景下,数据库大多数情况都是用户并发访问最薄弱的环节。所以,就需要使用redis做一个缓冲操作,让请求先访问到redis,而不是直接访问MySQL等数据库。这个业务场景,主要是解决读数据从Redis缓存,一般都是按照下图的流程来进行业务操作。image读取缓存步骤一般没有什么问题,但是一旦涉及到数据更新:...

2019-08-01 21:09:33 2458

原创 一文彻底搞懂Netty高性能之零拷贝

作为Java网络编程学习者,不仅要知道NIO,还一定要学习Mina和Netty这两个优秀的网络框架。作为上一篇NIO效率高的原理之零拷贝与直接内存映射的补充,本文将针对Netty的零拷贝特性进行详细分析。Netty高性能的原因Netty作为异步事件驱动的网络框架,高性能主要来自于其I/O模型和线程处理模型,前者决定如何收发数据,后者决定如何处理数据。Netty高性能的原因总结,智者见智...

2019-07-31 21:34:38 963

原创 MySQL和PG到底哪个更好用?

如果打算为项目选择一款免费、开源的数据库,那么你可能会在MySQL与PostgreSQL之间犹豫不定。MySQL与PostgreSQL都是免费、开源、强大、且功能丰富的数据库。你主要的问题可能是:哪一个才是最好的开源数据库?MySQL还是PostgreSQL呢?该选择哪个开源数据库呢?在选择数据库时,你所做的是个长期的决策,因为后面如果再改变决定将是非常困难且代价高昂的,你希望一开始就选择...

2019-07-31 15:03:06 657

原创 一分钟看懂互联网公司为啥都不用MySQL分区表?

潜在场景如何?当MySQL单表的数据量过大时,数据库的访问速度会下降,“数据量大”问题的常见解决方案是“水平切分”。MySQL常见的水平切分方案有哪些?(1)分库分表;(2)分区表。画外音:我C,没听过分区表,有朋友惊叹。什么是分库分表?把一个很大的库(表)的数据分到几个库(表)中,每个库(表)的结构都相同,但他们可以分布在不同的MySQL实例,甚至不同的物理机器上,以...

2019-07-30 17:13:07 463

原创 五分钟让你知道你应该知道的 Redis 事务

如果你曾了解过关系型数据库事务的话,我相信这篇文章对你来说是很容易理解的。具体什么是事务我就不说不多了,直接讲 Redis 事务相关的部分。首先,我们先来看下,Redis 是怎么执行事务的。1. 事务执行过程一个事务的开始到结束会经过以下 3 个过程1. 事务开始 2. 命令入队 3. 事务执行show code:127.0.0.1:6379&g...

2019-07-30 15:31:43 165

原创 从消除依赖到Spring容器

日常的Rest服务开发我都会首选SpringBoot,因为它本身的易用性以及自带的各种方便功能、生态等,今天就简单讲一下如何将Spring Boot应用跑在Docker容器中项目搭建首先打开Idea,选择初始化一个Spring Boot应用,然后一路回车下去,待Idea下载完依赖,开始编码这里写一个简单的接口:@Res...

2019-07-29 21:23:14 331

原创 docker中的命名空间

Namespace 的作用是“隔离”,它让应用进程只能看到该Namespace 内的“世界”;而 Cgroups 的作用是“限制”,它给这个“世界”围上了一圈看不见的墙。命名空间是 Linux 内核一个强大的特性。每个容器都有自己单独的命名空间,运行在其中的应用都像是在独立的操作系统中运行一样。命名空间保证了容器之间彼此互不影响。在docker中一共有以下几个命名空间,每个Nam...

2019-07-29 20:13:20 3051

原创 分布式事务之最终一致性分布式事务

前言 对于常见的微服务系统,大部分接口调用是同步的,也就是一个服务直接调用另外一个服务的接口。这个时候,用TCC分布式事务方案来保证各个接口的调用,要么一起成功,要么一起回滚,是比较合适的。 如果服务间的调用是异步的,也就是说,一个服务发送一个消息给MQ,即消息中间件,比如RocketMQ、RabbitMQ、Kafka等等。然后,另外一个服务从MQ消费到一条消息后进行处理。这...

2019-07-29 16:00:14 236

原创 面试必问:Java中String类型为什么设计成不可变的?

这几天在各大平台上都看到过这样一些帖子,全都是关于String类型对象不可变的问题,当然现在也是找工作的准备时期,因此花了一部分时间对其进行整理一下。想要完全了解String,在这里我们需要解决以下几个问题(1)什么是不可变对象?(2)String如何被设计成不可变对象的?(3)有什么办法能够改变String?(4)JAVA语言为什么把String类...

2019-07-28 22:16:28 344

转载 图解:Java垃圾回收机制,在看不会去跪搓衣板吧

什么是自动垃圾回收?自动垃圾回收是一种在堆内存中找出哪些对象在被使用,还有哪些对象没被使用,并且将后者删掉的机制。所谓使用中的对象(已引用对象),指的是程序中有指针指向的对象;而未使用中的对象(未引用对象),则没有被任何指针给指向,因此占用的内存也可以被回收掉。在用 C 之类的编程语言时,程序员需要自己手动分配和释放内存。而 Java 不一样,它有垃圾回收器,释放内存由回收器负责。本文...

2019-07-28 17:15:22 166

原创 一文让你了解分布式系统到底是什么东西?

目录:一、什么是分布式系统?二、为什么要走分布式系统架构?三、系统如何进行拆分?四、分布式之后带来的技术挑战?一、什么是分布式系统?在谈分布式系统架构前,我们先来看看,什么是分布式系统?假设原来我们有一个系统,代码量30多万行。现在拆分成20个小系统,每个小系统1万多行代码。原本代码之间都是直接基于Spring框架走JVM内存调用,现在拆开来,将20个小系...

2019-07-26 17:43:45 287

原创 mysql---随机获取10%的数据

mysql---随机获取10%的数据最近在研究从某张表中随机获取百分之十的数据,查询各大网站,基本上都使用的是rand()函数,完全看不懂,感觉也不太符合我的需求,所以决定自己研究一下,怎么实现此需求。查询原始数据条数select COUNT(1) FROM emp;2766条原始数据,10%数据即为:276.66,取277条数据...

2019-07-25 20:28:21 1874

原创 一文读懂Spring Boot、微服务架构和大数据治理之间的爱恨情仇

微服务架构微服务的诞生并非偶然,它是在互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下诞生的产物。互联网时代的产品通常有两类特点:需求变化快和用户群体庞大,在这种情况下,如何从系统架构的角度出发,构建灵活、易扩展的系统,快速应对需求的变化;同时,随着用户的增加,如何保证系统的可伸缩性、高可用性,成为系统架构面临的挑战。如果还按照以前传统开发模式,开发一个大型...

2019-07-25 15:44:57 1361

原创 一些压箱底的Linux实用技巧

Linux的强大之处就在于它的批量化和自动化,能够高效的完成工作,即使比较复杂的工作,通过一条命令就能够快速完成,另一方面,Linux系统相对完善,只要你能想到的功能,只要耐心去搜索,都能够找到比较好的解决方案。timetime命令可以用于计算任务消耗时间,只需要在执行命令前面加上time即可。例如# sleep命令设置休眠60秒$timesleep60real1...

2019-07-24 21:29:54 217

原创 想成为mysql高手,先了解这30条规范

一、基础规范(1)必须使用InnoDB存储引擎解读:支持事务、行级锁、并发性能更好、CPU及内存缓存页优化使得资源利用率更高(2)必须使用UTF8字符集解读:万国码,无需转码,无乱码风险,节省空间(3)数据表、数据字段必须加入中文注释解读:N年后谁tm知道这个r1,r2,r3字段是干嘛的(4)禁止使用存储过程、视图、触发器、Event解读:高并发大数据的互联网业务,架...

2019-07-23 20:16:11 221

原创 你不会还不理解 Lambda 表达式吧?

一、什么是Lambda?我们知道,对于一个Java变量,我们可以赋给其一个“值”。如果想把“一块代码”赋给一个Java变量,应该怎么做呢?比如把右边那块代码,赋给一个叫做aBlockOfCode的Java变量:在Java 8之前,这个是做不到的。但是Java 8之后,利用Lambda特性就可以做到,如图:当然,这个并不是很简洁的写法。所以,为了使这个赋...

2019-07-23 14:37:52 444

原创 三分钟了解JVM 发生内存溢出的原因及解决方法

撸Java的同学,多多少少都会碰到内存溢出(OOM)的场景,但是造成OOM原因却不止一个。堆内存不足这种场景最为常见,报错信息:java.lang.OutOfMemoryError: Java heap space 原因1、代码中可能存在大对象分配2、可能存在内存泄露,导致在多次GC之后,还是无法找到一块足够大的内存容纳当前对象。解决方法1、检...

2019-07-21 22:18:04 1373

原创 谈谈我对mybatis和jpa的理解

其实要承认,一个东西用久了都会有习惯心理。mybatis和jpa,两个持久层框架。从底层到用法都不同。但是实现的功能是一样的。所以说一直以来颇有争议。常年混迹于各大qq技术交流群。见过jpa的死忠粉也见过mybatis的铁杆。作为一个不到两年工作经验的小菜鸟来说,你让我分析源码,讲什么底层实现我是讲不出来的。只能作为一个使用者,来谈谈自己对这两个框架的理解。首先,都知道jpa的前身是...

2019-07-21 22:06:19 3473 3

原创 一文看懂如何隐藏或者修改nginx信息

Http中的Nginx版本信息查看http请求的response里面的header我们会发现有server这个参数,它表示服务端使用的是什么web服务器。例如新浪网:Server: nginx 开源中国:Server: Tengine segmentfault甚至都没有返回server!很多网站不止返回了nginx而且还带了版本号,而像版本号...

2019-07-21 15:04:51 508

原创 三分钟让你看懂Springboot 中 Mybatis 的使用

要使用MyBatis-Spring-Boot-Starter模块,只需要在类路径中包含mybatis-spring-boot-autoconfigure.jar文件及其依赖项(mybatis.jar,mybatis -spring.jar等) 。一、使用如果您正在使用Maven,只需将以下依赖项添加到您的pom.xml中:<dependency> ...

2019-07-19 15:38:32 257

原创 怎么拿到属于自己的那份心仪的offer

跳槽这件事情,每时每刻都在身边发生,送走老伙计,迎来新伙伴。新老交替中,面试环节必不可少,这也最让人头疼,遇到一个满意的候选人,犹如炭中取栗,很难!面试结果是双方决定的,你看上候选人,觉得他和当前职位特别合适,可惜他只是来练手的。作为面试官,经过这么久的面试经历,我总结了以下几点,如果你都能满足,那你99.999%可以拿到满意的offer。工作经历自我...

2019-07-18 15:22:45 236

原创 我们面试的时候应该怎么样才能拿到高薪

大家都知道,程序员这个群体,特别容易出现同工不同酬的现象。很多时候,我们通过了公司的层层筛选,然后和hr要了满意的工资,兴高采烈地去入职后,突然有一天通过小道消息得知,某个同事级别和你一样,但是工资比你多了几千,估计你立马开心不起来了。其实这是正常现象,这也是为什么几乎所有公司都不允许谈论工资。如果大家都公开待遇了,吃亏的那部分人还能好好干活嘛。一般来说,同一个公司,员工工资的差距主要由定...

2019-07-17 20:46:46 217

原创 你离BAT之间,只差了解这些面试题

工作多年,我经常能体会到,有些确实是认真努力工作,但坦白说表现出的能力水平却不足以通过面试,通常是两方面原因:1、“知其然不知其所以然”。 做了多年技术,开发了很多业务应用,但似乎并未思考过种种技术选择背后的逻辑。2、知识碎片化,不成系统。 在面试中,面试者似乎无法完整、清晰地描述自己所开发的系统,或者使用的相关技术。平时可能埋头苦干,或者过于死磕某个实现细节,并没有抬头审视这些技术。...

2019-07-17 15:33:50 159

原创 关于Java面试知识点解析——JVM基础篇

跳槽时时刻刻都在发生,但是我建议大家跳槽之前,先想清楚为什么要跳槽。切不可跟风,看到同事一个个都走了,自己也盲目的开始面试起来(期间也没有准备充分),到底是因为技术原因(影响自己的发展,偏移自己规划的轨迹),还是钱给少了,不受重视。准备不充分的面试,完全是浪费时间,更是对自己的不负责(如果title很高,当我没说)。今天给大家分享下Java面试知识点解析——JVM基础篇1)Java ...

2019-07-16 21:22:46 155

原创 Java虚拟机JVM内部体系结构

JVM(Java虚拟机)是一个抽象机器。 它是一个提供可以执行Java字节码的运行时环境的规范。JVM可用于许多硬件和软件平台(即JVM是平台相关的)。什么是JVM?JVM(Java虚拟机)是: 指定Java虚拟机的工作的规范。 但实现提供程序是独立的选择算法。 其实现是由Sun和其他公司提供。 它的实现被称为JRE(Java运行时环境)。 运行时实例只要在命令提...

2019-07-16 16:47:19 169

原创 Redis支持的五种常用的命令

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。String(字符串)string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。string类型是二进制安全的。意思是redis的string可以包含任何数据。比如j...

2019-07-16 15:03:31 176

原创 Mysql---关于SQL的JOIN

对于SQL的Join,在学习起来可能是比较乱的。我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子有点不是很清楚。Coding Horror上有一篇文章通过 文氏图Venn diagrams解释了SQL的Join。我觉得清楚易懂,转过来。假设我们有两张表。Table A是左边...

2019-07-15 20:20:59 187

原创 JAVA及JVM的运行过程

VM是java的核心和基础,在java编译器和os平台之间的虚拟处理器。它是一种利用软件方法实现的抽象的计算机基于下层的操作系统和硬件平台,可以在上面执行java的字节码程序。编译器负责把Java程序转成Class文件,方便Jvm来读取它.Jvm是java虚拟机,其实它就是解释器,把Class文件中的命令转成某种平台的命令,比如把Java命令转成Windows下的命令,然后Java程序就执...

2019-07-15 17:03:10 407

原创 面试---关于jvm的组成

JVM(Java 虚拟机)算是面试必问的问题的了。而但凡问 JVM 一定会问的第一个问题就是:讲一讲 JVM 的组成?那本文就讲一下 JVM 的组成。首先来说 JVM 的组成分为,整体组成部分和运行时数据区组成部分。一、JVM 整体组成JVM 整体组成可分为以下四个部分:类加载器(ClassLoader) 运行时数据区(Runtime Data Area) 执行引...

2019-07-15 15:11:10 160

原创 浅析MyBatis框架的优缺点及适用的场合

MyBatis的优点(1)与JDBC相比,减少了50%以上的代码量。(2)MyBatis是嘴加单的持久层框架,小巧并且简单易学。(3)MyBatis相当灵活,不会对应用程序或者数据库的现有设计强加任何影响,SQL写在XML文件里,从程序代码中彻底分离,降低耦合度,便...

2019-07-14 20:51:57 1020

原创 关于redis的详解

一.概念。redis是一款高性能的NOSQL系列的非关系型数据库。二.下载安装。  1、redis有中文网。  2、解压直接可以使用。    *redis.windows.conf :配置文件。    *redis-cli.exe : redis的客户端。    * redis-server.exe :redis 服务器端。三.命令操作。  1、...

2019-07-14 16:42:09 145

空空如也

空空如也

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

TA关注的人

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