- 博客(21)
- 收藏
- 关注
原创 Redis学习-中级篇
发布订阅发布订阅什么是发布订阅Redis发布订阅(pub/sub)是一种消息通讯模式:可以指定一个频道(key),发布者(pub)向频道发送消息,订阅者(sub)可以接受该频道的消息。
2021-07-18 09:10:39
115
原创 Redis-高级篇
发布订阅发布订阅什么是发布订阅Redis发布订阅(pub/sub)是一种消息通讯模式:可以指定一个频道(key),发布者(pub)向频道发送消息,订阅者(sub)可以接受该频道的消息。客户端演示先创建频道名redisWechatredis 127.0.0.1:6379> SUBSCRIBE redisChatReading messages… (press Ctrl-C to quit)“subscribe”“redisChat”(integer) 1重新开.
2021-07-18 09:09:57
131
原创 Redis学习-基础篇
Redis简介Redis简介基于内存但可以持久化的日志型(持久化形式AOF,RDB),K/V结构的数据库性能极高:理想的读速度11000次/S ,写81000次/S支持丰富的数据类型:Strings,Lists,Hashes,Sets 及 Ordered Sets 数据类型操作。原子性:单个操作是原子性的,要么成功要么失败。多个操作也支持事务,通过MULTI和EXEC指令包起来。其他:还支持发布/订阅(publish/subscribe),key过期等特性...
2021-04-02 00:25:50
124
原创 序列化、反序列化原理
一、 基本概念二、为什么需要序列化和反序列化三、实现序列化和反序列化的方式1、JDK类库API2、JSON方式四、面试重点一、 基本概念序列化:将Java对象装换成字节序列对象序列化的最主要的用处就是再传递和保存对象的时候,保存对象的完整性和可传递性.序列化把对象转换成有序字节流,以便在网络上传输或者保存在本地文件中.序列化后的字节流保存了Java对象的状态以及相关描述信息.序列化机制的核心作用就是对象状态的保存与重建.反序列化:把字节序列转换成Java对象客户端从文件或者网络上获.
2021-03-14 16:55:29
705
原创 HTTP和HTTPS通讯原理分析
什么是HTTP?什么是HTTPS?什么是HTTP?HTTP全称HyperText Transfer Protocol(超文本传输协议),是一个基于请求与相应、无状态、应用层的协议,常基于TCP/IP协议传输数据,互联网应用最广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。想了解Http,就需要了解TCP、IP协议,因为Http是基于TCP、IP层的。TCP/IP协议互联网的关键技术就是TCP/IP协议。两台计算机之间的通讯是通过TCP/IP协议在英特网上进行的。实际上这是两个协议T.
2021-02-22 20:20:25
260
1
原创 分布式架构的演变之路
为什么要使用分布式架构分布式的术语概念区别分布式架构的演进之路分布式架构带来的问题为什么要使用分布式架构历史渊源随着物联网行业的发展,系统业务的扩张,对计算机硬件的要求也越来越高了,单台设备做的再好,也很难满足业务需求,而且这样的设备价格也是非常昂贵的,一般企业也购买不起分布式和微服务的区别分布式: 分散压力 解决三高(高性能,高可用,高并发)问题微服务: 分散能力 解决的是业务耦合问题PS:本身没有严格的区别和关系,一般来说大型的互联网项目都是基于微服务的分布式架构分布式.
2021-02-21 14:50:46
334
1
原创 java并发容器
什么是同步容器通过synchronized关键字修饰的容器,保证同一个时刻内只有一个线程在使用这个容器,从而使得容器线程安全什么是并发容器允许多线程同时使用容器,并且保证线程安全.而为了达到尽可能的提高并发,java并发工具包中采用了多种优化方式来提高并发容器的执行效率. 核心: 锁,cas,cow(读写分离),分段锁同步容器Vector: 和Arraylist一样实现的List接口,区别在于Vector在可能出现线程不安全的所有方法都用了synchronized进行修饰Stack: 是Vect
2020-11-28 22:41:05
81
原创 spring源码解析之IOC/DI(上篇)
说到Spring,我们就必须要说到IOC和DI,但是,IOC是什么呢?DI又是什么呢?两者之间有何关系呢?首先,我们先了解下什么是容器?什么是容器?作为程序员,如果我需要进行一次羞羞的事情…如果没有会所,那么我需要有钱,帅气,重要的是活好,才能找个女朋友进行----相当于自己创造(new)了一个对象;如果有会所,我只需要有钱就可以给我提供服务并进行羞羞的事情----这个会所就是容器,会所里面的小姐姐就是Bean在我们的Spring中也是如此,所有的Bean都管理在同一个地方,也就是容器
2020-10-11 23:43:37
99
原创 Mybatis源码解析之SQL语句执行源码
Mybatis源码解析之DefaultSqlSession#getMapper上面我们探讨过获取mapper的过程,获取到mapper之后是怎么执行sql语句的呢?我们一起看下这个MapperProxy#invoke():@Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { try { //如果是Object,就执行执行(Object的方法toS
2020-09-13 16:24:46
381
原创 Mybatis源码解析之DefaultSqlSession#getMapper
Mybatis源码解析之SqlSession上篇中我们探讨了SqlSession的构建流程,但是怎么去通过这个SqlSession去获取Mapper对象的?XXXMapper mapper = sqlSession.getMapper(XXXMapper.class);上一篇我们知道,这里返回是DefaultSqlSession我们看下getMapper()这里面做了啥 @Override public <T> T getMapper(Class<T> ty
2020-09-12 23:33:45
246
原创 Mybatis源码解析之SqlSession
Mybatis实战教程-入门必看Mybatis源码解析之SqlSessionFactory前面咱们一起探讨了SqlSessionFactory的创建流程,然后就是获取sqlSession,SqlSession sqlSession = build.openSession();下面咱们一起看下这行代码的执行流程这里地方调用实例是DefaultSqlSessionFactory我们接着往下看,这里主要流程是在openSessionFromDataSource()里面 @Override pub
2020-09-12 20:29:06
138
原创 Mybatis源码解析之SqlSessionFactory
Mybatis实战教程-入门必看上面我们已经探讨了mybatis的使用,但mybatis的调用流程咱们还是不知道,下面咱们花点时间来探讨下整个流程SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);第一步是获取SqlSessionFactory 对象,我们看下里面做了啥?创建XMLConfigBuilder对象new SqlSessionFactoryBuilder().build
2020-09-11 19:24:15
290
原创 Mybatis实战教程-入门必看
Mybatis单表操作动态sqlMybatis是一款优秀的持久层框架。其封装了JDBC操作, 免去了开发人员编写JDBC 代码以及设置参数和获取结果集的重复性工作。通过编写简单的 XML 或Java注解即可映射数据库CRUD操作。下面咱们就开撸吧Maven依赖如下 <dependencies> <!--mybatis版本--> <dependency> <groupId>org.mybatis
2020-09-04 02:23:37
142
原创 Spring源码解读之DispatcherServlet处理请求流程
这里主要讲下java原生的servlet和Spring下DispatcherServlet对http请求的处理流程做一个梳理!原生Servlet我们先看下Servlet的实现关系图解DispatcherServlet
2020-08-31 23:13:54
287
原创 设计模式-委派模式
委派模式委派模式委派模式属于行为模式,其作用就是负责任务的调度和分配,跟代理模式很像,可以看做是一种特殊情况下的静态代理的全权代理,但是代理模式注重过程,而委派模式注重结果委派模式角色如下:抽象任务角色 >> 分发任务委派者角色 >> 接受任务,分配任务给具体任务角色,自己本身是不做事情的具体任务角色 >> 普通员工,做事情的真是角色下面用项目经理给程序员排任务的例子抽象任务对象: 定义抽象任务/** * 抽象任务角色 */publ
2020-08-27 23:35:16
76
原创 设计模式-适配器模式
适配器模式类适配器模式对象适配器模式(重点)适配器模式属于结构型模式,而工厂模式则属于创建型模式适配器模式分为三种,类适配器模式、对象适配器模式、接口适配器模式;其别名为包装器,将某个类的接口转换成客户期望的另一个接口表示,主要目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协作工作,原理如下图所示角色划分Target目标抽象类:定义客户所需的接口,可以是抽象类或者接口,也可以是具体类(5V电压)Adapter适配器: 适配器可以调用另一个接口,作为一个转换器,对Adaptee和T
2020-08-23 22:32:48
446
原创 设计模式-代理模式
代理模式静态代理模式动态代理模式cglib动态代理代理是一种设计模式,提供了间接对目标对象进行访问的方式;即通过代理对象访问目标对象,这样做可以在目标对象实现的功能上,加上额外的功能补充,即扩展目标对象的功能这就符合了设计模式的开闭原则,即在对既有代码不改动的情况下进行功能的扩展。主要的角色真实角色: 被代理的对象代理角色: 代理真实角色,而且会做一些附加操作(中介,签合同,看房…)抽象角色: 一般会使用接口或者抽象类类解决客户: 访问代理对象的角色静态代理模式静态代理: 代
2020-08-21 01:11:55
98
原创 设计模式-原型模式
原型模式原型模式原型模式原型模式 用于创建重复的对象,同时又能保证性能,用原型实例指定创建对象的种类,并通过拷贝这些原型,创建新的对象.属于创建型设计模式这种模式是实现了一个原型接口(Cloneable),该接口用于创建当前对象的克隆.当直接创建对象的代价比较大时,则采用这种模式。通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建,即 对象.clone()代码如下版本1/** * 步骤: * 1. 实现 Cloneable接口
2020-08-18 21:57:32
98
原创 设计模式之-工厂模式
工厂模式简单工厂模式工厂方法合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入简单工厂模式简单工厂模式属于创建型模式,定义一个创建对象的类,由这个类来封装实例化对象的代码,在软件开发中,当我们会用到大量的创建某种、某类或者某批对象时,就会使
2020-08-17 23:30:02
244
原创 使用hibernate插入数据到mysql中文乱码解决
1 hibernate.cfg.xml文件配置2 配置mysql的url时指定好字符集格式utf-8<property name="connection.url"><![CDATA[jdbc:mysql://192.168.174.145:3306/test?useUnicode=true&characterEncoding=utf8]]></prop...
2019-06-02 22:37:34
151
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人