- 博客(176)
- 收藏
- 关注
原创 体验下java:agent技术
最近有接触到skywalking,了解到了java agent技术。用来做了一个打印方法执行时长的小玩具。添加启动参数,主打一个无侵入有木有。
2025-03-14 14:51:02
134
原创 使用右侧值现象来处理一个word导入登记表的需求
那么姓名的value值必定出现在(张三)–>(1,0),据此可得所有的value值都是(col+1,row),从而解析出姓名=张三,年龄=18 k->v对集合。经分析,配对问题采用了一种右侧值的思路,即:全部的字段项都是 姓名–>张三 ,也就是左侧是中文key,右侧是value这种型式。第四步,根据姓名=张三对和模板配置的属性对应关系,得到userName–>张三,age–>18。第一步,模板定义,将每个模板的中文名与java字段名进行对应,这里因为模板和硬编码较多,每个模板我放到xml中定义了。
2025-02-14 15:55:12
544
原创 信创时一些国产数据适配的问题
尤其是做批量新增修改时,mysql语系里必须 使用oracle的语法,oracle语系里,又可以使用mysql关联更新语法。6:部份国产数据库迁移工具有些很坑爹的行为,比如用long类型的日期,迁移后,变成了科学计数,导致日期区间查询失效。做的项目多了,接触到了不少国产数据库,如达梦,金仓,神龙,瀚高,高斯。2: 由于mybatis,PageHelper等都是外国佬写的,导致一些sql的自动匹配数据库厂家失效,从而导致报错。3:国产数据库函数,尤其是一些生僻的函数要么缺失,要么百度不出来,查文档也查半天。
2025-01-22 15:38:19
306
原创 用逆向思维解决某个短信供应商适配的需求
说明:正常来说,我司的短信发送如果想要换换供应商,只需要把提个手机+短信内容的默认的供应商TextMessageProvider替换就行了。产品设计时,用了@ConditionOnMissionBean注解来实现短信供端商的替换。但某甲方提的需求偏偏不按套路出牌。要求短信内容的模板,就是那个带占位符的文本模板放在甲方维护。在发送的最尾端,由于我司的短信内容是已经在业务中生成完毕的完整内容,也就是没有占位符变量了。如果改成该甲方的要求,需要把数十处业务代码都重新改动。上线在即,风险极高。因此,想到了下面这
2025-01-20 14:54:09
959
原创 改进一个切面的使用方式
后面发现切面里面是可以直接获取到method对象的,原因就是Signature有个MethodSignature的子接口,里面有个getMethod方法,之前一直没细看。如此一来,能将上述拦截器进行省略。代码不显得那么散,更紧凑。之前一直是在拦截器里处理Mothed注解,通过共享变量或request将处理结果带到切面,由切面进行二次处理。
2025-01-14 16:11:33
129
原创 使用策略模式时的一个生效问题
3:产品有默认策略A,B,项目扩展策略C,产品需要反向扩展策略C,并对C进行修改。此时,由于项目的策略是先生成的,处于已使用的状态,产品属于是后补充,不能对项目C策略有影响。此为产品反向补充策略C.2:产品有默认策略A,B,项目需要改写策略B,此为项目替换默认策略。1:产品有默认策略A,B,项目扩展策略C,此为正常扩展。也不知说明白没有,其实也简单,两个布尔值随便玩下。
2024-12-30 16:29:05
527
原创 通过BeanDefinitionRegistryPostProcessor接口替换产品的controller
项目需要将产品里的某类型接口作下处理,产口没提供相关的改写扩展。想到BeanDefinitionRegistry 里面有个移除bean定义的方法。试了下,果然行,把产品那个bean注册信息清掉,项目就能写一个一模一样endpoint覆盖了。
2024-12-25 11:07:21
212
原创 软考八股文写作心得
主要分为立法模块、备案审查模块、建议议案模块、会议模块、OA模块、系统配置模块等。建议议案模块主要负责人大代表建议议案的提交、审核、交付办理、办理单位答复、反馈、建议报表等。2021年3月,我参与了某省人大代表履职系统开发项目,该系统主要功能包含立法工作、建议管理、议案管理、信息管理、OA、系统配置等。在xxx方面,xxx。在xxx方面,xxx,在xxx方面,xxx。先来1-2句无关紧要的切入语句,如果是概念性论点,就把多的几个概念都列出来讲讲,如果是阶段性论点,就把个阶段介绍下之类的。
2024-12-11 11:35:16
288
原创 系统架构师软考应试八股文-论容错技术
比如使用redis提高接口的并发能力和响应速度,使用redis的increment功能做为分布式序列号生成工具,使用redis的ZSet功能为履职档案的排序缓存等。因此,对redis的容错能力有较高的要求。在数据库容错方面,系统使用了“主从复制、读写分离”的数据库布署方案,消除了数据库单点故障问题,在缓存容错方面,系统采用了redis的哨兵模式,当节点失效时,可自动的选举出新的主节点。因此,团队根据履职系统读多写少的特点,采用了数据库“主从复制,读写分离”的方案,以达到解决数据库单点故障问题的目地。
2024-12-11 10:45:34
415
原创 系统架构师软考应试八股文-论信息系统安全
系统满足了本身统一第三方系统的认证需求。安全是一个系统的基石,如果一个系统的安全措施做得不到位,存在安全漏洞,那么该系统出现事故的概率和损失越大。数据机密性指系统敏感数据不被泄露的能力,比如用户密码、用户隐私信息、政府内部敏感数据等,常用的方法的拒绝访问、数据加密、数据脱敏等。如对安全属性认识不够全面,我们只是根据过往的项目经验处理常见的安全问题,安全防御覆盖面不够广、认识不够深,导致上线后仍然存在一些安全漏洞,因此,公司在后续的产品框架中,通过与专业的第三方安全检测公司合作,全面的对系统安全进行检测。
2024-12-11 10:43:52
532
原创 系统架构师软考应试八股文-论微服务架构
微服务的实现方面,团队根据微服务层次结构设计和微服务划分因素,将整个系统划分成了立法业务微服务,由立法团队负责开发,子公司扩展业务微服务,由子公司负责开发项目演化阶段添加的新业务。主要模块包含立法模块、备案审查模块、建议议案模块、会议模块、OA模块、系统设置模块等。在微服务设计阶段,我们依据业务类型、研发资源配置、内部或公众业务等因素对微服务进行了服务规划,在微服务实现方面,我们使用了较成熟的nacos、sentinel、seata、ribbon、SpringGatway等技术,对各业务模块进行了实现。
2024-12-11 10:43:13
371
原创 系统架构师软考应试八股文-论软件系统架构风格
常用的软件架构风格有批处理架构风格、分层架构风格、事件驱动风格、解释器风格、数据共享风格等。但随着业务的快速扩张,需要处理的附属业务越来越多。然而,我们在架构风格实际使用中还存在着一些不足,在使用解释器风格时,针对已存在的流程,用户修改其路径或节点会带来一系列的问题,比如历史数据的处理、正在进行中的流程状态的转换等。通过三类架构软件风格的使用,系统在性能、可修改性、易用性等质量属性方面均有良好的表现,具体体现在:类与类之间基本达到了高类聚低耦合的标准、提供了便利的扩展机制、用户访问速度快、定制流程灵活等。
2024-12-11 10:42:25
1031
原创 系统架构师软考应试八股文-论软件架构评估
在性能方面,通过压力测试,评估了系统主要使用场景的响应时间和同时支持最大并发数,在安全方面,主要针对机密性和完整性,检测了系统是否具备入侵检测、入侵拦截、审计追追踪等能力,在可修改性方面,主要以系统在3个月内完成开发工作为基准,考察系统的扩展性和可修改性。如对安全属性认识不够全面,我们只是根据过往的项目经验处理常见的安全问题,安全防御覆盖面不够广、认识不够深,导致上线后仍然存在一些安全漏洞,因此,公司在后续的产品框架中,通过与专业的第三方安全检测公司合作,全面的对系统安全进行检测。
2024-12-11 10:41:22
255
原创 系统架构师软考应试八股文-论软件产品线技术
上述项目在许多方面用到的功能是通用的,比如系统设置模块,所包含的菜单管理、权限管理、字典管理、配置管理、角色管理等功能是所有项目都需要用到的。在软件产品线实施背景分析阶段,论述了公司项目现状和实施软件产品化的必要性,在软件产品线设计阶段,对公司项目进行了逆向工程分析,形成了以核心资源库为中心的软目产品线实施方案,在软件产品线实现阶段,使用了分层架构和多种设计模式,成功构建了公司产品的核心资源库,通过软件产品线技术的实施,我司在相同领域内的系统构建方面,取得了快速、可靠、资源投入低的优势。
2024-12-11 10:40:39
422
原创 系统架构师软考应试八股文-论基于ABSD的软件开发方法
摘要:2021年3月,我参与了某省人大履职平台系统开发项目。该系统主要功能包含立法工作、建议管理、议案管理、信息管理、OA、系统配置等。我在该系统中担任系统架构师,主要负责系统架构工作。本文以该系统为例,主要论述了ABSD软件开发方法在该项目中的应用。在架构需求阶段,项目通过采集、分析、评审客户需求和该垂直领域的部分通用需求,形成了完善的需求文库。在架构复审阶段,系统通过分析架构的性能、安全性、可修改性等质量属性,及早标识了架构潜在的问题,在架构实现阶段,系统采用不同的架构风格,分别处理复杂的架构需求。通
2024-12-11 10:39:46
568
原创 系统架构师软考应试八股文-论高并发解决方案
该方案是典型的空间换时间的作法。在本系统中,作了缓存预热处理,在应用服务器启动时,将地区国标信息、数据字典、固定配置信息等固定数据从数据库加载到服务器缓存中,当请求需要读取这些固定数据时,直接从本地缓存中读取,提高了请求响应速度。通过缓存技术的使用,系统有效的降低了用户请求的响应时间,提高了系统吞吐率,通过负载均衡技术的应用,系统有效的处理了服务器处理请求所需的系统资源不足的问题。在本系统中,为了解决高并发问题,主要采用了缓存技术、负载均衡技术、数据库读写分离方案,下面,本文论述了三种方案的实施情况。
2024-12-11 10:36:05
242
原创 系统架构师软考应试八股文-论nosql技术
在并发导入的环境下,一是无法系统无法在第一时间全部处理完成,二是数据要求顺序处理,以满足幂等检查等方面的要求。在redis的缓存应用方面,系统使用了redis的Hash数据格式,K-V数据格式,将数据缓存到rddis数据库中,提升了查询性能,在redis的分布式锁的应用方面,系统使用setnx+expire功能,解决了应用集群内的定时任务并发问题和业务并发问题,在发布订阅功能应用方面,我们将消息推送到reids队列中,消费者异步处理消息,提升了系弘吞味量,通过使用redis的各项功能,保障了系统顺利上线。
2024-12-11 10:35:15
595
原创 用反射+二段更新来处理字段置空问题
方法背景:页面的某些字段需要编辑成空。更新方法用的mybatisPlus的,如果要置空,需要把字段策略设置成FieldStrategy.NOT_NULL,前端传空串,还是empty什么来着。再加上有些字段类型字段DictColumn也无法判断null.老达不到预期的效果。再加上有些业务是部分字段update,会误将一部份不用置空的字段唐山设置成null.暂时还没找到好点的替换方法。有空再去研究下myBatisPlus有什么好的替换方法。在此背景下,简单粗暴的用反射做了个二次更新的基础方法。
2024-12-04 11:03:03
232
原创 一个空指针异常提示细节
很简单的一个段扣细节代码,用来找常见的空指针异常蛮有用的,页面的提示消息里面就直接定位到了空指针位置。异常通知里面处理下NullPointerException的提示语。
2024-11-26 18:01:24
138
原创 利用redis的key失效监听器KeyExpirationEventMessageListener作任务定时提醒功能
任务生成后,将 applicationName+任务id弄个key丢到redis中,设置一个3天的过期时间。时间一到,KeyExpirationEventMessageListener监听到这个key。再用读到的id发个消息完事了。用来做这种周边要紧不要紧,应标的小需求最合适不过了。用Timer的话开销还挺大的,多个应用节点的话还要用分布式锁来处理重复发送问题。用定时任务的话感觉很不舒服。要求在任务截止日期的前3天时,系统自动给用户发一条消息提醒。由于系统简单,没有使用消息列队,也不能使用延时队列来做。
2024-11-15 09:44:54
495
1
原创 java冷门基础知识--package-info
方法,控制类和模块级。在这个文件上加个@Permission(“admin”),表示整个模块都需要管理员权限才能访问。等于是起了一个模块名称。有时需要记录下访问接口是属于哪个模块的。类似日志、数据分类、生成某些模块数据之类的。在某一个包下创建一个package-info.java文件,名称是固定的。
2024-10-23 17:34:52
234
原创 debug的一些个人心得
spring容器初化过程,基本都在下面这个方法内:org.springframework.context.support.AbstractApplicationContext#refresh,关注的点有配置加载,各类工厂前置和前置处理器,监听器,bean的前置和后置处理,Aware接口、createBean等。这个最简单的了,一般也就进入方法F6,跳到下一行F5,跳过到下一断点F8,按钮的按法有一定的经验技巧,在最可能出现BUG的地方可以一行行跳,检查过敏感代码后,忽略非敏感代码,跳到下一断点等。
2024-10-09 18:02:32
387
原创 用来deploy jar包的bat脚本
call mvn deploy:deploy-file -DgroupId=%groupId% -DartifactId=%afId% -Dversion=%version% -Dpackaging=jar -Dfile=%~dp0%jarName% -Durl=http://纟x/repository/maven-releases/ -DrepositoryId=zysoft-releases。把jar包放在脚本同级目录,修改几个set参数,然后双击使用,没啥复杂的。echo “jar包上传结束”
2024-10-09 17:21:46
263
原创 Excel导入时,一个简单的匹配中文外键的方法
Excel导入时,外健往往只能用中文导入,在代码中,尝试用中文去匹配外建的id然后绑到要导入的数据中,这样一个,外健中文就必须和表里面的一模一样,但在实际中,导入的名称与表里存的名称总有少量字不同的差异,导致不能成功匹配到外健,因此,作了下面这个经验外健匹配工具,原理也简单,算一下目标匹配字符与需要匹配字符串之间匹配的百分比,该方法较简单,存在误判率。在不同的项目中有过验证。也可以提高几个经验数字来提高匹配的准确率。具体使用可以视导入数据的重要程度、敏感程度等不同场景来决定。
2024-09-23 18:14:11
202
原创 一种低版本mybatisPlus SQL注入攻击解决办法
对https://blog.youkuaiyun.com/qq_37148232/article/details/135238622?spm=1001.2014.3001.5501作了下升级。使用切面对入参作全面检查。以解决低版本mybatisPlus所带来的sql注入问题。
2024-08-17 15:58:01
322
原创 单体应用内,一种模块与模块间解耦合的土办法
单体应用有时会有一些综合数据的模块, 比如考评、报表、综合查询等。在maven里面直接把jar包移过来会产生循环依赖以及后期导致依赖混乱的问题。对业务模块的独立性也不是很友好。后期维护性、模块可移植性都很差。因此,在组件包里面设置了一个数据提供者的接口。模块间通过该接口进行数据交互。模块只需编写自已的数据提供接口的实现类接口即可。而综合数据模块也能取到需要的模块数据。两个模块开发人员沟通供需数据就可以了。不用直接把模块的坐标依赖过来。也不要去依赖对方的类。单体项目中,模块的独立性得到了保障。
2024-07-29 10:14:03
399
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人