自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 资源 (2)
  • 收藏
  • 关注

转载 Spring Boot文件加载系统

Spring Boot文件加载系统一、配置文档application.properties的基本使用二、绑定对象bean调用三、参数间引用四、使用自定义新建的配置文件五、配置文件优先级六.随机值配置七.外部配置-命令行参数配置八.springboot使用spring.profiles.active添加多个properties或者yml配置文件九.springboot 加载自定义yml文件一、配置文档配置项的调用(application.properti..

2021-10-24 14:52:46 377

原创 架构师必备30个基本原则

一、基本原则原则1:KISS (Keep it simple,sutpid) 和保持每件事情都尽可能的简单,用最简单的解决方案来解决问题。原则2:YAGNI(你不需要它)原则 ,只在需要时构建。原则3:先学会爬,然后再学会走,最后学会跑。换句话说,先保证能够正常运行,然后优化它使其更好,最后逐渐让它变得完美。使用迭代开发,采用敏捷开发模式。为每个功能制定一个开发周期(最多2周),然后不...

2019-11-29 14:35:44 289

转载 ThreadLocal简介(面试用)

说明面试官:讲讲你对ThreadLocal的一些理解。那么我们该怎么回答呢????你也可以思考下,下面看看零度的思考; ThreadLocal用在什么地方? ThreadLocal一些细节! ThreadLocal的最佳实践! 思考 ThreadLocal用在什么地方?讨论ThreadLocal用在什么地方前,我们先明确下,如果仅仅就一个线程,那...

2019-07-18 10:48:57 376

转载 mysql锁机制

锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的 计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一 个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。本章我们着重讨论MySQL锁机制 的特点,常见的锁问题,以及解决My...

2019-07-10 15:40:08 104

转载 java NIO

现在使用NIO的场景越来越多,很多网上的技术框架或多或少的使用NIO技术,譬如Tomcat,Jetty。学习和掌握NIO技术已经不是一个JAVA攻城狮的加分技能,而是一个必备技能。在前面2篇文章《什么是Zero-Copy?》和《NIO相关基础篇》中我们学习了NIO的相关理论知识,而在本篇中我们一起来学习一下Java NIO的实战知识。全文较长,建议先马后看(记得关注不迷路)。一、概述NIO...

2019-07-01 16:03:06 103

转载 深入理解NIO

初识NIO:在 JDK 1. 4 中新加入了 NIO( New Input/ Output)类,引入了一种基于通道和缓冲区的 I/O 方式,它可以使用 Native 函数库直接分配堆外内存,然后通过一个存储在 Java 堆的 DirectByteBuffer 对象作为这块内存的引用进行操作,避免了在 Java 堆和 Native 堆中来回复制数据。 NIO 是一种同...

2019-07-01 13:59:52 179

转载 zk选举

窃以为,对于zookeeper这种东西,仅仅知道怎么安装是远远不够的(废话么这不是,,,),至少要对其几个典型的应用场景进行了解,才能比较全面的知道zk究竟能干啥,怎么玩儿,以后的日子里才能知道这货如何能为我所用。于是,有了如下的学习:我们知道zookeeper可以用于搭建高可用服务框架,主要先看以下几个应用场景:1、 master的选举基本思路和编码实现2、 数据的发布和订阅3、 软负...

2018-11-29 21:50:40 521

转载 TCC分布式事务的实现原理入门

一、写在前面 之前网上看到很多写分布式事务的文章,不过大多都是将分布式事务各种技术方案简单介绍一下。很多朋友看了不少文章,还是不知道分布式事务到底怎么回事,在项目里到底如何使用。 所以咱们这篇文章,就用大白话+手工绘图,并结合一个电商系统的案例实践,来给大家讲清楚到底什么是TCC分布式事务。 首先说一下,这里可能会牵扯到一些Spring Cloud的原理,如果有不太清楚的同...

2018-11-19 14:11:44 1497 1

转载 了解Java中的内存泄漏

1. 简介Java的核心优势之一是在内置垃圾收集器(简称GC)的帮助下实现自动内存管理。GC隐含地负责分配和释放内存,因此能够处理大多数内存泄漏问题。虽然GC有效地处理了大部分内存,但它并不能成为保证内存泄漏的万无一失的解决方案。GC很聪明,但并不完美。即使在尽职尽责的开发人员的应用程序中,内存仍然可能会泄漏。仍然可能存在应用程序生成大量多余对象的情况,从而耗尽关键内存资源,有时会导致...

2018-11-08 11:01:01 168 1

转载 Spring 通过工厂方法(Factory Method)来配置bean

Spring 通过工厂方法(Factory Method)来配置bean在Spring的世界中, 我们通常会利用bean config file 或者 annotation注解方式来配置bean.在第一种利用bean config file(spring xml)方式中, 还包括如下三小类1、反射模式2、工厂方法模式(本文重点)3、Factory Bean模式其中反射模式最...

2018-10-17 14:38:16 117

转载 Java-Reflection反射-获取包括父类在内的所有字段

前言今天Android移动端要加个新功能,所以回归Android程序员的身份.开发的过程中,发现了之前的代码写的有很多问题,真的应该把时间抽出来重构一下了.其中有反射的一个坑,工具类某方法反射获取传入Model的属性值.但是当我把公共属性抽出来做基类的时候,发现获取不到基类的属性值了.原因是使用了getDeclaredFields();分析方法 功能 getFields(...

2018-09-10 11:18:15 1238

转载 RabbitMQ的几种典型使用场景

RabbitMQ主页:https://www.rabbitmq.com/AMQPAMQP协议是一个高级抽象层消息通信协议,RabbitMQ是AMQP协议的实现。它主要包括以下组件:1.Server(broker): 接受客户端连接,实现AMQP消息队列和路由功能的进程。2.Virtual Host:其实是一个虚拟概念,类似于权限控制组,一个Virtual Host里面可以有若干...

2018-09-10 11:18:01 247

转载 RabbitMQ: RPC 远程过程调用

RabbitMQ RPC 就是通过消息队列(Message Queue)来实现rpc的功能,就是,客户端向服务端发送定义好的Queue消息,其中携带的消息就应该是服务端将要调用的方法的参数 ,并使用Propertis告诉服务端将结果返回到指定的Queue。1.RabbitMQ RPC的特点Message Queue把所有的请求消息存储起来,然后处理,和客户端解耦。 Message Que...

2018-09-10 11:17:47 581

转载 redis cluster集群(redis3.0)

前言redis 是我们目前大规模使用的缓存中间件,由于它强大高效而又便捷的功能,得到了广泛的使用。现在的2.x的稳定版本是2.8.19,也是我们项目中普遍用到的版本。redis在年初发布了3.0.0,官方支持了redis cluster,也就是集群。至此结束了redis 没有官方集群的时代,之前我们用redis cluster用的最多的应该是twitter 发布的Twemproxy(htt...

2018-08-30 16:42:48 277

转载 cron表达式详解

 Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式:  (1) Seconds Minutes Hours DayofMonth Month DayofWeek Year  (2)Seconds Minutes Hours DayofMonth Month DayofWeek    一、结构  corn从左到...

2018-08-01 15:28:19 189

转载 redis分布式锁

背景在很多互联网产品应用中,有些场景需要加锁处理,比如:秒杀,全局递增ID,楼层生成等等。大部分的解决方案是基于DB实现的,Redis为单进程单线程模式,采用队列模式将并发访问变成串行访问,且多客户端对Redis的连接并不存在竞争关系。其次Redis提供一些命令SETNX,GETSET,可以方便实现分布式锁机制。Redis命令介绍使用Redis实现分布式锁,有两个重要函数需要介绍

2017-12-04 13:50:48 242

原创 使用HashedWheelTimer实现定时提醒服务

项目需求:每天的微信公开课需要在开课前推送到已订阅用户。使用elastic-job定时任务每天执行,采用netty工具包中的一个定时器工具HashedWheelTimer来实现: //模拟课程开课时间,计算时间差 long off1 = DateUtils.diff(new Date(), DateUtils.offsetMinute(new Date(), 1), DateUnit

2017-11-07 13:22:21 3980

转载 Zookeeper功能及工作原理

Zookeeper的功能以及工作原理1.ZooKeeper是什么?ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户2.ZooKeeper提供了什么?1)

2017-06-08 17:42:51 361

转载 maven 自动发布更新本地和远程仓库

$ mvn install -Dmaven.test.skip=truemvn clean package deploy -Dmaven.test.skip=true 本地仓库 的更新mvn  clean package install 远程 仓库 的更新mvn clean package deploy工程文件pom.xml的设置

2017-05-11 14:34:17 2472

原创 nginx几种转发机制

nginx可以根据客户端IP进行负载均衡,在upstream里设置ip_hash,就可以针对同一个C类地址段中的客户端选择同一个后端服务器,除非那个后端服务器宕了才会换一个。nginx的upstream目前支持的5种方式的分配轮询(默认)每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。upstream backserver

2017-04-28 14:12:44 3273

转载 Maven 两个项目间的war依赖

本文包括两个Maven管理的示例应用——Warsaw和Global。Warsaw是进行了全面配置的Web应用,带有两个简单的Web页面。Global依赖于Warsaw项目,引入了一个服务和几个新的Web页面,还修改了Warsaw组件的拷贝。这两个Web应用都打包为WAR文件,并进行了配置,能在Jetty或其它Servlet容器中运行。在命令行运行mvn jetty:run-war命令即可轻松启

2017-04-26 15:15:53 3314

原创 策略模式+工厂模式优化if...else if...else if结构

首先,按照if...else if语句来实现打折商品的例子,代码如下:public class Example { public Double calRecharge(Double charge ,RechargeTypeEnum type ){ if(type.equals(RechargeTypeEnum.E_BANK)){ ...

2017-04-19 11:33:39 17388 13

转载 一致性哈希

一致性哈希算法使用场景现在我们假设有100台redis data服务器,一份数据101进来的时候,以散列公式hash(i)&100,计算所存放的服务器,假设hash(i) = i,那么数据被散列到标号为1的服务器,然后这个时候服务器新增了一台,然后散列公式为hash(i)%101,这个时候请求访问数据101的时候,被分配至0号服务器,但是其实这个时候数据是在1号服务器的。所

2017-04-18 15:33:26 232

原创 浅读elastic-job总结所用设计模式

最近在研读开源分布式定时任务框架elastic-job源码,基本清晰该框架逻辑架构和设计理念,现总结研读过程中使用到的设计模式。1. 单例模式              设计模式中最基本也是最常用的一种,在es-job中使用如下:@NoArgsConstructor(access = AccessLevel.PRIVATE)public final class JobRegistry {

2017-02-15 10:11:17 2640

转载 Java虚拟机详解----常用JVM配置参数

原文地址:http://www.cnblogs.com/smyhvae/p/4736162.html【声明】 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/文章来源:http://www.cnblogs.com/smyhvae/p/4736162.html联系方式:smyhvae@163

2017-02-04 13:31:19 252

转载 谈谈互联网后端基础设施

对于一个互联网企业,后端服务是必不可少的一个组成部分。抛开业务应用来说,往下的基础服务设施做到哪些才能够保证业务的稳定可靠、易维护、高可用呢?纵观整个互联网技术体系再结合公司的目前状况,个人认为必不可少或者非常关键的后端基础技术/设施如下图所示:这里的后端基础设施主要指的是应用在线上稳定运行需要依赖的关键组件/服务等。开发或者搭建好以上的后端基础设施,一般情况下是能够支撑很长一段时

2016-12-29 18:09:34 964

转载 SpringAOP拦截Controller,Service实现日志管理(自定义注解的方式)

首先我们为什么需要做日志管理,在现实的上线中我们经常会遇到系统出现异常或者问题。这个时候就马上打开CRT或者SSH连上服务器拿日子来分析。受网络的各种限制。于是我们就想为什么不能直接在管理后台查看报错的信息呢。于是日志管理就出现了。         其次个人觉得做日志管理最好的是Aop,有的人也喜欢用拦截器。都可以,在此我重点介绍我的实现方式。         Aop有的人说拦截不

2016-12-27 18:04:44 240

转载 利用Druid实现应用和SQL监控

一、关于DruidDruid是一个JDBC组件,它包括三部分: DruidDriver 代理Driver,能够提供基于Filter-Chain模式的插件体系。 DruidDataSource 高效可管理的数据库连接池。 SQLParser Druid可以做什么? 1) 可以监控数据库访问性能,Druid内置提供了一个功能强大的St

2016-12-27 16:48:13 342

转载 索引原理

摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。文章主要内容分为三个部分

2016-12-27 09:54:55 244

转载 maven- 多模块和继承

通常来说,在Maven的多模块工程中,都存在一个pom类型的工程作为根模块,该工程只包含一个pom.xml文件,在该文件中以模块(module)的形式声明它所包含的子模块,即多模块工程。在子模块的pom.xml文件中,又以parent的形式声明其所属的父模块,即继承。然而,这两种声明并不必同时存在,我们将在下文中讲到这其中的区别。  (一)创建Maven多模块工程

2016-11-18 10:14:19 339

原创 Spring中WEB.xml配置总结

1. Spring中的web.xml中的配置如下:Xml代码contextConfigLocationclasspath*:**/applicationContext-*.xml"**/"表示的是任意目录;"**/applicationContext-*.xml"表示任意目录下的以"applicationContext-"开头的XML文件。你自己可以根据需要修改

2016-11-07 09:52:45 224

转载 redis高可用 - 主从复制

自学了一下redis的复制实现。在2.8版本之前和之后,复制方式有所不同。2.8之前的复制方式对于初次复制数据没有问题,对于断连接重新复制比较耗性能,因为都是全量复制。2.8之后对断线重连做了优化,采用差量复制。旧版复制功能的实现redis复制功能有同步和命令传播两种。同步操作将从服务器的数据库状态更新至主服务器当前的数据库状态;命令传播用于在主服务器数据库状态改变

2016-10-17 10:33:08 335 2

转载 架构之路导图

转自:http://blog.seezoon.com/?p=159

2016-09-09 13:13:42 308

原创 使用wait和notify实现间隔打印

使用多线程实现间隔打印,显示:22 33 22 33 22 33 22 33 public class ProduceConsume { private AtomicInteger flag = new AtomicInteger(0); public static void main(String[] args) { ProduceC

2016-09-02 18:07:10 825

原创 java 异步处理

public class AsynCallNewCachedThreadPool { private Logger logger = Logger.getLogger(AsynCallNewCachedThreadPool.class); public AsynCallNewCachedThreadPool() { } public static void addTask2Thre

2016-06-12 09:18:17 799

原创 java异常处理注意事项

1、避免过大的try块,不要把不会出现异常的代码放到try块里面,尽量保持一个try块对应一个或多个异常。2、细化异常的类型,不要不管什么类型的异常都写成Excetpion。3、catch块尽量保持一个块捕获一类异常,不要忽略捕获的异常,捕获到后要么处理,要么转译,要么重新抛出新类型的异常。4、不要把自己能处理的异常抛给别人。5、不要用try...catch参与控制程序流程,异常控

2016-05-12 14:14:07 339

原创 mongodb在java中的分页查询

项目里需要从mongo中分页获取数据,mark一下以后还会用到。public List GetTeacherNext(long maxcid, int psize) {psize = psize psize = psize > 100 ? 100 : psize;try {Sort sortById = new Sort(Direction.DESC, "_id");Que

2016-01-20 13:45:22 450

原创 redis在java中的客户端连接

单例模式下创建连接池,包括断线重连等机制。public class RedisClient {private static JedisPool pool = null; private RedisClient(){initial();}private static RedisClient client = new RedisClient();public sta

2016-01-18 18:05:57 658

原创 elasticsearch中文汉字的精确查找

最近做的项目有一个功能是要精确查找某个关键字,和另一个搜索功能公用一套ES搜索服务,但是遇到一个问题就是中文的精确查找,用es的termquery()去查只能查出英文和数字,查了很多资料终于搞定了。在这做一个记录和大牛们讨论:    首先要装一下IK分词插件,这个对于中文搜索很重要,当然中文分词插件还有其他许多,es默认对中文是按字来分的。    其次是建索引的时候指定每列的属性,如下:

2016-01-16 09:21:02 10458

原创 elasticsearch的IK分词插件安装

网上查了很多安装攻略都没有成功,最后终于大功告成。1. 下载ik插件:https://github.com/medcl/elasticsearch-analysis-ik2. 解压zip文件,进去文件夹,maven打包:mvn clean package,会生成一个target文件夹。3. 将target文件夹下的releases下面的zip压缩文件复制到es安装目录的

2016-01-15 14:31:29 484

基于axis的Webservice开发流程

基于axis的Webservice开发流程

2014-03-01

空空如也

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

TA关注的人

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