自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(71)
  • 收藏
  • 关注

原创 移位的应用整理

移位运算的妙用

2023-09-03 18:06:22 539

原创 vscode流程图插件使用

vscode流程图插件使用1.在vscode中点击左下角设置然后选择扩展。2.在扩展中搜索Draw.io Integration,安装上面第一个插件。3.安装插件后在工程中创建一个后缀为drawio的文件并且双击打开即可绘制流程图

2023-08-26 14:34:01 1766

原创 PyTorch中torch.sum()函数的用法总结

【代码】PyTorch中torch.sum()函数的用法总结。

2023-05-28 13:32:30 894

原创 K-Means和轮廓系数

观察上图,乍一看,数据应该能被分成4簇,但有的人觉得分成2簇(左下1簇,右上1簇),或者分成3簇(最下面1簇,中间1簇,右上1簇)也是合理的。由公式可知,S取值范围为(-1, 1),当S越接近于1,则聚类效果越好,越接近-1,聚类效果越差。计算公式如上图所示,其中,a表示样本点与同一簇中所有其他点的平均距离,即样本点与同一簇中其他点的相似度;K-means(K均值)是机器学习中一种常见的无监督算法,它能够将未知标签的数据,根据它们的特征分成不同组,每一组数据又称为“簇”,每一簇的中心点称为“质心”。

2023-04-24 22:39:43 3111 1

原创 python画混淆矩阵

【代码】python画混淆矩阵。

2023-03-07 20:23:37 241

原创 Python中numpy中的切片操作[:, : -1] [:, [-1] ]

切分,取除最后一列外的所有元素。

2022-11-11 19:29:43 923

原创 线程池工具类封装

承接具有执行结果的线程任务/*** 线程结果*}/*** 任务线程池*/*** 默认核心线程数/*** 默认最大线程数/*** 默认空闲线程存活时间/*** 默认队列数量/*** 线程池/*** 线程工厂/*** 任务较多时暂存队列/*** 核心线程数/*** 最大线程数/*** 空闲线程存活时间/*** 队列数量/*** 线程池名称/*** 初始化线程池} } /**

2022-09-23 21:10:01 1607

原创 MySQL索引分类

按数据结构分类可分为:B+tree索引、Hash索引、Full-text索引。按物理存储分类可分为:聚簇索引、二级索引(辅助索引)。按字段特性分类可分为:主键索引、普通索引、前缀索引。按字段个数分类可分为:单列索引、联合索引(复合索引、组合索引)。

2022-09-11 21:24:17 1859

原创 mysql中的mvcc机制

在InnoDB引擎下,按锁的粒度分类,可以分为行锁和表锁。行锁实际上是作用在索引之上的。当我们的SQL命中了索引,那锁住的就是命中条件内的索引节点(这就是行锁),如果没有命中索引,那锁的就是整个索引树(表锁);简单来说就是:锁住的是整棵树还是某几个节点,完全取决于SQL条件是否有命中到对应的索引节点。而行锁又可以简单的分为读锁(共享锁、S锁)和写锁(排它锁、X锁);读锁是共享的,多个事务可以同时读取同一个资源,但不允许其他事务修改。写锁是排他的,写锁会阻塞其他的写锁和读锁。

2022-09-11 20:02:10 540

原创 mysql日志总结

什么是binlog?binlog是用于记录数据库表结构和表数据变更的二进制日志,比如insert、update、delete、create、truncate等等操作,不会记录select、show操作,因为没有对数据本身发生变更。使用命令show variables like ‘%log_bin%’;查看binlog是否打开。执行SHOW MASTER STATUS;可以查看当前写入的binlog文件名。(没有开启就不存在)binlog是用来干什么的?第一,用于主从复制。

2022-09-10 21:55:57 3715

原创 StringTable常见面试问题

【代码】StringTable常见面试问题。

2022-08-28 21:17:50 166

原创 Top命令参数详解

09:54:05 当前时间up 237 days 系统运行时间2 user 当前登录用户数load average 1.29 0.68 0.37 系统负载,即任务队列的平均长度。第二、三行为进程和CPU的信息,当有多个cpu时,这些内容可能会超过两行。内容如下:total 进程总数running 正在运行的进程数sleeping 睡眠的进程数stopped 停止的进程数zombie 僵尸进程数Cpu(s):3.7% us 用户空间占用CPU百分比。

2022-08-23 10:59:59 1160

原创 打字(赛马网)

最近找工作需要笔试,做了几道题练习一下,赛码网这个题答案的通过率是9%,因此我自己记录一下自己写的答案。用java实现。

2022-08-05 12:22:16 1453

原创 java线程中断

线程中断相关的方法interrupt()方法是一个实例方法,它通知目标线程中断,也就是设置目标线程的中断标志位为true,中断标志位表示当前线程已经被中断了。isInterrupted方法也是一个实例方法它判断当前线程是否被中断(通过检查中断标志位)并获取中断标志Thread类的静态方法interrupted()返回当前线程的中断状态,且将当前线程的中断状态设为false,此方法调用之后会清除当前线程的中断标志位的状态(将中断标志位设置成false了),返回当前值并且设置为false。...

2022-08-02 15:59:53 325

原创 Linux IO模式以及select、poll、epoll详解

调用blockingIO会一直block住对应的进程直到操作完成,而non-blockingIO在kernel还准备数据的情况下会立刻返回。我们已经把一个用来从管道中读取数据的文件句柄(RFD)添加到epoll描述符这个时候从管道的另一端被写入了2KB的数据调用epoll_wait(2),并且它会返回RFD,说明它已经准备好读取操作然后我们读取了1KB的数据调用epoll_wait(2)…LT模式如果是LT模式,那么在第5步调用epoll_wait(2)之后,仍然能受到通知。...

2022-08-01 18:41:57 287

原创 springboot环境下Shiro+Token+Redis安全认证方案

认证我们接收filter传过来的token,并认证login操作的token授权获取到登录用户信息,并取得用户的权限存入roles,以便后期对接口进行操作权限验证/***大坑!,必须重写此方法,不然Shiro会报错}/***授权**@returnlog.info("Shiro权限配置");}/***认证**@returnlog.info("Shiror认证");isAccessAllowed()判断是否可以登录到系统/**...

2022-07-27 15:43:43 6850

原创 NIO 基础总结

non-blockingio非阻塞IO。

2022-07-26 19:49:22 180

原创 访问者模式(JAVA)

/基础用户信息publicabstractclassUser{//姓名publicStringidentity;//身份;重点班、普通班|特级教师、普通教师、实习教师publicStringclazz;//班级publicUser(Stringname,Stringidentity,Stringclazz){}//核心访问方法publicabstractvoidaccept(Visitorvisitor);}基础信息包括。...

2022-07-23 21:55:53 265

原创 Mysql中rank类的函数用法

mysql中rank类的函数

2022-07-22 19:21:45 1780

原创 简述聚簇索引

唯一的非空索引**代替(“唯一的非空索引”是指列不能出现null值的唯一索引,跟主键性质一样)。如果没有这样的索引,InnoDB会隐式地定义一个主键来作为聚簇索引。

2022-07-15 12:25:17 279

原创 权限控制的设计方式

目前主流的权限模型有两种:基于角色的访问控制(Role-Based Access Control,简称 RBAC),指的是通过用户的角色(Role)授权其相关权限,实现了灵活的访问控制,相比直接授予用户权限,要更加简单、高效、可扩展。当使用 RBAC模型 时,通过分析用户的实际情况,基于共同的职责和需求,授予他们不同角色。这种 用户 -> 角色 -> 权限 间的关系,让我们可以不用再单独管理单个用户权限,用户从授予的角色里面获取所需的权限。以一个简单的场景(Gitlab 的权限系统)为例,用户系统中有

2022-07-08 19:06:22 710

原创 Mysql为什么采用B+树

众多的数据结构中我们可以分为:线性结构和非线性结构。线性结构主要有:数组、链表、基于它们衍生出的有哈希表、栈、队列等。非线性结构有:树、图。还有其他的数据结构:跳表、位图也都是由基础的数据结构演化而来的,不同的数据结构存在即都是为了解决某些场景问题。我们思考mysql索引适合什么样数据结构,首先应该思考索引是用来解决什么样的问题?索引发挥着什么样的作用?然后再思考什么样的数据结构能够解决这样的问题,实现这样的作用。mysql存储的数据是在磁盘里的,即使设备断电,放在磁盘里面的数据是不会有影响的,保

2022-07-06 23:52:21 560

原创 JUC三大常用工具类CountDownLatch、CyclicBarrier、Semaphore

CountDownLatch位于 java.util.concurrent包下。CountDownLatch是通过一个计数器来实现的,计数器的初始值是线程的数量。每当有一个线程执行完毕后,通过countDown方法来让计数器的值-1,当计数器的值为0时,表示所有的线程都执行完毕,然后继续执行await方法之后的语句,即在锁上等待的线程就可以恢复工作了。CountDownLatch中主要有两个方法:简单的小例子:一个寝室八个人要出去,需要等到1、2、3、4、5、6、7、8个人都出来,才可以锁上寝室门。即当

2022-07-05 10:00:00 171

转载 适配器模式

共有两种适配器模式我们养了一只猫,它会发出叫声目标(Target)角色适配器(Adapter)角色测试如果有一天又养了一只狗人又和狗成为了朋友重新测试聊天如果再有其他朋友,还需要增加适配器。是否有办法使其通用呢?我们希望可以有一个可以和各种动物做朋友的办法,而不是每次有了新的动物朋友都需要增加一个适配器。万物拟人适配器(Adaper)角色测试...

2022-07-03 12:23:21 7873

原创 幂律分布(python)

首先要说的是中心极限定理——在复杂的多因素情况下,只要个体相互独立,集体效果就应该是正态分布。然而实际运用中,尤其是金融中,更多面对的是尖峰胖尾现象,比如下面这幅图描述的是标普500指数的收益率分布,很明显的是,实际的收益率的分布和理想中的正态分布不一致,这就是所谓的尖峰胖尾特征,峰值更高,尾巴部分也拖的更长更厚。正是有了尖峰胖尾,可以想象,有些东西可以超出想象的大,并且出现这个的概率也非常大,这样的陡峭且延长很长的分布就是所谓的幂律分布(两个特征:陡峭,延长很长)。幂律分布就是概率密度函数服从幂函数的分

2022-07-02 23:18:07 2088 2

转载 ==与equals 的区别,为什么重写 equals 方法也要重写 hashCode 方法?

引用类型:== 是直接比较的两个对象的堆内存地址,如果相等,则说明两个引用实际是指向同一个对象地址的。基本类型:对于 基本数据类型(8个)和 String 来说又是怎样呢?对于基本类型(8个)和 直接声明的 “abc” 字符串,他们是作为字面量存在常量池中以 HashSet 策略存储起来的,在常量池中,一个常量只会对应一个地址,所以它们的引用都是指向的同一块地址。另外,对于基本数据的包装类型,除了Float和Double之外,其他的六种都是实现了常量池技术,其中 Integer 在常量池中的存储范围为 [

2022-07-01 00:34:00 68

原创 装饰者模式

用动物接口作为抽象构件(Component)角色,动物会移动,和咬。具体构件(Concrete Component)角色用会跑会咬的狗狗类作为具体构件(Concrete Component)角色。装饰(Decorator)角色给动物设计装备,可以加强动物的技能(也就是方法)。具体装饰(Concrete Decorator)角色在装饰角色中我们设计了动物的装备,但是没有具体实现装备的功能,在此实现动物移动的加速装备。有的小动物会被大的动物欺负,于是为他们设计一款攻击力增强装备来保护自己,在此实现

2022-07-01 00:17:33 153 1

原创 进程通信的方式

管道、命名管道、信号、消息队列、共享内存、内存映射、信号量、Socket管道管道也叫无名(匿名)管道,它是是 UNIX 系统 IPC(进程间通信)的最古老形式,所有的 UNIX 系统都支持这种通信机制。管道本质其实是内核中维护的一块内存缓冲区,Linux 系统中通过 pipe() 函数创建管道,会生成两个文件描述符,分别对应管道的读端和写端。无名管道只能用于具有亲缘关系的进程间的通信。命名管道匿名管道,由于没有名字,只能用于亲缘关系的进程间通信。为了克服这个缺点,提出了有名管道(FIFO),也叫命名管道、F

2022-06-30 23:35:18 111 1

原创 java.util.ConcurrentModificationException

当我们迭代一个ArrayList或者HashMap时,如果对集合做一些修改操作(例如删除元素),可能会抛出java.util.ConcurrentModificationException的异常。例子:输出:ArrayList的父类AbstarctList中有一个域,每次对集合进行修改(增添元素,删除元素……)时都会而foreach的背后实现原理其实就是Iterator,等同于上面代码的注释部分。在这里,迭代ArrayList的Iterator中有一个变量,该变量会初始化和相等,但如果接下来如果集合进行修

2022-06-10 22:21:09 99

原创 排序算法总结(java)

排序算法,java

2022-06-09 18:55:22 110

原创 Arrays.sort()对二维数组排序

Arrays.sort()排序二维数组

2022-06-04 22:08:27 836

原创 两阶段终止模式

两阶段终止模式在一个线程T1中如何“优雅”终止线程T2?这里的【优雅】指的是给 T2 一个料理后事(处理完当前的操作)的机会。错误思路使用线程对象的 stop() 方法停止线程stop 方法会真正杀死线程,如果这时线程锁住了共享资源,那么当它被杀死后就再也没有机会释放锁, 其它线程将永远无法获取锁使用 System.exit(int) 方法停止线程目的仅是停止一个线程,但这种做法会让整个程序都停止两阶段终止模式代码:@Slf4jpublic class Test02

2022-05-19 13:22:30 98

转载 TCP拥塞控制

TCP拥塞控制拥塞控制的一般原理在某段时间,若对网络中某资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。这种现象称为拥塞 (congestion)。最坏结果:系统崩溃拥塞产生的原因网络拥塞往往是由许多因素引起的。例如:点缓存的容量太小;链路的容量不足;处理机处理的速率太慢;拥塞本身会进一步加剧拥塞;出现拥塞的原因:增加资源能解决拥塞吗?**不能。**这是因为网络拥塞是一个非常复杂的问题。简单地采用上述做法,在许多情况下,不但不能解决拥塞问题,而且还可能使网络的性能更

2022-05-18 10:39:46 717

转载 彻底搞懂Cookie、Session、Token、JWT

彻底搞懂Cookie、Session、Token、JWT什么是认证通俗地讲就是验证当前用户的身份,证明“你是你自己”(比如:你每天上下班打卡,都需要通过指纹打卡,当你的指纹和系统里录入的指纹相匹配时,就打卡成功)。互联网中的认证用户名密码登录邮箱发送登录链接手机号接收验证码只要你能收到邮箱/验证码,就默认你是账号的主人什么是授权用户授予第三方应用访问该用户某些资源的权限你在安装手机应用的时候,APP 会询问是否允许授予权限(访问相册、地理位置等权限)你在访问微信小程序时,当登

2022-05-17 18:13:54 220

原创 java创建线程的方式

java创建线程的方式方法一:直接使用Thread// 创建线程对象Thread t = new Thread() { public void run() { // 要执行的任务 }};// 启动线程t.start();例如:public static void main(String[] args) { Thread t1 = new Thread("t1") { @Override // run 方法内实现了要执行

2022-05-17 17:30:08 492

原创 java序列化

java序列化什么是序列化Java序列化是指把Java对象转换为字节序列的过程,而Java反序列化是指把字节序列恢复为Java对象的过程:**序列化:**对象序列化的最主要的用处就是在传递和保存对象的时候,保证对象的完整性和可传递性。序列化是把对象转换成有序字节流,以便在网络上传输或者保存在本地文件中。核心作用是对象状态的保存与重建。**反序列化:**客户端从文件中或网络上获得序列化后的对象字节流,根据字节流中所保存的对象状态及描述信息,通过反序列化重建对象。为什么需要序列化与反序列化?一、

2022-05-17 00:02:56 336

原创 搞懂java类加载机制和类加载器

搞懂java类加载机制和类加载器类加载概述一个类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期将会经历加载、验证、准备、解析、初始化、使用和卸载七个阶段,其中验证、准备、解析三个部分统称为连接。如下图所示:其中加载、验证、准备、初始化和卸载这五个阶段的顺序是确定的,类型的加载过程必须按照这种顺序按部就班地开始,而解析阶段则不一定:它在某些情况下可以在初始化阶段之后再开始,这是为了支持Java语言的运行时绑定特性(也称为动态绑定)。类加载的阶段加载加载阶段是整个“类加载”过程中的

2022-05-13 21:43:48 433

原创 java堆内存诊断

java堆内存诊断jps 工具查看当前系统中有哪些 java 进程jmap 工具查看堆内存占用情况 jmap - heap 进程idjconsole 工具图形界面的,多功能的监测工具,可以连续监测(不光可以监测堆,也可以监测线程和cpu等)案例一案例代码/** * 演示堆内存 */public class Demo1_4 { public static void main(String[] args) throws InterruptedExcepti

2022-05-08 22:08:22 789

原创 线程运行诊断

线程运行诊断**例子一:**cpu占用过多定位:用top定位哪个进程对cpu的占用过高ps H -eo pid,tid,%cpu | grep进程id (用ps命令进一步定位是哪个线程引起的cpu占用过高)jstack进程id可以根据线程id找到有问题的线程,进一步定位到问题代码的源码行号实际操作首先用nohup java Demo1_16 &命令执行准备好的Demo程序然后使用top命令查看信息,可以看到最上面的java程序对cpu的占用达到了92%下一步使用ps

2022-05-08 21:01:12 1131

原创 一文搞懂java单例模式

一文搞懂java单例模式概念:java中单例模式是java中一种常见的设计模式,这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。主要有以下特点:单例类只能有一个实例。单例类必须自己创建自己的唯一实例。单例类必须给所有其他的对象提供这一实例。意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。何时使用:当我

2022-04-27 23:42:50 566

空空如也

空空如也

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

TA关注的人

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