- 博客(29)
- 资源 (1)
- 收藏
- 关注
原创 spring怎么解决循环依赖?
我们知道spring在创建bean的整个周期过程当中,会出现循环依赖问题 我们先拿出一个demo我们创造出TestService和UserService之间有循环依赖TestService:package com.test.autowired.service;import org.springframework.beans.factory.annotation.Autowire...
2019-10-10 14:48:57 245
原创 深入理解Spring源码(二)之obtainFreshBeanFactory()方法
这边我们将分析obtainFreshBeanFactory() BeanFactory的创建以及相关的准备工作! //这一步主要作用是将配置文件定义解析成beanDefine 注册到beanFactory中 //但是这里的bean并没有初始化出来 只是提取配置信息 定义相关的属性 //将这些信息保存到beanDefine...
2019-09-20 14:10:52 1573 3
原创 深入理解Spring源码(一)之prepareRefresh()方法
开篇我们已经开门见山 引入了sping容器初始化整个过程将经历12个历程 下面我们来介绍漫漫长征路的第一个方法prepareRefresh(); //准备工作 初始化spring状态 使spring处于运行状态我们进入方法体protected void prepareRefresh() { // Switch to active //纪录启动时间 this....
2019-09-20 14:09:04 3091
原创 深入理解Spring源码(开启篇)
由于平时项目中都会用到spring,但是一般都是已经配好了,我们直接使用即可,这段时间有点时间,就研究了下spring的源码,打算在近期详细的归纳一下spring容器是怎么运行管理bean的整个周期。BeanFactory和ApplicationContext,其中ApplicationContext是BeanFactory的子接口。他们都可代表Spring容器,Spring容器...
2019-09-20 13:26:12 406 1
原创 ProtoBuff之GRPC(流式)
有了前面的基础 我们已经构建了服务端和客户端连接的工具类 也已经熟悉了通过maven去处理对应的proto文件如果有不是很清楚的可以看看前面的基础内容 或者有不足之处欢迎指正!--------------------------------------------------------------------------------------------------------...
2019-09-17 17:14:52 956
原创 ProtoBuff之GRPC(工具类)
gRPC 一开始由 google 开发,是一款语言中立、平台中立、开源的远程过程调用(RPC)系统。在 gRPC 里客户端应用可以像调用本地对象一样直接调用另一台不同的机器上服务端应用的方法,使得您能够更容易地创建分布式应用和服务。与许多 RPC 系统类似,gRPC 也是基于以下理念:定义一个服务,指定其能够被远程调用的方法(包含参数和返回类型)。在服务端实现这个接口,并运行一个 gRPC 服...
2019-09-16 20:19:43 1210
原创 netty之WebSocket
WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信--允许服务器主动发送信息给客户端.今天我们来看一些netty的一种长连接的通信方式-WebSocket通信首先我们的服务器代码为:package netty.Demo04WebSocket;import io.netty.bootstrap.ServerBootstr...
2019-09-12 17:32:37 281
原创 netty之hello world
学习netty我们也开始从hello world开始 这个demo很简单 这里就直接上代码了package netty.Demo01;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.ChannelFuture;import io.netty.channel.nio.NioEventLoopGroup...
2019-09-09 14:22:01 181
原创 ProtoBuff的maven配置
Protobuf在游戏开发中是目前来比较好的数据格式 今天这里配置一下maven来管理protobuff生成对应的java文件项目目录结构:下面主要是maven的配置<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" ...
2019-09-09 11:18:06 1382
原创 简单工厂和工厂方法
简单工厂和工厂方法应该是我们在开发中应用的比较多的设计模式之一了,今天我们聊聊这两个工厂,对比一下这两个工厂各自的优缺点简单工厂模式角色组成:工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑,根据逻辑不同,产生具体的工厂产品抽象产品角色:它一般是具体产品继承的父类或者实现的接口。由接口或者抽象类来实现。结构图如下:我们用简单工厂实现四则运算代码如下:具有某一类共有...
2019-09-07 22:12:40 352
原创 装饰模式
刚开始接触这个设计模式 感觉有点难懂,个人的学习办法是先拿着前辈的代码就行断点调试 然后再回头想想设计的初衷,这样可能效果要更好 安利给刚学这个的童靴。1. 装饰者模式 动态的给一个对象(需要装饰的对象)添加一些额外的职责,就增加功能而言,装饰模式比生成子类更为灵活 。、 砸门看看对应的结构图1.Component是定义对象职责的接...
2019-09-06 14:32:54 148
原创 道具系列1
因为作者是从事游戏开发相关的 在这里安利一篇关于道具开相关的设计,不足之处敬请谅解当然每个游戏都会有不同的设计逻辑 但是总体的设计思想还都是大同小异 这里 先提供一个简易的道具系统 (没有格子,没有叠加) 后面再慢慢提供复杂的设计设计思路 :首先我们启动服务器就会去注册对应的道具 每个道具都会具备某种或者多种用途 那么一定会有一个物品行为(使用)的基类 基类包括判断是否可以...
2019-09-05 15:24:20 359
原创 Java8 Stream API了解下?
Stream(流)是一个来自数据源的元素队列,它可以支持聚合操作。数据源:流的数据来源,构造Stream对象的数据源,比如通过一个List来构造Stream对象,这个List就是数据源; 聚合操作:对Stream对象进行处理后使得Stream对象返回指定规则数据的操作称之为聚合操作,比如filter、map、limit、sorted等都是聚合操作。Stream对象的创建Stream对象...
2019-09-05 15:07:53 179 1
原创 策略模式
这段时间又开始着手看下设计模式了 之前在看netty的时候 用到了观察者模式 (Future) 然后觉得设计模式还是比较模糊不知道什么场景用什么模式 在后面将以前的项目和看的源码中用到的设计模式 在这些总结中慢慢体现出来。比如之前做的道具系统.活动等(这里指的是游戏里面的 后面一次会有相应的总结)........在实践中,我们发现几乎用它来封装分析过程中在不同时间不同业务的需求...
2019-09-05 14:53:14 135 1
原创 浅入mybatis(2)(手写简单的mybatis)
浅入mybatis(1)中 我们已经完整的配置了mybatis过程。可以实现通过简单的xml文件就实现了数据库的增删改查,那么神奇之处在哪里呢?这一章我们简单的实现下mybatis的实现原理,不足之处 敬请谅解首先我个人手写的一个流程图如下 (我们可以先敲代码 再反过来看这个图)我写的demo流程如下:一:建立User实体类二:按照流程图所示 创建userMapp...
2018-10-27 17:50:16 166
原创 浅入mybatis(1)(初识篇 简单配置mybatis)
MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。概念性的就不多啰嗦 下面直奔主题入门篇:首先我们需要准备m...
2018-10-26 15:13:53 147
原创 Spring IOC理解以及FactoryBean,BeanFactory(Spring总结1)
一:首先我引入Spring Ioc总体结构其中BeanFactory作为最顶层的一个接口类,它定义了IOC容器的基本功能规范。BeanFactory 有三个子类:ListableBeanFactory、HierarchicalBeanFactory 和AutowireCapableBeanFactory。但是从上图中我们可以发现最终的默认实现类是 DefaultListable...
2018-10-24 17:17:39 2554
原创 RabbitMQ RPC for Java【入门教程 6】
本教程中,我们将学习使用工作队列让多个消费者端来执行耗时的任务。比如我们需要通过远程服务器帮我们计算某个结果。这种模式通常被称之为远程方法调用或RPC.我们通过RabbitMQ搭建一个RPC系统,一个客户端和一个RPC服务器,客户端有一个斐波那契数列方面的问题需要解决(Fibonacci numbers),RPC服务器负责技术收到这个消息,然后计算结果,并且返回这个斐...
2018-10-23 16:30:09 155
原创 RabbitMQ topic for Java【入门教程 5】
匹配交换器通过匹配交换器,我们可以配置更灵活的消息系统,你可以在匹配交换器模式下发送这样的路由关键字:“a.b.c”、“c.d”、“quick.orange.rabbit”不过一定要记住,路由关键字【routingKey】不能超过255个字节(bytes)匹配交换器的匹配符*(星号)表示一个单词#(井号)表示零个或者多个单词示例说明:这一章的例子中,我们使用三个段式的路由关...
2018-10-23 16:00:29 189
原创 RabbitMQ routingKey for Java【入门教程 4】
routingKey :消息路由绑定关系在之前的例子中也使用了类似的方式:channel.queueBind(queueName, EXCHANGE_NAME, "");绑定是交换器和队列之间的一种关系,用户微博,微信的例子可以简单的理解为关注,就是队列(某屌丝)对交换器(女神)非常感兴趣,关注了她,以后女神发的每条微博,屌丝都能看到。...
2018-10-23 15:41:07 1191
原创 RabbitMQ Publish/Subscribe for Java【入门教程 3】
首先通过上面两个入门教程我们引入本文:Publish/Subscribe:在上一章中,我们学习创建了一个消息队列,她的每个任务消息只发送给一个队列,然后队列的信息由消费者各自消费。这一章,我们会将同一个任务消息发送给多个队列。这种模式就是“发布/订阅”。为了将消息发送到把那个队列上 我们讲迎来一个新的概念 交换机 。交换机:RabbitMQ中消息传递模型的核心思想是:生产者不直接发...
2018-10-23 14:56:06 144
原创 RabbitMQ workQueues for Java【入门教程 2】
入门教程1 我们学到了 P——>队列——>C 这种单一的模式。一个生产者对应一个消费者。那么在实际中可能存在一个生产者对应多个消费者,如在车间里面的生产线,一个流水线生产的部件可能供应对应多个工人小费。那么就引入了今天所讨论的知识。工作队列我们通过Hello World的例子,从生产者发送一条消息到RabbitMQ,然后消费者接收到这条消息并打印出来。这次我们模拟一个工厂...
2018-10-23 12:11:18 204 1
原创 RabbitMQ helloworld for Java【入门教程 1】
RabbitMQ是消息代理。从本质上说,它接受来自生产者的信息,并将它们传递给消费者。在两者之间,它可以根据你给它的路由,缓冲规则进行传递消息。如果你的工作中需要用到RabbitMQ,那么我建议你先在电脑上安装好RabbitMQ服务器,然后打开eclipse,跟这我的教程一步步的学习RabbitMQ,这样你会对RabbitMQ有一个全面的认识,而且能打好一个很好的基础...
2018-10-23 11:11:11 142
原创 设计模式之动态代理
动态代理:其实就是java.lang.reflect.Proxy类动态的根据您指定的所有接口生成一个class byte,该class会继承Proxy类,并实现所有你指定的接口(您在参数中传入的接口数组);然后再利用您指定的classloader将 class byte加载进系统,最后生成这样一个类的对象,并初始化该对象的一些值,如invocationHandler,以即所有的接口对应的Metho...
2018-10-22 18:06:22 148
原创 设计模式之静态代理
个人理解:静态代理就是使用一个中间者帮助同一个接口的所有的实现类去实现某一个功能。代码如下:package wxtest.proxy;public interface Character { public void run(); public void eat();} 父接口class Person implements Charac...
2018-10-22 17:30:09 84
原创 基于xml文件手写springIoc创建对象
主要涉及知识点:xml解析,反射xml解析(4中解析方式)DOM解析:对于特别大的文档,解析和加载整个文档可能很慢且很耗资源,因此使用其他手段来处理这样的数据会更好,对性能和内存的要求比较高,尤其是遇到很大的 XML 文件的时候。由于它的遍历能力,DOM 解析器常用于 XML 文档需要频繁的改变的服务中。SAX 解析:采用了基于事件的模型,它在解析 XML 文档的时候可以触发一...
2018-10-17 21:10:24 185
原创 线程池的4中创建方式
//创建缓存线程池 /*ExecutorService executorService = Executors.newCachedThreadPool(); for (int i = 0; i <= 10; i++) { int temp = i; executorService.execute(new Runnable() { ...
2018-10-11 21:08:45 327
原创 java并发包concurrent之Atomic,CountDownLatch,CyclicBarrier,Semaphore
常用的并发包 Atomic常用的并发类CountDownLatch,CyclicBarrier,SemaphoreAtomic:分析下面代码常规的demopublic class Test002 { public static void main(String[] args) { automicThread[] ac = new automicThread...
2018-10-11 19:55:59 251
原创 线程总结之volitile(一)
概念:内存模型:Java Memory Model,简称JMM。JMM定义了Java 虚拟机(JVM)在计算机内存(RAM)中的工作方式。Java内存模型定义了多线程之间共享变量的可见性以及如何在需要的时候对共享变量进行同步。如上图所示:每个线层都有属于自己的内存,并且拥有主内存赋值过去的变量,线程对变量的的操作会直接刷新主内存中的数据 会立即更新到子线程中的对应的变量,如果没有立即更...
2018-10-10 23:24:19 251
课程资料.txt
2019-10-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人