- 博客(54)
- 收藏
- 关注
原创 缓存基础----LRU算法和FIFO算法的Java实现
Java里面实现LRU缓存算法的通常有两种选择,一种是自己设计数据结构:链表+HashMap(链表用来表示位置,哈希表用来存储和查找),另一种是使用Java中的LinkedHashMap。我们这边文章是使用Java的LinkedHashMap来实现缓存的LRU算法和FIFO算法。一、LinkedHashMap实现缓存LRU算法LinkedHashMap有两种数据的存储方式,一种是按照数据的添加顺序存储,另一种是按照数据的访问顺序存储,默认情况下是按照数据的添加顺序存储的。即最近读取的数据放在链表头部
2021-07-02 15:21:06
717
1
原创 缓存基础----缓存数据淘汰策略
目录一、FIFO算法二、LFU算法三、LRU算法四、Twoqueues(2Q)算法不管是本地缓存还是分布式缓存,为了保证系统的高性能和高可用,都是使用内存来存储数据的。随着时间的推移,缓存的数据越来越多,由于成本和内存的限制,当存储的数据超过缓存最大容量时,需要对缓存的数据进行淘汰。常用的缓存淘汰策略有FIFO(先进先出算法)、LFU(Least Frequently Used)、LRU(Least Recently Used)等。一、FIFO算法FIFO(First in F.
2021-06-29 17:08:22
822
原创 缓存基础----本地缓存、分布式缓存以及多级缓存
像MySql等传统的关系型数据库已经不能适用于所有的业务场景,比如电商系统的秒杀场景,APP首页的访问流量高峰场景,很容易造成关系型数据库的瘫痪,随着缓存技术的出现很好的解决了这个问题。一、缓存的概念(什么是缓存)缓存就是把访问量较高的热点数据从传统的关系型数据库中加载到内存中,当用户再次访问热点数据时是从内存中加载,减少了对数据库的访问量,解决了高并发场景下容易造成数据库宕机的问题。二、为什么要用缓存(为什么要用redis作为缓存)针对于这个问题要从两个方面去考虑,一个是应用系统的高并发.
2021-06-28 17:53:51
7254
3
原创 CentOS 7.6 安装Redis-----单机版
redis的底层是用C语言来编写的,安装redis需要先从官网下载源码然后进行编译,源码编译的时候依赖gcc环境,所以安装redis的前提条件是检查Linux系统中有没有安装gcc环境。1、通过rpm命令检查有没有安装gcc:rpm -qa|grep gcc查询结果如下:上图说明系统中已经安装好了gcc的环境,也就是说centos 7.6的系统环境自带gcc环境。2、进入admin目录,创建redis文件夹cd /home/admin/# 创建redis文件夹mkdi.
2021-05-18 17:29:48
404
原创 mysql 数据库group by 面试题(一)
目录一、什么是Group By以及用法有哪些二、查询语句中select from where group by having order by的执行顺序三、group by基础面试题举例关于mysql的group by关键字大家一定不陌生,在平时的开发过程中经常会用到mysql的group by分组的用法,用来获取数据表中以分组字段作为依据统计数据。下面我们通过一个面试题对group by进行一个简单的了解。一、什么是Group By以及用法有哪些group by通俗一点的讲就是通过
2021-03-01 14:34:27
2130
4
原创 Centos8系统安装jdk1.8并配置全局环境变量
在Linux系统中安装jdk可以通过yum命令安装,也可以从官网上下载.tar.gz安装包进行安装,这篇文章则是通过第二种方式进行安装的。1、从官网上下载jdk-8u221-linux-x64.tar.gz安装包存到本地,如下图:我这里是之前下载过安装包,拿过来直接使用就行。2、通过xshell5登录到Linux系统终端,进入到安装目录,命令如下:cd /usr/local/然后创建java文件夹,用来存放jdk安装包,命令如下:mkdir java3、将下载好的jdk安
2020-12-20 21:52:21
8281
原创 Git三种方法从远程仓库拉取指定的某一个分支
目录一、git clone 命令获取二、git fetch 命令获取三、 git checkout -b 命令获取平时在做项目的时候,我们很多时候都是使用Git来管理我们项目代码的版本。当从远程仓库拉取代码的时候一般都是使用git clone <url>命令来获取,这样我们是将项目整个都克隆到我们本地仓库,并且分支还是主分支maser。当然有时候我们只需拉取远程仓库指定的某一个分支,那么用git命令该怎么拉取指定某一个分支呢?下面楼主记录了三种方法供大家参考。一、git cl
2020-11-30 21:08:18
168103
4
原创 eclipse安装mybatis generator插件,自动生成实体类、mapper接口和SQL XM文件
目录一、什么是MyBatis逆向工程?二、mybatis generator插件暗转过程一、什么是MyBatis逆向工程?平时在开发项目的时候,数据持久层经常会用到mybatis框架来操作数据库,sql语句需要程序员自己去编写,这样就浪费了一部分没有必要的时间了。不过mybatis官方是提供逆向工程,简单理解的话就是,mybatis通过mybatis generator插件针对数据库单表生成mybatis执行时所需要的代码,比如:mapper.java、mapper.xml、pojo等,有效
2020-09-02 15:56:36
1741
原创 关于mysql 中schema的相关操作
一、mysql中schema指的是什么?在mysql中基本认为schema和数据库(database)是相同的,也就是说schema名称和数据库实例的名称是相同的,一个数据库只拥有一个schema。但是其他数据库产品会有所不同,在oracle数据库中,schema是数据库database的一部分。二、关于schema和数据库database的sql语句操作1.查看数据库SHOW DATABASES;2.创建数据库CREATE DATABASE db_name; //db_name为
2020-08-28 10:52:41
8955
原创 spring mvc注解@RequestMapping的作用及属性
目录一、@RequestMapping注解的作用是什么?二、@RequestMapping注解的属性有哪些?一、@RequestMapping注解的作用是什么?@RequestMapping注解是web应用程序中最常被用到的注解之一,作用就是映射URL路径,将http的请求地址映射到控制器(controller)类的处理方法上。 @RequestMapping注解可以定义在控制器类上,也可以定义在类里面的方法上。 定义类上:将http请求映射到该控制器上,规定初步的请...
2020-08-24 14:35:58
16690
原创 Java集合中HashMap、TreeMap和HashTable区别是什么?
一、说到三者的区别首先要说一下集合和数组的区别是什么:1.长度上的区别:集合的长度是可变的,而数组的长度是不可变;2.内容上的区别:数组可以是基本数据类型的数据,也可以是引用数据类型的数据;而集合只能是引用数据类型数据;3.元素内容上的区别:数组只能存储同一种数据类型;而集合可以存储不同数据类型(其实集合一般情况下也是存储同一种数据类型);二、Java集合常见的接口和实现类有哪...
2020-04-17 12:56:41
3781
1
原创 java的jdk和jre有什么区别
1、JDK是Java开发工具包(java Development Kit)的缩写,是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的。JDK包含了JRE,同时还包含了编译java源码的编译器javac;还包含了很多java程序调试和分析的工具:jconsole,jvisualvm等工具软件,还包含了java程序编写所需的文档和demo例子程序;它提供了Java的开发环境...
2020-04-16 23:22:54
955
原创 spring boot 面试题(一)
1.什么是spring boot?Spring Boot 是Spring开源组织下的子项目,是spring组件一站式的解决方案;它主要是简化了spring框架的使用难度,简化了繁重的配置,提供了各种各样的启动器,使得开发者能快速上手。spring boot是spring发展到一定程度的产物,spring boot并不是spring的替代品,spring boot是为了程序猿们能更好的使用spr...
2020-04-08 17:22:16
463
原创 spring boot 2.X 实现自定义拦截器
一、什么是拦截器 拦截器是spring aop思想的一种体现和运用,底层通过动态代理模式完成;拦截器不依赖于servlet容器,依赖于web框架,由于拦截器是基于web框架的调用,因此可以使用spring的依赖注入(DI)获取IOC容器中的各个bean;可以用来拦截一些非法的Action请求,或者是对Action请求进行一些预处理和请求后的一些处理等,使得我们业务更加符合实际需求,...
2020-03-15 16:28:02
797
原创 spring boot 的yml配置文件定义list集合、数组和map以及使用中出现的错误
1. 在平时的yml配置文件中,我们经常使用到配置基本数据类型的字符串,比如配置日志文件的写法如下:# 配置日志输出级别logging: # 指定logback配置文件的位置 config: classpath:logback-spring.xml # 文件日志要输出的路径 path: E:/logs/springboot_server # 日志的输出级别 lev...
2020-03-13 15:22:05
53257
4
原创 spring boot 2.x 加载配置文件的几种方式详解
在平时做项目的时候经常会用到一些配置文件的信息,那么spring boot是如何去加载这些配置文件,并且获取到相应的值呢?下面说一下我了解到的几种方式: (1) 通用的environment类加载; (2)通过@value注解的方式加载; (3)通过创建配置信息类去加载配置文件信息;一、通过environment类加...
2019-06-15 18:54:38
3287
原创 解决通过startup.bat脚本启动tomcat时,cmd命令窗口闪现问题!
1.说明:在eclipse集成开发环境中启动tomcat是没有问题的,我用的tomcat的版本是tomcat-8.5.27; 出现的问题是在Tomcat的解压目录的bin文件夹中,通过startup.bat脚本启动Tomcat时,命令窗口闪现; 2.首先我们需要了解的是通过startup.bat启动tomcat时的流程是:startup.bat--->Catalina.bat--->
2018-01-28 21:30:17
10006
原创 报错:The Apache Tomcat installation at this directory is version 8.5.27. A Tomcat 8.0 installation is
今天在eclipse中配置tomcat时,遇到了一个报错,如下所示: 这里我的Tomcat的版本是8.5.27,报这个错的原因是ellipse里面限制Tomcat的最高版本是8.0的,我用的tomcat的版本明显高于eclipse的要求;具体的改法如下: 1.首先找到Tomcat的本地安装路径; 2.然后找到lib文件夹中的Catalina.jar包,用解压软件打开这个j
2018-01-28 14:34:30
48123
27
原创 spring aop 报错:Caused by: java.lang.IllegalArgumentException: error at ::0 formal unbound in pointcut
刚把上一个aop bug解决了,继续下一步,又出错了,调了一天的bug,不过收获还是很大的,对spring aop有了更深的了解! 这次出的错误代码如下:org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userService' defined in file [
2018-01-23 18:22:26
4583
1
原创 spring aop Caused by: java.lang.IllegalArgumentException: Pointcut is not well-formed: 报错
最近这几天在公司研究spring aop(面向切面编程),在使用spring 注解实现时,遇到了一个bug,由此记录一下,方便日后读阅;报错如下图所示: 由于是第一次接触spring aop 当时就懵逼了,在网上搜索相关的错误,最后找到了自己的问题出在哪里; 我这里出错的原因是因为在使用注解定义切面对象的切入点时,没有使用spring aop中的 execution()的表达式导致出
2018-01-23 15:28:25
1015
原创 java笔试面试题--int数组的默认值
1.今天在面试的时候遇到一个程序题,代码如下: public class test2{ public static void main(String[] args) { int[] arr=new int[5]; //给数组成员赋值 arr[0]=2; arr[3]=5; for (int i = 0; i < arr.length; i++) {
2017-10-16 17:06:35
16278
4
原创 java如何实现一个字符串的反转和替换
一、java字符串的反转 1.利用java字符串的拼接实现字符串的反转,代码如下:public static String reverse(String s){ int len=s.length(); String str=""; for (int i = 0; i < len; i++) { //charAt()返回指定索引处的 char 值。索引范围
2017-10-14 14:17:45
9811
原创 java的变量类型
一.首先我们应该知道类体是由哪几部分构成: 1. 类是由定义的变量和定义的方法(一个类可以有多个方法)构成; java语言支持的变量有两种,一种是成员变量(成员变量也就是我们所说的全局变量),一种是局部变量; 成员变量:在类里面定义的变量,在整个类里都有效,都可以被访问; 局部变量:在类的方法、构造方法或者语句块里面定义的变量,只在所
2017-10-13 18:00:07
312
1
原创 java中的基本数据类型
一.java的数据类型有两种:基本数据类型(也称作内置数据类型)、引用数据类型; 基本数据类型:它可以分成三大类八种,分别是:数值型(byte、short、int、long、float、double)、字符型(char)、布尔型(boolean)三类,而数值型又可以分为整数类型(byte、short、int、long)和浮点数类型(float、double)。 引用数据类型:
2017-10-12 13:44:42
291
原创 json字符串转换成json数组并遍历属性值
方法一:使用Iterator迭代器遍历取值 public class Test{ /** * @param args */ @SuppressWarnings("rawtypes") public static void main(String[] args) { String json = "[{'day1':'work','day2':26},{'day1':
2017-05-29 14:04:13
8808
原创 java 发送http协议的POST请求获取数据
在项目的时候用到了第三方提供的http接口去获取数据库里的数据,并且使用POST方法请求,具体实现代码如下: 1.代码实现类 /** * @功能 http向指的URL发送POST请求 * @author you * @param method 请求方法,POST * @param url 请求的路径 * @return */
2017-05-29 13:45:51
3288
原创 java 从服务器下载文件并保存到本地
昨天在做一个项目时,用到了从服务器上下载文件并保存到本地的知识,以前也没有接触过,昨天搞了一天,这个小功能实现了,下面就简单的说一下实现过程; 1.基础知识 当我们想要下载网站上的某个资源时,我们会获取一个url,它是服务器定位资源的一个描述,下载的过程有如下几步: (1)客户端发起一个url请求,获取连接对象。
2017-05-28 10:33:55
75878
18
原创 java 下载文件报错:java.io.FileNotFoundException: d:\bd_logo1_31bdc765.png (拒绝访问。)
今天搞java下载文件并且保存到本地,运行的时候报了下面一个错误:将图片保存到d盘时拒绝访问 从网上查了一些资料,用了一下午的时间振宇解决了,也找到了出错的原因,出错原因是因为:FileOutputStream读取流时如果读取的是文件夹的目录就会报这个错误,正如我代码里面写的一样,如下: 这个错误的解决办法就是:在上面生成的文件夹目录后面加上
2017-05-27 19:01:10
3600
1
原创 jquery遍历从后台传过来的实体类list数组,并显示到jsp页面
今天在做一个小项目时,遇到了jquery遍历从后台传来的list数组问题,由于以前没有做过这方面的,就在网上查询了一下,做了如下总结: 一、后台传过来的数据格式如下 [{"askId":7,"timestart":"2017/05/11","timeend":"2017/05/14","askType":"事假","studentPhone":"18131371836",
2017-05-18 14:23:39
31770
原创 springSecurity源码分析---FilterInvocation类
最近在研究spring security时,发现程序中出现了如下一行代码: System.out.println("********************MySecurityFilter**********************"); FilterInvocation fi = new FilterInvocation(request, respo
2017-05-03 17:14:26
5560
原创 Log4j配置文件详解
一.Log4j简介Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局)。这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出。综合使用这三个组件可以轻松地记录信息的类型和级别,并可以在运行时控制日志输出的样式和位置。1、LoggersLoggers组件在此系统中被分为五个级别:DEBUG、INFO、WARN、ERRO
2017-03-20 21:19:55
341
原创 java 十六进制转化成十进制
问题描述 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。 注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。方法一:public class Test1{ /** * 十六进制转化成十进制 */ public static void main(String[] args) { Scanner sca
2017-03-04 21:43:34
1195
原创 parseInt()、valueOf()、toString()和intValue()的区别与联系
1.parseInt()方法: parseInt()就是把String类型转化为int类型,并且parseInt只接受string的参数; 如 String a= "123"; int b = Integer.parseInt(a); 这样b就等于123了。2.valueOf()方法: (1). valueOf(int i)
2017-03-03 21:08:55
1040
原创 java 16进制转换8进制
1.问题描述 给定n个十六进制正整数,输出它们对应的八进制数。2.输入格式 输入的第一行为一个正整数n (1 接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制 正整数,每个十六进制数长度不超过100000。3.输出格式 输出n行,每行为输入对应的八进制正整数。 注意: 输入的十六进制数不
2017-03-03 19:27:34
2000
原创 java中charAt()方法的使用
1.描述java.lang.String.charAt() 方法返回指定索引处的char值。索引范围是从0到length() - 1。对于数组索引,序列的第一个char值是在索引为0,索引1,依此类推2.声明 以下是声明java.lang.String.charAt()方法public char charAt(int index)3.参数in
2017-03-02 15:29:00
90652
2
原创 数列排序(数列的升序和降序)
一、问题描述: 给定一个长度为n的数列,将这个数列按从小到大的顺序排列或者按照从大到小的顺序排列; 在控制台输入一个整数n表示数列的长度;二、排序的实现方法: 1、数列的升序方法: Java的Arrays类中有一个sort()方法,该方法是Arrays类的静态方法,在需要对数组进行排序时经常用到此方法。 但是sort()的参数有好几种,下面我就为
2017-02-28 21:40:32
6642
转载 Arrays.sort排序方法以及Comparator和Comparable接口的作用
有的时候需要对数组里的element进行排序。当然可以自己编写合适的排序方法,但既然Java包里有自带的Arrays.sort排序方法,在数组元素比较少的时候为何不用? Sorting an Array 1. 数字排序 int[] intArray = new int[] { 4, 1, 3, -23 }; Arrays.sort(intArray); 输出: [-23, 1,
2017-02-28 12:21:15
5999
原创 序列求和,求1+2+3+.....+n的值
一、求1+2+3+.....+n的值,代码如下: 方法一: public class Main{ /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner Scanner=new
2017-02-27 17:18:08
2563
原创 java语言中,输入A,B输出A+B的值
问题如下:计算一对A、B的和或者计算多对A、B值的和;输入格式:输入的第一行包括两个数(即A,B对,中间用空格隔开),也可以在第一行输入多个A、B对;输出格式:对于输出的A、B中的和要与输入的A、B对一一对应,并且A+B独自占一行;1.每次只输入一对A、B时,代码如下:public class Main{ /** * @param args */
2017-02-19 20:28:26
22001
原创 while (n-- > 0) 的用法
今天写java算法的时候碰到了while (n-- > 0) 这个东东,瞬间迷惑了,然后找度年了解了一下它的意思是循环n次,除了最常用的 for (int i = 0; i 之外,还可以写 while (n-- > 0) {...} 和 while (--n >= 0) {...}。 写个随手笔记,不喜勿喷!!!
2017-02-19 20:09:37
14041
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人