自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

sevencuecue的博客

欢迎大家关注我!!关注可以私信我领取资料哦~

  • 博客(66)
  • 收藏
  • 关注

原创 从砸完电脑去买新电脑这事扯一下建造者设计模式

前言(微剧场):小架昨天跟女朋友吵架了(什么?这个弟弟竟然有女朋友?先别急,别急,就假装一下他有,毕竟我们故事还要讲下去对不?),咳…于是呢,小架今天拿着女朋友昨天给的钱打算去电脑城去配一台新的电脑。这咋又扯到女朋友吵架咧?这…不会又是想水文章吧,别慌嘛,事情的经过是这样滴…话说昨日窗外阴风阵阵,雷雨交加,小架此刻正在英雄联盟召唤师大峡谷中提着40米大刀进行着激烈厮杀,殊不知,有一双眼睛...

2019-08-23 19:54:46 250

原创 实战java高并发程序设计第五章--并行模式与算法(二)

cpu cache的优化:解决伪共享问题cpu的高速缓存: 读写数据最小单位为缓存行,它从主存赋值到缓存的最小单位,一般为32字节到128字节伪共享问题: 当两个变量放在一个缓存行时,在多线程访问中,可能会影响彼此的性能.假如变量X和Y在同一个缓存行,运行在CPU1上的新城更新了X,那么cpu2上的缓存行就会失效,,同一行的Y即使没有修改也会变成无效,导致cache无法命中.解决方案:为避免...

2019-08-22 15:35:25 269 1

原创 Spring中的“多数据源”之详解

注意事项不同数据源的配置要分开 关注每次使用的数据源有多个DataSource时系统如何判断 对应的设施(事务、ORM)如何选择DataSource多数据源配置(二选一)配置@Primary类型的Bean(DataSource) 排除Spring Boot的自动配置(手动配置)DataSourceAutoConfiguration DataSourceTransactio...

2019-09-28 15:14:35 395 1

原创 性能篇系列—stream详解

Stream APIJava 8集合中的Stream相当于高级版的IteratorStream API通过Lambda表达式对集合进行各种非常便利高效的聚合操作,或者大批量数据操作Stream的聚合操作与数据库SQL的聚合操作sorted、filter、map等非常类似 在数据操作方面,Stream不仅可以通过串行的方式实现数据操作,还可以通过并行的方式处理大批量数据,提高处理效率/...

2019-09-27 19:32:01 605

原创 Java并发系列:线程封闭

前言:各位看官大佬们好! 在今天的这篇文章中,我们将来探讨线程封闭到底是什么意思,以及我们应该如何去实现它。 所以,就让我们直接开始正题吧。文章如下,如果不恰当之处,欢迎指出!1. 线程封闭大多数的并发问题仅发生在我们想要在线程之间共享可变变量或可变状态时。如果在多个线程之间操作共享变量,则所有线程都将能够读取和修改变量的值,从而出现意外或不正确的结果。一种简单的避免此问...

2019-09-27 14:20:45 179

原创 Java正则表达式详细解析

元字符正则表达式使用一些特定的元字符来检索、匹配和替换符合规则的字符串 元字符:普通字符、标准字符、限定字符(量词)、定位字符(边界字符)正则表达式引擎正则表达式是一个用正则符号写出来的公式程序对正则表达式进行语法分析,建立语法分析树 再根据语法分析树结合正则表达式引擎生成执行程序(状态机),用于字符匹配 正则表达式引擎是一套核心算法,用于建立状态机 小结 正则表达式 =...

2019-09-26 14:46:11 200

原创 干货系列性能篇之——序列化

序列化方案Java RMI采用的是Java序列化 Spring Cloud采用的是JSON序列化 Dubbo虽然兼容Java序列化,但默认使用的是Hessian序列化Java序列化原理SerializableJDK提供了输入流对象ObjectInputStream和输出流对象ObjectOutputStream 它们只能对实现了Serializable接口的类...

2019-09-25 17:08:41 170

原创 面试官之问:知道你的接口“QPS”是多少吗?

前言:原作:孤独烟。因修改不当之处欢迎指出!大家好,我是小架架。今天一大早就起来水文章了。这篇文章我个人感觉虽然含金量不是特别大,估计大家大概5分钟左右就能看完!到底是因为什么呢,因为平时干货文章分享得有点多,今天的话就一顿截图写几个命令就搞定了,所以含金量不高。然后,我们来看一下近期有一段聊天记录如下看到这里,不要吃惊,不要惊讶!看下文哦!所以,该吹的牛...

2019-09-25 07:40:56 2498

原创 Java性能之优化RPC网络通信

服务框架的核心大型服务框架的核心:RPC通信 微服务的核心是远程通信和服务治理远程通信提供了服务之间通信的桥梁,服务治理提供了服务的后勤保障服务的拆分增加了通信的成本,因此远程通信很容易成为系统瓶颈在满足一定的服务治理需求的前提下,对远程通信的性能需求是技术选型的主要影响因素很多微服务框架中的服务通信是基于RPC通信实现的在没有进行组件扩展的前提下,Spring Cloud是基于F...

2019-09-24 18:11:48 373

原创 Spring之 JDBC 异常

JDBC异常抽象Spring会将数据操作的异常转换为DataAccessException解析错误码SQLErrorCodeSQLExceptionTranslator ErrorCode定义org/springframework/jdbc/support/sql-error-codes.xml classpath下的sql-error-codes.xml(定制)or...

2019-09-24 16:02:36 585

原创 Java性能之synchronized锁的优化

synchronized / LockJDK 1.5之前,Java通过synchronized关键字来实现锁功能 synchronized是JVM实现的内置锁,锁的获取和释放都是由JVM隐式实现的 JDK 1.5,并发包中新增了Lock接口来实现锁功能 提供了与synchronized类似的同步功能,但需要显式获取和释放锁 Lock同步锁是基于Java实现的,而synchro...

2019-09-21 15:24:10 358

原创 Spring Boot 之异步执行方法

前言:最近的时候遇到一个需求,就是当服务器接到请求并不需要任务执行完成才返回结果,可以立即返回结果,让任务异步的去执行。开始考虑是直接启一个新的线程去执行任务或者把任务提交到一个线程池去执行,这两种方法都是可以的。但是Spring 这么强大,肯定有什么更简单的方法,就 google 了一下,还真有呢。就是使用 @EnableAsync 和 @Async 这两个注解就 ok 了。给方法加...

2019-09-20 14:39:32 356

原创 浅谈Java中switch分支语句

前言:在程序中遇到多分支选择的时候,想必大家都喜欢用if...else if...else...语句,尤其是初学者,因为在了解switch语句之前,我也是只会用if...else语句。那么现在看完这篇随笔的介绍后,你们又有了另外一种选择,使用switch语句可以增强代码的可能性,当然switch也不是随随便便就能用的,它也有语法规则的约束,请看下面的阐述。一、switch简介和语...

2019-09-19 19:15:19 501

原创 性能:Lock的锁之优化

Lock / synchronizedLock锁的基本操作是通过乐观锁实现的,由于Lock锁也会在阻塞时被挂起,依然属于悲观锁synchronizedLock实现方式JVM层实现Java底层代码实现锁的获取JVM隐式获取lock() / tryLock() / tryLock(timeout, unit) / lockInterruptibly()锁的释放JVM隐式释放unlock()锁的...

2019-09-17 15:49:34 722 1

原创 Java性能之线程上下文切换究极解析

线程数量在并发程序中,并不是启动更多的线程就能让程序最大限度地并发执行 线程数量设置太小,会导致程序不能充分地利用系统资源 线程数量设置太大,可能带来资源的过度竞争,导致上下文切换,带来的额外的系统开销上下文切换1.在单处理器时期,操作系统就能处理多线程并发任务,处理器给每个线程分配CPU时间片,线程在CPU时间片内执行任务CPU时间片是CPU分配给每个线程执行的时间段,一...

2019-09-17 15:17:27 1020 4

原创 10年架构师经验带你详细解析四种线程池

线程池介绍:使用线程池的好处有很多,比如节省系统资源的开销,节省创建和销毁线程的时间等,当我们需要处理的任务较多时,就可以使用线程池。线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。如果某个线程在托管代码中空闲(如正在等待某个事件),则线程池将插入另一个辅...

2019-09-17 15:14:52 137

原创 详解:动态代理中的不同实现方式

动态代理的实现1.JDK动态代理jdk动态代理实现步骤:前提:jdk动态代理有限制条件,要代理的目标对象必须要实现接口实现:使用反射API实现,具体实现原理这里不做详细讲解,这里只讲解动态代理的实现。以下为代码列表,所有涉及到的类有三个Calculator.java 【目标对象实现的接口】 CalculatorImpl.java 【目标对象】 Main.jav...

2019-09-16 15:47:58 111

原创 Spring扩展点之FactoryBean接口

前言我们首先来看一下接口的定义public interface FactoryBean<T> { /** * 返回对象实例 */ @Nullable T getObject() throws Exception; /** * 返回对象类型, */ @Nullable Class<?> getObjectType(); /** * 该工厂管理...

2019-09-16 15:32:44 137

转载 设计模式之:外观模式和桥接模式

作者:DevYK 链接:https://juejin.im/post/5d7e01f4f265da03b5747aac外观模式介绍外观模式 (Facade) 在开发过程中的运用评率非常高,尤其是在现阶段,各种第三方 SDK “充斥” 在我们周边,而这些 SDK 大多会使用外观模式。通过一个外观类使得整个系统的接口只有一个统一的高层接口,这样能够降低用户的使用成本,也对用户屏蔽...

2019-09-16 15:30:25 404 1

原创 详解及对比创建线程的三种方式

一.Java创建线程的三种方式Java中创建线程主要有三种方式:1.继承Thread类2.实现Runnable接口3.使用Callable和Future1.继承Thead类创建线程(1)继承Thread类并重写run方法(2)创建线程对象(3)调用该线程对象的start()方法来启动线程public class CreateThreadTest { publ...

2019-09-12 21:00:53 276 1

原创 浅析Java中线程组(ThreadGroup类)

Java中使用ThreadGroup类来代表线程组,表示一组线程的集合,可以对一批线程和线程组进行管理。可以把线程归属到某一个线程组中,线程组中可以有线程对象,也可以有线程组,组中还可以有线程,这样的组织结构有点类似于树的形式,如图所示。用户创建的所有线程都属于指定线程组,如果没有显式指定属于哪个线程组,那么该线程就属于默认线程组(即main线程组)。默认情况下,子线程和父线程处于同...

2019-09-12 15:49:10 255 1

原创 Java学习之接口与继承 多态

Java的多态操作符的多态+可以作为算数运算,也可以作为字符串连接类的多态父类引用指向子类对象示例 1 :操作符的多态同一个操作符在不同情境下,具备不同的作用如果+号两侧都是整型,那么+代表 数字相加如果+号两侧,任意一个是字符串,那么+代表字符串连接package charactor; public class Hero { public ...

2019-09-12 14:07:00 200 1

原创 五分钟看懂UML类图与类的关系详解

在画类图的时候,理清类和类之间的关系是重点。类的关系有泛化(Generalization)、实现(Realization)、依赖(Dependency)和关联(Association)。其中关联又分为一般关联关系和聚合关系(Aggregation),合成关系(Composition)。下面我们结合实例理解这些关系。基本概念类图(Class Diagram): 类图是面向对象系统建模中最常用...

2019-09-11 21:18:06 357

原创 JAVA集合框架的特点及实现原理简介

1.集合框架总体架构集合大致分为Set、List、Queue、Map四种体系,其中List,Set,Queue继承自Collection接口,Map为独立接口 Set的实现类有:HashSet,LinkedHashSet,TreeSet... List下有ArrayList,Vector,LinkedList... Map下有Hashtable,LinkedHashMap,Has...

2019-09-11 20:15:19 211

原创 详解:Java字符串类型"switch"的底层原理

前言:最近更新得会比较频繁,希望大家见谅哦!也感谢关注我的人,我会更加更加努力去做的!基础我们现在使用的Java的版本,基本上是都支持String类型的。当然除了String类型,还有int、char、byte、short、enum等等也都是支持的。然而在其底部实现中,还是基于 整型的,也就是int、byte、short这些类型。我们先来看一下int的一个简单例子,主要部分...

2019-09-11 17:39:43 690

原创 深入理解负载均衡经典案例

前言闲来无事写篇文章总结下负载均衡。正文负载均衡负载均衡是高可用架构的一个关键组件,主要用来提高性能和可用性,通过负载均衡将流量分发到多个服务器,同时多服务器能够消除这部分的单点故障。当然负载均衡器本身就是一个单点故障隐患,可以考虑文章后面说的负载均衡双机热备或其他方案消除单点故障提高可用性。一个没有使用负载均衡的Web架构一般会长得像这样:没有负载均衡的...

2019-09-11 15:13:35 133

原创 数据库SQL语句大全——最常用的SQL语句

检索数据:检索单个列:SELECT pname FROM product 检索多个列:SELECT pname,market_price,is_hot FROM product 检索所有列:SELECT * FROM product 过滤检索结果中的重复数据:SELECT DISTINCT market_price FROM productDISTINCT关键字:1、...

2019-09-11 14:37:55 205

原创 看一下“Dubbo 2.7”的三大新特性

Dubbo 2.7.x 作为 Apache 的孵化版本,除了代码优化之外,还新增了许多重磅的新特性,本文将会介绍其中最典型的三个新特性:一、异步化改造 二、三大中心改造 三、服务治理增强一、异步支持优化我们知道dubbo协议本身支持三种发送请求方式:单向发送:执行方法不需要返回结果同步发送:执行方法后,等待结果返回,否则一直阻塞.异步发送:也就是当我发送调用后,...

2019-09-10 21:40:42 552

原创 Java中的集合类(List,Set.Map)

1.List1.1 Arraylist 与 LinkedList 区别1.是否保证线程安全: ArrayList 和 LinkedList 都是不同步的,也就是不保证线程安全;2.底层数据结构: Arraylist 底层使用的是 Object 数组;LinkedList 底层使用的是 双向链表 数据结构3.插入和删除是否受元素位置的影响: ① ArrayList 采用数组存储,所以插入和删...

2019-09-10 20:24:08 111

原创 看懂什么是环境变量!

前言相信大家初学java时,肯定会涉及到“配置环境变量”,而在网上搜索大多是教我们如何如配置,真正说明为什么要去配置环境变量的不多。不管在windows里还是liunx里都少不了环境变量的配置,一键Copy是解决不了问题的,还可能会出现各种各样的问题,如果我们搞清楚原理,就会方便许多。今天我们就以java环境变量来了解,什么是环境变量以及为什么要配置。什么是环境变量环境变量(Envir...

2019-09-10 17:48:48 211

原创 来看一下Java中“-”与equeals的区别

简介:= ===是比较两个变量的值,如果是基本数据类型,那么就是比较的基本数据的大小值情况一int a=1;int b=1;System.out.println(a==b);以上图中:==比较的就是上面两个内存块中的值,都是1,所以是true但是如果存储的是引用类型,其实比较的还是变量本身所存储的值,我们都知道, 变量存储引用类型其实存储的只是引用对象的地址作为值存储到变量中,...

2019-09-10 15:55:36 220

原创 经典案例—Spring 数据处理框架的演变

定义:定量分析的成败在很大程度上取决于采集,存储和处理数据的能力。若能及时地向业务决策者提供深刻并可靠的数据解读,大数据项目就会有更多机会取得成功。如今,为数据处理设计合适的架构需要下很大工夫。数据处理主要包括 3 个方面:批处理:批量处理大量的静态数据。这一方式一般是分布式并且可扩展的。实时处理:实时处理主要处理连续且无尽的的数据流。这些数据流也是分布式的,且速度很快。混合计算模型:...

2019-09-10 14:21:04 301

原创 到底应该如何设置 Java 线程池的大小?

在我们日常业务开发过程中,或多或少都会用到并发的功能。那么在用到并发功能的过程中,就肯定会碰到下面这个问题并发线程池到底设置多大呢?通常有点年纪的程序员或许都听说这样一个说法 (其中 N 代表 CPU 的个数)1.CPU 密集型应用,线程池大小设置为 N + 12.IO 密集型应用,线程池大小设置为 2N这个说法到底是不是正确的呢?其实这是极不正确的。那为什么呢?首先我们从反面来...

2019-09-09 21:28:14 309

原创 分布式 RPC 框架性能大比拼,Dubbo最差?

Dubbo是什么Dubbo 是阿里巴巴公司开源的一个Java高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成。不过,略有遗憾的是,据说在淘宝内部,dubbo由于跟淘宝另一个类似的框架HSF(非开源)有竞争关系,导致dubbo团队已经解散,反到是当当网的扩展版本仍在持续发展,墙内开花墙外香。其它的一些知名电商如当当、京东、国美维护...

2019-09-09 21:15:45 134

原创 java——内存中的数组

数组数组是一种引用类型,数组引用变量只是一个引用,数组元素和数组变量在内存中时分开存放的,下面我们看一下基本类型的数组和引用类型的数组在内存中的地址分布情况基本类型数组:我们先来看一段代码:public static void main(String[] args) { int[] arr; arr=new int[5]; for(int i=0;i<ar...

2019-09-09 20:59:58 85

原创 如何认识Java异常处理?本作者解答一下

请浏览下文什么是异常?就是在编程过程中或者程序运行过程中出现的一些意外。什么是异常处理?就是提前编写程序处理可能发生的意外。具体的过程是怎样的?知己知彼方能百战百胜。Java中的异常是用对象来表示的,那么异常的对象从哪里来呢?异常主要有两个来源:一是java运行时环境自动抛出的系统生成的异常,例如:除数是零的时候。二是程序员自己抛出的异常,这个异常可以是程序员自己定义的,也可以是...

2019-09-09 20:48:58 106 1

原创 超解析java泛型

这篇文章来讲一下,我对Java泛型的理解!请看下去泛型入门我们在学习集合的时候,会看到如下图的警告:集合有一个特点——当你把对象丢进集合中,集合就会“忘记”这个对象的类型,而把它当做Object类型来处理。这样当程序员不小心将不同类型的数据丢进同一个集合中时就会出现错误。从Java5以后,Java引入了“参数化类型”的概念,允许程序在创建集合时指定集合的类型,这就是我们今天要讲的泛型...

2019-09-09 20:43:40 345

原创 1分钟带你看懂Java内部类

1.为什么使用内部类?使用内部类最吸引人的原因是:每个内部类都能独立地继承一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没有影响1.1.使用内部类最大的优点就在于它能够非常好的解决多重继承的问题,使用内部类还能够为我们带来如下特性:(1)、内部类可以用多个实例,每个实例都有自己的状态信息,并且与其他外围对象的信息相互独。(2)、在单个外围类中,可以让多个...

2019-09-08 22:23:32 142 1

原创 Java中的注解使用:全面性的总结一下

前话:今天,我们又来聊一下注解的使用,做一下详细的解析,也介绍了自定义注解,请耐心往下看哟!注解的介绍:在2005年,sun公司推出了jdk1.5,同时推出的注解功能吸引了很多人的目光,使用注解编写代码,能够减轻java程序员繁琐配置的痛苦。使用注解可以编写出更加易于维护,bug更少的代码。注解是什么呢?按照官方的说法,注解就是元标签,可以添加到你的代码,并应用于包声明、类型声明、...

2019-09-08 16:07:19 441 1

原创 来分享一下,我理解Java中的“HashCode”

什么是hashcodehashcode即哈希码,是方便用于查找而使用的一种方法1.假如内存中有这样的位置 0 1 2 3 4 5 6 7 ,当我要存储一个对象时,我就要把这个对象放在8个位置之一,如果不用hashcode而任意存放,那么当查找时就需要到这八个位置里挨个去找,或者用二分法一类的算法,但如果用hashcode那就会使效率提高很多。2.我们这个对象中有个字段叫ID,那么我们就定义...

2019-09-06 21:57:19 91 1

空空如也

空空如也

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

TA关注的人

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