- 博客(1087)
- 资源 (11)
- 收藏
- 关注
原创 three.js(1):three.js简介
three.js,一个WebGL引擎,基于JavaScript,可直接运行GPU驱动游戏与图形驱动应用于浏览器。其库提供的特性与API以绘制3D场景于浏览器。src目录里面包含了threejs的所有实现代码和接口文件docs目录包含了threejs的所有帮助文档example目录里面包含了threejs所有的样例程序editor目录里面包含了threejs自带的场景编辑工具。
2024-04-14 23:28:21 194
原创 Spring Boot(七十二):集成JSch连接到sshd服务器并使用端口转发
JSch是SSH2的纯Java实现。JSch允许您连接到sshd服务器并使用端口转发,X11转发,文件传输等,并且可以将其功能集成到您自己的Java程序中。
2024-04-08 23:33:38 182
转载 解决maven 引用JDK内部类编译错误 程序包:com.sun.xml.internal.bind.marshaller.CharacterEscapeHandler不存在
程序包:com.sun.xml.internal.bind.marshaller.CharacterEscapeHandler不存在。添加maven-compiler-plugin插件,并且配置compilerArguments。
2024-03-27 10:22:36 63
转载 java面试题:高度为3的B+树可以存放多少数据?
在Mysql中,B+树的每个节点都是一个数据页,数据页默认大小是16KB,非叶子节点存的是索引值以及页的偏移量,而叶子节点上存放的则是完整的每行记录。B+树是一颗多路平衡树,它的特点是通过减少非叶子节点的存储数据量以及增加树的分支数量,降低树的高度从而减少磁盘IO次数来提高数据检索性能。这个问题考察求职者对B+树存储特性的理解,求职者应该对B+树的基本原理和特点有一定的了解,并能够解释B+树的高度和存储容量之间的关系。同理,高度为3的B+树,就可以存放1170*1170*16=21902400条记录。
2024-03-27 00:15:53 45
原创 redis(15):高效存储Bitmap
Redis Bitmap(位图)是一种高效的数据结构,用于存储大量的二进制信息,通常用于标记某些事件的发生与否或跟踪状态信息。Bitmap 在 Redis 中以字符串的形式进行存储,其中每个位都可以被设置为0或1,表示某种状态或标记。
2024-03-26 10:24:17 104
原创 java面试:常见的限流算法有哪些
限流算法是一种用于限制流量请求的频率或速率的算法,其目的是在高并发或大流量请求的情况下,保护系统服务的安全性和可用性。限流算法可以应对热点业务带来的突发请求、调用方bug导致的突发请求以及恶意攻击请求等情况。是一种系统保护策略,主要是避免在流量高峰导致系统被压垮,造成系统不可用的问题。
2024-03-21 17:51:22 356
原创 Spring Boot(七十一):整合RateLimiter实现接口限流
RateLimiter 从概念上来讲,速率限制器会在可配置的速率下分配许可证。如果必要的话,每个acquire() 会阻塞当前线程直到许可证可用后获取该许可证。一旦获取到许可证,不需要再释放许可证。RateLimiter使用的是一种叫令牌桶的流控算法,RateLimiter会按照一定的频率往桶里扔令牌,线程拿到令牌才能执行,比如你希望自己的应用程序QPS不要超过1000,那么RateLimiter设置1000的速率后,就会每秒往桶里扔1000个令牌;
2024-03-20 11:05:36 558
转载 Apache Bench安装与使用
1 Apache Bench简介Apache Bench 是 Apache 服务器自带的一个web压力测试工具,简称 ab。ab 非常实用,它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试。比如nginx、tomcat、IIS等。
2024-03-20 09:35:59 62
转载 java面试题:为什么数据库 delete 表数据,磁盘空间还是被一直占用
项目中使用MySQL作为数据库,对于表来说,一般为表结构和表数据。表结构占用空间都是比较小的,一般都是表数据占用的空间。当我们使用 delete删除数据时,确实删除了表中的数据记录,但查看表文件大小却没什么变化。
2024-03-18 13:09:48 42
转载 java面试题:类是如何被加载与卸载的?
触发条件包括,创建类的实例时,访问类的静态方法或静态变量的时候,使用Class.forName反射类的时候,或者某个子类初始化的时候。类的加载涉及到JVM比较核心和底层的知识,通常当面试官问到这个问题的时候就是面试官想考察我们对JVM加载类是否真的了解,以及平日里善于积累,仔细思考这方面的知识!Java自带的加载器加载的类,在虚拟机的生命周期中是不会被卸载的,只有用户自定义的加载器加载的类才可以被卸。将常量池中的符号引用替换为直接引用的过程.直接引用为直接指向目标的指针或者相对偏移量等.
2024-03-18 10:08:20 43
原创 Spring Boot(七十):利用Jasypt对数据库连接进行加密
Jasypt(Java Simplified Encryption)是一个专注于简化Java加密操作的工具。它提供了一种简单而强大的方式来处理数据的加密和解密,使开发者能够轻松地保护应用程序中的敏感信息,如数据库密码、API密钥等。Jasypt的设计理念是简化加密操作,使其对开发者更加友好。它采用密码学强度的加密算法,支持多种加密算法,从而平衡了性能和安全性。
2024-03-17 23:12:56 459
原创 Spring Boot(六十九):利用Alibaba Druid对数据库密码进行加密
Spring Boot(六十六):集成Alibaba Druid 连接池这章使用Alibaba Druid进行数据库密码加密,在上面的代码上进行修改,这章只介绍密码加密的步骤。目前越来越严的安全等级要求,我们在做产品研发和项目开发时,越来越需要注意安全问题,各种账号密码的在配置文件中明文存储就是一个很大的安全隐患。现针对数据库密码加密方面,利用druid进行数据库加密,实现项目配置文件中数据库密码密文存储,一定程度上保证了数据安全。
2024-03-17 18:36:13 341
转载 java面试题:如果MySQL的自增 ID 用完了,怎么办?
表的自增 id 达到上限后,再申请时它的值就不会改变,进而导致继续插入数据时报主键冲突的错误row_id 达到上限后,则会归 0 再重新递增,如果出现相同的 row_id,后写的数据会覆盖之前的数据Xid 只需要不在同一个 binlog 文件中出现重复值即可。虽然理论上会出现重复值,但是概率极小,可以忽略不计InnoDB 的 max_trx_id 递增值每次 MySQL 重启都会被保存起来,所以我们文章中提到的脏读的例子就是一个必现的 bug,好在留给我们的时间还很充裕。
2024-03-17 13:01:33 41
原创 Spring Boot(六十八):SpringBoot 整合Apache tika 实现文档内容解析
Apache Tika 是一个开源的内容检测和分析框架,由Apache软件基金会开发和维护的顶级项目。它可以从各种格式的文件中提取元数据和文本内容。Tika非常适合处理全文搜索、内容分析、翻译、内容提取等需要大量处理和分析文档内容的任务。Apache Tika提供了多种使用方式,既可以使用图形化操作页面(tika-app),又可以独立部署(tika-server)通过接口调用,还可以引入到项目中使用。
2024-03-15 11:31:50 345
原创 分布式锁(1):分布式锁框架lock4j
Lock4j是一个分布式锁组件,它提供了多种不同的支持以满足不同性能和环境的需求;它基于Spring AOP,支持RedisTemplate、Redisson、Zookeeper作为底层。属性说明name需要锁住的key名称executorlock 执行器,可以使用该参数自定义设置keys需要锁住的keys名称,可以是多个expire锁过期时间,主要是用来防止死锁可以理解为排队等待时长,超过这个时长就退出排队,并排除获取锁超时异常是否自动释放锁,默认为true/**
2024-03-14 10:55:40 77
原创 分布式ID(8):分布式ID生成方法
在选择分布式唯一ID生成的方法时,需要根据系统的具体需求和环境来决定。使用Redis的方法提供了高性能和易于扩展的解决方案,而使用数据库分段的方法则在减少数据库交互的同时,保证了ID的唯一性。在选择合适的分布式ID生成策略时,应考虑系统的规模、性能需求、ID的顺序性和唯一性要求,以及对网络的依赖程度。不同的方法各有优势和局限,应根据具体的应用场景和需求进行选择。
2024-03-13 22:54:35 424
转载 java面试题:什么是最左匹配原则
比如有索引(a,b,c),语句 select * from t where c =1 and a=1 and b=1,这样的语句也可以用到最左匹配,因为 MySQL 中有一个优化器,他会分析 SQL 语句,将其优化成索引可以匹配的形式,即 select * from t where a =1 and a=1 and c=1。假设存在(a,b)的联合索引,那么在B+树中的存储结构是这样的。可以看到,a字段的值是有序的,对应的数据是1、1、2、2、3,而b字段的值是没有顺序的:1、2、2、5、1。
2024-03-13 13:11:00 49
转载 BI项目建设怎么做?
通常情况下,企业BI项目建设有两种情况,独立开发或者是乙方参与,具体选择哪一种主要看企业的IT部门是否具备了独立建设BI项目的能力,如果没有的话,那就要引入BI产品供应商,或者找外包项目团队,当然这种花的钱要更多。整合这两种方式,我们可以把BI项目建设可以拆解为四个阶段:第一阶段,调研BI项目的需求;第二阶段,选择合适的BI工具;第三阶段,进行BI项目规划,包括确认项目范围、项目团队和项目实施方案;第四阶段,进行BI项目的实施和验收。
2024-03-12 23:16:18 44
转载 java面试题:TCP 与 UDP 的区别,以及各自的优缺点
TCP(传输控制协议)和UDP(用户数据报协议)是互联网协议(IP)中两种主要的传输层协议,它们有着显著的区别和各自的优缺点。不适合大量数据的传输:由于UDP没有流量控制和拥塞控制机制,大量数据的传输可能会出现问题。流量控制:TCP具有流量控制机制,可以防止发送方发送过多的数据,导致接收方处理不过来。可靠:TCP提供了数据传输的确认和重传机制,确保数据的完整性和准确性。可靠:TCP提供了数据传输的确认和重传机制,确保数据的完整性和准确性。慢:由于TCP的可靠性和顺序性,数据传输的速度可能会比UDP慢。
2024-03-12 14:30:10 54
原创 分布式ID(7):Zookeeper实现分布式ID生成
他的基本特性和持久节点是一致的,额外的特性表现在顺序性上。在ZooKeeper中,每个父节点都会为他的第一级子节点维护一份顺序,用于记录下每个子节点创建的先后顺序。基于这个顺序特性,在创建子节点的时候,可以设置这个标记,那么在创建节点过程中,ZooKeeper会自动为给定节点加上一个数字后缀,作为一个新的、完整的节点名。另外需要注意的是,这个数字后缀的上限是整型的最大值。ZooKeeper中为数据节点引入了版本的概念,每个数据节点都具有三种类型的版本信息,对数据节点的任何更新操作都会引起版本号的变化。
2024-03-11 23:42:03 284
原创 java面试题:为什么 SQL 语句不要过多的 join?
要回答好这个问题,只需要了解 join 操作会带来哪些影响,而这些影响对程序产生什么样的影响就行了。:我们知道,每个 join 操作都会对两个到多个表进行链接操作,这些操作会对计算资源和时间进行大量的消耗,同时如果说join操作过多,也会导致SQL的执行效率降低,进而影响整个系统的系统。,当join多个表的时候,SQL语句的复杂度会像是指数别的增长,使我们的代码的可读性和可维护性非常困难。:SQL语句会因为join的操作变得很复杂,而且我们在维护的时候,非常难以理解和。以上就是我对于这个问题的理解。
2024-03-11 09:49:37 632
原创 Spring Boot(六十七):多线程ThreadPoolTaskExecutor使用
到了springboot这里,因为引入了spring-boot-autoconfigurer,自动装配机制,在task包下,直接把ThreadPoolTaskExecutor注入到bean容器里面。所以在springboot项目中,如果要使用线程池,可以直接使用,都不用额外任何配置。在spring框架中,spring提供了ThreadPoolTaskExecutor来创建线程池,该类在spring-context包下。扩展ThreadPoolTaskExecutor类。
2024-03-11 00:16:19 214
原创 Spring Boot(六十六):集成Alibaba Druid 连接池
在现代的Java应用中,使用一个高效可靠的数据源是至关重要的。Druid连接池作为一款强大的数据库连接池,提供了丰富的监控和管理功能,成为很多Java项目的首选。本文将详细介绍如何在Spring Boot项目中配置数据源,集成Druid连接池,以实现更高效的数据库连接管理。
2024-03-06 23:30:35 223
原创 分布式ID(6):Redis实现分布式ID生成
Redis是一个高性能的键值数据库,它可以用于生成分布式唯一标识符。需要注意的是Redis实现ID可以用,这也是很多公司的选择。但是在redis服务器宕机的情况下,他也可能会出现重复生成ID的情况。
2024-03-03 18:26:14 262
转载 java面试题:解析浏览器端的 解 AJAX缓存机制
举个栗子,如果请求的是个库存数量,那么Expires的值可以是10秒以后.如果请求的是一个相片,那么Expires的值就可以久一点,因为它不会经常变动。当然,如果你使用POST方式发送Ajax是不能缓存的,因为POST请求永远不会被缓存.如果你的Ajax请求会产生其他作用(比如银行账户之间的转账),请使用POST请求. 我们设置了一个demo(这个demo已经不能看了ヽ(≧□≦)ノ)来阐明这些头信息是如何工作的. 在HttpWatch里,你可以看到我们在响应头信息里设置了以上三个响应头。
2024-02-27 23:17:47 55
原创 jQuery插件:jQuery-searchableSelect可搜索下拉框
效果如下:下载地址:带搜索框的jQuery下拉框美化插件 searchable完整代码如下:
2024-02-21 14:15:55 471
原创 ThreadLocal(5):ThreadLocalMap源码分析
在分析ThreadLocal方法的时候,我们了解到ThreadLocal的操作实际上是围绕ThreadLocalMap展开的。ThreadLocalMap的源码相对比较复杂, 我们从以下三个方面进行讨论。
2024-02-20 23:04:48 935
转载 java面试题:禁用Cookie后Session还能用吗?
Cookie 和 Session 是 Web 应用程序中用于保持用户状态的两种常见机制,它们之间既有联系也有区别。Cookie 是由服务器在 HTTP 响应中发送给客户端(通常是浏览器)的一小段数据。客户端将这些信息保存在本地,并在后续的请求中自动将其发送回服务器。而 Session 是在服务器端创建的一种机制,用于跟踪用户的会话状态。服务器会给每个用户分配一个唯一的会话 ID,并将该 ID 通过 Cookie 或其他方式传递给客户端。
2024-02-20 14:33:38 78
原创 ThreadLocal(4):ThreadLocal的核心方法源码
基于ThreadLocal的内部结构,我们继续分析它的核心方法源码,更深入的了解其操作原理。 以下是这4个方法的详细源码分析(为了保证思路清晰, ThreadLocalMap部分暂时不展开,下一个知识点详解)
2024-02-20 12:50:04 620
原创 ThreadLocal(2):运用场景
通过上一章介绍,我们已经基本了解ThreadLocal的特点。但是它具体是运用在什么场景中呢?接下来让我们看一个案例: 事务操作。
2024-02-19 17:53:54 998
转载 java面试题:Java项目防御SQL注入的有效策略
SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。SQL案列此时,数据库的数据都会被清空掉,后果非常严重。
2024-02-19 17:36:47 69
原创 Mysql报错:too many connections
(2)max_connections值过小:默认情况下,MySQL的最大连接数是100个,如果这个值过低,则会导致在达到这个限制后,任何新的连接请求都无法得到响应,从而提示“too many connections”的错误。wait_timeout 过大有弊端,其体现就是MySQL里大量的SLEEP进程无法及时释放,拖累系统性能,不过也不能把这个指设置的过小,否则你可能会遭遇到“MySQL has gone away”之类的问题。以上步骤修改后虽然能登录,但仍有隐患,我们应该把那些sleep的连接杀掉。
2024-02-06 23:59:26 280
原创 java面试题:分布式和微服务的区别
分布式架构解决的是如何将一个大的系统划分为多个业务模块这些业务模块会分别部署到不同的机器上,通过接口进行数据交互的问题。微服务是指很小的服务,可以小到只完成一个功能,这个服务可以单独部署运行,不同服务之间通过rpc调用。分布式架构是将一个大的系统划分为多个业务模块,这些业务模块会分别部署到不同的机器上,通过接口进行数据交互。微服务架构是架构设计方式,是设计层面的东西,一般考虑如何将系统从逻辑上进行拆分,也就是垂直拆分。分布式系统是部署层面的东西,即强调物理层面的组成,即系统的各子系统部署在不同计算机上。
2024-02-06 23:38:46 4467 1
原创 java面试题:MySQL中的各种JOIN的区别
表关联是频率非常高的一种数据库操作,在MySQL中,这种JOIN操作有很多类型,包括内联接、左外连接、右外连接等等,而每种连接的含义都不一样,如果死记硬背,不仅很难记住,而且也容易搞混淆,今天我们尝试使用图解的方式来讲解各种连接的内涵,因为结合了具体的例子,相信会让大家印象深刻。
2024-02-06 10:20:47 645
原创 org.apache.xmlbeans.XmlOptions.setEntityExpansionLimit(I)Lorg/apache/xmlbeans/XmlOptions;
剔除方法: 只需加 exclusions 的内容就可以。POI引起的报错,分析后发现为xmlbeans引起。
2024-02-06 09:59:14 759
原创 Spring Boot(六十五):使用 ant.jar 执行 SQL 脚本文件
ant用处,主要用在编译java文件,打包,部署。打包:jar,war,ear包等。ant在项目中有很重要的作用。今天我们讲解它的另一个作用:执行 SQL 脚本文件。
2024-02-05 17:13:23 1117
原创 maven-install-plugin:2.4:install (default-cli) on project ability-dispatch:
解决方案:不要用Plugins下面 的 install,要使用Lifecycle下面 的install。
2024-02-05 16:41:01 862
转载 java面试题:MySQL千万级大表如何进行数据清理
数据清理是数据库维护中的一项重要任务,尤其是在数据量巨大的情况下,需要谨慎操作,确保数据清理过程中不会影响线上服务。通过分批删除、分区表删除和导出-清理-导入等方法,可以有效地进行大表的数据清理工作。当然,选择哪种方法还需要根据具体业务需求和数据库的实际情况来定。在进行数据清理操作前,最好先在测试环境进行验证,确保操作的安全性。
2024-02-05 10:24:00 187
原创 Spring Boot(六十四):获取 Spring Boot 应用进程的 PID
ApplicationPidFileWriter 是 Spring Boot 提供的一个 Listener,它可以在应用启动后把 PID 写入到指定的文件。它需要在启动前,通过编程式配置到应用中,并且需要在配置文件中指定要写入 PID 的文件。
2024-02-03 21:53:23 409
Spring Boot(六十四):SpringBoot集成Gzip压缩数据
2023-08-16
Disruptor专题简单案例资料
2023-06-17
lucene入门数据库资料
2023-05-21
sentinel-feign-parent
2023-05-09
springboot基于redis防止接口恶意刷新和暴力请求
2023-01-17
javawebuploader分片上传
2023-01-02
AT模式seate测试代码
2022-12-26
drools代码示例包
2022-08-12
mysql读写分离演示
2022-05-29
skywalkingRPC
2022-05-10
skywalkingspringboot
2022-05-10
java实现简单的单点登录
2020-03-03
Intellij Idea 创建JavaWeb项目入门(二)demo
2020-01-23
webapi基于Owin中间件的oauth2.0身份认证
2018-10-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人