dashboard基础指控
Arthas简介:通过`dashboard`查看线程信息,`jad`反编译类,`thread`分析线程堆栈与阻塞,`watch`监控方法参数、返回值及异常。支持按状态筛选线程,查看CPU占用、运行时间等。`quit`退出连接,`stop`彻底关闭Arthas。字符数:238。
Soul网关接入与验证
本章基于前两章搭建的应用,引入Soul网关,重点讲解Provider与Consumer如何通过注解和配置接入Soul。涵盖pom依赖、Controller注解(@SoulSpringMvcClient)、配置文件参数说明,并支持HTTP与Dubbo双协议注册,最后验证服务是否成功接入。
MaBatis--分页
本文介绍了五种分页实现方式:MyBatis自带RowBounds内存分页、PageHelper插件分页、原生SQL分页、数组分页及拦截器分页。对比了逻辑分页与物理分页的优劣,指出大数据量下应优先选用物理分页,避免内存溢出,提升系统性能。
认识Activiti
工作流指如请假、报销等需审批的业务流程,通过可视化引擎实现多节点审批,广泛应用于CRM、WMS等系统。主流技术包括BPMN、Activiti和Flowable,其中Activiti为Java系开源引擎,支持复杂流程自动化,推动企业流程数字化发展。(238字)
搭建dubbo-zk应用
基于SpringBoot 2.2.2 + Dubbo 2.0.0构建分布式系统,使用Zookeeper作为注册中心,JDK 1.8开发。项目分为父工程、API接口模块、服务提供者与消费者,实现服务暴露与远程调用,通过Postman验证通信正常。
记Arthas实现一次CPU排查与代码热更新
本文介绍如何使用Arthas排查线上Java应用CPU占用过高问题。通过`thread`定位高耗能线程,`watch`监控方法调用与异常,结合`jad`反编译与`redefine`实现热更新,无需重启服务即可修复代码,提升线上问题响应效率。适用于SpringBoot + JDK8环境。
MyBatis--常见配置
MyBatis配置优先级:方法参数 > resource/url属性 > properties元素内属性。支持多环境配置,通过environments指定默认环境和数据源,结合事务管理器(JDBC/MANAGED)管理事务,常用于多数据源场景,与Spring集成时由Spring接管事务管理。
SpringBoot--无标题
被@Configuration标注的类会被Spring IOC容器识别为配置类,作用等同于applicationContext.xml配置文件。通过注解方式注册Bean,结合AnnotationConfigApplicationContext可启动容器并管理Bean。示例代码展示了配置类及Bean的加载过程,输出结果显示配置类与组件均被成功注册到容器中。
SpringBoot--@Configuration
被 @Configuration 标注的类视为Spring配置类,等同于XML配置文件。结合 @Bean 注册Bean,通过 AnnotationConfigApplicationContext 加载配置类,可启动IOC容器并管理Bean实例,实现基于Java的配置。
MyBatis--映射关系
MyBatis中通过resultMap实现关联映射:一对一使用resultMap解决字段与属性不一致;一对多通过<collection>映射集合,如用户关联多个角色;多对一用<association>,如博客关联作者;多对多借助中间类,如用户与部门通过UserForDept建立双向关联。
Java泛型类型擦除以及类型擦除带来的问题--泛型擦除引起的问题及解决方法
Java泛型在编译时先进行类型检查再擦除,类型检查针对引用而非对象。擦除后泛型转为原始类型,通过自动强转实现安全取值。多态中因擦除可能导致重写失效,编译器生成桥方法解决。泛型不支持基本类型,静态成员不能使用类的泛型参数,但泛型方法可独立定义类型。instanceof不适用泛型类型判断。
Java泛型类型擦除以及类型擦除带来的问题--什么是泛型擦除后保留的原始类型
泛型擦除后生成原始类型,类型参数被替换为其限定类型(如无则用Object)。例如`Pair<T>`变为`Pair`,成员变为`Object`;若`T extends Comparable`,则替换为`Comparable`,确保类型安全与兼容性。
SimpleDateFormat不要定义为static
SimpleDateFormat 线程不安全,避免定义为 static,若需共享应加锁或使用 ThreadLocal。推荐使用 DateUtils 工具类。JDK8 中建议用 Instant、LocalDateTime 和 DateTimeFormatter,具有线程安全、不可变等优点,更简单高效。
Eclipse运行SSM/SSH项目教程
本文介绍了Java开发环境搭建步骤:包括下载开源Eclipse、配置JDK(常用1.8)和Tomcat(如7.0、8.0);演示了项目导入流程及Eclipse中绑定Tomcat服务器的详细操作,辅以多张图文指引,帮助开发者快速完成开发环境配置。
并发修改同一记录时需要加锁
推荐根据冲突概率选择锁策略:冲突小于20%时使用乐观锁,以version控制更新,重试不少于3次;否则采用悲观锁,可在应用层、缓存或数据库层加锁,确保数据一致性。
Java泛型类型擦除以及类型擦除带来的问题--什么是泛型擦除
Java泛型是伪泛型,编译后类型信息被擦除,仅保留原始类型。如`ArrayList<String>`与`ArrayList<Integer>`在运行时均为`ArrayList`,通过反射可绕过泛型限制添加非指定类型元素,证明泛型仅在编译期生效,JVM无法感知其存在。
使用 entrySet 遍历 Map 类集合 KV
遍历Map时,keySet需两次遍历,效率较低;entrySet一次获取键值对,性能更优。JDK8推荐使用Map.forEach方法。values()返回V值List,keySet()返回K值Set,entrySet()返回K-V组合Set。
线程池初始化严禁使用Executors
阿里巴巴规范禁止使用Executors创建线程池,因可能引发OOM。如newFixedThreadPool使用无界队列,任务堆积易导致内存溢出;newCachedThreadPool可创建过多线程,同样存在OOM风险。推荐通过ThreadPoolExecutor或Guava方式显式设置线程数、队列容量等,避免资源耗尽,提升系统稳定性与可追溯性。
Arrays.asList之后不要调用修改操作
`Arrays.asList()`返回的列表是固定大小的,底层基于原数组,不支持add/remove操作,否则抛出UnsupportedOperationException;且修改原数组会同步影响列表元素,因二者共享同一引用。
JVM--类加载--常见加载顺序
本示例展示了Java中各类代码块的执行顺序:静态代码块随类加载仅执行一次,优先于main函数;局部代码块在方法内按顺序执行;构造代码块每次创建对象前执行;构造器随后执行。输出结果体现其优先级与调用时机。
One Trick Per Day
初始化Map时,指定容量并非实际分配大小,HashMap会扩容至最近的2的幂(如1→2,3→4,9→16),易引发性能波动。建议使用Guava工具Maps.newHashMapWithExpectedSize(),按预期元素数自动计算初始容量,避免频繁扩容,提升性能稳定性。
ArrayList扩容机制
ArrayList 添加元素时,首先调用 `ensureCapacityInternal()` 确保容量足够。首次添加时,最小容量设为默认值10,触发扩容;后续添加若超出当前容量(初始10,每次扩容1.5倍),则调用 `grow()` 扩容。`grow()` 将容量增加50%,并通过 `Arrays.copyOf()` 创建新数组。注意:`length` 用于数组,`length()` 用于字符串,`size()` 用于集合。
Maven——构建二方包
二方包指对外提供的JAR包,如tj-api或微服务client。通过GAV(GroupId、ArtifactId、Version)提供给调用方使用。开发测试环境Version多为固定快照版(如1.0.0-SNAPSHOT),生产环境按版本递增(如1.0.1、1.1.3),重大更新时升级主版本号(如2.0.0)。
微服务技术栈——入职帮助
开通SCRM测试环境账号,配置Rancher、Jenkins、MySQL等服务地址及权限。安装JDK、Maven、IDEA并配置环境。拉取Git代码(需Developer权限),熟悉项目结构与技术架构,通过天机Day01指导梳理核心流程,技术问题先查百度,业务问题咨询同事,权限问题联系组长。
整合切面,参数拦截+过滤
该Java代码使用Spring AOP实现Web请求日志切面,自动记录请求来源、URL、方式、方法、参数及耗时。通过@Pointcut定义切入点,结合@Before、@After和@Around注解实现前置、后置与环绕通知,便于统一监控和管理控制器层的请求信息,适用于日志收集与性能监控场景。(237字)
mybatis常用配置
本文介绍MyBatis核心配置,包括属性加载优先级(方法参数 > resource/url > properties元素)、关键配置项如缓存、延迟加载、执行器类型,以及多环境配置与事务管理(JDBC/MAANGED),适用于MyBatis开发者快速掌握配置要点。