自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

CoffeDaddy的专栏

一步一步学Java

  • 博客(125)
  • 收藏
  • 关注

原创 《金字塔原理》读书笔记之四:展示的逻辑

如何将金字塔思维表达给读者,在书面和口头是有区别的。1、书面表达突出框架重点 上下文要有衔接2、口头表达人是通过图像而非文字进行理性思考的,所以图像更容易让人理解,但口头表达的只能是语言(文字),因此,要构建画面感呈现,按照画面结构进行描述。实现图像转换为文字的关键能力依然是,建立金字塔结构,这个第一章已经讲过了。金字塔,其实就是图像结构的。...

2021-08-20 22:18:18 419

原创 《金字塔原理》读书笔记之三:解决问题的逻辑

解决问题的前提是搞清楚有什么问题(界定问题),并且搞清楚是什么问题(分析问题),本篇解析了界定问题和分析问题的思路。分析问题的基本思路是序列分析法,用此法一是可以确认当前在讨论什么问题,二是可以确定思维层次有没有遗漏,是不是更上层次的问题还没想清楚。...

2021-08-20 21:39:34 651

原创 《金字塔原理》读书笔记之二:思考的逻辑

本篇思考的逻辑,将更详细讲解如何构建出优秀的金字塔结构。思考力是一个人成长的关键,决定了他成长的加速度,掌握丰富的多视角、多层次的思维武器,将是一个人最强大的武装。一、应用逻辑顺序逻辑表达是顺序有3种:时间顺序、空间顺序、程度顺序。(可以想一想,为什么只有这3种)1、时间顺序(步骤)按时间顺序思考容易遇到一个问题,当某个过程或流程较长,且包含许多步骤,会存在多个层次的原因和结果,这是因为事实往往不是简单的单线逻辑而是多维互联的,这时想要理清楚每个步骤的因果需要在多个背景和事实间反复跳..

2021-08-20 18:05:10 1100

原创 《实现领域驱动设计》笔记

1、不要用贫血对象虽然DO是贫血的,但目前的DO实际是DataObject,DomainService是实际的DomainObject2、多跟领域专家沟通3、计费核心域为计费执行1)计费执行包括计费条件、计费过程、计费结果2)创建计费上下文,如计费时间4、应用服务应当是无状态的5、分层架构目标是隔离多变的用户需求和稳定服务实现(接口隔离原则)6、依赖导致原则在架构中的应用1)抽象不应依赖于细节,细节应依赖于抽象。2)高层模块不依赖于底...

2020-12-07 13:08:04 261

原创 《领域驱动设计精粹》笔记

1、敏捷开发敏捷开发是一个增量的、快速迭代的开发过程。敏捷开发强调的是快速应对需求的变化,目标是通过持续不断地及早交付有价值的软件使客户满意。敏捷开发的要求团队按照拆细的“任务板挪卡”去开发,对于“知识获取”重视不够,可能导致业务理解、设计方案不够充分等诸多问题。2、软件开发一般被看做成本中心而非利润中心,即,软件技术往往被认作是必要消耗,而非战略优势的来源。3、除了优秀设计就是糟糕设计,根本不存在“不做设计”一说!4、做事情,最大限度地发挥你的聪明才智!...

2020-12-07 13:07:31 281

原创 《经济学原理》读书笔记之二:市场如何运行

一、供给与需求的市场力量1、需求1.1 用需求曲线描述加个和需求量之间的关系如图可见,随着价格的升高,需求量相应减小。1.2 需求曲线的移动影响需求曲线移动的因素:1、收入如果收入降低,则正常物品的需求量会减少,但相应地,低档物品的需求量会增加。2、相关物品的价格能满足相似需求的物品为替代品,如果一种物品的价格上升,会增加替代品的需求。而能相关搭配的物品为互补品,如果一种物品的价格上升,会减少互补品的需求。小疑问:烟草和大麻是替代品还是互补品,即如果

2020-12-05 16:33:23 2585

原创 《经济学原理》读书笔记之一:导论

一、经济学十大原理1、人们如何做出决策原理一:人们面临权衡取舍经典例子:黄油和大炮、效率和平等。原理二:某种东西的成本是为了得到它所放弃的东西注意机会成本往往不是直接成本,而是有放弃了其他机会的隐藏成本。原理三:理性人考虑边际量最重要的概念之一,当前的决策取决于当前状况,不要纠结于历史决策。原理四:人们会对激励做出反应经典例子:安全带的出现反而导致车祸率上升。2、人们如何相互影响原理五:贸易可以使每个人的状况都变得更好贸易可以发挥每个参与者的生产力优势,决策依

2020-12-05 12:11:47 1026

原创 DDD概要

一、DDD是什么DDD是Eric Evans 于2004年提出的一种软件设计方法,Domain Drive Design,简称DDD,在软件设计领域被广泛应用。DDD的核心思路是强调“领域”在软件设计的作用,领域是有边界的、有重点的、可划分的,它是对一定范围内业务事实的抽象,与技术实现无关。划定领域有如下好处:1、领域限定了问题空间,定义了通用语言,使得业务讨论更好聚焦,不会跑偏。...

2020-04-18 23:19:30 603

原创 Spring中的注解(持续更新中)

这些注解先详细释义,后续再分类规范。@RestController@RestController等同于@Controller + @ResponseBody。@Controller表示这是个控制器类,是个被Spring容器管理的Bean;@ResponseBody表示方法的返回值是Http Response Body,实际是个JSON串,而不是跳转路径。@GetMapping系...

2020-04-13 23:03:45 244

原创 Web开发来一发(十五)Linux IO模式和epoll原理

1

2020-03-10 18:01:35 210

原创 《金字塔原理》读书笔记之一:表达的逻辑

金字塔原理是一本讲思考、表达、沟通和解决问题的经典书籍。分四篇:表达的逻辑、思考的逻辑、解决问题的逻辑和演示的逻辑。本篇讲表达的逻辑,下图为提纲:这一篇表达的逻辑其实从表达的角度出发,也解释了本书的核心概念和意义,开篇先讲为什么要读本书。一、为什要用金字塔为什么要用金字塔结构,如果用一句话解释,那就是金字塔是受众最容易理解和记住的结构。表达的核心是让受众听懂,形成目标或情感上的...

2019-12-23 09:43:48 789

原创 《苏菲的世界》读书笔记之一:自然派哲学家

苏菲的世界,是挪威作家乔斯坦·贾德的一部非常精简的哲学著作,基于此书可以理出西方哲学史的基本脉络。哲学思考的问题,最初主要是对世界和自身的认知,如:为什么世界是这样运作?万物都是什么组成的?人生的意义是什么?人死之后会怎样?等等,后世在这些问题的基础上延伸和细化,试图回答更多问题,如:讨论人与社会的关系等等。古希腊的最早的哲学家都是奴隶主,体力活都交给奴隶去做,所以他们有充分的时间去遐想和...

2019-12-21 16:21:00 4652

原创 《新零售》读书笔记

一、零售概念零售就是把“人”(消费者)和“货”(商品)连接在一起的“场”。1、人销售漏斗公式:销售额 = 流量 * 转化率 * 客单价 * 复购率零售从“人”的角度讲,就是想办法提升流量、转化率、客单价和复购率。2、货货物归属流程:D(设计)- M(制造商、工厂)- S(供应链)- B(大卖场、超市等)- b(小商店) - C(消费者)零售从“货”的角度讲,...

2019-06-08 00:32:34 2495

原创 JavaWeb开发设计(九)编程范式

这里介绍常见的编程范式,包括:面向过程编程、面向对象编程、函数式编程、反应式编程(响应式编程)。另外有个分类是命令式(Imperative)和声明式(Declarative),命令式编程的主要思想是关注计算机执行的步骤,即一步一步告诉计算机先做什么再做什么。而声明式编程是以数据结构的形式来表达程序执行的逻辑。它的主要思想是告诉计算机应该做什么,但不指定具体要怎么做。函数式编程是属于声明式编...

2019-06-03 16:07:15 281

原创 JavaWeb开发设计(八)REST和RESTful

1、REST和RESTful是什么?REST是一种软件架构风格和设计风格,主要定义C/S网络交互应用层。。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。RESTful是指符合REST风格的设计。2、为什么会出现REST?http协议的定义者之一Roy Fielding认为,开发者对http的理解存在严重偏差,http很多设计并没有被很好地运用,而往往只承担一个最...

2019-05-19 18:50:28 545

原创 JavaWeb开发设计(七)开发模式

常讲到的开发模式包括:瀑布式开发、敏捷开发、极限编程等。传统开发模式都是瀑布式开发,按部就班一步步达成目标,但互联网产品节奏紧凑、业务需求多变,瀑布式开发显得太笨重,于是出现了极限编程、敏捷开发等应对。一、瀑布式开发瀑布式开发是最典型的预见性的方法,严格遵循预先计划的需求、分析、设计、编码、测试的步骤顺序进行。瀑布式的主要的问题是它的严格分级导致的自由度降低,项目早期即作出承诺导致对后...

2019-05-19 14:02:53 352

原创 Web开发来一发(十五)Redis

1、Redis简介Redis是一个Key-Value存储系统,可以支持String、Hash、List、Set等作为value进行存储,并且支持push/pop、add/remove及取交集并集和差集及更丰富的操作,且保证这些操作的原子性,另外还支持排序。Redis数据是放在内存中的,但会做持久化,周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了maste...

2019-05-17 14:06:28 221

原创 java.lang.OutOfMemoryError:GC overhead limit exceeded

1、问题描述IDEA Intellij导入maven工程的时候,报错:java.lang.OutOfMemoryError:GCoverheadlimitexceeded2、问题原因GCoverheadlimtexceed检查是HotspotVM1.6定义的一个策略,通过统计GC耗时来预测是否要OOM了,如果回收器在GC回收时间过长时会抛出OutOfMemroyErro...

2019-05-16 19:46:54 2474

原创 Java杂谈来一发(九)SPI

1、定义SPI(ServiceProviderInterface),即服务提供者接口,是JDK内置的一种动态服务提供发现机制。SPI可以实现在不修改原来jar包的情况下,新增一种API的实现。在接口依赖关系中,实现方实现SPI接口,调用方依赖SPI接口。SPI是由调用方定义的,这是它和API最大的不同。2、SPI实现当服务的提供者,提供了接口的一种具体实现后,在jar包的M...

2019-05-16 19:38:08 215

原创 Guava基本工具(TODO)

1、Optional避免使用Null导致各种异常情况,用Optional可以安全地处理Null,用orElse、orElseGet等处理null情况。2、PreConditions校验入参,类似于Assert用法。3、ComparisonChain 用类似流的方式比较一系列数字,直到比不过返回。4、Ordering本质上来说,Orderin...

2019-05-16 19:30:31 327

原创 TCP流量控制和拥塞控制简述

一、流量控制(端到端)利用灵活可变的滑动窗口控制流量,是为了解决发送方发送数据扩快导致接收方来不及接受的问题。具体是接收方会发送流量控制保温通知发送方窗口大小,发送方发送的数据大小不能超过窗口大小。二、拥塞控制(区域网络)避免过多的流量注入网络使得网络过载。方法包括:慢开始、拥塞避免、快重传和快恢复。慢开始:刚开始建立连接的时候,发送窗口大...

2019-05-16 19:24:13 974

原创 信贷业务系统

一、信贷业务信贷业务系统的核心能力是为符合授信资质的用户提供信贷服务,这个系统应当具备以下能力:风控服务:对用户的信用风险进行评估,提供授信额度。风控服务是贯穿整个信贷流程的贷前、贷中、贷后的,其关键是数据和模型算法。信贷服务:包括用户借款、用户还款、融资、收益分发、营销等。信贷服务是业务流程的主体,也是业务变动和扩展最频繁的部分。资金服务:包括内部、外部资金流转,资金对账功能等。...

2019-05-16 19:05:32 11258

原创 《码出高效》读书笔记(下)面向对象

1、面向对象斯达特性:抽象、封装、继承、多态​抽象:分为归纳和演绎,归纳是从具体到本质,从个性到共性,演绎是反过来​封装:决定哪些信息公开,目的是解耦(参考迪米特法则)​​继承:继承是为了复用(参考里氏替换),但滥用继承可能会导致方法污染甚至方法爆炸​多态:通过重载动态表达需求。2、接口和抽象类的区别​​​​从语法上看:...

2019-04-28 22:20:36 170

原创 《码出高效》读书笔记(上)计算机基础

1、二进制整数是以补码存储的,这样是为了加减法都可以直接用加法器运算2、右移分为有符号右移和无符号右移(意义?)3、逻辑与或非有短路功能4、浮点数存储包含3部分:符号位、阶码、尾数5、浮点数阶码内存储的是移码,移码 = 真值 + 2^(n-1) -1,其中n为真值的二进制位数,意义是可以直接比较大小,因为移码一定是正数。6、阶码全0为机器0,阶码全...

2019-04-28 21:20:48 281

原创 Spring来一发(七)Spring的事件通知机制

spring事件发送监听涉及3个部分:事件、发布者和监听者。1)ApplicationEvent:表示事件本身,自定义事件需要继承该类,可以用来传递数据。public class TestEvent extends ApplicationEvent { private String param; public TestEvent(String param) { ...

2019-03-02 14:07:57 426

转载 学点新东西(六)领域驱动设计(转)

原文链接:https://www.infoq.cn/article/ddd-in-practice另一篇也可以看下:https://blog.csdn.net/significantfrank/article/details/79614915背景领域驱动设计(DDD)的中心内容是如何将业务领域概念映射到软件工件中。大部分关于此主题的著作和文章都以 Eric Evans 的书《领域...

2019-03-01 20:58:53 526

原创 学点新东西(五)领域模型之失血、贫血、充血、胀血模型

领域模型分为4大类:失血模型、贫血模型、充血模型、胀血模型。这类理论都是些软件设计领域的大牛(如Martin Fowler)提出来的,有其背景和原因,这里第一步先了解它们是什么,以后再深挖。想要理解这几个分类,先要知道“血”指的是domain object的model层内容。1、失血模型失血模型中,domain object只有属性的get set方法的纯数据类,所有的业务逻辑完全由S...

2019-03-01 18:20:24 5132

原创 Java面试来一发(二)死锁

原文:https://www.cnblogs.com/wuchanming/p/4345243.html1、死锁的条件1)互斥条件(Mutual exclusion) :资源不能被共享,只能由一个进程使用。2)请求与保持条件(Hold and wait):进程已获得了一些资源,但因请求其它资源被阻塞时,对已获得的资源保持不放。3)不可抢占条件(No pre-emption)...

2019-02-26 16:45:04 337

转载 学点新东西(四)Lambda表达式和StreamAPI(转)

转载自:https://www.cnblogs.com/wuyx/p/8972311.htmlhttps://www.cnblogs.com/wuyx/p/9038768.html#4048227Lambda表达式一、为什么要使用Lambda表达式  Lambda是一个匿名函数,我们可以baLambda表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。可以写出更简洁...

2019-02-15 16:31:34 809

原创 学点新东西(三)Mybatis

1、mybatis简介MyBatis是一个支持普通SQL查询、存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects)映射成数据库中的记录。2、mybatis原理简单来讲,当框架启动时,通过解...

2019-02-14 12:28:14 185

原创 Spring来一发(六)Spring的钩子方法和钩子接口

1、Aware接口族Spring中提供了各种Aware接口,方便从上下文中获取当前的运行环境,常见的包括:BeanFactoryAware,BeanNameAware,ApplicationContextAware,EnvironmentAware,BeanClassLoaderAware等。BeanFactoryAware接口:通过它可以拿到Spring容器中的Bean。通过调用getB...

2019-02-13 17:15:06 3684

原创 学点新东西(二)Vert.x

1、Vert.x简介Vert.x框架依托于netty,是一个基于事件和异步的工具集,特点是轻量、高性能、支持多语言开发。Vert.x是事件驱动的,其处理请求的高性能也是基于其事件机制。Vert.x的事件机制中的主要概念:Event Loop、Event Loop Vertical、Worker Vertical、Event Bus、Vert.x Module。Event Loop:即事...

2019-02-02 16:16:34 267

原创 学点新东西(一)SQLite

1、SQLite简介SQLite是一款轻型的遵守ACID的关系型数据库管理系统,实现了无服务器的、零配置的、支持事务性的 SQL 数据库引擎,SQLite 是在世界上最广泛部署的 SQL 数据库引擎。SQLite的轻量体现在不需要单独的服务器部署,甚至不需要单独的进程执行,它是按应用程序需求进行静态或动态连接。因此SQL处理速度很快,占用资源很少,相对于Mysql、PostgreSQL等处...

2019-02-02 14:44:24 330

原创 搭建网站实践(四)外部用ip访问页面

阿里云ECS对外部访问服务器加了基本的权限,可以添加安全组来添加特定协议、端口和ip的访问权限。

2019-01-24 15:43:03 358

原创 搭建网站实践(三)部署最简JavaWeb应用

搭建一个最简单的JavaWeb应用,编译器是IntelliJ IDEA,web框架用的是Spring,前端模板是velocity,包管理工具是maven,代码版本管理工具是git,github地址:https://github.com/Spinach37/spinach.git一、核心代码1、web/pom.xml添加org.apache.commons、javax.servlet、o...

2019-01-24 11:24:52 141

原创 搭建网站实践(二)Centos7 图形化界面

1、 安装 X Window Systemyum groups install "X Window System" 2、 安装 MATE Desktopyum groups install "MATE Desktop"3、设置默认环境启动服务器systemctl set-default multi-user.target  //设置成命令模式systemctl set-de...

2019-01-23 15:51:26 364

原创 搭建网站实践(一)基础环境搭建

买了个阿里云服务器实例,CentOS x64系统,从零开始搭建个人网站。本篇先搭建基本环境,安装jdk、Tomcat、Mysql。1、安装jdk1)直接用wget命令下载:wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" https:/...

2019-01-23 15:20:58 254

原创 设计模式来一发(二十)命令模式

命令模式的定义:请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。命令模式实际上是强调将请求信息独立封装并进行处理,主要目的是解耦请求调用方和被调用方。RPC调用其实就是一种典型的命令模式实现。...

2019-01-21 19:33:12 145

原创 系统设计都需要考虑什么

这里只是添加一些不成体系的想法,后面随时补充。系统设计无疑要考虑系统稳定性、可扩展性、数据一致性,有可能要有高并发设计,还需要考虑系统可维护性。1、在研究业务模型时,注意思考业务的核心模型是什么,也就想清楚哪些是会变的点,哪些是不会变的点。这可以指导数据模型的建立,哪些方面可能从0变1,哪些方面可能从1:1变成1:N甚至N:N。另外也需要清楚,哪些模块可能会被替换,甚至需要频繁切换。2、不...

2019-01-21 17:20:56 3676

原创 Java面试来一发(一)TopN问题

一、TopN问题描述1、TopN问题描述问题一:找出海量数据中出现次数最多的N个数据。问题二:找出两个超大文件中的相同字符串。问题三:找出超多整数中没有重复出现的整数,或多少以内没出现的整数。2、解决方案通用方案:分而治之的思想,先拆分成很多小文件,每个文件分别统计和排序,然后归并排序。问题一:除分而治之方案外,如果无内存限制,则可用trie字典树。问题二:除分而治...

2019-01-08 17:03:48 2443

空空如也

空空如也

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

TA关注的人

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