自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【计算机组成与体系结构】硬件组成

计算机 = 硬件+软件。计算机系统组成冯·诺依曼计算机体系原始的冯·诺依曼计算机以运算器为核心,如今的计算机以存储器为核心。控制器分析和执行指令的部件,也是协调其他部件工作的中心,所依据的是机器指令。组成包含:(1)程序计数器PC:存储下一条要执行指令的地址;(2)指令寄存器IR:存储即将执行的指令;(3)指令译码器ID:对指令中的操作码字段进行分析解释;(4)时序部件:提供时序控制信号。运算器也称算数逻辑单元(ALU),用于在控制器的控制下完成算术运算和逻辑运算。组成包含:(1

2021-08-01 21:30:53 432

原创 JVM常用配置参数和调优策略

堆内存配置参数参数描述-XmsJVM初始化堆内存大小-Xmx堆内存最大值-Xmn堆内存年轻代大小,剩下为老年代大小-XX:PermGen永久代初始化大小(JDK1.8开始放弃了永久代)-XX:MaxPermGen永久代最大值-XX:SurvivorRatioEden Space和Survivor Space空间的比例-XX:Ne...

2020-03-25 11:16:32 343

原创 关于枚举

枚举可以序列化吗?答:能。枚举虽然能被序列化,但是实现与Class的序列化不同。oracle官方文档中有写:1.12 Serialization of Enum ConstantsEnum constants are serialized differently than ordinary serializable or externalizable objects. The serial...

2020-01-03 01:12:03 474

原创 Java线程的生命周期和状态控制

生命周期Java线程有新建(New)、就绪(Runable)、执行(Running)、阻塞(Blocked)、死亡(Dead)五种状态。新建状态线程创建完成时,即new Thread(…)还没调用start前的状态。就绪调用线程的start()方法后,进入就绪状态,等待CPU资源。就绪状态的线程由Java运行时系统的线程调度成都(thread scheduler)来调度。执行就绪状...

2019-12-28 02:19:57 285

原创 hashCode和equals

hashCode和equals是Object的非final方法,它的存在就是用来被重写的。Object的equals方法如下:public boolean equals(Object obj) { return (this == obj);}Object的hashCode方法是个native方法。hashCode返回对象的hash值,主要用户快速查找。在HashMap,HashT...

2019-12-23 15:11:59 240

原创 【设计模式】代理模式

代理模式是一种结构型设计模式,可以说是GOF23中应用最广泛的模式,尤其是其中的动态代理,功能强大,也较难理解。代理什么是代理?房屋中介就是一种代理,它是房东的代理。静态代理代理模式,不管是静态还是动态,肯定有一个被代理的真实角色(Target),是最后真正执行业务逻辑的对象。比如房东,房子是他的,收钱的是他,办手续的也是他。另外有一个代理角色(Proxy),比如中介,并且代理肯定有一...

2019-12-09 00:58:27 124

原创 【设计模式】工厂模式

工厂模式是一种创建型设计模式。开闭原则开闭原则是设计模式原则之一,倡导实体应当对扩展开发,对修改关闭。意思是说,你想要扩展或者修改已写好代码的功能,可以往里面加入新的代码,但不允许修改修改以前已经写好的代码。高耦合将会导致,拓展功能时,不得不修改以前的代码。比如public class Service { Dao dao = new JpaDao(); void se...

2019-12-08 00:13:45 336

原创 【设计模式】单例模式

为什么要使用单例模式单例模式属于“创建型”设计模式,目的是将创建对象的数量控制在一个。1 场景需要,避免出现一个对象多个状态的问题windows的回收站,只有一个,如果存在多个回收站,清空一个,另一个回收站的垃圾还在,到底已哪个为准?博客有个访问人数计数功能,今天有100的访问人数,明天又来一个新的计数器,从0开始计数,导致统计结果有误。2 节约系统资源开销线程池、连接池等都是单例,...

2019-12-06 17:26:47 187

原创 MySql分页limit优化

问题mysql使用limit分页,当limit offset,rows的offset数值过大时,会出现效率问题。准备数据正常查询:select * from t_bank where bank_code like '0%' limit 145000,5;查询三次,时间分别是0.684s,0.901s,0.708s.解决办法select * from t_bank JOIN ...

2019-12-05 18:02:53 159

转载 ElasticSearch的倒排索引和分析器

ElasticSearch的倒排索引概念倒排索引举例分析和分析器ElasticSearch内置分析器标准分析器简单分析器空格分析器语言分析器概念ElasticSearch使用一种称之为 倒排索引 的数据结构,实现快速的全文索引。一个倒排索引由 文档中所有不重复的词 + 包含对应的词的文档列表 组成。倒排索引举例比如有两个文档,有如下内容:1. The quick brown fox j...

2019-08-24 17:03:05 170

转载 【多线程】线程池

【多线程】线程池线程池的优势创建线程池构造方法便捷创建方法newScheduledThreadPool工作机制提交任务到线程池的方式使用线程池的注意点面试题线程池的优势管理线程复用线程、控制最大并发数。对线程进行统一分配、调优和监控。降低资源消耗通过重复利用已创建的线程,降低线程创建、销毁的资源开销。提高响应速度任务不需要创建线程即可使用现有线程立刻执行。实现任务线程队列的 缓存...

2019-07-29 17:12:40 122

转载 Java OOM

Java OOM除了程序计数器不会发生OOM外,哪些区域会发生OOM的情况呢?堆内存监控于诊断堆内存结构堆内存参数配置Java性能监控与问题定位工具根据javadoc的描述,OOM是指JVM的内存不够用了,同时垃圾收集器也无法提供更多的内存。从描述中可以看出,在JVM抛出OutOfMemoryError之前,垃圾收集器一般会出马先尝试回收内存。除了程序计数器不会发生OOM外,哪些区域会发生OO...

2019-07-21 00:12:16 269

原创 【设计模式】策略模式

策略模式完成一项任务,往往可以有多种不同的方式,每一种方式称为一个策略,我们可以根据环境或者条件的不同选择不同的策略来完成该项任务。定义个Duck类,Duck的display都是统一的,不然也不会被称之为Duck。但是quack、swim、fly就是可能变化之处。fly可能是用翅膀fly,也有可能是通过火箭推进器fly。定义方法1:定义一个父类Duck,有display、quack...

2019-06-28 18:30:47 124

原创 TCP三次握手和四次挥手

除了上图中连接的状态外还可能出现如下状态:CLOSING:TCP连接断开过程中,主动关闭端发送FIN包后,没有收到对应的ACK包,缺收到了对方的FIN包,此时进入CLOSING状态。★ 为什么建立TCP连接时三次数据包,而断开连接时四次?client发送FIN包给server,server只要收到,就会响应一个ACK包表示自己已经收到了FIN,但是此时server给client的数...

2019-05-24 18:20:49 158

原创 关于Redis和DB一致性问题

1、问题:先存DB还是先存Redis?不管先存哪一个都存在一个存成功另一个存失败的情况,导致DB与Redis数据不一致。解决办法:update: 删除Redis --> 更新DB --> 下次查询同步更新Redis。(1)删Redis失败,不会更新DB,数据一致。(2)删Redis成功,更新DB失败,下次查询将旧值更新到Redis。(3)删Redis成功,更新D...

2019-02-27 22:00:55 865

转载 Linux下替换jar包war包文件

1. 先用jar -tvf {war | jar} | grepXXX 看一下文件中 要替换文件的路径2. 用jar -xvf {war | jar} {dest} 解压出要替换的文件,包括文件所在的目录路径3.再将新文件替换解压之后的目录结构中的文件4. 最后jar -uvf {war | jar} {dest}...

2019-02-27 21:23:38 835

原创 MySQL索引

一、索引类型MySQL索引是一种特殊的数据结构,InnoDB的索引是表空间的一部分。索引保存着涉及所有记录的引用指针。1、普通索引(index)2、唯一索引 主键索引(primary key)唯一索引(unique)3、联合索引 联合主键索引:primary key(id, name, age) 联合唯一索引:unique(id, name...

2018-06-26 20:08:12 1252

原创 MySQL事务隔离级别以及实现原理

一、事务完整性问题脏读:可以读取其他事务未提交的数据,如果该事务回滚,则数据为错误数据。不可重复读:A事务查看,B事务修改提交,A事务再次查看,数据不一样。幻读:幻读与不可重复读相似,但不可重复读重点在于update和delete,幻读重点在于insertt Session A Session B|| START TRANSACTION; ...

2018-06-04 10:13:10 5110 6

原创 MySQL锁

数据库锁,是用来在多线程和高并发场景下,保证数据一致性以及稳定性的一种机制。MySQL中,不同的存储引擎,其锁粒度与实现原理也不同。InnoDB支持行锁、表锁(InnoDB的两大优势:事务、行锁),MyISAM仅支持表锁,BerkeleyDB支持页级锁。MySQL各种存储引擎按粒度划分可以分为三种级别的锁定机制:表级锁、行级锁、页级锁;按锁机制划分可以分为共享锁和排它锁(独占锁)。...

2018-06-03 21:55:32 335

原创 MySql Engine

一、介绍        Mysql的不同的存储引擎使用不同的存储机制、索引技巧、锁定水平并最终提供广泛的不同的功能和能力。二、使用create table TABLE_NAME(COLUMN TYPE) engine=Innodb;alter table TABLE_NAME engine=Innodb;三、区别存储引擎优势劣势适用场景ISAM    快速读取,不占用大量的内存和存储资源不支持事...

2018-05-22 17:58:43 2322

原创 MongDB的基本操作

一、建库use DATABASE_NAME此时在列表中还查不到该库,需插入数据才能看到。这里没有建表,会自动生成lttest表。MongoDB 中默认的数据库为 test,如果你没有创建新的数据库,集合将存放在 test 数据库中。二、删库use DATABASE_NAMEdb.dropDatabase()三、创建集合db.createCollection(NAME, OPTIONS)NAME:...

2018-05-21 18:17:34 255

原创 Elasticsearch

一、介绍        ElasticSearch是一个开源的高拓展的分布式全文检索引擎,它可以近乎实时地存储、检索数据。拓展性很好,可以拓展到处理PB级别的数据。        ElasticSearch使用Java开发并使用Lucene作为其核心来实现所有的索引和搜索的功能。ElasticSearch通过简单的RESTFul API来隐藏Lucene的复杂性,从而使得全文检索变得简单。二、El...

2018-05-16 18:17:38 208

转载 编程的logic和control

摘自infoQ陈皓《左耳朵耗子:编程的本质是什么?》两篇论文1976 年,瑞士计算机科学家,Algol W,Modula,Oberon 和 Pascal 语言的设计师 Niklaus Emil Wirth 写了一本非常经典的书《Algorithms + Data Structures = Programs》(链接为 1985 年版) ,即算法 + 数据结构 = 程序。这本书主要写了算法和数据结构的...

2018-05-15 16:51:40 1110

原创 SpringCloud,Sleuth+Zipkin

一、介绍        SpringCloud Sleuth为微服务提供了调用链路追踪解决方案,并且兼容支持了Zipkin,只需要引入相应的依赖,配置,即可实现对链路的监控。       SpringCloud Sleuth可以追踪10种组件:async、Hystrix、messaging、websocket、rxjava、scheduling、web(Spring MVC Controller,...

2018-04-19 16:18:11 842

原创 分布式配置中心SpringCloud Config

一、介绍        分布式系统中,服务数量多,配置文件也多,为了方便配置文件的管理,实时更新,需要分布式配置中心组建。        SpringCloud有服务配置中心组建SpringCloud Config。它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库。        SpringCloud组件分两个角色,Config Server和Config client。二...

2018-04-13 18:26:15 709

原创 SpringCloud,Zuul

        SpringCloud微服务体系中,一种常见的负载均衡的方式是,客户端的请求先通过负载均衡(Zuul+Ngnix),再达到服务网关(Zuul集群),然后才到具体的服务器。        服务统一注册到服务注册中心集群,服务的所有配置文件由配置服务管理。一、Zuul介绍        Zuul的主要功能是路由转发和过滤器。路由是微服务的一部分,比如/api/user转发到user服务...

2018-04-11 16:20:45 238

原创 SpringCloud,Hystrix

        微服务架构中,根据业务将架构拆成一个个服务,服务与服务之间可以相互调用(RPC),SpringCloud中可以通过RestTemplate+Ribbon和Feign调用。为了保证高可用,单个服务通常会集群部署,由于网络等种种原因,服务不可能100%可用,如果单个服务出现问题,调用这个服务就会出现线程阻塞,此时若出现大量请求涌入,Servlet容器的线程资源会很快被消耗完毕,导致服务...

2018-04-10 10:16:34 164

原创 SpringCloud,Feign

一、介绍        Feign是一个声明式的伪Http客户端。它使得写Http客户端变得很简单。使用feign只需要创建一个接口并注解。        它具有可插拔的注解特性,可以使用feign注解和JAX-RS注解。        Feign支持可插拔的编码器和解码器。        Feign默认集成了Ribbon,与Eureka结合,默认实现负载均衡。二、创建Feign服务       ...

2018-04-08 17:00:28 152

原创 SpringCloud,Ribbon

一、介绍SpringCloud中,服务与服务间的调用是基于http restful的。SpringCloud有两种调用方式,一种是Ribbon+RestTemplate,另一种是feign。二、Ribbon    Ribbon是一个负载均衡客户端。feign默认集成了Ribbon。    Ribbon默认实现了这些配置bean:IClientConfig ribbonClientConfig: D...

2018-04-04 15:15:26 160

原创 MongoDB和MongoTemplate

一、介绍(引自菜鸟教程)        MongoDB是一个基于分布式文件存储的数据库。由C++编写,旨在为WEB应用提供可拓展、高性能的数据存储解决方案。        MongoDB介于关系型数据库和非关系型数据库之间。它将数据存为文档,数据结构由key->value组成。        MongoDB文档类似于JSON对象,字段值可以包含其他文档、数组、以及其他数组。        二...

2018-04-03 15:39:01 1167

原创 SpringCloud,Eureka

一、介绍SpringCloud利用SpringBoot的开发便利性,巧妙地简化了分布式系统基础设施的开发。提供了以下功能:    服务注册于发现:Eureka    负载均衡:Ribbon    声明式调用:Feign    熔断器:Hystrix    路由网关:Zuul    分布式配置中心:SpringCloud Config    消息总线:SpringCloud Bus        服...

2018-03-29 18:52:29 178

原创 HBase rowkey设计原则

Hbase是三维有序存储的,通过rowkey、column key(column family和qualifier)、timestamp这三个维度可以对数据进行快速定位。1、通过get方式,指定rowkey获取唯一一条记录。2、通过scan方式,setStartRow和setEndRow参数进行范围匹配。3、全表扫描。rowkey设计原则1. 唯一原则2.

2017-11-09 20:58:53 960

原创 oracle开窗函数over()

1.先说概念oracle从8.1.6开始提供分析函数,分析函数用户计算基于组的聚合值,但是与聚合函数不同的是,分析函数可以返回基于组的多行值,而分析函数只能基于group by条件返回一行值。2.再说应用场景JRN_NO流水号Varchar2(32)USR_NO内部用户号Varchar2(20)

2017-07-11 22:41:56 606

原创 使用JPDA远程debug

JPDA(Java Platform Debugger Architecture) 是 Java 平台调试体系结构的缩写,通过 JPDA 提供的 API,开发人员可以方便灵活的搭建 Java 调试应用程序。JPDA 主要由三个部分组成:Java 虚拟机工具接口(JVMTI),Java 调试线协议(JDWP),以及 Java 调试接口(JDI)。而像Eclipse和IDEA这种开发工具提供的图形

2017-06-16 09:57:13 541

原创 Oracle的trunc函数

1. 按精度截取日期时间trunc(字段,精度)select trunc(sysdate,'yyyy') from dual;    --查当年第一天返回 2017/1/1select trunc(sysdate,'mm') from dual;    --查当月第一天返回 2017/4/1select trunc(sysdate,'hh') from

2017-04-10 19:59:24 285

原创 shell脚本登录sftp

sftp不能像ftp一样直接使用账号/密码登录(ftp ip地址; user 账户/密码),需要交互式输入登录密码。在shell中可以使用expect 传入密码。sftp $rad.put $BSF_USER@$BSF_IPexpect{ "password:" {send "$spwd\r"} "(yes/no)?" {send "yes\r";exp_continue}}也可

2017-03-31 17:04:31 21278

原创 Spark应用执行机制

Spark是专门为大规模数据设计的快速通用计算引擎。Spark应用(Application)为用户提交的应用程序。执行模式有Local(测试),Standalone、Yarn和Mesos。根据Spark Application的Driver Program是否在集群中运行,Spark应用的运行方式又可以分为CustomerCluster模式和Client模式。Spark涉及的基

2017-03-07 15:05:34 389

原创 spark笔记

hadoop判断map task处理的数据量:一个map task 对应一个split,split大小由split max、split min、block size决定,一般取中间值block size,map task数*128M(hadoop默认block size大小)。aparkOne stack rule them allAd-hoc Queries

2017-03-06 10:51:39 278

原创 Linux命令

crontab 定时触发任务1. crontab -e           编辑crontab服务文件(也可直接编辑/etc/crontab文件)分 小时日 月 星期 命令0-59 0-23 1-31 1-12 0-6 commande.g: 0,10,20,30,40,50 8-20 * * * sh /app/rpt/etl/run/bin/ctrlbatc

2017-02-28 20:56:23 317

原创 分布式发布订阅消息系统 Kafka

网站系统 Kafka集群 --> strom集群 --> redis集群Flume用于获取数据,Kafka用于缓存数据,strom用于处理,redis用于存储。Kafka类似于JMS中间件。

2017-02-24 15:02:09 543

空空如也

空空如也

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

TA关注的人

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