自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Content-Disposition实现预览

java web中下载文件时,我们一般设置Content-Disposition告诉浏览器下载文件的名称,是否在浏览器中内嵌显示.Content-disposition:inline; filename=foobar.pdf表示浏览器内嵌显示一个文件Content-disposition:attachment; filename=foobar.pdf表示会下载文件,如火狐浏览器中spring mvc中Java代码@ResponseBody @Re...

2021-07-15 17:50:22 2166 1

原创 挡板数据

挡板数据就是为了模拟真实的网络请求 ,而编写的假数据,这种数据虽然是编写出来的,但是符合真实环境中的数据格式。这种数据一般存储在程序的本地,然后直接从本地调用后看显示和相关逻辑是否正常,如果正常 ,那么就说明当接入正常环境后仍然可以正常的运行。...

2020-08-29 10:34:58 966

转载 redis数据类型应用场景

MySql+Memcached架构的问题  实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的不断增加,和访问量的持续增长,我们遇到了很多问题:  1.MySQL需要不断进行拆库拆表,Memcached也需不断跟着扩容,扩容和维护工作占据大量开发时间。  2.Memcached与MySQL数据库数据一致性问题。  3.Memcached数据命中率低或down机,大量访问直接穿透到DB,MySQ

2020-07-17 19:22:30 195

转载 Kafka整理一

1.Kafka 的设计时什么样的呢?Kafka 将消息以 topic 为单位进行归纳将向 Kafka topic 发布消息的程序成为 producers.将预订 topics 并消费消息的程序成为 consumer.Kafka 以集群的方式运行,可以由一个或多个服务组成,每个服务叫做一个 broker.producers 通过网络将消息发送到 Kafka 集群,集群向消费者提供消息2.数据传输的事物定义有哪三种?数据传输的事务定义通常有以下三种级别:(1)最多一次: 消息不.

2020-07-12 18:34:10 162

转载 redis面试题

1. Redis和MySQL的区别?a).mysql是关系型数据库,而redis是NOSQL,非关系型数据库。mysql将数据持久化到硬盘,读取数据慢,而redis数据先存储在缓存中,读取速度快,但是保存时间有限,最后按需要可以选择持久化到硬盘。b).mysql作为持久化数据库,每次访问都要在硬盘上进行I/O操作。频繁访问数据库会在反复连接数据库上花费大量时间。redis则会在缓存区存储大量频繁访问的数据,当浏览器访问数据的时候,先访问缓存,如果访问不到再进入数据库.2.Redis的五大数据类型?

2020-07-12 15:21:32 121

转载 redis集群方案

edis有三种集群方式:主从复制,哨兵模式和集群。1.主从复制主从复制原理:从服务器连接主服务器,发送SYNC命令; 主服务器接收到SYNC命名后,开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令; 主服务器BGSAVE执行完后,向所有从服务器发送快照文件,并在发送期间继续记录被执行的写命令; 从服务器收到快照文件后丢弃所有旧数据,载入收到的快照; 主服务器快照发送完毕后开始向从服务器发送缓冲区中的写命令; 从服务器完成对快照的载入,开始接收命令请求...

2020-07-12 14:55:48 83

转载 理解数据库悲观锁和乐观锁

悲观锁当我们要对一个数据库中的一条数据进行修改的时候,为了避免同时被其他人修改,最好的办法就是直接对该数据进行加锁以防止并发。这种借助数据库锁机制在修改数据之前先锁定,再修改的方式被称之为悲观并发控制(又名“悲观锁”,Pessimistic Concurrency Control,缩写“PCC”)。之所以叫做悲观锁,是因为这是一种对数据的修改抱有悲观态度的并发控制方式。我们一般认为数据被并发修改的概率比较大,所以需要在修改之前先加锁。悲观并发控制实际上是“先取锁再访问”的保守策略,为数据处理

2020-07-12 14:00:08 302

转载 ThreadLocal在多线程下保证数据安全

1)ThreadLocal是干什么的多线程访问同一个共享变量的时候容易出现并发问题,特别是多个线程对一个变量进行写入的时候,为了保证线程安全,一般在访问共享变量的时候需要进行额外的同步措施才能保证线程安全性。ThreadLocal是除了加锁这种同步方式之外的另一种保证多线程访问变量时的线程安全的方法;如果每个线程对变量的访问都是基于线程自己的变量这样就不会存在线程不安全问题。在Java的多线程编程中,为保证多个线程对共享变量的安全访问,通常会使用synchronized来保证同一时刻只有一个线程对共

2020-07-10 16:35:22 1151

转载 简单理解多线程ThredaLocal

要了解ThreadLocal,首先搞清楚ThreadLocal 是什么?是用来解决什么问题的?ThreadLocal 是线程的局部变量, 是每一个线程所单独持有的,其他线程不能对其进行访问, 通常是类中的 private static 字段,是对该字段初始值的一个拷贝,它们希望将状态与某一个线程(例如,用户 ID 或事务 ID)相关联我们知道有时候一个对象的变量会被多个线程所访问,这时就会有线程安全问题,当然我们可以使用synchorinized 关键字来为此变量加锁,进行同步处理,从而限制只能有一个

2020-07-10 16:00:11 127

转载 ThreadLocal 与 Synchronized

相同:ThreadLocal和线程同步机制都是为了解决多线程中相同变量的访问冲突问题。不同:Synchronized同步机制采用了“以时间换空间”的方式,仅提供一份变量,让不同的线程排队访问;而ThreadLocal采用了“以空间换时间”的方式,每一个线程都提供了一份变量,因此可以同时访问而互不影响。以时间换空间->即枷锁方式,某个区域代码或变量只有一份节省了内存,但是会形成很多线程等待现象,因此浪费了时间而节省了空间。以空间换时间->为每一个线程提供一份变量,多开销一些内存,但是呢线程不用

2020-07-10 15:41:10 153

转载 为什么单例模式使用双重检验锁

/*** 单例模式-双重校验锁* @author szekinwin**/public class SingleTon3 { private SingleTon3(){}; //私有化构造方法 private static volatile SingleTon3 singleTon=null; public static SingleTon3 getInstance(){ //第一...

2020-07-10 14:22:39 2081 1

转载 简单理解阻塞Io和非阻塞io

https://www.kancloud.cn/lengyueguang/linux/1201612

2020-07-10 11:56:07 716

转载 微服务下的分布式事务

不同于单一架构应用(Monolith), 分布式环境下, 进行事务操作将变得困难, 因为分布式环境通常会有多个数据源, 只用本地数据库事务难以保证多个数据源数据的一致性. 这种情况下, 可以使用两阶段或者三阶段提交协议来完成分布式事务.但是使用这种方式一般来说性能较差, 因为事务管理器需要在多个数据源之间进行多次等待. 有一种方法同样可以解决分布式事务问题, 并且性能较好, 这就是我这篇文章要介绍的使用事件,本地事务以及消息队列来实现分布式事务.我们从一个简单的实例入手. 基本所有互联网应用都会有用户注

2020-07-08 19:24:05 159

转载 索引用到B+树

在进一步分析为什么MySQL数据库索引选择使用B+树之前,我相信很多小伙伴对数据结构中的树还是有些许模糊的,因此我们由浅入深一步步探讨树的演进过程,在一步步引出B树以及为什么MySQL数据库索引选择使用B+树!学过数据结构的一般对最基础的树都有所认识,因此我们就从与我们主题更为相近的二叉查找树开始。一、二叉查找树(1)二叉树简介:二叉查找树也称为有序二叉查找树,满足二叉查找树的一般性质,是指一棵空树具有如下性质:1、任意节点左子树不为空,则左子树的值均小于根节点的值;2、任意节点右子

2020-07-05 21:15:09 581

转载 数据库索引理解

本文来自一位不愿意透露姓名的粉丝投稿,由Hollis整理并"还原"了面试现场。相信很多人对于MySQL的索引都不陌生,索引(Index)是帮助MySQL高效获取数据的数据结构。因为索引是MySQL中比较重点的知识,相信很多人都有一定的了解,尤其是在面试中出现的频率特别高。楼主自认为自己对MySQL的索引相关知识有很多了解,而且因为最近在找工作面试,所以单独复习了很多关于索引的知识。但是,我还是图样图森破,直到我被阿里的面试官虐过之后我才知道,自己在索引方面的知识,只是个小学生水平。以下,是我

2020-07-05 21:11:22 165

原创 spring事务的理解

一、事务的基本原理Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的。对于纯JDBC操作数据库,想要用到事务,可以按照以下步骤进行:1.获取连接 Connection con = DriverManager.getConnection()2.开启事务con.setAutoCommit(true/false);3.执行CRUD4.提交事务/回滚事务 con.commit() / con.rollback();5.关闭连接 conn.clos

2020-07-05 20:12:35 426

转载 Spring ioc整理

将SpringIOC相关知识点整理了一遍,要想知道哪些知识点是比较重要的。很简单,我们去找找相关的面试题就知道了,如果该面试题是常见的,那么说明这个知识点还是相对比较重要的啦!1什么是spring?Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。2使用Spring框架的好处是什么?轻量:Spring 是轻

2020-07-05 17:15:02 94

转载 JVM整理

前言总结了JVM一些经典面试题,分享出我自己的解题思路,希望对大家有帮助,有哪里你觉得不正确的话,欢迎指出,后续有空会更新。1.什么情况下会发生栈内存溢出。思路: 描述栈定义,再描述为什么会溢出,再说明一下相关配置参数,OK的话可以给面试官手写是一个栈溢出的demo。我的答案:栈是线程私有的,他的生命周期与线程相同,每个方法在执行的时候都会创建一个栈帧,用来存储局部变量表,操作数栈,动态链接,方法出口等信息。局部变量表又包含基本数据类型,对象引用类型如果线程请求的栈深度大于虚拟机所允许的最

2020-07-05 15:34:57 103

转载 redis持久化

1、Redis和memched有什么区别?为什么单线程的Redis比多线程的Memched效率要高?区别:数据支持类型:Redis:String(字符串):key-value 类型Hash(哈希):字典(hashmap) Redis的哈希结构可以使你像在数据库中更新一个属性一样只修改某一项属性值List(列表):实现消息队列Set(集合):利用唯一性Sorted Set(有序集合):可以进行排序 可以实现数据持久化Bitmaps(位图)HyperLogLog、Geo(

2020-06-26 11:17:18 96

转载 Mybatis相关总结

Mybatis 技术内幕系列博客,从原理和源码角度,介绍了其内部实现细节,无论是写的好与不好,我确实是用心写了,由于并不是介绍如何使用 Mybatis 的文章,所以,一些参数使用细节略掉了,我们的目标是介绍 Mybatis 的技术架构和重要组成部分,以及基本运行原理。博客写的很辛苦,但是写出来却不一定好看,所谓开始很兴奋,过程很痛苦,结束很遗憾。要求不高,只要读者能从系列博客中,学习到一点其他博客所没有的技术点,作为作者,我就很欣慰了,我也读别人写的博客,通常对自己当前研究的技术,是很有帮助的。尽管

2020-06-25 20:27:44 129

原创 Mysql相关面试

https://www.cnblogs.com/wangzhengyu/p/10412499.htmlhttps://www.cnblogs.com/xiaozhaung/p/10872056.htmlhttps://www.cnblogs.com/lijiasnong/p/9963905.htmlhttps://blog.csdn.net/qq_34988624/article/details/85838900

2020-06-25 14:29:38 61

转载 线程池创建方式及线程池原理

https://www.cnblogs.com/jxxblogs/p/11655670.htmlhttps://www.cnblogs.com/spec-dog/p/11149741.html

2020-06-25 11:17:13 84

转载 什么是GC

GC是什么?为什么要有GC? 答:GC是垃圾收集的意思,内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。Java程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一:System.gc() 或Runtime.getRuntime().gc() ,但JVM可以屏蔽掉显示的垃圾回收调用。 垃圾回收可

2020-06-15 17:09:04 563

原创 Map总结

面试总结:①HashMap的工作原理HashMap基于hashing原理,我们通过put()和get()方法储存和获取对象。当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bucket位置来储存值对象。当获取对象时,通过键对象的equals()方法找到正确的键值对,然后返回值对象。HashMap使用链表来解决碰撞问题,当发生碰撞了,对象将会储存在链表的下一个节点中。 HashMap在每个链表节点中储存键值对对象。当两个不同的键对象的ha

2020-06-11 18:52:31 186

转载 字符串常量池

https://www.cnblogs.com/niew/p/9597379.html

2020-06-11 15:23:19 81

转载 finally详解

https://www.cnblogs.com/superFish2016/p/6687549.html

2020-06-11 14:55:36 326

转载 手写rpc框架

https://www.jianshu.com/p/096dbda7d528常用的rpc框架:https://blog.csdn.net/u013952133/article/details/79256799前言在微服务当道的今天,分布式系统越来越重要,实现服务化首先就要考虑服务之间的通信问题。这里面涉及序列化、反序列化、寻址、连接等等问题。不过,有了 RPC 框架,我们就无需苦恼。...

2019-12-27 14:43:52 190

转载 有关netty

基础TCP和UDP的区别? TCP是面向连接的(在客户端和服务器之间传输数据之前要先建立连接),UDP是无连接的(发送数据之前不需要先建立连接) TCP提供可靠的服务(通过TCP传输的数据。无差错,不丢失,不重复,且按序到达);UDP提供面向事务的简单的不可靠的传输。 UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性比较高的通讯或广播通信。随着网速的提高,UDP使...

2019-12-24 15:47:31 92

转载 安装nginx用到./configure --prefix 命令是什么意思?

安装nginx教程:https://www.cnblogs.com/xxoome/p/5866475.html源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装(makeinstall)。Configure是一个可执行脚本,它有很多选项,在待安装的源码路径下使用命令./configure–help输出详细的选项列表。其中--prefix选项是配置安装的路径...

2019-12-21 18:41:47 8096

转载 mysql \G 查询技巧

在Mysql的命令行工具里面给select查询加入一个\G参数。横向的表结构会转为使用纵向表结构输出,利于阅读。(1)select * from deal; ---横行输出 (2) select * from deal \G ; ---纵向输出...

2019-12-21 14:08:28 374

转载 Linux常用命令:chmod修改文件权限

常用下面这条命令:chmod 777文件或目录示例:chmod777 /etc/squid 运行命令后,squid文件夹(目录)的权限就被修改为777(可读可写可执行)。如果是Ubuntu系统,可能需要加上sudo来执行:sudo chmod777 /etc/squid故事的开始,都会先留一个悬念。只有程序员能懂的冷笑话系列中,有个比较经典的段子:请用最简洁...

2019-12-20 14:57:47 701

转载 Linux查询和设置环境变量

Linux的变量种类按变量的生存周期来划分,Linux变量可分为两类:1 永久的:需要修改配置文件,变量永久生效。2 临时的:使用export命令声明即可,变量在关闭shell时失效。设置变量的三种方法1 在/etc/profile文件中添加变量【对所有用户生效(永久的)】用VI在文件/etc/profile文件中增加变量,该变量将会对Linux下所有用户有效,并且是“永久...

2019-12-20 14:13:29 93

转载 linux 安装Python3

linux 安装Python31.python下载请在终端输入如下命令:cd /homewget http://cdn.npm.taobao.org/dist/python/3.6.5/Python-3.6.5.tgz说明:这句话的作用主要是用wget软件(初学者请自行了解次软件,以后会经常用到)从一个指定的URL下载文件。其格式为:wget 空格 URL地址。而下载目录...

2019-12-20 11:37:21 61

原创 TCP的三次握手和四次挥手

用网络抓包工具wiresharkwireshark介绍tcp短连接和长连接:当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,连接的建立是需要三次握手的,而释放则需要4次挥手,所以说每个连接的建立都是需要资源消耗和时间消耗的示意图: ...

2019-12-16 09:21:37 93

转载 网络传输中available的用法

在处理文件输入流时,通过调用available()方法来获取还有多少字节可以读取,根据该数值创建固定大小的byte数组,从而读取输入流的信息。 FileInputStream fi = new FileInputStream("C:/Users/Administrator/Desktop/yy.txt"); //1. read() 逐字节读取/* int i = 0; ...

2019-12-11 10:30:05 1806

转载 Redis cli

redis cli命令redis安装后,在src和/usr/local/bin下有几个以redis开头的可执行文件,称为redis shell,这些可执行文件可做很多事情。可执行文件 作用 redis-server 启动redis redis-cli redis命令行工具 redis-benchmark 基准测试工具 redis-check-aof...

2019-12-09 17:13:12 81

原创 Socket长连接

package com.iot.home.gatewaymgmt.tcp.client.socket;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.Socket;import java.util.Timer;import java.u...

2019-12-08 10:14:34 124

原创 Maven打包过滤

http://www.360doc.com/content/15/0123/10/20466010_443036304.shtmlhttps://blog.csdn.net/yy193728/article/details/72847122构建项目时可能会遇到在测试(如单元测试)、开发、模拟、生产等不同环境下需要不同配置(properties、xml)或资源(jpg、png、mp3)...

2019-11-29 14:14:13 263

原创 基础面试(一)

2019-11-26 09:39:03 63

转载 数据库索引的原理

https://www.cnblogs.com/aspwebchh/p/6652855.htmlhttps://blog.csdn.net/chai471793/article/details/99563704

2019-11-18 14:37:30 62

空空如也

空空如也

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

TA关注的人

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