java
java
Brrby
这个作者很懒,什么都没留下…
展开
-
反射IntegerCache来动态修改Integer缓存池里的数值
a==1&&a==2&&a==3 一定是false?实验证明:通过反射动态修改IntegerCache的[-128, -127] 区间里的256个数字值可以使a==1&&a==2&&a==3变为true @Test public void t5() throws Exception { Class clazz=Integer.class.getDeclaredClasses()[0]; Field c = clazz.getDec原创 2021-06-28 16:52:19 · 320 阅读 · 2 评论 -
war包运行后产生的日志保存
现在有个war包:用rz命令上传到云服务器的/usr/local/src目录下后:建立两个.sh文件 :vi money_start.sh# money_start.sh内容如下#! /bin/bash#运行war包后把日志输入到这个目录下的money_666_log.txt里java -jar /usr/local/src/money_666.war >> /usr/local/src/money_666_log.txt &#运行好后把这个pid重定向输入到这原创 2021-04-16 17:25:57 · 1403 阅读 · 0 评论 -
图书查询系统
vue+springboot+axios+bootstrap+oracle图书查询系统图书查询系统springboot项目搭建好后:在pom.xml里添加ojdbc6<dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> <version>11.2.0.3</version></dependency>原创 2021-02-18 18:08:11 · 286 阅读 · 0 评论 -
javascript的三种循环写法
javascript的三种循环写法:普通遍历<script> let arr=[ {name:'小汉',age:18,sex:'男'}, {name:'大壮',age:16,sex:'男'}, {name:'小三',age:20,sex:'男'}, {name:'强强',age:22,sex:'男'} ] for(let i=0;i<arr.length;i++){ console.log(arr[i]); }</script>i原创 2020-10-27 10:06:36 · 630 阅读 · 0 评论 -
var、let、const
关于es5和es6的var、let、const在es5的时候,var是有一定缺陷的:代码块没有作用域<script> { var a='小汉'; } console.log(a);</script>if代码块没有作用域<script> var a; if(true){ var b='小汉'; a=function(){ console.log(b); } } b='小红'; a();</script&g原创 2020-10-25 02:01:35 · 95 阅读 · 0 评论 -
如何更新自己写的war包项目的内容
怎么更新war包里的内容如下图一个很简单的web项目的index.html只有一句话:"原来的网页"原创 2020-10-14 16:43:39 · 813 阅读 · 1 评论 -
Bootstrap
Bootstrap的基本使用官网下载网盘下载 ,提取码:8k0w➢ bootstrap.css:Bootstrap核心CSS库(bootstrap.min.css是经过压缩的最小化版本,map文件是CSS源码映射表,可以在某些浏览器的开发工具中使用)。➢ bootstrap-theme.css:Bootstrap主题相关的CSS库(bootstrap-theme.min.css是经过压缩的最小化版本,map文件是CSS源码映射表,可以在某些浏览器的开发工具中使用)。如果仅需要使用Bootstrap原创 2020-10-29 11:43:03 · 506 阅读 · 0 评论 -
jsp发ajax请求
jsp页面ajax请求判断数据库里是否存在用户配置yml:然后在pom文件中加入jsp的必要依赖: <!-- 连接oracle数据库的依赖 --> <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> <version>11.2.0.3</version> </depend原创 2020-09-14 17:33:04 · 4661 阅读 · 0 评论 -
html的ajax请求
页面中ajax发起请求,controller接收数据并处理这次ajax的测试以访问html的方式配置配置yml文件:然后在 src/main/webapp下创建一个html页面创建controller:运行项目就可以访问到index.html:引入jquery:修改index.html页面:<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Inse原创 2020-09-14 16:06:02 · 20955 阅读 · 2 评论 -
springBoot项目中运用jsp页面
关于springBoot项目的jsp页面访问创建springBoot项目后:然后在src/main/webapp目录下新建WEB-INF/jsp目录然后在pom文件中加入jsp的必要依赖: <!-- jsp必要依赖 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> </depend原创 2020-09-14 12:11:30 · 225 阅读 · 0 评论 -
rabbitMQ
RabbitMQRabbitMQ的安装RabbitMQ的安装对CentOS-7-1810-terminal的虚拟机进行克隆链接原创 2020-04-30 09:16:19 · 145 阅读 · 0 评论 -
stream流的介绍
Stream什么是Stream创建流的方式中间操作筛选与切片映射与排序什么是Stream流(Stream)是数据渠道,用于操作数据源(集合、数组等)所生成的元素序列。集合讲的是数据,流讲的是计算。!1.Stream自己不会存储元素。2.Stream不会改变源对象。相反,他们会返回一个持有结果的新Stream。3.Stream操作是延迟执行的。这意味着他们会等到需要结果的时候才执行。...原创 2020-04-26 18:59:51 · 932 阅读 · 0 评论 -
多线程
多线程线程概述线程的创建和启动继承Thread类创建线程类实现Runnable接口创建线程类使用Callable和Future创建线程创建线程的三种方式对比线程的生命周期新建和就绪状态运行和阻塞状态控制线程join线程线程睡眠:sleep线程同步同步代码块同步方法同步锁(Lock)线程概述几乎所有的操作系统都支持同时运行多个任务,一个任务通常就是一个程序,每个运行中的程序就是一个进程。当一个程...原创 2020-04-20 15:51:32 · 121 阅读 · 0 评论 -
树和二叉树
树和二叉树树的概述树的基本操作父节点表示法子节点链表示法二叉树二叉树的定义和基本概念二叉树的基本操作二叉树的顺序存储二叉树的二叉链表存储二叉树的三叉链表存储遍历二叉树先序遍历中序遍历后序遍历广度优先遍历森林、树和二叉树的转换排序二叉树红黑树线性表、栈和队列都是线性的数据结构,这种数据结构之内的元素只存在一个对一个的关系,存储、处理起来相对比较简单。而树是一种更复杂的数据结构,这种结构内的元素存在...原创 2020-04-16 17:39:50 · 316 阅读 · 1 评论 -
栈和队列
栈和队列栈栈的基本定义栈的顺序存储结构及实现队列队列的基本定义双端队列总结栈栈的英文单词是Stack,它代表一种特殊的线性表,这种线性表只能在固定一端(通常认为是线性表的尾端)进行插入、删除操作。栈的基本定义栈是一种数据结构,它代表只能在某一端进行插入、删除操作的特殊线性表,通常就是在线性表的尾端进行插入、删除操作。对于栈而言,允许进行插入、删除操作的一端被称为栈顶(top), 另一端则...原创 2020-04-15 17:23:37 · 340 阅读 · 0 评论 -
线性表的介绍
线性表数据结构线性表线性表的基本操作线性表的顺序存储结构顺序表的插入操作顺序表的删除操作线性表的链式存储结构单链表上的基本运算循环链表双向链表数据结构由于现实的数据元素之间存在着纷繁芜杂的逻辑关系,应用程序则需要分析这些数据的逻辑结构,并采用合适的物理结构来存储(在内存中存储,并非数据库存储)这些数据,并以此为基础对这些数据进行相应的操作。当然,还要分析各种数据结构在时间开销、空间开销上的优劣...原创 2020-04-15 16:25:07 · 278 阅读 · 0 评论 -
Java集合
Java集合使用Stream操作集合Java的集合类主要由两个接口派生:Collection和Map对于Set、List、Queue和Map四种集合,最常用的实现类在两张图中都以灰色背景色覆盖,分别是HashSet、TreeSet、ArrayList、ArrayDeque、LinkedList和HashMap、TreeMap等实现类。使用Stream操作集合Java8新增了Stream...原创 2020-04-11 10:58:33 · 202 阅读 · 0 评论 -
Java中的一些基础类库
Java基础类库ScannerString、StringBuffer、StringBuilderScanner获取键盘输入 @Test public void t(){ Scanner sc = new Scanner(System.in); while(sc.hasNext()) { System.out.println("输入内容"+sc.next());...原创 2020-04-09 16:46:43 · 95 阅读 · 0 评论 -
对象与垃圾回收
对象与垃圾回收java垃圾回收讲解垃圾回收机制特征对象在内存中的状态finalize()方法相关方法java垃圾回收讲解当程序创建对象、数组等引用类型实体时,系统都会在堆内存中为之分配一块内存区,对象就保存在这块内存区,当这块内存不再被任何引用变量引用时,这块内存就变成垃圾,等待垃圾回收机制进行回收。垃圾回收机制特征垃圾回收机制只负责回收堆内存中的对象,不会回收任何物理资源(例如数据库连...原创 2020-04-09 15:45:55 · 103 阅读 · 0 评论 -
lambda表达式的基本运用
lambda表达式方法引用与构造器引用Lambda表达式支持将代码块作为方法参数、允许使用更简洁的代码来创建只有一个抽象方法的接口(函数式接口)的实例。Lambda表达式由三部分组成:1.形参列表:形参列表允许省略形参类型。如果形参列表中只有一个参数,甚至连括号也可省略。2.箭头 ->:必须通过英文中画线和大于符号组成。3.代码块:如果代码块只包含一条语句。Lambda表达式允许...原创 2020-04-09 14:33:39 · 220 阅读 · 0 评论 -
关于泛型
自定义泛型方法规则:1.定义一个类型,使用大写字母表示:这个大写字母的类型表示任意的类型2.如:这个大写字母为T,写在返回值之前,void之前写 < T >3.接下来就可以使用T类型了4.在泛型里面写的是一个对象,不能写基本的数据类型,应写其对应的包装类5.只有对象类型才能作为泛型方法的实际参数泛型是提供给javac编译器使用的,它用于限定集合的输入类型,让编译器在源...原创 2020-04-08 17:43:23 · 219 阅读 · 0 评论 -
java中的两个设计模式:模板模式和命令模式的讲解
java设计模式:模板\命令模板模式命令模式命令模式的小案例模板模式抽象类体现的就是一种模板模式的设计,抽象类作为多个子类的通用模板,子类在抽象类的基础上进行扩展、改造,但子类总体上会大致保留抽象类的行为方式。如果编写一个抽象父类,父类提供了多个子类的通用方法,并把一个或多个方法留给其子类实现,这就是一种模板模式的设计方式。抽象方法不能有方法体、抽象类不能实例化、含有抽象方法的类只能被定义成...原创 2020-04-08 17:17:47 · 213 阅读 · 0 评论 -
Java中控制循环结构的关键字(break,continue,return)
控制循环结构的关键字breakcontinuereturnbreakbreak表示完全结束这个循环单层循环直接用break; @Test public void t1() { for(int i=0;i<10;i++) { System.out.println("i的值为"+i); if(i==2) break; } }两层循环结构时,...原创 2020-03-29 10:32:46 · 880 阅读 · 0 评论 -
zookeeper和Eureka的区别
CAP理论:一个分布式系统不可能同时满足C(一致性)、A(可用性)和P(分区容错性)。Zookeeper保证的是CP, 而Eureka则是AP。zk那个选举机制中当leader宕机剩下的节点就会重新选举leader。一旦选举时间长的话在选举期间整个zk集群是不可用的,这就导致了在选举期间注册服务瘫痪。由于网络问题使得zk集群失去master节点是较大概率发生的事情,虽然服务能够最终恢复,但是漫...原创 2020-03-27 18:37:03 · 163 阅读 · 0 评论 -
java序列化的接口为什么是空的?
Java序列化是JDK1.1时引入的一组开创性的特性,用于将Java对象转换为字节数组,便于存储或传输。此后,仍然可以将字节数组转换回Java对象原有的状态。序列化的思想是“冻结”对象状态,然后写到磁盘或者在网络中传输;反序列化的思想是“解冻”对象状态,重新获得可用的 Java 对象。再来看看序列化 Serializbale 接口的定义:public interface Serializab...原创 2020-03-27 18:34:32 · 599 阅读 · 0 评论 -
Thread线程
开启一个新的线程永远都只能new一个Thread然后调用start方法。实现Runnable接口绝对不可能开启一个新的线程。实现runable接口的实现类直接覆盖Runnable接口中的run方法和thread类没有关系,因为实现runable接口的实现类不是线程类,所以实现Runnable接口根本不可能开启一个新的线程。使用实现Runnable接口这种方式开启新线程直接在main方法(线程)...原创 2020-03-27 18:22:27 · 103 阅读 · 0 评论 -
mybatis中like的注意
<!--concat Mysql和 Oracle区别 ,不存在sql注入--> <select id="findUserByLikeName" parameterType="java.lang.String" resultMap="user"> select * from t_user where name like concat('%',#{name,jdbcType...原创 2020-03-27 18:18:07 · 163 阅读 · 0 评论 -
Long对象缓存池
比较两个Long对象的值是否相等,不可以使用双等号进行比较,(long int Integer可以用双等号进行比较)可以采用如下方式:1.使用equals方法进行比较 Long a=new Long(3); Long b=new Long(3); System.out.println(a.equals(b));2.使用Long类型中的longValue()方法进行比较 Lon...原创 2020-03-27 18:13:13 · 566 阅读 · 0 评论 -
在不使用spring框架中使用aop的功能
Spring框架的AOP机制可以让开发者把业务流程中的通用功能抽取出来,单独编写功能代码。在业务流程执行过程中,Spring框架会根据业务流程要求,自动把独立编写的功能代码切入到流程的合适位置。spring提供了两种方式的AOP使用:使用xml配置方式:使用注解方式:这里需要注意的是Spring AOP目前仅仅支持方法级别的切面,成员的interception并没有实现。另外,spri...原创 2020-03-27 18:10:20 · 2329 阅读 · 0 评论 -
dao层和service层的区别
常见的系统架构有三层架构与MVC三层架构视图层View服务层Service持久层DaoView层:用于接收用户提交请求的代码在这里编写。Service层:系统的业务逻辑主要在这里编写。Dao层:直接操作数据库的代码在这里编写。dao层只是访问数据库,业务逻辑跟它没关系,它只会访问数据库读取数据,不知道这些数据是什么意思、做什么用的。service层,就是操作业务逻辑,它调取...原创 2020-03-27 17:59:58 · 5731 阅读 · 1 评论 -
Java中用import导入类和用Class方法加载类的区别
import仅仅包含导入操作,并不包含将字节码文件加载进内存这一动作,将字节码文件加载进内存是后续的实例化操作完成的。例如通过import导入了一堆包和类,但是后续什么都没用(没用实例化),那么导入的东西是不会被加载进内存的。而且import是编译期的,如果你在后续代码中没有使用到你导入的内容,那么import语句甚至不会编译和执行。import的作用就是对你程序中要用到(实例)的东西进行署名(s...原创 2020-03-27 17:42:39 · 1599 阅读 · 0 评论 -
dubbo远程调用服务的实现
DubboDubbo框架介绍dubbo入门案例dubbo负载均衡的实现补充Dubbo框架介绍http://dubbo.apache.org/zh-cn/Dubbo(读音[ˈdʌbəʊ])是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成。Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大...原创 2020-03-27 17:33:45 · 2085 阅读 · 0 评论 -
注册中心:zookeeper的安装、集群
zookeeper注册中心Zookeeper介绍Zookeeper下载Zookeeper安装zookeeper集群说明注册中心工作原理:服务提供者启动时,会将自己的信息(服务名称/IP/端口号)等写入注入中心注册中心接收提供者的数据之后,维护自己的服务列表数据,进行更新操作消费者访问注册中心,动态获取服务列表数据动态获取服务列表数据之后,保存到本地服务器,...原创 2020-03-26 20:03:36 · 127 阅读 · 0 评论 -
两个项目之间的数据与方法的调用:跨域访问
HttpClient、JSONPHttpClient介绍HttpClient入门SpringBoot整合HttpClientHttpClient执行过程JSONP介绍JSONP跨域访问原理jQuery实现JSONP调用HttpClient和JSONP对比SOA思想RPCHttpClient介绍HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程...原创 2020-03-26 18:14:15 · 1443 阅读 · 0 评论 -
Redis缓存高可用
Redis集群Redis内存策略Redis持久化策略Redis集群Redis集群搭建出错解决方法Redis集群高可用推选原理单元测试Redis集群AIPspringBoot整合Redis集群Redis内存策略LRU算法:(Least Recently Used)最近最少使用。自上一次使用时间T,并且挑选最大的T进行删除。 算法维度是时间T。LFU算法:(Least Frequently U...原创 2020-03-25 17:57:33 · 308 阅读 · 0 评论 -
redis安装及其机制
Redis作用安装Redis配置文件的修改redis命令Redis入门案例作用redis用作数据库、缓存、消息中间件(k-v),支持多种类型的数据结构:字符串(Strings)、散列(hashs)、列表(lists)、集合(sets)、有序集合(sorted sets)、范围查询。安装redis压缩包提取码:oy2z上传redis压缩包到/usr/local/src/目录下解压后删除压...原创 2020-03-24 20:10:12 · 99 阅读 · 0 评论 -
restFUL
restFUL风格规则作用使用规则参数使用"/"进行分割参数使用{}包裹如果需要动态获取则配合注解@PathVariable使用作用restFUL风格的作用是简化用户url请求个数以及Controller里方法的个数一般CRUD请求类型有post、put、get、delete使用@GetMapping(“请求路径”)只能接收get请求使用@PostMapping(“请求...原创 2020-03-19 14:30:29 · 201 阅读 · 0 评论 -
分布式系统
分布式系统要求拆分分布式思想的实质搭配要求分布式系统要求按照某些特定的规则将项目进行拆分。如果将一个项目的所有模板功能都写到一起,当某个模块出现问题时将直接导致整个服务器出现问题。拆分按照业务拆分为不同的服务器,有效的降低系统架构的耦合性在业务拆分的基础上可按照代码层级进行拆分(view、controller、service、pojo)分布式思想的实质分布式思想的实质是为了系统的...原创 2020-03-19 13:54:52 · 124 阅读 · 0 评论 -
注解
注解@SpringBootApplication@Component(描述一般组件对象)@Controller(描述控制层对象)@Service(描述业务层对象)@Repository(描述数据层对象)@Configuration(描述配置对象)@Scope@Lazy@RequestMapping@ResponseBody@Mapper@Autowired@Qualifier使用Spring框架...原创 2020-01-01 01:53:41 · 81 阅读 · 0 评论 -
SpringBoot
SpringBoot项目的创建SpringBoot 整合数据源SpringBoot 整合MyBatisSpringBoot 整合WEB应用项目的创建———————————————————————————————————————————————SpringBoot 整合数据源使用默认的HikariCP添加依赖右键项目的pom文件,spring→Edit Starters...原创 2020-01-01 01:20:57 · 195 阅读 · 0 评论