- 博客(27)
- 资源 (15)
- 问答 (1)
- 收藏
- 关注
原创 dubbo源码学习总结
前言总结 内容主要包括dubbo 框架的spi 实现,服务暴露实现,服务调用实现,以及个人感觉里面比较好的设计分享。涉及的代码部分较多。主要是自己的主观理解,如有纰漏 可以随时指正。RPCrpc 框架在使用时可以让使用者调用远程的接口的时候犹如调本地接口一样,然而一个远程过程调用一定是会使用网络和序列化的,因此简单一点看,dubbo或者说所有的rpc框架提供的核心的能力就是通过动态代理的方式把接口的网络操作和序列化操作代理掉,对于使用者是透明的。dubbo在这个核心能力之上,外加了一些过滤,负.
2021-11-18 14:22:21
1380
原创 Java 打一个可以运行的富jar
pom文件<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>8</so
2020-09-30 11:40:13
247
原创 rpc学习笔记
rpcrpc 框架dubbo在使用时可以让使用者调用远程的接口的时候犹如调的本地接口,然而一个远程过程调用一定是会使用网络和序列化的,因此抽象一点,dubbo提供的核心的能力就是通过动态代理的方式把接口的网络操作和序列化操作代理掉,对于使用者变成是透明的。dubbo在这个核心能力之上,外加了一些过滤,轮询,服务注册发现等功能,同时对网络的操作和序列化的操作通过spi机制加入了很多动态的扩展,使...
2019-10-30 18:43:03
176
1
原创 dubbo源码学习笔记之spi
前言要学习dubbo源码 必须要搞清楚dubbo的spi。它比Java的spi更加灵活。dubbo扩展点相关的注解@SPI@SPI主要标示在接口上,标示这个接口是个扩展点,具体使用那个实现是通过配置去找到具体是实现类的。这个注解可以接受一个value,这个值和文件(spi获取具体现实类全路径名的文件)里面的key 对应。dubbo的这个文件格式是key:实现类。例如filte...
2019-10-22 20:34:30
296
原创 mybatis 处理带条件的插入如果存在则更新语句
<insert id="insertBatch" parameterType="xxx" > <foreach collection="list" item="item" index="index" separator=";" > insert into table (`key`) values ...
2019-09-26 15:31:05
3684
原创 一些概念
什么是分布式事务?分布式事务就是指事务的参与者、支持事务的服务器、资源服务器(数据库)以及事务管理器分别位于不同的分布式系统的不同节点之上,在分库分表后,事务有可能会跨库,必定需要分布式事务的支持。XA是什么?XA是一个协议,用于资源管理器 既(数据库) 和 事务管理器(事务管理框架)的 协作。数据库厂商通过实现XA协议 来使应用可以通过事务管理器实现分布式事务。事务管理器通过XA协议...
2019-02-19 13:52:51
148
原创 java NIO模拟 Netty线程模型
两个类,NioAcceptor,处理连接 单线程。NioReactor处理读写,多线程。NioAcceptor 监听来自客户端的链接,来了链接后把通道传递给一个NioReactor(它的个数就是线程池的大小),NioReactor把通道注册到worker的 队列上,该任务不断轮训队列里面的通道的读事件 做出反应。解释放在代码中NioAcceptorpackage com.zwj...
2018-11-15 19:46:38
471
1
原创 java实现一个阻塞队列(生产者消费者模式)
首先实现一个简单的链表队列,头插元素,尾删元素。package com.zwj;import java.util.concurrent.atomic.AtomicInteger;public class MyQueue<T> { private volatile node head; private volatile node tail; pri...
2018-11-08 18:57:43
862
原创 死锁
死锁压测sharding-jdbc 改造一个原先用类似mycat的一个程序放到压测平台后,发现运行一会程序就假死了。于是在本地压测。同样运行一会就假死,然后debug。 发现在获取分布式id的时候在锁的地方进行不下去。然后怀疑是哪里导致了死锁,于是运行jstack -l 如下发现很多请求的线程都等待在了druid的takelast 方法。进去这个方法看,发现是 一个生产者消费者模式的...
2018-09-27 16:26:00
1515
原创 debug数据源之sqlSessionFactory
使用mybatis的时候会配置sqlSessionFactoryBean,将数据源传入。我对于mybatis的理解是当 处理持久层的请求时,ThreadLocal 内会持有一个数据源的jdbc 链接。这样 该线程的所有数据操作都是用一个链接来操作。完后关闭链接。debug的目的是看下到底是怎么做的。SqlSessionFactoryBean内有很多对象,debug下来发现最关键是configu...
2018-09-27 15:27:39
1253
原创 oracle 配合mybatis example分页
mybatis逆向生成的xml 内增加 分页 select from( (select rownum rn,uo.* from (select * from mytable order by ${example.orderByClause} ) uo where rownum <=#{limit}))
2017-10-09 16:11:06
1768
转载 git服务器搭建教程
1.安装依赖库和编译工具为了后续安装能正常进行,我们先来安装一些相关依赖库和编译工具:yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel2.安装编译工具:yum install gcc perl-ExtUtils-MakeMaker3.下载git,选一个目录,用来放下载下来的安装包,
2017-08-04 16:50:35
195
转载 nginx 配置https
1.将ssl包,里面包含 Apache, IIS, Nginx, Tomcat 文件夹,分别对应不同的部署方式。我们这里选择 Nginx 的部署方式将 Nginx 文件夹下的两个文件直接拖动到此编辑器左侧的文件浏览器的 /etc/nginx 目录下,浏览器会自动将这两个文件上传到此服务器2.编辑 /etc/nginx/conf.d/ssl.conf 文件 ,配置示例
2017-08-04 10:48:20
258
转载 nginx学习记录
搭建Http静态服务器环境1.在 CentOS 上,可直接使用 yum 来安装 Nginxyum install nginx -y2.外网用户访问服务器的 Web 服务由 Nginx 提供,Nginx 需要配置静态资源的路径信息才能通过 url 正确访问到服务器上的静态资源。打开 Nginx 的默认配置文件 /etc/nginx/nginx.co
2017-08-04 10:32:31
211
原创 开发中遇到的坑
1. mybatis 中 进行时间的比较 格式化时间 VISIT_DATE <=TO_DATE(#{endTime,jdbcType=VARCHAR}, 'YYYY-mm-dd HH24:MI:SS')2.导入外部的js 3. innerhtml 可以动态的确定 内容innerhtml 内可以写 html语句4.mybatis 中插入空的值要给定jdbcType
2017-05-24 20:40:07
260
原创 SpringMvc-Dispatcher
虽然知道springMvc处理请求的大致过程,但是具体实现在脑子里比较模糊,因此简单看下源码,只求看懂工作原理,并做下笔记。几个关键类或接口的说明:HandlerMapping:这是一个接口,该接口表示实现了这个接口的类是完成url和处理bean映射逻辑的。当SpringMvc启动就会根据选择的实现类去把Controller类型的bean和url绑定如果我们不在配置文件配置
2016-09-14 18:09:09
1922
原创 背包问题java 代码
背包问题,http://www.cnblogs.com/sdjl/articles/1274312.html 这篇文章介绍很详细,参照它的思路写了0/1背包问题代码。package niukewang_jianzhiOffer;/** * Created by zhangwenjie05 on 16/9/10. */public class PakageQuestion { //
2016-09-10 23:12:31
2744
转载 jdk动态代理(转载)
原文地址:http://rejoy.iteye.com/blog/1627405之前虽然会用JDK的动态代理,但是有些问题却一直没有搞明白。比如说:InvocationHandler的invoke方法是由谁来调用的,代理对象是怎么生成的,直到前几个星期才把这些问题全部搞明白了。 废话不多说了,先来看一下JDK的动态是怎么用的。 Java代码 p
2016-08-17 15:17:51
244
原创 mysq学习总结
mysql逻辑架构理解了数据库逻辑架构图就能很好的理解数据库和存储引擎的关系,客户端通过tcp发送请求到服务层,服务层提供缓存数据,解析sql,sql优化的功能,优化器生成执行计划后,向存储引擎请求数据。由于数据的多样性和业务使用数据场景的多样性造成数据存储的多样性,因此这种接口似的架构,方便针对不同的数据用不同的存储算法,因此发展到现在,就有很多种存储引擎InnoDB引擎简...
2016-08-06 22:22:14
401
转载 Java代码规范
sonar介绍Sonar 是一个用于代码质量管理的开放平台。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具。总而言之,它可以告知你代码中的不规范和可能存在的bugBUG级别 Blocker:阻断块。最严重的错误类型; Critical:严重的错误类型; Major:重要的错误类型; M
2016-07-28 10:47:59
588
转载 blocker critical Java (转)
1.Blocker规则(共14个)编号规则描述不规范代码示例建议修改备注1.equals()不能用在AtomicInteger、AtomicLong等原子类型的比较中AtomicInteger aInt1 = new AtomicInteger(0);AtomicInteger aInt2 = new A
2016-07-28 09:58:00
1459
转载 规范
sonar介绍Sonar 是一个用于代码质量管理的开放平台。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具。总而言之,它可以告知你代码中的不规范和可能存在的bugBUG级别 Blocker:阻断块。最严重的错误类型; Critical:严重的错误类型; Major:重要的错误类型; M
2016-07-28 09:53:52
2996
转载 spring编程式事务管理
spring 的事务管理是 Spring 框架中一个比较重要的知识点,该知识点本身并不复杂,只是由于其比较灵活,导致初学者很难把握。本教程从基础知识开始,详细分析了 Spring 事务管理的使用方法,为读者理清思路。先决条件本教程假定您已经掌握了 Java 基础知识,并对 Spring 有一定了解。您还需要具备基本的事务管理的知识,比如:事务的定义,隔离级别的概念,等等。本文将直接
2016-07-13 16:38:59
354
转载 spring注解事务详解
先让我们看代码吧!以下代码为在“Spring3事务管理——基于tx/aop命名空间的配置”基础上修改。首先修改applicationContext.xml如下:?[html] view plain copy bean id="dataSource" class="org.a
2016-07-13 15:57:52
346
转载 spring声明式事务管理的几种方式
文章系转载 原地址:http://blog.youkuaiyun.com/jeamking/article/details/43982435前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spring的事务配置虽说也配置过,但是一直没有一个清楚的认识。通过这次的学习发觉Spring的事务配置只要把思路理清,还是比较好掌握的。 总结如下: Spring配置文件中
2016-07-13 15:37:27
1114
原创 java学习知识记录之对象
1.1抽象所有的编程语言都是提供抽象机制的,汇编语言是对底层机器的轻微抽象,接着许多面向过程的语言是对汇编语言的抽象,这些语言要求在解决问题时基于计算机的结构,不害死以问题的结构来考虑。面向对象编程允许根据问题来表述问题,而不是根据运行解决方案的计算机来描述问题。每个对象都有状态和操作,用户可以根据状态执行这些行为。Alan Kay总结了第一个面向对象语言Smalltalk的5个基本特性。
2015-05-23 10:39:48
364
redis-win64 点exe即可运行
2017-09-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人