自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

路漫漫,水迢迢

八十一难拦路七十二变制敌

转载 数据库连接池性能比对(hikari druid c3p0 dbcp jdbc)

背景 对现有的数据库连接池做调研对比,综合性能,可靠性,稳定性,扩展性等因素选出推荐出最优的数据库连接池。 NOTE: 本文所有测试均是MySQL库 测试结论 1:性能方面hikariCP>druid>tomcat-jdbc>dbcp>c3p0 。hikari...

2019-07-11 00:30:10 572 0

原创 SpringBoot学习笔记四之【自动配置原理与举例】

版本2.1.1 springboot只有一个application的启动,我们就从这个启动开始分析,首先我们跟进注解@SpringBootApplication如下: /** Class, interface (including annotation type), or enum decl...

2019-01-26 23:42:14 1091 0

原创 SpringBoot学习笔记三之【多Profile文件的Maven发布使用】

在springboot工程中配置文件编写的时候可以使用application-{profile}.properties/yml,默认使用application.properties/yml,例如: 每个环境配置如下: #application-dev.properties server....

2019-01-24 23:42:53 1045 1

原创 SpringBoot学习笔记二之【yml配置举例与语法介绍】

    Resource目录结构说明: static:保存所有的静态资源; js css images; templates:保存所有的模板页面;(Spring Boot默认jar包使用嵌入式的Tomcat,默认不支持JSP页面);可以使用模板引擎(freemarker、thymele...

2019-01-06 21:53:30 1923 3

原创 SpringBoot学习笔记一之【Idea下创建springboot示例、启动原理分析与两种部署启动方式】

1、使用背景 首先说下我们为什么使用springboot,原因有以下几点 1、快速创建独立运行的spring项目以及与主流框架继承 2、使用嵌入式的Servlet容器,无需打成war包 3、starters自动依赖于版本控制 4、大量的自动配置,简化开发,也可修改默认值 5、无需配置x...

2019-01-06 00:44:32 1242 0

原创 RocketMQ学习笔记四之【DefaultMQPullConsumer使用与流程简单分析】

我们首先看下DefaultMQPullConsumer使用例子: package com.swk.springboot.rocketmq; import java.util.HashMap; import java.util.List; import java.util.Map; impor...

2019-01-05 21:59:55 1744 6

原创 RocketMQ学习笔记三之【DefaultMQPushConsumer流量控制】

上一节我们已经把DefaultMQPushConsumer的大体流程分析了一下,从这节开始我们分析一部分消息处理的细节问题。 继续在DefaultMQPushConsumerImpl的pullMessage方法中有个ProcessQueue,待会我们来分析这个队列的作用。 public vo...

2018-12-24 23:02:45 1989 1

原创 RocketMQ学习笔记二之【DefaultMQPushConsumer使用与流程原理分析】

版本:        <dependency>        <groupId>org.apache.rocketmq</groupId>        <artifact...

2018-12-23 00:29:44 4762 0

原创 RocketMq学习笔记之一【常用操作命令与简单配置】

【为什么使用RocketMq】 1、应用解耦 2、流量削峰 3、消息分发 4、保证最终一致性 5、方便动态扩容 【RocketMq的角色】 producer consumer Broker NameServer broker配置文件: #nameServer 地址,分号分...

2018-12-18 23:23:57 994 0

原创 多线程复习笔记之四【多线程中的异常】

在一个线程组中如果其中一个线程执行报错并不影响其他线程的继续执行,例如: package com.fyw.thread.lock.exception; public class MyThread extends Thread { private String num; public ...

2018-12-16 23:54:17 862 1

原创 多线程复习笔记之三【多线程中的Lock使用】

Lock 1、getHoldCount() 查询当前线程保持此锁锁定的个数,也就是调用lock方法的次数 2、int getQueueLength 返回正等待此锁定的线程估计数,例如有5个线程,1个线程首先执行await,那么调用getQueueLength返回4 3、int getWa...

2018-12-16 23:00:59 975 0

原创 多线程复习笔记之二【线程间的通信】

Object.wait:释放锁,当时代码不会往下继续执行,需要等待notify通知,wait(1000)超过1秒自动唤醒 Object.notify:不释放锁,需要等到同步代码块执行完毕,如果没有wait线程,notify命令将被忽略。 condition 如果有多个线程处于等待状态,我想唤...

2018-12-15 17:53:51 200 0

原创 多线程复习笔记之一【关键属性与常用关键字概述】

1、并发和并行的区别? 并发可以发生在一个或多个CPU,同时处理多个任务,多个任务之间可以进行切换执行;并行只能发生在多核CPU,一核对应一个任务同时运行 2、线程和进程之间的区别? a) 一个程序至少有一个进程,一个进程至少有个线程 b) 进程在执行过程中拥有独立的内存单元,线程之间的内...

2018-12-15 17:47:40 223 0

转载 多线程设计模式:Master-Worker模式

Master-Worker是常用的并行计算模式。它的核心思想是系统由两类进程协作工作:Master进程和Worker进程。Master负责接收和分配任务,Worker负责处理子任务。当各个Worker子进程处理完成后,会将结果返回给Master,由Master作归纳总结。其好处就是能将一个大任务分...

2018-11-21 22:31:19 413 0

原创 java定时器之Timer使用与原理分析

Timer和TimerTask Timer是jdk中提供的一个定时器工具,使用的时候会在主线程之外起一个单独的线程执行指定的计划任务,可以指定执行一次或者反复执行多次。 TimerTask是一个实现了Runnable接口的抽象类,代表一个可以被Timer执行的任务。 【使用举例】 【sch...

2018-11-07 16:10:15 2921 1

转载 synchronized的底层优化

Synchronized底层是通过对象内部的一个叫做监视器锁(monitor)来实现的。但是监视器锁本质又是依赖于底层的操作系统的Mutex Lock来实现的。而操作系统实现线程之间的切换这就需要从用户态转换到核心态,这个成本非常高,状态之间的转换需要相对比较长的时间,这就是为什么Synchron...

2018-11-06 23:25:27 907 0

转载 ReentrantLock原理

ReentrantLock主要利用CAS+AQS队列来实现。它支持公平锁和非公平锁,两者的实现类似。 CAS:Compare and Swap,比较并交换。CAS有3个操作数:内存值V、预期值A、要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。该操作是一个原...

2018-11-04 20:18:23 9252 9

原创 线程间的通信wait与notify

wait()方法 wait()方法使得当前线程必须要等待,等到另外一个线程调用notify()或者notifyAll()方法。 当前的线程必须拥有当前对象的monitor,也即lock,就是锁。 线程调用wait()方法,释放它对锁的拥有权,然后等待另外的线程来通知它(通知的方式是notif...

2018-10-31 22:48:09 768 0

转载 Java中的自旋锁

自旋锁(spinlock):是指当一个线程在获取锁的时候,如果锁已经被其它线程获取,那么该线程将循环等待,然后不断的判断锁是否能够被成功获取,直到获取到锁才会退出循环。  获取锁的线程一直处于活跃状态,但是并没有执行任何有效的任务,使用这种锁会造成busy-waiting。 Java如何实现自...

2018-10-25 22:20:41 5259 3

原创 10、销售月饼的最大利润

题目描述 月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼。现给定所有种类月饼的库存量、总售价、以及市场的最大需 求量,请你计算可以获得的最大收益是多少。 注意:销售时允许取出一部分库存。样例给出的情形是这样的:假如我们有3种月饼,其库存量分别为18、15、10万吨...

2018-09-06 22:53:07 258 0

原创 9、数字黑洞

题目描述 给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非递减排序,然后用第1个数字减第2个数字,将得到 一个新的数字。一直重复这样做,我们很快会停在有“数字黑洞”之称的6174,这个神奇的数字也叫Kaprekar常数。 例如,我们从6767开始,将得...

2018-08-28 22:16:06 450 0

原创 8、锤子剪刀布

题目描述 大家应该都会玩“锤子剪刀布”的游戏: 现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。 输入描述: 输入第1行给出正整数N(<=105),即双方交锋的次数。随后N行,每行给出一次交锋的信息,即甲、乙双方同时给出的的手势。...

2018-08-22 22:11:34 158 0

原创 7、A除以B

题目描述 本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立。 输入描述: 输入在1行中依次给出A和B,中间以1空格分隔。 输出描述: 在1行中依次输出Q和R,中间以1空格分隔。 输入例子: ...

2018-08-20 22:01:15 270 0

原创 6、部分A+B

题目描述 正整数A的“DA(为1位整数)部分”定义为由A中所有DA组成的新整数PA。例如:给定A = 3862767,DA = 6,则A的“6部分”PA是66,因为A中有2个6。 现给定A、DA、B、DB,请编写程序计算PA + PB。   输入描述: 输入在一行中依次给出A、D...

2018-08-19 18:02:33 157 0

原创 5、德才论

题目描述 宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之 小人。凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人。” 现给出一批考生的德才分数,请根据司马光的理论给出录取排名。 输入描述: 输...

2018-08-19 12:36:17 206 0

原创 4、福尔摩斯的约会

题目描述 大侦探福尔摩斯接到一张奇怪的字条:“我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm”。大侦探很 快就明白了,字条上奇怪的乱码实际上就是约会的时间“星期四 14:04”,因为前...

2018-08-18 17:10:45 253 0

原创 3、数素数

题目描述 令Pi表示第i个素数。现任给两个正整数M <= N <= 10000,请输出PM到PN的所有素数。 输入描述: 输入在一行中给出M和N,其间以空格分隔。 输出描述: 输出从PM到PN的所有素数,每10个数字占1行,其间以空格分隔,但行末不得...

2018-08-18 17:07:38 316 0

原创 2、数字分类

题目描述 给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字: A1 = 能被5整除的数字中所有偶数的和; A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4…; A3 = 被5除后余2的数字的个数; A4 = 被5除后余3的数字的平均数,精确到...

2018-08-18 17:05:09 216 0

原创 1、A+B和C

题目描述 给定区间[-2的31次方, 2的31次方]内的3个整数A、B和C,请判断A+B是否大于C。 输入描述: 输入第1行给出正整数T(<=10),是测试用例的个数。随后给出T组测试用例,每组占一行,顺序给出A、B和C。整数间以空格分隔。 输出描述: 对每...

2018-08-18 16:59:41 199 0

原创 volatile的原理和使用场景

上下文切换 CPU为每个线程分配时间片(几十ms),CPU不断切换线程执行,切换的时候会记录状态,保证能够从原来的状态继续执行。当然上下文切换是有开销的,当线程执行时间非常短时我们用并发可能会耗时更久。使用【Lmbench3】和【vmstat】可以测量上下文切换的时间和次数。 为了降低开销我们...

2018-07-11 22:08:42 1724 0

原创 高并发下一些常用的限流和防刷方法

限流与防刷 互联网项目与传统项目不同的互联网项目是暴露在互联网中,面向的是全体网民,这时候可能出现以下两种访问形式需要我们采取一些必要措施对我们的服务进行保护。 1、大量正常用户高频访问导致服务器宕机 2、恶意用户高频访问导致服务器宕机 3、网页爬虫 对于这些情况我们需要对用户的访问进行...

2018-04-23 21:49:15 6760 0

原创 Nginx.conf配置说明

#使用的用户和组 user www www; #指定工作衍生进程数(一般等于CPU的总核数或总核数两倍) worker_processes 1; #错误日志的存放目录,日志级别有dubug,info,notice,warn,error,crit error_log logs/error.lo...

2017-10-26 11:44:40 646 0

原创 Centos6.5安装Nginx

Nginx是一款高性能反向代理软件,现在应用极其广泛,软件负载均衡一般有Nginx和LVS两种方式,其中Nginx更为流行,因为它安装配置简单易于维护,还能缓存一些静态资源。 首先安装依赖库 1、安装g++yum install gcc gcc-c++提示 Another app is cu...

2017-10-17 17:19:09 665 0

原创 Netty学习笔记(一)

IO分为同步阻塞BIO、同步非阻塞NIO、异步非阻塞AIO1、BIO 在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要对每个请求建立一堆线程等待4请求,而客户端发送请...

2017-09-16 15:53:47 598 0

原创 Centos7下如何进行RocketMQ双Master搭建

使用背景RocketMQ是一款分布式、队列模型的消息中间件,具有以下特点 1、能够保证严格的消息顺序 2、提供丰富的消息拉取模式 3、高效的订阅者水平扩展能力 4、实时的消息订阅机制 5、亿级消息堆积能力 为什么使用RocketMQ 1、强调集群无单点,可扩展,任意一点高可用、水平可...

2017-08-11 14:42:18 2340 1

原创 Java自定义注解实现过程

步骤 1、创建自定义注解类,并添加校验规则 2、解析自定义注解类并实现校验方法 3、创建测试类并声明自定义注解 4、编写Junit测试类测试结果自定义注解类package com.swk.common.annotation;import java.lang.annotation.Eleme...

2017-07-09 18:17:28 4491 0

原创 window下搭建maven的nexus私服

1、本地(windows)搭建nexus私服 先去官网现在nexus安装包https://www.sonatype.com/download-oss-sonatype选择oos 2.x的bundle.zip,bundel意思捆绑,意思这是多个操作系统的版本集合进入目录 \nexus-2.14....

2017-07-05 23:34:48 566 0

原创 NIO学习笔记——选择器(selectors)

选择器(Selector) 选择器类管理着一个被注册的通道集合的信息和它们的就绪状态。通道是和选择器一起被注册的,并且使用选择器来更新通道的就绪状态。当这么做的时候,可以选择将被激发的线程挂起,直到有就绪的的通道。 可选择通道(SelectableChannel) 这个抽象类提供了实现通道的...

2017-06-26 22:26:23 954 0

原创 NIO学习笔记——通道(channel)详解

通道可以形象地比喻为银行出纳窗口使用的气动导管。您的薪水支票就是您要传送的信息,载体(Carrier)就好比一个缓冲区。您先填充缓冲区(将您的支票放到载体上),接着将缓冲“写”到通道中(将载体丢进导管中),然后信息负载就被传递到通道另一侧的 I/O 服务(银行出纳员)。该过程的回应是:出纳员填充缓...

2017-06-25 00:50:16 2298 1

原创 NIO学习笔记——Buffer的创建与复制

Buffer的创建新的缓冲区是由分配或包装操作创建的。分配操作创建一个缓冲区对象并分配一个私有的空间来储存容量大小的数据元素。包装操作创建一个缓冲区对象但是不分配任何空间来储存数据元素。它使用您所提供的数组作为存储空间来储存缓冲区中的数据元素,例如CharBuffer charBuffer = C...

2017-06-21 21:07:21 796 0

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