自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(108)
  • 资源 (2)
  • 问答 (2)
  • 收藏
  • 关注

原创 狂人日记读书札记

狂人日记:揭示了封建礼教的“吃人”本质,表现作者对以封建礼教为主体内涵的中国封建文化的反抗,也表现了作者审核的忏悔意识。廿(nian 4声) 孔乙己:封建文化和封建教育思想对孔乙己的毒害。羼(chan 4声 掺杂) 药:封建统治给人民造成的麻木和愚昧。蹩(bie 2声)赸(shan 4声 走开) 故乡:我想:希望本是无所谓有,无所谓无的。这正如地上的路;其实地上本没有路,走的人多了,也便成了路。猹(cha 2声)睢(sui 1声) 阿Q正传:阿Q是辛亥革命前后中国的典型代表之一,鲁迅对阿Q形象精妙地

2024-02-18 22:11:18 332

原创 傅雷家书读书札记

夫妇之间只有彻底谅解,全心包容,经常忍让,并且感情真挚不渝,对生活有一致的看法,有共同的崇高理想与信念,才能在人生的旅途上平安度过大大小小的风波,成为琴瑟和谐的终身伴侣。在众生万物前面不自居为"万物之灵",方能祛除我们的狂妄,打破纸醉金迷的俗梦,养成淡泊洒脱的胸怀,同时扩大我们的同情心。最可厌的莫如自以为是,自作解人。我们一辈子追求的,有史以来多少世代的人的追求,无非是perfection,但永远是追求不到的,因为人有理想、幻想,用无止境,所以perfection像水中月、镜中花、始终可望而不可即。

2024-02-18 21:03:27 300

原创 BootLoader引导启动程序

BootLoader引导启动程序Boot引导程序BIOS引导原理写一个Boot引导程序创建虚拟机软盘镜像在Bochs上运行Boot程序BootLoader引导启动程序原本由Boot引导程序和Loader引导加载程序两部分构成。Boot引导程序主要负责开机启动和加载Loader程序;Loader引导加载程序则用于完成配置和硬件工作环境、引导加载内核等任务。Boot引导程序计算机上电后,首先经过BIOS上电自检,这个过程会检测硬件设备是否有问题。如果检测没有问题的话,将根据BIOS的启动项配置选择引导设备

2022-02-06 22:56:11 1887

原创 1.环境搭建

环境搭建操作系统安装virtual box虚拟机安装centos 7操作系统我是在MAC OS上来搭建实验环境的。安装virtual box虚拟机由于之前自己搭建k8s集群时已经在机器上安装了virtual box虚拟机,网上关于如何在mac上安装vitrual box的教程也很多,在此就不赘述了。安装centos 7之前安装virtual box时,已经在虚拟机上安装了centos 7操作系统,网上关于安装centos 7的教程也比较多,故在此也不再赘述。...

2021-12-04 12:06:21 1023

原创 队列

队列队列的概念循环队列链式队列电路布线优先级队列双端队列队列的概念队列是一种限定存取位置的线性表。它只允许在表的一端插入,在另一端删除。循环队列循环队列有两个指针,一个front和一个rear指针,当front=rear时队列为空,当(rear + 1) % maxSize = front时,队列满。链式队列队列的队头指针指向单链表的第一个结点,队尾指针指向单链表的最后一个结点。用单链表表示的链式队列特别适合于数据元素变动比较大的情形,而且不存在队列满而产生溢出的情况。电路布线public

2020-05-31 13:45:27 172

原创

栈栈的定义栈的应用栈与递归用回溯法求解迷宫问题栈的定义栈可以定义为只允许在表的末端进行插入和删除的线性表。允许插入的一端称为栈顶,而不允许插入和删除的一端叫做栈底。栈有两种典型的存储表示,基于数组的存储表示和基于链表的存储表示。基于数组的存储表示实现的栈称为顺序栈,基于链表的存储表示实现的栈称为链式栈。栈的应用括号匹配public void printMatchPairs(String expression) { Stack<Integer> stack = new

2020-05-24 15:59:01 178

原创 IP选路

IP选路选路原理ICMP主机与网络不可达差错转发与不转发ICMP重定向差错ICMP路由器发现报文选路原理IP搜索路由表的几个步骤(1) 搜索匹配的主机地址(2) 搜索匹配的网络地址(3) 搜索默认表项路由表(1) 对于一个给定的路由器,可以打印出五中不同的标志:U 该路由可以使用。G 该路由是一个网关。如果没有设置该标志,说明目的地是直接相连的。H 该路由是到一个主机,也就是说,目的地是一个完整的主机地址。如果没有设置该标志,说明该路由是到一个网络,而目的地址是一个网络地址:一个网络号

2020-05-20 22:18:31 164

原创 Internet控制报文协议

Internet控制报文协议什么是ICMP(Internet控制报文协议)ICMP报文的类型ICMP端口不可达报文什么是ICMP(Internet控制报文协议)ICMP是IP层的一个组成部分,它传递差错报文以及其他需要注意的信息。ICMP是在IP数据报内部被传输的。ICMP报文的类型ICMP报文的类型如下表,分两种类型,查询报文和差错报文。ICMP端口不可达报文如果收到一份UDP数据报而目的端口与某个正在适用的进程不相符,那么UDP返回一个ICMP不可达报文。...

2020-05-17 15:14:40 612

原创

堆什么是堆最小堆的实现什么是堆堆是有一种特殊的二叉树,堆又分为两种,最小堆和最大堆。堆的官方定义如下:如果有一个关键码的集合K={k0,k1,k2,k3…,k(n-1)},把它的所有元素按照完全二叉树的顺序存储方式存放在一个一维数组中,并且满足ki<=k(2i+1)且ki<=k(2i+2)(或者ki>=k(2i+1)且ki>=k(2i+2))i=0,1,…,(n-2)/2,则称这个集合为最小堆或最大堆。通俗一点来说,就是一个完全二叉树的任意一个结点如果满足父结点比子女结点小则为

2020-05-17 13:52:36 114

原创 二叉树

二叉树二叉树抽象数据结构定义以广义表的形式创建二叉树二叉树的先序遍历二叉树抽象数据结构定义public class BinaryTreeNode { private String value; private BinaryTreeNode leftChild; private BinaryTreeNode rightChild; public BinaryTr...

2020-04-27 09:00:22 102

原创 线索二叉树

线索二叉树什么是线索二叉树线索二叉树的实现什么是线索二叉树一般约定,利用空的leftChild域存放结点的前驱结点指针,利用空的rightChild域存放结点的后继结点指针。这一类指示前驱与后继的指针叫做"线索",加上了线索的二叉树叫做线索二叉树。和二叉树相比较而言,线索二叉树多了两个int类型的域,一个是ltag,用来表示leftChild是左孩子还是前驱结点。一个是rtag,用来表示...

2020-04-25 15:06:37 249

原创 ARP地址解析协议和RARP逆地址解析协议

ARP地址解析协议什么是ARPARP协议的报文格式要点总结什么是ARPARP是地址解析协议,它提供了32位IP地址到物理链路层的物理地址的映射关系。拿最常见的以太网来说,ARP将32位IP地址映射位48位的MAC物理地址。下面我们来看看ARP协议在我们的一次请求中所起的作用。1.应用程序FTP客户端调用函数getHostByName将主机名转换为32bit的IP地址。这个过程由DNS完成...

2020-04-25 11:24:42 361

原创 排序算法

排序算法基本的排序算法示例中都会用到的swap方法冒泡排序基本的排序算法示例中都会用到的swap方法 private void swap(int[] nums, int i, int j) { int temp = nums[i]; nums[i] = nums[j]; nums[j] = temp; }冒泡排序简单的冒泡排序...

2020-04-21 08:54:02 115

原创 Mapper方法调用过程

文章目录Mapper方法调用过程Mapper方法调用时序MapperProxy拦截目标方法执行MapperMethod的execute方法SqlCommandMethodSignature Mapepr方法签名ParamNameResolver解析Mapper方法参数Mapper方法调用过程Mapper方法调用时序@Test public void testMybatis() thro...

2019-12-10 21:44:17 1067

原创 MappedStatement注册过程

文章目录MapperStatement注册过程MapperStatement注册时序XMLConfigBuilder的mapperElement方法XMLMapperBuilder的parse方法解析cacheRef标签解析cache标签解析parameterMap标签解析resultMap标签解析sql片段解析select等sql语句MapperStatement注册过程MapperStat...

2019-12-10 21:41:45 524

原创 Mapper接口的注册过程

文章目录Mapper接口的注册过程Mapper接口的注册时序SqlSession的getMapper方法MapperRegistry的getMapper方法MapperProxyFactoryMapperProxyMapper接口的注册过程Mapper接口的注册时序CachedAuthorMapper cachedAuthorMapper = sqlSession.getMapper(Ca...

2019-12-09 22:02:00 308

原创 Mybatis初始化流程源码解析

Mybatis初始化流程源码解析代码中如何使用Mybatis整个流程的执行时序图详细源码解析资源文件的读取实例化SqlSessionFactoryBuilder对象SqlSessionFactoryBuilder.build方法XMLConfigBuilder的parse方法解析properties节点解析settings节点加载CustomVfs加载日志配置解析typeAliases节点下的配置...

2019-12-02 07:54:08 232

原创 redis集群分片存储

文章目录redis集群分片存储为什么要分片存储官方集群方案搭建集群集群关心的问题Java客户端代码非官方集群方案redis集群分片存储为什么要分片存储假设公司用户有3千万,用户基本信息缓存到redis中,需要内存10G,如何设计redis的缓存架构?3千万用户,各种业务场景对用户信息的访问量很大,单台redis实例的读写瓶颈凸显。单redis实例管理10G内存,必然影响处理效率。re...

2019-07-19 00:32:52 472

原创 Redis内存管理

文章目录Redis内存管理内存分配内存压缩内存压缩过期数据的处理策略数据恢复阶段过期数据的处理策略Redis内存回收策略LRU算法LFU算法Redis内存管理内存分配不同数据类型的大小限制。Strings类型:一个String类型的value最大可以存储512M。Lists类型:list的元素个数最多为2^32 - 1个,也就是4294967295个。Sets类型:元素个数最多为2...

2019-07-10 00:04:20 183

原创 Redis持久化机制

文章目录Redis持久化机制一、持久化的方式二、RDB方式三、AOF持久化方式四、演示Redis持久化机制一、持久化的方式二、RDB方式三、AOF持久化方式四、演示Redis持久化机制一、持久化的方式RDB持久化。RDB持久化方式能够在指定的时间间隔对你的数据进行快照存储。AOF(append only file)持久化。AOF持久化方式记录每次对服务器写的操作,当服务器重启的...

2019-07-09 22:30:35 107

原创 Redis常用命令和数据结构

Redis常用命令和数据结构Redis介绍Redis是一个开源的使用C语言编写,支持网络,可基于内存亦可以持久化的日志型,Key-Value数据库,并提供多种语言的API。本质是客户端-服务端应用软件程序。特点是使用简单,性能强悍,功能应用场景丰富。通用命令DEL key,该命令用于在key存在时删除key。DUMP key,序列化给定key,并返回被序列化的值。EXISTS...

2019-07-06 22:24:28 136

原创 Java本地缓存

文章目录Java内存缓存什么是缓存为什么要用缓存Java内存缓存Guava CacheJava内存缓存什么是缓存在计算中,缓存是一个高速数据存储层,其中存储了数据子集,且通常是短暂性存储,这样日后再次请求此数据时,速度要比访问数据的主存位置快。通过缓存,您可以高效地重用之前检索或计算的数据。为什么要用缓存提升应用程序的性能。降低数据库成本。减少后端负载。可预测的性能。消除数...

2019-07-06 22:19:25 1574

原创 Bean实例化前奏

Bean实例化前奏在从配置文件中载入Bean定义,并解析成相应的BeanDefinition,注册Bean的后置处理器并调用,初始化好国际资源,事件广播等组件,注册监听器后,接下来就要做非懒加载bean的实例化工作。这个是在refresh()方法中调用finishBeanFactoryInitialization(beanFactory)方法完成的。protected void finis...

2019-04-14 15:06:49 106

原创 Spring容器的启动

Spring容器的启动以AbstractApplicationContext为例,当启动容器的时候,会调用refresh方法。 @Override public void refresh() throws BeansException, IllegalStateException { synchronized (this.startupShutdownMonitor) { // 为...

2019-04-09 23:34:58 96

原创 Sprin容器的初始化

Spring的初始化Spring容器的初始化Spring容器的初始化在Tomcat容器启动时,会去加载web.xml配置文件。我们在配置文件中会有如下配置:<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-cla...

2019-03-31 15:26:53 103

原创 一个Spring微型Ioc容器的分析

前言:之前看过<<Spring技术内幕>>有关IOC容器的讲解,无奈Spring的容器实现挺复杂,也没看懂。前几天无意中在git hub上看到了一个模仿Spring的IOC容器实现:tiny-ioc,麻雀虽小可五脏俱全,实现了Spring IOC基本功能,对把握Spring容器的设计大有裨益。自己也跟着作者一步一步实现(github地址:https://github.com...

2019-03-24 14:29:11 107

原创 redis-集合

集合Redis的集合以无序的方式存储多个各不相同的元素。用户可以快速地向集合添加元素,或者从集合里面删除元素,也可以对多个集合进行集合运算操作,比如计算并集、交集和差集。一、元素操作1.添加元素SADD key element [element...]将一个或多个元素添加到给定的集合里面,已经存在于集合的元素会自动忽略,命令返回新添加到集合的元素的数量。命令复杂度为O(N)...

2018-12-25 21:48:22 144

原创 redis-列表

一个列表可以包含一个或以上数量的项,每个项按照它们被推入到列表的位置来排列。每个列表项所处的位置决定了这个项的索引值,索引以0为开始,从列表的左端到右端依次递增,位于列表最左端的项的索引为0,而位于列表最右端的项的索引为N-1,其中N为列表的长度。列表包含的项是可以出现重读,它们不必是唯一的。一、推入和弹出操作1.从列表的左端推入值LPUSH key value [value......

2018-12-05 21:11:18 149

原创 redis-散列

一个散列由多个域值对组成,散列的域和值都可以是文字、整数、浮点数或者二进制数据。同一个散列里面的每个域必须是独一无二、互不相同的,而域的值则没有这一要求,换句话说,不同域的值可以是重复的。通过命令,用户可以对散列执行设置域值对、获取域的值、检查域是否存在等操作,也可以让Redis返回散列包含的所有域、所有值或者所有域值对。一、基本操作1.关联域值对HSET key field va...

2018-11-30 20:44:45 199

原创 redis-字符串

字符串,Redis中最简单的数据结构,它既可以存储文字(比如"hello world"),又可以存储数字(比如整数10086和浮点数3.14),还可以存储二进制数据(比如 1001)。一、基本操作1.为字符串设置值SET key value将字符串键key的值设置为value,命令返回OK表示设置成功。如果字符串key已经存在,那么用新的值覆盖原来的旧值。复杂度为O(1)。...

2018-11-25 21:41:12 132

原创 redis-简介

1.诞生redis是antirez为解决LLOOGG.com网站的程序性能严重受治制于MySql这种依赖磁盘存储的数据库而开发的,基于内存的一款数据库软件。2.redis的特色(1)独特的键值对模型(2)内存存储,速度极快一般硬盘存储的数据库,需要根据一个内存中的索引,再从磁盘上读取文件速度慢;而redis的数据直接存储再内存中,访问速度快。(3)丰富的功能持久...

2018-11-11 17:37:18 90

原创 Java并发编程-线程池

1.线程池概述    什么是线程池?    为什么使用线程池即线程池的优势?    (1)降低资源消耗,通过重复利用已创建的线程降低线程创建和销毁造成的消耗。    (2)提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。    (3)提高线程的可管理性,线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控...

2018-09-07 15:48:56 126

原创 Java并发编程-CopyOnWriteArrayList原理

1.CopyOnWriteArrayList是一个ArrayList线程安全的变体,它的所有改变底层数组的方法如(add,set等)通过复制底层数组来实现。这原本很消耗性能,但当遍历操作远远多于修改操作时,可能会比其他方法更高效,当你不想同步遍历操作时这种实现可能会有用。你需要排除并发线程之间的冲突。快照形式的迭代方法在得迭代器创建时使用一个数组状态的引用。这个数组在迭代器的生命周期内绝不会改变,...

2018-08-21 15:51:47 157

原创 Java并发编程-ForkJoin框架

1.ForkJoin框架是一个为了发挥多核CPU优势,充分利用CPU资源的一个任务并行执行框架,它可以将一个大任务拆分成若干个子任务,然后再由子任务合并最终得到执行结果。2.示例代码public class Demo extends RecursiveTask&lt;Integer&gt; {    private int begin;    private int end; ...

2018-08-07 09:02:10 140

原创 Java虚拟机-常见的内存语义的分析

1.锁的释放与获取所建立的happens-before关系:public class Demo {    private int value;    public synchronized void a() {        value++;  //1    }     public synchronized void b() {        int a = value;  /...

2018-08-06 19:44:34 172

原创 Java虚拟机-指令重排序

1.什么是指令重排序 编译器和处理器为了代码的执行效率会对指令进行重新排序,我们称之为重排序。public class Demo {    private int a;    private int b;    private int c;    public void a() {        a = 1; //1        b = 2; //2        c ...

2018-08-06 19:14:55 561 1

原创 Java虚拟机-happens-before规则

1.happens-before规则       Happen-before是用来指定两个操作之间的执行顺序,提供跨线程的内存可见性。在Java内存模型中,如果一个操作执行的结果需要对另一个操作可见,那么这两个操作之间必然存在happen-before关系。Happen-before规则如下:程序顺序规则、监视锁规则、volatile变量规则、传递性、Start规则、Join规则。2.程序...

2018-08-06 19:06:33 180

原创 Java并发编程-Future提前完成任务

1.Jdk自带Future模式类图:       从类图中可以看出,RunnableFuture接口继承了Future和Runnable接口,而FutureTask类实现了RunnableFuture接口。所以FutureTask具有Future和Runnable的所有特性。Future还关联一个Callable的实例,来定义具体的计算过程,返回计算结果。       一个Futu...

2018-08-05 09:39:42 310

原创 Java虚拟机-方法调用

1.什么是方法调用方法调用并不等同于方法的执行,方法调用阶段的唯一任务就是确定被调用方法的版本。2.解析调用      在编译期间就能够确定调用方法的版本称为解析调用。什么样的方法能够在编译期间就确定版本呢?静态方法 ,构造方法, final修饰的方法都能够在编译期间就确定其版本。举个例子:public class AnalyseInvokeDemo {    public...

2018-07-30 19:16:13 332

原创 Java并发编程-同步工具类

1.CountDownLatch        一个同步器辅助类允许一个或多个线程等待直到其他线程的一系列操作结束。一个CountDownLatch初始化时需要给定一个计数值。await方法阻塞直到当前计数值由于countDown方法的调用减为0,在此之后,所有等待的线程被释放,并且随后await的调用立即返回。这是一次性的,计数值不能重置。如果你需要重置计数值,考虑使用CyclicBarri...

2018-07-29 11:21:39 394

android播放器

一款小巧精致的Android播放器,很适合初学者学习,非常不错。

2015-06-20

ssd5 main.cpp

ssd5实验源码,有需要的可以下下来看看啊,时用c++写的

2014-12-16

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

TA关注的人

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