
java
文章平均质量分 62
阿肯那顿
这个作者很懒,什么都没留下…
展开
-
@Configuration标记得类加载方式
@Configuration标记得类加载方式我们都知道 SpringBoot默认会扫描启动类同包以及子包下的注解但是如果@Configuration标记的类不在启动类的包下怎么办呢? 我们来看看@Configuration两种起作用的方法 :把被标记的类所在包的路径纳入scanBasePackages,这样就进入了Spring的扫描范围。在spring.factorie...原创 2018-01-31 10:45:38 · 2306 阅读 · 0 评论 -
Java原子类实现原理分析
原子类来自于java.util.concurrent包,而java.util.concurrent包完全建立在CAS之上的,没有CAS就不会有此包。可见CAS的重要性。什么是CASCompare and Swap, 翻译成比较并交换。 java.util.concurrent包中借助CAS实现了区别于synchronouse同步锁的一种乐观锁。CAS有3个操作数,内存值V,旧的预期值...转载 2018-03-16 13:43:34 · 4075 阅读 · 0 评论 -
为什么要设计JAVA异常
从业这么多年,每当谈起异常,都是懵懵懂懂,只是依稀记得它是处理错误的,当程序出错,日志里会有异常日志,可以查看异常定位错误。但是最近突然发现一个问题,那就是处理错误不一定非的要用异常啊,比如说参数合法性检查等等,判断是否为空后直接返回校验信息等,通过程序的各种手段都可以处理,那么为什么要用异常呢?它到底能解决什么问题呢?我们平时写程序时,很多人都忽略了一个问题,那就是“程序是否正确的执行完了”...原创 2018-03-13 09:43:28 · 1363 阅读 · 0 评论 -
Java 异常处理的误区和经验总结
本文着重介绍了 Java 异常选择和使用中的一些误区,希望各位读者能够熟练掌握异常处理的一些注意点和原则,注意总结和归纳。只有处理好了异常,才能提升开发人员的基本素养,提高系统的健壮性,提升用户体验,提高产品的价值。误区一、异常的选择 上图描述了异常的结构,其实我们都知道异常分检测异常和非检测异常,但是在实际中又混淆了这两种异常的应用。由于非检测异常使用方便,很多开发人员就认为检测异...转载 2018-03-13 10:01:40 · 218 阅读 · 0 评论 -
日志输出
我们在开发过程中常用的日志输出方式如下:system.out.println();e.printStatckTrace();利用某个日志框架来输出日志今天讨论的就是这几种方式的不同。标准输出成员:方式1、2。第二种其实也是调用第一种方式实现目的地:java控制台。在生产环境中,根据操作系统、Web容器的不同,不一定会将控制台的log是否能被收录到日志文件里。所以是否可以...原创 2018-03-13 10:08:18 · 855 阅读 · 0 评论 -
SLF4J处理日志
SLF4J是什么The Simple Logging Facade for Java,笼统的讲就是slf4j是一系列的日志接口。 The Simple Logging Facade for Java (SLF4J) serves as a simple facade or abstraction for various logging frameworks, such as java....原创 2018-03-13 11:03:55 · 3282 阅读 · 0 评论 -
Redis集群模式
此文由多处转载,自行组织,水平有限,有错误,望大家指正。现在越来越多的项目都会利用到redis,多实例redis服务比单实例要复杂的多,这里面涉及到定位、容错、扩容等技术问题。我们常用sharding技术来对此进行管理,其集群模式主要有以下几种方式:主从复制哨兵模式Redis官方 Cluster集群模式(服务端sharding)Jedis sharding集群(客户端shardin...转载 2018-03-19 15:13:07 · 10001 阅读 · 2 评论 -
Maven依赖中的Scope、传递与隔断
Scope的分类compile 默认的scope,表示 dependency 都可以在生命周期中使用。而且,这些dependencies 会传递到依赖的项目中。适用于所有阶段,会随着项目一起发布。即依赖的项目会参与到当前项目的编译、运行、测试以及打包发布,是一个比较强的依赖范围。test 表示dependency作用在测试时,不作用在运行时。 只在测试时使用,用于编译和运行测试代码。不...原创 2018-03-14 16:30:11 · 3560 阅读 · 1 评论 -
微服务概述
微服务越来越火,我也不自觉得加入到微服务的队伍里来了,可是对于微服务的具体概念好像还没有一个统一的定义,这里基于自己的理解,说说到底什么是微服务。什么是微服务首先微服务是相对于传统的单体系统而言,所谓的微,即为细小,粒度细小,需要参与的人员细小;服务,即为独立的功能单元,是用户感知的最小的功能集。 所谓的微服务架构也就是说把以前的独立、单一、巨大的系统拆分成粒度更小的多个或者多组服务,每...原创 2018-04-03 15:17:52 · 261 阅读 · 0 评论 -
SpringCloud学习
微服务概述服务的注册与发现(Eureka) Spring Cloud Eureka Client原创 2018-04-03 15:24:30 · 214 阅读 · 0 评论 -
Spring事务传播机制
Spring在TransactionDefinition接口中规定了7种类型的事务传播行为,它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播,即协调已经有事务标识的方法之间的发生调用时的事务上下文的规则(是否要有独立的事务隔离级别和锁)概述当我们调用一个基于Spring的Service接口方法(如UserService#addUser())时,它将运行于Spring管理的事务 环...原创 2018-03-16 11:26:50 · 220 阅读 · 0 评论 -
Lambda 表达式有何用处?
作者:Sevenvidia 来源:https://www.zhihu.com/question/20125256/answer/324121308什么是Lambda?我们知道,对于一个Java变量,我们可以赋给其一个“值”。 如果你想把“一块代码”赋给一个Java变量,应该怎么做呢? 比如,我想把右边那块代码,赋给一个叫做aBlockOfCode的Java变量: ...转载 2018-03-02 10:12:37 · 646 阅读 · 0 评论 -
面向对象设计模式概述
什么是面向对象简单的说是相对与面向过程来说的,就是将数据与方法封装在一起,作为对象。然后对象自己去实现具体细节。面向对象的目的代码重用,提高开发效率解耦,降低维护成本面向对象的特性封装就是指在程序设计时,将程序的内部细节(属性,方法)隐藏起来,只对公开接口,使之成为一个抽象的整体,即类。其隐藏和公开的动作通过访问控制关键字来控制。面向对象计算始于这个基本概念,即现原创 2018-02-06 10:07:09 · 357 阅读 · 0 评论 -
面向对象设计模式原则
设计模式先来说说设计模式,什么是设计模式呢? 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式的分类总体来说设计模式分为三大类:创建型模式:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式:适配器模式、装饰转载 2018-02-06 10:51:02 · 151 阅读 · 0 评论 -
为什么NIO比BIO效率高
NIO比BIO效率高,主要原因是什么呢? 网上大多给出了两者的区别,可是具体效率高在哪里呢。首先我们看一下各自的特点 BIO:socketServer的accept方法是阻塞的。当有连接请求时,socketServer通过accept方法获取一个socket取得socket后,将这个socket分给一个线程去处理。此时socket需要等待有效的请求数据到来后,才可以真正开始处理请...原创 2018-02-26 22:53:50 · 11057 阅读 · 10 评论 -
BIO与NIO、AIO的区别
IO的方式通常分为几种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。BIO在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要对每个请求建立一堆线程等待请求,而客户端发送请求后,先咨询服务端是否有线程相应,如果没有则会一直等待或者遭到拒绝请求,如果有的...转载 2018-02-26 23:09:37 · 192 阅读 · 0 评论 -
NIO的几种模型
Reactor单线程模型:单个线程完成所有事情包括接收客户端的TCP连接请求,读取和写入套接字数据等。 对于一些小容量应用场景,可以使用单线程模型。但是对于高负载、大并发的应用却不合适,主要原因如下:一个NIO线程同时处理成百上千的链路,性能上无法支撑,即便NIO线程的CPU负荷达到100%,也无法满足海量消息的编码、解码、读取和发送;当NIO线程负载过重之后,处理速度将变慢,这会导...转载 2018-02-26 23:12:35 · 1826 阅读 · 0 评论 -
二分查找
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以...原创 2018-02-12 22:01:28 · 585 阅读 · 0 评论 -
高并发负载策略
nginx单点故障怎么破?问题域nginx、lvs、keepalived、f5、DNS轮询,每每提到这些技术,往往讨论的是接入层的这样几个问题:可用性:任何一台机器挂了,服务受不受影响 扩展性:能否通过增加机器,扩充系统的性能反向代理+负载均衡:请求是否均匀分摊到后端的操作单元执行名词解释由于每个技术人的背景和知识域不同,上面那些名词缩写(运维的同学再熟悉不过了),还是...转载 2018-02-22 10:05:12 · 289 阅读 · 0 评论 -
为什么需要序列化
MSDN的定义:序列化是将对象状态转换为可保持或可传输的形式的过程。序列化的补集是反序列化,后者将流转换为对象。这两个过程一起保证数据易于存储和传输。大家关心的是为什么需要序列化,用传统的方法也能实现这种需求吗,它存在的价值是什么,低层的原理、实质、基因的区别是什么?这也是我的疑问,通过在网上搜集,找到了较满意的答案,分享给大家。答案一序列化是用来通信的,服务端把数据序列化,发...转载 2018-02-22 10:31:10 · 20945 阅读 · 8 评论 -
杂谈 GC
在Hotspot VM实现中,主要有两大类GCPartial GC:并不会堆整个GC堆进行收集 young gc:只收集 young gen 的GCold gc:只收集 old gen 的GC,只有CMS的 concurrent collectionmixed GC:收集整个 young gen 以及部分 old gen 的GC,只有G1Full GC:收集整个堆,包括young g...转载 2018-03-09 14:22:59 · 215 阅读 · 0 评论 -
服务的注册与发现(Eureka)
服务治理是微服务架构中最为核心和基础的模块,它主要用来实现各个微服务实例的自动化注册和发现。 微服务中用来做注册中心的组件常有zookeeper、eureka、Consul等,这里主要学习Eureka。Eureka的工作原理Eureka的组件主要由服务端和客户端组成:服务端:即为注册中心,支持高可用配置,与zookeeper不一样,在CAP理论中,zookeeper保证CP,而...转载 2018-04-03 15:27:12 · 1118 阅读 · 0 评论