自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 Redis为什么是单线程的?Redis性能为什么很快?

Redis采用了一种非常简单的做法,单线程来处理来自所有客户端的并发请求,Redis把任务封闭在一个线程中从而避免了线程安全问题;redis为什么是单线程? 官方的解释是,CPU并不是Redis的瓶颈所在,Redis的瓶颈主要在机器的内存和网络的带宽。那么Redis能不能处理高并发请求呢?当然是...

2020-01-30 19:45:16 100 0

原创 redis的数据结构小结

目录 1,string类型 2,list类型 3,hash类型 dictEntry dictht dict 4,集合类型 skiplist与平衡树、哈希表的比较 redis可以存储五种数据结构:String(字符串)、List(列表)、Set(集合)、Hash(哈希)、Zset(...

2020-01-28 14:54:51 76 0

原创 java并发5——synchronized和volatile关键字

一,synchronized 以虚拟的叫号系统为例 采用并发程序叫号时会出现跳号、重号、超过最大值等现象。 参照JMM模型,https://blog.csdn.net/qq_22059611/article/details/95211836 可知由于工作空间数据对其他线程不可见、且叫好...

2019-12-03 16:51:50 26 0

原创 设计模式笔记24——职责链模式(responsibilitychain)

学校OA系统的采购审批项目: 需求是 1) 采购员采购教学器材 2) 如果金额 小于等于5000, 由教学主任审批 (0<=x<=5000) 3) 如果金额 小于等于10000, 由院长审批 (5000<x<=10000) 4) 如果金额 小于等于30000, 由副...

2019-11-29 17:52:34 42 0

原创 设计模式笔记23——策略模式(strategy)

编写鸭子项目,具体要求如下: 1) 有各种鸭子(比如 野鸭、北京鸭、水鸭等, 鸭子有各种行为,比如 叫、飞行等) 2) 显示鸭子的信息 传统方案解: 所有鸭子集成自 Duck 传统的方式实现的问题分析和解决方案 1) 其它鸭子,都继承了Duck类,所以fly让所有子类都...

2019-11-29 17:41:42 41 0

原创 设计模式笔记22——状态模式(state)

APP抽奖活动问题 请编写程序完成APP抽奖活动 具体要求如下: 1) 假如每参加一次这个活动要扣除用户50积分,中奖概率是10% 2) 奖品数量固定,抽完就不能抽奖 3) 活动有四个状态: 可以抽奖、不能抽奖、发放奖品和奖品领完 4) 活动的四个状态转换关系图 基本介绍 1...

2019-11-29 10:46:05 29 0

原创 设计模式笔记21——解释器模式(interpreter)

四则运算问题 通过解释器模式来实现四则运算,如计算a+b-c的值,具体要求 1) 先输入表达式的形式,比如 a+b+c-d+e, 要求表达式的字母不能重复 2) 在分别输入a ,b, c, d, e 的值 3) 最后求出结果: 传统方案解决四则运算问题分析 1) 编写一个方法,...

2019-11-29 10:13:29 19 0

原创 设计模式笔记20——备忘录模式(memento)

游戏角色状态恢复问题 游戏角色有攻击力和防御力,在大战Boss前保存自身的状态(攻击力和防御力), 当大战Boss后攻击力和防御力下降, 从备忘录对象恢复到大战前的状态 传统的方式的问题分析 1) 一个对象,就对应一个保存对象状态的对象, 这样当我们游戏的对象很多时,不利于管理,开销也很...

2019-11-28 17:29:50 28 0

原创 设计模式笔记19——中介者模式(mediator)

智能家庭项目: 1) 智能家庭包括各种设备,闹钟、咖啡机、电视机、窗帘 等 2) 主人要看电视时,各个设备可以协同工作,自动完成看电视的准备工作,比如流程为:闹铃响起->咖啡机开始做咖啡->窗帘自动落下->电视机开始播放 传统的方式的问题分析 1) 当各电器对象有...

2019-11-28 16:52:58 36 0

原创 设计模式笔记18——观察者模式(observer)

天气预报项目需求,具体要求如下: 1) 气象站可以将每天测量到的温度,湿度,气压等等以公告的形式发布出去(比如发布到自己的网站或第三方)。 2) 需要设计开放型API,便于其他第三方也能接入气象站获取数据。 3) 提供温度、气压和湿度的接口 4) 测量数据更新时,要能实时的通知给第三方 ...

2019-11-27 10:01:00 19 0

原创 设计模式笔记17——迭代器模式(iterator)

编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系。 基本介绍 1) 迭代器模式(Iterator Pattern)是常用的设计模式,属于行为型模式 2) 如果我们的集合元素是用不同的方式实现的,有数组,还有java的集合类...

2019-11-27 09:20:19 40 0

原创 设计模式笔记16——访问者模式(visitor)

完成测评系统需求 1) 将观众分为男人和女人,对歌手进行测评,当看完某个歌手表演后,得到他们对该歌手不同的评价(评价 有不同的种类,比如 成功、失败 等) 传统方式的问题分析 1) 如果系统比较小,还是ok的,但是考虑系统增加越来越多新的功能时,对代码改动较大,违反了ocp原则, 不...

2019-11-26 10:25:29 17 0

原创 设计模式笔记15——命令模式(command)

智能生活项目需求 1) 我们买了一套智能家电,有照明灯、风扇、冰箱、洗衣机,我们只要在手机上安装app就可以控制对这些家电工作。 2) 这些智能家电来自不同的厂家,我们不想针对每一种家电都安装一个App,分别控制,我们希望只要一个app就可以控制全部智能家电。 3) 要实现一个app控制所有智能家...

2019-11-26 09:52:14 22 0

原创 设计模式笔记14——模板方法(template)

豆浆制作问题 编写制作豆浆的程序,说明如下: 1) 制作豆浆的流程 选材--->添加配料--->浸泡--->放到豆浆机打碎 2) 通过添加不同的配料,可以制作出不同口味的豆浆 3) 选材、浸泡和放到豆浆机打碎这几个步骤对于制作每种口味的豆浆都是一样的 4) 请使用 模板...

2019-11-26 09:21:24 16 0

原创 设计模式笔记13——代理模式(proxy)

代理模式(Proxy) 1) 代理模式:为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。 2) 被代理的对象可以是远程对象、创建开销大的对象或需要安全控制的对象 3) 代理模式有...

2019-11-25 17:01:27 19 0

原创 设计模式笔记12——享元模式(Flyweight)

展示网站项目需求 小型的外包项目,给客户A做一个产品展示网站,客户A的朋友感觉效果不错,也希望做这样的产品展示网站,但是要求都有些不同: 1) 有客户要求以新闻的形式发布 2) 有客户人要求以博客的形式发布 3) 有客户希望以微信公众号的形式发布 传统方案解决网站展现项目 1) 直...

2019-11-25 16:31:13 32 0

原创 设计模式11——外观模式(facade)

外观模式基本介绍 1) 外观模式(Facade),也叫“过程模式:外观模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用 2) 外观模式通过定义一个一致的接口,用以屏蔽内部子系统的细节,使得调用端只需跟这个接口发生调用,而无需关心这个子系统...

2019-11-25 10:43:02 20 0

原创 设计模式10——组合模式(composite)

看一个学校院系展示需求 编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系 组成,一个学校有多个学院,一个学院有多个系。如图: 传统解决方案——以继承实现层级关系 1,传统方案解决学校院系展示存在的问题分析 1) 将学院看做是学校的子类,系是学院的子类,...

2019-11-24 11:26:47 30 0

原创 设计模式9——装饰者模式(decorator)

星巴克咖啡订单项目(咖啡馆): 1) 咖啡种类/单品咖啡:Espresso(意大利浓咖啡)、ShortBlack、LongBlack(美式咖啡)、Decaf(无因咖啡) 2) 调料:Milk、Soy(豆浆)、Chocolate 3) 要求在扩展新的咖啡种类时,具有良好的扩展性、改动方便、维护...

2019-11-21 16:05:42 21 0

原创 设计模式8——桥接模式(bridge)

现在对不同手机类型的不同品牌实现操作编程(比如:开机、关机、上网,打电话等),如图: 传统方案解决手机使用问题(类图): 1,传统方案解决手机操作问题分析 1) 扩展性问题(类爆炸),如果我们再增加手机的样式(旋转式),就需要增加各个品牌手机的类,同样如果我们增加一个手机品牌,也要在...

2019-11-21 11:08:33 19 0

原创 设计模式笔记7——适配器模式(adapter)

适配器模式就像转接口 1,适配器模式基本介绍 1) 适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper) 2) 适配器模式属于结构型模式 3...

2019-11-19 08:59:25 20 0

原创 区块链原理分析——区块链数据结构

为了实现数据的不可篡改性,区块链引入了以区块为单位的链式结构。这一篇博客主要讲解区块链如何通过数据结构实现不可篡改性和可追溯性。 以比特币为例,区块头的结构如图所示: 区块链基于两种数据结构来保证数据的不可篡改性——Merkle树和区块链表。 (1)Merkle树。比特币采用...

2019-11-18 17:05:36 275 4

原创 设计模式6——建造者模式(builder)

1,盖房项目需求 盖房项目需求 1) 需要建房子:这一过程为打桩、砌墙、封顶 2) 房子有各种各样的,比如普通房,高楼,别墅,各种房子的过程虽然一样,但是要求不要相同的. 3) 请编写程序,完成需求. 传统方式解决盖房需求 public abstract class Abstract...

2019-11-18 10:30:14 15 0

原创 区块链原理分析——区块链体系架构

区块链平台虽然各有不同,但是整体架构上存在着许多共性,整体上可以划分为5个层次——网络层、共识层、数据层、智能合约层和应用层五个层次。如下图所示: 一、网络层 早在2001年,就有提出将P2P技术与数据库系统进行联合研究的想法,但是不能适应网络变化而查询到完整的结果集,因...

2019-11-16 12:50:29 202 0

原创 设计模式5——原型模式(prototype)

1,克隆羊问题 现在有一只羊tom,姓名为: tom, 年龄为:1,颜色为:白色,请编写程序创建和tom羊 属性完全相同的10只羊。 1.1传统方式解决克隆羊问题 对于Sheep.java: public class Sheep { private String name; privat...

2019-11-13 11:30:55 24 0

原创 设计模式笔记2——工厂模式及其应用

1,简单工厂模式 简单工厂模式:由一个类封装实例化对象的行为 解决问题:一旦要根据类别进行创建对象,需要在调用的地方修改逻辑,违反ocp原则,且修改的地方会很多。 简单工厂模式又叫静态工厂模式。 简单工厂模式类图: 实现起来大概是这样: public class EasyF...

2019-11-12 10:25:12 18 0

原创 spring cloud的配置中心问题

配置中心脸上gitlab后又出问题。 如果采用root账号登录,然后在spring cloud的配置中心查找一个yml文件,它是空的。 但是采用spring cloud配置中心采用的账号,登录之后,再查找,即能找到这个yml文件。 很奇怪,为啥用写好的账户访问之后就可以正常查出配置,感觉有可...

2019-10-08 15:49:14 16 0

原创 org.springframework.beans.factory.BeanCreationNotAllowedException

详细报错信息: org.springframework.beans.factory.BeanCreationNotAllowedException: Error creating bean with name 'eurekaAutoServiceRegistration': S...

2019-09-19 16:02:37 3211 0

原创 spring cloud下配置服务问题

Description: Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. Reaso...

2019-09-19 15:51:12 25 0

原创 spring boot集成thymeleaf

实际上一旦涉及到集成,做的多了,就知道,实际只有两部:一、引入相关要集成东东的资源;二、配置成能够调用的模式。 好了,简单说说spring boot集成thymeleaf: 首先依赖中加入: <dependency> <groupId>org.sprin...

2019-08-02 16:46:12 48 0

原创 初探gradle

之前也有听说过gradle,现在来用用。 一、安装gradle gradle的安装很简单,先在官网下载一个版本: https://gradle.org/install/ 找到相应的发型版本,选一个版本,最新的: 只要有二进制文件就可以运行了。然后把gradle下的bin目录加入到...

2019-08-01 10:58:39 35 0

原创 保证每段代码只会执行一次的例子

public class AtomicExample6 { private static AtomicBoolean isHappened = new AtomicBoolean(false); // 请求总数 public static int clientTotal = 500...

2019-07-18 15:27:12 44 0

原创 java并发编程线程安全——原子性1

一、线程安全性 线程安全性: 定义——当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些进程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的。 原子性:提供了互斥访问,同一时刻只能有一个线程来对它进行操作。 ...

2019-07-17 16:16:02 52 0

原创 mybatis开发3

查询缓存 缓存: Mybatis 默认有查询缓存,提供 一级缓存和二级缓存 减轻数据库压力,提高系统性能 二级缓存 禁用二级缓存:用于每次都需要查询最新数据的场景 Ehcache 分布式缓存框架 ...

2019-07-16 15:42:00 31 0

原创 mybatis开发2

动态sql 通过一些表达式的判断等,对sql语句进行灵活的拼接,组装 Sql片段 定义sql片段 引用sql片段 foreach SELECT * FROM USER WHERE id = 1 OR id = 2; SELECT * FROM USER WHERE id ...

2019-07-16 15:40:21 24 0

原创 mybatis开发1

创建mybatis工程 配置mybatis的运行环境,数据源,事务等(sqlMapConfig.xml) 创建PO类 创建mapper映射文件、接口(名称一致,在同一个目录下) 在sqlMapConfig.xml中加载mapper映射文件 编写程序 #{}: 占位符 参数类型:简单类...

2019-07-16 15:39:18 15 0

原创 解决org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 问题

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 这个问题是mybatis的dao层接口和mapper.xml文件不匹配,仔细找找他们的名称是否一致,就搞定了。 我找到的问题是: m...

2019-07-16 14:58:17 140 0

原创 mysql修改root密码

方法一: 在my.ini的[mysqld]字段加入: skip-grant-tables 重启mysql服务,这时的mysql不需要密码即可登录数据库 然后进入mysql mysql>use mysql; mysql>更新 update user set password=passwo...

2019-07-11 15:20:09 24 0

原创 maven如何只采用本地仓库jar包开发

由于在idea项目中导入jar包有三种,一是直接复制到目录,这种方式野蛮粗暴,编译不会报错,但是打开Structure会有"...jar ... is missing ..."的提示,而且可能存在和maven的兼容问题,要是以后还要用maven打包,可能还会有问题; 二是通过...

2019-07-11 11:02:42 81 0

原创 idea中Toggle Offline Mode是什么意思

这个按钮实际上是切换离线模式和连机模式的一个按钮,offline mode模式就是利用已经下载的jar包,查看本地的jar包,toggle offline mode就是切换到离线模式。 toggle即切换的意思 ...

2019-07-11 09:38:50 752 0

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