- 博客(107)
- 收藏
- 关注
原创 查询优化之“分库分表”
当主数据量越来越大时,写操作会越来越缓慢,此时可以考虑分表分库。举个实际例子:随着市场推广趋势,订单很快就会上亿,每天有100万的新订单,在不久的将来数据库的I/O和CPU很可能会支撑不住。为了使系统能承受这种日百万级新订单的压力,项目组最终决定使用分表分库:将订单表拆分,进行分布存储。
2023-07-24 22:19:11 151
原创 Elasticsearch
Elasticsearch是Java语言开发的分布式的查询系统,它的每一个节点(每一个运行实例)都是一个基于Lucene的查询引擎,把Lucene用Netty封装成服务。3)主数据和查询数据不一致时,这里的查询数据同步到最新数据会有一定的延时,大约为2秒。某些业务场景下用户可能无法接受这个延时,特别是跟钱有关的场景。1)用Elasticsearch存储查询数据时有一定延时,深度分页不能自由跳页,会有丢数据的可能性。2)主数据量越来越大后,写操作慢,当数据量上亿的时候,插入会有问题。
2023-07-24 22:02:24 513
原创 查询优化之“查询分离”
当数据在任何时候都可能被修改和查询的场景下,就不适合采用冷热分离来解决问题。而读写分离方案得到的工单查询速度提升是有限的,它主要还是用在数据库高并发的场景中。查询分离可以有效提升数据的查询效率,即将更新的数据放在主数据库里,而查询的数据放在另外一个专门针对搜索的存储系统里。
2023-07-23 20:50:48 342
原创 查询优化之“冷热分离”
冷热分离就是将数据库分成冷库和热库,冷库存放那些走到终态,不常使用的数据;热库存放还需要修改,经常使用的数据。比如有些电商网站默认只让查询3个月内的订单,那些已完结状态且超过三个月的订单,就可以存入冷库。
2023-07-21 18:05:08 207
原创 mysql性能分析工具
explaintype:访问类型,结果值从好到坏依次是:system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL,一般来说,至少达到range级别,最好能达到ref。key:实际使用的索引,如果为NULL,则没有使用索引。很少的情况下,MY
2022-05-25 11:13:24 469
原创 Java 线程池
java.uitl.concurrent.ThreadPoolExecutor类是线程池中最核心的一个类,因此如果要透彻地了解Java中的线程池,必须先了解这个类。构造器中各个参数的含义maximumPoolSize:线程池最大线程数,这个参数也是一个非常重要的参数,它表示在线程池中最多能创建多少个线程...
2022-02-28 23:41:43 903
原创 Java 日常开发
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")private Date createTime;
2022-01-28 14:13:49 470
原创 用java的easyexcel读取excel
参考:阿里easyexcel读取excel流程初探_梓沂的博客-CSDN博客创建一个@Test测试方法: @Test public void simpleRead() { // 写法1:JDK8+ ,不用额外写一个DemoDataListener // since: 3.0.0-beta1 String fileName = TestFileUtil.getPath() + "demo" + File.separator + "demo.xlsx"; System.out.println(fil...
2022-01-27 10:09:30 826
原创 架构设计的职责
什么架构设计是指导系统实现的设计蓝图,描绘系统整体结构和组件,系统的模块化设计,以及模块之间的交互方式,也包括流程规范、对外接口、界面风格等方面的设计,同时可能会兼顾到质量与成本方面的考虑。从软件生命周期看架构设计设计期(立项、计划、需求、设计)● 系统拆分,如何把系统拆解为不同的子系统、模块、业务单元;● 技术选型,使用什么样的基础技术框架或脚手架;● 技术难题,确定核心技术难点如何解决,检验能否满足期望指标;● 接口规范,系统内部的不同部分以何种形式确定接口契约和数据通信方式;● 集
2022-01-05 19:26:00 1075
原创 python django
django安装下载:git clone https://github.com/django/django.git安装:cd djangopython setup.py install项目开发python manage.py runserver //启动nohup python manage.py runserver 192.168.1.100:8082 //后台启动pythonmanage.py startapp appname #新建一个应用模块......
2021-12-06 19:12:43 142
原创 GPU与CPU
GPU与CPUGPU(图像处理器,Graphics Processing Unit)和CPU(中央处理器,Central Processing Unit)在设计上的主要差异在于GPU有更多的运算单元(如图中绿色的ALU),而Control和Cache单元不如CPU多,这是因为GPU在进行并行计算的时候每个运算单元都是执行相同的程序,而不需要太多的控制。Cache单元是用来做数据缓存的,CPU可以通过Cache来减少存取主内存的次数,也就是减少内存延迟(memory latency)。GPU中Cache很
2021-12-02 10:19:04 326
原创 flask框架
实例#!/usr/bin/env python# -*- coding: utf-8 -*-# by vellhe 2021/12/01from flask import Flask, abort, request, jsonifyapp = Flask(__name__)# 测试数据暂时存放tasks = ["hello world"]@app.route('/add_task/', methods=['POST'])def add_task(): if not req..
2021-12-01 16:02:05 217
原创 nginx安装
CentOS7安装Nginx - boonya - 博客园文章转自:https://www.cnblogs.com/liujuncm5/p/6713784.html 安装所需环境 Nginx 是 C语言 开发,建议在 Linux 上运行,当然,也可以安装 Whttps://www.cnblogs.com/boonya/p/7907999.html
2021-11-15 10:26:54 1562
原创 mysql安装
1、由于CentOS 的yum源中没有mysql,需要到mysql的官网下载yum repo配置文件。wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm2、然后进行repo的安装rpm -ivh mysql57-community-release-el7-9.noarch.rpm执行完成后会在/etc/yum.repos.d/目录下生成两个repo文件mysql-community.repomy.
2021-10-27 10:50:04 222
原创 ERPNext 安装和使用
编程语言的支撑,是需要Python和Node.js的。 在软件安装,和系统自维护的时候需要到pip和yarn。 数据库的支持,需要MariaDB 10.3和Redis。 Bench,这也是一套开源的东西,好像是python的一套应用框架,直译就是板凳的意思,用来放东西的一个台面。 frappe,这个应该是和bench互相支撑的一套东西吧,也是这一套架构的基本框架。 这套东西要用生产的概念运行的话,还需要安装Nginx作为80端口的服务。 ERPNext虚拟机操作系统镜像下载。ERPNext信息
2021-10-26 10:44:12 5629
原创 gitlab服务搭建
准备工作1.安装ssh:sudo yum install -y curl policycoreutils-python openssh-server2.将SSH服务设置成开机自启动:sudosystemctlenablesshd3.启动SSH服务:sudo systemctl start sshd4.安装防火墙yum install firewalld systemd -y5.开启防火墙:service firewalld start6.添加http服务到fire...
2021-10-20 12:06:18 309
原创 goweb实现数据增量接口
index.gopackage mainimport ( "fmt" "net/http" "net/url" "strings" "io" "log" "./handle")func index(w http.ResponseWriter, r *http.Request) { if r.RequestURI == "/favicon.ico" { return } ...
2021-09-24 11:14:48 242
原创 数组与链表
数组由于是紧凑连续存储,可以随机访问,通过索引快速找到对应元素,而且相对节约存储空间。但正因为连续存储,内存空间必须一次性分配够,所以说数组如果要扩容,需要重新分配一块更大的空间,再把数据全部复制过去,时间复杂度 O(N);而且你如果想在数组中间进行插入和删除,每次必须搬移后面的所有数据以保持连续,时间复杂度 O(N)。 链表因为元素不连续,而是靠指针指向下一个元素的位置,所以不存在数组的扩容问题;如果知道某一元素的前驱和后驱,操作指针即可删除该元素或者插入新元素,时间复杂度O(1)。但是正因为存储空..
2021-09-16 19:20:05 683 1
原创 如何做爆品
首先,选择蓝海市场相比血雨腥风竞争白热化的红海来说,蓝海更能让人看到希望和机会。撬动蓝海市场对于企业真正的挑战在于,发现顾客的潜在价值,并发挥新技术的作用,让两者碰撞出美丽的火花。其次,不剪枝不开花战略的核心就像种花或种树一样,需要剪枝修叶,在适当的时候做减法,才有可能繁花似锦,硕果累累。一方面,要集中精力做好现阶段最需要做好的事情,另一方面,伟大的产品成就伟大的公司,并不需要包罗万象。然后,构建产品壁垒三种战略帮助公司建立产品竞争壁垒,一是低成本,二是差异化,三..
2021-09-16 10:22:54 164
原创 流框架flink、storm、spark streaming对比
性能对比应用场景需要关注流数据是否需要进行状态管理 At-least-once或者Exectly-once消息投递模式是否有特殊要求 对于小型独立的项目,并且需要低延迟的场景,建议使用storm 如果你的项目已经使用了spark,并且秒级别的实时处理可以满足需求的话,建议使用sparkStreaming 要求消息投递语义为 Exactly Once 的场景;数据量较大,要求高吞吐低延迟的场景;需要进行状态管理或窗口统计的场景,建议使用flink...
2021-09-07 16:06:21 393
原创 流式数据采集和计算组件 flume、filebeat、logstash对比
总结Flume更注重于数据的传输,对于数据的预处理不如Logstash。在传输上Flume比Logstash更可靠一些,因为数据会持久化在channel中。数据只有存储在sink端中,才会从channel中删除,这个过程是通过事物来控制的,保证了数据的可靠性。Logstash是ELK组件中的一个,一般都是同ELK其它组件一起使用,更注重于数据的预处理,Logstash有比Flume丰富的插件可选,所以在扩展功能上比Flume全面。但Logstash内部没有persist queue,所以在异常情...
2021-09-07 15:41:35 2498
原创 管理方法案例分析
题目:团队原有20人,现在只有15人,如何在规定时间内,完成既定目标。办法:1. 开誓师会:动员明确目标2. 阶段目标:任务分解分工3. 任务排期:阶段结果验收4. 加班安排:合理安排加班...
2021-08-23 10:50:57 100
原创 SWORT分析法
概念SWOT分析即态势分析,出自麦肯锡咨询公司,此思维模式主要用来分析特定对象所处的内部外部环境,内部环境包括企业的优势(Strength)、劣势(Weakness),外部环境包括企业的机会(Opportunity)和威胁(Threats),优劣势分析主要是着眼于企业自身的实力及其与竞争对手的比较,而机会和威胁分析将注意力放在外部环境的变化及对企业的可能影响上 ,在分析时应把所有的内部因素(即优劣势)集中在一起,然后用外部的力量来对这些因素进行评估,最终形成决策性的结论。通过SWOT分析,可以帮助企业把
2021-08-23 10:29:59 1816
原创 强引用、软引用、弱引用
对象引用类型分为强引用、软引用、弱引用和虚引用。强引用:就是我们一般声明对象是时虚拟机生成的引用,强引用环境下,垃圾回收时需要严格判断当前对象是否被强引用,如果被强引用,则不会被垃圾回收软引用:软引用一般被做为缓存来使用。与强引用的区别是,软引用在垃圾回收时,虚拟机会根据当前系统的剩余内存来决定是否对软引用进行回收。如果剩余内存比较紧张,则虚拟机会回收软引用所引用的空间;如果剩余内存相对富裕,则不会进行回收。换句话说,虚拟机在发生OutOfMemory时,肯定是没有软引用存在的。弱引
2021-07-29 18:32:31 203
原创 堆与栈的作用与区别
栈是运行时的单位,而堆是存储的单位,堆和栈是程序运行的关键。 栈解决程序的运行问题,即程序如何执行,或者说如何处理数据;堆解决的是数据存储的问题,即数据怎么放、放在哪儿。 在Java中一个线程就会相应有一个线程栈与之对应,这点很容易理解,因为不同的线程执行逻辑有所不同,因此需要一个独立的线程栈。而堆则是所有线程共享的。栈因为是运行单位,因此里面存储的信息都是跟当前线程(或程序)相关信息的。包括局部变量、程序运行状态、方法返回值等等;而堆只负责存储对象信息。...
2021-07-29 17:27:27 2384 3
原创 MVCC多版本并发
共享锁和排它锁shared lock和exclusive lock(共享锁和排他锁,也叫读锁和写锁,即read lock和write lock)读锁是共享的,不会阻塞其他读锁读数据,但会阻塞其他写锁;写锁是排他的,一个写锁会阻塞其他锁,不管是读锁还是写锁。共享锁【S锁】又称读锁,若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。这保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。排他锁.
2021-07-28 16:49:35 81
原创 缓存穿透、击穿和雪崩
问题 描述 解决方案 一致性 在发生写操作时或之后,可能会存在数据库里面的值和缓存中的值不同的情况 一,在业务场景允许的情况下,把过期时间设置得低一些; 二,先更新数据库再删除缓存。如果删除失败就放进队列。然后另一个任务从队列中取出消息,不断去重试删除相应的key 缓存穿透 缓存和数据库中都没有的数据,而用户不断发起请求,如发起id为-1或特别...
2021-07-27 17:27:17 129
原创 一致性哈希
简单来说,一致性哈希将整个哈希值空间组织成一个虚拟的圆环,如假设某哈希函数H的值空间为0 - 232-1(即哈希值是一个32位无符号整形),下面简单举个例子来说明一致性hash。准备:1、2、3 三台机器还有待分配的9个数 1、2、3、4、5、6、7、8、9一致性hash算法架构步骤一、构造出来 2的32次方 个虚拟节点出来,因为计算机里面是01的世界,进行划分时采用2的次方数据容易分配均衡。另 2的32次方是42亿,我们就算有超大量的服务器也不可能超过42亿台吧,扩展和均衡性都保证了。.
2021-07-27 15:19:57 193
原创 数据库设计和研发规范
一. 基础规范所有表都需要添加注释使用comment从句添加表和列的备注,从一开始就做好数据字典维护。单表数据量建议控制在500万以内过大会给备份和恢复带来困难,可用历史数据归档(用于日志数据),分库分表(用于业务数据)等手段来控制数据量大小。不在数据库中存储图、文件等二进制数据图或文件IO操作耗时,通常存储于文件服务器,数据库只存储文件地址信息。尽量冷热数据分离,减小表的宽度把不常用且占宽大的字段从热表中分离可独立存储,每一行数据大小不超过65535字节。...
2021-07-26 18:12:08 426
原创 Java编程规范
1. 尽量在合适的场合使用单例使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面:第一,控制资源的使用,通过线程同步来控制资源的并发访问;第二,控制实例的产生,以达到节约资源的目的;第三,控制数据共享,在不建立直接关联的条件下,让多个不相关的进程或线程之间实现通信。2. 尽量避免随意使用静态变量当某个对象被定义为static变量所引用,那么GC通常是不会回收这个对象所占有的内存,如public class
2021-06-08 14:00:55 301
原创 关于压力测试
压测的步骤压测目标的制定 压测链路的梳理 压测环境的准备 压测数据的构造 发压测试 瓶颈定位及容量微调 压测总结如果是客户的需求,那需要向客户确认,有清楚的性能指标参数,测试时就是保证系统达到该指标并能良好运转,即压力测试。如果是自己的系统需要有一个评估,那就需要完整的得到该系统的几个临界点,拿到完整的性能曲线,从而来分析部署情况,即为性能测试。不管是哪个,知道了需求,才能制定计划。性能测试的目标是发现重大的系统瓶颈。你可以想象一个系统由一系列的瓶颈组成;发现并改善一个瓶颈往往会在其他
2021-05-24 14:44:27 338
原创 消息队列应用场景
应用场景 削峰 引入腾讯云消息中间件 CMQ,将非即时处理的业务逻辑进行异步化。例如服务接收请求、处理请求和返回请求三个不同的业务逻辑。引入 CMQ 后,当预约活动开始时,海量并发访问汹涌袭来:所有客户的预约申请,页面均立即返回成功。客户便可关闭网页进行其他活动。预约码稍后推送到客户的邮箱/手机; 超过千万级别的注册、预约申请,先暂存在腾讯云 CMQ 消息队列集群; 后端服务进行处理,按照数据库实际的 select、insert、update 能力处理注册、预约申请; 处理成功后返回
2021-05-18 17:50:55 213
原创 Java JVM调优
如何设置Java整个堆大小设置,Xmx 和 Xms设置为老年代存活对象的3-4倍。永久代 PermSize和MaxPermSize设置为老年代存活对象的1.2-1.5倍。年轻代Xmn的设置为老年代存活对象的1-1.5倍。老年代的内存大小设置为老年代存活对象的2-3倍。老年代存活如何计算老年代存活即FullGC之后的老年代内存占用。计算方式可以通过在JVM参数中添加GC日志,GC日志中会记录每次FullGC之后各代的内存大小,观察老年代GC之后的空间大小。可观察一段时间内(比如2.
2021-05-10 17:30:03 289
原创 LVS负载均衡
一、LVS简介LVS(Linux Virtual Server)即Linux虚拟服务器,是由章文嵩博士主导的开源负载均衡项目,目前LVS已经被集成到Linux内核模块中。该项目在Linux内核中实现了基于IP的数据请求负载均衡调度方案,其体系结构如图1所示,终端互联网用户从外部访问公司的外部负载均衡服务器,终端用户的Web请求会发送给LVS调度器,调度器根据自己预设的算法决定将该请求发送给后端的某台Web服务器,比如,轮询算法可以将外部的请求平均分发给后端的所有服务器,终端用户访问LVS调...
2021-04-30 23:30:54 97 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人