• maven 仓库(本地仓库,私服,远程仓库)
  • Maven 仓库的分类:maven的仓库只有两大类:1.本地仓库 2.远程仓库,在远程仓库中又分成了3种:2.1 中央仓库 2.2 私服 2.3 其它公共库1.本地仓库,顾名思义,就是Maven在本地存储构件的地方。注:maven的本地仓库,在安装maven后并不会创建,它是在第一次执行maven命令的时候才被创建maven本地仓库的默认位置:无论是Windows还是Linux,在用户的目录下都有一个.m2/repository/的仓库目录,这就是Maven仓库的默认位置如何更改maven默认的...
  •  2020-07-17  |    程成  |    51  |    0  |    Java  |   maven  仓库  私服  
  • log4j详细介绍
  • log4j是什么* Apache的开源项目log4j是一个功能强大的日志组件(框架),提供方便的日志记录。日志的作用1. 第一用途:编写程序的时候,进行调试。    类似于:大家使用System.out.print()来调试代码2. 第二用途:项目上线(商业运行),查看系统的运行状态3. 日志是用来记录信息的,比如服务器的日志主要是用来记录一些访问信息,以便出现状况时,可以根据日志来判断原因。聊聊System.out.print()的缺陷1. 过于简单,只...
  •  2020-07-17  |    程成  |    53  |    0  |    Java  |   log4j  slf4j  门面  日志  
  • Spring声明式事务管理与配置详解
  • 1、Spring声明式事务配置的五种方式  前段时间对Spring的事务配置做了比较深入的研究,在此之前对Spring的事务配置虽说也配置过,但是一直没有一个清楚的认识。通过这次的学习发觉Spring的事务配置只要把思路理清,还是比较好掌握的。  总结如下:  Spring配置文件中关于事务配置总是由三个组成部分,分别是DataSource、TransactionManager和代理机制这三部分,无论哪种配置方式,一般变化的只是代理机制这部分。  DataSource、TransactionMa...
  •  2020-07-17  |    程成  |    67  |    0  |    Java  |   声明  事务  spring  配置  
  • java类路径中的classpath到底是什么
  • java项目中的classpath到底是什么在java项目中,你一定碰到过classpath,通常情况下,我们是用它来指定配置/资源文件的路径。在刚开始学习的时候,自己也糊里糊涂,但是现在,是时候弄清楚它到底是指什么了。顾名思义,classpath就是class的path,也就是类文件(*.class的路径)。一谈到文件的路径,我们就很有必要了解一个java项目(通常也是web项目)它在真正运行时候,这个项目内部的目录、文件的结构;这样,我们才好分析、理解classpath。开发时期的web项目...
  •  2020-07-17  |    程成  |    52  |    0  |    Java  |   类路径  classpath  java  
  • Maven 构建生命周期
  • Maven 构建生命周期定义了一个项目构建跟发布的过程。一个典型的 Maven 构建(build)生命周期是由以下几个阶段的序列组成的:阶段处理描述验证 validate验证项目验证项目是否正确且所有必须信息是可用的编译 compile执行编译源代码编译在此阶段完成测试 Test测试使用适当的单元测试框架(例如JUnit)运行测试。包装 package打包创建JAR/WAR包如在 pom.xml 中定义提及的包检查 verify检查对集成测试的结果进行检查,以保证质量达标安装 install安装...
  •  2020-07-17  |    程成  |    49  |    0  |    Java  |   Maven  生命周期  
  • 缓存淘汰算法--LRU算法
  • 一个用hash表作为底层结构的数据库,当然少不了缓存淘汰算法。LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。1、新数据插入到链表头部;2、每当缓存命中(即缓存数据被访问),则将数据移到链表头部;3、当链表满的时候,将链表尾部的数据丢弃。过程如下:1、最开始时,内存空间是空的,因此依次进入A、B、C是没有问题的2、当加入D时,就出现了问题,内存空间不够了,因此根据LRU算法,...
  •  2020-06-15  |    程成  |    115  |    1  |    其他  |   LRU  算法  缓存淘汰  
  • Redis 的操作为什么是的原子性的详解
  • 原子性原子性是数据库的事务中的特性。在数据库事务的情景下,原子性指的是:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。对于Redis而言,命令的原子性指的是:一个操作的不可以再分,操作要么执行,要么不执行。Redis操作原子性的原因Redis的操作之所以是原子性的,是因为Redis是单线程的。由于对操作系统相关的知识不是很熟悉,从上面这句话并不能真正理解Redis操作是原子性的原因,进一步查阅进程与线程的概念及其区别。进程与线程进程计算机中...
  •  2020-06-15  |    程成  |    119  |    0  |    数据库  |   redis  原子性  事务  
  • 阻塞与非阻塞的区别
  • 简单点说:阻塞就是干不完不准回来,   非阻塞就是你先干,我现看看有其他事没有,完了告诉我一声我们拿最常用的send和recv两个函数来说吧...比如你调用send函数发送一定的Byte,在系统内部send做的工作其实只是把数据传输(Copy)到TCP/IP协议栈的输出缓冲区,它执行成功并不代表数据已经成功的发送出去了,如果TCP/IP协议栈没有足够的可用缓冲区来保存你Copy过来的数据的话...这时候就体现出阻塞和非阻塞的不同之处了:对于阻塞模式的socket s...
  •  2020-06-15  |    程成  |    140  |    0  |    其他  |   阻塞  区别  
  • java异常 java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
  • 错误的原因是因为缺少slf4j日志组件jar包造成的,slf4j是一个开源的日志组件,和log4j类似,都是用来记录日志的开源组件。    SLF4J,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统。按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统。    实际上,SLF4J所提供的核心API是一些接口以及一...
  •  2020-06-13  |    程成  |    144  |    0  |    Java  |   异常  Java  error  
  • MAC使用homeBrew安装Redis
  • 一般买了macbook第一件事就是把homeBrew和iterm2装上,它们俩的组合可以实现绝大多数的软件安装。网上有很多教程安装它们的,关于homeBrew的操作命令如下:brew search **  //查找某个软件包brew list  //列出已经安装的软件的包brew install ** //安装某个软件包,默认安装的是稳定版本brew uninstall **/...
  •  2020-06-13  |    程成  |    128  |    0  |    数据库  |   Mac  Redis  homeBrew  启动  
  • Java中堆内存和栈内存详解
  • Java把内存分成两种,一种叫做栈内存,一种叫做堆内存在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。堆内存用于存放由new创建的对象和数组。在堆中分配的内存,由java虚拟机自动垃圾回收器来管理。在堆中产生了一个数组或者对象后,还可以在栈中定义一个特殊的变量,这个变量的取值等于数组或者对象在堆内存中的首...
  •  2020-06-13  |    程成  |    124  |    0  |    Java  |   Java  堆内存  栈内存  
  • Servlet——ServletContext 对象
  • ServletContext提两个问题:1.大家在访问某个网站的时候,往往都会看到网站的首页面显示您是第几位浏览者(网站计数器),这是怎么实现的?2.我们在访问某个bbs网站的时候,往往会显示有多少人在线,这是怎么实现的?可能我们会想到的常规实现思路:数据库或者文件。这种做法比较简单,但是却会对数据库或者文件访问过于频繁,开销比较大。解决之道是用ServletContext什么是ServletContext要理解ServletContext就必须和Cookie、Session做一个对比,如下图:...
  •  2020-06-12  |    程成  |    128  |    0  |    Java  |   ServletContext  Servlet  
  • 进程和线程、协程的区别
  • 现在多进程多线程已经是老生常谈了,协程也在最近几年流行起来。python中有协程库gevent,go里面的goroutine也是一个非常棒的协程库。本文主要介绍进程、线程和协程三者之间的区别。概念进程进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,也是基本的执行单元,是操作系统结构的基础。每个进程都有自己的独立内存空间,不同进程通过进程间通信来通信。由于进程比较重量,占据独立的内存,所以上下文进程间的切换开销(栈、寄存器、虚拟内存、文件句...
  •  2020-06-12  |    程成  |    136  |    0  |    其他  |   进程  协程  线程  
  • Java并发编程:volatile关键字解析
  • volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。  volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先来了解一下与内存模型相关的概念和知识,然后分析了volatile关键字的实现原理,最后给出了几个使用vol...
  •  2020-06-12  |    程成  |    140  |    0  |    Java  |   并发  volatile  Java