- 博客(99)
- 收藏
- 关注

原创 thingsboard物联网平台编译安装一步到位
物联网平台thingsboard编译一步到位物联网平台thingsboard编译一步到位1.thingsboard简介2.clone项目3.前置准备3.1 安装JDK113.2 安装Nodejs3.3 将pkg-fetch放入本地缓存3.4 配置maven镜像地址4.编译运行物联网平台thingsboard编译一步到位先上编译结果,耗时18分39秒1.thingsboard简介ThingsBoard是一个开源物联网平台,可实现物联网项目的快速开发、管理和扩展。ThingBoard是基于Apache
2021-11-14 09:19:13
10246
4

原创 JAVA、GO、大数据、算法工程师、程序员自学网站推荐
JAVA、大数据、算法工程师程序员自学网站推荐慕课网慕课网,大概在14年的时候学长推荐给我看的,当时在学长的公司实习(做安卓开发),在里面学到了很多东西。这个网站当时对我的帮助挺大的,里面有很多免费的课程,也有很多付费的课程。如果你没有特殊的需求,一般免费课程就够自己学的了。https://www.imooc.com/哔哩哔哩不得不说哔哩哔哩上面的学习资源还是很多的,现在有很多年轻人都在上面学习呢!哈哈哈 大部分年轻人最爱的小破站可是受到过央视表扬的。被誉为年轻人学习的首要阵地。像尚硅谷、黑
2021-10-28 17:02:56
5127
1
原创 Java 反射机制
Java 反射机制允许程序在运行时获取类的信息并操作类或对象的属性、方法和构造器。通过反射,我们可以在运行时动态地创建对象、调用方法、修改属性等,而不需要在编译时知道类的具体信息。Java 反射机制提供了强大的动态操作能力,但同时也带来了性能和安全性的问题。在实际开发中,应根据具体需求谨慎使用反射,避免滥用。
2025-03-20 20:45:00
268
原创 jvm中每个类的Class对象是唯一的吗
唯一性条件:同一类 + 同一类加载器 → 唯一Class对象。设计意图:确保类型系统在 JVM 层面的安全性和一致性。
2025-03-19 18:15:00
744
原创 Java IO流体系教程
Java IO流体系是Java中处理输入输出操作的核心机制。它涵盖了从文件读写到网络通信等多种场景,为程序与外部数据源之间的数据传输提供了统一的抽象方式。Java IO流主要分为输入流和输出流,用于数据的读取和写入。此外,根据处理数据单位的不同,IO流还可分为字节流和字符流,前者以字节为单位,适用于二进制文件,后者以字符为单位,适用于文本文件。Java IO流体系通过丰富的类和方法,实现了对不同类型的输入和输出操作的支持,是Java编程中不可或缺的一部分。
2025-03-17 16:40:26
445
原创 什么是mysql索引回表?
回表是MySQL在使用二级索引时,为了获取完整数据行而进行的额外操作。回表会增加I/O开销,影响查询性能。通过覆盖索引或减少查询字段,可以有效避免回表,提升查询效率。
2025-03-14 22:43:37
685
原创 idea拉取代码报错,remote: HTTP Basic: Access denied. The provided password or token is incorrect
idea换了个版本后,重新打开项目,发现拉取不下来代码了,报错信息如下但是我打开命令行窗口,直接输入命令git pull却是可以拉取下来的。
2025-03-12 20:15:00
414
原创 Java Stream流使用教程
Stream API通过链式调用和Lambda表达式,使集合操作更加简洁高效。优先使用Stream处理集合数据根据场景选择合适操作(中间/终结)复杂操作可拆分为多个步骤注意线程安全问题(并行流时)掌握Stream流将显著提升Java集合处理能力,是现代化Java开发的必备技能!
2025-03-11 20:00:00
390
原创 Java Stream中map与flatMap对比教程
操作输入元素输出元素数量最终结果结构map单个元素1个新元素保持原流结构flatMap单个元素0-N个新元素合并为单一流结构选择原则需要简单转换单个元素 → 使用map()需要展开嵌套结构/生成多个元素 → 使用flatMap()以上代码均可直接复制到Java 8+环境中运行,建议在IDE中实际测试观察输出结果,以加深理解。
2025-03-11 19:00:00
460
原创 ArrayList和LinkedList的线程安全性
线程安全性是指多个线程同时访问和修改同一个对象时,能够保持对象内部状态的一致性和正确性。如果多个线程在没有适当同步的情况下同时访问和修改一个非线程安全的对象,可能会导致数据不一致、空指针异常等问题。
2025-03-07 20:30:00
601
原创 java中有了ArrayList为什么还有LinkedList
在Java中,尽管已经有了功能强大的ArrayList,但LinkedList的存在仍然有其独特的价值和适用场景。这两种集合类都属于Java集合框架的一部分,但它们在设计和实现上有显著的不同,这导致了它们在性能特征和使用场景上的差异。
2025-03-07 20:15:00
489
原创 Java 泛型方法、通配符、上下限
T>表示这是一个泛型方法,T是类型参数。T[] array表示参数是一个T类型的数组。在方法体内,T可以被当作一个具体的类型使用。泛型方法:通过<T>定义泛型方法,使方法可以处理多种类型。通配符:使用表示未知类型,增加方法的灵活性。上下限:通过extends T>和super T>限制泛型类型的范围,使代码更加安全和灵活。通过合理使用泛型方法、通配符和上下限,可以编写出更加通用、灵活且类型安全的 Java 代码。
2025-03-04 21:00:00
622
原创 Java 自定义泛型类
泛型是 Java 5 引入的特性,它允许你在定义类、接口和方法时使用类型参数,从而提高代码的复用性和类型安全性。使用泛型,你可以编写出更通用、更灵活的代码。// 无需类型转换在上面的例子中,表示一个只能存储String类型元素的列表。使用泛型后,我们无需在获取元素时进行类型转换,编译器会自动进行类型检查。步骤 1:声明类型参数在类名后面使用尖括号<>声明类型参数,例如TEKV等。// ...步骤 2:使用类型参数在类体中,你可以像使用普通类型一样使用类型参数T。步骤 3:实例化泛型类。
2025-03-04 19:30:00
408
原创 Java的异常体系中的Error
Error通常表示严重的系统级问题,应用程序无法处理或恢复。与之相比,Exception是应用程序可以捕获并处理的异常。在编写代码时,通常不需要捕获Error,而是应该关注如何避免这些错误的发生(如优化内存使用、避免无限递归等)。
2025-03-03 19:30:00
890
原创 Linux 系统烤机压测教程
通过本教程,你可以使用stress工具对 Linux 系统进行 CPU 和内存的压力测试。这种测试有助于评估系统的稳定性和性能极限。请根据实际需求调整测试参数,并谨慎操作。
2025-02-19 22:00:00
402
原创 Paxos分布式共识算法
Paxos算法是由莱斯利·兰伯特(Leslie Lamport)于1990年提出的一种基于消息传递且具有高度容错特性的一致性算法。它主要用于解决分布式系统中如何就某个值达成一致,并保证整个系统的一致性,即使在部分节点发生故障的情况下也能保证系统的一致性。
2024-06-22 23:01:40
709
原创 “脏读”、“幻读”、“不可重复读”
脏读”、“幻读”、“不可重复读”是数据库事务的概念。“脏读”是指一个事务中访问到了另外一个事务未提交的数据。“不可重复读”是指在一个事务内根据同一个条件对数据进行多次查询,但是结果却不一致,产生的原因是其他事务对该数据就行了修改。“幻读”是指在当两个完全相同的查询执行时,第二次查询所返回的结果集和第一个查询所返回的结果集不相同,发生的原因也是另外一个事务新增、删除了第一个事务结果集里面的数据。
2024-06-22 20:15:00
439
原创 3阶段提交协议(3pc)
三阶段提交协议是一个强一致、中心化的原子提交协议。解决了分布式事务、副本容错等分布式问题。其核心思想是将2PC的二阶段提交协议的“准备阶段”一分为二,形成了由CanCommit、PreCommit、DoCommit三个阶段组成的事务处理协议。协调者向所有的参与者发送一个包含事务内容的CanCommit请求,询问是否可以执行事务提交操作。参与者根据自身的状态判断是否可以执行事务提交,并返回响应给协调者。协调者在接收到所有参与者的CanCommit响应后,进行决策。
2024-06-17 21:45:00
575
原创 二阶段提交(2pc)协议
二阶段提交算法是一个分布式一致性算法,强一致、中心化的原子提交协议,主要用来解决分布式事务问题。在单体spring应用中我们往往通过一个@Transactional注解就可以保证方法的事务性,但是在分布式场景下,serviceA往往会调用serviceB和ServiceC等有自己单独数据库的服务。如果serviceb成功了,servicec失败了,这种情况的回滚就需要用到分布式事务了。2阶段提交包含两个阶段,即准备阶段和提交阶段。
2024-06-13 20:00:00
1460
原创 分布式一致性理论
为保证事务正确可靠而必须具备的四个核心特性。这四个特性分别是:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。下面我将对这四个特性进行详细介绍:原子性(Atomicity)含义:事务被视为一个不可分割的工作单位,事务中的所有操作要么全部完成,要么全部不完成,即“all-or-nothing”原则。实现:如果在事务执行过程中发生错误或故障,则整个事务会被回滚(Rollback)到事务开始前的状态,就像这个事务从未执行过一样。
2024-06-07 16:27:17
982
原创 Java设计模式——装饰者模式
装饰者模式(Decorator Pattern)是一种结构型设计模式,它允许用户通过在一个对象上动态地添加职责或行为来增强其功能。这种类型的设计模式属于对象结构型模式,在不需要改变一个对象的内部结构的条件下,给对象动态地增加一些额外的职责。装饰者模式相比生成子类更为灵活。
2024-05-15 22:28:15
638
原创 nginx报错upstream sent invalid header
upstream sent invalid header: "Cache\x20..." while reading response header from upstream解决方法
2023-12-28 21:48:54
2091
3
原创 mysql中的各种日志文件redo log、undo log和binlog
MySQLInnoDB引擎使用redo log(重做日志)保证事务的持久性,使用undo log(回滚日志)来保证事务的原子性。MySQL数据库的数据备份、主备、主主、主从都离不开binlog,需要依靠binlog来同步数据,保证数据一致性。
2023-11-17 23:00:03
1094
1
原创 SpringBoot如何自定义注解
Annotation型定义为@interface, 所有的Annotation会自动继承java.lang.Annotation这一接口,并且不能再去继承别的类或是接口.参数成员只能用public或默认(default)这两个访问权修饰参数成员只能用基本类型byte,short,char,int,long,float,double,boolean八种基本数据类型和String、Enum、Class、annotations等数据类型,以及这一些类型的数组.
2023-11-17 20:00:00
1203
原创 oracle数据库中job和dbms_job比较
Oralce中的任务有2种:Job和Dbms_job,两者的区别有:①、Job是通过调用dbms_scheduler.create_job包创建的,Dbms_job则是通过调用dbms_job.submit包创建的。②、两种任务的查询视图都分为dba和普通用户的,Job对应的查询视图是dba_scheduler_jobs和user_scheduler_jobs,dbms_jobs对应的查询视图为dba_jobs和user_jobs。
2023-11-17 19:45:00
1103
原创 物联网IOT时序数据库influxdb(2.x)
InfluxDB是开源时序型数据库,由Go写成,不过可惜的是开源的只有单机版,InfluxDB在集群方面闭源收费了,想大规模应用请引起注意。时序数据库经常应用于机房运维监控、物联网IoT设备采集存储、互联网广告点击分析等基于时间线且多源数据连续涌入数据平台的应用场景,InfluxDB专为时序存储而生,尤其是在工业领域的智能制造。由清华大学开源的IOTDB也是一款面向物联网的时序数据库,现在是apache旗下的顶级项目,未来潜力无限。InfluxDB在DB-Engines的时序数据库类别里排名世界第一,国内的
2022-06-13 22:18:24
6493
原创 数据结构——树的遍历
数据结构——树的遍历1.树的基本概念树是一种非常有用的数据结构,数据库的实现很多底层实现是基于树结构的,比如mysql innodb存储引擎的索引就是基于B+树的。树是一种由节点组成的数据结构,但它比链表更加高级,在链表中,一个节点连接着另一个节点,树也是由许多的节点构成的,唯一的区别就是一个树节点可以连接多个树节点,一颗树只有一个根节点,根节点作为起源,由它展开一个树状的数据结构。在实现树之前,我们来了解一下树的基本定义:在树中,每个节点都含有自己的数值,以及与之相连的子节点,连接节点的线叫做相连
2022-05-02 22:59:20
3554
原创 刷题记录——动态规划,最短路径问题
动态规划——最短路径问题动态规划——最短路径问题1.动态规划概念和思想2.问题描述3.代码实现作者:不如打代码KK关键词:二维矩阵,最短路径,动态规划动态规划——最短路径问题1.动态规划概念和思想 动态规划过程是:把原问题划分成多个“阶段”,依次来做“决策”,得到当前的局部解;每次决策,会依赖于当前“状态”,而且会随即引起状态的转移。 这样,一个决策序列就是在变化的状态中,“动态”产生出来的,这种多阶段的、最优化决策,解决问题的过程就称为动
2022-04-28 22:00:00
394
原创 刷题记录——DNA序列
刷题记录——DNA序列关键字:字符串、滑动窗口1.题目描述描述一个 DNA 序列由 A/C/G/T 四个字母的排列组合组成。 G 和 C 的比例(定义为 GC-Ratio )是序列中 G 和 C 两个字母的总的出现次数除以总的字母数目(也就是序列长度)。在基因工程中,这个比例非常重要。因为高的 GC-Ratio 可能是基因的起始点。给定一个很长的 DNA 序列,以及限定的子串长度 N ,请帮助研究人员在给出的 DNA 序列中从左往右找出 GC-Ratio 最高且长度为 N 的第一个子串。DN
2022-04-26 23:58:36
360
原创 查看Tomcat默认使用堆内存大小
查看Tomcat默认使用堆内存大小查看Tomcat默认使用堆内存大小1.Tomcat默认堆内存大小2.查看Tomcat堆内存大小查看Tomcat默认使用堆内存大小1.Tomcat默认堆内存大小如果没有配置JAVA_OPTS变量,JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。2.查看Tomcat堆内存大小通过jps找到tomcat的进程id[
2022-04-18 23:00:00
6432
原创 mysql开启慢查询日志
mysql开启慢查询日志1、MySQL慢查询日志是什么MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录MySQL中查询时间超过(大于)设置阈值(long_query_time)的语句,记录到慢查询日志中。long_query_time的默认值是10。2、如何开启MySQL慢查询日志查看slow_query_log变量,默认是关闭的。Last login: Fri Apr 15 16:21:56 2022 from 113.246.155.177[root@VM-8-
2022-04-18 11:39:02
1931
原创 Tomcat8 设置JAVA_OPTS启动参数,Tomcat服务器调优
Tomcat8 设置JAVA_OPTS启动参数,Tomcat服务器调优Tomcat8 设置JAVA_OPTS启动参数,Tomcat服务器调优1.在apache-tomcat/bin目录下新建setenv.sh文件2.编辑setenv.sh文件,添加环境变量Tomcat8 设置JAVA_OPTS启动参数,Tomcat服务器调优环境:Centos7,Server version: Apache Tomcat/8.5.5,JDK1.81.在apache-tomcat/bin目录下新建setenv.sh文
2022-04-13 22:00:00
3844
原创 使用docker搭建db2数据库
使用docker搭建db2数据库使用docker搭建db2数据库1.进入docker hub查询db2版本2.运行命令执行搭建3.db2常用操作创建操作系统用户db2创建数据库db2删除数据库赋予用户DB2权限db2 关闭连接使用docker搭建db2数据库1.进入docker hub查询db2版本docker hub 官网:https://hub.docker.com/r/ibmcom/db2/tags可以选择需要的版本。2.运行命令执行搭建我这里安装db2的最新版镜像docker r
2022-04-12 20:45:00
1590
原创 java开发中的各种中间件技术
java开发中的各种中间件技术java开发中的各种中间件技术1.什么是中间件2.中间件分类3.在项目中什么时候使用中间件技术4.开发中常用的中间件java开发中的各种中间件技术1.什么是中间件我们平时在应用开发中经常会遇到各种中间件的使用,现在我们经常听到的一句话是“面向消息队列编程”,其中消息队列就是一类中间件。对于初学者而言可能对“中间件”这个专有名词还不太了解。我这里先讲一下中间件出现的背景:一个大型企业同时运行着多个不同的业务系统,这些系统可能基于不同的操作系统、不同的数据库、异构的网络环境
2022-04-05 22:04:33
9362
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人