- 博客(688)
- 资源 (7)
- 问答 (2)
- 收藏
- 关注

原创 maven项目搭建dubbo的消费者和生产者
生产者: pom.xml需要依赖的:properties> spring.version>3.2.4.RELEASEspring.version>properties>dependencies> dependency> groupId>com.alibabagroupId> artifactId>dubboartifac
2017-08-04 22:24:52
2979

转载 linux下给mysql设置密码
一:下载并且上传安装包到linux系统上1:下载地址:http://dev.mysql.com/downloads/mysql/ 2:通过LeapFtp工具,将windows上的mysql安装包拷贝到linux系统上 二:安装mysql数据库安装依赖软件,在第二张iso盘上面有安装软件包:1.首先要将第二张盘添加到虚拟
2017-07-26 09:09:07
2489

转载 linux下安装mysql数据库
由于本人要在CentOS上部署一个Java项目,这个项目里面要对数据库进行操作,所以第一件事情就是安装数据库啦!现在本人将来带领你们一步一步实现MySQL数据库的安装。首先,在CentOS下,我们可以直接通过yum命令来安装数据库。在安装数据库之前,我们应该先查看自己的CentOS上是否已经安装了MySQL数据库,如果安装了就先卸载掉。(1)查看自己是否安装了MySQL数据库
2017-07-26 09:05:05
7824
1

转载 spring中多数据源配置
项目中我们经常会遇到多数据源的问题,尤其是数据同步或定时任务等项目更是如此。多数据源让人最头痛的,不是配置多个数据源,而是如何能灵活动态的切换数据源。例如在一个spring和hibernate的框架的项目中,我们在spring配置中往往是配置一个dataSource来连接数据库,然后绑定给sessionFactory,在dao层代码中再指定sessionFactory来进行数据库操作。
2017-05-31 06:24:14
551

转载 Minor GC和FUllGC的区别
在Plumbr的工作过程中遇到GC间隙功能探测问题使我不得不关注相关文章,书籍,简报。自始至终,我不止一次迷惑于 Minor, Major and Full GC 的用法。为了搞清楚这些疑惑我写这篇博客。这篇博客期望读者了解JVM 底层 GC机制。jvm heap区 分为 Eden,Survivor,Tenured/Old区。分代概念以及不同的GC算法超出了了此次讨论的范围。M
2017-05-30 15:42:00
8002
1

转载 Redis集群搭建与简单使用
Redis集群搭建与简单使用介绍安装环境与版本用两台虚拟机模拟6个节点,一台机器3个节点,创建出3 master、3 salve 环境。redis 采用 redis-3.2.4 版本。两台虚拟机都是 CentOS ,一台 CentOS6.5 (IP:192.168.31.245),一台 CentOS7(IP:192.168.31.210) 。安装过程1. 下载并解压
2017-05-21 15:22:25
385

转载 springmvc+dubbo的maven项目
一、软件环境 1、zookeeper 下载地址:https://zookeeper.apache.org/releases.html 下载最新版的zookeeper,我这里使用的版本是 zookeeper-3.4.8(当前最新版3.5.1) 2、springMVC (maven方式引入) 3、dubbo (maven方式引入)二、项目搭建 这里我搭建了三个项目,分别为d
2017-05-20 10:34:49
711

转载 java异步读取网络
简单的来说,Java NIO 提供了一种异步非阻塞模型,使得网络请求都可以并发执行。服务器端采用这种模型,响应速度将大大提高,Apache,Nginx 都是这种模型。本文介绍的是客户端如何采用这种模型来提高客户端访问网络的速度。1. 使用范例public static void main(String[] args) throws Exception { //初始化 N
2017-05-10 09:59:34
854

转载 全面理解java中NIO机制
本文简介: JDK 1.4 中引入的新输入输出 (NIO) 库在标准 Java 代码中提供了高速的、面向块的 I/O。本实用教程从高级概念到底层的编程细节,非常详细地介绍了 NIO 库。您将学到诸如缓冲区和通道这样的关键 I/O 元素的知识,并考察更新后的库中的标准 I/O 是如何工作的。您还将了解只能通过 NIO 来完成的工作,如异步 I/O 和直接缓冲区。◆ 输入/输出:概念性描述
2017-05-10 09:25:40
701
1

原创 使用zookeeper对进程进行加锁
/** * 主要实现进程间的锁利用zookeeper的 * * @author yc * */public class MyLock {private CountDownLatch runFlag = new CountDownLatch(1);private ZooKeeper zk = null;private String path = "/zk-lo
2017-05-10 08:33:52
772

转载 maven构建一个springmvc项目
1、新建一个Maven Project 2、选择工作空间 3、搭建Web工程,我们选择maven-archetype-webapp类型 4、填写项目参数,如图 5、以上步骤完成时的工程结构目录 6、可以查看或修改发布目录 7、确保勾选上Dynamic Web Module和Java 8、
2017-05-06 10:02:27
3158

转载 hadoop2.4.1集群搭建
hadoop2.0已经发布了稳定版本了,增加了很多特性,比如HDFS HA、YARN等。最新的hadoop-2.4.1又增加了YARN HA注意:apache提供的hadoop-2.4.1的安装包是在32位操作系统编译的,因为hadoop依赖一些C++的本地库,所以如果在64位的操作上安装hadoop-2.4.1就需要重新在64操作系统上重新编译(建议第一次安装用32位的系统,
2017-04-30 14:45:27
620

转载 Zookeeper搭建
1.上传zk安装包2.解压3.配置(先在一台节点上配置)3.1添加一个zoo.cfg配置文件$ZOOKEEPER/confmv zoo_sample.cfg zoo.cfg3.2修改配置文件(zoo.cfg)dataDir=/itcast/zookeeper-3.4.5/dataserver.1=itcast05:2888:3888ser
2017-04-28 19:41:40
314

转载 ssh免密码登入
大家可以配置成密论认证的方式首先生成密钥,用命令ssh-keygen –t rsa 运行后可以一直空格,生成密钥,id_rsa和id_rsa.pub文件 ,默认放在/root/.ssh/下,.ssh文件是隐藏的,要显示隐藏文件才看得到 在/home/admin下创建.ssh活页夹,把id_rsa.pub文件copy 到/home/admin/.ssh活页夹下,改变文件名
2017-04-26 15:08:24
405

转载 HBase的配置
1.上传hbase安装包2.解压3.配置hbase集群,要修改3个文件(首先zk集群已经安装好了)注意:要把hadoop的hdfs-site.xml和core-site.xml 放到hbase/conf下3.1修改hbase-env.shexport JAVA_HOME=/usr/java/jdk1.7.0_55//告诉hbase使用外部的zkexp
2017-04-25 19:14:18
454

转载 hive安装
Hive只在一个节点上安装即可1.上传tar包2.解压tar -zxvf hive-0.9.0.tar.gz -C /cloud/3.配置mysql metastore(切换到root用户)配置HIVE_HOME环境变量rpm -qa | grep mysqlrpm -e mysql-libs-5.1.66-2.el6_3.i686 --nodeps
2017-04-25 11:26:17
302
原创 SpringBoot高级用法
SpringBoot中高级用法生产项目中一般会有项目改进1、我们一般不会在controller中捕获异常进行处理,一般通过全局异常处理器进行拦截处理2、为了让响应的格式进行统一,一般会对响应结果进行统一包装。3、为了能够快速定位问题,一般会结合日志打印框架让每次http请求都能够打印一个唯一标识方便问题定位1、统一异常处理定义异常枚举public enum ResultCode { /** * 成功 */ SUCCESS(0, "suc
2021-05-05 13:55:40
573
原创 SpringBoot集成tk-mybatis
Springboot搭建集成tk-mybatis上一章中已经讲解如何快速构建一个springboot项目,这这章主要讲解如何引入tk-mybatis使用。maven引入 <!--引入tk-mybatis--><dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper-spring-boot-starter</artifactId> &
2021-05-05 13:41:27
546
原创 SpringBoot项目搭建
SpringBoot项目搭建本文主要讲解如何快速搭建一个springboot项目,文章最末尾有代码 github 地址Intellij创建项目1、使用intellij创建一个新项目2、选择springboot项目3、输入包名称和项目名称4、项目目录结构如下功能介绍数据库简单操作 使用log4j格式化日志打印核心maven引入<dependencies> <!--引入web相关包--> &l...
2021-05-05 13:29:03
636
1
原创 如何在springcloud中使用feign 和hystrix使用时设置方法上面超时时间
springcloud中在方法中设置超时时间maven依赖<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> <scope>provided</scope></dependency>主要包..
2020-05-11 22:33:41
1114
1
原创 一次k8s容器云上某个服务cpu使用异常问题定位
问题简介我们项目运行在k8s集群中,在运行期间出现存在一个服务的cpu使用比较异常相对其他服务的cpu使用要远远要高问题定位及分析通过容器外部执行top -Hp pid命令查看异常服务进程的线程使用情况上面为找到明显的性能消耗线程,但是却总有10左右的线程消耗cpu比较多,跟踪其中占用为11.8的系统调用情况如下上面执行大量重复的唤醒和阻塞操作...
2019-07-11 14:22:18
1288
原创 ReentranLock源码分析
在上一章我们知道AQS中存在大量模板方法,让其子类实现。ReentranLock中的成员变量Sync有两中NofairSync,FairSync为AQS的实现类并且是ReentranLock的嵌套类我们以ReentranLock中的非公平锁中的lock和unlock方法进行源码分析上面为ReentranLock中的加锁代码很简单其调用成员变量上面的lock也就非公平锁上的lock...
2019-06-03 14:11:02
401
原创 AQS源码分析讲解
首先来一幅AQS整体数据结构源码AQS中有很多重要的成员变量其中包括上面图中的Head,Tail。它们永远保存当前被阻塞住的线程按照顺序依次排列下去上面Node中的成员变量Thread就是存放阻塞的线程变量有了上面大概的信息我们开始进入源码分析,1.AQS是如何让线程阻塞的了?上面acquier方法中tryAcquire是一个抽象方法。AQS采用模板方法设计模...
2019-06-03 11:36:13
532
原创 netty中添加处理器讲解
netty中我们会添加一些处理器,如果对其添加流程及内部结构不清楚经常会出现各种问题,我先给出一幅处理器整体排版图addFist添加Handler是将Handler放在Head后面addLast添加Handler是将Handler放在Tail的前面消息接收时是从Head开始向Tail流动直到某个handler没有将事件传递下去,或者tail结束(事件未传递是对应handler未调用...
2019-05-31 10:57:04
1577
原创 netty如何判断数据包是否结束
上一篇中分析netty会缓存不完整的数据包,那如何判断数据包是否结束了?本章主要分析netty中常用判断tcp中数据包是否上传完毕。这里我还是用LengthFieldBasedFrameDecoder进行分析其解析数据可以分为两个部分,head表示头用来记录数据长度 body表示存放的数据部分我们以head存放body长度(不包括自身长度)对应LengthFieldBased...
2019-05-30 19:35:16
3990
原创 tcp中非阻塞编程为啥出现粘包问题及netty如何解决
在网络编程中我们调用send方法只是将数据存放到sendbuf中由底层tcp进行发送包,这里发送包底层会进行一些优化,尽可能一次发送多的数据,但是数据大小不能太大如果太大会拆分多次进行发送。所有在这个过程中就会出现一次发送包含大量数据包或者一次无法发送完整的数据包。这就是我们说的粘包问题。在阻塞编程中我们获取连接管道后不停去读取数据判断是否满足指定标记来结束一个包,而非阻塞编程中由于select模...
2019-05-30 16:35:35
516
原创 CMS垃圾回收分析及优化
总体垃圾回收器搭配使用如下我们项目中常见搭配是年轻代采用ParNew老年代 CMS+Serial Old其分代收集实现如下minor gc为ParNew垃圾收集器为多线程收集器major gc 为CMS垃圾收集器多线程最低停顿垃圾收集器full gc 为serial 垃圾收集器为单线程垃圾收集器Serial是jvm中fgc的默认行为jvm采用CMS合理配置//...
2019-05-30 14:33:55
2059
原创 springboot执行中事务失效问题排查
背景:在执行springboot事务时发现表中数据未能正常回滚掉猜想:1.springboot中事务未能成功开启,可能没有引入aop导致2.springboot中方法抛出的异常不能被事务框架正常捕获问题定位:代码如下@Servicepublic class TestServiceImpl implements TestService { @Autowi...
2019-05-30 10:45:58
6331
原创 springboot代码中如何减少锁等待时间
springboot中如何减少锁等待时间在并发编程中经常听到一句话是减少锁的访问,我们进行数据库操作是也可以利用上面思想优化自己代码。记得我曾经说过mysql中的加锁时机是访问是才加锁所有有如下优化点1. 如果service方法中不需要保证执行ACID可以不使用事务,让其执行完一条sql就释放锁2.如果service中需要ACID保证,可以将更新,删除语句放在最后面。比如service...
2019-05-09 08:49:13
1809
原创 mysql可重复读隔离级别加锁分析
问题myql可重复读隔离级别下可能会导致插入阻塞,问题复现如下表中有3列都是int类型其索引情况如下:id为主索引,c,d为普通索引现在开始制作问题:在这里我分别开启两个事务:第一个事务中执行一个update 语句更新一个不存在的数据,这里没有执行commit也就事务未结束,根据二阶段锁协议,锁的释放是在事务结束后。现在另一个窗口中执行insert操作,这里它...
2019-05-08 08:56:21
5243
1
原创 mysql测试环境问题定位
问题:mysql测试环境出现insert阻塞很长时间猜想:出现insert很长主要有两个方面1.插入被其他锁阻塞了(这里能导致阻塞的只有在可重复读隔离级别下的间隙锁导致的)2.mysql在某一段时间内进行刷脏页验证:因为锁阻塞需要业务人去优化自己的代码比如更新使用索引防止伪锁表,这里我采用将隔离级别修改为读提交,在读提交下面是没有间隙锁的,所有一般不好出现阻...
2019-05-07 09:21:06
409
转载 spring boot 中 aop是如何进行管理
spring-boot的aop是如何进行管理的从上面几章分析等着spring-aop的核心就是要加载AnnotationAwareAspectJAutoProxyCreator类AopAutoConfiguration我们看下它的内容:@Configuration//这里判断何时使用这个类@ConditionalOnClass({ EnableAspectJAutoProx...
2018-07-25 17:13:08
599
1
转载 spring aop 中的AnnotationAwareAspectJAutoProxyCreator 创建过程
spring aop 中的AnnotationAwareAspectJAutoProxyCreator 创建过程 我们在 EnableAspectJAutoProxy注解中看到如下语句@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Import(AspectJAutoProxyReg...
2018-07-24 21:42:10
965
2
转载 spring中aop源码分析(五)
spring中源码分析(五)我们接着JdkDynamicAopProxy下面的invoke方法下面 进行分析 // We need to create a method invocation... invocation = new ReflectiveMethodInvocation(proxy, target, method, args, targetClass, chai...
2018-07-17 21:13:57
351
转载 spring中aop源码分析(四)
spring中aop源码分析(四)我们直接看JdkDynamicAopProxy的invoke方法 由于JdkDynamicAopProxy实现了InvocationHandlerpublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable { MethodInvocation i...
2018-07-17 21:03:32
299
转载 spring中aop的源码解析(三)
spring中aop的源码解析(三)我们继续查看AbstractAspectJAutoProxyCreator中的wrapIfNecessary方法Object[] specificInterceptors = getAdvicesAndAdvisorsForBean(bean.getClass(), beanName, null);这里是获取通知protected Objec...
2018-07-17 15:17:36
398
转载 spring中aop源码解析(二)
Spring中aop源码解析(二)我们上一章讲到判断对象是否需要被代理if (isInfrastructureClass(bean.getClass()) || shouldSkip(bean.getClass(), beanName)) { this.advisedBeans.put(cacheKey, Boolean.FALSE); return bean;}上面有...
2018-07-17 14:33:27
690
转载 spring中aop源码理解(一)
Spring中aop源码理解(一)spring中aop涉及的类我们冲AnnotationAwareAspectJAutoProxyCreator我们看下它的继承结构由于它实现了BeanPostProcessor接口所有在获取bean时可以进行一定的处理,aop正是利用这个特性来做的,public Object postProcessAfterInitialization...
2018-07-17 13:43:36
240
转载 spring获取bean实例(七)
Spring中获取bean对象实例(七)今天进行下面重要分析,从上一章我们可以得知,getSingleton最终的获取对象还是调用createBean方法sharedInstance = getSingleton(beanName, () -> { try { return createBean(beanName, mbd, args); } catc...
2018-07-17 10:47:37
1449
转载 spring获取bean对象(六)
下面我们接着AbstractBeanFactory的doGetBean中方法,如果未从缓存中获取到实例对象就会进入到下面方法if (mbd.isSingleton()) { sharedInstance = getSingleton(beanName, () -> { try { return createBean(beanName, mbd, ar...
2018-07-16 21:27:45
341
字符串在虚拟机中执行问题
2016-08-02
关于自定义类加载器的问题
2016-03-02
TA创建的收藏夹 TA关注的收藏夹
TA关注的人