- 博客(39)
- 收藏
- 关注
原创 Mysql 索引
MYSQL 官方对索引的定义为:索引(Index)是帮助 MySQL 高效获取数据的数据结构,所以说索引的本质是:数据结构常见的索引结构有: B 树, B+树和 Hash索引的优缺点优点索引大大减少了服务器需要扫描的数据量(提高数据检索效率)索引可以帮助服务器避免排序和临时表(降低数据排序的成本,降低CPU的消耗)索引可以将随机 I/O 变为顺序 I/O(降低数据库IO成本)缺点索引需要使用物理文件存储,也会耗费一定空间修改数据时,如有索引,需要操作索引树,影响到 SQL 执行
2022-02-08 15:35:54
754
原创 Mysql 基础
引子Mysql 用的还是特别多的,面试频次也很高,基本上是每面必问。而且比较集中于 索引、事务、优化 等方向。Mysql 引擎MyISAM 和 InnoDB 的区别?虽然我们一般使用的是 InnoDB 引擎,但是这个面试题也经常有人问。我们可以从以下几个方面回答:是否支持事务MyISAM 不提供事务支持。InnoDB 提供事务支持,具有 提交(commit) 和 回滚(rollback) 事务的能力。是否支持行级锁MyISAM 只有表级锁(table-level locking)。
2022-01-27 14:11:48
1320
原创 缓存的设计
引子面试时可能会被问到缓存设计相关的问题,如:为什么你们系统需要用缓存?使用缓存需要考虑哪些问题?怎么保证数据库缓存一致性的?缓存穿透?缓存击穿?缓存雪崩?为什么你们系统需要用缓存?高性能、高并发。高性能如果有这么个场景,一份数据需要聚合数据库的几个表的数据,并且需要还需要在代码中进行计算,可能获取这个数据的接口的性能就不会很高。每次获取都需要进行 Sql 查询和运算,是有很多重复计算的情况的,所以我们可以 空间换时间 ,将这个结果存起来,那么存到哪里呢,首选就是缓存了。之后如果是获
2022-01-27 10:20:55
1376
原创 Redis 实现消息队列
引子面试的时候你提到了,Redis 和 MQ,面试官可能会让你用 Redis 实现消息队列,一方面考察你 Redis 的掌握,又考察了你对 MQ 的理解。可谓 一箭双雕。消息队列消息队列在分布式系统中用途非常广泛。它具有 低耦合、可靠投递、广播、流量控制、最终一致性 等一系列功能。常见的 消息队列 有 RabbitMQ、RocketMQ、ActiveMQ、Kafka消息队列 是指利用 高效可靠 的 消息传递机制 进行与平台无关的 数据交流,并基于数据通信来进行分布式系统的集成。通过提供 消息
2022-01-24 17:21:40
2308
原创 Redis 实现分布式锁
引子面试官常会问,你在项目中使用了哪些技术,Mysql、Redis、MQ 等等。看到你说了 Redis,一开始可能会简单的考察你一下 Redis 的特性和一些相关基础知识,之后可能会问你你还用过 Redis 做过什么技术实现吗?这时候你可以讲讲用 Redis 实现分布式锁。分布式锁需要考虑哪些问题?分布式的概念相信大家都有自己的理解。锁,Java 中很多锁,synchronized 、ReentrantLock…为什么需要分布式锁呢,当服务集群部署下,Java 的锁只是锁了本机器下服务,但对于具体
2022-01-24 15:42:12
832
原创 Redis 基础
简要概述RedisRedis使用的是C语言开发,不同于传统数据库,Redis 的数据是在内存中的,可以叫它内存数据库。基于内存,所以读写非常快,一般用作服务中做缓存。Redis 还可以实现分布式锁: (后续文章会具体实现)单节点借用 setex 和 lua 表达式实现集群下使用官方的 RedLock成熟的组件 RedissonRedis还可以实现队列,使用 list 数据结构, lpush lpop 等 api。Redis 还支持事务 、持久化、Lua 脚本、多种集群方案。为什么选型 R
2022-01-21 17:44:14
607
原创 从零开始学数据结构与算法-八大排序算法(图解)
排序算法时间复杂度和空间复杂度通常,对于一个给定的算法,我们要做 两项分析。第一是从数学上证明算法的正确性,这一步主要用到形式化证明的方法及相关推理模式,如循环不变式、数学归纳法等。而在证明算法是正确的基础上,第二步就是分析算法的时间复杂度。度量一个程序的执行时间通常有两种方法:一、事后统计的方法二、事前分析估算的方法在各种不同算法中,若算法中语句执行次数为一个常数,则时间复杂度为O(1),另外,在时间频度不相同时,时间复杂度有可能相同,如T(n)=n2+3n+4与T(n)=4n2+2n+1它们
2020-05-13 14:50:58
4566
2
原创 从零开始学数据结构与算法-递归
递归递归是一种方法(函数)调用自己的编程技术。斐波那契数列public class TestFebonacci { public static void main(String[] args) { // 斐波那契数列: 1 1 2 3 5 8 13 System.out.println(febonacci(6)); } public static int febonacci(int i) { if (i == 1 || i == 2) { return 1; } re
2020-05-13 14:10:56
160
原创 从零开始学数据结构与算法-线性结构-链表
链表链表数据结构可能是继数组结构之后第二种使用广泛的数据结构,它可以取代数组,作为其他存储结构的基础,例如栈、队列,除非需要使用下标随机访问各个数据,否则多处都可以使用链表替代链接点(Link)在链表中,每个数据项都被包含在“链结点”(Link)中。一个链结点是某个类的对象,这个类可以叫做 Link。每个Link对象中都包含一个对下一个链结点引用的字段(通常叫做 next)Link类定义的一部分,它包含了一些数据和下一个链结点的引用。这种类的定义有时叫做“自引用”式,因为它包含了和自己类型相同的
2020-05-13 13:49:25
184
原创 从零开始学数据结构与算法-线性结构-栈、队列
栈栈只允许访问一个数据项,即最后插入的数据项。移除这个数据项才能访问倒数第二个插入的数据项。(后进先出)数组实现栈// 通过数组实现栈public class StackX { private int maxSize; private long[] stackArray; private int top; public StackX(int size) { maxSize = size; stackArray = new long[maxSize]; top = -1; }
2020-05-13 10:07:35
148
原创 从零开始学数据结构与算法-线性结构-数组
数组最熟知和最简单的线性结构那就是数组了。线性查找数组中的元素//线性查找数组中的元素public class TestSearch { public static void main(String[] args) { int[] array = new int[]{1, 2, 3, 4, 5, 6}; int target = 5; int index = -1; for (int i = 0; i < array.le
2020-05-12 11:47:14
173
原创 从零开始学数据结构与算法-概述
数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成的。数据的存储结构:顺序存储结构 – 数组就是顺序存储结构的典型代表。链式存储结构数据的逻辑结构:集合结构:集合关系就类似于数学中的集合线性结构:线性结构中的数据元素之间是一对一的关系树形结构:树形结构中的数据元素之间存在一种一对多的层次关系图形结构:图形结构的数据元素是多对多的关系算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方.
2020-05-12 10:58:55
182
原创 Spring-boot项目简单集成 ELK + Kafka (Windows 环境下)
前言:使用elk+kafka做日志归集,可以查看汇总日志,查看方便检索方便。避免了去一个个tomcat里面查看日志,而且要从头到尾去找自己所需要的信息。Spring-boot项目将产生的日志生产到 Kafka,Logstash 消费 Kafka 中的消息,再推给 Elasticsearch,最终使用 Kibana 查看日志。1.安装 ELK在上篇博客有简单步骤讲解,简单安装 elk (...
2018-11-27 16:34:14
1980
2
原创 简单安装 elk (Windows 环境)
前言:使用Spring-boot搭建集群之后,日志的归集十分不方便,而且以查看日志文件的方式无法进行有效的检索。后了解到elk做日志归集平台十分好用,故尝试集成试试效果。TX: 什么是ELK?简介:ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成: Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索...
2018-11-27 14:57:13
977
原创 Spring-boot下使用webSocket
WebSocket是HTML5开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。在WebSocket API中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。浏览器通过 JavaScript 向服务器发出建立 WebSocket 连接的请求,连接建立以后,客户端和服务器端就可以通过 TCP 连接直接交换数据。...
2018-08-20 11:11:44
2594
1
原创 windows下简单安装activemq
首先本地需要安装jdk并配置环境变量,博主安装的是jdk1.8。 官方下载地址:http://activemq.apache.org/download.html,博主安装的是 ActiveMQ 5.15.4 Release 下载之后解压到某目录: 进入到bin目录下: 可进入win32启动或者是win64,我启动的是win64目录下的 activemq.bat 启动完毕界面: ...
2018-08-02 16:01:08
867
原创 Spring-boot中简单操作activemq(生产者消费者代码)
pom.xml添加依赖:<!-- activemq --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId></dependency>
2018-08-02 16:00:08
3187
原创 springboot2.0集成mongodb配置附工具类
jar包依赖pom.xml:<!-- mongodb --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId></dep...
2018-07-30 16:37:26
7467
8
原创 Mongodb搭建主从备份(windows)
创建master.confdbpath = D:\mongodbCluster\9998 #主数据库地址port = 9998 #主数据库端口号bind_ip = 127.0.0.1 #主数据库所在服务器master = true #确定我是主服务器创建slave.confdbpath = D:\mongodbCluster\9999 #从数据库地址port = ...
2018-07-30 16:10:51
1177
原创 Mongodb基本操作
连接数据库创建数据库MongoDB 创建数据库的语法格式如下:use DATABASE_NAME要插入数据之后show dbs 才会显示数据库,即插入删除数据库MongoDB 删除数据库的语法格式如下:db.dropDatabase()为数据库创建一个用户> use testswitched to db test> db.cre...
2018-07-30 16:06:05
5327
原创 NodeJs操作Mongodb
创建数据库var mongoClient = require('mongoDB').MongoClient;var url = 'mongodb://localhost:27017/test';mongoClient.connect(url,function (err,db) { if(err){ console.log(err); } conso...
2018-07-30 15:23:13
613
原创 windows安装配置Mongodb
官网下载:https://www.mongodb.com/download-center?jmp=nav#atlascustomer选择 安装到指定路径 例:D:\MongoDB 配置环境变量path D:\MongoDB\bin 在D:\MongoDB目录下创建data文件夹,在data文件夹内创建db文件夹 cmd控制台进入D:\MongoDB\bin 输入mongod --db...
2018-07-30 15:09:06
205
原创 Spring-boot使用eclipse搭建项目(二)
在上篇博客《Spring-boot使用eclipse搭建项目(一)》中,我们已经搭建好一个spring-boot的初始项目结构,本节我们来丰富我们的项目。
2018-05-29 16:00:07
1841
原创 Spring-boot使用eclipse搭建项目(一)
开门见山:应用到的技术有spring-boot,mybatis,springmvc,mysql,thymeleaf。首先给自己的eclipse安装sts,传送门:https://blog.csdn.net/zhen_6137/article/details/793839411.创建spring-boot项目new project找到Spring Starter Project点击next之...
2018-05-29 15:59:54
4438
3
原创 NodeJs实现一个简易的WEB上传下载服务器
项目上的需求是集群均可生成PDF文件或是访问PDF文件,但是没有文件服务器,故做一个简易的文件服务器。解决方案:集群内的机器(客户端)生成PDF文件之后将PDF文件推给文件服务器,我们暂且称它为服务端;如果某个客户端需要访问到这个PDF文件,则去服务端获取(因为可能其他客户端已经生成了该PDF文件),如果没有找到,则自己客户端生成PDF文件,再将PDF文件推给服务端。为了实施简易,现采取NodeJ...
2018-04-13 15:45:44
4212
原创 定时任务分布式锁的一种实现(数据库锁)
在集群环境下,若每一台机器都运行一个定时任务,会导致生产数据一致性问题,所以必须要实现一个锁。保证当时任务在同一时间段只能在一台机器上面运行。定时任务实现方式很多种,比较常用的有quartz、TBSchedule等等。低版本的quartz无法满足多个不同的任务同时进行并且不并发执行,尝试了很久quartz还是放弃了。 换了一种思路,自己实现了一种数据库锁的机制,需要创建两张表,一张
2017-12-13 11:08:31
4378
原创 使用iText读取PDF文件
之前学习到了如何使用iText生成PDF文件,之后发现iText还提供了读取PDF的API,便尝试了写了个Demo.仅供参考。package com.java.inputPDF;import java.io.FileOutputStream;import java.io.IOException;import java.io.PrintWriter;import com.itex
2017-10-16 15:16:57
20350
3
原创 iText制作PDF文件 学习笔记 (七)
iText制作PDF文件 (七)图像和文本的绝对位置:之前我们添加文本、图片、段落、列表、表格等,均未涉及到布局问题,有时候我们不需要使用到这种自动的布局方式,有时候我们需要放置到特定的位置当中,这时候我们需要使用到PdfContentByte类。package com.java.pdf.seventh;import java.io.FileOutputStream;
2017-10-12 15:17:45
450
原创 iText制作PDF文件 学习笔记 (六)
iText制作PDF文件 (六)字体:在之前的学习中,生成PDF中无法显示出中文字符,本节加入字体,即可生成。详见代码:package com.java.pdf.sixth;import java.io.FileOutputStream;import com.itextpdf.text.Document;import com.itextpdf.text.Font;i
2017-10-11 15:57:50
344
原创 iText制作PDF文件 学习笔记 (五)
iText制作PDF文件 (五)图片:package com.java.pdf.fifth;import java.io.FileOutputStream;import com.itextpdf.text.Document;import com.itextpdf.text.Image;import com.itextpdf.text.PageSize;import co
2017-10-10 14:06:45
390
原创 iText制作PDF文件 学习笔记 (四)
iText制作PDF文件 (四)表格的制作:package com.java.pdf.fourth;import java.io.FileOutputStream;import com.itextpdf.text.BaseColor;import com.itextpdf.text.Document;import com.itextpdf.text.Element;i
2017-10-09 16:04:24
333
原创 iText制作PDF文件 学习笔记 (三)
iText制作PDF文件 (三)锚点、列表和注释锚点:package com.java.pdf.third;import java.io.FileNotFoundException;import java.io.FileOutputStream;import com.itextpdf.text.Anchor;import com.itextpdf.text.B
2017-10-09 11:30:41
315
原创 iText制作PDF文件 学习笔记 (二)
iText制作PDF文件(二)块、短句和段落:package com.java.pdf.second;import java.io.FileNotFoundException;import java.io.FileOutputStream;import com.itextpdf.text.BaseColor;import com.itextpdf.text.Chun
2017-09-28 16:37:25
739
原创 iText制作PDF文件 学习笔记 (一)
iText制作PDF文件简介:iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。 iText的安装非常方便,下载iText.jar文件后,只需要在系统的CLASSPATH中加入iText.jar的路径,在程序中就可以使用iText类库了。[摘
2017-09-28 14:56:57
620
原创 使用jQuery隐藏标签
隐藏:$.("#id").hide(); //不占位隐藏$.("#id").css("visibility","hidden"); //占位隐藏出现://与之对应的$("#id").show();$("#id").css("visibility","visible");
2017-09-28 09:27:28
5841
原创 多台应用同时操作一张表数据,解决并发问题
遇到的问题:多台应用部署调度任务,同时扫一张表的数据,并且对一张表的数据进行操作,可能出现的问题是一条数据被操作了两次,从而出现了并发性的问题。解决办法:从sql上解决问题,并且限制查询条数。例:假设三台应用部署调度任务。对数据表的主键取余,若是被除数配置为4,则所有的余数为0,1,2,3。所以需要保证每台应用所执行的sql里面刚好包含这4个数字。当然需要在程序里面根据配置文件
2017-09-20 16:13:51
18384
原创 使用JAVA代码通过SSH访问远程windows,获取磁盘信息
已知JAVA中的File类可以获取本机的计算机的磁盘存储信息,代码如:package com.java.test;import java.io.File;public class FileListen { public static void main(String[] args) { File file = new File("e:"); long totalSpa
2017-07-21 13:54:01
6645
1
原创 placeholder在IE8中不显示,一种解决办法
做的一个查询页面,在IE10的基础上做的,input标签用到了placeholder属性。将页面放到IE8去显示,placeholder属性失效了。从网上查找了很多方法,最终采取使用JS的方式解决了兼容的问题。HTML代码<input id="valiCode" class="aaa" type="text" placeholder="请输入验证码"onblur="if(this.v
2017-07-21 13:40:32
7481
2
原创 servlet接口,报文格式
使用servlet的方式作为接口服务端,以报文的格式传递数据。【1】首先写一个servletpackage ***; import java.io.IOException; import java.io.PrintWriter; import java.util.Map; import javax.servlet.ServletException; impo
2017-07-21 11:50:09
2326
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人