- 博客(107)
- 资源 (11)
- 收藏
- 关注
原创 【十六】MySQL数据库设计篇
紧赶慢赶文章总算是结束了,因为明天要加班,根据自己制定的每周一篇的计划,今晚必须要完成文章的书写工作,一直没有审稿的习惯,本次编写也没来得及审稿先发出了,后续阅读到有不清楚的地方再做细节调整。本文意在总结数据库设计各方面的思考路线,一直依赖也都是按积累的经验和数据库知识来做数据库设计的工作,并没有一套成体系的方案,近期因为有一部分工作是审核团队的系统设计,突然想到了数据库设计这一环节是非常重要的,所以考虑把审核的思路整理成体系。
2024-03-23 21:51:05 911 3
原创 【四】常用数据层技术高可用方案1
本文主要是简单阐述了MySQL和redis推出的高可用方案,具体实现细节以及优缺点、应用场景没有进行阐述,后续连载文章再做细节性的描述。
2024-03-17 12:41:33 823 2
转载 光储充综合新能源储能系统研究笔记
电力储能技术是一种储存电能的技术,用于平衡电力系统中电能的生产和使用。由于用电量总在波动,同时考虑到发电设备故障的可能性,系统中投入运行的发电设备容量通常高于用电量。多余的电能被储存起来,以备用电量上升时进行调剂使用。储能方式包括抽水蓄能、电池蓄能、超导体蓄能、机械飞轮蓄能、压缩空气蓄能等,其中抽水蓄能是最普遍的。
2024-03-15 21:16:33 37
原创 电力物联网系统设计
在新能源行业从业多年,参与和负责过大大小小的的项目,发电侧、电网侧、用户侧系统都有过实际的项目经验,这些项目或多或少都有物联网采集方面的需求,本篇文章将会对电力行业物联网经验做一个总结分享。在了解电力物联网之前我们先了解一下物联网的概念,从名称上可以直观的理解物联网是指物体连接到网络中形成的一种网络,我们生活中或多或少都能知道物与物之间是通过传感器连接起来的。近十年里网络技术高速发展,物联网技术也随着网络技术的革新应用越来越多,近些年万物互联的蓝图越来越清晰可见。
2024-03-08 22:28:15 1125
原创 从码农成长为软件设计师
本章概括性的分析了码农成长为软件设计师的过程,从入行到成长为软件设计师,善于思考的人可能只需要3-5年,而有些人职业生涯一直都停留在码农阶段。既然我们选择了从事技术,我们就应该以成长为行业技术专家为目标,软件编程一项工程化的工作,我们既要熟练这一套工程化的流程,还要深入一线去实践总结形成一套思维体系,只有这样你才能称得上是一名合格的工程师。
2024-03-03 21:53:51 799
原创 【一】通信协议概述
本篇内容主要是为后续通信系列文章起到开篇的作用,文中内容主要是收集和汇总而成,对通信协议整体进行了概述,IEC 60870-5协议族方面目前只使用到了102和104,后续接触到新的协议会重新更新文章内容。
2024-01-13 21:39:47 1016 2
原创 【一】达梦数据库安装和使用-Windows
本文对达梦数据库进行了简单介绍和下载安装过程进行了描述,为了方便初学者理解只是记录了主要的步骤,具体细节说明官方文档是很全面的,可以进行查阅学习。有同样行业经验的同学欢迎留言进行交流。
2024-01-06 20:36:29 1317
原创 【四】记一次关于架构设计从0到1的讨论
要聊架构设计这一话题首先我们要知道什么是架构,百科中介绍:软件架构所指的就是说相应的系列性的抽象模式,可以为设计大型软件系统的各个方面提供相应的指导。从本质上来看,软件架构是属于一种系统草图。这段定义我感觉等于白说了,反正我是没理解。我觉得架构应该这么理解,就像搭房子,我们需要方案设计、人员安排、物料规划。这些结合在一起才算是完整的架构设计过程。而相对于软件项目,在方案设计方面我们需要有项目说明书、架构设计图,依据项目说明书我们来做方案。
2023-12-24 19:45:44 905 2
原创 【十】我们都是面向spring注解开发的
本篇博客主要是讲述了我们平常开发都是基于注解的方式进行的,这也是J2EE开发技术发展现阶段的情况,注解的作用是标记,对于业务来说侵入性非常低,同时使用上灵活性非常高,相对于之前xml配置的方式,基于注解驱动开发更加灵活了。
2023-12-16 21:27:09 73
原创 【九】spring、springmvc、springboot、springcloud
本篇意在讲解spring框架演进的脉络,有演进过程我们感受到spring最初的设计目标和理念一直没有改变,这也是为什么很多框架在行业发展的历程中折戟沉沙了spring却依然活跃,而且我们也能够很明显的体会到工作中我们是面向spring编程的。这里没有细致的去讲解细节内容只是梳理了一下整体脉络,其他博客会补充细节方面的内容。
2023-12-09 21:07:30 1007
原创 光伏电站全貌
每一篇文章开篇我都会写一个内容简介,一来梳理自己的写作思路,二来方便读者整体了解文章写作意图和脉络。本篇是新能源方面的开篇之作,我选取了介绍光伏电站基础知识,首先我们要了解光伏电站基础分类,然后需要了解光伏电站的主要设备有哪些,之后是场站并网流程和日常运维工作,了解了这些知识我们对光伏电站有个整体概念了,这样方便日后理解相关的行业系统。一、分类离网光伏系统、并网光伏系统、混合光伏系统并网型光伏发电系统组成二、主要设备光伏组件、汇流箱、逆变器、变压器典型光伏发电系统组成监控系统。
2023-12-07 08:23:46 424
原创 【九】linux下部署frp客户端服务端实践(内网穿透)
今天有一个这样的需求,部署在公司内部局域网虚拟机上的服务需要在外网能够访问到,这不就是内网穿透的需求吗,之前通过路由器实现过,现在公司这块路由器不具备这个功能了,于是开始查找自己搭建的方案,找到目前市面上一些主流的内网穿透工具有:Ngrok,Natapp,花生壳,Ssh、autossh,Frp,Lanproxy,Spike。这里选用了Frp作为技术实现方案。
2023-11-29 08:30:00 263
原创 【八】Linux成神之路
最近梳理了一下自己linux系统的学习历程,感觉整个成长过程就很顺利,并没有走弯路,于是想着可以不可以把自己linux系统学习的路线记录下来,能够在大家成长的路上有一点帮助,就在这样的一个想法驱使下开始构思了这篇博客,希望对大家有所帮助。
2023-10-28 19:01:51 332
转载 迄今为止最完整的DDD实践
实体有唯一的标识,有生命周期且具有延续性。例如一个交易订单,从创建订单我们会给他一个订单编号并且是唯一的这就是实体唯一标识。同时订单实体会从创建,支付,发货等过程最终走到终态这就是实体的生命周期。订单实体在这个过程中属性发生了变化,但订单还是那个订单,不会因为属性的变化而变化,这就是实体的延续性。
2023-10-26 12:48:15 65
原创 【七】SpringBoot为什么可以打成 jar包启动
庆幸的是夜跑的习惯一直都在坚持,正如现在坚持写博客一样。最开始刚接触springboot的时候就觉得很神奇,当时也去研究了一番,今晚夜跑又想起来了这茬事,于是想着应该可以记录一下了,不至于下次想不来了又去翻资料。
2023-10-24 21:08:34 360 3
原创 【十四】记一次MySQL宕机恢复过程,MySQL INNODB 损坏恢复
一个业务数据库疏于运维管理,突然在今天崩溃宕机了,真是让人抓狂,上面也不知道积累了多久的数据,平时也没有定期做好备份,这下岂不是瞎了啊,经过不断的收集信息和尝试最终处理好了,在此记录一下。
2023-10-21 19:07:48 773
原创 性能测试工具:Jmeter 实践总结
近期在研究程序的稳定性,第一时间想到了使用jmeter对程序进行测试,逐步找到程序的瓶颈,之前这块工作都是安排测试人员来做的,接触的不是太深,研发对自己开发的程序应该能够自己心里有个底,所以感觉性能测试研发也需要掌握的,设计大型网站系统的时候做系统容量评估也都需要的,于是开始自己研究了一番。一、jmeter介绍Apache的jemeter是一个纯粹的java开源软件。首先是由Apache软件基金会成员stefano开发的, 用于测试软件性能和负载行为。
2023-10-10 07:45:00 112
原创 【二】spring boot-设计思想
现在越来越多的人开始分析spring boot源码,拿到项目之后就有点无从下手了,这里介绍一下springboot源码的项目结构
2023-10-06 22:06:18 838
原创 【二】xxl-job 源码分析
本文主要是梳理了一下自己理解xxl-job的思路,中间一段内容摘抄自官网(本部分都是通用的没必要自己去重复),文章整体并不是为了详细讲解清楚xxl-job开源项目,而是提取了核心关注点来进行的介绍,目的是让大家能够对xxl-job主流程和设计思路有个清晰的认识。
2023-09-27 14:53:59 98
原创 【一】Spring Cloud 系列简介
Eureka,服务注册中心。Zuul,API服务网关,功能有路由分发和过滤。Config,分布式配置中心,支持本地仓库、SVN、Git、Jar包内配置等模式Ribbon,客户端负载均衡,特性有区域亲和、重试机制。Hystrix,客户端容错保护,特性有服务降级、服务熔断、请求缓存、请求合并、依赖隔离。Feign,声明式服务调用,本质上就是Ribbon+HystrixStream,消息驱动,有Sink、Source、Processor三种通道,特性有订阅发布、消费组、消息分区。Bus。
2023-09-22 22:57:18 139
原创 【十】PageHelper 插件源码分析
本文主要介绍了pagehelper的实现原理和源码阅读,要理解pagehelper首先要知道mybatis插件的实现原理,之后再到git仓库把源码clone下来跟着文章介绍的思路一步步分析跟进就好了,pagehelper插件本身只是分页的小插件源码不多阅读起来简单容易理解,有兴趣可以去了解一下。
2023-08-12 10:40:30 338
原创 【九】mybatis 缓存模块设计
MyBatis提供了一级缓存和二级缓存,其中一级缓存基于SqlSession实现,而二级缓存基于Mapper实现。这里我们就来学习一下MyBatis缓存的使用,并分析MyBatis缓存的实现原理。首先我们找到缓存模块的源码:可以看到有一个父接口Cache,我们以父接口为切入点,先看一下模块整体的类结构设计,如下图所示:作者在这里使用了一个装饰器模式,装饰器模式的定义:允许向一个现有的对象添加新的功能,同时又不改变其结构。
2023-08-07 08:30:00 98
转载 【十二】MySQL数据库SQL语句的执行过程
需要注意的是,不同类型的SQL语句(如查询语句、更新语句、插入语句等)在执行过程中会有所不同,但是整个SQL语句的执行过程大体相同。5、执行计划生成:MySQL通过执行计划生成器生成SQL语句的执行计划,即具体的执行方式,包括数据的访问方式、索引的使用方式、连接方式、排序方式等。3、语义分析:MySQL对SQL语句进行语义分析,对语法树进行遍历,确定语句中表和列的信息,包括表名、列名、列类型等,同时检查语句的语义正确性。7、数据返回:MySQL将执行结果返回给客户端,可以是查询结果集或者操作结果。
2023-07-23 09:40:55 212
原创 【十五】MySQL用户权限
总结起来,读写权限允许用户读取和修改数据,只读权限只允许读取数据,DML权限允许执行数据操作语言(如INSERT、UPDATE、DELETE),而DDL权限允许执行数据定义语言(如CREATE、ALTER、DROP)。在MySQL中,有不同的用户权限级别,包括读写权限、只读权限、DML权限和DDL权限。4)列层级:列权限使用于一个给定表中的单一列,这些权限存储在mysql.columns_priv表中。2)数据库层级:数据库权限适用于一个给定数据库中的所有目标,这些权限存储在mysql.db表中。
2023-07-09 15:27:27 1977
原创 浅谈常见的加密算法及实现
摘要加密的代表是MD5,这个大家应该是接触的比较多,我们通常系统登录认证采用jwt+token的方案的时候,token都是使用MD5的方式加密的。如下是MD5加密的实现代码:MD5算法的实现原理:MD5码以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。
2023-06-22 16:59:28 690
原创 【十三】druid 原理解析
Druid连接池是阿里巴巴开源的数据库连接池项目。Druid连接池为监控而生,内置强大的监控功能,监控特性不影响性能。功能强大,能防SQL注入,内置Loging能诊断Hack应用行为。
2023-06-22 13:48:15 767
原创 从tomcat说起全面理解Java web开发原理
简介:Java开发分为Java ME,Java SE,Java EE。回顾过去这些的开发工作基本上都是围绕着Java EE的,在开发经历中分别经历了Java EE开发框架从jsp servlet一路经历了ssh, ssm, springboot mybatis ,spring cloud演化,但是Java web开发过程中web容器却是一路相随tomcat,本篇文章将从tomcat的角度介绍一下http请求的整个链路。
2023-06-18 11:47:15 1460
原创 【八】spring boot集成数据库连接池druid
最近在进行程序优化的过程中发现程序瓶颈在数据库连接这块,于是开始研究怎么对数据库连接池参数进行调优,在这个过程中发现很多人使用druid很不规范,经常会出现导入的包和配置参数不对应的情况,这些都是因为对集成druid一知半解导致的,因此决心写一篇关于spring boot集成数据库连接池druid的博客来彻底理解清楚其中的原理。二、springboot集成druid-spring-boot-starter。可见starter包依赖,简单了许多,这些归功于spring boot的约定大于配置的特性。
2023-06-17 13:01:40 1847
原创 【一】Nginx调优
开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,当nginx是一个静态文件服务器的时候,开启sendfile配置项能大大提高nginx的性能。一般我们需要压缩的内容有:文本,js,html,css,对于图片,视频,flash不压缩,同时也要注意,我们使用gzip的功能是需要消耗CPU的!使用gzip压缩功能,可能为我们节约带宽,加快传输速度,有更好的体验,也为我们节约成本,所以说这是一个重点。nginx采用epoll事件模型,处理效率高。
2023-05-30 09:46:50 69
转载 【七】MySQL-性能分析与优化实战
如果我们在MySQL服务器配置文件中设置了thread_cache_size,当客户端断开之后,服务器处理此客户的线程将会缓存起来以响应下一个客户而不是销毁(前提是缓存数未达上限)。筛选出有问题的 SQL,我们可以使用 MySQL 提供的 explain 查看 SQL 执行计划情况(关联表,表查询顺序、索引使用情况等)。实际应用中,查询的返回结果会有 N 条记录。MySQL服务器过去的最大连接数是245,没有达到服务器连接数上限256,应该没有出现1040错误,比较理想的设置是。
2023-05-30 09:30:29 216
原创 【五】阿里巴巴 MySQL binlog 增量订阅&消费组件canal实现mysql数据同步
简介:最近线上系统进行压测,评估线上系统容量,根据压测情况对代理层,代码,sql等都做了相应的优化,而系统最大的瓶颈在于数据库,根据实际业务情况,决定对数据库架构进行优化升级。其中最大的一个优化方案就是把只读业务进行数据库迁移,因此有了同步线上数据库到本地数据库的需求,所以想到了阿里研发的canal中间件,下面将对canal的调研情况做详细分析。这里要注意的是,上面是源mysql连接的配置,下面是目标mysql的配置。./bin/startup.sh 启动admin。./bin/stop.sh 停止。
2023-05-25 20:36:15 1816
原创 【六】MySQL-调优指南
主要围绕服务器升级,系统架构升级,业务代码优化,数据库调优等方面展开,这里主要讲解一下mysql调研的步骤和方法。随着公司业务不发展,业务场景越发复杂,业务数据量也不断增长,业务系统运行性能开始出现瓶颈,于是工程师们开始着手研究优化方案。我们主要通过架构优化、sql分析与优化、业务优化这三个方面来展开。
2023-04-22 15:37:42 84 1
原创 【八】MySQL-配置文件详解
2.如果要配置bind-address的话,这个localhost不能修改,否则在初始化数据库(执行/opt/cloudera/cm/schema/scm_prepare_database.sh mysql cm cm password)时便会报错,如果/etc/my.cnf中配置了bind-address=localhost 的话,那么在CDH的安装页面中,配置连接数据库的主机名称必须为localhost。# 跳过客户端域名解析;当新的客户连接mysqld时,mysqld创建一个新的线程来处理请求。
2023-04-22 14:55:56 1625
原创 不知不觉被安利了ChatGPT
思想保守的我这次还是落后了,还是年轻人思想前卫,早已经使用上了ChatGPT,这是同事推荐的Free ChatGPT Site List网站,于是进去体验了一把,这是简单的展示,ChatGPT可以关联上下文去查询,对程序员来说不仅仅是查资料,ChatGPT果真是可以帮助提供代码案例和优化代码的。体验之后的确让人惊叹不已,写出来的代码逻辑清晰而且讲解清楚,同时也可以帮助优化代码,这个大家可以去体验一下。工具,它能够通过理解和学习人类的语言来进行对话,还能根据聊天的。,于2022年11月30日发布 [2-3]
2023-04-22 09:32:07 267
原创 【六】SpringBoot集成MyBatis-yml自动化配置原理详解
简介:spring boot整合mybatis开发web系统目前来说是市面上主流的框架,每个Java程序和springboot mybatis相处的时间可谓是比和自己女朋友相处的时间都多,但是springboot mybatis并没有得到你的真爱,因为你只是为了养活你女朋友而委曲求全的和spring boot mybatis假意相处。这里我们要看spring-boot-autoconfigure,找到META-INF\spring.factories,这些就是我们配置的数据库相关的配置了。
2023-04-21 18:27:02 4315 6
原创 【五】Linux运维之top命令解析
需要注意的是如果设置太小的时间,很可能会引起不断刷新,从而根本来不及看清显示的情况,而且系统负载也会大大增加。系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。在 linux 系统上开发的时候,经常要用到 top 命令来对进程以及资源进行监控,本文对该命令的输出以及使用方法做一个介绍。至此,完成了对 top 指令的一个解析及应用方法介绍,更详细的介绍可以使用 man 指令查看。o 或者 O :改变显示项目的顺序。
2023-03-31 19:57:46 427
原创 3台机器配置hadoop集群_Hadoop+Hbase 分布式集群架构
三台机器都需要执行/usr/local/hadoop-3.2.0/bin。3.1 hadoop-env.sh 配置 Hadoop 环境变量。--指定HDFS默认(namenode)的通信地址-->--给zk用的目录, 必须保证是个空的给zk用-->3.3 hdfs-site.xml 配置 NameNode。--指定Hadoop运行时产生文件的存储路径-->3.8.1 第一次启动前需要格式化,集群所有服务器都需要。--指定master-->--所有可用的zk-->注:要在集群所有服务器都进行操作。
2023-01-05 18:06:24 2000 10
原创 【一】redis-基础知识
由于我们有很多物联网相关的业务需求,其中采集场景中,我们会将原始采集到的数据会暂存一份到redsi中来支持需要用原始数据做运算的业务,redis数据储存在内存中可以支持高效运算,而且支持自动过期。三种方式各有优缺点,哨兵模式和集群都是在主从复制的基础上演化出来的,线上业务适合使用集群的方式来实现高可用。以上简单概述了redis的特性,redis有着丰富的数据结构支持,结合持久化功能还可以作为数据库使用,其次redis还提供了多种高可用方案,在真实的业务场景中可以根据需要进行选用。
2022-12-27 16:30:27 81 2
转载 为什么要阅读源码
和阅读一本好书一样,阅读源码就是和编程大牛面对面交流的机会,在许多优秀的开源项目中,它们的编码规范和架构设计都是很棒的,另外在设计上也使用了大量的设计模式,通过阅读和学习源码,能够快速提升我们的编码水平,以及对设计模式有更深的理解。如果你没有阅读过源码,面试官可能会对回答的结果不满意,进而导致面试结果不太理想,但如果你对源码有所研究,并能够很好地问答面试官的问题,这可能就是你的加分点,可以形成自己独特的竞争力,吊打面试官,升职加薪不是梦。如果我们对相关源码有所涉猎,就可以快速定位到问题所在。
2022-12-18 19:50:55 140
基于Javaweb技术开发的商城
2017-02-21
Java数据结构和算法(第二版)+随书源代码+applet小程序
2016-09-14
MAVEN-3.2.1
2016-07-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人