自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(205)
  • 资源 (3)
  • 论坛 (1)
  • 收藏
  • 关注

原创 SpringCloud实战与原理分析--第二章:SpringCloud介绍

我准备向他提出一个他不可能拒绝的条件。——《教父》1、引言首先,我们来看看一般的微服务架构需要的功能或使用场景:(1)我们把整个系统根据业务拆分成几个子系统。(2)每个子系统可以部署多个应用,多个应用之间使用负载均衡。(3)需要一个服务注册中心,所有的服务都在注册中心注册,负载均衡也是通过在注册中心注册的服务来使用一定策略来实现。(4)所有的客户端都通过同一个网关地址访问后台的服务...

2018-12-17 19:40:51 1012

原创 SpringCloud实战与原理分析--第一章:微服务架构

伟大的人不是生下来就伟大的,而是在成长过程中显示其伟大的。 ——马里奥·普佐《教父》1、技术架构的演化1.1 单体架构1.1.1 简单单体模式简单单体模式是最简单的架构风格,所有的代码全都在一个项目中。优点(1)项目的开发人员都可以随时修改任意的一段代码,或者增加一些新的代码。开发人员在个人电脑上就可以进行开发、调试、测试整个系统的功能。(2)项目不需要额外的一些依赖条件...

2018-12-10 20:39:25 3565

原创 Android中的MVP架构分解和实现

1、概述传统的Android开发架构一般是MVC模式,Model:业务逻辑和实体模型View:对应于布局文件Controllor:对应于Activity单独从逻辑看起来非常好,与我们做Web开发时,开发模式类似,但在实际开发中,View对应于布局文件,实际上关于该布局文件中的数据绑定的操作,事件处理的代码都在Activity中,Activity既像View又像Controller(MVVP架

2017-02-07 17:23:31 2149 5

原创 Tensorflow实现卷积神经网络

1.概述定义: 卷积神经网络(Convolutional Neural Network,CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。它包括卷积层(alternating convolutional layer)和池层(pooling layer)。卷积层(convolutional layer): 对输入数据应用若干过滤器,一个

2016-12-03 16:47:49 1749

原创 Zookeeper 介绍

1、Zookeeper 的产生来源Apache ZooKeeper 是一个高可靠的分布式协调中间件。它是 Google Chubby 的一个开源 实现,那么它主要是解决什么问题的呢?那就得先了解 Google Chubby,Google Chubby 是谷歌的一个用来解决分布式一致性问题的组件,同时,也是粗粒度的分布式锁服务。1.1 分布式一致性问题什么是分布式一致性问题呢?简单来说,就是在一个分布式系统中,有多个节点,每个节点都会提出一个请求,但是在所有节点中只能确定一个请求被通过。而这个通

2020-08-19 22:28:10 100

原创 分布式系统基础

1、分布式架构的演进过程1.1 分布式架构的发展历史1946 年情人节(2.14) , 世界上第一台电子数字计算机诞生在美 国宾夕法尼亚大学大学,它的名字是:ENIAC; 这台计算机占地 170 平米、重达 30 吨,每秒可进行 5000 次加法运算。ENIAC 之后,电子计算机便进入了 IBM 主导的大型机时代,IBM 大 型机之父吉恩.阿姆达尔被认为是有史以来最伟大的计算机设计师 之一。1964 年 4 月 7 日,在阿姆达尔的带领下,历时三年,耗费 50 亿美元,第一台 IBM 大型机 SYS

2020-08-06 17:25:10 189

原创 SynchronousQueue 同步队列
原力计划

1、概述第一次接触SynchronousQueue,是在java提供的四种线程池中,缓存线程池的源码实现中看到(缓存线程池允许的创建线程数量为 Integer.MAX_VALUE,可能会创建大量的线程,从而导致 OOM,不建议使用):public static ExecutorService newCachedThreadPool() { return new ThreadPoolExecutor(0, Integer.MAX_VALUE,

2020-05-25 21:12:44 152

原创 BlockingQueue 阻塞队列 和 LinkedBlockingQueue 分析
原力计划

1、概述阻塞队列(BlockingQueue)被广泛使用在“生产者-消费者”问题中,其原因是 BlockingQueue 提供了可阻塞的插入和移除的方法。当队列容器已满,生产者线程会被阻塞,直到队列未满;当队列容器为空时,消费者线程会被阻塞,直至队列非空时为止。BlockingQueue 是一个接口,继承自 Queue ,所以其实现类也可以作为 Queue 的实现来使用,而 Queue 又继承自 Collection 接口。下面是 BlockingQueue 依赖关系图:下面是 BlockingQu

2020-05-25 21:09:38 94

原创 DDD—上下文映射图

一个项目的上下文映射图(Context Map)可以用两种方式表示,(1)比较容易的一种是画一个简单的框图来表示两个或多个限界上下文之间的映射关系。该框图表示了不同的限界上下文在解决方案空间中是如何通过集成相互关联的。(2)另一种更详细的方式通过限界上下文集成的源代码实现来表示。1、上下文映射图为什么重要在开始采用DDD时,首先应该为你当前的项目绘制一个上下文映射图,其中应该包含你项目中当...

2019-11-17 16:40:06 1158

原创 DDD案例说明

1、案例说明整个专栏的案例来源于一个虚构的公司,公司里有一个虚构的团队,他们真实的业务章程,并且有一个真实的软件系统需要部署开发部署,而他们所面临的DDD挑战和问题也是真实存在的。这个公司叫做SaaSOvation。正如名字所示,该公司旨在开发一系列SaaS产品,该产品作为一种服务被用户使用。公司计划先后开发两套产品。1、旗舰产品名为CollabOvation,这是一套企业协作(Collab...

2019-11-03 17:58:16 842

原创 领域、子域和限界上下文概述

1、概述1.1 领域广义领域:领域(Domain)即是一个组织所做的事情以及其中所包含的一切。每个组织都有它自己的业务范围和做事方式。这个业务范围以及在其中所进行的活动都有它自己的业务范围和做事方式。这个业务范围以及在其中所进行的活动便是领域。当你组织开发软件时,你所面对的便是这个组织的领域。领域既可以表示整合业务系统,也可以表示其中的某个核心域或者支撑域。在DDD中,一个领域被分成若干子域...

2019-11-03 17:54:50 902

原创 DDD入门

0、概述本文主要从宏观角度,介绍下领域驱动模型。领域驱动设计(DDD)作为一种软件开发方法,它可以帮助我们设计高质量的软件模型。DDD同时提供了战略上的和战术上的建模工具来帮助我们设计高质量的软件模型。DDD并不是关于技术的,而是关于讨论、聆听、理解、发现和业务价值的,而这些都是为了将知识集中起来。如果你了解公司的业务,那么你至少可以为DDD的通用语言(Ubiquitous Languag...

2019-10-14 08:37:29 402

转载 让程序员崩溃的瞬间

转自:https://zhuanlan.zhihu.com/p/470665211. 公司实习生找 Bug2.在调试时,将断点设置在错误的位置3.当我有一个很棒的调试想法时4.偶然间看到自己多年前写的代码5.当我第一次启动我的单元测试时6.数据库的 Delete 语句忘了使用限定词 w...

2019-09-30 13:50:00 403

原创 Java设计模式——模版方法模式

1、简介Define the skeleton of an algorithm in an operation,deferring some steps to subclasses.TemplateMethod lets subclasses redefine certain steps of an algorithm without changing the algorithm’s str...

2019-09-05 20:04:09 190

原创 java8—Optional优雅的处理 null

1、概述Optional 类是一个可以为null的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。Optional 是个容器:它可以保存类型T的值,或者仅仅保存null。Optional提供很多有用的方法,这样我们就不用显式进行空值检测。Optional 类的引入很好的解决空指针异常。2、举例说明2.1 ofNullablep...

2019-08-31 17:04:45 634

原创 mysql中的锁机制(行锁、表锁和全局锁)

文章目录1、概述2、行级锁2.1 共享锁和排他锁2.2 意向共享锁和意向排他锁2.3 间隙锁(Next-Key锁)2.4 举例2.5 死锁和死锁检测3、表级锁3.1 表锁3.2 元数据锁(meta data lock,MDL)4、全局锁5、面试题5.1 全局锁相关5.2 行锁相关1、概述相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制。比如,MyI...

2019-08-27 21:58:45 1800 1

原创 Java设计模式——代理模式

1、简介代理模式( Proxy Pattern) 是一个使用率非常高的模式, 其定义如下:Provide a surrogate or placeholder for another object to control access to it.( 为其他对象提供一种代理以控制对这个对象的访问。)举打游戏的例子来说明:定义一个接口IGamePlayer,是所有喜爱网络游戏的玩家,然...

2019-08-22 09:16:57 564

原创 mysql索引

一句话简单来说,索引的出现其实就是为了提高数据查询的效率,就像书的目录一样。一本 500 页的书,如果想快速找到其中的某一个知识点,在不借助目录的情况下,那估计得找一会儿。同样,对于数据库的表而言,索引其实就是它的“目录”。1、索引的常见模型索引的出现是为了提高查询效率,但是实现索引的方式却有很多种,所以这里也就引入了索引模型的概念。可以用于提高读写效率的数据结构很多,这里我先给你介绍三种...

2019-08-18 10:33:10 2389

原创 Java设计模式——工厂方法模式

文章目录1、简介2、推荐实现案例3、优缺点3.1 优点4、应用场景5、注意事项6、拓展6.1 缩小为简单工厂模式6.2 升级为多个工厂类6.3 替代单例模式6.4 延迟初始化7、最佳实践1、简介Define an interface for creating an object,but let subclasses decide which class to instantiate.Fac...

2019-07-15 22:26:11 462

原创 dubbo介绍与基础架构

1、背景随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。单一应用架构当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。垂直应用架构当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将...

2019-07-11 21:14:53 393

原创 mysql事务隔离级别

1、概述数据库事务(简称:事务)是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。一个数据库事务通常包含了一个序列的对数据库的读/写操作。它的存在包含有以下两个目的:(1)为数据库操作序列提供了一个从失败中恢复到正常状态的方法,同时提供了数据库即使在异常状态下仍能保持一致性的方法。(2)当多个应用程序在并发访问数据库时,可以在这些应用程序之间提供一个隔离方法,...

2019-07-11 19:53:46 216

原创 Java设计模式—单例模式

1、简介Ensure a class has only one instance, and provide a global point of access to it.( 确保某一个类只有一个实例, 而且自行实例化并向整个系统提供这个实例。 )单例模式通用类图如图所示:Singleton类称为单例类, 通过使用private的构造函数确保了在一个应用中只产生一个实例, 并且是自行实例...

2019-07-10 20:27:31 173

原创 一条SQL更新语句是如何执行的?(redo log 和 binlog)

1、一条SQL更新语句是如何执行你可能听说过,MySQL 可以恢复到半个月内任意一秒的状态。那是怎样做到的呢?我们从一条更新语句来说明这个问题:下面是这个表的创建语句,这个表有一个主键 ID 和一 个整型字段 c:create table T(ID int primary key, c int);如果要将 ID=2 这一行的值加 1,SQL 语句就会这么写:update T set ...

2019-07-08 20:22:41 439

原创 Elasticsearch 地理位置查询

本文参考自Elacticsearch的中文版翻译:https://es.xiaoleilu.com/并对基于Es 6.6.0版本进行API的更正。地理位置我们拿着纸质地图漫步城市的日子一去不返了。得益于智能手机,我们现在总是可以知道自己所处的准确位置,也预料到网站会使用这些信息。我想知道从当前位置步行 5 分钟内可到的那些餐馆,对伦敦更大范围内的其他餐馆并不感兴趣。但地理位置功能仅仅是 E...

2019-06-26 19:44:18 1469

原创 Elasticsearch索引原理

Elasticsearch索引原理Elasticsearch最关键的就是提供强大的索引能力了。Elasticsearch索引的精髓:一切设计都是为了提高搜索的性能。另一层意思:为了提高搜索的性能,难免会牺牲某些其他方面,比如插入/更新,否则其他数据库不用混了。PUT /megacorp/employee/1 { "name" : "John", "sex" : ...

2019-06-25 18:56:38 392

原创 ElasticSearch基础架构

1、概述ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官网:https://www.elastic.co/cn/p...

2019-06-25 14:24:09 270

原创 Java设计模式——六大设计原则

1、概述设计原则则是设计模式所遵循的规则,设计模式就是实现了这些原则,从而达到了代码复用、增加可维护性的目的。2、六大设计原则2.1 单一职责原则(Single Responsibility Principle - SRP)单一职责原则(SRP:Single responsibility principle)又称单一功能原则,它规定一个类应该只有一个发生变化的原因。所谓职责是指类变化的原...

2019-06-24 20:30:11 546

原创 mysql基础架构

我明天回塔拉再去想吧。那时我就经受得住一切了。明天,我会想出一个办法把他弄回来。毕竟,明天又是崭新的一天了!——《飘》0、概述MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Managem...

2019-06-19 01:07:21 280

原创 ElasticSearch分页查询四种解决方案与原理

当你拼命想完成一件事的时候,你就不再是别人的对手,或者说得更确切一些,别人就不再是你的对手了,不管是谁,只要下了这个决心,他就会立刻觉得增添了无穷的力量,而他的视野也随之开阔了。——《基督山伯爵》1、from + size 浅分页常用的分页查询根据from+size语句如下:GET /my_index/my_type/_search{ "query": { "match_all...

2019-06-10 22:41:33 7136 3

原创 BeanDefinitionRegistryPostProcessor——动态注册Bean到Spring容器

我宁愿靠自己的力量,打开我的前途,而不愿求有力者垂青。——《悲惨世界》1、理论一般如果想将类注册到spring容器,让spring来完成实例化,常用方式如下:xml中通过bean节点来配置;使用@Service、@Controller、@Conponent等注解。最近在研究通过Spring初始化时扫描自定义注解,查到了通过实现BeanDefinitionRegistryPostP...

2019-06-04 21:57:59 12412

原创 Elasticsearch简介与安装

读书应具有学习和求知的欲望,也就是说,要用人类的天才积累的知识财富充实自己的头脑和心灵。 ——《书话》1、简介ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达...

2019-02-23 19:32:52 284

原创 2018年总结与2019年新计划

1、概述2018年发生了很多事情。有好有坏。人也慢慢走向成熟,不再为一时的坏而黯然失色;也不再为一时的好而暗自窃喜。总体来说,2018我是幸运的。2、2018年总结2.1 工作在工作方面,2018年总共做了四个项目。经过17年的磨砺,18年针对复杂的情况也能从容面对了。2.1.1 充电桩项目这个项目是针对整个桐乡市搭建充电桩,客户可以说是当地的地头蛇,黑白通吃。这个项目开始时,我个人是...

2019-02-23 17:07:22 547 3

原创 mac中删除相关快捷键

自己的行为最惹人耻笑的人,却永远是最先去说别人坏话的人。 ——《伪君子》最近在项目测试过程中,需要进行向前删除和向后删除的操作。我发现在mac上居然找不到向后删除的快捷键。因此Google一波,mac提供的删除功能还挺多:(1)第一种:按 delete 键,实现 Windows 键盘上退格键的功能,也就是删除光标之前的一个字符(默认);(2)第二种:按 fn+delete 键,删...

2018-12-26 11:46:47 3394

原创 mysql采用存储过程插入大批量数据

人在年轻的时候,觉得到处都是人,别人的事就是你的事,到了中年以后,才觉得世界上除了家人已经一无所有了。——王小波《爱你就像爱生命》1、引言最近发现老项目中的首页加载速度较慢,发现做主要的原因由于单表数据已经超过百万了,于是考虑通过优化SQL语句和增加索引来提升加载速度。线上库当然不能随意的增加和修改索引测试,但是测试库的数据量较少,测试效果不明显。因此考虑往测试库中增加百万的模拟数据。2...

2018-12-08 18:08:12 1951

原创 Spring事务注解@Transactional失效和切面失效问题

人最宝贵的是生命,生命属于人只有一次。人的一生应当这样度过:当他回首往事时,不会因虚度年华而悔恨,也不会因碌碌无为而羞耻。这样,临终前他就可以自豪地说:“我已经把自己整个生命和全部精力都献给了世界上最壮丽的事业——为人类的解放而奋斗。”——《钢铁是怎样炼成的》1、引言最近在开发采用Spring框架的项目中,在A方法上使用了@Transactional注解,但当在同一个类的B方法中调用A方法...

2018-12-01 13:04:28 2837 3

原创 Servlet线程安全问题

当你什么都不是的时候,你就无所畏惧。——《冰与火之歌》1、引言最近在开发中,经常理所当然的用SpringMVC处理请求,想着SpringMVC在处理高并发请求的时候怎么去解决线程安全问题。因此先研究了SPringMVC处理请求的基础,Servlet的线程安全问题,后面再去深入SpringMVC的线程安全处理机制。2、Servlet生命周期及其处理流程Servlet生命周期是指从创建直到...

2018-11-18 22:20:44 206

原创 mysql修改表结构和字段方法总结

我一贯追求的是:在人的肉体与幻想允许的范围内,获得最大限度的真诚和信任,以及对所有的一切尽可能长久的保证。《镜中微瑕》1、引言在开发时有时候为了前期数据库设计不合理或者名称写的有问题,需要修改名称或字段属性,因此,本文总结了在开发中常用的修改字段的mysql命令。2、ALTER COLUMN 修改默认值# 设置默认值ALTER TABLE MyTable ALTER COLUMN u...

2018-11-15 19:58:27 1245

原创 SpringMVC中的参数绑定注解详解及其使用场景

我认为只有深刻地研究过人,才能创造出人物,如同只有认真地学习了一种语言才能讲它一样。——《茶花女》0、引言最近在写一个接口的时候,采用put请求,接收参数时采用了两个@requestparam接收。前端通过application/json传来两个参数,测试时总是接收不了,最后换成application/json去接收可以。因此总结了本文常用的SpringMVC参数绑定注解,以谨记此次bug...

2018-11-14 20:22:18 1356

原创 修改mybatis-generator中数据库类型和Java类型的映射关系

离你越近的地方,路途越远;最简单的音调,需要最艰苦的练习。——《泰戈尔诗选》1、修改类型映射关系在项目中,为了降低数据的存储空间,status状态字段一般使用tinyint, 1个tinyint型数据只占用一个字节,一个int型数据占用四个字节。这看起来似乎差别不大,但是在比较大的表中,字节数的增长是很快的。tinyint的范围一般是,带符号的范围是-128到127,无符号的...

2018-09-15 15:58:36 3862

原创 linux下各种方法查看tomcat日志以及查看文件内容指令

宽宏大量,是惟一能够照亮伟大灵魂的光芒。——《巴黎圣母院》1、引言本周在Linux部署springboot项目的时候,采用自动化部署,一直以来都采用jar包的部署方式,本次采用war包的方式部署到tomcat容器。虽然我在项目中配置了Logback记录日志,但是一些预启动的内容还要需要通过tomcat的启动日志catalina.out来查看。 本文主要总结Linux下查看日志...

2018-09-15 14:11:15 2293

解析Android软件的Xml文件

Android反编译利器 如何使用请查看我的CSDN博客

2013-04-25

CSDN_Example

RecyclerView+swipeRefreshLayout+ViewPager实现上拉加载更多下拉刷新,并添加头部广告栏

2016-11-07

显示gif图片的框架

ShowGif,GIF显示框架,重写了View类,用户使用时直接在XML文件中调用就好了

2015-12-06

chun_soft的留言板

发表于 2020-01-02 最后回复 2020-01-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

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