- 博客(67)
- 资源 (15)
- 收藏
- 关注
原创 Macos系统上搭建Hadoop详细过程
jps # 应看到 NameNode/DataNode/ResourceManager/NodeManager。
2025-11-05 12:42:28
442
原创 python入门(一)
本章从命令行来完成安装环境的监测,不知道如何安装的可以看我的《python开发环境安装多系统完整版》有详细介绍python命令行中的参数说明:python的环境变量说明:当我们接手一个新的python环境时,我们期望确定当前环境是否有安装期望的py版本,这个环境安装的路径,此时我们需要如下命令:使用 命令(Linux/macOS/Windows)在 Python 内部获取安装路径获取更详细的配置信息查看所有相关路径信息使用 命令(L
2025-10-31 15:56:22
186
原创 python开发环境安装多系统完整版
本文介绍了在Windows、macOS和麒麟系统上搭建Python开发环境的详细步骤。Windows系统部分包括Python解释器安装、环境变量配置、pip工具使用和虚拟环境管理;macOS部分重点介绍了通过Homebrew安装Python及相关工具的方法,包括Git配置、Anaconda安装和Jupyter Notebook使用;麒麟系统部分则详细说明了在国产操作系统上通过Miniforge安装Python环境的过程,并介绍了Visual Studio Code的配置方法。文章内容涵盖Python开发环境
2025-08-06 00:08:41
785
原创 人工智能如何重塑医疗
AI医疗十年发展呈现指数级增长,市场规模从2014年15亿美元跃升至2034年预计4910亿美元(CAGR 43%)。核心突破体现在:影像诊断灵敏度从73%提升至>99.8%,药物发现周期从10-15年缩短至8年,临床试验成本降低6%/年。三大赛道深度变革:AI影像诊断逐步实现从辅助到主导的跨越,药物发现实现"十年一剑"到"一年十剑"的转变,临床试验患者招募效率提升3倍。未来十年将迎来AI医生普及、数字孪生人体等十大趋势,2024-2035年全球市场预计保持25
2025-08-05 19:41:27
526
原创 建造者模式的实现(Java)
建造者模式是一种非常实用的创建型设计模式,它通过将复杂对象的构建过程分解为多个步骤,并将这些步骤封装在抽象建造者接口和具体建造者类中,使得用户可以根据需要灵活地创建不同类型的产品对象。这种模式能够有效地提高代码的可读性、可维护性和复用性,同时降低代码的耦合度,为软件开发提供了一种灵活而强大的解决方案。在实际开发中,合理地应用建造者模式可以帮助我们更好地应对复杂对象创建场景,提高软件的质量和可扩展性。
2025-07-17 05:01:22
716
原创 工厂方法模式的实现(Java)
工厂方法模式定义一个用于创建对象的接口,这个接口被称为工厂方法。通过这个方法,子类可以决定实例化哪一个类。它将对象的创建过程封装起来,使得客户端代码不需要了解具体的创建逻辑,只需要关注对象的使用。定义一个产品接口,声明所有由创建者及其子类构建的对象的通用接口。定义一个创建者类,声明返回产品对象的工厂方法,该方法的返回对象类型必须与产品接口相匹配。
2025-07-16 19:54:28
1101
原创 Java反射机制(重要)
Java反射机制详解:运行时的动态编程能力 摘要: Java反射机制允许程序在运行时动态获取类的完整结构信息,并能操作类或对象的属性和方法。核心实现基于Class类和reflect包中的Field、Method、Constructor等类。反射主要流程包括:获取Class对象(三种方式)、实例化对象、获取类成员信息、动态调用方法。典型应用场景包括框架开发(如Spring)、动态代理、单元测试等。虽然反射提供了强大的动态编程能力,但也存在性能开销和安全风险等缺点。合理使用反射可以增强程序的灵活性,但需注意避免
2025-07-10 18:25:35
580
原创 Spring核心技术底层实现详解
OverrideSystem.out.println("初始化前处理: " + beanName);@OverrideSystem.out.println("初始化后处理: " + beanName);System.out.println("代理方法: " + method.getName());});// 配置类@Bean。
2025-06-23 15:04:10
375
原创 Java虚拟机解剖:从字节码到机器指令的终极之旅(七)
应用层优化算法复杂度优化(O(n²) → O(n log n))减少不必要的对象分配并发数据结构优化JVM层优化选择合适的GC收集器优化堆大小和区域设置JIT编译参数调优容器层优化正确配置资源限制确保JVM感知容器限制使用高效的文件系统内核层优化网络参数调优虚拟内存管理调度策略选择硬件层优化NUMA架构优化使用RDMA高速网络SSD替代HDD过度优化在未测量的情况下优化过早优化(未确定瓶颈)资源分配错误JVM堆大于容器内存CPU配额不足导致线程饥饿配置冲突同时启用多个GC收集器。
2025-06-20 17:51:22
839
原创 Java虚拟机解剖:从字节码到机器指令的终极之旅(六)
/ 实现自定义自旋策略@Overridefor (;;= 0) {// 自适应自旋64 : 0;// 使用CPU等待指令continue;// CAS获取锁@Override// 写操作后插入StoreLoad屏障acquire(1);release(1);// 测试用例// 启动10个线程i < 10;t.start();
2025-06-20 10:13:14
1345
原创 Java虚拟机解剖:从字节码到机器指令的终极之旅(五)
通过深入理解新一代垃圾收集器的工作原理和性能特性,结合业务需求选择最佳GC策略,可以显著提升系统吞吐量,降低延迟,实现系统性能的质的飞跃。堆内存>64GB:选择Shenandoah分代模式。要求10ms内暂停:选择Shenandoah。JDK17+:ZGC或Shenandoah。堆内存<64GB:选择G1 GC。:仅需42位地址空间(4TB):基于历史数据预测最佳GC策略。要求亚毫秒级暂停:选择ZGC。:GC状态直接存储在指针中。:无需额外内存存储转发信息。首选ZGC(线性扩展性)- 最大GC暂停时间。
2025-06-20 03:00:36
628
原创 Java虚拟机解剖:从字节码到机器指令的终极之旅(四)
解释器:快速启动,低效执行C1编译器:快速编译,中等优化C2编译器:深度优化,高质量代码Graal编译器:新一代JIT,支持高级优化方法内联:消除调用开销(核心优化)逃逸分析:实现栈上分配和标量替换循环优化:展开和向量化提升计算效率去虚拟化:优化多态调用Graal原生镜像:AOT编译技术(机器学习优化:基于Profile的预测优化多语言支持:通过Truffle框架支持多语言硬件加速:集成GPU和FPGA计算。
2025-06-18 04:45:05
687
原创 分库分表查询实现方案详解
分库分表查询的核心在于如何高效地定位数据位置并合并查询结果。基于ShardingSphere-JDBC:轻量级客户端方案,适合Java应用基于MyCat中间件:代理层方案,对应用透明分布式数据库方案:TiDB等原生分布式数据库实时分析分离架构:将分析查询导向数仓精心设计分片键智能查询优化器HTAP混合负载处理多模型数据支持云原生分布式数据库优化分页查询(游标分页)合理使用绑定表和广播表读写分离减轻负载最终一致性替代分布式事务。
2025-06-18 02:17:24
1164
原创 物联网设备监控与控制系统实现详解(思路仅供参考,节选自亲身实战项目)
多协议接入:支持MQTT和TCP/UDP协议接入多种设备设备类型适配:针对门禁、道闸、访客机、空调、冰箱、锅炉等设备实现专用处理实时数据处理:设备数据采集、解析、存储和实时监控设备控制:支持远程控制指令下发图片抓取:门禁设备抓拍图片存储与展示告警系统:设备异常状态实时检测与通知数据可视化:设备状态、历史数据、地理分布的直观展示系统安全:设备认证、授权和数据加密传输。
2025-06-17 05:15:54
1035
原创 Spring Boot + Spring Security + 自定义注解实现数据权限控制(含前后端代码)
*** 租户字段名(默认tenant_id)*//*** 部门字段名(默认dept_id)*//*** 用户字段名(默认user_id)*//*** 数据范围类型*//*** 额外过滤条件*/// 数据范围枚举ALL, // 所有数据TENANT, // 当前租户DEPT, // 当前部门DEPT_AND_SUB, // 当前部门及子部门SELF, // 仅自己数据CUSTOM // 自定义条件2.2.2 字段权限注解/*** 角色类型。
2025-06-17 04:16:51
1444
原创 SpringBoot 线程池 配置使用详解
ThreadPoolTaskExecutor 是 Spring 生态中管理线程任务的利器,通过灵活的配置和与 Spring 的无缝集成,能够高效处理异步任务、高并发请求和定时调度。注解定期监控线程池的状态,包括活动线程数、当前线程数、核心线程数、最大线程数、队列大小和已完成任务数等,帮助开发者了解线程池的运行情况,以便及时进行优化和调整。:是 Spring 提供的一个线程池任务执行器,通过设置核心线程数、最大线程数、队列容量等参数,可以根据应用的需求灵活地配置线程池。例如,当线程池满时,
2025-06-16 18:18:53
2169
原创 MySQL 10亿条数据分析处理方案
程序解题:mysql数据库中有10亿条数据(订单记录1.9亿条、交易记录1.2亿条、用户记录290万,会员75万,日志记录5.6亿条,剩下的是管理数据),该数据总大小1.51TB,现要对该10亿条数据做统计分析和排序(年账单、月账单,月人均消费金额等),现在有一台32核64G内存200GSSD硬盘,用作应用服务器来处理统计分析,给出解题过程。
2025-06-16 15:15:32
1702
原创 HashMap底层实现原理深度剖析
HashMap是Java集合框架中最重要且使用最频繁的集合类之一,它基于哈希表实现,提供了高效的键值对存储和检索功能。理解HashMap的底层实现原理对于编写高效、健壮的Java程序至关重要。// 创建HashMap实例// 添加键值对populationMap.put("北京", 2154);populationMap.put("上海", 2424);populationMap.put("广州", 1868);populationMap.put("深圳", 1756);// 获取值。
2025-06-16 14:16:18
1170
原创 Java虚拟机解剖:从字节码到机器指令的终极之旅(三)
本文深入解析了JVM三大核心内存区域的运作机制,结合实验数据与真实案例,由于篇幅原因,实例都是代码片段,相信优秀的你知道提供的代码如何使用。每个线程初始化时在Eden区申请私有TLAB空间(默认约Eden的1%)Slot为最小单位(32位,long/double占2 Slot)TLAB用尽时申请新TLAB(触发全局锁竞争)对象优先在TLAB内无锁分配(指针碰撞实现)Metaspace使用量持续增长直至。:频繁申请新缓冲区,增加全局锁竞争。每次递归在栈上分配新帧(含局部变量。Metaspace使用量达到。
2025-06-16 13:40:39
637
原创 Java虚拟机解剖:从字节码到机器指令的终极之旅(二)
实现步骤继承java.lang.ClassLoader重写findClass()方法在findClass()中读取字节码调用defineClass()定义类示例:数据库类加载器@Override// 1. 从数据库读取字节码// 2. 定义类")) {类加载时机:由JVM规范严格定义,主要发生在首次主动引用时加载过程三阶段加载:定位字节码并创建Class对象链接:验证、准备和解析初始化:执行<clinit>方法双亲委派模型:保障安全性和一致性的核心机制。
2025-06-13 18:06:30
897
原创 Java虚拟机解剖:从字节码到机器指令的终极之旅(一)
Class文件结构:严格定义的二进制格式,包含魔数、版本号、常量池等关键部分字节码指令集:包含200+指令,分为加载/存储、运算、类型转换等类别i++ vs ++i:后缀自增先取值后运算,前缀自增先运算后取值方法调用机制invokevirtual:基于虚方法表的静态绑定invokedynamic:动态绑定,支持Lambda等现代特性Lambda实现:通过invokedynamic+引导方法+运行时生成类实现性能优化:现代JVM对字节码有深度优化(如方法内联、逃逸分析)
2025-06-12 23:30:17
1055
原创 数据一致性校验算法
附:Tcp保证可靠性一部分是通过Tcp协议报头体现出来的,还有一部分是通过实现Tcp的代码逻辑实现出来的,比如超时重传机制就是在发送方发出数据后开启了一个定时器,这就是通过Tcp的代码逻辑体现出来的,这在Tcp报头中是体现不出来的。扩散的作用就是将每一位明文的影响尽可能迅速地作用到较多的输出密文位中,以便在大量的密文中消除明文的统计结构,并且使每一位密钥的影响尽可能迅速地扩展到较多的密文位中,以防对密钥进行逐段破译。收到数据后,再次计算1的个数,并根据校验位的设置验证数据的完整性。
2025-05-20 19:54:19
972
原创 Linux之安装配置Nginx
使用wget命令或直接在浏览器中下载Nginx的安装包(如nginx-xx.xx.xx.tar.gz)。通过编辑这个文件,可以修改Nginx的监听端口、服务器名称、日志文件路径等配置。:确保Linux系统已安装,并且具有网络连接(以便在线安装依赖或下载Nginx)。: 进入Nginx的安装目录下的sbin目录,执行nginx启动脚本。选项指定Nginx的安装路径,以及其他一些可选的配置选项。命令访问Nginx服务的默认页面(通常监听在80端口)。: 进入解压后的Nginx目录,执行配置脚本。
2025-04-24 23:08:35
803
原创 HTTP协议(一)
HTTP的历史发展历程HTTP(HyperText Transfer Protocol,超文本传输协议)已经发展了几代,每一代都带来了显著的改进和优化。
2025-04-22 02:40:39
320
原创 MySQL之索引优化
例如下面显示的结果中 customer_id 的选择性比 staff_id 更高,因此最好把 customer_id 列放在多列索引的前面。例如下面的语句中,最好把actor_id 和 film_id 设置为多列索引。如:'%ptd_' 和 '%ptd_%' 都没有用到索引;优化方式:用代码拼装sql时进行判断,没where加where,有where加and。优化方式:如果是连续数值,可以用between代替。优化方式:可以给字段添加默认值0,对0值进行判断。优化方式:可以用union代替or。
2024-07-22 17:31:10
665
原创 CMS收集器原理详解
另外一种情况是没有配UseCMSInitiatingOccupancyOnly,这时候又有两种小的分支情况,一个是当老年代是因为分配对象而成功扩容的,这时候会触发background gc(足以看出-xmx 和 -xms设置成一样的重要性),第二个是一个非常复杂的情况,这个和CMS老年代的空闲链表有关系,复杂的原因是freeList这玩意本身的复杂度就是非常高的,简单的说此时CMS的后台线程判断FreeList中的空间不足以分配新的下一次晋升到老年代的对象时候,就会触发background gc。
2024-07-19 13:17:28
1253
原创 四种垃圾收集算法详解(JVM)
标记整理和标记清除的非常相似,但是标记整理的过程是这样的,首先是标记要清理的对象,然后将剩下所有存活的对象都移动到一端,然后直接清理端边界以外的内存。其实也就是标记-整理-清除算法,多了一个对内存的整理的过程。将活着的内存空间分为两块,每次只使用其中一块,在垃圾回收时将正在使用的内存中的存活对象复制到未使用的内存块中,之后清除正在使用的内存块中的所有对象,交换两个内存的角色,最后完成垃圾回收。:与标记清除算法相同,标记阶段会遍历整个堆内存,找出所有存活的对象(即被引用的对象),并给它们打上标记。
2024-07-19 12:30:25
1144
原创 Linux之shell应用(语法进阶)
的值得到的是 0,也就是上一条 echo 命令的结果,而 demoFun1 的返回值被覆盖了。为 0,如果找不到,则返回值 $?之后再用函数的 return 值作为测试,其中 demoFun1 返回值为 0,demoFun2 返回值选择了任意一个和 0 不同的整数,这里为 12。在函数体内部,通过 $n 的形式来获取参数的值,例如,$1表示第一个参数,$2表示第二个参数...将函数作为条件语句交给 if 判断,得出返回值为 0 时,依然为 true,而返回值只要不是 0,条件语句都判断为 false。
2024-07-18 17:21:15
977
原创 Linux之shell应用(语法讲解)
需要注意的是,在 for 循环中,变量的赋值使用的是in关键字,而不是等号(=)。当执行这个命令后,Shell 会将脚本的每一行命令都显示出来,并在命令执行之前先输出该行命令。与单括号不同,双括号内的变量可以不使用引号进行包裹,这意味着在条件测试中可以直接使用变量而不必担心特殊字符的影响。是扩展的条件测试结构,提供了更多的功能和便利性,可以进行更灵活的条件判断。是用于执行算术运算和逻辑运算的结构,在其中可以使用变量和运算符进行数值计算和逻辑判断。的值等于 "abc",则条件被认为是真,输出 "条件满足"。
2024-07-18 13:42:53
1147
原创 Linux文本工具之-Vim(二)
输入命令 :saveas newfile.txt 将会在当前目录下创建一个名为 “newfile.txt” 的副本,并将文本保存到该文件中。在命令模式下,输入 :wq 将会将文本保存到文件中,并退出 Vim 编辑器。:n 或者 :wn:在普通模式下,输入 :n 或者 :wn 可以切换到下一个文件并保存当前文件。:N 或者 :wN:在普通模式下,输入 :N 或者 :wN 可以切换到上一个文件并保存当前文件。U:按下大写的 U 键可以撤销对整行的所有修改,将行恢复到上一次保存时的状态。
2024-07-17 18:33:29
1094
原创 Linux文本工具之-Vim(一)
在普通模式下敲击键盘的 v 键即可进入可视模式,然后移动光标就可以选中一块文本,常用来完成文本的复制、粘贴、删除等操作。替换模式(Replace mode): 在替换模式下,您可以直接替换光标所在位置的字符。先将光标移动到指定内容的起始位置,按v进入可视模式,通过l向后选择,通过j向下选择,通过h向前选择,直到光标到达选中内容的尾部。Ex 模式是Vim的可选模式,它是命令行模式的扩展。yy是复制光标当前行,p是粘贴复制的行到光标下方行,当光标选中的非行数据时不包含\n,所以p粘贴时在光标后。
2024-07-17 18:05:56
914
1
原创 Nginx编译安装参数详解
它只能从服务器到客户端方向,只有一个字节的字符可以转换。--without-http_autoindex_module 禁用ngx_http_authindex_module,该模块用于在ngx_http_index_module模块没有找到索引文件时发出请求,用于自动生成目录列表。--without-http_gzip_module 禁用ngx_http_gzip_module支持,同--with-http_gzip_static_module功能一样。
2024-07-16 16:49:05
1448
原创 插入排序(Java)
最好情况:序列已经是升序排列了,在这种情况下,需要进行的比较操作需(n-1)次即可。如果目标是把n个元素的序列升序排列,那么采用插入排序存在最好情况和最坏情况如下。最坏情况:序列是降序排列,那么此时需要进行的比较共有n(n-1)/2次。i和j,每一次执行这个回圈,就会将第i个数字放到左边恰当的位置去。4、重复步骤3,直到找到已排序的元素小于或者大于新元素的位置。2、取出下一个元素,在已经排序的元素序列中从后向前扫描。直接插入排序属于稳定的排序,最坏时间复杂度为O(n^2),5、将新元素插入到该位置。
2023-12-07 22:34:20
547
原创 Linux常用命令(二)
locate命令可以在搜寻数据库时快速找到档案,locate为模糊查找,数据库由updatedb程序来更新,updatedb是由cron daemon周期性建立的,locate命令在搜寻数据库时比由整个由硬盘资料来搜寻资料来得快,但较差劲的是locate所找到的档案若是最近才建立或 刚更名的,可能会找不到,在内定值中,updatedb每天会跑一次,可以由修改crontab来更新设定值。(etc/crontab)grep 命令里的匹配模式,就是你想要找出来的数据,可以是普通的文字符号,也可以是正则表达式;
2023-12-05 23:31:33
1109
【数据库技术】SQL语法全解析:从基础到高级的语句示例与实战应用系统指南
2025-08-30
软件工程Spring应用配置文件统一规范:涵盖YML格式、环境配置与日志管理规则了文档的核心内容
2025-04-24
【微服务架构】Nacos Client服务注册与配置管理:Spring Cloud应用服务发现与配置中心集成指南
2025-04-25
【微服务架构】Eureka注册中心迁移到Nacos实施方案:服务注册与配置管理优化设计
2025-04-24
【医学影像设备】2024医学影像设备行业研究报告:市场规模、竞争格局与国产化进程分析介绍了医学影像设备
2025-04-22
jdk-8u421-windows-i586版本,安装后java版本为:1.8.0-421
2024-07-22
版本管理-git(管理约定)
2023-11-19
经典排序代码实现及分析
2022-05-31
java mail开发所需jar包
2010-12-15
最新tomcat日志查看包
2010-05-24
最新最全的spring开发包
2010-05-24
oracle数据库驱动包
2010-12-14
struts2+spring2.5+hibernate3.1整合包
2010-12-15
生成exe可执行文件工具
2010-12-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅