自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 资源 (2)
  • 收藏
  • 关注

原创 Java 多线程

线程的概念,百度是这样解释的:线程(英语:Thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在Unix System V及SunOS中也被称为轻量进程(Lightweight Processes),但轻量进程更多指内核线程(Kernel Thread),而把用户线程(User Thread)称为线程。1.1 线程与进程的区别进程:指在系统中正在运行的一个应用

2020-06-05 15:34:34 220

原创 Spring@Transactional 注解的失效场景

@Transactional 注解相信大家并不陌生,平时开发中很常用的一个注解,它能保证方法内多个数据库操作要么同时成功、要么同时失败。使用@Transactional注解时需要注意许多的细节,不然你会发现@Transactional总是莫名其妙的就失效了。一、事务事务管理在系统开发中是不可缺少的一部分,Spring提供了很好事务管理机制,主要分为编程式事务和声明式事务两种。编程式事务:是指在代码中手动的管理事务的提交、回滚等操作,代码侵入性比较强,如下示例:try { //TODO

2020-06-04 16:58:55 451 1

原创 数据库(十)_MySQL主从复制

复制的基本原理slave 会从 master 读取 binlog 来进行数据同步三个步骤master将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件,binary log events;salve 将 master 的 binary log events 拷贝到它的中继日志(relay log);slave 重做中继日志中的事件,将改变应用到自己的数据库中。MySQL 复制是异步且是串行化的。复制的基本原则每个 slave只有一个 master每个 sa

2020-05-27 16:50:40 198

原创 数据库(九)_MySQL分区、分表、分库

MySQL分区一般情况下我们创建的表对应一组存储文件,使用MyISAM存储引擎时是一个.MYI和.MYD文件,使用Innodb存储引擎时是一个.ibd和.frm(表结构)文件。当数据量较大时(一般千万条记录级别以上),MySQL的性能就会开始下降,这时我们就需要将数据分散到多组存储文件,保证其单个文件的执行效率能干嘛逻辑数据分割提高单一的写和读应用速度提高分区范围读查询的速度分割数据能够有多个不同的物理文件路径高效的保存历史数据怎么玩首先查看当前数据库是否支持分区MySQL5.6

2020-05-27 16:46:19 461

原创 数据库(八)_MySQL调优

日常工作中你是怎么优化SQL的?SQL优化的一般步骤是什么,怎么看执行计划(explain),如何理解其中各个字段的含义?如何写sql能够有效的使用到复合索引?一条sql执行过长的时间,你如何优化,从哪些方面入手?什么是最左前缀原则?什么是最左匹配原则?影响mysql的性能因素业务需求对MySQL的影响(合适合度)存储定位对MySQL的影响系统各种配置及规则数据活跃用户的基本信息数据活跃用户的个性化定制信息数据准实时的统计信息数据其他一些访问频繁但变更较少的数据二进制.

2020-05-27 16:28:05 278

原创 数据库(七)_MySQL锁机制

数据库的乐观锁和悲观锁?MySQL 中有哪几种锁,列举一下?MySQL中InnoDB引擎的行锁是怎么实现的?MySQL 间隙锁有没有了解,死锁有没有了解,写一段会造成死锁的 sql 语句,死锁发生了如何解决,MySQL 有没有提供什么机制去解决死锁锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。数据库锁定机制简单来说,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变得有序所.

2020-05-27 15:48:14 347

原创 数据库(六)_MySQL事务

事务的隔离级别有哪些?MySQL的默认隔离级别是什么?什么是幻读,脏读,不可重复读呢?MySQL事务的四大特性以及实现原理MVCC熟悉吗,它的底层原理?MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务!ACID — 事务基本要素事务是由一组SQL语句组成的逻辑处理单元,具有4个属性,通常简称为事务的ACID属性A (Atomici.

2020-05-27 15:21:56 629

原创 数据库(五)_MySQL查询机制

count(*) 和 count(1)和count(列名)区别执行效果上:count(*)包括了所有的列,相当于行数,在统计结果的时候,不会忽略列值为NULLcount(1)包括了所有列,用1代表代码行,在统计结果的时候,不会忽略列值为NULLcount(列名)只包括列名那一列,在统计结果的时候,会忽略列值为空(这里的空不是只空字符串或者0,而是表示null)的计数,即某个字段值为NULL时,不统计执行效率上:列名为主键,count(列名)会比count(1)快列名不为主键,coun.

2020-05-27 14:19:12 672

原创 数据库(四)_MySQL索引

索引说说你对 MySQL 索引的理解?数据库索引的原理,为什么要用 B+树,为什么不用二叉树?聚集索引与非聚集索引的区别?InnoDB引擎中的索引策略,了解过吗?创建索引的方式有哪些?聚簇索引/非聚簇索引,mysql索引底层实现,为什么不用B-tree,为什么不用hash,叶子结点存放的是数据还是指向数据的内存地址,使用索引需要注意的几个地方?MYSQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构,所以说索引的本质是:数据结构索引的目的在于提高查询效率.

2020-05-27 13:58:28 278

原创 数据库(三)_MySQL数据类型

数据类型主要包括以下五大类:整数类型:BIT、BOOL、TINY INT、SMALL INT、MEDIUM INT、 INT、 BIG INT浮点数类型:FLOAT、DOUBLE、DECIMAL字符串类型:CHAR、VARCHAR、TINY TEXT、TEXT、MEDIUM TEXT、LONGTEXT、TINY BLOB、BLOB、MEDIUM BLOB、LONG BLOB日期类型:Date、DateTime、TimeStamp、Time、Year其他数据类型:BINARY、VARBINAR.

2020-05-27 10:32:50 145

原创 数据库(二)_MySQL存储引擎

存储引擎存储引擎是MySQL的组件,用于处理不同表类型的SQL操作。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。使用哪一种引擎可以灵活选择,一个数据库中多个表可以使用不同引擎以满足各种性能和实际需求,使用合适的存储引擎,将会提高整个数据库的性能 。MySQL服务器使用可插拔的存储引擎体系结构,可以从运行中的 MySQL 服务器加载或卸载存储引擎 。查看存储引擎-- 查看支持的存储引擎SHOW ENGINES-- 查看默认存储引擎.

2020-05-27 10:25:45 164

原创 数据库(一)_MySQL架构

MySQL架构和其它数据库相比,MySQL有点与众不同,它的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎的架构上,插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取相分离。这种架构可以根据业务的需求和实际需要选择合适的存储引擎。连接层:最上层是一些客户端和连接服务。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认证安全接入的客户端提供线程。同样在该层上可以实现基于SSL的安全链接。服务器也会为安全接入的每个客户端验证它所具.

2020-05-27 10:09:21 341

原创 Linux命令 kill -9 的原理

相信很多程序员对于Linux系统都不陌生,即使自己的日常开发机器不是Linux,那么线上服务器也大部分都是的,所以,掌握常用的Linux命令也是程序员必备的技能。但是,怕就怕很多人对于部分命令只是一知半解,使用不当就能导致线上故障。前段时间,我们的线上应用报警,频繁FGC,需要紧急处理问题,于是有同事去线上重启机器(正常程序应该是先采集堆dump,然后再重启,方便排查是否存在内存泄露等问题)。但是在重启过程中,同事发现正常的重启命令应用无反应,然后尝试使用kill命令"杀"掉Java进程,但是仍然无效

2020-05-14 14:34:43 8083 2

原创 redis 缓存更新一致性

当执行写操作后,需要保证从缓存读取到的数据与数据库中持久化的数据是一致的,因此需要对缓存进行更新。因为涉及到数据库和缓存两步操作,难以保证更新的原子性。在设计更新策略时,我们需要考虑多个方面的问题:对系统吞吐量的影响:比如更新缓存策略产生的数据库负载小于删除缓存策略的负载并发安全性:并发读写时某些异常操作顺序可能造成数据不一致,如缓存中长期保存过时数据更新失败的影响:若某个操作失败,如何对业务影响降到最小检测和修复故障的难度: 操作失败导致的错误会在日志留下详细的记录容易检测和修复。并发问题导

2020-05-14 13:10:01 225

原创 Java_遍历 HashMap 的 5 种最佳方式

在本文中,我们将通过示例讨论在 Java 上遍历 HashMap 的五种最佳方法。使用 Iterator 遍历 HashMap EntrySet使用 Iterator 遍历 HashMap KeySet使用 For-each 循环迭代 HashMap使用 Lambda 表达式遍历 HashMap使用 Stream API 遍历 HashMap1. 使用 Iterator 遍历 H...

2020-04-07 14:14:17 208

原创 Java_JVM 级锁

synchronizedsynchronized 关键字是一把经典的锁,也是我们平时用得最多的。在 JDK1.6 之前, syncronized 是一把重量级的锁,不过随着 JDK 的升级,也在对它进行不断的优化,如今它变得不那么重了,甚至在某些场景下,它的性能反而优于轻量级锁。在加了 syncronized 关键字的方法、代码块中,一次只允许一个线程进入特定代码段,从而避免多线程同时修改同...

2020-03-16 13:56:40 94

原创 Java_BigDecimal类

前言我们都知道浮点型变量在进行计算的时候会出现丢失精度的问题。如下一段代码:System.out.println(0.05 + 0.01);System.out.println(1.0 - 0.42);System.out.println(4.015 * 100);System.out.println(123.3 / 100);输出:0.0600000000000000050...

2020-03-14 13:58:18 83

原创 Python__Pyinstaller打包命令实现打包exe

1、前言嘿,各位小伙伴,晚上好呀,我相信各位小伙伴都是python的爱好者。也许我们不一定是专业的程序员,但是我们仍然可以通过代码提高我们的效率,尽量少加班,多陪陪媳妇。再不行,让代码替我们干着重复的工作,我们有节省出来的时间打游戏不好嘛,是吧,哈哈哈。但是呢,我们开发的脚本一般都会用到一些第三方包,可能别人也需要用到我们的脚本,如果我们将我们的xx.py文件发给他,他是不能直接用的,他还...

2020-03-14 13:52:39 2194

原创 常见9种 OOM 原因及解决方案

当 JVM 内存严重不足时,就会抛出 java.lang.OutOfMemoryError 错误。本文总结了常见的 OOM 原因及其解决方法,如下图所示。如有遗漏或错误,欢迎补充指正。1、Java heap space当堆内存(Heap Space)没有足够空间存放新创建的对象时,就会抛出 java.lang.OutOfMemoryError:Javaheap space 错误(根据实际...

2020-03-12 14:51:58 9336

原创 100 个网络基础知识

1、什么是链接?链接是指两个设备之间的连接。它包括用于一个设备能够与另一个设备通信的电缆类型和协议。2、OSI 参考模型的层次是什么?有 7 个 OSI 层:物理层,数据链路层,网络层,传输层,会话层,表示层和应用层。3、什么是骨干网?骨干网络是集中的基础设施,旨在将不同的路由和数据分发到各种网络。它还处理带宽管理和各种通道。4、什么是 LAN?LAN 是局域网的缩写...

2020-03-10 16:23:52 1526

原创 计算机网路

Get和Post区别Get是不安全的,因为在传输过程,数据被放在请求的URL中;Post的所有操作对用户来说都是不可见的。Get传送的数据量较小,这主要是因为受URL长度限制;Post传送的数据量较大,一般被默认为不受限制。Get限制Form表单的数据集的值必须为ASCII字符;而Post支持整个ISO10646字符集。Get执行效率却比Post方法好。Get是form提交的默认方法...

2020-03-06 15:32:56 75

原创 消息队列_kafka

为什么需要消息队列解耦,异步处理,削峰/限流Kafka的文件存储机制Kafka中消息是以topic进行分类的,生产者通过topic向Kafka broker发送消息,消费者通过topic读取数据。然而topic在物理层面又能以partition为分组,一个topic可以分成若干个partition。partition还可以细分为segment,一个partition物理上由多个seg...

2020-03-06 14:42:35 135

原创 Spring_1

什么是三级缓存第一级缓存:单例缓存池singletonObjects。第二级缓存:早期提前暴露的对象缓存earlySingletonObjects。(属性还没有值对象也没有被初始化)第三级缓存:singletonFactories单例对象工厂缓存。创建Bean的整个过程getBean方法肯定不陌生,必经之路,然后调用doGetBean,进来以后首先会执行transforme...

2020-03-06 14:34:00 234

原创 Java基础_1

HashMap和ConcurrentHashMap由于HashMap是线程不同步的,虽然处理数据的效率高,但是在多线程的情况下存在着安全问题,因此设计了CurrentHashMap来解决多线程安全问题。HashMap在put的时候,插入的元素超过了容量(由负载因子决定)的范围就会触发扩容操作,就是rehash,这个会重新将原数组的内容重新hash到新的扩容数组中,在多线程的环境下,存在同时...

2020-03-06 14:28:12 123

原创 JVM_2

JVM类加载过程类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载7个阶段。加载:通过一个类的全限定名来获取定义此类的二进制字节流,将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构,在内存中生成一个代表这个类的Class对象,作为方法去这个类的各种数据的访问入口。验证:验证是连接阶段的第一步,这一阶段的目的是确保Cl...

2020-03-06 14:15:44 90

原创 JVM_1

JVM运行时数据区域程序计数器:程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。是线程私有”的内存。Java虚拟机栈:与程序计数器一样,Java虚拟机栈(Java Virtual M...

2020-03-06 13:31:07 345

原创 zookeeper、redis、mysql相关面试题

ZooKeeperCAP定理:一个分布式系统不可能同时满足以下三种:一致性(C:Consistency)可用性(A:Available)分区容错性(P:Partition Tolerance)在此ZooKeeper保证的是CP,ZooKeeper不能保证每次服务请求的可用性,在极端环境下,ZooKeeper可能会丢弃一些请求,消费者程序需要重新请求才能获得结果。另外在进行lea...

2020-03-06 13:19:06 419

原创 Java8 日期处理

Java 8 日期处理Java 8 推出了全新的日期时间API,在教程中我们将通过一些简单的实例来学习如何使用新API。Java处理日期、日历和时间的方式一直为社区所诟病,将 java.util.Date设定为可变类型,以及SimpleDateFormat的非线程安全使其应用非常受限。新API基于ISO标准日历系统,java.time包下的所有类都是不可变类型而且线程安全。编号类...

2020-03-04 13:39:35 158

转载 MySQL 千万级大表的优化策略

数据量:千万级千万级其实只是一个感官的数字,就是我们印象中的数据量大。这里我们需要把这个概念细化,因为随着业务和时间的变化,数据量也会有变化,我们应该是带着一种动态思维来审视这个指标,从而对于不同的场景我们应该有不同的处理策略。数据量为千万级,可能达到亿级或者更高通常是一些数据流水,日志记录的业务,里面的数据随着时间的增长会逐步增多,超过千万门槛是很容易的一件事情。数据量为千万...

2020-03-03 15:02:39 268

转载 9种设计模式在Spring中的运用,一定要非常熟练!

1、简单工厂实现方式:BeanFactory。Spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得Bean对象,但是否是在传入参数后创建还是传入参数前创建这个要根据具体情况来定。实质:由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类。实现原理:bean容器的启动阶段:读取bean的xml配置文件,将bean元素分别转换成一个...

2020-03-02 16:37:27 144

原创 为什么建议使用你LocalDateTime,而不是Date

在项目开发过程中经常遇到时间处理,但是你真的用对了吗,理解阿里巴巴开发手册中禁用static修饰SimpleDateFormat吗通过阅读本篇文章你将了解到:为什么需要LocalDate、LocalTime、LocalDateTime【java8新提供的类】java8新的时间API的使用方式,包括创建、格式化、解析、计算、修改为什么需要LocalDate、LocalTime、Local...

2020-03-02 14:10:31 207

转载 微信扫码登录的几秒钟里,到底发生了什么

原理解析微信扫码登录现在在日常生活中已经是常见不能再常见的场景之一了,但是要知道微信首次公开这项功能时,却是惊艳众人。移动端与PC端以这样一种巧妙的方式链接在了一起,的确是让人惊叹。小A想起来之前听过的前后端的概念,知道账户的数据信息一般都是放在服务器上,前端负责向后端 “讨要数据” 并显示,后端则是对前端的 “讨要” 做出反应。这样一来,小A猜测微信登录的过程可能就是:网页前端向微信...

2020-03-02 11:00:25 3229

转载 IntelliJ IDEA 项目配置

1、项目配置的理解IDEA 中最重要的各种设置项,就是这个 Project Structre 了,关乎你的项目运行,缺胳膊少腿都不行。最近公司正好也是用之前自己比较熟悉的IDEA而不是Eclipse,为了更深入理解和使用,就找来各种资料再研究一下,这里整理后来个输出。1.1 ProjectProject name:定义项目的名称;Project SDK:设置该项目使用的JDK...

2020-03-02 10:35:04 448

原创 ConcurrentHashMap 线程安全

简介众所周知,在 Java 中,HashMap 是非线程安全的,如果想在多线程下安全的操作 map,主要有以下解决方法:使用 Hashtable 线程安全类使用 Collections.synchronizedMap方法,对方法进行加同步锁使用并发包中的ConcurrentHashMap类关于 Hashtable 类,Hashtable 是一个线程安全的类,Hashtable 几...

2020-01-10 10:15:27 495

转载 常用 vm 参数分析

1 JVM参数简介首先想说的是其实这些参数我们并不是陌生的,在平时的开发和使用中经常都会遇到,只是在平时缺少一个比较系统的总结,所以,对这些参数感觉是很陌生的,所以,通过这篇文章的总结,我相信你一定都会对这些参数熟稔于心,做做心中有数。在Java虚拟机的参数中,其实可以把这些参数分为三类,当然,这是针对JDK1.6来说的,如果对于JDK1.8,那么就不是这么分类的了,但是,由于这两个版本很...

2019-12-17 15:15:33 2913

原创 Java 内存区域透彻分析

1 运行时数据区域JVM载执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。Java 虚拟机所管理的内存一共分为五个区域Method Area(方法区)VM Stack(虚拟机栈)Native Method Stack(本地方法栈)Heap(堆)Program Counter Register(程序计数器)这些区域都有各自的用途,以及创建和销毁的时间,有...

2019-12-17 14:26:33 89

原创 linux mysql数据库压缩表空间

查看表空间数据select TABLE_SCHEMA, TABLE_NAME, `ENGINE`, TABLE_ROWS, AVG_ROW_LENGTH, DATA_LENGTH, INDEX_LENGTH, DATA_FREE, CREATE_TIME from information_schema.`TABLES` where DATA_FREE > 0  and TABLE_...

2018-12-13 13:21:46 690

原创 Linux 定时任务清理日志

查找历史日志命令find /opt/tomcat7/logs/ -mtime +15 -name "*.log"新建文件sudo vi /opt/delete_log.sh更改文件归属、权限sudo chown tomcat7:root delete_log.shsudo chmod +x delete_log.sh文件内容#!/bin/bashsudo find /...

2018-12-13 10:35:28 892

原创 linux tomcat注册服务启动

进入系统目录 /usr/lib/systemd/system新建文件  tomcat7.service文件内容如下[Unit]Description=Apache Tomcat 7After=syslog.target network.target[Service]Type=forkingPIDFile=/opt/tomcat7/tomcat.pidExecStart=/...

2018-12-13 10:29:48 353

原创 linux挂载数据盘

检测是否安装依赖包,命令如下rpm -qa | grep nfs-utilsrpm -qa | grep rpcbind安装依赖包yum -y install nfs-utilsyum -y install rpcbindlinux根目录创建文件夹mkdir  buildswar挂载命令mount -t nfs **.**.**.**:/data/war  /bui...

2018-12-13 10:23:33 208

XtraBackup 备份与恢复实例讲解.docx

XtraBackup 备份与恢复实例讲解 这里简单介绍 innobackupex 一些常用的参数

2020-05-08

dwz开源代码

dwz 开源第一次打开页面时载入界面到客户端, 之后和服务器的交互只是数据交互, 不占用界面相关的网络流量. 支持HTML扩展方式来调用DWZ组件. 标准化Ajax开发, 降低Ajax开发成本.

2015-09-08

空空如也

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

TA关注的人

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