自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 GraalVM介绍:云原生时代的JVM

GraalVM是 Oracle 开源的一款通用虚拟机产品,官方称之为 Universal GraalVM,是新一代的通用多语言高性能虚拟机。它可以运行多种编程语言,如Java、JavaScript、Python等,并提供了即时编译(JIT)和AOT编译(AOT)的支持。GraalVM还支持在不同语言之间互相调用,以及嵌入到其他应用程序中使用。这使得GraalVM成为一个非常强大和灵活的工具,可以满足不同应用场景的需求。

2024-05-18 09:32:44 870

原创 Oracle基础包UTL_FILE

用于读写OS文件.使用该包访问OS文件时,必须要为OS目录建立相应的DIRECTORY对象…当用户要访问特定目录下的文件时,必须要具有读写DIRECTORY对象的权限.在使用UTL_FILE包之前,应首先建立DIRECTORY对象.

2024-05-18 09:31:56 606

原创 Redis实现UV统计

UV统计是很多电商常见的一个需求,与PV不同的是,PV是统计应用的点击量或者浏览量,UV是单个页面单个用户去重之后的访问次数。如果用redis实现该功能,PV完全可以用计数器实现,UV可能大家会想到用redis的set不断去添加,但是如果你的网站并发量非常大,你将维护以后巨大的set。这时候就要介绍一个redis专门用于该类型场景的数据结构HyperLogLog了。

2024-05-03 10:31:08 341

原创 Redis实现用户签到

我们针对签到功能完全可以通过mysql来完成,比如说以下这张表用户一次签到,就是一条记录,假如有1000万用户,平均每人每年签到次数为10次,则这张表一年的数据量为 1亿条每签到一次需要使用(8 + 8 + 1 + 1 + 3 + 1)共22 字节的内存,一个月则最多需要600多字节我们如何能够简化一点呢?其实可以考虑小时候一个挺常见的方案,就是小时候,咱们准备一张小小的卡片,你只要签到就打上一个勾,我最后判断你是否签到,其实只需要到小卡片上看一看就知道了。

2024-05-03 10:20:44 725

原创 Java处理CSV类库:OpenCSV

官网:目前最新版本4.0,更新比较频繁,4.0版本还不够成熟。支持注解(根据名称或者位置)支持自定义转换器AbstractBeanField支持跳跃行skipLine和数据过滤Filter@CsvBindByName:根据CSV输入中该字段的标题名,将一个bean字段映射到CSV文件中的一个字段, 可以控制列名,按名字列名的先后顺序好像是按照字母排序的。

2024-04-17 20:54:00 1205

原创 Oracle执行计划优化SPM案例

执行下面这段代码,发现子库存表走了全表扫描子库存表里面的索引于是我们加上库存组织后再进行查询仍旧是全表扫描这时我们使用hint语法,强制走索引。

2024-04-17 19:19:51 238

原创 java中Hutools常用方法

Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅。

2024-04-07 23:02:26 1279 1

原创 Godot插值、贝塞尔曲线和Astar寻路

数学中用于线性拟合,游戏应用可以做出跟随效果(宠物跟随、npc跟随)

2024-04-07 22:42:14 690

原创 redis缓存穿透、缓存击穿、缓存雪崩及其解决方法

第一种方法比较好理解,就是当数据库中查不到数据的时候,我缓存一个空对象,然后给这个空对象的缓存设置一个过期时间,这样下次再查询该数据的时候,就可以直接从缓存中拿到,从而达到了减小数据库压力的目的。第二种方式使用了加锁的方式,锁的对象就是key,这样,当大量查询同一个key的请求并发进来时,只能有一个请求获取到锁,然后获取到锁的线程查询数据库,然后将结果放入到缓存中,然后释放锁,此时,其他处于锁等待的请求即可继续执行,由于此时缓存中已经有了数据,所以直接从缓存中获取到数据返回,并不会查询数据库。

2024-03-24 22:40:27 874

原创 常见6种React Hook用法

PS:class组件中this.setState更新是state是合并, useState中setState是替换。

2024-03-24 22:31:03 703

原创 godot shader参考

有点像PS的混合选项,因为shader无法栅格化,所以有需求的话可以加入opencv对图像进行处理。原理是获取图像的A通道进行膨胀+高斯模糊+uv移动旋转。左图是原图,右图是shader的效果。

2024-03-10 17:12:55 511

原创 Spring和Struts比较

1、Struts2是类级别的拦截, 一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上SpringMVC就容易实现restful url,而struts2的架构实现起来要费劲,因为Struts2中Action的一个方法可以对应一个url,而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了。8、Spring MVC和Spring是无缝的。

2024-03-10 17:03:54 532

原创 四种垃圾回收算法

标记整理算法是针对复制算法在对象存活率较高时持续复制导致效率较低的缺点进行改进的,该算法是在标记-清除算法基础上,不直接清理,而是使存活对象往一端游走,然后清除一端边界以外的内存,这样既可以避免不连续空间出现,还可以避免对象存活率较高时的持续复制。分代收集算法就是目前虚拟机使用的回收算法,它解决了标记整理不适用于老年代的问题,将内存分为各个年代,在不同年代使用不同的算法,从而使用最合适的算法,新生代存活率低,可以使用复制算法。该算法先标记,后清除,将所有需要回收的算法进行标记,然后清除;

2024-03-03 21:40:57 547

原创 类加载器分类

(3)系统类加载器(system class loader)也叫应用类加载器:它根据Java应用的类路径(CLASSPATH)来加载Java类。类加载器(Class Loader)是Java虚拟机(JVM)的一个重要组件,负责加载Java类到内存中并使其可以被JVM执行。(2)扩展类加载器(extensions class loader):它用来加载Java的扩展库。(1)启动类加载器(Bootstrap ClassLoader)用来加载java核心类库,无法被java程序直接引用。

2024-03-03 21:36:19 484

原创 Java六种常用线程创建执行方法

注意:Executors的底层其实也是基于线程池的实现类ThreadPoolExecutor创建线程池对象的。优点:线程任务类只是实现接口,可以继续继承类和实现接口,扩展性强。缺点:线程类已经继承Thread,无法继承其他类,不利于扩展。缺点:多一层对象包装,如果线程有执行结果是不可以直接返回的。调用线程对象的start()方法启动线程(启动后还是执行run方法的)优点:线程任务类只是实现接口,可以继续继承类和实现接口,扩展性强。调用线程对象的start()方法启动线程。创建MyThread类的对象。

2024-02-18 18:25:49 1169

原创 Java volatile的作用

当一个共享变量被volatile修饰时,它会保证修改的值会立即被更新到主存,当有其他线程需要读取时,它会去内存中读取新值。而普通的共享变量不能保证可见性,因为普通共享变量被修改之后,什么时候被写入主存是不确定的,当其他线程去读取时,此时内存中可能还是原来的旧值,因此无法保证可见性。另外,通过synchronized和Lock也能够保证可见性,synchronized和Lock能保证同一时刻只有一个线程获取锁然后执行同步代码,并且在释放锁之前会将对变量的修改刷新到主存当中。因此可以保证可见性。

2024-02-18 18:24:53 861

原创 Redisson看门狗机制

网上redis分布式锁的工具方法,大都满足互斥、防止死锁的特性,有些工具方法会满足可重入特性。如果只满足上述3种特性会有哪些隐患呢?redis分布式锁无法自动续期,比如,一个锁设置了1分钟超时释放,如果拿到这个锁的线程在一分钟内没有执行完毕,那么这个锁就会被其他线程拿到,可能会导致严重的线上问题。既然存在锁过期而任务未执行完毕的情况,那是否有一种可以在任务未完成时自动续期的机制呢,几年前在redisson中找到了看门狗的自动续期机制,就是解决这种分布式锁自动续期的问题的。

2024-02-03 18:07:25 3968 2

原创 详解跨域(JSONP和CORS)

同源策略(Same Origin Policy): 同源是指域名,协议,端口完成一致,那么这两个url就是同源。同源策略是一种约定,它是浏览器最核心也最基本的安全功能,也是浏览器故意设置的一个功能限制。如果缺少了同源策略,浏览器很容易受到XSS、CSFR等攻击。使用代码window.origin或者location.origin可以获取当前的源。源 = 协议+域名+端口号。

2024-02-03 17:38:45 1691

原创 布隆过滤器四种实现(Java,Guava,hutool,Redisson)

1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列的随机映射函数(哈希函数)两部分组成的数据结构。用于检索一个元素是否在一个集合中。时间复杂度低,增加及查询元素的时间复杂度都是O(k),k为Hash函数的个数;占用存储空间小,布隆过滤器相对于其他数据结构(如Set、Map)非常节省空间。存在误判,只能证明一个元素一定不存在或者可能存在,返回结果是概率性的,但是可以通过调整参数来降低误判比例;

2024-01-14 22:29:11 2357

原创 雪花算法及Java实现

现如今越来越多的公司都在用分布式、微服务,那么对应的就会针对不同的服务进行数据库拆分,然后当数据量上来的时候也会进行分表,那么随之而来的就是分表以后id的问题。例如之前单体项目中一个表中的数据主键id都是自增的,mysql是利用autoincrement来实现自增,而oracle是利用序列来实现的,但是当单表数据量上来以后就要进行水平分表,阿里java开发建议是单表大于500w的时候就要分表,但是具体还是得看业务,如果索引用的号的话,单表千万的数据也是可以的。

2024-01-14 22:04:05 913

原创 Log4j漏洞原理及修复

*JNDI(Java Naming and Directory Interface–Java)**命名和目录接口 是Java中为命名和目录服务提供接口的API,通过名字可知道,JNDI主要由两部分组成:Naming(命名)和Directory(目录),其中Naming是指将对象通过唯一标识符绑定到一个上下文Context,同时可通过唯一标识符查找获得对象,而Directory主要指将某一对象的属性绑定到Directory的上下文DirContext中,同时可通过名字获取对象的属性同时操作属性。

2024-01-01 21:06:06 1664

原创 WebMvcConfigurer和WebMvcConfigurationSupport(MVC配置)

在日常开发中推荐优先使用WebMvcConfigurer的方式(官方推荐),因为简单方便,也没有特别复杂的定制需求;若我们项目中使用的MVC存在着更加复杂的配置需求推荐WebMvcConfigurationSupport,通过继承此类,我们可以说对官方的MVC代码进行重写操作,但是因为其配置量较大,实现比较复杂,因此在日常开发中使用WebMvcConfigurationSupport并不常见。常用自定义配置如下:1.addInterceptors(拦截器配置)

2024-01-01 13:26:03 2748

原创 Spring三种注解注入方式@Autowired,@Resouce,@Inject

1.@Resource是JavaEE规范定义的注解,@Autowired是Spring框架提供的注解, @Inject 是JSR-330规范中的注解。2.@Resource是按照名称进行注入的,它可以通过name属性指定具体要注入的资源名称,如果未指定名称,则按照类型进行注入。而@Autowired是按照类型进行注入的,它会根据类型在容器中找到对应的实例进行注入。不行的话会根据名称来进行注入。

2023-12-19 23:44:15 492

原创 redis存储时使用StringRedisTemplate进行序列化与反序列化

传统RedisTemplate进行序列化时会自动存储类对象的路径,为反序列化时作准备。这样占据了内存空间,可以使用StringRedisTemplate优化。

2023-12-19 22:55:26 575

原创 ElasticSearch报错client.indices().create方法deprecated

发送请求时报如下错误:ElasticsearchStatusException[Elasticsearch exception [type=mapper_parsing_exception, reason=Failed to parse mapping [properties]: Root mapping definition has unsupported parameters: [all : …];检查是否方法过时:创建索引库CreateIndexRequest应该修改成这个包:

2023-12-10 23:53:11 376

原创 ReactNative 0.62.2 报错Unexpected token punc «:»,expected punc «,»

(版本0.62.2)构建项目时报如下错误:Unexpected token punc «:»,expected punc «,» in file node_modules/react-native/Libraries/Blob/URL.js at 104:30(个人使用方法一解决)方法一:将metro-react-native-babel-preset升级到0.59:方法二:修改babel.config.js方法三:在package.json中增加:

2023-12-06 00:22:20 241

原创 ReactNative 0.62.2 报错Failed to transform react-native-0.71.0-rc.0-debug.aar

构建项目报如下错误:Failed to transform react-native-0.71.0-rc.0-debug.aar方法一:把应用到react-native的包都换成指定版本,我用的是0.62.2,记住是所有的,不能用react-native:+方法二:一次替换所有在android项目路径下的bulid,gradle中的allprojects中加入以下代码即可:

2023-12-05 23:21:48 149

原创 root用户无法访问ftp/vsftpd

安装好vsftpd后,发现root用户无法远程连接ftp, 其他用户却可以。

2023-12-05 23:11:43 335

原创 linux命令备查(ftp,docker,redis)

【代码】linux命令备查(ftp,docker,redis)

2023-12-04 23:47:50 64

原创 Linux的VMware上安装VMware tools

Linux虚拟机安装VMware tools报如下错误。

2023-11-26 22:40:57 145

原创 ReactNative报错Error: Duplicate resources / Execution failed for task ‘:app:mergeReleaseResources‘.

1、在node_modules/react-native/react.gradle。ReactNative 0.70创建项目后打包运行。

2023-11-25 20:32:02 283

原创 ReactNative报错Could not find file release\index.android.bundle.hbc to copy.

React Native 0.70,创建项目后运行报如下错误:因为在解决其他问题中做了部分修改,不确定是否是通过如下方法解决,可做尝试。1.在项目下创建android/app/src/main/assets文件夹2.执行如下命令3.删除整个文件夹,重新执行

2023-11-25 20:25:09 108

原创 vite项目报错:导入路径不能以“.tsx”扩展名结束。考虑改为导入“./App.js”。

vite搭建react项目,tsx文件报错:导入路径不能以“.tsx”扩展名结束。考虑改为导入“./App.js”。

2023-11-10 18:21:05 456

原创 vite项目报错:在没有 “node“ 模块解析策略的情况下,无法指定选项 “-resolveJsonModule“。

vite搭建react项目,在tsconfig.json文件报错在没有 “node” 模块解析策略的情况下,无法指定选项 “-resolveJsonModule”。

2023-11-10 18:14:58 1372

原创 mobx报错ts1219:对修饰器的实验支持功能在将来的版本中可能更改。在 “tsconfig“ 或 “jsconfig“ 中设置 “experimentalDecorators“ 选项以删除此警告

mobx中用修饰器@observable配置全局变量时,报以下错误:对修饰器的实验支持功能在将来的版本中可能更改。在 “tsconfig” 或 “jsconfig” 中设置 “experimentalDecorators” 选项以删除此警告。ts(1219)

2023-11-06 00:07:36 312 2

原创 Springboot整合mysql报错The server time zone value is unrecognized or represents more than one time zone.

Springboot 2.4.2及以前版本整合mysql8以上的驱动时,会报如下错误。

2023-10-26 00:00:31 96

原创 React Native报错Unable to delete directory

执行如下图报错Unable to delete directory。

2023-10-23 00:46:26 176

原创 React Native报错Unable to install .../app-debug.apk

执行如下图报错Unable to install …/app-debug.apk。

2023-10-23 00:38:39 123

原创 2 files found with path ‘lib/arm64-v8a/libc++_shared.so‘ from inputs...-react native

执行。

2023-10-23 00:32:34 406

原创 React Native报错Could not download或者could not resource

执行后始终卡在download中,结束报错Could not download或者could not resource。

2023-10-23 00:26:10 279

空空如也

空空如也

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

TA关注的人

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