- 博客(68)
- 收藏
- 关注
原创 Redis学习day8 Redis分片集群
Redis如何判断某个key应该在哪个实例?·将16384个插槽分配到不同的实例·根据key的有效部分计算哈希值,然后对16384取余·余数作为插槽,寻找插槽所在实例即可如何将同一类数据固定的保存在同一个Redis实例?·这一类数据使用相同的有效部分,例如key都以{typeId}为前缀。
2025-11-26 13:41:05
418
原创 Redis学习day7 Redis主从
因为slave原本也是一个master,有自己的replid和offset,当第一次变成slave,与master建立连接时,发送的replid和offset是自己的replid和offset。如果slave的offset小于master的oofset,说明slave的数据落后于master,需要更新。slave与master的offset之间的差异,就是slave需要增量拷贝的数据,随着不断有数据写入,master的offset逐渐变大,slave也不断拷贝,追赶master的offset。
2025-11-25 20:21:07
567
原创 Redis学习day6 分布式缓存
通过执行bgrewriteaof命令,可以让AOF文件执行重写功能,用最少的命令达到相同的效果。如图,AOF原本有三个命令,但是set num 123和set num 666都是对num的操作,第二次会覆盖第一次的值,因此第一个命令记录下来没有意义。Redis处理的每一个写命令都会记录在AOF文件,可以看做是命令日志文件。执行save命令就会由Redis主进程来执行RDB,这个过程会阻塞所有命令,只有在数据迁移时可能用到。Redis内部有触发RDB的机制,可以在redis.conf文件中找到,格式如下。
2025-11-25 17:13:13
438
原创 Redis学习(day5)
redis:redis作为分布式锁是非常常见的一种使用方式,现在企业级开发中基本都使用redis或者zookeeper作为分布式锁,利用setnx这个方法,如果插入成功,则表示获得了锁,如果有人插入成功,其他人插入失败则表示无法获取到锁,利用这套逻辑来实现分布式锁。我们利用redis的setNx方法,当有多个线程进入时,我们就利用该方法,第一个线程进入时,redis中就有这个key了,返回了1,如果结果是1,则表示他抢到了锁,那么他去执行业务,然后再删除锁,退出锁逻辑,没有抢到锁的线程等待一定时间后重试。
2025-11-24 13:49:32
242
原创 Redis学习(day3)
乐观锁:会有一个版本号,每次操作数据会对版本号+1,再提交回数据时,会去校验是否比之前的版本大1,如果大1,则操作成功。这套机制的核心逻辑在于,如果在操作过程中,版本号只比原来大1,那么就意味着操作过程中没有别人对他进行修改,它的操作就是安全的,如果不大1,则数据就被修改过。并且随着商城的规模越来越大,mysql的单表容量不宜超过500W,数据量过大之后,我们要进行拆库拆表,但拆分表之后,从逻辑上讲他们是同一张表,所以id是不能一样的,于是就要保证id的唯一性。ID的组成部分:符号位 1bit,永远为0。
2025-11-20 16:26:58
323
原创 Redis学习(day2)
缓存空对象思路分析:当客户端访问不存在的数据时,先请求redis,但是此时redis中没有数据,此时会访问到数据库,但是数据库中也没有数据,这个数据穿透了缓存,直击数据库,我们都知道数据库能够承载的并发并不如redis那么高,如果大量请求同时过来访问这种不存在的数据,这些请求就都会访问到数据库,简单的解决方案就是哪怕这个数据在数据库中也不存在,我们也会把这个数据存入redis中去,这样,下次用户过来访问这个不存在的数据,那么在reids中也能找到这个数据就不会进入缓存了。方案是先操作数据库,再删除缓存.
2025-11-19 15:23:32
901
原创 Redis学习(day1)
zincrby key increment member:让sorted set中的指定元素自增,步长为指定的increment值。·hsetnx:添加一个hash类型的key的field值,前提是这个field不存在,否则不执行。·zscore key member:获取sorted set中的指定元素的score值。·hgetall:获取一个hash类型的key中的所有的field和value。·hget key field:获取一个hash类型key的field的值。
2025-11-16 19:05:27
306
原创 互联网大厂Java面试:谢飞机的搞笑面试经历
嗯,还有个叫Spring Initializr的东西,可以帮我们生成项目。哦,JVM就是Java Virtual Machine啦,是运行Java字节码的虚拟机。它能重用线程,减少创建销毁线程的开销,提高性能。它是个容器技术,可以让应用跑在隔离的环境中,打包和部署都很方便。呃,我记得有个聚合根啥的……你答得不错,接下来,能说说ArrayList和HashMap的区别吗?很好,那你能解释一下Java中的JUC是什么吗?谢飞机,请你谈谈Java中的JVM是什么?好的,谢飞机,我们会在一周内通知你结果。
2025-11-12 19:48:36
304
原创 Java 面试实录:大厂面试官遇上搞笑程序员谢飞机
每次放数据呢,根据 key 的 hashcode 去找数组的位置,哈,没错吧?是 Spring 框架的子项目,简化了 Spring 应用的开发过程,提供了各种开箱即用的功能,减少了配置。Spring Boot 就是让 Spring 应用开发更简单,开箱即用,哈哈,不用配置那么多。但有时候写多了也麻烦,哈哈,王老师,您懂的。在一家知名互联网大厂的办公室,面试官王老师正准备对前来面试的程序员谢飞机进行技术上的考核。JUC 是 Java 并发包,里面有好多工具类,帮我们处理并发问题,哈哈,我用得不多。
2025-11-12 19:47:19
311
原创 互联网大厂Java求职者面试实录:严肃面试官与搞笑程序员的对决
HashMap嘛,就像是一个万能储物箱,往里放东西的时候,会根据物品的特性找到合适的位置。:JUC,听说过,我一般用synchronized,ReentrantLock是个锁吧,主要用来锁门……:ArrayList是个数组,LinkedList是链条,我一般用的都是ArrayList,方便嘛!:一个是MyBatis,一个是Hibernate,前者更像是手工活,后者自动化程度高。:Redis是个内存数据库,速度贼快,数据库嘛,主要是存硬盘上的。:线程池管理线程的创建和销毁,减少性能开销,提高系统响应速度。
2025-11-12 19:45:46
325
原创 互联网大厂Java求职面试:严肃面试官与搞笑程序员的对决
嗯,Java内存模型就像是一个大房子,内存分成了很多小房间,每个房间都有自己的用途,比如有客厅(堆)、卧室(栈)等等。:呃,这个嘛,线程之间就像邻居,他们可以通过传纸条(共享变量)来交流,不过有时候纸条会丢,所以要小心。:JVM就像是Java的管家,负责打理Java程序的日常琐事,比如垃圾回收,加载类啊啥的。:索引优化嘛,我觉得就像是图书馆的目录,方便快速找到书,不过我一般是靠运气找到的。:这就像点菜,人数多就多点,人数少就少点,不过我一般是看心情选择。:好的,今天的面试就到这里,你可以回去等通知了。
2025-11-12 19:32:51
370
原创 互联网大厂面试纪实:谢飞机的Java面试之旅
我知道有个ReentrantLock,可以重入的锁,呃,还有那个,呃,CountDownLatch!MyBatis有缓存?呃,我知道有个什么Cache,一级是Session级别的,二级是,呃,全局的?哦,AOP就是Aspect Oriented Programming,嗯,用的代理吧,动态代理?呃,就是用哈希表的那个,嗯,Key和Value对吧,是用链表解决冲突的。DDD,呃,Domain Driven Design,应该是用来分层的?Redis有RDB和AOF,对吧,嗯,一个是那个快照,一个是日志。
2025-11-12 18:27:46
369
原创 机器学习实现线性回归
机器学习之实现线性回归1.介绍数据集本文中我使用的是西瓜数据集3.0a在拿到数据集后,预处理是:这个数据集的格式是gbk格式的,所以先手动将该数据集改为utf-8,这样在后面的处理中不容易报错。发现在第四列好瓜这一列全部是汉字,汉字只是我们的语言,计算机看不懂,所以我们需要将其转化为计算机看的懂的,是变为1,否变为0。1.读取数据及数据预处理首先将属性矩阵和标记矩阵分开存储,同时在属性矩阵最后增加一列全为1的数,并将其放入label里面存储。#读入西瓜数据集并且预处理def loadDat
2021-07-24 11:03:50
791
原创 一文解释清卷积神经网络中池化层的作用
池化层:池化层夹在连续的卷积层中间, 用于压缩数据和参数的量,减小过拟合。简而言之,如果输入是图像的话,那么池化层的最主要作用就是压缩图像。池化层分为3类,平均池化,最大池化和随机池化。拿最大池化举个例子:上图的例子是按步幅2进行2X2的最大池化时的处理顺序。最大池化是获得最大值的运算,“2X2”表示目标区域的大小。如上图所示,从2X2的窗口的移动间隔为2个元素。另外,一般来说,池化的窗口大小会和步幅设定成相同的值。比如3X3的窗口的步幅会设为3,4X4的窗口的步幅会设为4等。而最大池化的优点是:
2021-05-09 16:36:19
6748
6
原创 一起学深度学习(一):卷积神经网络CNN
卷积神经网络1.整体结构2.卷积层2.1全连接层存在的问题2.2卷积运算2.3填充2.4步幅1.整体结构CNN和之前介绍的神经网络一样,可以像乐高积木一样通过组装层来构建。如果不清楚的可以见上一篇博客。利用numpy实现三层神经网络不过CNN中新出现了卷积层(Convolution层)和池化层(Pooling层)。这两个新名字下篇博客中会介绍,这里先介绍下如何组装层以构建CNN。之前介绍的神经网络中,相邻层的所以神经元之间都有连接,这称为全连接层。另外,用Affine层实现了全卷积层。如果使用这个Af
2021-05-06 20:17:40
999
2
原创 空洞卷积实现代码
经过几天的学习理论知识和实践,终于把unet跟空洞卷积结合了。还没看过空洞卷积的请看下面链接空洞卷积理论知识代码uent.pyimport numpy as npimport osimport skimage.io as ioimport skimage.transform as transimport numpy as npfrom tensorflow.keras.models import *from tensorflow.keras.layers import *from t
2021-04-29 22:27:09
6864
50
原创 让人头大的激活函数:输出层的激活函数softmax
前言我认为不管是在机器学习里还是深度学习,激活函数的含义不重要,但是这个模型为什么选择这个激活函数很重要。所以这篇博客我来大概介绍一下那个模型选择那个激活函数。正文机器学习中主要可以分为分类问题和回归问题。分类问题是数据属于哪一个类别的问题,比如区分图像中的人是男是女。回归问题是根据某个输入预测一个(连续的)数值问题,比如根据图像预测这个人的体重。输出层的激活函数,要根据求解的问题的性质而定。一般的,回归问题使用恒等函数,二分类问题使用simgod函数,多元分类问题可以使用softmax函数
2021-04-27 20:48:06
2147
1
原创 利用numpy实现三层神经网络
其实神经网络很好实现,稍微有点基础的基本都可以实现出来.主要都是利用上面这个公式来做的。这是神经网络的整体框架,一共是三层,分为输入层,隐藏层,输出层。现在我们先来讲解下从输出层到到第一个隐藏层。使用的编译器是jupyter notebookimport numpy as np#定义X,W1,B1X = np.array([1.0, 0.5])w1 = np.array([[0.1, 0.3, 0.5],[0.2, 0.4, 0.6]])b1 = np.array([0.1, 0.2, .
2021-04-26 21:52:00
4250
19
原创 Unet如何制作自己的训练集
最近一直在学unet,所以分享一个如何做一个自己想要的训练集,而不是去从网上找的博客。首先打开cmd输入你自己的虚拟环境,我是在base直接把所有环境都安好了,就不想在创建虚拟环境在安装了。然后pip install labelme==3.16.7下载好了之后直接输入labelme这就是打开后的样子然后对所选择的图形进行描图,就像这样最后他会在你的指定文件下生成一个josn文件,你现在还不能直接打开这个josn文件,需要运行代码import argparseimport bas
2021-04-24 17:53:14
3270
10
原创 空洞卷积(Dilated Convolutions)
在深度学习中,我们常见的就是卷积神经网络。这篇博客来给大家介绍一下空洞卷积跟普通卷积的区别。空洞卷积的应用处:空洞卷积(dilated convolution)是针对图像语义分割问题中下采样会降低图像分辨率、丢失信息而提出的一种卷积思路。利用添加空洞扩大感受野,让原本3x3的卷积核,在相同参数量和计算量下拥有5x5(dilated rate =2)或者更大的感受野,从而无需下采样。扩张卷积(dilated convolutions)又名空洞卷积(atrous convolutions),向卷积层引入了一个
2021-04-19 21:13:35
3203
2
原创 K-means实战(一)
K-means算法阐述k近邻法(k-nearest neighbor, k-NN)是1967年由Cover T和Hart P提出的一种基本分类与回归方法。它的工作原理是:存在一个样本数据集合,也称作为训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一个数据与所属分类的对应关系。输入没有标签的新数据后,将新的数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本最相似数据(最近邻)的分类标签。一般来说,我们只选择样本数据集中前k个最相似的数据,这就是k-近邻算法中k的出处,通常k是
2021-04-07 21:37:19
512
6
原创 实现随机抽样法分割数据集
1在机器学习中,有时我们会获得一整个数据集,而我们知道,在这一过程中分为测试集与训练集。而随机抽样法的定义是从总体N个单位中随机地抽取n个单位作为样本,使得每一个容量为样本都有相同的概率被抽中。特点是:每个样本单位被抽中的概率相等,样本的每个单位是完全独立,彼此间无一定的关联性和排斥性。简单随机抽样是其它各种抽样形式的基础。通常只是在总体单位之间差异程度较小和数目较少时,才采用这种方法。data_dududu = pd.DataFrame(list(range(10)))data_dududu首
2021-04-05 20:25:31
1120
2
原创 U-net语义分割
最近参加大学生设计大赛,我们选的是大类是大数据应用类,然后小类是生物与医疗大数据为什么要做U-net语义分割随着医学图像可视化技术的发展和各种医学成像模式的出现,医学图像自动分析和处理已成为图像工程领域和生物医学工程领域一个重要的研究方向。作为医学图象处理中的一个热点问题,细胞图像的自动分析和识别一直受到人们的普遍重视。目前的图像诊断系统,大多数已采用形态学、灰度特征和色度学,并结合专家系统,对人体细胞进行分析和诊断。而由于我们缺少人体内部细胞的数据集,所有采用了果蝇-龄幼虫腹侧神经索的连续切片透射电镜
2021-03-31 19:46:22
899
5
原创 jupyter notebook的快捷键
Jupyter Notebook 的快捷键Jupyter Notebook 有两种键盘输入模式。编辑模式,允许你往单元中键入代码或文本;这时的单元框线是绿色的。命令模式,键盘输入运行程序命令;这时的单元框线是灰色。命令模式 (按键 Esc 开启)Enter : 转入编辑模式Shift-Enter : 运行本单元,选中下个单元Ctrl-Enter : 运行本单元Alt-Enter : 运行本单元,在其下插入新单元Y : 单元转入代码状态M :单元转入markdown状态R : 单元转入raw
2021-03-17 20:16:53
283
原创 神经网络:第一个神经网络
一.概念我们先来看一个问题,就是通过这个表,推断出?处到底是0还是1。很简单,答案是1,我们可以观察到,在前4行中,当a=0时,d=0,当a=1时,d=1.所以第五行当a=1的时候,d显而易见等于1.但是这个问题与学习神经网络有什么关系呢?原因是神经网络是与人大脑的神经网络相似,而我们可以用大脑快速的看出来d等于多少,但是无法让计算机判断出来。所以前人发明了神经网络。而就是通过神经网络,电脑才能快速判断出d的值。在没有神经网络之前,我们可能会做出这样的死代码:if(a==0){ d = 0;
2021-03-08 20:06:18
602
1
原创 初学opencv4 模糊操作
今天来总结opencv中模糊处理的知识点模糊操作可以说是一个比较重要的,所以在学之前建议还是复习一下前面的知识。初学opencv1初学opencv2初学opencv3模糊操作基本元理·1.基于离散卷积·2.定义好每个卷积核·3.不同卷积核得到不同的卷积效果·4.模糊是卷积的一种表象卷积原理很抽象,我尽量讲清楚,这块我也是看了很久这个8卷积过后怎么得到6的呢?就是13+16+1*8=17,然后因为是有3个单元格,所以整除,整除,整除重要的事情说三遍,然后17/3=5,所以就卷积之后成
2021-02-24 18:19:52
264
原创 初学opencv 3-ROI与泛洪填充
填充模板,整体填充不能跨越输入遮罩中的非零像素。例如,边缘检测器输出可以用作遮罩,以停止边缘填充。输出时,像素与图像中填充像素对应的遮罩设置为1或标志中指定的值。
2021-02-20 11:21:56
339
1
原创 机器学习入门(二) 准备工作
今天总结的是端对端的机器学习项目,由于内容较多,我就分开总结了。首先先介绍下这次的项目案例:假设你是一个房地产公司最新雇佣的数据科学家,以下是你将会经历的主要步骤:1.观察大局2.获得数据3.从数据探索和可视化中获得洞见4.机器学习算法的数据准备5.选择并训练模型6.微调模型7.展示解决方案8.启动,监控和维护系统1我们选择了加州住房价格的数据集数据中有许多指标,诸如每个街区的人口数量、收入中位数、房价中位数等。在这里我先略过一些部分,直接来到获取数据,因为这个获取数据的方法也是
2021-02-18 12:04:51
429
1
原创 机器学习入门(一)
年后又开始新一轮的学习了。今天我来复习跟巩固机器学习的基础概念。1.机器学习系统的类型我们将机器学习系统按他们的特点分类:是否在人类监督下训练。例如:有监督学习,无监督学习,半监督学习,强化学习。是否可以动态地进行增量学习。例如:在线学习,批量学习。是否简单地将新的数据点和已知的数据点进行匹配,还是像科学家一样,对训练数据进行模式检测然后建立一个预测模型。例如:基于实例的学习和基于模型的学习。这些标准之间相互并不排斥,你可以按你喜欢的方式将其任意组合。例如,现在最先进的垃圾邮件过滤器可能是
2021-02-16 10:52:27
643
2
原创 leetcode 100.相同的树
过年了,今天做个简单题目放放松,年前的学习就结束了。100.相同的树给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入:p = [1,2,3], q = [1,2,3]输出:true示例 2:输入:p = [1,2], q = [1,null,2]输出:false示例 3:输入:p = [1,2,1], q = [1,1,2]输出:false提示:两棵树上的节点数目都在范
2021-02-10 10:58:55
200
原创 leetcode 20.有效的括号
最近放假,我决定做一下数据结构的题,首先是栈,然后队列…数据结构对我们学编程的很重要,我也怕遗忘,所以做一个复习。20.有效的括号给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。 示例 1:输入:s = "()"输出:true示例 2:输入:s = "()[]{}"输出:true示例 3:输入:s = "(]"输出:false示例
2021-02-07 11:52:29
150
原创 初学opencv 2
上个文章讲了opencv的安装,以及读写照片,显示照片,图片的属性。如果没有看过的,下面是链接初学opencv 11.视频的读取和图片一样,视频也可以被电脑获取,处理出我们想要的东西。这个截图是我从电脑里读取的,他是这次我们处理的视频。这个人手上拿了一个绿色的光盘…或者碟子???这都无所谓,主要的是我们要知道它能够干什么。opencv的作用就是可以把能够突出的某种颜色展示出来,比如说我们把其他颜色都变成黑色,然后把绿色变成白色,那么是不是就可以更加明显的看出来了?代码如下:import c
2021-02-01 13:31:21
317
原创 初学opencv 1
学习机器学习,必不可少的就是计算机视觉了。把最近学习的总结跟复习下。opencv是什么?Opencv的全称是Open Source Computer Vision Library,也就是计算机视觉开源库。这里说到,Opencv就是一个库(它是基于C++语言的,当然也可在其他平台使用,如Java,Python),这个库是用在计算机视觉领域的,同时是开源的,也就是我们可以获得它的源代码,并且可以按我们自己的需求进行修改。如何下载安装进入cmd,然后输入pip install opencv-python
2021-01-30 00:25:12
307
2
原创 leetcode之面试题17.10主要元素
今天做主要元素,学会了新的方法——摩尔投票法。摩尔投票法:首先请考虑最基本的摩尔投票问题,找出一组数字序列中出现次数大于总数1/2的数字(并且假设这个数字一定存在)。显然这个数字只可能有一个。摩尔投票算法是基于这个事实:每次从序列里选择两个不相同的数字删除掉(或称为“抵消”),最后剩下一个数字或几个相同的数字,就是出现次数大于总数一半的那个。数组中占比超过一半的元素称之为主要元素。给定一个整数数组,找到它的主要元素。若没有,返回-1。示例 1:输入:[1,2,5,9,5,9,5,5,5]输出:
2021-01-29 18:53:11
144
原创 leetcode 每日一题 724.寻找数组的中心索引
打卡每日一题。给你一个整数数组 nums,请编写一个能够返回数组 “中心索引” 的方法。数组 中心索引 是数组的一个索引,其左侧所有元素相加的和等于右侧所有元素相加的和。如果数组不存在中心索引,返回 -1 。如果数组有多个中心索引,应该返回最靠近左边的那一个。注意:中心索引可能出现在数组的两端。 示例 1:输入:nums = [1, 7, 3, 6, 5, 6]输出:3解释:索引 3 (nums[3] = 6) 的左侧数之和 (1 + 7 + 3 = 11),与右侧数之和 (
2021-01-28 21:38:11
208
1
原创 leetcode 189.旋转数组
给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 进阶:尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗? 示例 1:输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]
2021-01-21 23:48:18
132
原创 leetcode第1401题圆和矩阵是否有重叠
做了一个纯数学的算法题,一开始还以为是考虑不周,但是看了题解,也都是数学方法直接去解。题目:给你一个以 (radius, x_center, y_center) 表示的圆和一个与坐标轴平行的矩形 (x1, y1, x2, y2),其中 (x1, y1) 是矩形左下角的坐标,(x2, y2) 是右上角的坐标。如果圆和矩形有重叠的部分,请你返回 True ,否则返回 False 。换句话说,请你检测是否 存在 点 (xi, yi) ,它既在圆上也在矩形上(两者都包括点落在边界上的情况)。示例一:输
2020-12-08 20:19:33
420
原创 leetcode55.跳跃游戏
给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。示例 2:输入: [3,2,1,0,4]输出: false解释: 无论怎样,你总会到达索引为 3 的位置。但该位置的最大跳跃长度是 0 , 所以你永远不可能到达最后一个位置。思路:题.
2020-12-06 19:11:27
152
原创 leetcode 第234.回文链表
1. 题目请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?刚拿到这个题的时候,我想到的是折半查找,想用折半查找就要去想怎么才可以找到链表的最中间,后来我使用了快慢指针,快慢指针就是定义一个slow和fast指针,slow指针一次走一格,fast指针一次走两格,当fast指针走到了链表的最后时,slow指针
2020-11-29 18:38:18
147
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅