自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 mysql 备份 还原

方案1:pv -PETab 202301.sql | /usr/local/soft/3306/bin/mysql -uroot -p -h 127.0.0.1 --port=3306。: 在 CREATE TABLE 语句中添加所有的 CREATE 选项。: 在 SELECT 查询时,一次读取结果集的所有行,以便尽快释放表锁。: 在备份每个数据表时,执行 LOCK TABLES 操作。这个命令的话,要么是在sql所在目录下执行,或者是觉得路径。: 在每个创建的表语句前加上 DROP TABLE。

2023-04-25 19:03:01 448

原创 Linux 下 安装多个mysql8.0

初始化完成后,会在data文件生成相关的信息,如果觉得不对的话,可以把date里面的内容删除掉,重新初始化。修改文件所属账户:chown -R mysql:mysql /usr/local/soft/mysql*vim my.cnf 这个文件的权限记得修改一下,因为它如果权限过大,在启动还是初始化的时候不行。在mysql用户组下添加mysql用户:useradd mysql -g mysql。1:因为要安装多个mysql,所以要修改文件名称,修改文件所属的账户和权限。2:解压下载的mysql压缩包。

2023-04-22 13:25:40 922

原创 Redis,Redis Sentinel ,集群

Redis,Redis sentinel ,集群

2023-04-16 21:08:04 355

原创 linux 下 安装rabbitMQ

安装任何软件包之前,建议使用以下命令更新软件包和存储库yum -y update由于RabbitMQ是基于Erlang(面向高并发的语言)语言开发,所以在安装RabbitMQ之前,需要先安装Erlang。在本教程中我们将安装最新版本的Erlang到服务器中。 Erlang在默认的YUM存储库中不可用,因此您将需要安装EPEL存储库。 运行以下命令相同。yum -y install epel-releaseyum -y update安装Erlangyum -y install e

2020-09-16 10:26:44 272

原创 如何在很短的时间内将大量数据插入到ConcurrentHashMap

将大批量数据保存到map中有两个地方的消耗将会是比较大的:第一个是扩容操作,第二个是锁资源的争夺。第一个扩容的问题,主要还是要通过配置合理的容量大小和扩容因子,尽可能减少扩容事件的发生;第二个锁资源的争夺,在put方法中会使用synchonized对头节点进行加锁,而锁本身也是分等级的,因此我们的主要思路就是尽可能的避免锁等级。所以,针对第二点,我们可以将数据通过通过ConcurrentHashMap的spread方法进行预处理,这样我们可以将存在hash冲突的数据放在一个组里面,每个组都使用单线程进行pu

2020-08-28 23:44:09 1657

原创 mysql 缓存池中缓存的数据页数据类型

2020-08-23 14:17:48 258

原创 Map用法

Map用法类型介绍Java 自带了各种 Map 类,这些 Map 类可归为三种类型:通用Map用于在应用程序中管理映射,通常在 java.util 程序包中实现HashMap、Hashtable、Properties、LinkedHashMap、IdentityHashMap、TreeMap、WeakHashMap、ConcurrentHashMap专用Map通常我们不必亲自创建此类Map,而是通过某些其他类对其进行访问java.util.jar.Attributes、jav..

2020-08-14 22:33:26 192

原创 深入分析Java I/O的工作机制

I/O是目前web应用主要的问题之一,大部分web应用系统的瓶颈是I/O瓶颈。java 的I/O类可以分为如下4组:基于字节操作的I/O接口:InputStream 和 OutputStream基于字符操作的I/O接口:Writer 和 Reader基于磁盘操作的I/O接口:File基于网络操作的I/O接口:Socket基于字节操作的I/O接口待完善基于字符操作的I/O接口待完善字节与字符的转化接口待完善磁盘I/O工作机制1:标准访问文件的方式标.

2020-08-07 21:41:06 93

原创 JVM 之 内存篇

介绍完java虚拟机运行时数据区之后,本篇将介绍这些数据是如何创建,如何布局以及如何访问的。1:对象的创建2:对象的内存布局3:对象的访问地位

2020-07-31 18:33:36 97

原创 WEB 请求过程

1:HTTP请求和建立一个Socket其实没有太大的区别,只不过outputStream.write的字节码写的数据格式,要符合HTTP,浏览器在创建socket连接之前,要通过DNS解析出ip地址,在通过这个IP地址和默认的端口80,与原创服务器建立socket连接。浏览器根据这个url组装成一个get类型的Http请求头。通过outputSream.write发送。远程服务器,通过inputStram.read读取,服务器等到返回结果,最后断开连接。HttpClient 是一个很好的开源的发送Htt

2020-07-29 22:31:05 138

原创 JVM 之 内存篇

本篇将从概念上阐述java虚拟机内存的各个区域,以及每个区域的作用,服务对象以及其中可能产生的问题1:程序计数器2:java虚拟机栈3 :本地方法栈4:java堆5:方法区6:运行时常量池7:直接内存...

2020-07-25 20:18:35 87

原创 各类排序算法时间复杂度和空间复杂度对比表

2020-07-20 11:51:18 256

原创 系统优化分析 JVM JAVA

1: ps -ef | grep java 查看对应的进程的PID:通过ps命令查询PID2: jstat -gc pid 5000 :间隔5秒打印出来GC的具体情况Options,选项,我们一般使用 -gcutil 查看gc情况vmid,VM的进程号,即当前运行的java进程号interval,间隔时间,单位为秒或者毫秒count,打印次数,如果缺省则打印无数次3:使用jinfo命令查询该进程的JVM参数设置jinfo [PID]字段说明:显示内容说明如下(部...

2020-06-18 14:51:56 228

原创 linux采用scp命令拷贝文件到本地,拷贝本地文件到远程服务器

1.从服务器复制文件到本地: 远程服务器ip:192.168.1.111. root:是用户名scp root@192.168.1.111:/home/mysql_3306.log /home/补充:多文件拷贝scp root@192.168.1.111:/home/\{mysql_3306.log,mysql2_3306.log,test3.bin,test.*\} /localhome/2.从服务器复制文件夹到本地:scp -r root@192.168.1....

2020-06-04 10:49:17 1751

原创 Java内存模型----Java Memory Model

Java的内存模型设置的想法是为了达到屏蔽各种硬件和操作系统访问内存的差异,以达到在各个平台统一的,一致的访问内存效果。因为之前的C/C++,直接使用物理硬件和操作系统内存的模型,这样的话,有可能这个程序在不同的硬件和平台就不能正常运行了。1.1 工作内存和主内存变量:实例变量,静态变量,构成数组对象的元素。不包括局部变量和方法参数。java内存模型规定了,所有的变量都存储在主内存中(...

2020-03-01 22:10:17 122

原创 并发

并发:将多核cpu的计算能力发挥到极致了。在实际业务中,将将任务进行了拆分。以多线程的方式完成任务。当然这样也是有缺点的:多线程面临的是频繁的上下文的切花,这样会消耗cpu的性能。以及线程安全问题。为了解决这一缺点,有四种方案:1:锁分段技术2:CAS,利用atomic的CAS算法,来避免不必要的锁竞争带来的上下文切换。3:使用最少线程。4:协程:在单线程里实现多任务的调度...

2020-02-19 13:00:56 160

原创 04 | 基础篇:经常说的 CPU 上下文切换是什么意思?(下)

vmstat:是查看系统的整体上下文切换情况,想看具体的每一个进程的情况,需要pidstat工具。如果不知道参数指令的意思,可以通过 man vmstat 查看具体的指令分析。自愿上下文切换:是指由于系统资源不足,导致的上下文切花。这导致进程自动挂起,然后由系统进行管理进程的正常调度和运行。非自愿上下文切换:是指由于时间片的时间到了,然后被系统强制调用,进而发生上下文切换。pids...

2020-02-18 17:15:15 203

原创 03 | 基础篇:经常说的 CPU 上下文切换是什么意思?(上)

cpu上下文:cpu寄存器和程序计数器进程也可以在用户空间运行也可以在,内核空间运行,在用户空间运行的话,称之为进程的用户态,在内核空间运行的话,称之为进程的内核态。cpu的上下文切换对应三种情况:进程上下文切换,线程上下文切换,中断上下文切换用户态到内核态只能通过系统调用。系统调用将用户态的进程,陷入到内核态。系统调用:是特殊的上下文切换,特权模式的切换。他是在进程内的上下...

2020-02-17 18:52:31 269

原创 02 | 基础篇:到底应该怎么理解“平均负载”?

平均负载:load average是单位时间内可运行进程+不可中断进程的平均数。cpu使用率:是单位时间内统计cpu的繁忙程度。分析平均负载的三种工具:mpstat:用于分析当前每个cpu的性能和所有cpu的平均性能。ipstat:用于分析实时进程的cpu,内存,i/o,上下文切换等性能指标iostat:用于统计分析cpu和磁盘I/O的信息。...

2020-02-17 16:55:33 159

原创 深度优先-广度优先

广度优先:1:定义起点,标记已到达2:循环起点相邻能到达的且未被标记已读的端点,找到后标记为已读,并将这个端点定义为起点。3:回到第一步。深度优先:1:定义起点,标记已到达。2:循环找到起点相邻的一个端点,然后标记已读,并将这个端点定义为起点。直到这个起点相邻的没有其它可达的端点。3:循环返回上一层端点,返回第二步,找未读的端点。4:回到第一步...

2020-02-15 19:50:23 108

原创 上下文切换

1:系统调用一次系统调用其实是发生了两次cpu上下文的切换:首先将用户态的cpu寄存器中的指令保存在系统内核中。为了执行内核态代码,需要将寄存器更新为内核态指令的位置,然后跳转到内核空间去执行任务。当内核态的指令执行完成的时候,cpu寄存器将恢复保存在系统内核中的上一次执行的用户态,然后切换到用户空间去执行任务。系统调用是特权模式切换,不会切换进程,也不会涉及虚拟内存等用户态进程的资源...

2019-11-25 17:13:32 154

原创 mysql各类问题总结

1、MySQL的复制原理以及流程基本原理流程,3个线程以及之间的关联;主:binlog线程——记录下所有改变了数据库数据的语句,放进master上的binlog中; 从:io线程——在使用start slave 之后,负责从master上拉取 binlog 内容,放进 自己的relay log中; 从:sql执行线程——执行relay log中的语句;2、MySQL中myisam与i...

2019-11-25 17:13:09 144

原创 crontab指定时间

使用crontab你可以在指定的时间执行一个shell脚本或者一系列Linux命令。例如系统管理员安排一个备份任务使其每天都运行如何往 cron 中添加一个作业?# crontab –e0 5 * * * /root/bin/backup.sh这将会在每天早上5点运行 /root/bin/backup.shCron 各项的描述以下是 crontab 文件的格式:{minu...

2019-11-25 17:12:28 7250

原创 如何快速处理锁导致的mysql问题

kill -9 命令无法杀死 mysql 进程,因为 mysqld_safe 会自动重启。当大量sql的更新导致了行锁,因为有的数据可以看到,有的数据加载不出来。当进行杀掉mysql的进程,在进程起了后,依然会有同样的问题。猜测这是事务锁。最后不得不直接重新安装mysql。问题解决...

2019-11-25 17:10:30 83

原创 mysql存储表情微信昵称

1,去修改表字符集utf8mb4: ALTER TABLE table_name CHARSET=utf8mb4;2,再去修改数据库的字符集utf8mb4: 在/etc/my.cnf3:找到mysql的安装目录,停止mysql,在启动mysql。 find / -name 'mysql.server' 找到后: 启动:./support...

2019-11-25 16:29:47 368

原创 Linux定时清理系统缓存

长时间不清理系统缓存,导致缓存将系统内存占用过大。crontab -l :查看定时任务列表。crontab -e : 编辑定时任务:56 23 * * * /usr/local/freemem/free.sh 每晚的23:56执行这个脚本。脚本:当剩余的内存小与1000m的时候执行命令,将日志打入到指定的文件里#! /bin/shused=`free ...

2019-11-18 17:58:06 1401

原创 linux性能分析关于mysql慢查询的问题

线上有一个很慢的查询响应:top :看到iowait 升高iostat -x -d 1 :iostat 的输出你应该非常熟悉。观察这个界面,我们发现,磁盘 sda 每秒的读数据为 32 MB, 而 I/O 使用率高达 97% ,接近饱和,这说明,磁盘 sda 的读取确实碰到了性能瓶颈。pidstat -d 1 : 看进程的i/o的情况,可以看到mysql的读写速率为32 MB每秒。...

2019-10-25 16:34:05 351

原创 linux 命令

df -l 查看系统磁盘文件大小和占得比例find . -name "*.log" | xargs rm -rf 先进入文件夹,然后执行命令,删除文件夹下所有后缀为 .log 的文件

2019-10-18 12:57:28 89

转载 buffer/cache 过大清除

echo 1 > /proc/sys/vm/drop_caches前言发现这个问题是因为项目中开始时加载库有时候很快有时候又很慢,才发现这个问题。linux是先将库文件读到cache中去的,所以二次加载时会很快,造成时间不定。正文在Linux系统中,我们经常用free命令来查看系统内存的使用状态。在一个RHEL6的系统上,free命令的显示内容大概是这样一个状态:这里...

2019-10-14 18:16:57 1462

转载 ngnix

netstat -ntlp //查看当前所有tcp端口·netstat -ntulp |grep 80 //查看所有80端口使用情况·ps -ef | grep //查看进程号ps命令将某个进程显示出来grep命令是查找中间的|是管道命令 是指ps命令与grep同时执行例如:ps -ef | grep comcatnginx 启动、重启、停止(进入nginx安装目录sbin)...

2019-10-14 15:43:16 65

原创 npm

先执行npm i,下载依赖,在执行npm run build

2019-08-06 16:27:11 62

原创 saas1.0内存不足解决方案

ps -aux | grep tomcat首先先kill 掉tomcat的id然后 ./startup.sh

2019-08-05 19:08:58 147

原创 线程状态转换关系:

2019-06-10 17:37:00 308

原创 创建线程的3种方式

创建线程的3种方式:一个java程序从main()方法开始执行,然后按照既定的代码逻辑执行,看似没有其他线程参与,但实际上java程序天生就是一个多线程程序,包含了:(1)分发处理发送给给JVM信号的线程;(2)调用对象的finalize方法的线程;(3)清除Reference的线程;(4)main线程,用户程序的入口。那么,如何在用户程序中新建一个线程了,只要有三种方式:1:通过继承Thre...

2019-06-10 17:36:16 129

原创 线程状态的基本操作

1:interrupted中断可以理解为线程的一个标志位,它表示了一个运行中的线程是否被其他线程进行了中断操作。中断好比其他线程对该线程打了一个招呼。其他线程可以调用该线程的interrupt()方法对其进行中断操作,同时该线程可以调用 isInterrupted()来感知其他线程对其自身的中断操作,从而做出响应。另外,同样可以调用Thread的静态方法 interrupted()对当前线程进...

2019-06-10 17:33:49 99

原创 JVM为何选择基于栈的结构

JVM为何要基于栈来设计有几个理由。一个是JVM要设计成与平台无关的,而平台无关性就是要保证在没有或者有很少的寄存器的机器上也要同样能正确地执行Java代码。例如,在80X86的机器上寄存器就是没有规律的,很难针对某一款机器设计通用的基于寄存器的指令,所以基于寄存器的架构很难做到通用。在收集操作系统方面,Google的Android平台上的Dalvik VM就是基于特定芯片(ARM)设计的基于寄存...

2019-06-10 11:15:00 1099

转载 线程的创建

一个java程序从main()方法开始执行,然后按照既定的代码逻辑执行,看似没有其他线程参与,但实际上java程序天生就是一个多线程程序,包含了:(1)分发处理发送给给JVM信号的线程;(2)调用对象的finalize方法的线程;(3)清除Reference的线程;(4)main线程,用户程序的入口。那么,如何在用户程序中新建一个线程了,只要有三种方式: 通过继承Thread类,重写run方...

2019-06-10 11:06:07 61

转载 postman使用记录,带cookie的get请求和传json对象的post请求示范

Get请求。get请求,只需要选好请求类型:Get,然后写对URL地址。有的Get请求是带参数的:1,直接在URL里面的,后台使用 @PathVariable 接收参数2,后台使用 @RequestParam 接收,可以直接在URL里面拼。也可以使用postman里面的那个URL输入框后面有个“Params”,然后输入对应的key,以及对应的值。差不多这个样子我这个例子是带co...

2019-06-08 10:45:03 921

原创 linux下重启nginx

sudo nginx -s reload 这个是全局的如果没有全局的就到nginx的目录里执行或者全路径执行sudo /usr/local/nginx/sbin/nginx -s reloadcd /usr/local/nginx/sbinsudo ./nginx -s reloadcd /usr/local/nginx/sbinsudo sh nginx ...

2019-05-27 17:50:05 2150

原创 微信开发公众号alert/confirm弹框去掉域名的方法

重写alert:window.alert = function(name){ var iframe = document.createElement("IFRAME"); iframe.style.display="none"; iframe.setAttribute("src", 'data:text/plain,'); document.documentElement.ap...

2019-05-24 17:12:07 2272

24种设计模式介绍与6大设计原则

总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

2017-12-25

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除