摘要: 00 JDK常见数据结构 https://www.cnblogs.com/lizhuxin/p/10745199.html 01 java中IO、NIO https://www.cnblogs.com/lizhuxin/p/10745212.html 02 java多线程基础 https://www 阅读全文
posted @ 2019-04-21 15:45 java小工匠 阅读(683) 评论(0) 推荐(0) 编辑
摘要: 微服务很多核心理念其实在半个世纪前的一篇文章中就被阐述过了,而且这篇文章中的很多论点在软件开发飞速发展的这半个世纪中竟然一再被验证,这就是康威定律(Conway's Law)。 在康威的这篇文章中,最有名的一句话就是: Organizations which design systems are c 阅读全文
posted @ 2019-04-21 15:41 java小工匠 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 1软件架构概念 Architecture架构,每个人的理解都不同。 分为组成派和决策派。 组成派:软件系统的架构将系统描述为计算组件以及组件之间的交互(The architecture of a software system defines that system in term of compu 阅读全文
posted @ 2019-04-21 15:40 java小工匠 阅读(2386) 评论(0) 推荐(0) 编辑
摘要: 1 设计的六大原则 1.1开闭原则(Open Close Principle) 开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具 阅读全文
posted @ 2019-04-21 15:40 java小工匠 阅读(311) 评论(0) 推荐(0) 编辑
摘要: MySQL有四种类型的日志:Error Log、General Query Log、Binary Log 和 Slow Query Log。 1 Error Log 错误日志是最重要的日志之一,它记录了MariaDB/MySQL服务启动和停止正确和错误的信息,还记录了mysqld实例运行过程中发生的 阅读全文
posted @ 2019-04-21 15:31 java小工匠 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 1 MyISAM索引实现 MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址。如图: 这里设表一共有三列,假设我们以Col1为主键,则上图是一个MyISAM表的主索引(Primary key)示意。可以看出MyISAM的索引文件仅仅保存数据记录的地址。在MyISA 阅读全文
posted @ 2019-04-21 15:30 java小工匠 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 1 框架 架构图如下: 连接驱动:每当一个客户端连接MySQL服务器的时候,服务器都会执行认证。认证基于用户名,客户端主机和客户端用户密码。客户端连上MySQL服务器以后,服务器会检查客户端是否有权限发起特定的请求。 缓存:查询缓存保存了SELECT语句的完整结果集。在解析查询之前,MySQL服务器 阅读全文
posted @ 2019-04-21 15:29 java小工匠 阅读(167) 评论(0) 推荐(0) 编辑
摘要: Redis做缓存是最常见的应用场景。客户端请求在缓存层命中就直接返回,如果没命中就去查询数据库,再写入到redis,然后再返回到客户端。流程如下: 在这个过程中会有如下常见问题 1 穿透 穿透:频繁查询一个不存在的数据,由于缓存不命中,每次都要查询持久层。从而失去缓存的意义。 示例说明:比如数据库表 阅读全文
posted @ 2019-04-21 15:28 java小工匠 阅读(360) 评论(0) 推荐(0) 编辑
摘要: 1 概念 分布式锁:是进程级别的锁,用于控制多个进程对同一资源的访问。 实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁 可靠性要求: 互斥性。在任意时刻,只有一个客户端能持有锁。 不会发生死锁。即使有一个客户端在持有锁的期间崩溃而没有主动解锁,也 阅读全文
posted @ 2019-04-21 15:27 java小工匠 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 1 客户端与服务端交互过程 2 单线程模型 Redis客户端对服务端的每次调用都经历了发送命令,执行命令,返回结果三个过程。其中执行命令阶段,由于Redis是单线程来处理命令的,所有每一条到达服务端的命令不会立刻执行,所有的命令都会进入一个队列中,然后逐个被执行。并且多个客户端发送的命令的执行顺序是 阅读全文
posted @ 2019-04-21 15:26 java小工匠 阅读(333) 评论(0) 推荐(0) 编辑
摘要: Tomcat的默认配置,性能并不是最优的,我们可以通过优化tomcat以此来提高网站的并发能力。 1 Tomcat运行模式 tomcat的运行模式有3种: bio: 默认的模式,性能非常低下,没有经过任何优化处理和支持. nio: nio(new I/O),是Java SE 1.4及后续版本提供的一 阅读全文
posted @ 2019-04-21 15:25 java小工匠 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 1 Tomcat顶层架构 先上一张Tomcat的顶层结构图(图A),如下: Tomcat中最顶层的容器是Server,代表着整个服务器,从上图中可以看出,一个Server可以包含至少一个Service,用于具体提供服务。 Service主要包含两个部分:Connector和Container。从上图 阅读全文
posted @ 2019-04-21 15:23 java小工匠 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 1 TypeHandler使用 MyBatis会用类型处理器将获取的值以合适的方式转换成 Java 类型。Mybatis默认为我们实现了许多TypeHandler, 当我们没有配置指定TypeHandler时,Mybatis会根据参数或者返回结果的不同,默认为我们选择合适的TypeHandler处理 阅读全文
posted @ 2019-04-21 15:21 java小工匠 阅读(270) 评论(0) 推荐(0) 编辑
摘要: 1 mybatis简介 MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架,其主要就完成2件事情: (1)封装JDBC操作 (1)利用反射打通Java类与SQL语句之间的相互转换 MyBatis的主要设计目的就是让我们对执行SQL语句时对输入输出的数据管理更加方便,所以方便 阅读全文
posted @ 2019-04-21 15:19 java小工匠 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 1 spring加载流程 spring的加载如下图步骤: 2 ApplicationContext ApplicationContext 相关的大概继承结构: ClassPathXmlApplicationContext:从类路径下的一个或多个xml配置文件中加载上下文定义,把应用上下文定义文件作为 阅读全文
posted @ 2019-04-21 15:18 java小工匠 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 1 概念及功能 AOP(Aspect Orient Programming),作为面向对象编程的一种补充,广泛应用于处理一些具有横切性质的系统级服务,如事务管理、安全检查、缓存、对象池管理等。AOP 实现的关键就在于 AOP 框架自动创建的 AOP 代理,AOP 代理则可分为静态代理和动态代理两大类 阅读全文
posted @ 2019-04-21 15:18 java小工匠 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 1 JDK中异常类的关系 1 异常分类 Error(错误):是程序无法处理的错误,表示运行应用程序中较严重问题。大多数的错误与代码编写者执行的操作无关,而是表示代码运行时 JVM(Java 虚拟机)出现的问题。例如,Java虚拟机运行错误(Virtual MachineError),当 JVM 不再 阅读全文
posted @ 2019-04-21 15:15 java小工匠 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 1 并发编程的三个重要特性 并发编程有三个至关重要的特性,分别是原子性、有序性、可见性。 原子性:所谓原子性是指在一次的操作或者多次的操作中,要么所有的操作全部都得到了执行并且不会受到任何因素的干扰而中断,要么所有的操作都不执行。 可见性:可见性是指当一个线程对共享变量进行了修改,那么另外的线程可以 阅读全文
posted @ 2019-04-21 15:14 java小工匠 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 1 UncaughtExceptionHandler JDK中提供了未捕获异常的接口 public void setUncaughtExceptionHandler(Thread.UncaughtExceptionHandler eh) 设置该线程由于未捕获到异常而突然终止时调用的处理程序。 通过明 阅读全文
posted @ 2019-04-21 15:14 java小工匠 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 1 Condition Condition是在java 1.5中才出现的,它用来替代传统的Object的wait()、notify()实现线程间的协作,相比使用Object的wait()、notify(),使用Condition的await()、signal()这种方式实现线程间协作更加安全和高效。 阅读全文
posted @ 2019-04-21 15:12 java小工匠 阅读(181) 评论(0) 推荐(0) 编辑