Java

设计模式--观察者模式

简介 观察者模式是一种行为设计模式,允许你定义一种订阅机制,可在对象事件发生时通知多个 “观察” 该对象的其他对象。例如,Excel中的数据与折线图、饼状图、柱状图之间的关系 组成 发布者(Publisher) 会向其他对象发送关注的事件。 事件会在发布者自身状态改变或执行特定行为后发生。 发布者中包含一个允许新订阅者加入和当前订阅者离开列表的订阅构架 订阅者(Subscriber)&nbsp

IOC(控制反转)

1、通过下面这个案例来理解IOC这种思想 创建一个项目,建一个dao层的包。在包下建立一个UserDao接口,里面写一个方法。再写这个接口的几个实现类,每个实现类中的方法实现不同的效果。 建一个service层的包,下面写一个UserService接口,然后写接口实现类,实现类就是调用Dao层的方法(用以下两种方法来写就可以体会出IOC思想了) Service层中第一种写法和第二种写

java基础04

变量 变量就是变化的量 Java是强类型语言,每个变量都必须声明类型 Java变量是程序中最基本的单元,其要素包括变量名,变量类型和作用域 如何定义变量?例: 不建议一行多个变量 每个变量必须有类型,可以是基础类型,也可以是引用类型 变量名必须是合法标识符 变量声明必须是一条完整语句,因此每一个声明必须以分号结束 变量作用域: 局部变量,有效期是这个方法的两个大括号之间,出了这个区间,

alpico主题markdown支持

alpico主题markdown支持 标题 1级标题 2级标题 3级标题 4级标题 5级标题 6级标题 表格 表头 表头 表头 表格 表格 表格 表格 表格 表格 代码

Java入门学习——类型转换

一、自动类型转换 什么是自动类型转换,为什么要进行自动类型转换? 类型范围小的变量,可以直接赋值给类型范围大的变量。 为了探究byte类型可以直接赋值给int类型,我们在IDEA里新建一个package(it.com.type),然后在这下面新建一个Java class(TypeConversionDemo1):    package it.com.type; public class

JavaSE--集合

一、集合概述 java.util.*;包下 1、什么是集合   集合实际上就就是一个容器,可以来容纳其他类型的数据,例如数组就是一个容器,一个集合   集合在开发中使用较多,可以一次容纳多个对象,   注意:集合不能直接存储基本数据类型,另外集合也不能直接存储java对象,集合当中存储的都是java对象的内存地址。(或者说集合中存储的是引用。) 任何时候存储的都是引用 2、Java中不同的集合,底

每日总结(8.15)

今天学习了半小时Java 并为开学做点准备

JavaSE--泛型

一、泛型 1、泛型语法机制   泛型这种语法机制,只在程序编译阶段起作用,只是给编译器参考的。(运行阶段泛型没用!) 2、泛型的好处   第一:集合中存储的元素类型统一了。   第二:从集合中取出的元素类型是泛型指定的类型,不需要进行大量的“向下转型” 3、泛型的缺点   导致集合中存储的元素缺乏多样性。大多数业务中,集合中元素的类型还是统一的。 public class GenericTest0

集合+hashmap

数组 数组(Array)是一种用连续的内存空间存储相同数据类型数据的线性数据结构。 面试题:为什么数组索引从0开始?假如从1开始会怎么样? 操作数组的时间复杂度 当未知数组查询时,时间复杂度为 O(n) 总结 —————————————————————————————————————————————— ArrayList ArrayList底层的实现原理是什么 ArrayList

mybatis系列: 简介以及使用

目录一、简介二、简单使用 一、简介 MyBatis本质上就是对JDBC的封装,通过MyBatis完成CRUD。 MyBatis在三层架构中负责持久层的,属于持久层框架。 MyBatis的发展历程:【引用百度百科】 MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBa

JavaSE--foreach

一、增强for(foreach) 1、语法格式 for(元素类型 变量名 :数组或集合){ System.out.println(变量名); } 2、foreach缺点   foreach有一个缺点:没有下标。在需要使用下标的循环中,不建议使用增强for循环 3、举例 public class ForEachTest01 { public static void main(Stri

2011-2012学年 XML期末考试考试题

2011-2012学年 期末考试考试题一、填空题(每题3分,共27分)请将每道题的正确答案填写在题目中的横线上,其余答题 方式均无效。1、下面代码中的 “学生信息 ”是根原素____根元素_________元素; <?xml version=”1.0”> <?DOCTYPE 学生信息 SYSTEM “stu.dtd”> <!ELEMENT 学生信息 (#PCDA

@Validated

一、优雅的参数验证@Validated @Valid和@Validated是Spring Validation框架提供的参数验证功能。 1.@Valid和@Validated的用法(区别) 二者主要作用在于 都作为标准JSR-303规范,在检验Controller的入参是否符合规范时,使用@Validated或者@Valid在基本验证功能上没有太多区别。但是在分组、注解地方、嵌套验证等功能上两个有

JavaSE--IO流

一、IO流 1、IO流概述   通过IO可以完成对硬盘文件的读和写   从硬盘中读取文件,读到内存中:读(Read)、输入(Input)、输入流(InputStream)   从内存中写入文件,写到硬盘中:写(Write)、输出(Output)、输出流(OutputStream)   java.io.*; 2、IO流的分类   1)一种方式是按照流的方向进行分类:     以内存作为参照物。往内存

JS实现播放音乐时歌词同步展示

效果如下: 实现过程: 监听音频播放时间,使用歌词的出现时间与其比较,展示对应时间歌词内容,代码如下 这样将歌词在js里面固定了,可以将歌词抽出成一个Irc文件,将该文件放在服务器上面,使其能用http访问到。 同时在js中获取Irc文件的内容,并沿用上面的实现,整个html文件如下   TRANSLATE with x English Arabic

代码随想录算法训练营第十三天|单调数列:滑动窗口最大值(力扣239.)、优先级队列:前k个高频元素(力扣347.)

单调数列:滑动窗口最大值(力扣239.) 给定滑动窗口的范围,求每个滑动窗口范围内的最大值 使用单调队列实现 对于最大值数字前面的数字不存入数列,对于最大值数字后面的数字存入数列中 单调队列中数字的大小呈递减顺序 pop(value):如果窗口移除的元素等于单调队列的队口元素,则pop;否则什么也不干 push(value):如果入口元素小于push的元素value,则一直弹出队尾元素,直到队尾

ChatGPT 问答00017 在Disruptor中,WorkHandler使用案例

在Disruptor中,WorkHandler通常用于实现多线程消费事件的场景。下面是一个简单的示例,展示了如何使用WorkHandler: 假设我们有一个Ring Buffer,用于存储事件,并且有多个工作线程需要并发地处理这些事件。我们定义一个名为Event的类作为事件对象,并创建一个EventWorkHandler来处理这些事件。 首先,我们需要定义Event类,它包含要传递给工作处理器的数

仿@FeignClient实现使用Http请求外部服务

因为某些原因,原本注册在同一个nacos里的部分微服务需要拆分出去,而拆分出去的那部分服务调用方式需要修改。所以为了简单省事,加个了@HttpClient注解用来替换@FeignClient。 三步走:   1、@HttpClient注解   2、扫描被@HttpClient注解的接口   3、为扫描到的接口创建代理类 @HttpClient注解 @Target(ElementType.TYPE)

TienChin 创建菜单页面

上一节当中我们只是给后台添加了对应的菜单,实际上对应的页面还没有存在这节主要就是创建出来页面: 促销活动: activity 统计分析: analysis 商机管理: business 渠道管理: channel 线索管理: clue 合同管理: contract 私教课程: course 转派管理: transfer template: 最终目录结构:

ChatGPT 问答00018 在Disruptor中,EventHandler使用案例

在Disruptor中,EventHandler通常用于并行处理事件的场景。下面是一个简单的示例,展示了如何使用EventHandler: 假设我们有一个Ring Buffer,用于存储事件,并且有多个事件处理器需要并发地处理这些事件。我们定义一个名为Event的类作为事件对象,并创建多个EventHandler来处理这些事件。 首先,我们需要定义Event类,它包含要传递给事件处理器的数据:

2023前端JavaScript面试题大全

一、基础题 题目 1: 什么是JavaScript的数据类型?如何检查一个变量的数据类型? 答案: JavaScript有七种数据类型: 基本数据类型 (Primitive Data Types):Number、String、Boolean、Null、Undefined、Symbol 引用数据类型 (Reference Data Types):Object、Array 要检查一个变量的数据类型,可

本地搭建spring-boot集成dubbo问题汇总

1,java.lang.NoClassDefFoundError: com/alibaba/spring/util/PropertySourcesUtils <dependency> <groupId>com.alibaba.spring</groupId> <artifactId>spring-context-support</

TienChin 引入 MyBatisPlus

在父工程当中添加版本号,统一管理: 在父工程当中添加 MyBatisPlus 依赖: 在 common 模板当中添加 MyBatisPlus 依赖: 更改配置 修改 MyBatisConfig 当中的 sqlSessionFactory 即可:

Elasticsearch 保姆级入门篇

Elasticsearch 是一个分布式的、面向生产规模工作负载优化的搜索引擎。 Kibana 可以将 Elasticsearch 中的数据转化为直观的图表、图形和仪表盘。 这篇文章,您将学习本地安装 Elasticsearch 和 Kibana,以及使用开发工具/ Java SDK 创建索引和搜索数据。 1 本地安装 1.1 创建网络 我们需要创建一个供 Elasticsearch 和 Kib

【剑指Offer】38、二叉树的深度

【剑指Offer】57、二叉树的下一个结点 题目描述: 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 解题思路: 本题相对比较简单。根据二叉树深度的定义,我们有以下理解:如果一棵树只有一个结点,那么它的深度为1。如果根结点只有左子树而没有右子树,那么树的深度为其左子树深度加1;相反,如果根结点只有右子树而没有左子树,那么深

【剑指Offer】39、平衡二叉树

【剑指Offer】39、平衡二叉树 题目描述: 输入一棵二叉树,判断该二叉树是否是平衡二叉树。这里的定义是:如果某二叉树中任意结点的左、右子树的深度相差不超过1,那么它就是一棵平衡二叉树。 解题思路: 首先对于本题我们要正确理解,一般情况下,平衡二叉树就是AVL树,它首先是二叉搜索树(左小右大),其次满足左右子树高度之差不超过1。但是在本题中,没有二叉搜索树的要求,只对平衡与否进行判断即可。 根据

【剑指Offer】57、二叉树的下一个结点

【剑指Offer】57、二叉树的下一个结点 题目描述: 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 解题思路: 本题解决起来并不是很困难,主要是分析清楚所有可能的不同情况。对于中序遍历序列来说,遵循“左->根->右”的顺序,在深刻理解中序遍历的基础上,结合一些具体的实例我们不难得出以下结论。 找

AndroidStudio3.0 使用中遇到的问题解决办法

1、Failed to resolve: project library 修改settings.gradle include ':app', ':library' //增加下面一句 project(':library').projectDir = new File('/library/main') 2、Unsupported Java. Your build is currently config

由于代码绕过WAF上传的tips

前言 最近审到一个通用的文件上传漏洞,但是在做测试的过程中遇到多种不同的WAF产品,一开始怎么都绕不过去,后面发现代码上的问题,然后基本上全绕过了 分析 看到很多系统文件上传获取文件名的代码都是类似这样 这段代码通过 lastIndexOf(".")获取原始文件名 filename 中最后一个点 . 后的位置,然后用substring()截取作为文件的扩展名,然后直接拼接在新生成的文件名上。 这

如何分析 JVM 内存瓶颈浅谈

背景: 当操作系统内存出现瓶颈时,我们便会重点排查那个应用占用内存过大。对于更深一步分析内存的使用,就进一步去了解内存结构,应用程序使用情况,以及内存如何分配、如何回收,这样你才能更好地确定内存的问题。 JVM 内存分配:   JVM(Java虚拟机)内存分配是指Java程序运行时,JVM对内存的分配和管理。JVM将内存划分为不同的区域,每个区域有不同的作用和生命周期。以下是JVM内存

<<  <  798  799  800  801  802  803  804  805  806  807  808  >  >>