![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA心得
皇甫嗷嗷叫
励志架构师
展开
-
一个Spring Bean从诞生到逝去的九次人生转折!
关于Spring生命周期的学习,前面已经写过很多篇文章去不断的探究Spring对一个Bean的创建、管理过程,在整个SpringBean的生命周期中,BeanPostProcessor是不可绕过的一环,他几乎贯穿了整个Spring Bean的生命周期!几乎我们现在所熟知Bean的生命周期的功能,大部分都是由BeanPostProcessor完成的!比如,依赖注入、循环依赖问题、Aop等,全部都是由BeanPostProcessor的扩展实现的!BeanPostProcessor的学习是我们理解Spring原创 2020-10-01 13:04:34 · 294 阅读 · 0 评论 -
跳出源码地狱,Spring巧用三级缓存解决循环依赖-原理篇
一、循环依赖所产生的原因在探讨Spring三级缓存解决循环引用之前,我们需要了解一点就是Spring所谓的循环依赖到底是什么,是如何产生的,为什么会产生这种问题?这就是经典的一个循环引用的问题,一个类的实例化依赖另外一个类,如果我们不使用Spring管理这两个bean而是自己手动创建,这种循环引用的方式实现极其简单:为什么Spring解决循环依赖比较麻烦呢?因为Spring创建一个Bean是需要通过反射来构建的,构建过程中无法感知这个类具体是什么类型的,它只能够实例化一个填充一个实体!于是:创原创 2020-09-25 14:14:18 · 824 阅读 · 1 评论 -
Spring:没有人比我更懂Java对象的创建!
一、开篇一问一个Spring Bean是Java对象吗?那么一个对象是Spring Bean吗?带着这个问题我们一起来回顾Spring的生命周期流程,彻底了解一个类在Spring中究竟做了那些操作!我们先看一段代码!诚然,相信只要是使用过Spring的人都应该知道,从Spring容器中获取的对象,里面的EmailServiceImpl是被Spring自动注入了的!但是相同的点是,他们两个都是一个Java对象,都是加载在JVM里面的,那么至少我们现在可以回答的问题了:SpringBean一定是一原创 2020-09-24 08:44:46 · 497 阅读 · 0 评论 -
带你跳出源码地狱,从原理上理解MyBatis对Spring源码的扩展实现
注意今天的文章只会对原理进行分析,可能会涉及少部分代码,但是不会太多,具体的源码分析,请移步牛逼哄哄的Spring是怎么被MyBatis给征服了? ! 建议先阅读本文章,了解原理之后再去观看源码,效果会稍微好一点!今天我们大概从以下几点去讲解MyBatis对于Spring的一个扩展思路!一、FactoryBean是干什么?首先我们至少要知道一个事情,就是FactoryBean的一个大致结构:可以看到,整个 FactoryBean有三个方法:getObject(): 返回具体创建的真实对象!原创 2020-09-17 09:07:44 · 216 阅读 · 0 评论 -
记一次向Spring官方提交PR的失败经历
一、事情始末周末无聊在家,打开Spring源码,想再温习一遍之前学习过的流程,忽然看到一段代码,就是在执行BeanFactoryPostProcessor的逻辑中我发现了这样奇怪的一幕:于是我就把代码改成这个样子(草率了)于是乎,整个代码都简便多了,当时随手写了一个测试类,没报错就直接提交到Spring项目上了,然后申请合并了,当我怀着激动地心,颤抖的手,提交完成之后,一天我都十分亢奋,是不是的打开github,看看作者回复了我没有!二、终于,草率了!到了下午三四点左右的时间,作者回复我了(都原创 2020-09-12 08:37:26 · 275 阅读 · 0 评论 -
你知道Spring中BeanFactoryPostProcessors是如何执行的吗?
了解了BeanDefinition以及生命周期的大概概念之后,我们班可以试着看一下源码!我们上一章也说到,BeanFactoryPostProcessors的执行时机是:在扫描完成之后,实例化之前! 那么我们看一下Spring是如何去回调BeanFactoryPostProcessors的呢?org.springframework.context.support.AbstractApplicationContext#refreshorg.springframework.context.support.A原创 2020-09-11 08:36:18 · 623 阅读 · 1 评论 -
想要学会Spring源码,你必知必会的BeanDefinition原理!
一、BeanDefinition浅析1. 基本概念了解首先我提出一个问题:一个java对象和一个Spring Bean有什么区别?这是一个经典的面试题,什么是java Object?万物皆对象,在Java内部所有的类,经过创建之后都可以称之为一个对象,SpringBean也是一个java Object, 但是Spring Bean是脱离于JAVA Object的,为什么这么说呢?因为一个class要想变成对象只需要new一下,就能够称之为一个对象,但是一个类要想变成一个Spring Bean就需要经过原创 2020-09-10 09:23:15 · 299 阅读 · 0 评论 -
急速入门Docker使用大法
一、基础命令1. 帮助命令docker --version # 显示docker的版本信息docker info # 显示docker的系统信息docker 命令 --help # 显示帮助命令2. 镜像命令2.1 搜索镜像# 搜索镜像docker search mysql# 条件过滤搜索结果docker search --filter=STARS=5000列表解释NAME: 镜像名称DESCRIPTION: 镜像介绍STARS: 镜像的starsOFFI原创 2020-09-07 09:41:02 · 133 阅读 · 0 评论 -
牛逼哄哄的Spring是怎么被MyBatis给征服了?
其实前几篇文章已经写了好多有关于Spring源码的文章,事实上,很多同学虽然一直在跟着阅读、学习这些Spring的源码教程,但是一直都很迷茫,这些Spring的源码学习,似乎只是为了面试吹逼用,我大概问过一些同学,很多同学看了很长时间的Spring但是依旧不知道如何将这些学到的知识运用到实际的案例上!其实这个问题很好解决,如果你在开发中很少能够遇见需要Spring扩展时,不妨把目光放到一些依托于Spring的项目,看看它们是如何运用Spring的扩展点的。对于Spring的学习,我认为最终真正学会的一定是原创 2020-08-24 18:05:44 · 186 阅读 · 1 评论 -
Spring中眼见为虚的 @Configuration 配置类
一、前言在这里我不得不感慨Spring的代码的完善与优秀,从之前看源码迷迷糊糊到现在基本了解Spring的部分源码后,愈来愈发现Spring开发者的思虑之周全!之前说过学习源码的目的在哪?正如我特别喜欢的一句话,有道无术,术尚可求也!有术无道,止于术!,对于Spring的了解仅仅局限于使用远远不够,Spring作为一个国内绝大多数java开发者使用的一个项目管理框架,他是一个生态,什么是生态?比如现在的SpringBoot、SpringCloud,他们是什么?是Spring生态中的一个组成部分!他们利用原创 2020-08-13 14:33:13 · 370 阅读 · 0 评论 -
生气!面试官你过来,我给你手写一个SpringAop!
说到`Spring Aop`无论是面试还是开发都是绕不过的一个坎 ,相信不少同学工作中也是经常性的使用AOP去搞一些日志啦权限啦或者校验之类的开发,但是实际上不少同学开发过程中基本都是去网上找一篇帖子,施展CV大法,然后改改就用到生产了!原创 2020-08-09 08:49:07 · 296 阅读 · 0 评论 -
【Spring】万字长文,祝你完全掌握Spring循环依赖的源码分析!
一、概述长文警告,事实上我不愿意写太长的文章,一面是太冗余,一方面读者容易疲倦,但是只要是涉及到源码级别的,就肯定篇幅不短,因为太短肯定没意义也解释不清楚,但是相信,耐心看完这个文章一定会有所收获!最近有很多读者面试的时候都被问到了有关于Spring三级缓存的解决方案,很多读者在面试受挫之后,试着自己去读源码,试着去跟断点又发现一层套一层,一会自己就懵了,我这几天总结了一下,为了能够让读者更加的去了解Spring解决循环依赖问题,我决定从以下四个方面去讲述:什么是循环依赖如果不依赖于Sprin原创 2020-07-30 12:40:56 · 195 阅读 · 0 评论 -
听说你一读Spring源码就懵逼?我帮你把架子搭好了,你填就行!
最近断更了一段时间,因为公司比较忙,周五的时候在公司做了一个关于Netty的分享,后续会总结一下分享出来!最近一段时间发现经常看到很多人,对Spring源码比较感兴趣,日常开发中,无论你做什么什么项目,大部分都离不开Spring生态的那一套东西,所以很多人对Spring底层源码实现很感兴趣,但是有些从来没有接触过源码的开发者,在看Spring源码的过程中确实及其难受的,为什么,大部分人看源码基本都是debug一点一点去看的,最后发现,越追越离谱,越追越深,到最后都追到JDK源码了,也没有明白是什么意思!原创 2020-07-25 15:30:43 · 346 阅读 · 0 评论 -
MyBatis为了解决二级缓存脏读问题,究竟做了那些骚操作!
MyBatis为了解决二级缓存脏读问题,究竟做了那些骚操作!一、存在即合理MyBatis为了提高我们的查询性能,专门设计了一级缓存和二级缓存,众所周知,我们在开发环境中,使用的缓存的时候,也会遇到各种各样的挑战,比如缓存穿透,缓存雪崩,数据脏读等等各种各样的问题,MyBatis也同样,在设计二级缓存的时候,MyBatis也同样遇见了各种挑战;我这几天在观看MyBatis对于二级缓存的设计的时候,突然发现,我们查询出来一个数据后并没有直接放置到二级缓存中,而是放到了另外一个存储空间,只有提交了之后才会被原创 2020-07-10 15:23:51 · 1153 阅读 · 0 评论 -
你凭什么说Spring会导致MyBatis的一级缓存失效!
一、概述最近老是听说Spring和MyBtis集成后,一级缓存就不可用了!我就纳闷了,为什么一级缓存不可用呢?这难道是Spring的BUG?这引起了我极大的兴趣,因为Spring作为一个极其优秀的项目管理框架,它居然也有BUG,我要一探究竟,满足我的好奇心!二、真的没走缓存为了帮助我查看源码,我把MyBatis和Spring集成后写了如下代码:AnnotationConfigApplicationContext annotationConfigApplicationContext;@Before原创 2020-07-07 14:31:40 · 252 阅读 · 0 评论 -
MyBatis与设计模式的激情碰撞
最近一直在研究MyBatis的源码,MyBatis作为国内最为经常使用的持久层框架,其内部代码的设计也是极其优秀的!我们学习源码的目的是什么呢?一方面是对该框架有一个很深入的认识,以便在开发过程中有能力对框架进行深度的定制化开发或者在解决BUG的时候更加得心应手!一方面是学习代码里面优秀的设计,看看这些成名多年的框架,他们的开发者是如何设计出一个高扩展性、低耦合性的代码呢?然后在自己的开发场景中应用。今天我们就来讨论一下,在MyBatis内部,为了提高代码的可读性究竟做了哪些设计呢?当然,如果你对原创 2020-07-05 14:46:23 · 199 阅读 · 0 评论 -
天啦噜,项目上使用InputStream,我被坑了一把!
本文目的是为了记录,项目开发时的一个小BUG,如果你是大佬,或者对InputStream十分熟悉,那么可以忽略!今天开发项目的时候遇见了一个小BUG,该功能如下:读取指定FTP服务器里面的文件数据,并计算md5签名推送到备份FTP服务器以上功能涉及到公司项目功能实现,不能详细多说,大致功能就是这样,读取一个MD5同步到另外一个服务器,期间我遇到什么问题了呢?先看一个模拟的代码实现!package com.inputstreams;import org.apache.commons.code原创 2020-06-30 21:13:48 · 628 阅读 · 2 评论 -
RedLock究竟是不是Redis分布式锁分布式环境下的银弹?
一、概述在这个技术不断更新迭代的情况下,分布式这个概念,在企业中的权重越来越高!谈及分布式时,不可避免一定会提到分布式锁,现阶段分布式锁的实现方式主流的有三种实现方式,Zookeeper、DB、Redis,我们本篇文章以Redis为例!从我们的角度来看,这三个属性是有效使用分布式锁所需的最低保证。安全特性:互斥。在任何给定时刻,只有一个客户端可以持有锁。活力属性:无死锁。最终,即使锁定资源的客户端崩溃或分区,也始终可以获得锁。活动性:容错能力。只要大多数Redis节点都处于运行状态,客户端就可以原创 2020-06-28 22:58:46 · 491 阅读 · 0 评论 -
求求你,别再开发的时候一用redis分布式锁,就急着去复制粘贴了!lua脚本的实现思路
随着业务越来越负责,现在的业务,能够支持分布式和高并发是基本的要求,涉及到高并发和分布式就一定会涉及到分布式锁机制,分布式锁就是为了保证分布式环境下,只有一个机器能够拿到锁对象,其余的都需等待该锁释放,再进行申请锁资源!分布式锁必须遵循以下原则:同一时刻只能有一个机器(进程或线程)能够拿到锁对象!拥有过期机制,防止机器宕机没有释放锁的情况下造成死锁!加锁和解锁的必须是一个机器(线程、进程)!集群环境下,存活机器依旧何以做完整的加解锁操作!一、思路图二、思路图实现1.正确实现该实现由原创 2020-06-25 18:38:13 · 371 阅读 · 0 评论 -
当一个http请求来临时,SpringMVC究竟偷偷帮你做了什么?SpringMVC视图处理器与视图篇章【终章】
本篇文章依旧是基于上篇文章的基础做的描述,请先观看【当一个http请求来临时,SpringMVC究竟偷偷帮你做了什么?请求映射器篇】【当一个http请求来临时,SpringMVC究竟偷偷帮你做了什么?SpringMVC处理器适配器与处理器篇章】先上图:上一篇文章,我将 Handler处理器适配器,处理器做了一个很详细流程分析,那么本篇文章会围绕视图解析器和视图两个流程来分析源码!1. 视图推断源码分析不知道大家对这一段代码是否熟悉!public void invokeAndHan原创 2020-06-21 10:00:18 · 231 阅读 · 0 评论 -
当一个http请求来临时,SpringMVC究竟偷偷帮你做了什么?SpringMVC处理器适配器与处理器篇章
SpringMVC之请求处理适配器与处理器源码分析上次的SpringMVC源码分析因为篇幅原因只将请求映射器的源码流程分析完毕,不知道大家对上次的流程分析有什么意见呢?空闲的时候是不是自己追了一遍源码嘞?先上图:上一篇文章,我将 Handler处理器映射器做了一个很详细流程分析,那么本篇文章会围绕处理器适配器、处理器两个流程来分析源码!1. 处理器适配器源码解析上篇文章其实后面也大概说了一下后面的大概逻辑,但是事实上,SpringMVC作为一个优秀的框架,他所考虑的是很全面的,其实在开发一个Co原创 2020-06-19 22:31:47 · 306 阅读 · 0 评论 -
当一个http请求来临时,SpringMVC究竟偷偷帮你做了什么?
一、简介Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把Model,View,Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。1. Springmvc的优点:可以支持各种视图技术,而不仅仅局限于JSP;与Spring框架集成(如IoC容器、AOP等);清晰的角色分配:前端控制器(dispatcherServlet) , 请求到处理器映射(hand原创 2020-06-18 10:33:38 · 347 阅读 · 0 评论 -
市面上数据库种类那么多,如何选择?
技术真的是日新月异,关系型数据库在数据库存储界称霸这么多年后,市面上各种数据库如雨后春笋蓬勃发展,似乎关系型数据库也地位不保,我前段时间和同事聊天,听到他们经常说的现在市面上的noSql数据库完全可以替代现有的关系型数据库,可是事实真的如此吗,我们一起就市面上现在比较流行的各类数据库,做一个对比: 真正业务开发中,绝对不是拍脑袋定下来使用那种数据库就使用那种数据库的,选择某种或者某几种数据库配合使用,一定是对改数据库有一个比较全面的认识。 关系型数据警告过这么多年的原创 2020-06-17 11:39:14 · 736 阅读 · 0 评论 -
设计原则之开闭原则
基本介绍:对扩展开放对修改关闭,用抽象构建框架 用实现扩展细节!所谓对扩展开放,对修改关闭,其实是设计模式里面所重点提倡的,后续所有涉及模式的介绍其实都是为了程序能够更好的扩展,提倡设计模式的本质就是为了减少增加一点功能而修改系统的主要逻辑!用抽象构建框架 用实现扩展细节! 尽量通过扩展类的操作来实现行为变化,而不是通过修改已有代码来实现修改错误的示范下面还是老规矩,我们先看一段错误的代码!需求1:我需要一个过滤特殊字符的功能package principle.opencloeds.erro.原创 2020-06-02 16:55:35 · 183 阅读 · 0 评论 -
设计原则之单一职责
1. 单一职责原则基本介绍:一个类只负责一项职责,完成一个单一的功能。错误的示范package principle.singleresponsibility.error;/** * 单一职责错误示范 * @author huangfu */public class SingleResponsibilityError { public void mobile (String vehicle){ System.out.println(vehicle + "在公路上跑原创 2020-06-01 13:15:29 · 227 阅读 · 0 评论 -
CentOS7安装单机环境的es和Kibana
1.单机环境下es配置[root@192 bin]# ./elasticsearchfuture versions of Elasticsearch will require Java 11; your Java version from [/usr/java/jdk1.8.0_251-amd64/jre] does not meet this requirement[2020-05-31T15:26:41,446][WARN ][o.e.b.ElasticsearchUncaughtExceptio原创 2020-05-31 17:10:07 · 399 阅读 · 0 评论 -
一篇文章带你彻底搞懂NIO阻塞
什么是NIOJava NIO (New IO)是 Java 的另一个 IO API (来自 java1.4) ,意味着可以替代标准的 Java IO API和 Java Networking API。 提供了一种与标准 IO API 不同的 IO 工作方式。注意:Java的NIO只是说IO API,阻塞非阻塞才是IO的模型。也有人称NIO为No-Blocking IO,非阻塞IO,但是这...原创 2020-01-14 14:12:18 · 1443 阅读 · 0 评论 -
企业是如何从头开发一个商业项目的?
对于还没有参与过项目的同学,大都与企业项目开发的流程都感到特别的好奇!项目对于程序员来说像是自己的孩子,自己看着一步一步成熟,完善!最后到独立的运行!然后大多数程序员都如含泪老母亲一样,看这自己的项目嫁出去,嫁到甲方!从此天各一方!咳咳,跑题了!就我经验而谈,上一家公司是一个传统型企业公司!主要开发的是一些国企的信息管理系统,其实包括你们在内的很多小伙伴,毕业后会有一大部分进入到类似的项目中参...原创 2020-01-08 13:50:13 · 413 阅读 · 0 评论 -
整天BIO通信机制不好,你真的了解他的性能瓶颈吗?
一、BIO通讯模型采用BIO通信模型的服务端,通常都会使用一个Acceptor线程负责监听客户端的连接!接收到客户端的连接请求之后,为每一个客户端创建一个新的线程进行链路处理,处理完成之后,通过输出流返回应答给客户端!线程销毁!典型的一请求一应答的通信模型!弊端该模型的最大问题就是缺乏弹性伸缩的能力,当客户端并发量增加后,服务端的线程数和客户端并发访问数呈1:1的正比关系!当线程数膨胀...原创 2020-01-08 09:59:27 · 426 阅读 · 0 评论 -
synchronized底层实现真的那么难?
在多线程并发编程中synchronized一直是元老级角色,很多人都会称呼它为重量级锁。但是,随着Java SE 1.6对synchronized进行了各种优化之后,有些情况下它就并不那么重了。本文详细介绍java1.6中为了减少 synchronized 获取锁和释放锁锁带来的严重的性能消耗而引入的偏向锁和轻量级锁,以及锁膨胀的过程!一、synchronized实现锁的表现形式修饰实例方法...原创 2020-01-06 19:59:01 · 293 阅读 · 0 评论 -
JAVA 初学者的编码规范一:命名风格与代码格式
其实对于初学者,最忌讳的一个事就是在学习过程中,认为自己是新手,代码可以随便写!但是事实上并不是如此!因为一个人的编码规范是从开始学的时候就必须要练习和养成习惯的!从编码过程中的每一件小事做起!从我们初学的时候的变量、方法名、类名等做起!不要看不起这一段代码!其实大牛与小白写代码,除了思维上的差距外,其编码风格也是重中之重!可能两个人写相同的一段逻辑!小白写的,别人可能要花上10分钟去读取,而大牛...原创 2020-01-04 11:10:54 · 719 阅读 · 0 评论 -
JAVA自定义注解
一.名词解释Java 注解用于为 Java 代码提供元数据。作为元数据,注解不直接影响你的代码执行,但也有一些类型的注解实际上可以用于这一目的。Java 注解是从 Java5 开始添加到 Java 的。但是这种解释方式,貌似不太容易理解!用名词解释名词,这就是扯淡!所以不妨用下面的一种方式,来更好的解释这个名词的意思!可以把JAVA注解理解为标签 什么是标签?就是一个标记!比如 ...原创 2020-01-03 18:34:28 · 361 阅读 · 0 评论 -
面试官问我Volatile的原理?那吹呗!谁怕谁!
在多线程并发编程中,synchronized和volatile都扮演着及其重要的角色;可以这么说,Volatile是轻量级的synchronized!volatile他在多处理器开发中保证了共享变量的可见性!也能保证在多线程并发情况中指令重排序的情况!什么是可见性?电脑处理器为了提高运行速度,所以不会直接与内存进行交互!而是先会将数据读取到内部缓存!之后在进行操作,操作完之后满足一定条件之后,...原创 2020-01-03 08:36:28 · 551 阅读 · 0 评论 -
为什么建议在校准备学习java的同学也要学会一点前端知识
之前我分享过一篇文章!大概分析了一下,现在大学里面学习java的一些同学大概的一个学习的路线!使其简单的能够对日后JAVA的学习路线有一个简单的认识!同时也给部分同学坚定了信心!说实话能够帮助到同学们,我心里极其高兴!同时,不管是公众号,还是博客上,都有同学问我同样的问题:我只学习java后端知识,不学习前端可以吗?其实啊!在国内有一个现状!就是新手java也包括一些大牛,对技术极为感兴趣,但是...原创 2020-01-02 10:05:44 · 1070 阅读 · 2 评论 -
那些迷茫的大学生们,你想过未来的路吗?关于java或许这篇文章能帮助你!
看这标题,我突然词穷了!我不知道我该去说什么!说你们这群大学生,别玩了?还是,你们这却大学生好好努力吧!我似乎不配说,因为我的大学,也是浑浑噩噩,就那样过去了!后知后觉的我,直到毕业半年,才知道,这段回忆是我最不想回忆的时光!也是我心窝里,最不忍诋毁的时光; 说实话,这封信我早就应该写!但是最近太忙了;我写这封信的原因不是我有多好心!也不是我突然去关心大学生们...原创 2019-12-30 21:49:11 · 6392 阅读 · 52 评论 -
ClasssLoader自定义类加载器
作用编译器先把java文件编译成class字节码文件ClassLoad会把字节码文件转换成jvm中的Class对象jvm再把class对象转成实例对象ClassLoad在java 中有着非常重要的作用,他主要工作是在Class装载的加载过程,他的主要作用是 从系统外部获取二进制数据流。它是java的核心组件,所有的class都是通过ClassLoad进行加载的,ClassLoad...原创 2019-12-30 11:18:47 · 539 阅读 · 0 评论 -
FastJosn转化JSON字符串有多余转移符的情况解决
FastJosn转化JSON字符串有多余转移符的情况解决首先我说明前提情况:是因为你转换了一个本来就是一个 json格式的字符串,所以他会加上转义,话不多说直接上解决方案public static void main(String[] args) { List<Map<String,Object>> list = new ArrayList<&...原创 2019-11-04 17:15:43 · 2112 阅读 · 0 评论 -
rabbitmq主题订阅
rabbitmq主题订阅一、topic 模式交换机上一篇文章讲述了关于直接连接交换机根据key找到对应队列的方式,实现特殊消息特殊队列消费的目的,但是事实上,生产环境下,对于消息的复杂性远不是这样就能够解决的!比如:你要监控有个用户的操作行为,用户的操作行为太多了 增删改查,如果一个一个的写难免会有遗漏,这个时候,我们可以用通配符 user.* 轻松解决!这就是mq的主题模式!这里的交换机...原创 2019-10-15 16:30:10 · 653 阅读 · 0 评论 -
rabbitmq发布订阅
rabbitmq发布订阅如果觉得还可以 记得关注一下公众号哦!一起交流学习!一、发布订阅模式还记得我们上一个文章是如何发布消息的吗?回顾一下以前是如何发送消息的:channel.basicPublish("", QUEUE_NAME, null, message.getBytes());对的,以前我们发送消息是直接由生产者将消息发送到队列,可是这种方式官方是不推荐的!Rabb...原创 2019-10-12 09:21:20 · 308 阅读 · 0 评论 -
算法学习之遗传算法-JAVA简单实例
遗传算法概念: 基于达尔文的进化论,物竞天择,适者生存;认为生物总是向着更加贴合于环境的方向进化;通过各种基因的遗传、杂交、变异、复制等手段,慢慢使整个种群更加贴合于自然环境;遗传算法也是模拟生物的遗传、杂交、变异、复制手段逐渐进化为最优解!名词概念解析:基因和染色体:染色体在数学建模上可以看作是可行解,例如 3x+4y+5z&lt;100,它的可行解为[1,2,3]、[1,3,2...原创 2019-02-12 09:14:33 · 840 阅读 · 0 评论