- 博客(372)
- 资源 (3)
- 收藏
- 关注
原创 ipfs-hdfs分布式文件系统
HDFShadoop项目的核心子项目,基于流数据模式访问和处理超大文件的需求而开发的。数据的分布式存储和处理。namenode 和 datanode 的内置服务器可帮助用户轻松检查群集的状态。namenode:管理维护着文件系统树以及整个文件树内所有的文件和目录即文件系统的元数据DateNode:管理所存储的数据;按照客户端的请求, 执行在文件系统上的读写操作;大量节点构成一个集群Block:读写最小单位,文件系统中的文件将分为一个或多个片段存储在单个数据节点中。这些文件段称为block。首先
2021-09-10 15:41:09 10474
原创 where、having、group by、order by、limit的区别和使用顺序
where、having、group by、order by、limit的区别和使用顺序_姚文斌的博客-CSDN博客
2021-09-09 21:16:22 660
原创 知识点总结
https://www.cnblogs.com/yepei/p/4716112.htmlhttps://www.cnblogs.com/kaleidoscope/p/9467192.html事务管理方式spring支持编程式事务管理和声明式事务管理两种方式。编程式事务管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。声明式事务管理建立在AOP
2021-08-20 20:00:31 334
原创 线程间同步方式
https://blog.csdn.net/electrocrazy/article/details/78931704线程(thread)是允许应用程序并发的执行多个任务的一种机制。一个进程可以有多个线程,如果每个线程执行不同的任务,通过对线程的执行顺序进行控制(调度)就可以实现任务的并发执行。当然了多进程也可以实现任务的并发处理,但是两者之间是有区别的。最大的区别就是拥有的资源不同。进程拥有自己的独立系统资源,而线程没有独立资源,只能和属于同一进程的其他线程共享进程的系统资源。单个资源在多个用户之间共
2021-08-19 16:09:29 227
原创 Java8 中的 Optional
从 Java 8 引入的一个很有趣的特性是 Optional 类。Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException) —— 每个 Java 程序员都非常了解的异常。本质上,这是一个包含有可选值的包装类,这意味着 Optional 类既可以含有对象也可以为空。Optional 是 Java 实现函数式编程的强劲一步,并且帮助在范式中实现。但是 Optional 的意义显然不止于此。我们从一个简单的用例开始。在 Java 8 之前,任何访问对象方法或属.
2021-07-23 13:18:02 2289
原创 自定义Login注解
自定义Login注解,实现在controller增加注解登录拦截1.自定义Login注解import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;@Retention(RetentionPolicy.RUNTIME)@Target({
2021-07-20 11:41:38 1528
转载 RabbitMq入门(七)消息处理(消息持久化autoDelete、消息确认ACK机制)
目录消息持久化处理autoDelete属性消息确认ACK机制解决方式消息持久化处理消息的可靠性是RabbitMQ的一大特色,那么RabbitMQ是如何保证消息可靠性的呢——消息持久化。autoDelete属性@Queue: 当所有消费客户端连接断开后,是否自动删除队列 true:删除false:不删除@Exchange:当所有绑定队列都不在使用时,是否自动删除交换器 true:删除false:不删除当Queue中的 autoDelete 属性被设置...
2021-06-19 12:05:16 278
原创 Spring事务—方法调用事务回滚
转自:https://blog.csdn.net/m0_38027656/article/details/84190949写这篇文章的初衷呢就是最近遇到了一个spring事务的大坑.与其说是坑,还不如说是自己事务这块儿太薄弱导致的(自嘲下).项目环境 sprinigboot下面开始问题描述,发生的过程有点长,想直接看方案的直接跳过哦~;最近在做项目中有个业务是每天定时更新xx的数据,某条记录更新中数据出错,不影响整体数据,只需记录下来并回滚当条记录所关联的表数据; 好啊,这个简单,接到任务.
2021-04-11 10:37:57 3572 1
原创 面试中的老大难-mysql事务和锁,一次性讲清楚!
转自:https://juejin.cn/post/6855129007336521741众所周知,事务和锁是mysql中非常重要功能,同时也是面试的重点和难点。本文会详细介绍事务和锁的相关概念及其实现原理,相信大家看完之后,一定会对事务和锁有更加深入的理解。本文主要内容是根据掘金小册《从根儿上理解 MySQL》整理而来。如想详细了解,建议购买掘金小册阅读。什么是事务在维基百科中,对事务的定义是:事务是数据库管理系统(DBMS)执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。
2021-03-15 17:35:57 307
原创 MySQL之一篇读懂binlog redolog undolog
转自:https://juejin.cn/post/6860252224930070536日志是mysql数据库的重要组成部分,记录着数据库运行期间各种状态信息。mysql日志主要包括错误日志、查询日志、慢查询日志、事务日志、二进制日志几大类。作为开发,我们重点需要关注的是二进制日志(binlog)和事务日志(包括redo log和undo log),本文接下来会详细介绍这三种日志。binlogbinlog用于记录数据库执行的写入性操作(不包括查询)信息,以二进制的形式保存在磁盘中。binlog
2021-03-15 12:22:48 776
原创 85. 最大矩形
/** * 动态柱形图法 * @param matrix * @return */ public static int maximalRectangle(String[][] matrix) { //先算出每一行 最大连续1的个数 //如数组是 "1","0","1","1","1" //则转换成 1,0,1,2,3 if(matrix.length == 0 || matrix...
2021-03-02 18:21:58 168
原创 数据库设计三大范式
为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式。在实际开发中最为常见的设计范式有三个:1.第一范式(确保每列保持原子性)第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式。第一范式的合理遵循需要根据系统的实际需求来定。比如某些数据库系统中需要用到“地址”这个属性...
2021-03-02 11:23:19 274
原创 单元测试代码覆盖率的浅谈
转自:https://blog.csdn.net/shenggaofei/article/details/52905428在做单元测试时,代码覆盖率常常被拿来作为衡量测试好坏的指标,甚至,用代码覆盖率来考核测试任务完成情况,比如,代码覆盖率必须达到80%或 90%。于是乎,测试人员费尽心思设计案例覆盖代码。用代码覆盖率来衡量,有利也有有弊。本文我们就代码覆盖率展开讨论,也欢迎同学们踊跃评论。首先,让我们先来了解一下所谓的“代码覆盖率”。我找来了所谓的定义:代码覆盖率 = 代码的覆盖程度,一种度量
2021-02-25 17:18:39 3831 2
原创 本地项目推送到码云私有仓库
操作环境:win 101、生成公钥ssh-keygen -trsa -C"码云注册邮箱"ps:邮箱两边加“ ”2、添加到本地公钥ssh-agent bashssh-add ~/.ssh/id_rsaps:如果已添加过,此步骤可省略3、查看公钥内容cat ~/.ssh/id_rsa.pub4、配置公钥到码云上步骤:点击右上角头像→设置→安全设置→SSH公钥PS:将步骤3中的看到的公钥内容(ssh开始-登陆账号结束)粘贴至文本框中然后...
2021-02-24 15:48:00 617
原创 Mock完成单元测试
转自:https://zhuanlan.zhihu.com/p/980745531、什么是Mock?mock是在测试过程中,对于一些不容易构造/获取的对象,创建一个mock对象来模拟对象的行为。比如说你需要调用B服务,可是B服务还没有开发完成,那么你就可以将调用B服务的那部分给Mock掉,并编写你想要的返回结果。 Mock有很多的实现框架,例如Mockito、EasyMock、Jmockit、PowerMock、Spock等等,SpringBoot默认的Mock框架是Mockito,和junit一样
2021-02-23 19:19:40 1830 5
原创 es 中关于 term,match, text, keyword
转自:https://blog.csdn.net/qq_38043440/article/details/101678677最近项目中使用了ElasticSearch, 在使用基本的查询功能的时候,遇到些头疼的事情,有时候数据明明存在,用term查询就是查不到,用match才可以。有时候缺可以,差点就把es整成玄学了。后来阅读各种博客后,我想我明白其中的原理了。1. term&matchterm: 精确查询,对查询的值不分词,直接进倒排索引去匹配。 match; 模糊查询,对查询的值分
2021-02-19 18:11:07 2732 4
原创 深入理解Java Stream流水线
转自:https://www.cnblogs.com/CarpenterLee/p/6637118.html前面我们已经学会如何使用Stream API,用起来真的很爽,但简洁的方法下面似乎隐藏着无尽的秘密,如此强大的API是如何实现的呢?Pipeline是怎么执行的,每次方法调用都会导致一次迭代吗?自动并行又是怎么做到的,线程个数是多少?本节我们学习Stream流水线的原理,这是Stream实现的关键所在。首先回顾一下容器执行Lambda表达式的方式,以ArrayList.forEach()方法为
2021-02-19 14:32:46 489
原创 Java Stream API进阶篇
上一节介绍了部分Stream常见接口方法,理解起来并不困难,但Stream的用法不止于此,本节我们将仍然以Stream为例,介绍流的规约操作。规约操作(reduction operation)又被称作折叠操作(fold),是通过某个连接动作将所有元素汇总成一个汇总结果的过程。元素求和、求最大值或最小值、求出元素总个数、将所有元素转换成一个列表或集合,都属于规约操作。Stream类库有两个通用的规约操作reduce()和collect(),也有一些为简化书写而设计的专用规约操作,比如sum()、max()
2021-02-19 12:25:35 227
原创 Java Stream API入门篇
转自:https://www.cnblogs.com/CarpenterLee/p/6545321.html你可能没意识到Java对函数式编程的重视程度,看看Java 8加入函数式编程扩充多少功能就清楚了。Java 8之所以费这么大功夫引入函数式编程,原因有二:代码简洁,函数式编程写出的代码简洁且意图明确,使用stream接口让你从此告别for循环。 多核友好,Java函数式编程使得编写并行程序从未如此简单,你需要的全部就是调用一下parallel()方法。这一节我们学习stream,也就是Ja
2021-02-19 11:44:30 179
原创 JUnit 4和JUnit 5区别
特征 JUNIT 4 JUNIT 5 声明一种测试方法 @Test @Test 在当前类中的所有测试方法之前执行 @BeforeClass @BeforeAll 在当前类中的所有测试方法之后执行 @AfterClass @AfterAll 在每个测试方法之前执行 @Before @BeforeEach 每种测试方法后执行 @After @AfterEach 禁用测试方法/类 @Ignore @Disa
2021-02-18 15:28:03 5526
原创 限流算法—令牌桶和漏桶
转自:https://blog.csdn.net/m__l__/article/details/109175787令牌桶算法:令牌桶算法,是一个存放固定容量令牌的桶,按照固定速率往桶里添加令牌。假设限制2r/s,则按照500毫秒的固定速率往桶中添加令牌。 桶中最多存放b个令牌,当桶满时,新添加的令牌被丢弃或拒绝。 当一个n个字节大小的数据包到达,将从桶中删除n个令牌,接着数据包被发送到网络上。 如果桶中的令牌不足n个,则不会删除令牌,且该数据包将被限流(要么丢弃,要么在缓冲区等待)。漏桶
2021-02-04 19:39:52 264
原创 JVM垃圾回收
转自:https://mp.weixin.qq.com/s/XsZUF2nBUSEJoGIA8RimJwGC 对于Java 来说重要性不言而喻,不论是平日里对 JVM 的调优还是面试中的无情轰炸。这篇文章会以一问一答的方式来展开有关 GC 的内容。本文章所说的 GC 实现没有特殊说明的话,默认指的是 HotSpot 的。我先将十八个问题都列出来,大家可以先思考下能答出几道。好了,开始表演。young gc、old gc、full gc、mixed gc 傻傻分不清?这个问题的
2021-02-01 12:39:02 241
原创 JVM—浮动垃圾
问:CMS中的浮动垃圾理解?书上说:并发清理阶段用户线程还在运行,这段时间就可能产生新的垃圾,新的垃圾在此次GC无法清除,只能等到下次清理。这些垃圾有个专业名词:浮动垃圾。这个浮动垃圾如何理解?难道不是在本次GC重新标记remark的过程中被发现然后清理吗?为何还要等下次GC才能清理?答:重新标记(Remark) 的作用在于:之前在并发标记时,因为是 GC 和用户程序是并发执行的,可能导致一部分已经标记为 从 GC Roots 不可达 的对象,因为用户程序的(并发)运行,又可达 了,Rema
2021-02-01 12:28:09 5089
原创 shiro——SimpleAuthenticationInfo中的参数
/** * 执行认证逻辑 */ @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken arg0) throws AuthenticationException { System.out.println("执行认证逻辑"); UsernamePasswordToken token = (UsernamePasswordToken) ar.
2021-01-28 18:20:11 2124
原创 Git相关命令
1.gitreset有时候,进行了错误的提交,但是还没有push到远程分支,想要撤销本次提交,可以使用git reset –-soft/hard命令。git reset –-soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可;git reset -–hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容,撤销的commit中所包含的更改被冲掉;git reset 分为三种:软 --soft,中 ---mix.
2021-01-28 10:35:36 106
原创 多个不同版本的依赖maven怎样做出取舍
https://blog.csdn.net/weixin_34850743/article/details/109755351 比如A依赖B,B依赖C,C依赖D(1.0);A依赖X,X依赖D(2.0)。那么A最终依赖的是D(1.0)还是D(2.0)呢? 针对这类问题,maven有个专门的处理方式:依赖调解。 依赖调解有两条原则。第一条,路径最近者优先。比如一开始提的问题,因为相对于D(2.0),D(1.0)在依赖树上距离A更远,所以最终maven选择引入的依赖是D(2.0)。那么如果两个不同版本
2021-01-14 18:17:57 751
原创 YAML文件(.yml)中的键(key)通过变量引用来设置
转自:https://www.cnblogs.com/haycheng/p/13299183.html通过变量引用设置配置量的【值】(value)在YAML文件中,一个配置量的值可以通过引用另一个变量来设置。例如:default-db: port: 3306user-db: port: ${default-db.port}但是,如果想通过变量引用设置键,通过${}是做不到的。例如:site: url: user: www.user.net shop:
2021-01-05 16:03:06 5920 2
原创 容器搭建Hadoop步骤
https://www.cnblogs.com/linuxone/p/5574749.htmlhttps://www.cnblogs.com/leolzi/p/12166121.htmlhttps://www.cnblogs.com/areyouready/p/9716271.htmlhttps://blog.csdn.net/stone_fall/article/details/108571675
2020-12-23 21:58:56 530
原创 LeetCode 746. 使用最小花费爬楼梯
public int minCostClimbingStairs(int[] cost) { int len = cost.length; for (int i = 2; i < len; i++) { cost[i]=Math.min(cost[i-1]+cost[i],cost[i-2]+cost[i]); } return Math.min(cost[len-1],cost[len-2]); ...
2020-12-21 11:01:05 242
原创 LeetCode 209. 长度最小的子数组
思路:评论区的大佬太强了,搬运。len表示结果;j表示此片段的最左索引;sum表示片段和先遍历,逐个递加,直到大于s时,再去缩短长度。public int minSubArrayLen(int s, int[] nums) { int len = 0; int j = 0; int sum = 0; for (int i = 0; i < nums.length; i++) { sum+...
2020-12-15 20:29:03 87
原创 LeetCode 201. 数字范围按位与
思路:暴力会超时!引用大佬的思路:【笔记】当一个数+1时,总会有这么一个规律“某一位后的数字,全部被置为相反数”。举个例子:010111 + 1 = 011000,则010111 & 011000 = 010000。那么,x & (x+1) 后几位相反数的“与操作”,结果总为0。所以,当(m,m+1,...n-1,n)进行连续“与操作”时,会按照上述规律被抵消很大一部分,而只剩下n的前缀部分,最后只需将n归位。举个例子:m = 5(0101), n = 7 (011..
2020-12-14 16:31:03 146
原创 LeetCode 200. 岛屿数量
思路:定义变量ans记录结果二维数组v记录被访问的位置,逐个遍历数组,当有未被访问或者字符为 1时,进入BFS递归递归条件很简单,控制好边界,并且对应位置字符为 1且未被访问即可。从上下左右四个位置递归。最后每递归结束一次,结果ans+1。返回结果int ans = 0; public int numIslands(char[][] grid) { if(grid.length == 0 || grid[0].length == 0)return...
2020-12-14 16:10:35 106
原创 LeetCode 187. 重复的DNA序列
思路:先用Set存储每个以10为单位的字符串切片,若存在重复则加入List中,时间复杂度O(N)空间复杂度O(N)public List<String> findRepeatedDnaSequences(String s) { List<String> l = new ArrayList<>(); if(s.length() < 10)return l; int len = s.length();..
2020-12-14 15:28:05 230
原创 LeetCode 166. 分数到小数
思路:循环体出现的依据是,产生重复的余数,即每次mod*10后再和除数b计算出新余数,和之前的比较即可。先对int型数据进行转换为long以免int负数最小值化正越界判定正负数,结果是否加负号求余数,若余数为0则直接返回余数不为0,加入到map中,供下次检测。每次将余数和对应sb的位置 存到map中将mod*10和b计算出来的商追加到sb中,并mod*10 % b再次计算新余数。循环直到mod==0public static String...
2020-12-03 11:02:58 151
原创 TCP连续ARQ协议和滑动窗口协议
转自:https://blog.csdn.net/guoweimelon/article/details/50879588TCP协议通过使用连续ARQ协议和滑动窗口协议,来保证数据传输的正确性,从而提供可靠的传输。一、ARQ协议ARQ协议,即自动重传请求(Automatic Repeat-reQuest),是OSI模型中数据链路层和传输层的错误纠正协议之一。它通过使用确认和超时这两个机制,在不可靠服务的基础上实现可靠的信息传输。如果发送方在发送后一段时间之内没有收到确认帧,它通常会..
2020-12-02 17:24:00 2212
原创 LeetCode 162. 寻找峰值
为什么二分查找大的那一半一定会有峰值呢?(即nums[mid]<nums[mid+1]时,mid+1~N一定存在峰值) 我的理解是,首先已知 nums[mid+1]>nums[mid],那么mid+2只有两种可能,一个是大于mid+1,一个是小于mid+1,小于mid+1的情况,那么mid+1就是峰值,大于mid+1的情况,继续向右推,如果一直到数组的末尾都是大于的,那么可以肯定最后一个元素是峰值,因为nums[nums.length]=负无穷public int findPea...
2020-11-30 20:59:11 85
原创 Java Queue中 add/offer,element/peek,remove/poll区别
转自:https://blog.csdn.net/u012050154/article/details/60572567java Queue中 add/offer,element/peek,remove/poll中的三个方法均为重复的方法,在选择使用时不免有所疑惑,这里简单区别一下:1、add()和offer()区别:add()和offer()都是向队列中添加一个元素。一些队列有大小限制,因此如果想在一个满的队列中加入一个新项,调用 add() 方法就会抛出一个 unchecked 异常,而调.
2020-11-30 19:06:50 384
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人