自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

水木今山的博客

Coding the World

  • 博客(127)
  • 收藏
  • 关注

原创 Java实现多线程断点续传下载工具

http-breakpoint-downloader项目地址:http-breakpoint-downloader一个用 Java 实现的多线程且支持断点续传的HTTP下载工具,以下为核心逻辑的流程图:

2020-03-20 20:47:25 708

原创 实现一个简易的IoC容器

Simple IoC仿照 Spring 实现的一个简易版的 IoC 容器。项目地址:simple-iocFeatures支持根据指定的路径从文件系统中获取资源支持XSD模式的XML验证支持<property/>标签以及value与ref属性(即字符串与引用类型的属性注入)支持单例与原型Bean,并通过三级缓存解决了单例Bean的循环依赖问题Blog资源加载注册...

2020-03-20 20:44:12 324

原创 基于Celery的注册接口的性能测试

celery-example项目地址:celery-example该项目包含了关于 Celery 的三个 Demo,其中 notify_friends_exp 和 favorite_book_exp 参考文章 利用 Celery 构建 Web 服务的后台任务调度模块,而 register_module 包含了一个 Web 的注册案例,对比了传统同步的注册与使用Celery任务调度下注册的性能...

2019-04-29 17:45:36 540

原创 MySQL查询性能优化

文章目录优化数据访问减少请求的数据量减少服务器端扫描的行数重构查询方式切分查询分解关联查询查询执行优化 Limit 分页延迟关联书签参考资料优化数据访问减少请求的数据量只返回必要的行:使用LIMIT语句来限制返回的数据。只返回必要的列:最好不要使用SELECT *语句。缓存重复查询的数据。减少服务器端扫描的行数最有效的方式是使用索引来覆盖查询。重构查询方式切分查询一个大查...

2019-01-26 16:44:51 234 1

原创 LeeCode#172: Factorial Trailing Zeroes

DescriptionGiven an integer n, return the number of trailing zeroes in n!.ExampleExample 1:Input: 3Output: 0Explanation: 3! = 6, no trailing zero.Example 2:Input: 5Output: 1Explanation: 5!...

2019-01-24 22:21:48 169

原创 LeetCode#168: Excel Sheet Column Title

DescriptionGiven a positive integer, return its corresponding column title as appear in an Excel sheet.For example: 1 -&gt; A 2 -&gt; B 3 -&gt; C ... 26 -&gt; Z 27 -&gt; AA ...

2019-01-24 22:05:15 158

原创 MySQL索引类型与优化

文章目录索引的优点索引的类型B-Tree索引哈希索引全文索引空间数据索引索引优化独立的列多列索引索引列的顺序前缀索引聚簇索引覆盖索引参考资料索引的优点索引大大减少了服务器需要扫描的数据量索引可以帮助服务器避免排序、分组和临时表(临时表主要是在排序和分组过程中创建,因为不需要排序和分组,也就不需要创建临时表)索引可以将随机I/O变为顺序I/O(B-Tree索引是有序的,会将相邻的数据都存...

2019-01-23 20:44:53 256

原创 LeetCode#530: Minimum Absolute Difference in BST

DescriptionGiven a binary search tree with non-negative values, find the minimum absolute difference between values of any two nodes.ExampleInput: 1 \ 3 / 2Output:1Explanat...

2019-01-23 11:52:54 119

原创 MySQL常用数据类型

整型TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT分别使用1,2,3,4,8字节的存储空间。可以使用UNSIGNED属性表示不允许负值以提高正数的上限,但有符号和无符号类型的存储空间和性能依旧一样。MySQL可以为整数类型指定宽度,如INT(11),但它不会限制值的合法范围,只是规定了交互工具显示字符的个数。浮点数FLOAT和DOUBLE为浮点类型(浮...

2019-01-21 21:55:52 325

原创 行为型:观察者模式及相关应用

文章目录观察者模式(Observer)优缺点应用场景参考资料观察者模式(Observer)定义了对象之间的一对多依赖,让多个观察者对象同时监听某一个主题对象,当主题对象发生变化时,它的所有依赖者(观察者)都会收到通知并更新。优缺点优点:观察者和被观察者之间建立一个抽象的耦合;支持广播通信。缺点:观察者之间有过多的细节依赖、提高时间消耗及程序复杂度。应用场景每个网课有一名老师,而...

2019-01-21 18:26:46 159

原创 ATR-CKN算法的研究与实现

前言最近在学校做了无线传感器网络(WSN)睡眠调度算法方面的一些研究,本篇文章主要对其中的CKN、EC-CKN算法的学习做个总结,并给出基于这两种算法而改进后的ATR-CKN算法的核心实现以及在Nettopo上的运行结果。CKN与EC-CKN算法K-邻居节点连通算法(CKN)是一个有效的分布式睡眠/工作时序安排算法。该算法可以在有效的减少网络中处于工作状态的节点个数的同时保证整个网络处于连通...

2019-01-20 21:50:37 763

原创 LeetCode#543: Diameter of Binary Tree

DescriptionGiven a binary tree, you need to compute the length of the diameter of the tree. The diameter of a binary tree is the length of the longest path between any two nodes in a tree. This path ...

2019-01-20 11:40:58 119

原创 数据库事务、锁与设计原理

文章目录事务ACID特性原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持久性(Durability)理解隔离级别未提交读(READ UNCOMMITTED)提交读(READ COMMITTED)可重复读(REPEATABLE READ)可串行化(SERIALIZABLE)总结锁悲观锁共享锁排他锁表锁行锁乐观锁版本号机制CAS算法两种锁的适用场景关系型数据库...

2019-01-19 20:37:33 547

原创 JVM内存模型

文章目录Java内存模型主内存与工作内存内存间的交互volatile关键字运行时数据区域程序计数器Java虚拟机栈本地方法栈Java堆方法区运行时常量池参考资料Java内存模型由于计算机上的内存模型涉及到物理的主内存、高速缓存和寄存器等。这些不同的计算机不同的操场系统可能会存在差异,Java虚拟机规范中试图定义一种Java内存模型,来屏蔽掉各种硬件和操作系统的内存访问差异,让Java程序在各...

2019-01-13 20:10:52 122

原创 JVM类加载机制

文章目录类的生命周期类加载过程加载验证准备解析初始化类加载器双亲委派模型具体过程优点自定义类加载器参考资料类的生命周期类加载过程类加载的过程包括了加载、验证、准备、解析、初始化五个阶段。在这五个阶段中,加载、验证、准备和初始化这四个阶段发生的顺序是确定的,而解析阶段则不一定,它在某些情况下可以在初始化阶段之后开始,这是为了支持Java语言的运行时绑定(也称为动态绑定或晚期绑定)。另外注...

2019-01-13 16:02:36 141

原创 JVM垃圾收集与内存分配

文章目录运行时数据区域程序计数器Java虚拟机栈本地方法栈Java堆方法区运行时常量池对象存活判断引用计数算法可达性分析算法finalize引用类型垃圾收集算法标记-清除算法复制算法标记-整理算法分代收集算法垃圾收集器Serial收集器ParNew收集器Parallel Scavenge收集器Serial Old收集器Parallel Old收集器CMS收集器G1收集器内存分配策略方法区的回收参考...

2018-12-11 22:23:59 309

原创 最短路径问题—Dijkstra算法及相关例题

最近在做算法题的时候总是遇到Dijkstra相关的题目,之前虽然学过图论的一些算法,但第一次做这类题时完全不知从何入手。看了一些博客,并且在PAT上折腾了几题后,发现一些常用的模板与套路,因此在这里进行一个总结。关于Dijkstra的理论知识可以参考这篇博客:最短路径问题-Dijkstra算法详解Dijkstra算法Dijkstra算法往往和dfs结合在一起考,因此这里给出一个求解基础Dijk...

2018-12-05 20:21:51 23800

原创 行为型:策略模式及相关应用

文章目录策略模式(Strategy)优缺点应用场景参考资料策略模式(Strategy)定义了算法家族,分别封装起来,让它们之间可以互相替代,此模式让算法的辩护权啊不会影响到使用算法的用户。适用场景:系统有很多类,而他们的区别仅仅在于他们的行为不同。一个系统需要动态地在几种算法中选择一种。优缺点优点:符合开闭原则;避免使用多重条件转移语句;提高算法的保密性和安全性。缺点:客户...

2018-12-01 15:15:16 138

原创 行为型:模板方法及相关应用

文章目录模板方法(Template Method)优缺点应用场景JDK中的应用Servlet中的应用参考资料模板方法(Template Method)定义了一个算法的骨架,并允许子类为一个或多个步骤提供实现。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法的某些步骤。适用场景:一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。各子类中公共的行为被提取出来并集中到...

2018-12-01 15:14:02 163 1

原创 LeetCode#110: Balanced Binary Tree

DescriptionGiven a binary tree, determine if it is height-balanced.For this problem, a height-balanced binary tree is defined as: a binary tree in which the depth of the two subtrees of every node n...

2018-11-27 11:58:26 150

原创 LeetCode: Symmetric Tree

DescriptionGiven a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).For example, this binary tree [1,2,2,3,4,4,3] is symmetric: 1 / \ 2 2 / \ / \3 ...

2018-11-23 15:17:39 103

原创 常用查找算法之散列表

文章目录前言散列函数碰撞处理基于拉链法的散列表基于线性探测法的散列表查找插入删除调整数组大小参考资料前言散列表类似于数组,可以把散列表的散列值看成数组的索引值。访问散列表和访问数组元素一样快速,它可以在常数时间内实现查找和插入操作。使用散列的查找算法分为两步:用散列函数将被查找的键转化为数组的一个索引;处理碰撞冲突。散列函数要为一个数据类型实现优秀的散列方法需要满足三个条件:一致性:...

2018-11-23 14:43:34 363

原创 LeetCode#108: Convert Sorted Array to Binary Search Tree

DescriptionGiven an array where elements are sorted in ascending order, convert it to a height balanced BST.For this problem, a height-balanced binary tree is defined as a binary tree in which the d...

2018-11-23 11:51:42 84

原创 树的前中后层序遍历(递归与非递归方式)

Description此题与429、589题型类似,因此放在一起总结。![](590. N-ary Tree Postorder Traversal)()对于上图要求求出前序遍历、后序遍历和层级遍历的结果。Example前序遍历结果:[1,3,5,6,2,4]后序遍历结果:[5,6,3,2,4,1]层级遍历结果:[ [1], [3,2,4], [5,6...

2018-11-22 11:58:25 268

原创 常用查找算法之B/B+树

文章目录前言B- 树查找插入删除B+ 树查找范围查找总结参考资料前言从算法逻辑上讲二叉查找树的查找和插入操作效率都已经很高,但是在实际应用中由于我们不能将整个索引表加载到内存,只能逐一加载每个磁盘页,这里的磁盘页就对应着索引树的节点。因此我们要将原本“瘦高”的树结构变得“矮胖”,从而减少磁盘IO的次数。B- 树B-树是一种多路平衡查找树,是对2-3树的一个扩展。一个m阶的B树(m的大小取...

2018-11-21 21:07:25 2053 1

原创 LeetCode#897: Increasing Order Search Tree

DescriptionGiven a tree, rearrange the tree in in-order so that the leftmost node in the tree is now the root of the tree, and every node has no left child and only 1 right child.ExampleExample 1:...

2018-11-21 16:55:15 143

原创 常用查找算法之红黑树

文章目录前言2-3查找树查找插入构造轨迹红黑树基本实现旋转颜色转换插入删除最小键删除查找复杂度分析参考资料前言二叉查找树对于大多数情况下的查找和插入操作在效率上来说是没有问题的,但是在最差的情况下会达到线性级别,其效率取决于插入顺序。平衡查找树的数据结构能够保证在最差的情况下也能是对数级别,要实现这一目标我们需要保证树在插入完成之后始终保持平衡状态。2-3查找树在学习红黑树之前要先了解2...

2018-11-20 23:23:55 644

原创 常用查找算法之二叉查找树

文章目录@[toc]定义基本实现查找插入有序性相关的方法及删除操作范围查找删除最小节点删除指定节点查找最小键排名复杂度分析参考资料定义一棵二叉查找树(又称二叉排序树、二叉搜索树)是一棵二叉树,其中每个节点都含有一个Comparable的键以及相关联的值且每个节点的键都大于其左子树中的任意节点的键而小于右子树的任意节点的键。二叉查找树有一个重要性质,就是它的中序遍历结果递增排序。基本实现...

2018-11-20 14:45:50 928

原创 常用查找算法之二分查找

文章目录前言二分查找查找数字第一次出现的位置查找数字最后一次出现的位置二分查找实现有序符号表复杂度分析参考资料前言符号表是一种存储键值对的数据结构,可以支持高效地插入、查找等操作,因此在这里使用一个有序符号表接口来定义这些操作,这个符号表将保持键的有序性。public interface OrderedST&lt;Key extends Comparable&lt;Key&gt;, Val...

2018-11-19 16:57:50 178

原创 结构型:享元模式及相关应用

文章目录享元(Flyweight)优缺点应用场景Integer中的应用参考资料享元(Flyweight)享元模式提供了减少对象数量从而改善应用所需的对象结构的方式。适用场景:常常应用于系统底层的开发,以便解决系统的性能问题。系统有大量相似对象、需要缓冲池的场景。优缺点优点:减少对象的创建,降低内存中对象的数量,降低系统的内存,提高效率;减少内存之外的其它资源占用(比如创建对象所...

2018-11-19 12:41:43 127

原创 结构型:桥接模式及相关应用

文章目录桥接(Bridge)优缺点应用场景JDBC的应用参考资料桥接(Bridge)将抽象部分与它的具体实现部分分离,使它们都可以独立地变化。通过组合的方式建立两个类之间联系,而不是继承。适用场景:抽象和具体实现之间增加更多的灵活性。一个类存在两个(或多个)独立变化的维度,且这两个(或多个)维度都需要独立进行扩展。不希望使用继承,或因为多层继承导致系统类的个数剧增。优缺点优...

2018-11-19 12:39:39 358

原创 结构型:代理模式及相关应用

文章目录代理(Proxy)优缺点应用场景静态代理动态代理CGLIB代理Spring的代理选择参考资料代理(Proxy)代理模式为其它对象提供一种代理,以控制对这个对象的访问,代理对象在客户端和目标对象之间起到中介的作用。我们有多种不同的方式来实现代理。如果按照代理创建的时期来进行分类的话, 可以分为两种:静态代理、动态代理。静态代理是由程序员创建或特定工具自动生成源代码,再对其编译,在运行...

2018-11-19 12:38:28 112

原创 LeetCode#190: Reverse Bits

DescriptionReverse bits of a given 32 bits unsigned integer.ExampleInput: 43261596Output: 964176192Explanation: 43261596 represented in binary as 00000010100101000001111010011100, r...

2018-11-19 09:03:56 95 1

原创 LeetCode#405: Convert a Number to Hexadecimal

DescriptionGiven an integer, write an algorithm to convert it to hexadecimal. For negative integer, two’s complement method is used.ExampleInput:26Output:"1a"Input:-1Output:"ffffffff"No...

2018-11-18 11:59:59 142

原创 LeetCode#476: Number Complement

DescriptionGiven a positive integer, output its complement number. The complement strategy is to flip the bits of its binary representation.NoteThe given integer is guaranteed to fit within the ra...

2018-11-18 11:48:06 193 1

原创 LeetCode#703: Kth Largest Element in a Stream

DescriptionDesign a class to find the kth largest element in a stream. Note that it is the kth largest element in the sorted order, not the kth distinct element.Your KthLargest class will have a con...

2018-11-18 11:35:18 469

原创 LeetCode#496: Next Greater Element I

DescriptionYou are given two arrays (without duplicates) nums1 and nums2 where nums1’s elements are subset of nums2. Find all the next greater numbers for nums1’s elements in the corresponding places...

2018-11-17 12:06:50 118

原创 LeetCode#784: Letter Case Permutation

DescriptionGiven a string S, we can transform every letter individually to be lowercase or uppercase to create another string. Return a list of all possible strings we could create.ExampleInput: S...

2018-11-16 12:12:22 194

原创 死锁

文章目录死锁的定义死锁与活锁的区别产生死锁的必要条件资源分配图资源分配图化简死锁预防破坏“互斥使用”条件破坏“占有且等待”条件破坏“不可抢占”条件破坏“循环等待”条件死锁避免安全状态单个资源的银行家算法多个资源的银行家算法死锁检测与解除死锁的检测死锁的解除鸵鸟算法哲学家就餐问题参考资料死锁的定义一组进程中,每个进程都无限等待被该组进程中另一进程所占有的资源,因而永远无法得到的资源,这种现象称...

2018-11-15 22:13:47 275

原创 LeetCde#198: House Robber

DescriptionYou are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed, the only constraint stopping you from robbing each of them is that ad...

2018-11-15 12:06:18 150

空空如也

空空如也

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

TA关注的人

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