- 博客(44)
- 资源 (5)
- 收藏
- 关注
转载 CPU缓存一致性协议MESI
CPU缓存一致性协议MESI转自https://blog.csdn.net/muxiqingyang/article/details/6615199计算机中为了保证Cache一致性,有一套完成的协议。比较经典的是Cache一致性协议当属MESI协议,奔腾处理器使用它,很多其它处理器都是用的是它的变种。标记位: 单核Cache中每个Cache line有两个标志: dirty(是否和内存一致) 和valid(是否有效)标志,他们很好的描述了Cache和Memory(内存)之间的数据关系(数据是否有效
2020-07-16 22:54:13 216
原创 一文搞懂消息队列面试常见问题
本文参考 传值播客消息队列面试题公开课 https://www.bilibili.com/video/BV1FE411A7AA?t=345一文搞懂消息队列面试常见问题1、为什么要用消息队列?(消息队列的应用场景)2、各种消息队列产品的比较3、消息队列的优点和缺点4、如何保证消息队列的高可用5、如何保证消息的不丢失6、如何保证消息不被重复消费?(如何保证消息消费的幂等性)7、如何保证消息消费的顺序性8、大量消息堆积处理怎么处理9、消息过期怎么处理1、为什么要用消息队列?(消息队列的应用场景)考察面.
2020-06-01 15:21:42 377
原创 JVM的垃圾回收机制原理
日常开发中,我们总需要创建大量的对象,如果我们没有及时把创建的对象回收,造成对象持续堆积,直至造成内存溢出问题。JVM提供了一种垃圾回收机制,在后台创建一个守护线程,在内存紧张的时候自动进行垃圾回收机制。一、Java的内存结构模型Java虚拟机在执行Java程序的时候会把它所管理的内存划分为若干个不同的数据区域,而有些区域是每个线程的私有区域,有些区域是所有线程所共享的共有区域。从图中我们可以看出,虚拟机栈、本地方法栈、程序计数器属于线程私有区域。随着线程的创建和关闭进行创建和取消。其中,程序计
2020-05-31 21:13:44 341 1
原创 如何保持MySQL和Redis的一致性
如今,Mysql+ Redis已经成为了一种常用的数据库架构方式,但由于种种原因,总会导致Redis和Mysql之间出现一系列的数据不一致的问题。例如,一个事务首先写入了Mysql,但还未写入Redis,这是用户访问Redis,就会造成数据不一致。为了解决这种问题,本文总结了两个方法,尽可能的去达到MySql和Redis之间的数据一致性。1. 保持数据最终一致性针对一些对数据一致性要求...
2020-04-17 22:33:45 2425
原创 优雅的手写一个线程安全的单例模式
单例模式是我们非常常用的设计模式之一。百度百科给出的定义:单例模式,属于创建类型的一种常用的软件设计模式。通过单例模式的方法创建的类在当前进程中只有一个实例(根据需要,也有可能一个线程中属于单例,如:仅线程上下文内使用同一个实例)一般,我们为了实现单例模式,通常把构造器私有化,然后通过静态方法和静态变量来获取一个对象。懒汉式,线程不安全这种方式是最基础的实现方式,最大的问题是不支持多线...
2020-04-16 20:07:46 2068
原创 《剑值offer 》第二版 编程题全解
《剑值offer 》第二版 编程题全解面试题03. 数组中重复的数字题目描述:解题思路:面试题04. 二维数组中的查找题目描述:解题思路:面试题05. 替换空格题目描述:题解:面试题03. 数组中重复的数字题目描述:在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复...
2020-04-15 21:38:54 344
原创 TCP/IP 高频点复习笔记
1.OSI参考模型OSI参考模型主要由七层架构组成,分别是:物理层: 主要包括一些物理标准设备,如网线接口类型、光纤接口类型、各种传输介质速率等。主要作用是传输比特流。这一层的数据叫做比特数据链路层: 主要从物理层接受的数据进行MAC地址(网卡地址)的封装与解封。这一层的设备叫交换机,数据通过交换机来传输。网络层: 下层接收到的数据进行IP地址的封装与解封装。这一层工作得设备是路由器,这...
2020-04-15 18:15:42 1581
原创 史上最全Mysql基础面试知识总结
一文搞定Mysql基础面试知识1. 几种连接的种类和区别1.1 全连接1.2 左连接1.3 右连接1.4 内连接1.5 下面是用这四种连接组成的一些常用操作1.5.1 左表有右表没有的全部数据1.5.2 右表有左表没有的全部数据1.5.3 全连接,查询所有记录1.5.4 并集去交集2. 范式的种类和区别2.1 第一范式(1NF)2.2 第二范式(2NF)2.3 第三范式(3NF)2.Sql函数有...
2020-04-07 21:59:08 1113
原创 【LeetCode 】: 42. 接雨水
42. 接雨水问题描述:给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。题目链接示例1:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6思路1(暴力解法):最常规也是最容易想到的解法,从0 到 i - 1每个位置能够存储的水量由左边最大值和右边最大值做差决定的。所以,我们可以采取最暴力的解法,对于每个位置i...
2020-04-04 21:12:34 206
原创 一文搞定十大经典排序算法,附代码详解
十大经典排序算法一、内部排序的比较1.1 冒泡排序1.1.1 算法步骤:1.1.2 参考代码:1.2 选择排序1.2.1 算法步骤:1.2.2 参考代码:1.3 插入排序1.3.1 算法步骤:1.3.2 参考代码:1.4 希尔排序1.4.1 算法步骤:1.4.2 参考代码:1.5 归并排序1.5.1 算法步骤1.5.2 参考代码1.6 快速排序1.6.1 算法步骤1.6.2 参考代码1.7 堆排序...
2020-03-31 14:58:16 1193
原创 【python】TensorFlow框架下CNN神经网络的花卉识别系统
提前说明一下,本文的CNN神经网络模型是参考网上诸多相关CNN图像分类大牛的博客修改的,在模型的基础上,用python的Flask框架搭载了一个web页面用来可视化展示。第一步,爬取图片数据集用python实现了一个非常简单的网络爬虫,对百度图片接口 http://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&...
2020-03-27 12:30:06 5960 2
原创 Java多线程学习笔记
Java多线程学习笔记1.什么是线程2.进程与线程的区别3.线程的创建和启动3.1 继承Thread类创建线程3.2 实现Runnable接口3.3 实例变量共享造成的非线程安全问题与解决方案3.3.1 不共享数据的情况3.3.2 共享数据的情况和解决方案4 停止线程的方法4.1 interrupt()、interrupted()、isInterrupted() 方法的区别1.什么是线程线程是...
2020-03-25 23:04:11 330
原创 【LeetCode 】: 72. 编辑距离
72. 编辑距离问题描述:给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符题目链接示例1:输入: word1 = “horse”, word2 = “ros”输出: 3解释:horse -> rorse (将 ‘h’ 替换为 ‘r’)ro...
2020-03-25 12:49:08 266
原创 Java 常用工具类
HttpClientUtilimport org.apache.http.HttpEntity;import org.apache.http.HttpStatus;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.CloseableHttpRespo...
2020-03-22 16:55:48 299
原创 【LeetCode 】: 32. 最长有效括号
32. 最长有效括号问题描述:给定一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长的包含有效括号的子串的长度。题目链接:https://leetcode-cn.com/problems/longest-valid-parentheses/示例1:输入: “(()”输出: 2解释: 最长有效括号子串为 “()”示例2:输入: “)()())”输出: 4解释: 最长有效括...
2020-03-22 15:03:22 324
原创 【LeetCode 】: 322. 零钱兑换
322. 零钱兑换问题描述:给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。题目链接:https://leetcode-cn.com/problems/coin-change/示例1输入: coins = [1, 2, 5], amount = 11输出: 3解释: ...
2020-03-20 21:10:14 340
原创 【LeetCode 】: 400. 第N个数字
400. 第N个数字问题描述:数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中,第5位(从下标0开始计数)是5,第13位是1,第19位是4,等等。请写一个函数,求任意第n位对应的数字。题目链接:https://leetcode-cn.com/problems/shu-zi-xu-lie-zhong-mou-yi-wei-de-shu-zi-lc...
2020-03-19 22:38:14 115
原创 一篇文章快速搞懂Java Lambda表达式
Java Lambda表达式是Java8 引入的一个新的特性,它类似于JavaScript中的闭包,主要目的是让我们的代码变的更加简洁紧凑。Lambda 基本语法Lambda 的基本语法格式如下两种形式:(parameters) -> expression或(parameters) ->{ statements; }其中,包括几项重要特征:编译器可以统一识别参数,...
2020-03-15 21:56:45 537
转载 C4.5算法详解
首先,C4.5是决策树算法的一种。决策树算法作为一种分类算法,目标就是将具有p维特征的n个样本分到c个类别中去。相当于做一个投影,c=f(n),将样本经过一种变换赋予一种类别标签。决策树为了达到这一目的,可以把分类的过程表示成一棵树,每次通过选择一个特征pi来进行分叉。那么怎样选择分叉的特征呢?每一次分叉选择哪个特征对样本进行划分可以最快最准确的对样本分类呢?不同的决策树算法有着不同的特征选择方...
2020-03-13 20:06:51 505
原创 【剑指offer】: 47. 礼物的最大价值
47. 礼物的最大价值问题描述:在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?题目链接示例1输入:[[1,3,1],[1,5,1],[4,2,1]]输出: 12解释: 路径 ...
2020-03-12 22:54:26 115
原创 Redis 知识点总结(持续更新中)
1、什么是RedisRedis是一个完全开源免费的,遵循BSD协议的高性能Key-Value类型的额内存数据库。因为是纯内存操作,Redis 的性能非常出色,每秒可以处理超过10万次的读写操作,是已是最快的Key-Value类型的Key-Value数据库。而且Redis是一个NOSQL类型数据库,是为了解决高并发、高扩展,大数据存储等一系列问题而产生的数据库解决方案,是一个非关系型的数据库。但是...
2020-03-10 22:41:34 488 1
原创 Git 常用高频命令
前言:汇总一下在项目中常常高频使用的git命令。git log 查看提交日志,非常常规的操作,日常必备# 输出概要日志,这条命令等同于# git log --pretty=oneline --abbrev-commitgit log --oneline#指定最近几个提交可以带上 - + 数字git log --oneline -1git status 查看工作区状态的命...
2020-03-07 23:48:38 654
原创 nodejs全局仓库的查看和修改
从官网下载nodejs安装后,nodejs内置的npm会默认把模块缓存在C:\\Users\\用户\\AppData\\Roaming\\npm目录下,这样会造成在C盘下载大量文件,造成系统盘空间不足影响电脑性能。所以我们可以对npm的仓库目录进行修改到我们指定的位置。1、首先查看当前npm缓存目录打开cmd -> 输入命令 npm config ls ,查看系统默认的npm仓库目录。...
2020-03-06 21:34:54 5563
原创 【剑指offer】:和为s的连续正数序列
297. 和为s的连续正数序列问题描述:输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。示例1输入:target = 9输出:[[2,3,4],[4,5]]示例1输入:target = 15输出:[[1,2,3,4,5],[4,5,6],[7,8]]完整代码: ...
2020-03-06 21:07:14 151
原创 Linux常用命令整理
这篇博客整理一些日常经常使用的Linux命令,以及总结一部分常用的Linux 知识,以备日后复习使用。最常用命令cd: 打开某个文件夹ls:查看当前目录下文件cp:复制文件mv:剪切指令vim:编辑文件指令mkdir:创建文件夹指令mkdirs:创建多级文件夹指令touch:创建文件指令source:使刚修改的初始文件生效tar: 解压文件find: 查找命令chm...
2020-03-05 17:54:01 245
原创 Dubbo学习笔记
1.什么是Dubbo随着互联网的不断发展,Web应用的业务量不断扩大,常规的垂直应用架构已经无法应对。分布式架构模式已经成为计算机架构的必然趋势。Dubbo是Alibaba开源的分布式服务治理框架,目前已经捐献给Apache,并且广泛应用于中国各互联网公司。官网地址。Dubbo在应用时,只需要简单进行配置,即可透明化接入Spring配置方式。只需要简单配置,没有任何API侵入,大大简化了配置...
2020-03-04 19:25:56 2464
原创 【LeetCode 】: 297. 二叉树的序列化与反序列化
297. 二叉树的序列化与反序列化问题描述:序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构...
2020-03-03 21:45:28 214 1
原创 【LeetCode 】: 53. 最大子序和
53. 最大子序和问题描述:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。题目链接:https://leetcode-cn.com/problems/maximum-subarray/示例1输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。思路:...
2020-03-01 22:03:48 304
原创 Shell脚本封装Github常用上传命令
我们在每天写代码的过程中了,肯定会用到一些代码托管工具,比如GIthub和码云等。虽然,Github已经把命令压缩的特别精简了,但是,如果想每天上传代码,依然需要如下几条命令:cd ...切换到你的项目文件夹git pullgit add .git commit -m "提交描述"git push那么,我们可以使用Shell编程把这五条语句压缩成一行,只需要输入一条命令运行这个脚本,...
2020-03-01 17:46:30 839
原创 【LeetCode 】: 322. 零钱兑换
322. 零钱兑换问题描述:给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。题目链接:https://leetcode-cn.com/problems/coin-change/示例1输入: coins = [1, 2, 5], amount = 11输出: 3解释: ...
2020-02-29 20:38:02 387
原创 Java实现2048矩阵操作
问题描述:2048游戏是一个4*4的矩阵,用户可以按上下左右4个方向键让所有的方块向同一个方向运动,两个相同数字撞在一起之后合并成为他们的和。合并规则:相邻会碰撞的两个数字合并且一个位置只会触发一次合并,且优先合并移动方向顶部的位置比如【2 2 2 2】行向右合并后为【0 0 4 4】【0 2 2 2】行向右合并后为【0 0 2 4】输入格式:输入第一行是用户按下的方向键,w代表...
2020-02-28 10:29:20 649
原创 【LeetCode 】: 622. 设计循环队列
622. 设计循环队列问题描述:设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前面仍有空间。但是使用循环队列,我们能使用这些空间去存储新的值。题目链接:...
2020-02-25 22:22:39 1068
原创 调用高德地图API将地名转换成经纬度
今天帮老师完成一个任务,把一个第一列包含了大量地名的数据集,计算出每个地名的相应的经纬度。以便于后面用经纬度进行进一步的运算。第一步,高德地图密钥申请进入高德开放平台首页,输入账号登录(如没有账号先进行注册)注册成为开发者。之后点击我的应用-> 创建新应用-> 完成AK密钥申请。第二步,调用接口把地名转换成经纬度我们需要调用的API接口是把地理信息转换成经纬度的接口,接口...
2020-02-24 21:36:28 4971
原创 字节跳动 2020年笔试题-秘密通信
问题描述:小明和安琪是好朋友。最近,他们的谈话被一家侦探机构监控,所以他们想将他们的谈话内容进行加密处理。于是,他们发明了一种新的加密方式。每条信息都被编译成二进制数B(明文),其长度为N。然后该信息被写下K次,每次向右移动0,1,…,K-1位。例如:B = 1001010,K=41001010100101010010101001010然后对每一列进行异或操作,并且把最终所得的...
2020-02-20 14:56:02 715 1
原创 SpringBoot整合mybatis基础配置Demo
前言:Spring-boot的入门配置,节约了大量配置的过程,使配置流程变的非常简洁。Spring-boot 基于Idea 2019.2.4环境搭建MyBatis 整合简单增删改查接口测试第一步,创建Spring-boot项目本文基于idea提供的模板创建Spring-boot项目,。而且Spring-boot内置了Tomcat,也不需要配置Spring那一套,所以特别的方便...
2020-02-18 21:57:30 1178
原创 字节跳动 2019年笔试题-小Q游戏
问题描述:小q制作了一个简单的游戏:有一排方块,每个方块上是一个自然数或’<‘或’>’。小Q一开始在最左边的方块上,且方向向右。若小Q在数字方块上,他会得到方块上数字对应的分数,并且方块上的数字会减1.特别的,当小q走上数字0方块时,他会得到0分,然后摧毁这个方块,方块数量减一。若小Q在’<‘或’>‘方块时,他会改变接下来的前进方向,’>‘代表向右,’<...
2020-02-18 16:26:16 1983
原创 【LeetCode 】: 79. 单词搜索
622. 设计循环队列问题描述:设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前面仍有空间。但是使用循环队列,我们能使用这些空间去存储新的值。题目链接:...
2019-12-05 22:19:11 288
原创 Quartz 定时调度框架
1. 什么是Quartz Quartz是一个由Java开发的开源定时作业调度框架,就是按照设定,在某一固定时刻或者时间间隔去进行执行某个任务。Quartz 主要组成部分有:调度器:Scheduler任务:JobDetail,Job触发器:Trigger,包括SimpleTrigger和CronTrigger下面我们先看一个简单实例:2. Quartz 简...
2019-12-05 15:28:01 644
原创 【LeetCode 】: 88. 爬楼梯
88. 爬楼梯问题描述:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例1输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例2输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶 + 1 阶1 阶 + 2 阶2...
2019-12-02 16:13:21 270
ssm二手车交易平台.zip
2019-12-05
The Inverted Multi-Index.pptx
2019-10-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人