- 博客(339)
- 资源 (3)
- 收藏
- 关注
原创 《黑客与画家》读书笔记
但刚好在这个时间段我开始大量阅读一些技术类的经典书籍,比如:《代码整洁之道》《架构整洁之道》《重构-改善代码的既有设计》《设计模式》《代码大全》等等,在读完这些书之后,我又重新确定了我学习的方向,写代码完成业务功能,对于我们程序员只是最基本的要求,在此之上,我们应该怎么写出更好的代码,设计更加完善的架构,这也是需要我们不断去学习和努力的。创造人们需要的东西就是创造财富,财富的本质是满足人类需求的客观价值,格雷厄姆强调,财富创造必须基于真实需求,而非主观臆想,例如:农业时代:粮食是财富;
2025-03-19 11:13:56
381
原创 EasyExcel动态拆分非固定列Excel表格
通过上述方案,可高效应对供应链、电商等场景中非固定列结构的Excel拆分需求,具体性能优化需自行添加。实际应用中建议结合具体业务场景选择拆分策略(如按时间/地区等多列组合拆分)。
2025-03-16 22:23:02
424
原创 DeepSeek的无限可能
DeepSeek(中文名:深度求索)是一款由杭州深度求索人工智能基础技术研究有限公司开发的人工智能模型。它基于深度学习技术,旨在通过强大的语言模型实现自然语言处理(NLP)、文本生成、代码辅助等多种功能。DeepSeek的核心目标是让机器像人类一样理解和生成自然语言,从而为用户提供高效、智能的信息处理和创作支持。
2025-03-02 22:11:33
1084
原创 研发随笔(一)
BigDecimal.valueOf(0.01),那么0.01会先被转化为字符串类型的对象,然后再调用 new BigDecimal() 方法,这样可以保证精度不会丢失,所以 BigDecimal.valueOf(0.01) 可以理解成等价于 new BigDecimal(“0.01”)。其实两种方式都可以使用,一般情况下没什么区别,但涉及到有小数位的数值时,new BigDecimal(double)类型时,小数的精度出现扩展,
2024-12-30 23:49:44
328
原创 人工智能基础知识理解
浅层模型在处理非线性问题方面的局限性最先被突破的工作来自深度学习先驱Hinton和Rumelhart等人在1986年的工作,他通过在原来两层感知器这一浅层模型基础上,采用sigmoid进行非线性映射,并用反向传播BP算法训练多层感知器(MLP),有效地解决了非线性分类和学习的问题。引入激活函数后,可以看出在二分类的情况下,当模型得到的结果>0.5时,样本是正样本的概率要大于负样本的概率,这时模型会判断该样本是正样本,否则为负样本。可以看出,均方差的值越小,说明我们的模型越符合实际。
2024-12-29 11:45:48
689
原创 Maven项目中引入父POM的两种方式及其应用场景
子模块继承父模块的配置,但不会自动导入父模块中定义的所有依赖。现状是项目的pom文件的parent文件,通过<parent>标签引入的父POM版本已多年没人维护,就想换一个公司通过组件的父POM来维护包管理,而在Maven项目中,引入父POM(Parent POM)的方式。对于单个模块项目,如果需要使用父POM中的依赖管理功能,可以使用<dependency>标签配合<dependencyManagement>,这样既可以管理依赖版本,又不会引入不必要的配置继承。集中管理依赖版本,简化子模块的POM文件。
2024-12-25 10:53:19
519
原创 Redis缓存穿透与缓存击穿
在默认情况下,用户请求数据时,会先在缓存(Redis)中查找,若没找到即缓存未命中,再在数据库中进行查找,数量少可能问题不大,可是一旦大量的请求数据(例如秒杀场景)缓存都没有命中的话,就会全部转移到数据库上,造成数据库极大的压力,就有可能导致数据库崩溃。网络安全中也有人恶意使用这种手段进行攻击被称为洪水攻击。
2024-12-18 17:55:47
438
原创 apache的BeanUtils的Converter被相互污染覆盖问题
apache的BeanUtils工具集中用来把map对象转换为java对象的BeanUtils#populate方法会因为单例的原因其转换器Converter被相互污染覆盖问题。
2024-12-09 19:40:32
559
原创 Java合成海报
Data/** image属性 *//** text属性 */@Data需要关注的属性 文本框高度height,文本框宽度width,文本内容text,字体大小fontSize为了实现文本的多个feature,会先创建一个指定宽高的图片。
2024-11-04 14:25:01
332
原创 JAVA语言多态和动态语言实现原理
我们编码java文件,javac编译class文件,java运行class,JVM执行main方法,加载链接初始化对应类,确定类/对象调用函数,执行对应函数方法code字节码,执行引擎不断取指执行。本文主要介绍虚拟机加载链接初始化类后,在执行函数调用时虚拟机如何通过相关invoke指令,确定具体执行函数,并以此介绍JAVA语言中多态和动态语言实现原理。多态特性:虚拟机在运行时通过动态分派,查找确定要执行函数。
2024-11-03 13:30:07
855
原创 分享electron多窗口实践
在当今的软件开发领域,Electron框架以其独特的能力脱颖而出,它允许开发者使用Web技术构建跨平台的桌面应用程序。随着Electron应用的复杂性增加,多窗口管理和窗口间通信的需求也日益增长。本文将深入探讨如何在Electron中创建和管理多个窗口,并实现它们之间的有效通信。我们将从基础概念出发,逐步深入到实际代码实现,确保您能够理解并应用这些技术,以构建更加丰富和互动的桌面应用体验。让我们开始这段技术探索之旅,揭开Electron多窗口应用开发的神秘面纱。
2024-10-24 11:26:46
1321
原创 浅谈架构实战
架构目标实现业务的可复用和扩展,本文主要讲解了架构的演变历史和实战。首先服用可分为技术复用(代码复用,组件复用),业务复用(产品复用,业务实体复用,业务流程复用),其中产品复用 > 业务流程复用 > 业务实体复用 > 组件复用 > 代码复用。2 小程序服务端会调用一系列的基础服务,完成相应的请求处理,包括门店服务、会员服务、商品服务、订单服务、支付服务等,每个服务都有自己独立的数据库和 Redis 缓存;上面讲述了中台的架构的演变,,业务架构的实现必须依懒技术架构的,下面我们继续解析技术架构的核心点。
2024-09-03 19:36:44
1229
原创 浅谈SPI
SPI,英文全称是Service Provider Interface,直译是“服务提供接口”或“服务提供者接口”,是一种基于ClassLoader来发现并加载服务的机制。这里的“服务”泛指任何一个可以提供服务的功能、模块、应用或系统,这些“服务”在设计接口或规范体系时,往往会预留一些比较关键的口子或者扩展点,让调用方按照既定的规范去自由发挥实现,而这些所谓的“比较关键的口子或者扩展点”,我们就叫“服务”提供的“接口”。Service:一个公开的接口或抽象类,定义了一个抽象的功能模块;
2024-08-02 15:45:00
925
转载 《小宅门》新书分享会观后感
近期有幸在朝彻书屋聆听了鲁引弓先生的《小宅们》新书分享会。作者鲁引弓,中山大学中文系硕士,是热播电视剧《小欢喜》《小舍得》《小别离》的原著作家。分享会中,鲁引弓用十分生动、接地气的口吻,给我们介绍了书中的几个围绕“房子”展开的故事,贯穿了几代人对于房子不同的观念,给我们留下了对于生活的一些启发。对于大多IT打工人来说,很多人都是背井离乡,来到大城市为了生活奔忙。要想在大城市成家立足,买房似乎成了大家都在追逐的一条路径。买了房就有家了吗?下面分享几个在分享会上印象深刻的几个小故事,来跟大家一同思考。
2024-07-30 10:22:07
158
原创 Spark 中的分桶分化
是 Spark 和 Hive 中用于优化任务性能的一种技术。在分桶桶()中确定数据分区并防止数据混洗。根据一个或多个分桶列的值,将数据分配给预定义数量的桶。
2024-04-22 18:40:02
2286
1
原创 MVP+敏捷开发
敏捷开发是一种软件开发方法论,旨在通过迭代、自组织的团队和持续反馈,快速响应需求变化并交付高质量的软件。相较于传统的瀑布模型,敏捷开发强调灵活性、适应性和与客户的紧密合作。敏捷开发方法适用于各种规模和类型的项目,能够提高团队的生产力、客户满意度和项目成功率。软件开发过程中,最不可控,最常发生问题之处,在于沟通。限于认知,技术栈,专业领域知识等等的差异,从客户,到产品经理,到开发,测试,对相同问题的认知,理解,侧重都会有差异。产品力求一个大而全的,能解决所有问题的方案。
2024-04-22 09:28:45
1777
原创 Jolt Json转换工具的基础教程
jolt是一个轻量级的json文件转换库,可以把输入的json按照你编写脚本模板输出成你想要的json文本,能实现同样功能的有我们常用的velocity模板引擎,但jolt跟轻量且更专注于json,且在实现一些简单的格式转换中,模板的编写与编写json一样简单。
2024-04-21 19:07:15
1116
原创 Mysql索引专题
KV结构,更关键的是怎么合理地安排其中的Key,让其布局更合理,更加符合操作系统的特性。能按照定义结构使数据有序,平衡等,但是考虑到上述的树都是二叉结构,而数据库的值有很多,即使是AVL和红黑树在数据量较大时,树的度数呈线性相关。先根据name B+树匹配到对应的叶子节点,查询到对应行记录的id值,再根据id去id的B+树检索整行记录,这个过程就称之为回表,回表会造成查询两次索引树,应该尽量避免。那么这时候就有两颗索引B+树,如果每次构造B+树都把整行的数据存储到data中,显然会复制太多的数据,不合适。
2024-04-19 11:07:31
928
原创 Redis主从复制及其原理
当完成数据同步之后,主从服务器的数据暂时达到一致状态,当主服务器执行了客户端的写命令之后,主从的数据便不再一致。为了能够使主从服务器的数据保持一致性,主服务器会对从服务器执行命令传播操作,即每执行一个写命令就会向从服务器发送同样的写命令。2.主从服务器初次复制时,主服务器将自己的runid发送给从服务器,从服务器将这个runid保存起来;为了避免服务的单点故障,通过给主从复制可以把数据复制多个副本放在不同的服务器上,拥有数据副本的服务器可以用于处理客户端的读请求,扩展整体的性能。2.启动3台redis。
2024-04-17 15:22:16
517
原创 Spark开窗函数之ROW
Spark 1.5.x版本以后,在Spark SQL和DataFrame中引入了开窗函数,其中比较常用的开窗函数就是row_number 该函数的作用是根据表中字段进行分组,然后根据表中的字段排序;其实就是根据其排序顺序,给组中的每条记录添 加一个序号;且每组的序号都是从1开始,可利用它的这个特性进行分组取top-n。
2024-04-14 20:12:48
553
原创 状态机应用
状态机(state machine)是一种抽象的模型,用来描述一个对象或系统在不同状态下的行为和状态转换。支持的高阶功能有:状态的嵌套(substate),状态的并行(parallel,fork,join)、子状态机等等。状态(State):表示对象或系统的不同状态。当某个事件发生时,状态机根据当前的状态和事件,执行相应的动作,并转移到下一个状态。事件(Event):表示导致状态转换的事件。实现状态机可以帮助我们更好地管理对象的状态变化,提高代码的可读性和可维护性。S 代表实现的状态类型。
2024-04-14 15:00:57
373
原创 java日志框架简介
具体日志实现绑定初始化,如绑定到logback的StaticLoggerBinder,调用logback实现类StaticLoggerBinder#init->ContextInitializer#autoConfig,实现具体绑定类初始化。1)ContextInitializer#configureByResource,按顺序检查如下配置文件logback-test.xml,logback.groovy,logback.xml,则存在使用配置文件。按上面描述会使用JDK自带JUL作为日志实现。
2024-04-06 20:57:27
1212
原创 浅谈HTTP
有写过网页表单的人一定对GET与POST不陌生,但你了解什么是GET与POST吗!?现今的网页设计工具相当的发达,甚至不需要接触HTML语法就能完成一个规模不小的网站,渐渐地很多人都忘记了HTTP底层的实作原理,造成在发生错误的情况下无法正确进行侦错。早期在撰写HTML 表单语法时,都会写到以下的写法,然而大部分的软件工程师都会采用POST 进行表单传送。
2024-04-03 18:03:45
1285
原创 《实战供应链》读书笔记
本书开篇便讲述了供应链的定义:供应链是围绕核心企业,通过对信息流、物流、资金流的控制,从采购原材料开始,制成中间产品及最终产品,最后通过销售网络把产品送到消费者手中,并将供应商、制造商、分销商、零售商直到最终用户连成一个整体的网链结构和模式。供应链五大流程:物流:流通产生价值;资金流:成本创造效益;信息流:连接发生质变。供应链的目标:降本增效。
2024-04-01 03:00:00
1242
原创 事务传播行为Propagation
ClassA更新user1.年龄=11(事务,默认的Propagation.REQUIRED),ClassB更新user1.年龄=12(事务,测试不同的Propagation);ClassA和ClassB构成嵌套事务。通过2个测试程序,回到最开始的问题,项目里的那个方法不存在嵌套事务,因此指定为Propagation.REQUIRES_NEW其实是与Propagation.REQUIRED的效果一致,所以这里可删除掉Propagation.REQUIRES_NEW,避免歧义。
2024-04-01 02:00:00
1834
riso-jay.zip
2020-06-19
场景模拟代码.zip
2019-12-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人