自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(135)
  • 收藏
  • 关注

原创 JVM整体结构及内存模型

JVM内存参数设置

2021-09-01 22:23:02 155

原创 mysql之explain讲解

explain中的重要列信息type列这一列表示关联类型或访问类型,即MySQL决定如何查找表中的行,查找数据行记录的大概范围。 依次从最优到最差分别为:system > const > eq_ref > ref > range > index > ALL 一般来说,得保证查询达到range级别,最好达到refNULL:mysql能够在优化阶段分解查询语句,在执行阶段用不着再访问表或索引。例如:在索引列中选取最小值,可 以单独查找索引来完成,不需

2021-08-30 22:45:26 152

原创 mysql索引底层数据结构

索引是帮助MySQL高效获取数据的排好序的数据结构索引数据结构:二叉树,红黑树,哈希表,B-treeB-Tree:叶节点具有相同的深度,叶节点的指针为空所有索引元素不重复节点中的数据索引从左到右递增排列B+Tree:非叶子节点不存储data,只存储索引(冗余),可以放更多的索引叶子节点包含所有索引字段...

2021-08-28 17:52:34 156

原创 双亲委派机制

JVM类加载器是有亲子层级结构的,如下图

2021-06-10 22:24:31 96

原创 类加载运行全过程

其中loadClass的类加载过程有如下几步: 加载 >> 验证 >> 准备 >> 解析 >> 初始化 >> 使用 >> 卸载 加载:在硬盘上查找并通过IO读入字节码文件,使用到类时才会加载,例如调用类的 main()方法,new对象等等,在加载阶段会在内存中生成一个代表这个类的 java.lang.Class对象,作为方法区这个类的各种数据的访问入口 验证:校验字节码文件的正确性 准备:给类的静态变量分..

2021-06-10 22:21:47 157

原创 list转json json 转list

1 list转jsonString value = JSON.toJSONString(foodAddDto.getSkus());boxFood.setSkus(value); 入库对应的private List<Skus> skus;2 json 转listString res = JSON.toJSON(boxFood.getSkus()).toString();List<Skus> skusList = JSONArray.parseArray(..

2021-04-14 00:24:41 362

原创 集合类复习

1常见集合集合从大的方向分有两个,一是Collection集合,二是Map集合Map集合下有HashMap、LinkedHashMap、TreeMap、HashTable、ConcurrentHashMap。List集合下有ArrayList、LinkedList、Vector、CopyOnWriteArrayList。Set集合下有HashSet、LinkedHashSet、TreeSet、CopyOnWriteArraySet...

2021-03-26 23:09:48 77

原创 Mysql MVCC实现原理以及解决幻读和不可重复读问题

数据读取特性不可重复读 指一个事务范围内两个相同的查询却返回了不同数据 这是由于查询时系统中其他事务修改的提交而引起的 幻读 在两个连续的查找之间一个并发的修改事务修改了查询的数据集,导致这两个查询返回了不同的结果 这是由于查询时系统中其他事务新增或者删除记录引起的 事务隔离级别Read Commited(提交读) 一个事务从开始到提交前,所作的任何修改对其他事务不可见 仅能读取到已提交的记录,这种隔离级别下,每条语句都会读取已提交事务的更新,若两次查询之间有其他事务提交

2021-03-01 13:49:54 336

原创 微信app支付

导入maven依赖 <!--微信支付--> <dependency> <groupId>com.github.wxpay</groupId> <artifactId>wxpay-sdk</artifactId> <version>0.0.3</version> </dependency> 微信支付参数配置 import co.

2021-02-24 11:45:28 171

原创 Servlet生命周期

Servlet生命周期就是指创建Servlet实例后,存在的时间以及何时销毁的整个过程.--Servlet生命周期有三个方法  init()方法:  service()方法:Dispatches client requests to theprotectedservicemethod   destroy()方法:Called by the servlet container toindicate to a servlet that the servlet is being taken out of.

2021-01-29 14:42:09 73

原创 HashMap的实现原理--链表散列

1. HashMap概述HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。2. HashMap的数据结构在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,HashMap也不例外。HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。这样的结构结合了链表在增删方...

2021-01-28 19:01:37 916 1

原创 集合总结

集合类型主要有3种:set(集)、list(列表)和map(映射)List是Java中比较常用的集合类,简单介绍下其中几个重点的实现ArrayList、LinkedList和Vector之间的关系和区别。List 是一个接口,它继承于Collection的接口。它代表着有序的队列。当我们讨论List的时候,一般都和Set作比较。List中元素可以重复,并且是有序的(这里的有序指的是按照放入的顺序进行存储。如按照顺序把1,2,3存入List,那么,从List中遍历出来的顺序也是1,2,3)。

2021-01-28 18:05:50 94

原创 MySQL之MVVC

1、什么是锁?一种保护机制,在多线程的情况下,保证操作数据的正确性与一致性2、锁有哪些分类?悲观锁、乐观锁、独占锁、共享锁、公平锁、非公平锁、分布式锁、自旋锁3、谈谈悲观锁乐观锁:指的是看待并发同步的角度,一般结合数据库将,以MySQL为例,悲观锁主要是表锁,行锁和间隙锁,叶锁,读锁,因为这些锁在被触发时会引起线程阻塞,所以叫悲观锁;而乐观锁其实在MySQL中本身不存在,但是MySQL提供了MVCC的机制,支持乐观锁机制4、什么是MVCC?只有在InnoDB引擎下存在,MVCC是为

2021-01-27 22:18:53 232

原创 MySQL日志系统:redo log、binlog、undo log

日志系统主要有redo log(重做日志)和binlog(归档日志)。redo log是InnoDB存储引擎层的日志,binlog是MySQL Server层记录的日志, 两者都是记录了某些操作的日志(不是所有)自然有些重复(但两者记录的格式不同)。redo log日志模块redo log是InnoDB存储引擎层的日志,又称重做日志文件,用于记录事务操作的变化,记录的是数据修改之后的值,不管事务是否提交都会记录下来。在实例和介质失败(media failure)时,redo log文件就能派上用

2021-01-27 21:49:31 96

原创 Hadoop完全分布式集群搭建

1. 集群搭建形式Hadoop环境搭建分为三种形式:单机模式、伪分布式模式、完全分布模式单机模式—— 在一台单机上运行,没有分布式文件系统,而是直接读写本地操作系统的文件系统。伪分布式—— 也是在一台单机上运行,但不同的是Java进程模仿分布式运行中的各类节点。即一台机器上,既当NameNode,又当DataNode,或者说既是JobTracker又是TaskTracker。没有所谓的在多台机器上进行真正的分布式计算,故称为“伪分布式”。完全分布式——真正的分布式,由3个及以上的实体机或者.

2021-01-22 17:06:12 244

原创 CentOS - 修改主机名教程(将 localhost.localdomain 改成其它名字)

最近在虚拟机中装了个CentOS 7系统,使用hostname命令可以看到其默认的主机名为localhost.localdomain。如果想要改成其它名字,可以按照如下步骤进行操作。(1)首先执行如下命令将主机名字改成 node1 1 hostnamectl set-hostname node1 (2)接着还需要编辑/etc/hosts文件,执行如下命令开始编辑: 1 vi /etc/hosts ...

2021-01-21 15:40:03 2301

原创 Linux下Hadoop安装与配置

1 环境配置1.1 JDK配置  在这里使用的是Oracle的JDK1.8。1. 下载安装JDK2. 配置环境变量3. 验证JDK是否安装成功echo $JAVA_HOME 和java -version命令查看JDK的版本信息,若二者的信息一致,则证明JDK配置成功。4. 手动设置系统默认JDK  通常系统默认的jdk为openjdk,在这里需要手动修改系统默认的JDK为我们上文安装的JDK。  在终端依次输入以下命令:sudo update-alternative

2021-01-20 15:22:12 152

原创 linux中vim: command not found

bash vim: command not found 1.查看系统是否安装完整vim 2.安装vim 3. 我的解决过程 这个问题首先就是vim是否安装解决问题步骤:1.查看系统是否安装完整vim执行一下命令:rpm -qa|grep vim1如果已经正确安装的话,会显示如下三行:vim-enhanced-7.0.109-7.el5vim-minimal-7.0.109-7.el5vim-common-7.0.109-7.el5.

2021-01-19 14:56:15 145

原创 ERROR---Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64安装时网卡没有打开

entOS7中运行yum安装命令时出现以下错误: Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock32 error was14: curl#6 - "Could not resolve host: mirrorlist.centos.org; Unknown error" One of the configured ..

2021-01-19 14:48:47 171

原创 hdfs学习总结

2021-01-14 17:03:14 152

原创 Linux网络编程——浅谈 TCP 三次握手和四次挥手

三次握手在 TCP/IP 协议中,TCP 协议提供可靠的连接服务,采用三次握手建立一个连接。第一次握手:建立连接时,客户端发送 syn 包(syn=j)到服务器,并进入 SYN_SEND 状态,等待服务器确认;第二次握手:服务器收到 syn 包,必须确认客户的 SYN(ack=j+1),同时自己也发送一个 SYN 包(syn=k),即 SYN+ACK 包,此时服务器进入 SYN_RECV 状态;第三次握手:客户端收到服务器的 SYN+ACK 包,向服务器发送确认包 ACK(ack=k+1..

2021-01-14 14:47:45 64

原创 linux防火墙

一、iptables防火墙1、基本操作# 查看防火墙状态service iptables status# 停止防火墙service iptables stop# 启动防火墙service iptables start# 重启防火墙service iptables restart# 永久关闭防火墙chkconfig iptables off# 永久关闭后重启chkconfig iptableson  2、开启80端口vim /et...

2021-01-12 16:32:25 6121

原创 对象(java bean)与xml之间的转换(Xstream)

一、前言之前在做一个微信公众号的项目,项目中有用到一种技术,将调用接口后返回的xml字符串转换为对象(java bean),个人觉得这种方式还是蛮好用的,所以在这里分享下。二、引入jar包我是采用的maven项目,所以直接引入依赖就可以了: <dependency> <groupId>com.thoughtworks.xstream</groupId> <artifactId>xstream</...

2021-01-12 14:59:42 309

原创 Java 使用Graphics2D图片上写字,计算宽和高 以及字体的位置

如上图,这个是一个有中文与英文的字符串。 中文与英文字符的宽高是不一样的,如果想要生成一张宽高刚的图片,这样我就需要计算每一个字符的宽度,及合适的高;java.awt.FontMetrics 这个类对文字的宽高位置有详细的介绍;计算使用字体的一段字符串的宽publicstaticintgetWordWidth(Fontfont,Stringcontent){FontDesignMetricsmetrics=FontDesignMetrics.getM...

2021-01-08 15:09:32 1590

原创 mysql this is incompatible with sql_mode=only_full_group_by

解决方案,修改mysqlmy.cnf/重启就可以sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

2021-01-04 16:16:54 64

原创 java后台生成图片(加载外部字体)

Java后台生成图片:自定义图片内文字和图片位置。 可背景透明。 字体尺寸、颜色、间距等基本设置和透明度设置。 文本换行与居中。 加载外部字体。原理使用java图形化工具绘制图片。 代码实现创建所需参数的实体类import lombok.Data;import java.awt.*;import java.awt.image.BufferedImage;/** * 生成图片参数控制 * * @author h * @date Created in 202

2021-01-01 21:34:11 626

原创 ubuntu mysql group by 问题

错误:[Err] 1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated colum原因是 mysql5.7以上 sql_mode默认有ONLY_FULL_GROUP_BY ,可以使用show variables like '%sql_mode%'查看sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO..

2020-12-30 16:26:41 115

原创 mysql 时间函数

日期 d 今天是星期几,1 星期日,2 星期一,以此类推SELECT WEEK('2020-12-26 11:11:11');日期 d 是星期几,0 表示星期一,1 表示星期二SELECT WEEKDAY("2020-12-26 11:11:11");计算起始日期 d 加上 n 天的日期SELECT ADDDATE("2020-12-26", INTERVAL 10 DAY);返回当前日期SELECT CURDATE();返回当前日期SELECT CURRENT_DATE();

2020-12-26 16:57:49 58

原创 linux系统修改系统时间

linux系统含两种时间,一种是系统时间,另一种是硬件时间。date命令将日期设置为2020年12月07日---- date -s 12/07/20将时间设置为14点20分50秒---- date -s 14:20:50将时间设置为2014年6月18日14点16分30秒(MMDDhhmmYYYY.ss)---- date 0618141614.30hwclock/clock 命令查看、设置硬件时间设置硬件时间:hwclock --set --date="0...

2020-12-26 15:47:01 323

原创 设计模式之代理模式

代理模式就是给一个对象提供一个代理,并由代理对象控制对原对象的引用。它使得客户不能直接与真正的目标对象通信。代理对象是目标对象的代表,其他需要与这个目标对象打交道的操作都是和这个代理对象在交涉。代理对象可以在客户端和目标对象之间起到中介的作用,这样起到了的作用和保护了目标对象的,同时也在一定程度上面减少了系统的耦合度。代理模式包含如下角色:Subject: 抽象主题角色Proxy: 代理主题角色RealSubject: 真实主题角色public static String ht..

2020-12-25 17:46:45 56

原创 建造者模式

@Data@AllArgsConstructor@Builder(toBuilder ==true)@NoArgsConstructorpublic class UserInfo { private String name; private String email; private Money price;}@Builder注解赋值新对象UserInfo userInfo = UserInfo.builder() .name("zzl")...

2020-12-25 15:37:13 53

原创 java 调试filecoin,实现地址生成,签名交易

本文实现filecoin的地址生成,交易签名。1.springboot pom引入类库 <dependencies> <dependency> <groupId>org.bitcoinj</groupId> <artifactId>bitcoinj-core</artifactId> <version>0.14.7</version> &l..

2020-12-22 14:39:59 1493 1

原创 服务器备份mysql

currentpath=/home/sqlbackupbackpath="newfeeling"function makedir(){echo $(date "+%Y-%m-%d %H:%M:%S")if [ -d $currentpath/$(date +%y%m%d) ]; thenecho "$(date +%y%m%d) is exsit"elsemkdir $currentpath/$(date +%y%m%d)echo "$(date +%y%m%d) is.

2020-12-18 17:47:44 73 1

原创 ubuntu 后台定时任务执行数据备份

crontab -l 查看后台定时任务crontab -e 编辑定时任务*/10 * * * * nohup /home/sqlbackup/sqlbackup.sh >> /home/sqlbackup/out.log 2>&1 &同步其他服务器(142.411.121.457)数据 sh脚本#!/bin/bashcurrentpath=/home/backup/mokezipbackuptime=30backpath="moke"...

2020-12-18 17:46:34 193 1

原创 Scp全量远程拷贝(推送、拉取)

Linux scp 命令用于 Linux 之间复制文件和目录。scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。scp 是加密的,rcp是不加密的,scp 是 rcp 的加强版。语法scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file][-l limit] [-o ssh_option] [-P port] [-S program][[us.

2020-12-18 14:35:31 441

原创 ubuntu 18.04 安装 LNMP

1、安装 nginxsudo apt install nginx确认:查看端口netstat -anp |grep 80或者sudo lsof -i:80 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME nginx 1750 root 6u IPv4 22825 0t0 TCP *:http (LISTEN) nginx 1750 root 7u IPv6 2

2020-12-18 12:04:52 108

原创 二分法

二分查找又称折半查找,查找效率不错适用场景:顺序存储结构且按有序排列,这也是它的缺点。public static void main(String[] args) { int[] array ={}; for(int i =0;i<100000;i++){ array = add(array,(int)(Math.random()*1000)+1); System.out.println(array[i]+"i="+i); }

2020-12-17 17:44:14 103

原创 归并排序 详解

算法复杂度:O(nlogn);也许有很多同学说,原来也学过很多O(n^2)或者O(n^3)的排序算法,有的可能优化一下能到O(n)的时间复杂度,但是在计算机中都是很快的执行完了,没有看出来算法优化的步骤,那么我想说有可能是你当时使用的测试用例太小了,我们可以简单的做一下比较:当数据量很大的时候 nlogn的优势将会比n^2越来越大,当n=10^5的时候,nlogn的算法要比n^2的算法快6000倍,那么6000倍是什么概念呢,就是如果我们要处理一个数据集,用nlogn的算法要处理一天的话,.

2020-12-17 16:23:27 188

原创 高快省的排序算法

有没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”啦!光听这个名字是不是就觉得很高端呢。假设我们现在对“6 1 2 7 9 3 4 5 10 8”这个10个数进行排序。首先在这个序列中随便找一个数作为基准数(不要被这个名词吓到了,就是一个用来参照的数,待会你就知道它用来做啥的了)。为了方便,就让第一个数6作为基准数吧。接下来,需要将这个序列中所有比基准数大的数放在6的右边,比基准数小的数放在6的左边,类似下面这种排列:3 1 2 5 4 6 9 7 10 8在初始状态下,数字6在序列

2020-12-16 19:52:34 326

原创 数据结构学习总结

第一是线性表(Linear List)。顾名思义,线性表就是数据排成像一条线一样的结构。每个线性表上的数据最多只有前和后两个方向。其实除了数组,链表、队列、栈等也是线性表结构。而与它相对立的概念是非线性表,比如二叉树、堆、图等。之所以叫非线性,是因为,在非线性表中,数据之间并不是简单的前后关系。...

2020-12-16 16:32:41 347

空空如也

空空如也

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

TA关注的人

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