- 博客(69)
- 资源 (3)
- 收藏
- 关注
原创 普通数据库索引与搜索引擎的索引有何区别
总的来说,普通数据库索引是为了应对传统的数据存储和访问设计的,而搜索引擎索引则是专门针对全文搜索和相关性评分优化的数据结构。两者各适应不同的场景和需求。
2024-03-31 10:41:28
604
原创 系统架构图怎么画
画架构图是架构师的一门必修功课。对于架构图是什么这个问题,我们可以按以下等式进行概括:架构图 = 架构的表达 = 架构在不同抽象角度和不同抽象层次的表达,这是一个自然而然的过程。不是先有图再有业务流程、系统设计和领域模型等,而是相反,用图来表达抽象的思考和内容。
2024-03-27 07:05:55
988
原创 DevOps是什么
DevOps 是一种将软件开发 (Dev) 和 IT运维 (Ops) 结合起来的实践、文化和哲学,旨在缩短系统开发生命周期,提供高质量的软件持续交付。它涉及多个关键实践和工具,其核心目的是加强开发和运维团队之间的协作和通信。它要求团队摒弃传统的“营防思维”,转而采用更加开放、协作的工作方式,其最终目的是实现更快的交付速度、更高的服务质量和更好的顾客满意度。: DevOps鼓励开发者、运维人员、QA 测试人员、项目管理人员等所有相关人员之间的持续沟通和紧密协作,这是实现快速且高质量交付软件目标的关键因素。
2024-03-27 06:03:46
412
原创 系统架构师需要掌握的知识体系
系统架构师需不断学习技术新动态,并结合实际工作经验不断完善自己的知识体系和技术栈。此外,透过案例研讨、参加研讨会、获取各种专业认证也有助于增强他们的专业背景。系统架构师是负责设计和构建复杂系统结构的专业人员。他们必须具备广泛的技术知识以及深刻的业务理解能力。
2024-03-26 10:54:21
537
原创 Elasticsearch如何处理多个关键字查询
对于非技术用户,这些查询逻辑往往是隐藏的,只需要在前端输入关键字,后端的Elasticsearch 就会处理相关的复杂逻辑。**过滤器(Filter) **:尽管不直接用于关键字匹配,过滤器经常与关键字查询组合使用,以限制查询结果仅显示匹配特定条件的数据。查询时使用的关键字也会经历相同的分析流程,以确保查询条件与索引中的数据格式相匹配。:如果多个关键字需要在不同的字段中进行匹配搜索,multi-match查询可以同时对多个字段应用相同的关键字。此外,你可以指定不同的字段权重,增强某些字段的相关性。
2024-03-26 06:19:37
539
1
原创 DDD中如何识别子域、实体、值对象和聚合
实体拥有一个唯一标识符(Identity),即使其他属性相同,具有不同标识符的实体也被视为不同。代表系统中可跟踪的业务实体,其状态可能随时间发生变化。值对象不拥有唯一标识符,其定义是由其属性值决定的,通常是不可变的,当其中的某个属性发生变化时,会通过创建一个新的值对象实例来替换旧的实例。聚合则是确保数据一致性的边界,规定外部只能通过聚合根(比如 Order实体)来操作其内部的组件。聚合根负责保护其下的所有实体和值对象不被外部错误地访问。
2024-03-23 06:55:33
293
转载 为什么高性能场景选用Postgres SQL 而不是 MySQL
MySQL声称自己是最流行的开源数据库,它属于最流行的RDBMS (Relational Database Management System,关系数据库管理系统)应用软件之一。LAMP中的M指的就是MySQL。构建在LAMP上的应用都会使用MySQL.MySQL最初是由MySQL AB开发的,然后在2008年以10亿美金的价格卖给了Sun公司,Sun公司又在2010年被Oracle收购。Oracle收购导致MySQL的出现两个版本:商业版和社区版。
2024-03-20 23:24:25
64
原创 漫谈微服务网关
1、路由转发:接收一切外界请求,转发到后端的微服务上去;2、过滤器:在服务网关中可以完成一系列的横切功能,例如权限校验、限流以及监控等,这些都可以通过过滤器完成(其实路由转发也是通过过滤器实现的)。
2024-03-19 16:19:10
1090
原创 漫谈5种注册中心
注册中心主要有三种角色:服务提供者(RPC Server):在启动时,向 Registry 注册自身服务,并向 Registry 定期发送心跳汇报存活状态。服务消费者(RPC Client):在启动时,向 Registry 订阅服务,把 Registry 返回的服务节点列表缓存在本地内存中,并与 RPC Sever 建立连接。
2024-03-18 15:09:57
922
原创 软件架构设计的底层逻辑
从成本的角度来说我们当然选择免费开源的,还能实现数据库本身的二次开发,但是前提是开源数据库是否满足我们的需求,如果需要二次开发,本身的研发实力是否可行,否则就会带来更大的成本,此时也可以选择收费的闭源数据库来降低成本,所以说这二者关系并不是一成不变的。首先声明一下,笔者此处所说的软件指的是企业的商业软件,并不是指无成本限制的软件研究。当然,以上只是简单说了几个方面,在实际的操作方面需要将降低成本的底层逻辑贯彻到软件架构设计的方方面面,而且各个方面都不是孤立的,需要从总体考虑,从而得到最优降的软件架构。
2022-09-21 16:54:19
1620
原创 软件学习之追本溯源
与此同时,一大堆的软件技术层出不穷,让开发者无所适从,因为软件技术实在太多,不知道从何学习,今天学了可能明天又落伍了。何为"向上学习",向上学习在这里是指跟踪学习当前技术热点,比如在大数据方面,今天学hadoop,明天学spark,搞得自己都好累,可能过一段时间这些技术又落伍了,又要学新的技术了,想想现在还有多少人还去学Struts呢,当年可是很火的。从本质上来说,程序员写软件就是写自己对世界的认知,是程序员的思想映射,那些各种各样的高级语言只是一个工具,仅此而已。如上图,我们还能说编程有什么神秘的吗?
2022-09-02 17:45:15
546
原创 软件行为(五)之数据存储
索引存储方式是采用附加的索引表的方式来存储节点信息的一种存储方式。索引表由若干索引项组成。上图从上到下也是cpu访问数据的顺序,CPU的数据去寄存区去拿,这样访问速度就更快了,但是此时寄存器并没有数据,因此就产生了图中的箭头,先让内存的数据加到–>高速缓存加到–>寄存器,当我们有一次在寄存器没有拿到数据,再依次向下访问,这样访问速度就会变快。上文也说了,相同的数据存储结构下内存中的数据处理是比硬盘内的数据处理快的,那就说是数据存储结构有不同的方式,不同数据结构的查询、插入、删除、更新的速度都是不一样。...
2022-07-28 15:41:35
640
转载 软件行为(四)之数据传输
理论上有了mac地址,加上广播的方式,全世界所有的计算机都可以通信了,实际不行,广播风暴,效率低,工作量太大.端口+IP+子网掩码+mac+广播的形式就可以确定世界上任何一个计算机软件的位置.第一次发送数据需要广播的形式,获取对方的mac地址,将mac地址与网口写入交换机的对照表.网卡mac地址就是计算机的唯一标识,计算机出厂就会有网卡,网卡上就有一个mac地址。端口+ip+mac+广播就能确定世界上任何一个计算机的软件的位置...................
2022-07-17 14:13:53
800
原创 软件行为(二)
安全 传输协议由上图我们可以看到一次软件行为可能发生的主要事情标红的方框是 软件行为(一)中的内容,不再累述。客户端是数据发生源,主要包括:人工输入、系统自动触发、数据采集等。服务端用于数据逻辑处理,主要包括逻辑处理、数据结果存储、调用第三方接口等根据实际情况(安全、性能、易用性等)我们可以使用不同的传输协议............
2022-07-08 16:22:35
314
原创 使用mycat实现分表分库
分表分库中间件市面上主要有两种,即当当的sharding-jdbc和阿里的mycat,二者的区别对比如下:本次要向读者展示的是mycat的安装与使用1.安装环境1)操作系统:centos72)jdk1.8(mycat是使用java语言开发的)3)在三台服务上安装了mysql数据库实例,ip地址分别为192.168.0.91、192.168.0.92、192.168.0.93。4)本次的目的是实现在192.168.0.91、192.168.0.93两台服务器上实现分表分库,并在192.168.0.
2021-06-16 11:02:04
4134
原创 mysql主从同步简单配置
1.同步配置配置环境两台虚拟机,操作系统均为centos7。ip地址为 192.168.0.91(主)192.168.0.92(从)两台虚拟机均已安装mysql数据库,数据库版本为5.7主数据库(192.168.0.91)已存在root用户,且可远程访问说明:以下所有的SQL操作均在Navicat内进行2.主库设置1.配置my.cnf文件vi /etc/my.cnf。打开my.cnf,做如下配置在[mysqld]段下添加:#服务器唯一标示,一般取服务器的ipserver-id =
2021-06-09 17:48:52
1275
2
原创 基于关系型数据实现分布式事务方案
分布式、集群、高并发,这已经成了稍微大点互联网系统必须具备的关键词。但是新的方法引入了新的问题,其中分布式事务是每个分布式系统绕不开的话题。各种分布式事务的解决方案也层出不穷,但万变不离其宗,基本基于两种方案理论:cap理论或base理论(对这两种理论的具体内容不太了解的读者朋友请自行查找相关资料)。 笔者本次提出的基于关系型数据库实现的分布式事务解决方案基于base理论。基于cap理论的解决方案由于存在分布式锁的问题,在系统性能上一直是个问题,因此一般高并发的大型互联网系统不采用该理论下的...
2021-05-30 16:04:03
240
原创 基于MPP数据库的存储分析方案设计
笔者在项目中曾碰到了这么一个场景:随着项目的持续使用及用户快速增长,系统的数据处理能力急剧下降,查询速度及数据计算能力让人无法忍受。原来使用的数据库是开源的mysql数据库。为了解决该问题,经过权衡比较,笔者最后决定采用MPP+ES作为该问题的解决方案。ES笔者就不介绍了,大家应该都比较熟悉。重点介绍一下MPP数据库。MPP数据库介绍mpp主要包括以下三种:Vertica;Redshift;Greenplum这三者其实有非常很多相同点:1.全部基于PostgreSQL,这使得只使用关系型数据库
2021-05-30 07:50:14
1409
转载 mysql多表联合查询字符集不一致时的解决方案
执行类似如下SQL时:select a.xxxfrom a bjdm, bwhere a.id=b.id and a.yyy=‘20000007’ ;报错如下Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operation ‘=’解决办法:alter table a convert to character set utf8mb4 collate utf
2020-12-02 11:33:00
1394
1
原创 搭建系统框架遇到的问题记录
1.WebMvcConfigurerAdapter过时的替换方法Spring 5.0后,WebMvcConfigurerAdapter被废弃,取代的方法有两种:①implements WebMvcConfigurer(官方推荐)②extends WebMvcConfigurationSupport使用第一种方法是实现了一个接口,可以任意实现里面的方法,不会影响到Spring Boot自身的@EnableAutoConfiguration,而使用第二种方法相当于覆盖了@EnableAutoConfig
2020-11-12 17:41:04
232
原创 centos7运行vue项目问题汇总
一、node踩坑之This is probably not a problem with npm. There is likely additional logging output above.错误解决步骤:1.可能由于种种版本更新的原因需要执行npm install2.重新安装一次,如果还是不可以的话,在把之前装的都清空,执行如下命令:rm -rf node_modulesrm package-lock.jsonnpm cache clear --forcenpm install 或np
2020-10-22 17:31:13
528
转载 centos7 安装 Mysql 5.7.27,详细完整教程
下载 MySQL yum包wget http://repo.mysql.com/mysql57-community-release-el7-10.noarch.rpm2.安装MySQL源rpm -Uvh mysql57-community-release-el7-10.noarch.rpm3.安装MySQL服务端,需要等待一些时间yum install -y mysql-community-server4.启动MySQLsystemctl start mysqld.service.
2020-07-23 13:59:16
549
转载 Centos7 忘记密码的情况下如何修改root或者其他用户密码
应用场景linux管理员忘记root密码,需要进行找回操作。注意事项:本文基于centos7环境进行操作,由于centos的版本是有差异的,继续之前请确定好版本。操作步骤一、重启系统,在开机过程中,快速按下键盘上的方向键↑和↓。目的是告知引导程序,我们需要在引导页面选择不同的操作,以便让引导程序暂停。以下是暂停后的界面,可以查看下方的英文可知↑和↓的作用。二、使用↑和↓将选择行设置为第一行(背景高亮即为选中),按下键盘上的e,进入编辑模式三、将光标一直移动到 LANG=en_US.UTF-8
2020-07-21 13:04:30
222
转载 java-FFmpeg实现视频的转码和截图功能
FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证(依据你选择的组件)。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多codec都是从头开发的。FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行。 &nb
2020-07-14 15:02:57
303
转载 Elasticsearch、MongoDB和Hadoop性能特点及使用场景
IT界在过去几年中出现了一个有趣的现象。很多新的技术出现并立即拥抱了“大数据”。稍微老一点的技术也会将大数据添进自己的特性,避免落大部队太远,我们看到了不同技术之间的边际的模糊化。假如你有诸如Elasticsearch或者Solr这样的搜索引擎,它们存储着JSON文档,MongoDB存着JSON文档,或者一堆JSON文档存放在一个Hadoop集群的HDFS中。你可以使用这三种配置完成很多同样的事情。
2020-06-26 11:46:56
689
原创 Java开发中的代码规范
Java开发中所要遵守的编码规范大体上有如下几点。命名规范、注释规范、缩进排版规范、文件名规范、声明规范、语句规范以及编程规范。1.命名规范(1)所有的标示符都只能用ASCⅡ字母(A-Z或a-z)、数字(0-9)和下划线“_”。(2)一个唯一包名的前缀总是全部小写的字母。例如:www.tonysun.cc(3)类名是一个名词,采用大小写混合的方式,每个单词的首字母大写。例如:Tony。(4)接口的大小写规则与类名相
2020-06-25 11:12:22
193
原创 centos7可视化安装
环境: 机器上已经安装centos7操作系统1.安装linux图形桌面yum groupinstall "GNOME Desktop" "Graphical Administration Tools"如果想要机器在启动时显示图形化界面,可以设置系统启动等级,如下操作:systemctl get-default #获取当前系统运行形式,会显示multi-user.target(命令行终端),或者:graphical.
2020-06-11 18:19:17
1605
原创 linux安装VMware Workstation常见错误
centos7下运行VMware workstation图形化报错c header files matching you running kernel were not found,提示kernel头文件找不到解决办法:yum install -y kernel-devel再次运行vmware命令即可调用图形化
2020-06-11 17:35:31
448
原创 ElasticSearch添加中文分词器
关于ElasticSearch的作用和原理笔者就不再废话了,相信大家都有所理解的。咱们直接切入正题。1.下载IK分词器 下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases 打开上述
2020-06-06 06:33:25
250
原创 IntelliJ IDEA部署java web工程
由于笔者以前一直使用eclipse开发java web系统,对于IntelliJ IDEA使用也不是那么熟悉。本次使用IntelliJ IDEA开发部署了一个web工程。本博文就算是一个简单的笔记吧。环境1.IntelliJ IDEA版本:2018.3.52.tomcat版本:8.5.553.已经存在一个web工程:eimsjava web工程部署到tomcat1.点击Run>>Eidt Config
2020-05-29 16:07:49
170
原创 linux环境下 python import找不到自定义模块的解决方法
两种方法:1. 在导入模块之前(每个.py文件都需要加)import syssys.path.append(r'/home/my_python_module/')2. 更改环境变量(一次修改永久生效)管理员权限修改:/etc/profile。在最后一行加上export PYTHONPATH=$PYTHONPATH:/home/my_python_module/然后运行如下代码,更新立即生效source /etc/profile...
2020-05-24 22:35:44
4433
原创 CentOS7 上安装 Python3及程序运行环境
1.检查centos7上的python环境在控制台上执行 python 命令,可以看到输出的版本号2.安装安装依赖包yum -y groupinstall "Development tools"yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel下载pyth
2020-05-24 08:45:02
360
原创 centos7上发布vue项目
前提:vue工程已经打包完毕,放置在/usr/local/vue目录下。1.创建脚本 分别为catalina.sh、shutdown.sh、startup.sh,三个脚本存放位置与vue工程相同,如下图:catalina.sh的内容如下:#!/bin/bash#author lyq if [ "$1" = "start" ];th
2020-05-23 08:50:14
947
1
原创 mysql不允许远程访问解决方法
当笔者在centos7上安装好数据库后,使用Navicat远程访问时,蛋疼的事情出现了,无法访问,如下图:经查证,这是因为数据库还要做适当的修改,否则只能本机localhost访问。步骤第一:更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从”localhost”改称’%’。或者新加条记录,“host” 项为要访问的ip地址,并授权。重启mysql服务。第二:在系统防火墙添加例
2020-05-10 08:11:53
2153
原创 vue工程搭建及调用后台spring boot工程
前面笔者写过一片文章《一个Vue前端框架使用简单实例》,这种方案就是在html中直接使用script标签引入vue和一些常用的组件,这种方式和以前传统的开发是一样的,只是可以很爽的使用vue的双向数据绑定,这种方式只适合于普通的全栈开发,这不是我们推荐的方案。本篇使用一种新方案:即使用vue官方的脚手架创建单独的前...
2020-04-23 07:12:39
1028
原创 大型交易系统之高可用
上一篇讲到了大型交易系统之高并发原则,本篇我们来聊聊大型交易系统高可用原则原则一 降级 对于一个高可用的系统,很重要一个设计就是降级开关,开关降级一般有如下四种设计方式。 &nbs...
2020-04-19 18:18:17
370
原创 大型交易系统之高并发
环顾当今社会,或多或少可称之为被交易系统控制的社会。我们的股票市场离不开交易系统,我们的银行离不开交易系统,我们出行做出租离不开交易系统,我们的网上购物离不开交易系统等等。仔细想想交易系统还真是主宰了我们的很多行为或者重新定义了我们的行为。交易系统是我们技术人员的智慧结晶,聚集了技术人员的辛勤和汗水。设...
2020-04-19 14:28:32
1872
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人