笔记
文章平均质量分 88
软件开发随心记
这个作者很懒,什么都没留下…
展开
-
《实战供应链》读书笔记
本书开篇便讲述了供应链的定义:供应链是围绕核心企业,通过对信息流、物流、资金流的控制,从采购原材料开始,制成中间产品及最终产品,最后通过销售网络把产品送到消费者手中,并将供应商、制造商、分销商、零售商直到最终用户连成一个整体的网链结构和模式。供应链五大流程:物流:流通产生价值;资金流:成本创造效益;信息流:连接发生质变。供应链的目标:降本增效。原创 2024-04-01 03:00:00 · 663 阅读 · 0 评论 -
初识kafka-数据存储篇1
kafka原创 2024-03-24 16:01:39 · 1016 阅读 · 0 评论 -
应对高并发的软件架构之道
不论时加缓存、动静分离,还是重读轻写(数据异构),其本质都是读写分离,也就是微服务架构经常提到的CQRS(Comman Query Responsibitlity Separation)下图总结了读写分离架构的典型模型,该模型有几个典型特征:(1)分别为读写设计不同的数据结构。把系统分为读和写两个不同的视角来设计,各自设计高并发读和高并发写的数据结构或数据模型。可以看到,缓存其实是读写分离的一个简化,或者说是一个特例,左边写(DB)和右边读(缓存)其实用的基本一样的数据结构。原创 2024-03-09 19:19:17 · 914 阅读 · 0 评论 -
如何解决粘包半包
粘包与半包粘包现象服务端代码public class HelloWorldServer { static final Logger log = LoggerFactory.getLogger(HelloWorldServer.class); void start() { NioEventLoopGroup boss = new NioEventLoopGroup(1); NioEventLoopGroup worker = new NioEventLoo原创 2023-07-01 11:31:47 · 386 阅读 · 0 评论 -
全栈工程师-产品经理篇
本章主要以一个研发人的主观视角述诉,希望可以给一些正在做研发,但还没有做过产品的同学一些参考。做为一个全栈工程师的我,在工程实践中,在实践了一年多的产品经理的工作,此篇文章,就以全栈工程+产品经理为标题。在实践了一年多的产品线的产品经理岗位(此产品线的研发、运维也是我),我感觉我现在勉强可以算是一个初级产品经理水准关于产品经理的,就不再这补充了,但标题前面有写着“全栈工程师”开头,补充一下全栈工程师我认为非常重要,当你能够打通所有环节,任何的墙都不存在,但墙不存在时。原创 2023-05-04 00:18:56 · 852 阅读 · 2 评论 -
日常项目技术方案脉络
适合日常项目的技术方案书写脉络推荐原创 2023-04-19 21:26:46 · 738 阅读 · 0 评论 -
使用Apache Commons Pool2创建Java对象池
相比于其他实现对象池的技术,使用 Commons Pool2 实现对象池的优点是:它提供了完整的对象池管理功能,包括对象的创建、初始化、借用、归还、清理和销毁等操作,并且支持多线程环境下的并发访问和线程安全。此外,Commons Pool2 还具有灵活的配置选项,可以根据具体场景对对象池的性能和资源消耗进行优化。缺点是,使用 Commons Pool2 实现对象池需要引入额外的依赖,增加了项目的复杂性。原创 2023-04-02 19:24:50 · 1782 阅读 · 0 评论 -
JUnit 5 初探
相信很多软件开发对于单元测试和Junit都不会感到陌生。JUnit 是由两位编程大师Kent Back 和 Erich Gamma 在1997年编写的Java开源单元测试框架,它通过大量的注解(Annotation)和约定(Convention) 运行和管理单元测试用例。JUnit 的作者 Kent Back 曾经说过,软件开发如果没有单元测试就像人走在钢丝上,没有任何的保障。原创 2022-11-03 20:15:04 · 689 阅读 · 0 评论 -
提高代码易读性之改善函数命名
命名是一门艺术原创 2022-10-08 02:21:45 · 539 阅读 · 0 评论 -
设计模式之策略模式
策略模式(Strategy)原创 2022-09-13 12:25:55 · 274 阅读 · 0 评论 -
小程序优化实践
最近新接手了一个小程序,用这个小程序做了一些性能和交互优化的实践,记录下来一些操作和坑跟大家分享。原创 2022-08-07 22:55:49 · 3343 阅读 · 0 评论 -
金字塔思维学习
金字塔思维学习原创 2022-07-15 18:59:11 · 386 阅读 · 0 评论 -
MySQL慢查询及解决方案
MySQL慢查询与索引的关系,以及慢查询问题解决的方案原创 2022-07-10 17:22:28 · 16666 阅读 · 1 评论 -
读《敏捷整洁之道:回归本源》后感
敏捷过程,相信对大家来说并不陌生,在工作中或多或少都会用到敏捷的一些方法,很多概念也都熟悉。但笔者在读完大牛Robert C. Martin(鲍勃大叔)的这本《敏捷整洁之道:回归本源》后,感慨良多。感觉不仅不少概念清晰了,有些想法还得到了纠正,正应了书名,这是一本敏捷“回归本源”的书。.........原创 2022-06-14 14:13:41 · 361 阅读 · 0 评论 -
MySQL组合索引加不加ID
MySQL组合索引到底加不加ID原创 2022-06-06 01:50:03 · 951 阅读 · 0 评论 -
如何高效开发一款微信小程序
目录一、页面开发分工二、公共模块的封装三、开发规范与代码Review四、微信公众平台管理五、如何提高小程序审核通过的时效一、页面开发分工在我们接手到一个小程序开发项目的时候,首先要做的是根据产品文档和UI设计稿,进行任务分解。1、任务分解任务分解也叫工作分解结构(简称WBS),就是把一个项目,按一定的原则分解,项目分解成任务,任务再分解成一项项工作,再把一项项工作分配到每个人的日常活动中,即:项目→任务→工作→日常活动。对于小程序这样...原创 2022-05-23 10:44:51 · 11742 阅读 · 10 评论 -
叮咚,Redis OM对象映射框架来了
叮咚,Redis OM对象映射框架要来了!一、Redis OM来了11月23日,redis宣布了四个新的Redis高级客户端的预览版,将这些库称为Redis OM(Redis Object Mapping)-----对象映射。其框架以强大的 Spring Data Redis (SDR) 框架为基础,提供一个高级抽象工具箱,通过我们熟悉的面向对象的编程来表示。其目的是专注于对象映射和流畅查询,即尽可能轻松的使用 Redis 。它可以透明地将域对象保存在 Redis 中,并且能使用流畅的、以语言为中心原创 2021-11-29 21:30:41 · 1193 阅读 · 0 评论 -
一个简单的AOP实例
第一个AOP的练习欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ,将会带来全新的写作体验;在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行原创 2021-11-12 20:08:27 · 677 阅读 · 1 评论 -
谈一谈raft分布式一致性算法
谈一谈raft分布式一致性算法1、什么是分布式一致性2、raft算法应用场景3、raft算法4、总结本文讲解Raft分布式一致性理论算法,阅读了raft算法论文,帮助后面大家更好的理解Raft分布式一致性算法。1、什么是分布式一致性分布式一致性问题,简单的说,就是在一个或多个进程提议了一个值应当是什么,使系统中所有进程对这个值达成一致意见。它是指多个服务器在状态达成一致,但是在一个分布式系统中,因为各种意外可能,有的服务器可能会崩溃或变得不可靠,它就不能和其他服务器达成一致状态。这样就需要一种Cons原创 2021-10-09 16:35:08 · 553 阅读 · 0 评论 -
救火队员的行为准则
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar原创 2021-10-03 23:32:10 · 171 阅读 · 0 评论 -
理解redis,一篇就够
霏霏原创 2021-09-14 19:45:01 · 1119 阅读 · 0 评论 -
spring事件驱动分析
文章目录前言spring事件编程-实践观察者模式和发布-订阅模式spring事件驱动源码分析publishEvent()源码跟踪:@EventListener注解实现源码分析结语前言众所周知,在领域驱动设计中聚合根的设计有一个很重要的原则:每个事务应该只更新一个聚合根。然而,在我们的实际业务中,经常会出现涉及到多个聚合根同时更新的场景。这无疑对于系统设计提出了不小的挑战,设计一个粒度适中,又能符合业务要求的聚合根并不是一件容易的事情。领域事件为我们提供了一种非常简单的解决方案:在聚合根完成更新后产原创 2021-09-05 16:12:49 · 631 阅读 · 0 评论 -
SpringBoot线程池
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入SpringBoot线程池欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页原创 2021-09-03 12:05:48 · 241 阅读 · 0 评论 -
简述SpringBoot Starter原理及自定义实现
简述SpringBoot Starter原理及自定义实现一、简述二、结合SpringBoot启动原理看容器如何实现自动装配三、解析mybatis-spring-boot-starter包看mybatis的集成四、自定义Spring Boot Starter一、简述SpringBoot Starter是一组方便的依赖描述符,一个启动器。可以看成一个入口,通过这个入口,整合其他的模块,使得我们开发中不需要到处写配置或者在基础模块中加各种依赖,让配置和依赖的处理变得更简单。Spring Boot Start原创 2021-08-17 22:08:56 · 4090 阅读 · 1 评论 -
前端数据推送浅析和websocket底层原理探究
前端实时推送浅析文章目录前端实时推送浅析前言短轮询短轮询简介优点缺点适用场景长轮询长轮询简介优点缺点适用场景长连接SSE长连接SSE简介优点缺点适用场景WebSocketWebSocket简介优点缺点适用场景websocket底层原理探究websocket 心跳检测和重连实现与封装总结前言前段时间,完成了项目组分配的一个任务——数据实时大屏,即把商场销售、车流、客流和人流等数据展示到页面上。本次项目采用的是定时轮询的方式去查询数据,总结一下,存在的问题:十分钟执行的定时任务,有时候定时任务尚未执行完成原创 2021-07-26 08:59:59 · 535 阅读 · 0 评论 -
复习一下Kafka
一、前言前几天看了一篇《打造全球最大规模Kafka集群,UBER的多区域灾备实践》的一篇博客,Uber用kafka实践,每天处理数亿级消息和几个PB的数据,kafka现在成了Uber的技术栈的基石,并基于构建了一复杂的生态系统,它实现了kafka的多区部署、多区消费消息和容灾,今天我不重点说kafka在UBer的具体实践,而是借用这个主题全面梳理一下kafka,重新复习一下。说到消息队列,耳熟能详有rabbitMQ、activeMq、rocketMq、redis的MQ等等。在工程化越来越复杂的今天,消息队原创 2021-07-18 21:45:12 · 1187 阅读 · 9 评论 -
射线法进行地理空间坐标计算
移动端应用开发过程中经常需要计算地理空间关系,例如:快递员/外卖员是否已抵达小区附近,办公打卡签到时是否在公司周边,共享单车是否停放在指定区域或禁停区等等。前面我们介绍过如何使用MySQL进行地理坐标计算,不过这个方案存在几个局限性:所有地理数据必须入库存储,有时候我们可能只是单纯想内存计算一下;MySQL不支持曲线计算,只能通过线段拟近,存在一定误差;对于航空空域等计算场景,当地理坐标跨越了换日线时,无法直接用几何图形表示地理关系。上面第三点是作者在做实际项目时遇到的问题,因此在这里介绍另一原创 2021-06-20 21:11:51 · 892 阅读 · 1 评论 -
Logback原理分析
业务开发中,少不了打印日志,常用的日志框架有commons logging/log4j/logback/log4j2等,同步日志方面logback性能略微胜出,而异步日志方面log4j2性能突出。今天要探讨的主角是logback。SLF4J说到logback,必会提及slf4j。slf4j的全称是:The Simple Logging Facade for Java,是java的一个日志门面,slf4j制定了一套标准接口,从而实现在【日志】这个领域里一统江湖。主要做两件事:实现了Logger获取的通原创 2021-06-07 15:04:37 · 1449 阅读 · 0 评论 -
扁平数据转树形结构探究
扁平数据转树形结构探究背景前段时间,由于业务需求,需要把后端返回的扁平化的数组结构,转换成树形结构,以适应于前端多级菜单栏的渲染,一开始查阅了一些资料,但发现并不是自己想要的答案。为了得到自己最想要的结果,特地花了时间对该问题进行了一些探究性尝试,并对探究过程和结果进行记录。希望能给遇到相同问题的人提供一些参考。原始的数据结构如下:// id为当前菜单的唯一标识// parentId 为上级父类菜单标识// name为菜单名// 后端返回的数据级数具有不确定性,即可能有1/2/3/4级等,da原创 2021-05-07 09:38:50 · 435 阅读 · 4 评论 -
mysql数据库order by正确使用姿势杂谈
一、引言 在MySQL数据库中,Order by语句的使用频率是比较高的,但是众所周知,在使用这个语句时,往往会降低数据查询的性能,前段时间收到一些慢查询的告警,通过排查是因为order by排序引起的,那么order by在mysql内部是如何执行的呢,以及应该如何正确使用来提升SQL的性能,下面简单分析一下。二、案例分析 order by在mysql内部排序一般分为两种,一是利用索引的有序性获取有序数据,二是利用内存/磁盘文件排序获取结果 ,废话少说,先建一张表插入100万数据并以此表举例来进原创 2021-04-09 19:57:06 · 4886 阅读 · 0 评论 -
Flutter 篇:小白入手 Flutter Plugin
由于业务需要,要做蓝牙打印机的适配,内部有类似的插件,但不适用于业务所要求的蓝牙打印机,所以就自己下手尝试了一下 Flutter Plugin 的开发。Flutter Plugin 有什么用?类似我们 node 的 npm,Flutter 也有自己的 packages 库,Flutter 的 package分两种,一种是纯 dart 的包,一种是与原生交互的插件,我们这里说的是与原生交互的 plugin 的开发,plugin 的开发与复用,能提高开发效率以及降低工程耦合度,为项目快速集成对应的能...原创 2021-04-06 20:47:02 · 2144 阅读 · 0 评论 -
分布式事务学习笔记
前言现在在做的线下收银系统经常出现负库存异常单,经常有店员反映不知道如何处理,导致不能日结。而导致问题的原因是收银系统、订单系统成单后调用库存系统扣库存的时候发现库存不足,导致扣减库存失败。正好在公司wiki的时候偶然看到基于Saga补偿模式的分布式事务设计文档,故而去学习了解了下分布式事务的解决方案。在此对分布式事务解决方案做一些学习整理。基本概念事务事务是指应用程序执行一系列的操作,并且要求这些操作要么全部成功,要么一个也不执行。事务具有四个基本要素ACID。原子性(Atomicity):一个原创 2021-04-05 20:36:48 · 242 阅读 · 0 评论 -
数据可视化图表工具建设论述
图表是数据可视化最常用的一种表现形式,图表可以让人们更直观的了解数据。在数据建设过程中,图表工具的建设也成为必不可少的环节。本篇主要分享下个人在这方面的一些思考和实际的应用实践。不过,正所谓道可道也,非恒道也,其中的理论可以参考,但不一定都能照搬,或者说仅仅只是一个总结,供大家一些启发。首先,我们思考一个问题,图表工具的建设属于基础架构层面的建设范畴还是业务层面的工具建设?为什么需要考虑这样子的问题呢?因为如果是基础架构层面的建设,那我们应该做一个通用性的工具,能满足绝大部分的应用场景。如果是业务层面的原创 2021-03-22 00:37:23 · 185 阅读 · 0 评论 -
ThreadPoolExecutor杂谈
ThreadPoolExecutor杂谈日常的业务开发中,避免不了使用多线程,而通常我们不会在代码直接去new一个线程(不可控且耗资源),而是借助于线程池。而java原生的线程池中应用最广泛的当属ThreadPoolExecutor原理简述网上有大一堆分析ThreadPoolExecutor 的帖子,包括原理乃至源码,这里简单回顾其大概执行过程,首先看构造函数:public ThreadPoolExecutor(int corePoolSize,原创 2021-03-14 21:36:42 · 193 阅读 · 0 评论 -
ElasticSearch入门实操
中台最近在优化选品业务,希望能给客户提供搜索商品的功能,自然想到了可以快速存储和搜索海量数据的全文搜索引擎—ElasticSearch.目录1.简介2.安装(Win10环境,超级简单,开箱即用)3.基本概念4.入门5.Spring Boot整合ES6.《深入理解Elasticsearch》读书笔记1.简介ElasticSearch是Elastic技术栈中一套分布式、可扩展、实时的搜索与数据分析引擎。Elasticsearch不仅仅只是全文搜索,同时也提供结构化搜索、数据分原创 2021-03-07 21:30:08 · 445 阅读 · 0 评论 -
Vm -> Docker -> K8s
前言在实际的软件开发过程中,我们需要多的环境:如开发环境、测试环境、沙箱环境、自动化环境、预发环境、生产环境……这么多的环境要如何维护呢?是一台机器部署一个应用,还是一台机器部署多个应用?多个应用之前又要怎么隔离呢?这时候就需要使用到虚拟化技术了。VM(虚拟机)所谓虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统 。这个听起来有些绕口,其实就是通过软件的隔离,让你的电脑能够同步安装多个完整的计算机系统,这里说的软件比较有名的就是V原创 2021-01-12 16:06:09 · 541 阅读 · 0 评论 -
浏览器从输入URL到渲染页面过程发生了什么?
刚接触前端的时候,看过很多类似的文章,但因为文章里面提及的知识点自己没有接触过,没理解,所以当下看了记下了,过后也就忘记了,经过工作后再总结一次。这里会提到以下几个过程: 查询缓存 DNS域名解析 建立 TCP 连接 向服务器发送 HTTP 请求,返回结果 浏览器解析 HTML 浏览器布局渲染 以 baidu.com 为例,当我们在浏览器上输入URL的时候,其实就是我们要向服务器请求我们想要的内容。查询缓存这里,要提到一点,缓存问.原创 2021-01-11 23:41:59 · 679 阅读 · 1 评论 -
Handlebars.java学习笔记
背景最近在做一个移动收银的项目,需要使用到银行的设备进行收银。由于使用的是银行设备,每次更新APP是都需要经过银行审核才能上线,这就加大了应用上线的复杂度。而且银行的pos机,性能也有限,通过http请求访问web页面会比较缓慢,会影响收银等操作,影响用户体验。对于一个新项目来说,在没有经过长时间试运行之前,积累不够,稳定性肯定有所欠缺,基本都需要不断的迭代更新,不断的完善系统交互。估而老大希望将可以预见经常变化的页面的开发工作后置到服务端,避免频繁发布app。如小票打印,由后端生成好最终的打印模板并且原创 2021-01-10 12:23:10 · 929 阅读 · 0 评论 -
解构 java class文件格式 - 以HelloWorld为例
本文通过逐个字节解析的方式,彻底解构一段大家耳熟能详的代码(HelloWorld)来一窥JVM虚拟机核心——字节码的“秘密”。原创 2020-11-30 14:43:21 · 542 阅读 · 1 评论 -
基于fbprophet的时间序列预测
基于fbprophet的时间序列预测基于fbprophet的时间序列预测Prophet模型常用参数说明趋势相关周期相关假日相关简单入门误差评估与调参使用训练出来的参数进行最终的预测基于fbprophet的时间序列预测由于业务的需求,需要对未来一段时间做销量预测,这在过去可能有点玄学的味道,然而在当今的大数据时代,数据科学家们早已将这类问题归类为基于时间序列的预测,也同时产生了各种时序预测的算法模型,诸如ARMA/ARIMA、指数平滑法Holt-winters、基于深度学习的LSTM等,还包括fbprop原创 2020-11-30 08:50:55 · 1700 阅读 · 4 评论