自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小熊的学习记录

记录学习每一天

  • 博客(31)
  • 问答 (9)
  • 收藏
  • 关注

原创 动态规划之矩阵连乘

题目描述:                给定n个矩阵{A1,A2,…,An},其中,Ai与Ai+1是可乘的,(i=1,2 ,…,n-1)。用加括号的方法表示矩阵连乘的次序,不同的计算次序计算量(乘法次数)是不同的,找出一种加括号的方法,使得矩阵连乘的次数最小。例如:                  A1是A(5*10)的方阵;                  A2是A(10*...

2018-08-21 15:09:16 60088 9

原创 并发编程(二) — 内存可见性问题

在谈共享变量的内存可见性问题之前,先谈谈线程安全问题 ,线程安全问题是指当多个线程同时读写一个共享资源并且没有任何同步措施时,导致出现脏数据或者其他不可预见的结果的问题。在图2-3 中, 线程A 和线程B 可以同时操作主内存中的共享变量,当同时操作同一个共享变量时,可能导致线程安全问题。注:这里说的操作是指写操作,多个读操作并不会产生线程安全问题,因为并没有修改共享变量的数据。只有当至少一个线程修改共享资源时才会存在线程安全问题。

2023-05-12 16:43:56 1067

原创 【并发编程系列 — 线程基础】

是一种线程封闭的机制,它可以将数据隔离在每个线程中,每个线程都拥有一份独立的数据副本。主要是通过和Thread类中的字段实现,是一个自定义的HashMap,用来存储线程本地变量的键值对,而Thread类中的字段则是用来存储每个线程的。通过使用,我们可以在保证线程安全的前提下,又不会带来太大的性能问题。

2023-05-09 20:15:25 1246

原创 延时队列的三种实现方案

在分布式系统中,延时队列(Delay Queue)是一个常见的工具,它允许程序能够按照预定时间处理任务(类似于定时任务)。延时队列允许我们将任务延时到指定的时间执行,这样就可以将任务按照优先级和执行时间来处理,从而提高系统的可靠性和性能。延时队列是一种特殊的队列相比于普通队列(先进先出)最大的区别就体现在其延时属性上。在这种队列中,每个元素都有一个预设的延时时间,只有当这个时间到期后,元素才可以被消费。这种机制使得延时队列可以用于实现定时任务、消息重试等功能。

2023-05-02 22:08:15 7826 1

原创 Redis底层数据结构分析(二) —— Hash结构

Redis中的Hash数据结构是一种键值对的集合可以用来存储对象的属性或者其他类型的映射关系。也就是说每个Hash可以存储多个键值对,如图所示为Hash的存储结构:field 和 value 共同组成了 key 所对应的 value。比如当我们要存储用户对象时就可以使用Hash结构,一个用户有多个属性字段,如:姓名,年龄等。所以映射关系为:命令说明返回值用于为哈希表中的单个 field-value 设置值,如果 key 值不存在,会先创建,如果该 field 域已存在,则将覆盖旧值。

2023-04-05 13:02:13 761

原创 Redis底层数据结构分析(一) —— SDS动态字符串

Redis官网文档Redis源码仓库Redis是一个基于内存的高性能键值存储系统。Redis支持多种数据类型,包括字符串、哈希、列表、集合、有序集合等。每种数据类型在底层都有对应的数据结构实现。SDS动态字符串双向链表压缩链表ziplist哈希表hashtable跳表skiplist整数数组intset快速列表quicklist紧凑列表listpack💡 Tips:官网说明💡 Tips:对应文件。

2023-04-02 21:37:43 945

原创 Redis剖析 — 过期策略和内存淘汰机制

Redis是当前一款较受欢迎的NoSQL数据库,其基于内存运行,性能高效。既然是基于内存运行的,那么它就会有存储上限,最高也就是物理内存的容量。当超出设定的Redis内存时,要么释放内存,那么报OOM(内存溢出)的异常了。那么Redis 是如何处理过期数据的?当内存不够用时 Redis 又是如何处理的?在本篇博客文章中,我将带着这些问题详细的讲解Redis的过期策略和内存淘汰机制。

2023-03-27 15:06:58 2502

原创 缓存预热、击穿、雪崩、穿透

​ Redis作为目前使用较为广泛的缓存,可以有效提高应用程序的性能。但是,缓存也会带来一些挑战,例如缓存预热、缓存雪崩、缓存击穿和缓存穿透等问题。在本篇博客中,我们将深入探讨这些问题,并介绍如何去解决。先介绍一下查询请求的正常执行流程如果Redis中存在数据,则直接返回给用户。否则,去数据库中查找数据,找到后写入Redis缓存并将查询结果返回给用户,没找到就报错。注:这里我写的是先写缓存在返回数据给用户(4和5)。个人理解应该根据不同的应用场景和业务需求进行决定。

2023-03-23 09:28:44 662

原创 ThreadLocal解析

是一种线程封闭的机制,它可以将数据隔离在每个线程中每个线程都拥有一份独立的数据副本。主要是通过和Thread类中的字段实现,是一个自定义的HashMap,用来存储线程本地变量的键值对,而Thread类中的字段则是用来存储每个线程的。通过使用,我们可以在保证线程安全的前提下,又不会带来太大的性能问题。

2023-03-20 11:00:08 382

原创 Redis与MySQL的双写一致性问题

Redis与MySQL的双写一致性问题是指在使用缓存和数据库同时存储数据的场景下,如何保证两者的数据一致性。缓存更新策略:缓存更新策略有三种,分别是先更新缓存再更新数据库先更新数据库再更新缓存先删除缓存再更新数据库和先更新数据库再删除缓存。每种策略都有可能导致数据不一致的情况。数据库主从同步延迟:如果使用了主从复制模式来提高数据库的可用性和读写分离能力,那么就可能存在主从同步延迟的问题。也就是说,在主库上执行了写操作后,并不会立即同步到从库上。

2023-03-19 21:42:24 6005 4

原创 源码解析——HashMap

上面讲了一大堆理论,先来实践一下吧。HashMap为什么要用数组+链表/红黑树的结构?这个比较简单,数组+链表/红黑树(注意区别JDK1.7和1.8)HashMap为什么要用数组+链表/红黑树的结构?为了提高HashMap的查询效率和空间利用率数组是一种连续的存储结构,它可以通过索引快速定位元素,但是它的长度是固定的,如果数组过大,会浪费空间;如果数组过小,会导致哈希冲突。链表是一种离散的存储结构,它可以动态地增加或删除元素,但是它需要遍历才能找到元素,如果链表过长,会降低查询效率。

2023-03-07 20:56:27 457

原创 Spring MVC源码解析——HandlerMapping(处理器映射器)

在Spring MVC中,HandlerMapping(处理器映射器)用于确定请求处理器对象。请求处理器可以是任何对象,只要它们使用了@Controller注解或注解@RequestMapping。HandlerMapping负责将请求(url)映射到适当的处理器对象(Controller)。注:Handler即绑定了注解@RequestMapping或@Controller的类getHandler方法用于查找处理器对象并返回处理程序的执行链,HandlerExecutionChain包含了。

2023-03-04 20:43:24 3288 1

原创 Java 代理

Java的动态代理是基于接口的,它要求目标类必须实现一个或多个接口,而CGLib是基于类的,它不要求目标类实现任何接口。Java的动态代理是通过反射机制来创建代理对象和调用目标方法的,而CGLib是通过字节码生成技术来创建代理对象和调用目标方法的。Java的动态代理会生成一个实现了目标类所有接口的新类作为代理类,而CGLib会生成一个继承了目标类的子类作为代理类。

2023-03-01 23:49:00 2595

原创 【torch-sparse及pytorch-geometric 安装】

这个是官方给的教程,用于安装torch-scatter、torch-sparse、torch-geometric,照着来就可以了。pip安装完pytorch-geometric之后,报错No module named torch_sparse。然后安装pip安装torch-sparse,结果报错,百度一下怎么安装,无果,转战官方文档,成功!注: 不是CUDA版本的,即CPU版本的改成 cpu 就够了!重要的事情说三遍,百度出来的东西都一言难尽。把这两个替换成自己安装的版本。

2022-11-26 16:22:48 841

原创 java框架学习笔记——SpringMVC

Spring MVC(全称 Spring Web MVC)是 Spring 框架提供的一款基于 MVC 模式的轻量级 Web 开发框架,是 Spring 为表示层(UI)开发提供的一整套完备的解决方案。

2022-11-18 21:06:22 2030

原创 java框架学习笔记 —— Spring

spring相关知识的学习笔记

2022-11-15 19:06:44 1385

原创 百度地图解决自定义图标显示问题

百度地图解决自定义图标太大不显示问题

2022-11-02 00:15:27 3787

原创 java基础 —— 高级编程篇

java基础之高级编程

2022-10-26 21:29:55 2185

原创 uniapp中map组件动态添加覆盖物(解决数据更新而视图不更新)

解决uniapp map组件动态添加覆盖物时,数据更新了但视图没有更新的问题

2022-10-15 23:32:26 2918 2

原创 uniapp this.$scope.$getAppWebview() 报错 undefined

uniapp this.$scope.$getAppWebview() 报错 undefined

2022-10-13 00:08:03 7675 2

原创 Java基础 —— 面向对象

java基础之面向对象

2022-08-16 00:10:19 823

原创 Java基础学习笔记 —— 基础语法篇

一些关于javase的基础语法

2022-08-15 22:41:02 690

原创 Android Studio 报错“APK signature verification failed.”

由于不知道怎么一次性解决这个报错问题,导致每次创建或者导入新的项目都要会出现签名的问题,所以记录一下解决方案,怕到时候自己忘了。问题:以下就是报错的提示,这个报错主要是签名问题。解决方案:点击上方的Build,选择Generate Signed Bundle 2. 选择APK,点击NEXT3. 点击Create new,填写相关信息4. 填写信息后,点击确认,弹出以下提示,不用管,点击OK,点击NEXT,选择release,勾选V1,V2,点击Fini...

2021-06-28 13:19:57 6488 3

原创 微信小程序之flex布局

最近在学微信小程序,就准备分享一下小程序必备的布局 —— flex布局 在小程序开发中为了更方便的布局,有必要来详细了解下Flex布局在小程序的应用。本文将针对Flex布局的各个属性进行介绍传统的布局是基于盒状模型,依赖display属性 +position属性 +float属性。它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现.而Flex布局更加的灵活,下面我...

2019-09-04 17:46:53 1240

原创 二叉树的基本操作(递归和非递归遍历,分支节点数)

二叉树的定义:二叉树是由n(n>=0)个结点的有限集合构成,此集合或者为空集,或者由一个根结点及两棵互不相交的左右子树组成,并且左右子树都是二叉树.递归定义:叉树可以是空集合,根可以有空的左子树或空的右子树。二叉树不是树的特殊情况,它们是两个概念。typedef char ElemType;typedef struct BiTNode{ ElemType data; ...

2018-12-16 16:26:11 1993

原创 中缀表达式转化为后缀表达式(逆波兰表达式)

1.将中缀表达式转化为后缀表达式后缀表达式也叫作逆波兰表达式,主要是运用栈的后进先出思想,下面就讲讲我自己的思考,假设中缀表达式为:2*(2+1)-6(4-2)#,则后缀表达式为:2 2 1 + * 6 4 2 - / -;首先依次遍历中缀表达式,遇到操作数字符则直接输出(数字字符大小区间在 ‘0’~‘9’),遇到操作符字符则依次入栈,其中操作符入栈条件:若栈中没有元素,即栈空,无...

2018-11-21 22:08:43 1051

原创 一元稀疏多项式计算器(加减)

题目:设Pn(x)和Qm(x)分别为两个一元稀疏多项式,利用单链表存储Pn(x)和Qm(x),简单实现Pn(x)+Qm(x),Pn(x)-Qm(x),并就地逆置Pn(x)-Qm(x)。思路:1.首先是创建链表,再存储数据。          2.进行多项式的运算。通过每一项的比较,判断指数是否相等,相等就进行合并,不相等就不操作并找到下一项。这道题主要是考察了链表的操作,估计很多人都会...

2018-11-02 20:18:09 2620

转载 单链表的逆置

今天做一道单向链表逆置的题,又被绕晕了,特意百度找了一个转载自:单链表的逆置--普通循环方法(详细图解) (反正我看懂了)单链表的逆置--普通循环方法(详细图解)诚如很多人所说,吃透这个还是要自己画一个详细的过程图。今天就给大家介绍一下(普通的循环方法)我学习下来的一些经验,如有不对之处还望大家一起交流。首先,以下是关于单链表逆置的普通循环方法的代码: //单链表定义...

2018-10-21 22:00:07 565

原创 0-1背包问题

问题描述:假设有n个物品和一个背包,每个物品i都有对应的价值vi,和重量wi,背包的容量为W,每个物品只有一件,要么装,要么不装,不可拆分。则在不超重的情况下,怎么选取物品装入背包,使得所装物品总价值最大。问题分析:本题不可用贪心算法,因为物品不可分解,只能得到局部最优解,而不是整体最有,因此可用动态规划来求解最优解用c[ ][ ]表示前i件物品放入一个容量为j的背包中所获得的最大价值,x...

2018-08-24 11:20:47 256

原创 动态规划 最长公共子序列

公共子序列:即序列X和序列Y共有的序列,可以不是连续序列,但子序列存在顺序排列例如:X : 3 2 1 5 7 9 5 4                Y :6 3 1 4 7 4 2则序列X和序列Y最长公共子序列为 3 1 7 4(有时可能不唯一)第一个想到的是直接暴力破解,对每个X的子序列进行穷举,检查每个子序列是否是Y的子序列,但如果X有m个元素,X的子序列有2^m个,此时时间...

2018-08-03 16:21:32 264

原创 分治法 大整数乘法

学习算法的时候,其中一道经典就是大整数乘法咯,感觉有点难理解,于是写一篇博客加深下理解。大数相乘不可以直接得到答案,肯定会超出数的范围,而解决大数相乘的办法就是分治法:将大问题变成小问题,再变成简单问题,最后进行合并。例如:                          1234*23456                          =(12*10^2+34)*(234...

2018-08-02 11:10:27 3071

空空如也

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

TA关注的人

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