自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 uniapp使用腾讯地图实现商家定位

安全域名设置,在小程序管理后台 -> 开发 -> 开发管理 -> 开发设置 -> “服务器域名” 中设置request合法域名,添加。.在manifest.json中加入如下代码,否则获取地址时会出现权限不足。同理该接口也需要手动进行配额分配。在计算步行距离时如果调用这个方法。

2024-04-22 11:31:58 757

原创 uniapp微信小程序(商城项目)

经过我的测试,基本上能正常使用,用来做个毕业设计应该问题不大,但是可能还会出现一些我没发现的bug,但bug存在不是很正常的嘛,我就想问哪个软件没有bug呢,后面打算把这个商城的后台管理系统干出来,目前找到了一个成熟的后台管理系统,打算在此基础上面改。后面如果有可能的话(资金够的话),想部署到云服务器上。大家如果有需要的源码,可以来找我哦,至于有偿还是无偿都可以商量,

2024-04-20 10:45:24 639

原创 spring中@Transactional不生效的几种原因

因为spring事务,默认情况下只会回滚RuntimeException(运行时异常)和Error(错误),对于普通的Exception(非运行时异常),它不会回滚。种场景很常见,方法A调用方法B,其中方法A未使用事务,而方法B使用了事务,此时方法B的事务是不生效的,例子如下,因为updateOrder方法拥有事务的能力是因为。如果事务注解使用的是@Transactional(),即使异常抛出了,但是抛出的是非RuntimeException类型异常,同样也不会回滚。

2024-04-07 14:16:34 867 1

原创 JVM中常见垃圾收集器介绍

GC算法(复制/标清/标整/分代收集)是内存回收的方法论,垃圾收集器就是算法落地实现(即复制,标记清除,标记压缩整理和分代收集四种算法的实现类)。串行垃圾收集器并行垃圾收集器CMS(并发垃圾收集器)G1收集器接下来介绍收集器在新生代(Young generation)和老年代(Tenured generation)之间的组合关系如果两个收集器之间存在连线,就说明它们可以搭配使用。它们说在的区域则表示这个收集器属于新生代收集器还是老年代收集器。

2024-04-03 09:43:48 1194

原创 常见的四种限流算法及基础实现

限流是对某一时间窗口内的请求数进行限制,保持系统的可用性和稳定性,防止因流量暴增而导致的系统运行缓慢或宕机。在高并发系统中,出于系统保护角度考虑,通常会对流量进行限流。在分布式系统中,高并发场景下,为了防止系统因突然的流量激增而导致的崩溃,同时保证服务的高可用性和稳定性,限流是最常用的手段。

2024-04-01 11:00:38 597

原创 JVM常见垃圾收集算法

分配的依据是对象的生存周期,或者说经历过的 GC 次数。对象创建时,一般在新生代申请内存,当经历一次 GC 之后如果对还存活,那么对象的年龄 +1。当一块内存用完了,将还存活的对象复制到另一块上面,然后再把刚刚用完的内存空间一次清理掉。,标记过程同标记-清除算法,但是在后续步骤不是直接对对象进行清理,而是让所有存活的对象都向一侧移动,然后直接清理掉端边界以外的内存。最基础的算法,分标记和清除两个阶段:首先标记处所需要回收的对象,在标记完成后统一回收所有被标记的对象。新创建的对象,都会先分配到Eden区,

2024-03-28 15:52:43 1094

原创 如何保证缓存与数据库的双写一致性?

MySQL 和 Redis 都是常见的数据存储方案,MySQL 用于存储结构化数据,Redis 用于存储非结构化数据。在一些高并发场景下,为了提升系统的性能,我们通常会将数据存储在 Redis 缓存中,并通过 Redis 缓存来提高系统的读取速度。但是,Redis 缓存中的数据是不稳定的,可能会随时被删除或者被更新,因此需要和 MySQL 中的数据进行同步,保证数据的一致性。但是使用过缓存的人都应该知道,在实际应用场景中,要想实时刻保证缓存和数据库中的数据一样,很难做到。

2024-03-26 10:58:31 1251

原创 redis和redisson实现分布式锁

setnx 和 expire 不是原子性的操作,假设某个线程执行setnx 命令,成功获得了锁,但是还没来得及执行expire 命令,服务器就挂掉了,这样一来,这把锁就没有设置过期时间了,变成了死锁,别的线程再也没有办法获得锁了。释放锁时,先比较锁对应的 value 值是否相等,value值可以在加锁的时候把当前的线程 ID 当做value,并在删除之前验证 key 对应的 value 是不是自己线程的 ID,避免锁的误释放。看门狗续期前也会先判断是否需要执行续期操作,需要才会执行续期,否则取消续期操作。

2024-03-25 11:06:04 1121

原创 通俗易懂synchronized的底层原理

每个对象都是一个监视器锁(monitor),当monitor被占用时就会处于锁定状态,线程执行monitorenter指令时尝试获取monitor的所有权,过程如下:如果monitor的进入数为0,则该线程进入monitor,然后将进入数设置为1,该线程即为monitor的所有者。**指令执行时,monitor的进入数减1,如果减1后进入数为0,那线程退出monitor,不再是这个monitor的所有者。这是因为静态成员不属于任何一个实例对象,归整个类所有,不依赖于类的特定实例,被类的所有实例共享。

2024-03-21 20:01:18 702

原创 MySQL中Buffer pool、Log Buffer和redo、undo日志介绍

一个简单的做法 :在事务提交完成之前把该事务所修改的所有页面都刷新到磁盘,但是这个简单粗暴的做法有些问题另一个解决的思路 :我们只是想让已经提交了的事务对数据库中数据所做的修改永久生效,即使后来系统崩溃,在重启后也能把这种修改恢复出来。redo log的写入并不是直接写入磁盘的,InnoDB引擎会在写redo log的时候先写redo log buffer,之后以 一定的频率 刷入到真正的redo log file 中。所有的变更都必须先更新缓冲池中的数据,然后缓冲池中的脏页会以一定的频率被刷入磁盘中。

2024-03-21 17:17:20 800

原创 redis和rabbitmq实现延时队列

一般来说,producer 将消息投递到 broker 或者直接到queue 里了,consumer 从 queue 取出消息进行消费,但某些时候由于特定的原因导致queu 中的某些消息无法被消费,这样的消息如果没有后续的处理,就变成了死信,有死信自然就有了死信队列。例如,当用户完成某个操作后,系统可以将相关通知消息放入延迟队列,并设置一定的延迟时间,以便在合适的时机发送通知给用户。当QA和QB队列中的消息,达到设定的TTL(10s和40s)后,将进入指定的死信队列QD。组合实现延迟队列的效果。

2024-03-19 19:36:02 1342

原创 centos安装Jenkins并拉取git远程仓库的代码进行自动化构建部署

防止后续maven下载慢,可以添加阿里云的镜像到maven的setting.xml配置中,该命令的作用是将jar包复制到指定目录下,然后启动jar包,可自行修改。之后查看控制台输出,可以看到已经打包好的demo.jar,路径为。这里的管理员密码就是上一张图的初始密码,之后设置管理员账号密码。首先下载maven安装文件,此处我选择的版本是3.6.3,利用maven插件构建maven项目,名称为demo。启动后,控制台会生成一个管理员初始密码,先记下来。然后配置构建完成之后需要执行的命令,如下图。

2023-12-22 22:07:21 973

原创 scrapy批量爬取豆瓣电影排行信息

使用scrapy框架批量爬取豆瓣电影排行信息,首先看到豆瓣电影链接为经过分析,一共10页,第二页,第二页,…,第10页的规律是:分页规律 第N页分析完毕后,下一步开始创建项目。

2023-12-18 20:14:37 378

原创 Scrapy爬虫学习

继承scrapy.Spider类Spider):name = "dang" # 运行爬虫文件使用的名字allowed_domains = ["category.dangdang.com"] # 爬虫允许的域名,在爬虫的时候,如果不是此域名之下的url,会被过滤掉start_urls = ["https://category.dangdang.com/"] # 声明了爬虫的起始地址,可以写多个url,一般是一个def parse(self, response): # 解析数据的回调函数。

2023-12-13 22:03:36 1613

原创 python爬虫学习-批量爬取图片

爬取的网站为站长素材(仅做学习使用)爬取的目标网站为如果爬取多页,需要依次遍历每一页,经过分析跳转其它页面的规律如下。

2023-12-09 20:29:07 1356

原创 RabbitMQ学习二

Slf4j@[email protected]("触发return callback,");});由于每个消息发送时的处理逻辑不一定相同,因此ConfirmCallback需要在每次发消息时定义。具体来说,是在调用RabbitTemplate中的convertAndSend方法时,多传递一个参数:CorrelationData向交换机发送消息,并且添加confirmCallback@Test//创建CorrelationData。

2023-12-07 16:42:37 904

原创 RabbitMQ学习一

RabbitMQ学习RabbitMQ相关概念Virtual host数据隔离SpringAMQP第一种 基本消息模型第二种 WorkQueues模型第三种 发布订阅模型(fanout交换机)fanout交换机实例第四种 Direct交换机direct交换机实例基于注解的方式声明——direct交换机第五种Topic交换机基于注解的方式声明——Topic交换机消息转换器配置JSON转换器RabbitMQ相关概念其中包含几个概念:1. publisher:生产者,也就是发送消息的一方2. consum

2023-12-01 17:04:35 1057

原创 centos使用docker安装Mysql、Rabbitmq

name 是 容器别名,将 宿主机 5672端口映射到 容器内5672,and 端口15672端口映射到 容器内15672 端口,访问宿主机端口的时候会映射到对应容器端口, -d 表示后台运行。rabbitmq镜像尽量选择带-management后缀的,因为这个是自带Web监控页面。打开网址http://127.0.0.1:15672/安装docker的最新版本,不指定版本号即默认安装。查看docker运行状态。

2023-11-30 20:13:01 499

转载 为什么MySQL选择B+树做索引

B+树非叶子节点上是不存储数据的,仅存储键值,而B树节点中不仅存储键值,也会存储数据。2. 从业务场景上说,如果只选择一个数据那确实是hash更快,但是数据库中经常会选中多条这时候由于B+树索引有序,并且又有链表相连,它的查询效率比hash就快很多了,hash还需要解决冲突。:由于B+树的数据都存储在叶子结点中,非叶子结点均为索引,方便扫库,只需要扫一遍叶子结点即可,但是B树因为其分支结点同样存储着数据,我们要找到具体的数据,需要进行一次中序遍历按序来扫,

2023-04-16 14:40:06 102

原创 Spring中Bean的安全性问题--面试题

Spring中除了很多内置Bean以外,其他的Bean都是通过Spring配置来声明的,然后由Spring容器统一加载。如:class(全类名)、id(Bean的唯一标识)、Scope(作用域),之后Spring容器根据配置内容使用对应的策略来创建Bean的实例。因此,多例 Bean 是不存在线程安全问题的。在 Spring 定义的作用域中,其中有 prototype(多例 Bean)和 singleton(单例 Bean)。Spring框架里的bean,在获取实例的时候都是默认的。

2023-04-12 14:25:00 246

原创 volatile、synchronize的特点和区别

各位,先大概了解什么是线程安全吧?

2023-04-04 21:43:22 456

原创 Spring中Bean的注入方式

随后编写spring的xml文件中,name属性是class属性的一个别名,class属性指类的全名,因为在SpringAction中有一个公共属性Springdao,所以要在标签中创建一个标签指定SpringDao。Spring使用静态工厂方法来创建Bean实例时,Spring将先解析配置文件,并根据配置文件指定的信息,通过反射调用静态工厂类的静态工厂方法,并将该静态工厂方法的返回值作为Bean实例,在这个过程中,Spring不再负责创建Bean实例,静态工厂和实例化工厂的区别。

2023-04-02 16:13:14 373

原创 HashMap、ConcurrentHash面试题

插入到链表之后,会将链表的长度更新,如果链表长度大于等于8的话,会将该链表更新会红黑树。Segment数组的意义就是将一个大的table分割成多个小的table来进行加锁,也就是上面的提到的锁分离技术,而每一个Segment元素存储的是HashEntry数组+链表,这个和HashMap的数据存储结构一样。(2)如果Node节点是红黑树节点,会将key value封装成一个红黑树的Node节点将其添加到红黑树中,并且在这个过程中会判断红黑树是否存在要插入的key,如果存在该key,则直接更新value即可。

2023-03-29 16:39:18 187

原创 免费分享一个springboot+vue的办公系统

分享一个适合练手的springboot+vue的办公系统

2023-03-24 20:31:37 740 1

原创 基于ssm的BBS社区论坛系统

该项目可以用作计算机毕业设计、Java项目学习使用。运行环境 :idea+mysql5.7+jdk8+maven前端基于Vue开发后端是mysql+Spring+mybatis+SpringMVC注:该项目没有前后端分离部署访问链接本地后台访问:http://localhost:8080/leek_bbs/stair/admin/login本地前台访问:http://localhost:8080/leek_bbs/index。

2023-03-23 13:01:46 1137 4

原创 Spring源码阅读(一)

一、初始化流程:1、spring容器的初始化时,通过this()调用了无参构造函数,主要做了以下三个事情:(1)实例化BeanFactory【DefaultListableBeanFactory】工厂,用于生成Bean对象(2)实例化BeanDefinitionReader注解配置读取器,用于对特定注解(如@Service、@Repository)的类进行读取转化成 BeanDefinition 对象,(BeanDefinition 是 Spring 中极其重要的一个概念,它存储了 bean 对象的

2021-03-06 15:17:30 114 1

原创 Spring 循环依赖的三种方式 !

Spring 循环依赖的三种方式 !第一种:构造器参数循环依赖Spring容器会将每一个正在创建的Bean 标识符放在一个“当前创建Bean池”中,Bean标识符在创建过程中将一直保持在这个池中。因此如果在创建Bean过程中发现自己已经在“当前创建Bean池”里时将抛出BeanCurrentlyInCreationException异常表示循环依赖;而对于创建完毕的Bean将从“当前创建Bean池”中清除掉。我们把三个Bean交给Spring管理,并用有参构造实例化StudentA有参构造是Stu

2021-02-25 21:36:00 128

原创 Async

异步方法使用static修饰异步类没有使用@Component注解(或其他注解)导致spring无法扫描到异步类异步方法不能与被调用的异步方法在同一个类中类中需要使用@Autowired或@Resource等注解自动注入,不能自己手动new对象如果使用SpringBoot框架必须在启动类中增加@EnableAsync注解@Async异步方法默认使用Spring创建ThreadPoolTaskExecutor。默认核心线程数:8,最大线程数:Integet.MAX_VALUE,队列使用LinkedB

2021-01-21 15:17:39 493

转载 JUC--集合不安全类

JUC

2020-11-16 10:52:31 99

原创 JUC-阻塞队列

这里写目录标题为什么要用阻塞队列?有什么好?实现类BlockQueue的一些方法生产者消费者模式的传统版实现?(synchronized版和Lock版)生产者消费者模式的阻塞队列版实现?为什么要用阻塞队列?有什么好?阻塞就是线程挂起,当满足条件后,又被唤醒。为什么需要BlockingQueue?不再需要关心线程阻塞和唤醒的时机,因为BlockQueue包办了这个细节在阻塞队列出现前,程序员必须手动控制这些细节,兼顾效率和线程安全,增加了开发难度实现类*ArrayBlockingQueue

2020-11-16 10:47:43 120

原创 ThreadLocal保证线程安全-面试题

ThreadLocalMap 使用 ThreadLocal 的弱引用作为 key,如果一个 ThreadLocal 没有外部强引用来引用它,那么系统 垃圾回收 的时候,这个 ThreadLocal 势必会被回收,这样一来,ThreadLocalMap 中就会出现 key 为 null 的 Entry,就没 有办法访问这些 key 为 null 的 Entry 的 value,如果当前线程再迟迟不结束的话,这些 key 为 null 的 Entry 的 value 就会一直存在,造成内存 泄漏。

2020-11-16 10:45:43 95

原创 springboot配置ELK日志分析系统

springboot配置ELK日志分析系统环境配置下载组件配置Elasticsearch配置Kibana配置Logstashspringboot服务测试环境配置下载组件下载组件官网https://www.elastic.co/cn/downloads配置Elasticsearch修改配置文件vim elasticsearch/config/elasticsearch.yml//配置外网连接,如果不能用请检查防火墙配置node.name: node-1network.host: 0.0.

2020-09-16 10:00:13 440

原创 fisco 在原有机构上添加新的观察节点

安装console控制台环境配置java8以上并配置JAVA_HOME。安装命令//下载console控制台cd ~/fisco && curl -#LO https://github.com/FISCO-BCOS/console/releases/download/v1.1.0/download_console.sh && bash download_console.sh如果上面链接慢 切换gitee仓库curl -LO https://gitee.com

2020-09-16 09:58:35 607

原创 springboot配置@spring.profiles.active@配置

一 pom.xml配置如下:<profiles> <profile> <id>dev</id> <properties> <spring.profiles.active>dev</spring.profiles.active> </properties> <act

2020-08-17 10:26:39 6914

原创 mybatis-plusjava.lang.IndexOutOfBoundsException:Index:11,Size:11

使用mybatis plus报错:mybatis-plusjava.lang.IndexOutOfBoundsException:Index:11,Size:11lombok中@Builder注解 :当数据库字段和实体类字段个数一样 可以不用加显示的声明构造方法, 但是如果需要加一些不属于该表的字段就需要加显示的声明构造方法,或者使用@AllArgsConstructor @NoArgsConstructor来声明构造。或者不用@Builder注解。 @TableField(exist = fa

2020-08-07 18:37:54 2785

原创 基于以太坊dpos实现

GitHub地址 https://github.com/TTCECO/gttc基于以太坊go-ethereum的DPOS实现一 构建以太坊1 git clone https://github.com/TTCECO/gttc.git2 make gttc(make all)二.构建有多个节点的以太坊链Before read this instruction, please make sure the gttc, bootnode and puppeth already compiled and

2020-06-02 11:20:50 1108

原创 Logback.xml

<?xml version="1.0" encoding="UTF-8"?><configuration scan="true" scanPeriod="10 seconds" debug="false"> <!-- 项目名称 --> <property name="PROJECT" value="wsc-score" /> <!-- 日志路径 --> <property name="PATH" value=

2020-06-02 11:15:17 131

转载 跳跃链表

跳跃链表1跳跃链表2

2020-05-10 09:33:24 96

原创 node-grpc_demo

注意:这里是不通过proto.exe 生成一系列js文件 实现的。1 npm init --建立项目2 安装protoc以及grpc插件npm install grpc-tools --save-devnpm install google-protobuf --savenpm install grpc --save注意:完成后 需要保证在node-modules文件下有grpc-...

2020-04-11 09:54:11 276

转载 redis集群

redis集群

2020-03-26 18:17:56 75

空空如也

空空如也

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

TA关注的人

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