自定义博客皮肤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)
  • 收藏
  • 关注

原创 修改idea下的maven repository总是变成默认的问题?

解决方式很简单,只需要将maven->conf-seting.xml下的local repostory 修改成你自己的创建的仓库位置即可。

2020-01-10 16:26:22 1843

转载 关于java线程锁synchronized修饰普通方法与静态方法的区别

最近研究线程方面问题,关于这个synchronized锁修饰的问题,先是修饰普通方法,然后通过两个线程,各自执行自己对象的锁,发现方法执行互不影响,代码如下:  private static int num=0;  private synchronized void printNum(String tag){    try {    if(tag.equals("a")){      num=...

2019-09-03 21:26:24 343

转载 left join,rigth join和inner join的区别比较

inner join 与 left join 之间的区别  关于inner join 与 left join 之间的区别,以前以为自己搞懂了,今天从前端取参数的时候发现不是预想中的结果,才知道问题出在inner join 上了。需求是从数据库查数据,在前端以柱形图的形式展现出来,查到的数据按行业分组,显示每个行业的户数及户数占比,涉及到的字段有A表的用户数、总用户数和B表的行业名称。本来是...

2019-09-03 11:16:06 554

转载 mysql是怎么实现四种隔离级别的

1.为什么要有隔离级别?MySQL是一个服务器/客户端架构的软件,对于同一个服务器来说,可以有若干个客户端与之连接,每个客户端与服务器连接上之后,就可以称之为一个会话(Session)。我们可以同时在不同的会话里输入各种语句,这些语句可以作为事务的一部分进行处理。不同的会话可以同时发送请求,也就是说服务器可能同时在处理多个事务,这样子就会导致不同的事务可能同时访问到相同的记录。我们前边说过事务...

2019-09-02 21:29:42 1539 5

转载 彻底让你明白 Integer 类和 int 基本数据类型的区别

浅谈 Integer 类目录1、Integer 类简介 2、Integer 类和 int 的区别 3、Integer 的自动拆箱和装箱   ①、自动装箱   ②、自动拆箱 4、回顾开头的问题 5、测试突然发现自己对Integer i = 10;这种语法不太明白,于是乎有了这篇文章,那么在讲解 Integer 之前,我们先看下面这段代码: publi...

2019-08-02 19:21:32 6490 6

原创 重写equals()必须重写hashCode()

如果不被重写(原生Object)的hashCode和equals是什么样的? 不被重写(原生)的hashCode值是根据内存地址换算出来的一个值。 不被重写(原生)的equals方法是严格判断一个对象是否相等的方法(object1 == object2)。为什么需要重写equals和hashCode方法? 在我们的业务系统中判断对象时有时候需要的不是一种严格意义上的...

2019-08-02 19:19:49 314

转载 十道海量数据处理面试题与十个方法大总结

第一部分、海量数据处理面试题1、海量日志数据,提取出某日访问百度次数最多的那个IP。算法思想:分而治之+Hash1.IP地址最多有2^32=4G种取值情况,所以不能完全加载到内存中处理;2.可以考虑采用“分而治之”的思想,按照IP地址的Hash(IP)%1024值,把海量IP日志分别存储到1024个小文件中。这样,每个小文件最多包含4MB个IP地址;3.对于每一个小文件,可以构建一个...

2019-08-01 15:42:45 121

转载 Redis缓存雪崩、缓存穿透、热点Key解决方案和分析

今天又学到了很多,感觉雪崩和穿透很有意思理解起来也比较清晰,然后我搜索了一些资料,给自己做一个普及我们通常使用缓存 + 过期时间的策略来帮助我们加速接口的访问速度,减少了后端负载,同时保证功能的更新缓存穿透缓存系统,按照KEY去查询VALUE,当KEY对应的VALUE一定不存在的时候并对KEY并发请求量很大的时候,就会对后端造成很大的压力。(查询一个必然不存在的数据。...

2019-08-01 11:37:41 137

转载 如何设计一个系统的 Redis 缓存以提高吞吐量和防止缓存雪崩?

对于一个业务复杂、高并发和大流量的系统,缓存是重要组成部分,提升系统性能的主要方式之一就是缓存。它可以挡掉大部分的数据库访问的冲击,如果没有它,系统很可能会因为数据库不可用导致整个系统崩溃。缓存带来了另外一些棘手的问题:数据的一致性和实时性。例如,数据库中的数据状态已经改变,但是在页面上看到的仍然是缓存的旧值,直到缓冲时间失效之后,才能重新更新缓存。这个问题怎么解决?还有缓存数据如果没...

2019-08-01 11:36:31 416

转载 Spring实现事务的方式

Spring 并不直接支持事务,只有当数据库支持事务时,Spring 才支持事务,Spring 只不过简化了开发人员实现事务的步骤。 Spring 提供了两种方式实现事务:声明式和编程式如何选择当需要用到事务操作的地方很少的时候,那么就可以使用编程方式 TransactionTemplate,它不会建立很多事务代理。但是,如果程序中用到大量的事务操作,声明式事务方式更适合,它使得事...

2019-07-30 22:24:38 1766

转载 细说Spring--AOP详解(AOP概览)

链接:https://blog.csdn.net/q982151756/article/details/80513340

2019-07-18 21:44:14 227

转载 类加载,双亲委派机制

一、什么是类加载机制?虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。二、类加载的时机类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准(Preparation)、解析(Resolution)、初始化...

2019-07-18 21:42:13 147

转载 第一范式、第二范式、第三范式、BC范式

1.1第一范式(1NF)无重复的列所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。在第一范式(1NF)中表的每一行只包含一个实例的信息。简而言之,第一范式就是无重复的列。数据库表中...

2019-07-16 19:34:19 4201 1

转载 Redis为什么这么快?几种IO的介绍

redis单线程问题单线程指的是网络请求模块使用了一个线程(所以不需考虑并发安全性),即一个线程处理所有网络请求,其他模块仍用了多个线程。1.为什么说redis能够快速执行(1) 绝大部分请求是纯粹的内存操作(非常快速)(2) 采用单线程,避免了不必要的上下文切换和竞争条件(3) 非阻塞IO - IO多路复用2. redis的内部实现内部实现采用epoll,采...

2019-07-15 16:37:18 998

转载 JAVA中IO技术:BIO、NIO、AIO

1、同步异步、阻塞非阻塞概念 同步和异步是针对应用程序和内核的交互而言的。阻塞和非阻塞是针对于进程在访问数据的时候,根据IO操作的就绪状态来采取的不同方式,说白了是一种读取或者写入操作函数的实现方式,阻塞方式下读取或者写入函数将一直等待,而非阻塞方式下,读取或者写入函数会立即返回一个状态值。 由上描述基本可以总结一句简短的话,同步和异步是目的,阻塞和非阻塞是实现方式。...

2019-07-12 15:52:59 100

转载 线程间的通信、同步方式与进程间通信方式

1、线程间的通信方式使用全局变量 主要由于多个线程可能更改全局变量,因此全局变量最好声明为volatile 使用消息实现通信 在Windows程序设计中,每一个线程都可以拥有自己的消息队列(UI线程默认自带消息队列和消息循环,工作线程需要手动实现消息循环),因此可以采用消息进行线程间通信sendMessage,postMessage。1)定义消息#define WM_THREAD_S...

2019-07-10 14:51:58 153

转载 用户态与内核态的切换与区别

内核态和用户态的区别当一个任务(进程)执行系统调用而陷入内核代码中执行时,我们就称进程处于内核状态。此时处理器处于特权级最高的(0级)内核代码。当进程处于内核态时,执行的内核代码会使用当前的内核栈。每个进程都有自己的内核栈。当进程在执行用户自己的代码时,则称其处于用户态。即此时处理器在特权级最低的用户代码中运行。当正在执行用户程序而突然中断时,此时用户程序也可以象征性地处于进程的内核态。因...

2019-07-10 14:44:34 963

原创 java中的接口和抽象类

java的三大特性:封装、继承、多态。问题一:为什么要设计接口和抽象类?接口:官方解释:Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。接口可以理解为一种特殊的类,里面全部是由全局常量和公共的抽象方法所组成。接口是解决Java无法使用多继承的一种手段,但...

2019-07-04 23:01:34 189

转载 Java中String类的内存分配- JDK1.7

1. 物理的内存是线性结构,并不存在拥有不同功能的不同区域。 编译器(或者JVM)为了更高效地处理数据,会用不同的算法把内存分为各种区域,不同的区域拥有各自的特性,Java中,内存 可以分为栈,堆,静态域和常量池等。(可能有不同的叫法,但逻辑是一致的)2. 不同内存区域的功能和特点: 栈区:存放局部变量(变量名,对象的引用等)特点:内存随着函数的调用而开辟,随着函数调...

2019-07-04 16:38:35 488

转载 Java类加载机制

Java 类加载机制(阿里面试题)-何时初始化类(1)可以不可以自己写个String类答案:不可以,因为 根据类加载的双亲委派机制,会去加载父类,父类发现冲突了String就不再加载了;(2)能否在加载类的时候,对类的字节码进行修改答案:可以,使用Java探针技术,可以参考:Java探针-Java Agent技术-阿里面试题阅读目录 什么是类加载器 类加载器与类...

2019-07-04 15:09:07 114

转载 volatile和synchronized的区别

首先需要理解线程安全的两个方面:执行控制和内存可见。执行控制的目的是控制代码执行(顺序)及是否可以并发执行。内存可见控制的是线程执行结果在内存中对其它线程的可见性。根据Java内存模型的实现,线程在具体执行时,会先拷贝主存数据到线程本地(CPU缓存),操作完成后再把结果从线程本地刷到主存。synchronized关键字解决的是执行控制的问题,它会阻止其它线程获取当前对象的监控锁,这样就...

2019-06-24 22:03:51 124

原创 https和http的主要区别

HTTPS和HTTP的区别主要如下:1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进...

2019-06-20 20:37:29 264

转载 dubbo实现原理介绍

一、什么是dubboDubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看, Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色。关于注册中心、协...

2019-05-21 16:22:25 520

转载 GC面试问题

众所周知,在C++,内存的管理是程序员的任务,包括对象的创建和回收(内存的申请和释放),而在java中,我们可以通过以下四种方式创建对象(面试考点): new关键字创建对象 clone方法克隆产生对象 反序列化获得对象 通过反射创建对象 而在java中对象的回收主要是GC完成:GC会在合适的时间被触发,完成垃圾回收,将不需要的内存空间回收释放,避免无限制的内...

2019-05-17 19:03:56 385

原创 Redis为什么快

Redis有多快?Redis采用的是基于内存的采用的是单进程单线程模型的KV 数据库,由C语言编写,官方提供的数据是可以达到100000+的QPS(每秒内查询次数)。这个数据不比采用单进程多线程的同样基于内存的 KV 数据库 Memcached 差!为什么这么快?1、完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。数据存在内存中;2、数据结构简单,对数据操作也简单,Redi...

2019-05-14 16:36:43 857 2

原创 Redis的哨兵机制 或者心跳机制 Redis常考的面试题

一.什么是哨兵机制?答:Redis的哨兵(sentinel) 系统用于管理多个 Redis 服务器,该系统执行以下三个任务: 监控(Monitoring): 哨兵(sentinel) 会不断地检查你的Master和Slave是否运作正常。 提醒(Notification):当被监控的某个 Redis出现问题时, 哨兵(sentinel) 可以通过 API 向管理员或...

2019-05-08 15:24:02 7460 7

原创 Redis数据备份与恢复

Redis的两种持久化机制 Redis支持RDB和AOF两种持久化机制,持久化功能有效的避免因进程退出造成的数据丢失问题。Redis是基于内存的数据库,持久化是把内存中的数据写入到磁盘中的操作。这样当redis重新启动时便从磁盘中加载以前的数据。提供了内存数据持久化到文件的两种方式:一种是...

2019-04-29 22:06:49 260

原创 java创建多线程的四种方式及其区别

java创建多线程有如下四种方式:继承Thread类创建线程 实现Runnable接口创建线程 使用Callable和Future创建线程 使用线程池创建(使用java.util.concurrent.Executor接口)下面分别介绍这四种创建多线程的方式1. ----------------------继承Thread类创建线程------------------------...

2019-04-26 18:35:25 8380 1

原创 常用的七种线程池

常见的七种线程池:(1)newSingleThreadExecutor():单个线程的线程池,即线程池中每次只有一个线程工作保证所有任务按照指定顺序执行(FIFO,LIFO,优先级),单线程串行执行任务。(2)newFixedThreadPool():创建一个定长的线程池,每提交一个任务就占用一个线程。直到线程池的最大数量,然后后面进入队列的就得在空出线程之前一直等待。(3)newCa...

2019-04-26 16:19:20 2493

转载 分库分表?如何做到永不迁移数据和避免热点?sharding-jdbc 和 mycat

一、前言中大型项目中,一旦遇到数据量比较大,小伙伴应该都知道就应该对数据进行拆分了。首先介绍一下常用的分库分表策略:水平分表:把一个表拆分按某个字段拆分成多个表 (比如按照ID将原表拆成多个表)垂直分表:把表的大字段,并且不是经常查询,单独的放入到一张表去(这样也便于建立索引)水平分库方式主要根据用户属性(比如市里面的县分别放到不同的库中)拆分物理数据库。垂直分库方式:根据业务维...

2019-04-24 14:52:40 1637

原创 JDK1.7和JDK1.8中的HashMap源码比较

(1)执行put(K key,V value)操作时的比较:JDK1.7中的源码如下public V put(K key, V value) { if (table == EMPTY_TABLE) { inflateTable(threshold); } if (key == null) //...

2019-04-22 16:30:58 194

原创 Windows7安装多个版本的JDK,切换不成功的问题解决

电脑里安装了jdk-8u40-windows-x64以及jdk-7u72-windows-i586两个版本的JDK,先前一直使用1.8版本的JDK,最近由于项目需要,需要切换为JDK1.7。其实切换不同版本的JDK,操作起来非常简单,不需要更改先前的Path和ClassPath里的内容,只需要将JAVA_HOME中值换为你需要使用的JDK版本的安装路径。两个JDK安装路径:C:\Pro...

2019-02-18 19:30:36 686

原创 class path resource [SpringMvc.xml] cannot be opened because it does not exist

在做SSM整合的时候,tomcat服务器一启动就报如下的错误,意思是找不到路径下的文件资源,如下是我的工程框架图  下面是我的Web.xml中的配置明明已经配置了SpringMvc.xml,却提示没有该文件, 但这些文件不能在任意的地方,必须使用build path 放到指定的位置才可以访问到。步骤:选中项目=>(右键)properties=>Java ...

2019-01-21 13:21:05 3714 1

原创 pip 安装.whl文件

参见网址https://www.lfd.uci.edu/~gohlke/pythonlibs/,基本上包含了常用的pythonlib各个版本。下载本机机器上的python使用的对应版本的lib,切到下载位置,使用命令(以安装matplotlib 为例):pip  install  ./matplotlib-2.2.3-cp36-cp36m-win32.whl 即可很快完成安装...

2019-01-18 14:58:01 22915

原创 Windows下安装XGBoost依赖包遇到的问题总结

1、在pycharm中导入xgboost模块出错:给出的提示是没有使用正确的pip版本进行安装。这是你有两种方式去查看本机的pip版本。第一种(第二种是使用命令行直接安装,由于无法使用Pycharm直接安装XGBoost,所以下面的安装也是使用命令行进行的)是直接使用Pycharm的terminal(pycharm中进入view-->Tool windows-->Ter...

2019-01-02 20:58:33 1016

原创 java输出对象类总是为内存地址

在使用hibernate做简单的Query接口测试的时候,遇到了查询完毕之后,只是输出表中数据的内存地址,要想输出为每一条数据,可以在表对应的JavaBean中添加toString()方法,这样便可以将数据以map的形式输出。...

2018-12-16 14:58:07 2373

转载 **【深入理解JVM】:Java内存模型JMM**

多任务和高并发的内存交互多任务和高并发是衡量一台计算机处理器的能力重要指标之一。一般衡量一个服务器性能的高低好坏,使用每秒事务处理数(Transactions Per Second,TPS)这个指标比较能说明问题,它代表着一秒内服务器平均能响应的请求数,而TPS值与程序的并发能力有着非常密切的关系。物理机的并发问题与虚拟机中的情况有很多相似之处,物理机对并发的处理方案对于虚拟机的实现也有相当大的...

2018-12-16 14:55:20 167

原创 配置fastDFS服务器之后,原来的Centos的IP地址失效问题解决

在配置fastDFS之后,更改了虚拟机的虚拟网络编辑器中的网络连接方式为NAT,子网地址也更改为了fastDFS所在的IP地址范围,原来的CentOS系统的IP发生了变化,无法使用原来的IP地址连接该系统。解决方法很简单启动CentOS,选择在终端打开,输入ifconfig查看当前的IP地址,输入新的ip,建立新的连接,就可以通过远程工具连接该系统了。同时使用命令/zkServer.sh star...

2018-12-02 20:28:59 789

原创 使用网上搭建好的fastDFS服务器时报connect timed out错误解决

为了解决电商的高并发问题,Maven工程创建采用的是基于SOA的架构。SOA:Service Oriented Architecture面向服务的架构。也就是把工程拆分成服务层、表现层两个工程。中间通过Dubbo分布式服务框架实现连接。由于将工程进行了拆分,原来将工程部署到一个服务器上,现在需要部署到多个服务器上。我们可能将资源上传到一台服务器上,为了在其它服务器上访问到,并能很好地解决存...

2018-12-02 19:07:11 2991 2

原创 解决org.hibernate.exception.ConstraintViolationException: could not execute statement 的问题

今天在使用Hibernate做级联删除的时候,总是报 org.hibernate.exception.ConstraintViolationException: could not execute statement 的问题,字面意思是约束关联异常,查看控制台输出的数据库执行语句,发现每次都执行到查找客户,然后更新操作,但不执行删除操作。通过查看数据库表的列属性定义,发现级联表中的与主表关联的外键...

2018-10-15 22:23:18 5182

空空如也

空空如也

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

TA关注的人

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