自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

简单简单小白

人只有被逼到绝境了才知道自己多么强大!

  • 博客(63)
  • 资源 (10)
  • 问答 (3)
  • 收藏
  • 关注

原创 mybatis-plus 的saveBatch性能分析

mybatis-plus 的service里面的saveBatch()真的是批量插入吗?性能如何?

2024-03-18 16:55:51 1199 3

原创 Redis缓存与数据库如何保证一致性

如果对缓存命中率要求较高的话就得采用更新数据库再更新缓存的方案,如果对命令率要求不高则采用先更新数据库再删除缓存。前面也分析了这两种方案都有缺陷,都可能在并发情况下存在缓存与数据库不一致。那么针对这两种情况做下优化。

2023-12-28 14:10:30 1736 14

原创 Spring Cloud 与dubbo微服务架构选型

最终,选择框架取决于项目的需求和团队的背景。如果团队已经熟悉Spring框架,项目规模不是特别大,可以考虑Spring Cloud。如果项目需要高性能和扩展性,尤其是在大规模的微服务架构中,Dubbo可能更合适。此外,可以考虑混合使用两者以充分利用各自的优势。无论如何,都需要仔细评估并根据实际情况做出明智的决策。

2023-09-11 17:21:56 4846 21

原创 使用ResponseBodyAdvice返回值为String出现cannot be cast to java.lang.String异常

由于项目中为了全局返回统一的JSON格式,使用ResponseBodyAdvice进行拦截,拦截的时候会将返回的信息统一一个对象返回到前端。但是有的同事将一个String的响应对象返回,结果报错com.example.demoweb.config.ApiResponse cannot be cast to java.lang.String

2023-07-08 18:46:43 26417 11

原创 Mysql ID生成策略的优缺点以及如何选择

单机或小规模应用:对于规模较小、不需要分布式支持的应用,ID自增是简单而可行的选择。它易于使用和理解,并能保证唯一性。大规模分布式系统:在需要分布式支持、有序和唯一ID的大规模系统中,雪花算法是更合适的选择。它能够生成分布式环境下的有序且唯一ID,适应大规模的分布式架构。分布式环境下的全局唯一ID:如果全局唯一性是主要要求,并且不需要严格的有序性,UUID是一个可选的策略。它可以在分布式环境中生成全局唯一的ID,适用于分布式系统、大规模系统或需要独立生成ID的场景。

2023-06-30 14:57:48 23163

原创 记录一次并发情况下的redis导致服务假死的问题

这里默认值是false,连接释放的时候先释放resource 然后再将dataSource置为null,那如果是并发的情况下话,那有可能再下一个线程进来的时候dataSource已经就是null了,在执行第2步的时候dataSource刚好被置为null,那这个时候就无法释放连接了。,给出的解决方案是升级jedis的jar包到2.10.2版本以上,换成高版本的以后问题果然就解决了。这里要注意一下的是jedis的版本跟spring-data-redis的版本是有一个对应关系的。查看redis的源码。.....

2022-08-29 15:27:45 39346

原创 解决typora提示This beta version of Typora is expired, please download and install a newer version

对于喜欢使用markdown来写文档的人,肯定对于typora不陌生,typora有着比较简介清爽的界面,功能也比较丰富。前几年一直是免费给大家使用,但是今年就突然收费了。官方最初也提供的beta版本给大家免费使用,但是最近使用的时候会提示,提示我们需要安装最新版本。...

2022-08-29 15:24:02 43710 9

原创 一些常用的命令(持续更新)

常用命令,docker、linux。git等等。

2022-05-12 12:34:28 37607

原创 mybatis使用拦截器动态修改sql脚本(更新、插入、查询)

MyBatis拦截器修改SQL语句背景最近公司项目想要做成一个云SaaS平台,需要不同用户能看到不同数据,需要做到数据的物理隔离。目前的方案就是在每张业务表中增加一个platform_id字段,来区分不同的租户,这就意味着在原来系统层面需要再增删改查都需要带上platform_id字段作为标识。如果在每个脚本上都手动加上这个字段的话那就太麻烦,太复杂了。所以就想使用mybatis 的拦截器Interceptor来实现。准备自定义注解@PlatformTag @PlatformTagIngore

2022-03-02 17:29:54 13383 33

原创 mybatis-plus内置雪花算法主键重复问题

Mybatis-Plus 使用ID_WORKER生成主键id重复问题描述目前项目使用的id是mybatis-plus 内置的主键生成策略 ID_WORKER ,最近测试在做性能压测,部署架构是单服务集群的部署方式,然后就发现了id重复的异常,异常如下问题分析首先分析的是id生成是不是就是重复了,先关掉其中一台机器,单机跑,这个时候发现压到1000的并发都没有出现过id重复,这个说明单机情况下不存在id重复问题,说明只有集群的情况下才会出现。再分析一下id生成的几个要素,雪花算法的核心能影响

2021-05-20 09:58:30 53423 26

原创 分布式链路追踪Skywalking部署应用

Skyworking 部署以及远程应用背景最近公司项目在做性能压测,想自己先分析一下项目各个接口耗时调用,以及接口的调用链路,方便分析问题优化项目应用。市面上的链路追踪工具对比目前市面上使用较多的工具有 Zipkin、 Pinpoint、SkyWalking、CATs,下面做一个对比对比项ZipkinPinpointSkyWalkingCAT实现方式拦截请求,发送(HTTP,mq)数据至zipkin服务java探针,字节码增强java探针,字节码增强代码埋

2021-05-11 17:57:59 895

原创 为什么选择Yapi

为什么选择Yapi?Yapi介绍YApi 是高效、易用、功能强大的 api 管理平台,旨在为开发、产品、测试人员提供更优雅的接口管理服务。可以帮助开发者轻松创建、发布、维护 API,YApi 还为用户提供了优秀的交互体验,开发人员只需利用平台提供的接口数据写入工具以及简单的点击操作就可以实现接口的管理Yapi与RAP2对比YAPIRAP2部署yapi 部署简单,只需要nodejs,git,mongodb,甚至支持可视化部署,启动一个服务,填写配置后自动完成,支持docke

2020-09-08 15:17:32 1774

原创 Spring 数据校验 @Valid 统一异常处理以及统一日志打印

controller 测试类import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.validation.Errors;import org.springframework.web.bind.annotation.RequestMapping;import org.spring...

2018-12-11 19:55:10 5715 3

原创 IOC容器初始化的过程(三) — BeanDefination的的注册

IOC容器的设计(三) — IOC的初始化过程之BeanDefination的注册前面已经完成配置的解析,还是前面的例子,现在水已经找到了,已经准备好了,下面要做的就是将水装进水桶里面。其实前面已经拿到BeanDefination已经是可以使用了,剩下的工作就是将BeanDefination注册到IOC容器中,其实就是放入一个HashMap中,这个HashMap的定义在DefaultListab...

2018-12-09 16:01:03 449

原创 IOC容器初始化的过程(二) — BeanDefination的资源的载入与解析

IOC容器的设计(二) — IOC的初始化过程之BeanDefination资源的载入与解析在完成对Resource的定位后,下面类分析一下如何将Resource进行解析,BeanDefination的信息如何载入。BeanDefination载入的过程主要是将Resource对象转成Doc对象进行读取解析,然后使用BeanDefination对象来进行持有,最后将BeanDefination的...

2018-11-28 21:24:43 526

原创 IOC容器初始化的过程(一) — BeanDefination的Resource定位

IOC容器初始化的过程(一) — BeanDefination的Resource定位IoC的初始化就是由前面所提到的refresh()方法来启动的,这个启动包含BeanDefination的Resource定位、载入以及注册三个过程。Spring将IoC的初始化过程分开来做,不同的模块由不同的类去实现,这样可以让用户灵活的对这些个过程进行拓展。下面通过一个编程方式使用IoC的方式来开始了解Io...

2018-11-18 16:44:40 457

原创 IOC容器的设计(三) —ApplicationContext 的应用场景与设计原理

IOC容器的设计(三) — ApplicationContext 的应用场景与设计原理应用场景相比较基于BeanFactory拓展的那些容器,ApplicationContext是开发人员经常用到的,ApplicationContext除了能实现那些基本功能之外,还附加了BeanFactory不具备的搞基特性,比如支持不同的信息源,能进行实现国际化(继承MessageResource),继...

2018-11-07 17:29:21 662

原创 IOC容器的依赖注入

IOC的依赖注入(源码分析)前面的IOC容器的初始化,已经完成了BeanDefination的数据映射,将BeanDefination设置beanDefinitionMap中,现在数据已经有了,但是还没有注入到容器中,下面看下如何进行注入。依赖注入过程:在前面的BeanFactory接口中经常看到getBean()方法,现在看下在AbstractBeanFactory中对getBean()...

2018-11-07 17:24:37 376

原创 IOC容器的设计(一) — BeanFactory 的应用场景

IOC容器的设计(一) — BeanFactory 的应用场景BeanFactory提供了最基本的IoC容器的基本功能,是提供了所有IoC容器所要遵守的基本服务契约,是IoC容器遵守的最底层和最基本的编程规范。BeanFactory只是一个基本接口,没有任何实现,具体实现是有DefaultListBeanFactory,XmlBeanFactory、ApplicationContext等等,这...

2018-10-14 17:56:51 846

原创 ThreadLoacal 理解以及源码分析

ThreadLoacal 理解以及源码分析问题什么是ThreadLocalThreadLocal的目的和作用ThreadLocal原理?ThreadLocal使用实例ThreadLocal使用场景ThreadLocal介绍 线程内局部变量。用于实现线程内数据共享,即对于一个相同的代码模块,每个线程访问的时候代码模块内的变量互补干扰,互不影响。Threa...

2018-06-15 16:22:04 937

原创 代理的理解(动态代理与静态代理)

静态代理与动态代理(JDK、CGLIB)问题引入什么是静态代理?什么是动态代理?静态代理和动态代理的区别是什么?JDK动态代理和CGLIB动态代理的区别?静态代理 主要是通过代码的业务来处理,在编译之前就已经处理好。例子先创建目标类/** * Created on 2018/6/6 * 创建目标类接口 * @author wang....

2018-06-08 00:05:11 2444

原创 ContextLoaderListener 加载过程

ContextLoaderListener 加载过程需要注意的是:ContextLoader.propertiesorg.springframework.web.context.WebApplicationContext=org.springframework.web.context.support.XmlWebApplicationContextContextLoader...

2018-06-01 12:17:12 472

原创 synchronized 对象锁和类锁的区别

synchronized 对象锁和类锁的区别synchronized 描述 一段synchronized的代码被一个线程执行之前,他要先拿到执行这段代码的权限, 在Java里边就是拿到某个同步对象的锁(一个对象只有一把锁); 如果这个时候同步对象的锁被其他线程拿走了,他(这个线程)就只能等了(线程阻塞在锁池等待队列中)。 取到锁后,他就开始执行同步代码(被synchronized...

2018-05-31 20:36:40 8677 2

原创 Mysql 数据库优化

Mysql 数据库优化查询时指定列在select 是禁止使用select *from table,尽量指定自己需要使用的列,下面测试一下指定列和不指定的执行时间准备表和数据:create table user_test.user_info( id bigint auto_increment primary key, username var...

2018-05-31 16:36:07 1908

原创 ClasssLoader

ClasssLoader 入门了解概念类加载就是用来加载类到虚拟机中。 Java源程序通过编译之后,生成java字节码文件(.class文件),类加载器负责读取(loadClass())加载字节码文件,转换成一个java.lang.Class实例。类加载器双亲委派模型为什么要使用双亲委派模型:避免类的重复加载防止内存中出现多份同样的字节码 比如B...

2018-05-12 20:03:11 442

原创 源码分析HashMap的几个问题(JDK1.7)

如何存储数据 (put、get) put数据public V put(K key, V value) { if (table == EMPTY_TABLE) { inflateTable(threshold); } if (key == null) return putForNullKey...

2018-04-09 17:55:55 579 1

原创 Java 处理SFTP使用代理进行上传下载

概述最近做了一个需求,需要从内网访问外网sftp服务器,上传文件至SFTP。所以需要使用到代理服务器,从代理服务器进行中转。核心代码/** * Description: 连接SFTP * * @param ip * FTP服务器ip * @param port * FTP服务器端口 *

2017-11-08 18:41:30 7768 1

原创 Java 中使用递归遍历文件目录

Java 中使用递归遍历文件目录上周去新浪爱彩面试,面试中遇到一个使用递归遍历文件目录的题目,由于对文件的操作不熟悉,大概的思路说出来了,但还是没写出来。回来后就查了一下资料,感觉也不是很难,下面就分享一下如何处理。解题思路从电脑中获取文件目录,建立函数对其遍历在这个函数中需要对该目录中的每个文件进行判断,如果文件还是目录,则调用函数本身继续对其进行遍历,如果文件不是目录,则直接输出文件名。代

2017-03-08 11:42:15 2793

原创 百度地图demo,根据ip展示地图显示地区,并在地图上高亮显示

需求提出:使用百度地图展示用户注册时的地区并高亮显示。方案设计:根据用户注册时获取用户的ip地址,根据ip地址获取经纬度,再根据经纬度显示在地图上展示,并高亮。解决需求:1.获取用户注册ip (比较简单,省略);2.根据ip地址获取经纬度。使用百度地图的api:http://lbsyun.baidu.com/index.php?title=webapi/ip-api,即可;3.

2017-02-07 16:08:35 10372

原创 Spring JdbcTemplate 多参数查询,以及like模糊查询处理方式

最近在使用spring 的 jdbctemplate 查询,在 Spring 的 IoC 容器中配置一个 JdbcTemplate 的 bean,将 DataSource 注入进来,然后再把JdbcTemplate 注入到自定义DAO 中。 进入正题,用原生的jdbc就会存在sql拼接问题,拼接的话就自然而然的会出现sql注入漏洞的问题,我们要避免sql注入漏洞,无非就是...

2016-12-01 15:21:00 29973 7

原创 redis设计与实现读书笔记(第一章)

Redis设计与实现读书笔记(第一章)一:内部数据结构与对象1.sds的定义:Struct sdshdr{//记录buf数组中已使用的字节的数量 保存字符串的长度Int len;//数组中未使用的字节的数量Int free;//字节数字,用于保存字符串Char buf[];} SDS遵循C字符串以空字符结尾。2.SDS与C字符串的区别C语言的

2016-09-30 15:59:10 494

原创 Git 分支管理(Eclipse)

Git 分支管理(Eclipse)几乎每一种版本控制系统都以某种形式支持分支。使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。在很多版本控制系统中,这是个昂贵的过程,常常需要创建一个源代码目录的完整副本,对大型项目来说会花费很长时间。有人把 Git 的分支模型称为“必杀技特性”,而正是因为它,将 Git 从版本控制系统家族里区分出来。Git 有何特别之处呢?Git

2016-09-27 20:39:13 3752

原创 Shiro 如何主动调用doGetAuthorizationInfo方法

Shiro如何主动调用doGetAuthorizationInfo方法(一)提出问题最近在看shiro框架,使用shiro控制角色的权限,突然遇到一个问题,就是在每次登陆的时候shiro框架才会调用认证方法doGetAuthorizationInfo,才会去初始化权限,然后放到缓存,之后只要是不登陆就不会再去调用认证方法doGetAuthorizationInfo,所以这样就会存在一个...

2016-05-04 17:06:30 22471 9

原创 eclipse使用git插件踩过的坑-如何解决冲突(一)

第一次使用git,突然觉得很新奇,但是由于git是个新东西,自己也不熟悉,所以觉得有点坑。不说废话了,直接入正题,相信大家用svn都用的很熟,对于svn中代码的冲突解决的话也是很好解决的,update后,有冲突则会直接在文件上显示那些部分有冲突,我们只需要解决冲突,提交就ok了。但是你使用git的时候就会发现,在eclipse中Team后根本没有发现任何解决冲突的选项。为什么会这样呢?我自己的理解

2016-03-30 16:46:39 8702

转载 【React Native开发】React Native库版本升级(Upgrading)与降级讲解

1.更新React Native项目依赖包版本首先我们需要查看本地的React Native的版本,命令行输入如下命令:react-native --version如果之前我们是按照直接命令行npm install -g react-native-cli创建的话,那么应该会出现如下的情况:会发现你的版本号是1.7,这其实是我本地cli的版本,我们需要执行如下的代码npm u

2016-01-20 17:27:38 4927

原创 一段代码让你学会Python (借鉴)

#_*_ coding: utf-8 _*_ 此处是设置编码是utf-8,同时文件本身也必须是utf-8编码#Quick Python Script Explanation for Progeammers#给程序员的超快速的Py脚本解说 这里是单行注释import os #import 为导入其他代码模块的关键字 os为模块名 及导入os.py os.py可以是自己创建的模块也可以

2015-12-25 15:06:35 719

原创 Redis学习笔记(一)

Redis学习笔记一、redis集群1.Redis集群是一个实现分布式并且允许单点故障的Redis高级版本。为了数据的一致性,会牺牲部分数据允许单点故障。二、redis的master-slave (主从复制)1.Redis在master是非阻塞模式,也就是说在slave执行数据同步的时候,master是可以接受客户端的请求的,并不影响同步数据的一致性,然而在slave端是阻塞模式的

2015-12-21 17:46:14 501

原创 消息队列的主要应用场景

前面也介绍过消息队列如何进行选型,今天讲一下消息队列的主要应用场景。首先大家思考一个问题,我们为什么要使用消息队列,消息队列给我们带来了哪些好处呢?我们最常想到就是使用消息队列解决应用耦合,异步消息,流量削峰等问题。下面我们根据这些应用场景简单分析一下。

2024-04-19 10:31:10 896

原创 消息队列选型(RabbitMq、RocketMq、Kafaka)

当引入消息队列时,常见的选择包括ActiveMQ、Kafka、RabbitMQ和RocketMQ。然而,近年来,ActiveMQ的活跃度已经下降,很多公司已经不再使用这款消息队列中间件,因此在比较中不再涉及该产品。其实如果一般来说你业务使用mq,对消息的安全性要求较高,选择RocketMq;如果对于一些使用mq数据量比较大的场景,比如日志相关的,对消息的丢失要求不高的情况下,选择kafaka。

2024-04-19 10:21:38 980

原创 你是怎么看待程序员不写注释这一事件的呢?

程序员对代码注释可以说是又爱又恨又双标……你是怎么看待程序员不写注释这一事件的呢?

2023-10-10 16:35:41 1766 16

windos 一键安装jupyter

1.通过pyinstaller 打包jupyter 服务为一个windows exe 应用程序,用户通过一键点击exe 可以安装并且启动jupyter服务 2.通过店家installer.exe应用程序安装开机自启服务,用户开关机并不会影响jupyter的启动 3.此程序会对本地python环境进行判断,zip包自带面安装的python包,版本为:3.11.4 4.点击jupyter.exe程序会安装自动安装pip和jupyter 模块,并且会配置windows的环境变量,如果你本地已经安装过了python、pip、jupyter 都不会影响启动。 5.此处的exe是启动jupyter kernelgateway,如果你想要启动jupyter真个服务的话,可以修改源码从新打包,代码地址:https://github.com/LBJWt/windows-jupyter

2023-08-23

使用百度地图demo,可用于用户注册显示地区

此demo用于用户注册时获取用户的ip,根据ip获取经纬度,展示在地图上,并高亮。只做了经纬度展示地图高亮,ip转经纬度:http://lbsyun.baidu.com/index.php?title=webapi/ip-api

2017-02-07

git 分支管理

几乎每一种版本控制系统都以某种形式支持分支。使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。在很多版本控制系统中,这是个昂贵的过程,常常需要创建一个源代码目录的完整副本,对大型项目来说会花费很长时间。

2016-09-27

json字符串实体bean或者List互转(gson和jackson,支持泛型)

json字符串实体bean或者List互转(gson和jackson,支持泛型),支持json的格式化,所需要的包在代码也有说明。还有少的可以告知我,谢谢

2016-04-15

linux 安装mysql编码处理 远程连接

linux下安装mysql,utf-8编码处理,以及远程连接

2015-12-01

Flex chart line 线性表(单线和双线)

使用flex绘制折线图,分为单线和双线,flash工具为4.5,可以直接运行

2015-06-16

二维码识别ios和Android

使用js控制,使用同一个链接识别二维码是ios还是android设备,跳转不同的链接进行下载

2015-02-04

ACM程序设计

ACM程序详细说明,想学习C的同学可以进来看看的

2013-11-14

蓝桥杯往年题目

蓝桥杯C语言类型题目,部分答案,很经典的,希望大家会喜欢

2013-03-08

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

TA关注的人

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