- 博客(35)
- 资源 (1)
- 收藏
- 关注
原创 Ibatis使用
部分参考:https://blog.youkuaiyun.com/shixiaoguo90/article/details/49949445Apache iBatis是当前IT项目中使用很广泛的一个半自动ORM框架,区别于Hibernate之类的全自动框架,iBatis对数据库的操作拥有更加灵活的控制,对于那些经常需要调用本地数据库函数自定义SQL语句,或是喜欢自己优化SQL执行效率的开发者来说,iBatis是一个非常不错的选择。而得到广泛应用的开源企业架构SpringFramework,也很好的将其进行了集成,使
2021-01-25 18:13:18
1053
原创 Paxos算法和Raft算法
Table of Contents一、 Paxos算法Paxos算法达成共识过程:准备阶段:接受阶段:二、Raft算法选举领导者的过程本文是参考腾讯课堂fox老师的课程而写的笔记一、 Paxos算法Paxos算法是莱斯利·兰伯特(英语:Leslie Lamport,LaTeX中的“La”)于1990年提出的一种基于消息传递且具有高度容错特性的一致性算法。用于解决在多个节点间确定一个值。例如这样的场景:节点A、B、C是如何就V的值达成共识的。Pa..
2020-09-30 15:31:10
6290
3
原创 Eureka和Zookeeper的比较
前提:1、为什么将两者进行比较两者都可以作为服务注册中心使用2、两者主要区别:Zookeeper保证CP当向注册中心查询服务列表时,我们可以容忍注册中心返回的是几分钟以前的注册信息,但不能接受服务直接down掉不可用。也就是说,服务注册功能对可用性的要求要高于一致性。但是zk会出现这样一种情况,当master节点因为网络故障与其他节点失去联系时,剩余节点会重新进行leader选举。问题在于,选举leader的时间太长,30 ~ 120s, 且选举期间整个zk集...
2020-09-29 16:10:00
558
原创 网络编程
说到网络编程,能想到的都有哪些呢?网络编程和socket编程、ServerSocket、InetAddress、 URlConnection、RestTemplate、 HttpClient、套接字、shutdown、TCP、 UDP、OSI网络七层模型 ........但是这些之间都有什么样的关系呢,究竟哪个对应底层,哪个对应实现呢?网络编程是否也有不同的实现方式呢,以及对应的应用场景分别是什么呢?一、网络基础知识1、网络分类计算机网络种类按照不同的划分标准有多种。规模大小和.
2020-09-29 16:08:38
553
原创 mac电脑时间设置
记录一个拿到新的mac电脑后时间设置的遇到的问题问题:电脑时间不对,即使我已经自动选择了自动定位区域。后来被迫自动设置了时间,但是发现电脑中的通讯软件的时间又不对,通讯软件的时间应该是对应的系统自动的时间,而不知我手动设置的时间。所以这个问题必须解决。方式:修改mac电脑时间需要修改的地方:1、系统偏好设置 -> 语言与地区2、...
2020-07-27 13:30:17
1421
原创 synchronized与volatile
一、volatile首先想到使用volatile变量的场景,就是面试的时候写的单例,先上面试官想要的单例的代码,至于为什么这么写,就不多说了。 publicclassSingleton{ privatevolatilestaticSingleton uniqueInstance; privateSingleton(){} publicstaticSingleton getInstance(){ ...
2020-07-17 10:35:48
254
原创 Ribbon源码分析
1、@LoadBalanced /** * 给RestTemplate做标记,以使用负载均衡的客户端来配置它 * Annotation to mark a RestTemplate bean to be configured to use a LoadBalancerClient * @author Spencer Gibb */ @Target({ ElementType.FIELD, ElementType.PARAMETER, ElementT...
2020-07-17 10:33:05
201
原创 spring cloud ribbon
遇到问题:在使用Spring Cloud Eureka的时候就已经接触到了ribbon, 在RestTemplate的bean上加@LoadBalanced注解,彦江哥说加了它就实现了负载均衡,非常不理解这是为什么。所以Spring Cloud Ribbon到底是什么作用呢?ribbon和这个注解之间有是什么关系呢?1、Spring Cloud Ribbon是什么?Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现..
2020-07-17 10:29:55
274
原创 eureka源码分析
源码分析:先从注解开始入手1、org.springframework.cloud.client.discovery.EnableDiscoveryClient@EnableDiscoveryClient注解 (将应用注册到Eureka Server或从Eureka Server中获取服务列表)作用:用来开启DiscoveryClient的实例/** * Annotation to enable a DiscoveryClient implementation. * @author
2020-07-17 10:26:13
633
原创 Spring Cloud Eureka
一、Eureka简介:从现在微服务框架的使用来看,毫无疑问,Spring Cloud 是目前微服务架构领域的翘楚。那么,对于他,你了解多少呢?实际上,Spring Cloud 是一个全家桶式的技术栈,基于Spring Boot进行开发,它包含了很多组件。其中有5个最核心的组件 Eureka、Ribbon、Feign、Hystrix、Zuul。本文主讲Eureka。Eureka是Netflix开源的服务发现组件,Spring Cloud将其集成在Spring Cloud Netfli...
2020-07-17 10:24:45
479
原创 Redis
一、Redis的下载安装、Redis集群搭建参考我的有道云笔记二、Redis的基础内容学习常用命令http://doc.redisfans.com/index.html入门学习https://www.yiibai.com/redis/redis_environment.html高阶学习:(非常详细,是深入了解Redis的不二之选)http://redisdoc.com/topic/persistence.html三、Redis是什么官方简介解释到:Redi..
2020-07-17 10:18:34
160
原创 MockMvc探索—SpringMVC单元测试
一、简介为什么使用MockMvc ?只对service层进行测试,测试面就覆盖不到controller层,无法做到模拟前端的请求,也无法使用到一些例如@NotNull这样的参数校验。 如果借助其他工具如postman发送http请问,需要先启动项目再发送请求,要分两部进行,步骤繁琐;不方面以后其他人员重复运行测试用例;结果校验需要人工比对数据。MockMvc是什么? MockMvc实现了对Http请求的模拟,能够直接使用网络的形式,转换到Controller的调用,这样可以使得测试...
2020-07-17 10:14:22
4649
原创 NIO2
NIO2是在NIO的基础上进行的扩展。Java 7 对原有的NIO进行了改进:提供了全面的文件IO和文件系统访问支持:表现为Java 7新增的java.nio.file包及其各个子包 基于异步Channel的IO : 在java.nio.channels包下新增了多个以Asynchronous开头的Channel接口和类Java 8进一步增强了Files工具类的用法,允许开发者使用Stream API来操作文件目录和文件内容。一、重要类NIO2或者说NIO中的核心类:Path、 Pat.
2020-07-17 10:12:07
387
原创 NIO
一、NIO概述NIO与传统IO的目的都是一样,都是用于进行输入/输出,但是NIO采用了不同的方式来处理输入/输出。NIO采用内存映射文件的方式处理输入输出,NIO将文件或文件中的一段区域映射到内存中,这样就可以像访问内存一样访问文件了(模拟了操作系统的虚拟内存的概念).NIO中两个核心的对象:Channel(通道) 和 Buffer(缓冲)Channel: NIO中所有的对象都要通过通道传输,对应传统的InputStream、OutputStream等,最大的区别在于它提供了一个ma..
2020-07-17 10:11:02
190
原创 IO
一、IO说明按照POSIX的标准划分IO, 可以把IO分成两类:同步IO和异步IO按照线程对IO业务的处理是否被阻塞的角度,可以将IO分成两类:阻塞IO和非阻塞IO(POSIX的标准 :UNIX系统的一个设计标准)对于IO的操作步骤可以分成两步:1、程序发出IO请求2、完成实际的IO操作阻塞IO和非阻塞IO 的划分标准是针对第一步来划分的(程序发出IO请求),如果发出IO请求会阻塞线程,就是阻塞IO;如果发出的IO请求没有阻塞IO,就是非阻塞IO举例:传统...
2020-07-17 10:06:46
166
1
原创 Transactional
需要明确一点:Spring 使用 BeanPostProcessor 来处理 Bean 中的标注重要参考链接:https://www.ibm.com/developerworks/cn/education/opensource/os-cn-spring-trans/index.html项目中常遇到的疑问点: 一、事务的基本概念: 1、事务的概念(事物是用来做什么的) 2、事务的四个特性(ACID) 3、事务的四种隔离级别 4、事务中会出现的问题 (不同隔离级别面对的问题)..
2020-06-22 18:45:06
2131
原创 @Scheduled定时
一、项目中常遇到的坑1、定时任务没有按照设置的定时时间执行2、某个定时任务执行出现执行时间过长的情况时会阻塞其他定时任务的执行3、定时任务中抛出了异常我的疑问,或者说我希望看到的点:源码中如何实现定时任务的单线程的?源码中如何实现一个定时任务在不同的时间点执行的?是通过队列吗?队列如何实现的呢?二、线程池相关内容2.1 、线程池的创建:2.1.1 Java通过Executors提供四种线程池分别为:1)(ThreadPoolExecutor)Execu...
2020-06-22 18:16:38
1808
原创 分布式事务
参考链接:https://juejin.im/post/5b5a0bf9f265da0f6523913bhttps://www.cnblogs.com/savorboard/p/distributed-system-transaction-consistency.htmlhttps://draveness.me/distributed-transaction-principle/1、为什么会出现分布式事务?说到事务,首先想到的是他的4个特性ACID。原有单机中相对可靠的方法调用以及进
2020-06-22 17:50:23
340
原创 分布式锁
之前分析了分布式事务及其保证方式,在分布式家族中,自然而然的又想到分布式锁。首先思考几个问题:0、单机环境下的锁有哪些实现方式?单机环境下的锁为何解决不了分布式环境锁相关问题1、为什么需要分布式锁?2、分布式事务和分布式锁有关系吗?有什么关系?3、分布式锁的实现方式有哪些?(哪些方式可以实现分布式锁?)主要参考文章:《基于Redis分布式锁的实现》https://juejin.im/post/5cc165816fb9a03202221dd5#heading-10一..
2020-06-22 17:31:02
231
1
原创 OO六大设计原则
目录一、单一职责原则(Single Responsibility Principle, 简称SRP)二、开放封闭原则(Open-Close Principle, OCP)三、里氏替换原则(Liskov Substitution Principle, LSP)四、依赖倒置原则(Dependence Inversion Principle, DIP)五、接口隔离原则(Interface Segregation Principle, ISP)六、迪米特法则(Law of Demeter L
2020-06-22 17:19:17
611
原创 MVCC
一、sql基本命令:存储引擎:1、查看系统支持的存储引擎show engines;2、查看表使用的存储引擎a、show table status from db_name where name='table_name';如果已经进入到一个数据库,可以使用mysql> show table status like 'enterprise_stock_code' \Gb、show create table l_ability_base(有人说用第二种方法不准确(http:.
2020-06-22 17:05:12
545
原创 NIO2
目录一、重要类1、Path类2、Files工具类、Paths工具类3、FileVisitor遍历目录和文件4、使用WatchService监控文件变化5、访问文件属性的一些高级方式NIO2是在NIO的基础上进行的扩展。Java 7 对原有的NIO进行了改进:提供了全面的文件IO和文件系统访问支持:表现为Java 7新增的java.nio.file包及其各个子包 基于异步Channel的IO : 在java.nio.channels包下新增了多个以Asynchronous开头
2020-06-22 17:01:02
257
原创 NIO
目录一、NIO概述二、重要类介绍2.1 Buffer2.1.1 ByteBuffer (抽象类)2.2 Channel2.2.1、Channel与Buffer的交互2.2.2、Channel的分类2.2.3、Channel主要方法2.3 字符集和Charset2.3.1 基本定义:2.3.2 Charset使用三、文件锁四、NIO总结一、NIO概述NIO与传统IO的目的都是一样,都是用于进行输入/输出,但是NIO采用了不同的方式来处理输入/输出。
2020-06-22 16:47:19
131
原创 传统IO(阻塞IO)
一、IO说明按照POSIX的标准划分IO, 可以把IO分成两类:同步IO和异步IO按照线程对IO业务的处理是否被阻塞的角度,可以将IO分成两类:阻塞IO和非阻塞IO(POSIX的标准 :UNIX系统的一个设计标准)对于IO的操作步骤可以分成两步:1、程序发出IO请求2、完成实际的IO操作阻塞IO和非阻塞IO 的划分标准是针对第一步来划分的(程序发出IO请求),如果发出IO请求会阻塞线程,就是阻塞IO;如果发出的IO请求没有阻塞IO,就是非阻塞IO ...
2020-06-22 15:45:06
847
原创 Zookeeper和Eureka的比较
前提:已经对Zookeeper和Eureka的架构特点有所了解1、为什么将两者进行比较:两者都可以作为服务注册中心使用,即都可以用于服务发现 (服务治理)2、两者主要区别:Zookeeper保证CP当向注册中心查询服务列表时,我们可以容忍注册中心返回的是几分钟以前的注册信息,但不能接受服务直接down掉不可用。也就是说,服务注册功能对可用性的要求要高于一致性。但是zk会出现这样一种情况,当master节点因为网络故障与其他节点失去联系时,剩余节点会重新进行leade...
2020-05-22 16:16:38
577
原创 Git rebase命令
主要参考文章:http://jartto.wang/2018/12/11/git-rebase/https://juejin.im/entry/5ae9706d51882567327809d0一、Git rebase的主要应用场景场景一:合并多次提交记录场景二:分支合并场景三:对一个分支做『变基』操作二、Git rebase解决的问题1、代码修改时,有时候一个功...
2020-04-24 20:18:57
7871
2
原创 PDFbox基本操作
详细内容见:https://iowiki.com/pdfbox/pdfbox_index.htmlPDFBox - 概述:每个PDF文件都包含固定布局平面文档的描述,包括现实和它所包含的文本、字体、图形和其他信息。有几个库可用于程序创建和操作PDF文档,例如: Adobe PDF Library- 该库提供C ++,.NET和Java等语言的API,使用它可以编辑,查看打印和从...
2020-04-08 19:55:24
17485
3
转载 SpringBoot下的文件上传进度实现
主要基于文章:https://blog.youkuaiyun.com/qq_27607579/article/details/77914958本功能基于commons fileUpload 组件实现首先,不能在程序中直接使用 fileUpload.parseRequest(request)的方式来获取 request 请求中的 multipartFile 文件对象,原因是因为在 spring 默认的文...
2020-04-07 22:40:24
3328
4
原创 Java代码执行liunx命令( Java虚拟机执行其他进程)
import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;public class ExecTest { public static void main(String[] args) { ...
2020-03-26 14:56:53
251
原创 Liunx nohup命令
完全拷贝的这个文章:https://www.cnblogs.com/zq-inlook/p/3577003.html(太优秀了,解释了我所有的疑问)nohup命令及其输出文件 ...
2020-03-18 20:18:28
190
原创 git reset 3种方式
git reset命令有3种方式:1、git reset --mixed:此为默认方式,等同于不带任何参数的git reset。2、git reset --soft:回退到某个版本,只回退了commit的信息,如果还要提交,直接commit即可(修改的内容变成未add的状态),索引(暂存区)和工作目录的内容是不变的,在三个命令中对现有版本库状态改动最小。3、git reset ...
2020-03-18 15:05:03
48839
3
原创 Spring Boot入门
一、Spring Boot是什么?1) Spring Boot是服务器吗?No误解原因是:Spring Boot可以把Web应用 程序变成可执行的JAR文件,不用部署到传统的服务器就能在命令行里运行。解释:Spring Boot在应用程序里嵌入了一个Servlet容器(Tomcat、Jetty、或者Undertow),以此实现这一功能,但这是内嵌的Servlet容器提供的功能,而...
2020-03-17 22:17:47
131
原创 @ConfigurationProperties与@Configuration
一、@ConfigurationPropertiespackage org.springframework.boot.context.propertiess/** * Annotation for externalized configuration. Add this to a class definition or a * {@code @Bean} method in a {@...
2020-03-16 22:11:07
459
原创 Junit单元测试
操作环境是idea1、创建一个maven项目下面的选项随便选, 最后直接finish得到的项目结构就是最简单的这种:会发现,这种方式创建的是没有xml文件的,后面如果要用到xml文件,需要自己创建。2、创建相应的类和service3、创建junit测试类结构如下:创建有不同的方式,基础版:手动创建和测试类相同包名的包,并手动创建相应的类,...
2020-03-05 13:50:49
303
原创 检查异常与非检查异常
import java.io.IOException;/** * 对于检查异常,必须处理,否则代码标红都编译不了。处理方式:继续抛出,用try..catch捕获。 * 对于非检查异常,可以编译通过,这是因为编译器认为可以人为避免,但是运行时程序中抛出错误的话,代码运行时就报错了,处理方式包括:捕获、继续抛出、不处理 * * 检查异常(checked exception)特点: * ...
2020-03-04 11:02:36
200
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人