跳至主要內容

牧歌的技术笔记

记录点滴

介绍页

热爱技术

  • 第一步 , 知其事 。
  • 第二步 , 知其然 。
  • 第三步,知其所以然。
  • 第四步,周而复始。
  • 第五步,融汇贯通 。
  • 请走好每一步。

热爱生活:世上只有一种英雄主义,就是在认清生活真相之后依然热爱生活。

游山西村

  • 莫笑农家腊酒浑 ,
  • 丰年留客足鸡豚 。
  • 山重水复疑无路 ,
  • 柳暗花明又一村 。
  • 箫鼓追随春社近 ,
  • 衣冠简朴古风存 。
  • 从今若许闲乘月 ,
  • 拄杖无时夜叩门 。

牧歌...小于 1 分钟
MySQL进程CPU飚高如何处理?

CPU飙升200% 以上是生产容易发生的场景

MySQL进程飙升

大家在使用MySQL过程,想必都有遇到过CPU突然过高,或者达到200%以上的情况。

数据库执行查询或数据修改操作时,系统需要消耗大量的CPU资源维护从存储系统、内存数据中的一致性。

并发量大并且大量SQL性能低的情况下,比如字段是没有建立索引,则会导致快速CPU飙升,如果还开启了慢日志记录,会导致性能更加恶化。生产上有MYSQL 飙升900% 的恶劣情况。

Java进程飙升

一般来说Java 进程不做大量 CPU 运算,正常情况下,CPU 应该在 100~200% 之间,


牧歌...大约 9 分钟
Pytorch的使用
import torch
import numpy as np

tensors声明

data = [[1,2],[3,4]]
x_data = torch.tensor(data)

牧歌...大约 4 分钟
element-ui中表格动态行和列

效果展示

image.png|550
image.png|550

页面

<template>
<div style="padding:10px">
    <el-button type="primary" size="mini" @click="addRows()">添加行</el-button>
    <el-button type="primary" size="mini" @click="addColumn()">添加列</el-button>
    <el-button type="danger" size="mini" @click="deleteRows()">删除行</el-button>
    <!-- <el-button type="primary" size="mini" @click="test()">测试</el-button> -->
    <!-- <el-button type="primary" size="mini" >提交</el-button> -->
</div>

<el-table :data="tableData" border style="margin:10px" ref="tb" @selection-change="handleDetailSelectionChange" :row-class-name="rowClassName">
    <el-table-column
        type="selection"
        width="50"
        align="center"
        />
    <el-table-column v-for="item in columnData" :key="item.prop"  :prop="item.prop" :width="item.width">
        <template slot="header">
            {{ item.label }}
            <i
                class="el-icon-remove"
                style="color:red;cursor:pointer;"
                @click="deleteColumns(item.prop)"
            ></i>
        </template>
        <template slot-scope="scope">
            <span v-if="scope.row[item.prop] !== null">
                <el-input v-model="scope.row[item.prop]"></el-input>
            </span>
            <span style="color: red; cursor: pointer;" v-else @click="deleteColumns(item.prop)">删除列</span>
        </template>
    </el-table-column>
    <!-- <el-table-column fixed="right" label="操作" width="100">
        <template slot-scope="scope">
        <el-button @click="deleteRows(scope)" v-if="scope.$index < tableData.length " type="text" size="small">删除行
        </el-button>
        </template>
    </el-table-column> -->
</el-table>
</template>

牧歌...大约 2 分钟
ElasticSearch分词器

分词器的作用就是将文本内容切分成一个个的词项,倒排索引记录这些词项与文档的关联关系,后续搜索时,ElasticSearch仅通过检索这些词项即可关联出对应的文档记录。

ElasticSearch内置分词器

  • Standard Analyzer:默认分词器,按词切分,小写处理
  • Simple Analyzer:按照非字母切分(符号被过滤),小写处理
  • Stop Analyzer:小写处理,停用词过滤(the,a,is)
  • Whitespace Analyzer:按照空格切分,不转小写
  • Keyword Analyzer:部分词,直接将输入当做输出
  • Patter Analyze:正则表达式,默认 \W+ (非字符分割)
  • Language:提供30多种常见语音的分词器
  • Customer Analyzer:自定义分词器

牧歌...大约 3 分钟
文档站点部署到服务器

直接使用 Nginx 转发

安装 Nginx

方便使用 yum

yum install nginx

显示如下效果即为安装成功

=======================================================================================================================================================================
Install  1 Package (+4 Dependent packages)

Total download size: 2.4 M
Installed size: 6.7 M
Is this ok [y/d/N]: y
Downloading packages:
(1/5): gperftools-libs-2.6.1-1.el7.x86_64.rpm                                                                                                   | 272 kB  00:00:00     
(2/5): centos-indexhtml-7-9.el7.centos.noarch.rpm                                                                                               |  92 kB  00:00:00     
(3/5): nginx-1.20.1-10.el7.x86_64.rpm                                                                                                           | 588 kB  00:00:00     
(4/5): nginx-filesystem-1.20.1-10.el7.noarch.rpm                                                                                                |  24 kB  00:00:00     
(5/5): openssl11-libs-1.1.1k-7.el7.x86_64.rpm                                                                                                   | 1.5 MB  00:00:00     
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                  4.2 MB/s | 2.4 MB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : 1:openssl11-libs-1.1.1k-7.el7.x86_64                                                                                                                1/5 
  Installing : 1:nginx-filesystem-1.20.1-10.el7.noarch                                                                                                             2/5 
  Installing : centos-indexhtml-7-9.el7.centos.noarch                                                                                                              3/5 
  Installing : gperftools-libs-2.6.1-1.el7.x86_64                                                                                                                  4/5 
  Installing : 1:nginx-1.20.1-10.el7.x86_64                                                                                                                        5/5 
  Verifying  : gperftools-libs-2.6.1-1.el7.x86_64                                                                                                                  1/5 
  Verifying  : centos-indexhtml-7-9.el7.centos.noarch                                                                                                              2/5 
  Verifying  : 1:nginx-filesystem-1.20.1-10.el7.noarch                                                                                                             3/5 
  Verifying  : 1:nginx-1.20.1-10.el7.x86_64                                                                                                                        4/5 
  Verifying  : 1:openssl11-libs-1.1.1k-7.el7.x86_64                                                                                                                5/5 

Installed:
  nginx.x86_64 1:1.20.1-10.el7                                                                                                                                         

Dependency Installed:
  centos-indexhtml.noarch 0:7-9.el7.centos   gperftools-libs.x86_64 0:2.6.1-1.el7   nginx-filesystem.noarch 1:1.20.1-10.el7   openssl11-libs.x86_64 1:1.1.1k-7.el7  

Complete

牧歌...大约 3 分钟
为什么数据库连接很消耗资源?

本文主要想探究一下连接数据库的细节,尤其是在Web应用中要使用数据库来连接池,以免每次发送一次请求就重新建立一次连接。对于这个问题,答案都是一致的,建立数据库连接很耗时,但是这个耗时是都多少呢,又是分别在哪些方面产生的耗时呢?

本文以连接MySQL数据库为例,因为MySQL数据库是开源的,其通信协议是公开的,所以我们能够详细分析建立连接的整个过程。

在本文中,消耗资源的分析主要集中在网络上,当然,资源也包括内存、CPU等计算资源,使用的编程语言是Java,但是不排除编程语言也会有一定的影响。

首先先看一下连接数据库的Java代码,如下:


牧歌...大约 5 分钟
Springboot整合Quartz数据库方式

引入依赖

  quartz:
    #相关属性配置
    properties:
      org:
        quartz:
          scheduler:
            instanceName: clusteredScheduler
            instanceId: AUTO
          jobStore:
            class: org.quartz.jobStore.class=org.springframework.scheduling.quartz.LocalDataSourceJobStore
            driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
            tablePrefix: QRTZ_
            isClustered: true
            clusterCheckinInterval: 10000
            useProperties: false
          threadPool:
            class: org.quartz.simpl.SimpleThreadPool
            threadCount: 10
            threadPriority: 5
            threadsInheritContextClassLoaderOfInitializingThread: true
    #数据库方式
    job-store-type: jdbc

牧歌...小于 1 分钟