自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

原创 Java (枚举) Enum 详解

枚举是一个被命名的整型常数的集合,用于声明一组带标识符的常数。枚举在日常生活中很常见,例如表示星期的SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY、SATURDAY就是一个枚举。Java枚举类使用关键字来定义,各个常量使用逗号","来分割,结尾使用分号";"结束。enum定义的枚举类默认继承了java.lang.Enum类,并实现了java.lang.Serializable和java.lang.Comparable两个接口。...

2022-07-19 11:30:08 7294 2

原创 redis过期key的处理策略

中数据比较多的话要是一次性全量删除对服务器的压力比较大,每一次只挑一批进行删除,所以很可能出现部分已经过期的。因为惰性删除策略无法保证某些冷门数据是否被及时删除,定时删除策略就是会在一定时间内主动淘汰。秒之后它确实已经过期了,但是惰性删除的策略它并不会马上删除这个。时它才会去检查是否过期,如果过期了那么就会删除这个。并没有及时的被清理掉,从而导致内存没有即时被释放。这里的问题就是每次只会淘汰一部分过期。已经过期的数据,默认的时间是每。秒过期同时中间也没有修改它,,而是当再次读写这个。

2023-05-24 18:56:29 466

原创 雪花算法snowflake

snowflake中文的意思是 雪花,雪片,所以翻译成雪花算法。它最早是twitter内部使用的分布式环境下的唯一ID生成算法。在2014年开源。雪花算法产生的背景当然是twitter高并发环境下对唯一ID生成的需求,得益于twitter内部高超的技术,雪花算法流传至今并被广泛使用。它至少有如下几个特点: ◦ 能满足高并发分布式系统环境下ID不重复 ◦ 基于时间戳,可以保证基本有序递增(有些业务场景对这个又要求) ◦ 不依赖第三方的库或者中间件 ◦ 生成效率极高

2023-02-09 10:25:51 629 2

原创 SpringMVC

SpringMVC是Spring的一个后续产品,是Spring的一个子项目SpringMVC 是 Spring 为表述层开发提供的一整套完备的解决方案。在表述层框架历经 Strust、WebWork、Strust2 等诸多产品的历代更迭之后,目前业界普遍选择了 SpringMVC 作为 Java EE 项目表述层开发的首选方案。注:三层架构分为表述层(或表示层)、业务逻辑层、数据访问层,表述层表示前台页面和后台servlet。

2022-12-18 21:19:04 444 1

原创 正则表达式

正则表达式,又称规则表达式,(Regular Expression,在代码中常简写为regex、regexp或RE),是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符"),是计算机科学的一个概念。正则表达式使用单个字符串来

2022-12-13 16:30:16 623 1

原创 Mybatis

MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下, iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到Github。iBatis一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。 iBatis提供的持久层框架包括SQL Maps和Data Access Objects(DAO)。

2022-11-29 16:47:25 1032 6

原创 Cookie和Session

Cookie,有时也用其复数形式 Cookies。类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息。Cookie 并不是它的原意“甜饼”的意思, 而是一个保存在客户机中的简单的文本文件, 这个文件与特定的 Web文档关联在一起, 保存了该客户机访问这个Web 文档时的信息, 当客户机再次访问这个 Web 文档时这些信息可供该文档使用。

2022-10-28 11:56:38 90 2

原创 JSTL 标签库

JSTL 标签库 全称是指 JSP Standard Tag Library JSP 标准标签库。是一个不断完善的开放源代码的 JSP 标签库。EL 表达式主要是为了替换 jsp 中的表达式脚本,而标签库则是为了替换代码脚本。这样使得整个 jsp 页面变得更佳简洁。JSTL由五个不同功能的标签库组成。功能范围URI前缀核心 标签库-- 重点c格式化fmt函数fn数据库(不使用)sqlXML(不使用)x在 jsp 标签库中使用 taglib 指令引入标签库CORE 标签库。

2022-10-26 11:42:20 105 3

原创 EL表达式

表达式脚本输出 key 的值是:EL 表达式输出 key 的值是:${key1}

2022-10-25 19:11:52 83 5

原创 JSP入门

1. 什么是 jsp ,它有什么用jsp 的全称是 java server pages。Java 的服务器页面。jsp 的主要作用是代替 Servlet 程序回传 html 页面的数据。因为 Servlet 程序回传 html 页面数据是一件非常繁锁的事情。开发成本和维护成本都极高。

2022-10-23 15:00:59 68

原创 HTTP协议入门

* 范围的状态码,表示表示服务器要求客户端重定向,需要客户端进一步的操作以完成资源的请求。张三与李四采用写信的方式进行通信,在填写信封时,写信的双方需要遵守固定的规则。发送请求来获得服务器上的资源,请求体中不会包含请求数据,请求数据放在协议头中。** 范围的状态码,表示客户端的请求有非法内容,从而导致这次请求失败。** 范围的状态码,表示服务器未能正常处理客户端的请求而出现意外错误。向服务器提交资源,并使用提交的新资源,替换掉服务器对应的旧资源。响应体中存放的,是服务器响应给客户端的资源内容。

2022-10-19 09:56:05 77

原创 Ajax详解

Ajax的全称是(异步和XML)。通俗的理解:在网页中利用对象和服务器进行数据交互的方式,就是Ajax。5.2 为什么要学Ajax之前所学的技术,只能把网页做的更美观漂亮,或添加一些动画效果,但是,Ajax能让我们轻松实现网页与服务器之间的数据交互。

2022-10-09 09:48:10 652 2

原创 jQuery

jQuery是一个优秀的JavaScript库,是一个凭借简洁的语法和跨平台的兼容性,极大地简化了JavaScript开发人员遍历HTML文档,操作DOM,执行动画和开发Ajax的操作。jQuery封装了很多预定义的对象和函数。其理念:write less,do more.jQuery选择器是jQuery为我们提供的一组方法,让我们更加方便的获取到页面中的元素。注意:jQuery选择器返回的是jQuery对象。

2022-10-08 20:11:54 1042 6

原创 Tomcat笔记

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为比较流行的Web 应用服务器。

2022-10-03 17:24:20 111 2

原创 XML入门

XML是什么?XML,Extensible Markup Language,扩展性标识语言。文件的后缀名为:.xml。就像HTML的作用是显示数据,XML的作用是传输和存储数据。xml 的作用xml 的主要作用有:1、用来保存数据,而且这些数据具有自我描述性2、它还可以做为项目或者模块的配置文件3、还可以做为网络传输数据的格式(现在 JSON 为主)

2022-10-02 10:13:31 167 1

原创 JDBC编程

JDBC 指 Java 数据库连接,是一种标准Java应用编程接口( JAVA API),用来连接 Java 编程语言和广泛的数据库。JDBC API 库包含下面提到的每个任务,都是与数据库相关的常用用法。制作到数据库的连接。创建 SQL 或 MySQL 语句。执行 SQL 或 MySQL 查询数据库。查看和修改所产生的记录。Java 应用程序所有这些不同的可执行文件就可以使用 JDBC 驱动程序来访问数据库,这样可以方便的访问数据。

2022-09-27 10:38:09 1376 4

原创 Python基础笔记

判断指定的整数 在序列中是否存在 in ,not in。第一种创建方式,只有一个参数(小括号中只给了一个数)第二种创建方式,给了两个参数(小括号中给了两个数)第三种创建方式,给了三个参数(小括号中给了三个数)什么都不做,只是一个占位符,用到需要写语句的地方。对象占用的内存空间都是相同的,因为仅仅需要存储。判断整数序列中是否存在(不存在)指定的整数。对象时,才会去计算序列中的相关元素。对象表示的整数序列有多长,所有。条件执行体(循环体)

2022-09-21 14:13:37 583 3

原创 Stream流

Lambda是JDK8中一个语法糖。他可以对某些匿名内部类的写法进行简化。它是函数式编程思想的一个重要体现。让我们不用关注是什么对象。而是更关注我们对数据进行了什么操作。Java8的Stream使用的是函数式编程模式,如同它的名字一样,它可以被用来对集合或数组进行链状流式的操作。可以更方便的让我们对集合或数组操作。

2022-09-18 16:08:19 148 1

原创 JavaScript(day2)BOM

当遇到计时器(setTimeout)、DOM事件监听或者是网络请求的任务时,JS引擎会将它们直接交给 webapi,也就是浏览器提供的相应线程(如定时器线程为setTimeout计时、异步http请求线程处理网络请求)去处理,而JS引擎线程继续后面的其他任务,这样便实现了 异步非阻塞。, 1000) 定时而已,时间一到(1s过后),还会把它对应的回调函数(callback)交给 任务队列 去维护,JS引擎线程会在适当的时候去任务队列取出任务并执行。但并不会立即将回调函数送入主线程,不然就会乱套,得排队。

2022-09-11 15:38:43 82

原创 MySQL笔记

MySQL学习笔记数值型整型在能满足要求的情况下,尽量选择存储空间小的字符型CHAR (size)固定长度字符串 最大255字符VARCHAR (size) 可变长度字符串 最大65532字节【utf8编码最大21844字符 1-3个字节用于记录大小】(varchar是按照字节编码的,不同的字符集对应的字符数量不同,因此size最大不一定为65532)

2022-09-02 17:56:23 847 4

原创 Class类和反射

Class也是类,因此也继承Object类Class对象不是new出来的,而是系统创建的对于某个类的Class对象,而内存中只有一份,因为类只加载一次每个类的实例都会自己是由哪个Class实例所生成通过Class对象的一系列API可以完整地得到一个类的完整结构Class对象是存放在堆的类的字节码二进制数据是放在方法区的,有的地方称为类的元数据。..............................

2022-08-29 13:58:37 515

原创 Properties类

Properties类则是properties文件和程序的中间桥梁,不论是从properties文件读取信息还是写入信息到properties文件都要经由Properties类。该类主要用于读取Java的配置文件,不同的编程语言有自己所支持的配置文件,配置文件中很多变量是经常改变的,为了方便用户的配置,能让用户够脱离程序本身去修改相关的变量设置,所以产生了Properties类。就像在Java中,其配置文件常为.properties文件,是以键值对的形式进行参数配置的。...

2022-08-24 17:31:00 454

原创 FileReader和FileOutputStream

FileReader相关方法:new FileReader(File/String)read: 每次读取单个字符,返回该字符,如果到文件末尾返回-1read(char [ ]):批量读取多个字符到数组,返回读取到的字符数,如果到文件末尾返回-1

2022-08-21 12:20:38 1583

原创 Java中的守护线程

守护线程:一般是为工作线程服务的,当所有的用户线程结束,守护线程自动结束常见的守护线程:垃圾回收机制守护线程是程序运行的时候在后台提供一种通用服务的线程。所有用户线程停止,进程会停掉所有守护线程,退出程序。Java中把线程设置为守护线程的方法:在 start 线程之前调用线程的 setDaemon(true) 方法。注意:setDaemon(true) 必须在 start() 之前设置,否则会抛出IllegalThreadStateException异常,该线程仍默认为用户线程,继续执行

2022-08-12 18:30:10 1105

原创 多线程创建方式

继承于Thread类创建一个继承与Thread类的子类重写Thread类的run() 方法 ,将想要用子线程执行的操作写在 run() 方法中在主线程中创建继承Thread类的子类的对象调用对象的 start() 方法启动子线程 (注意 这里使用的是 start() 方法 【底层是start0方法】 而不是 run() 方法)...

2022-08-12 17:26:10 93

原创 Java键盘监听器KeyListener

用于接收键盘事件(按键)的侦听器界面。有兴趣处理键盘事件的类可以实现这个接口(和它包含的所有方法),或扩展抽象的。方法将从该类创建的侦听器对象注册到组件。按键,释放或键入时会产生键盘事件。然后调用侦听器对象中的相关方法,并将。public void keyPressed(KeyEvent e)按下某个键时调用此方法。public void keyTyped(KeyEvent e)键入某个键时调用此方法。类(仅覆盖感兴趣的方法)。......

2022-08-08 13:02:44 2106

原创 分析HashSet和TreeSet分别如何去重

HashSet的去重机制:hashCode() + equals() , 底层先通过存入对象,进行运算得到一个hash值,通过hash值得到对应的索引,如果发现table索引所在的没有数据,就直接存放,如果有数据,就进行equals比较【遍历比较】,如果比较后为不同,则加入,反之,不加入。TreeSet的去重机制:如果你传入了一个Comparator匿名对象,就使用实现的compare去重,如果返回0,就认为是相同的元素/数据,就不添加,如果未传入一个Comparator匿名对象,则以你添加的对象实现的C

2022-08-02 13:12:14 329 1

原创 开发中如何选择集合实现类

无序Hashset【底层是HashMap,维护了一个哈希表即(数组+链表+红黑树)】键无序HashMap【底层是哈希表jdk7数组+链表,jdk8数组+链表+红黑树】插入顺序和取出顺序一致LinkedHashSet,维护数组+双向链表。改查多ArrayList【底层维护Object类型的可变数组】增删多LinkedList【底层维护了一个双向链表】1.先判断存储的类型(一组对象[单列]或一组键值对[双列])2.一组对象[单列]collection接口。3.一组键值对[双列]Map。......

2022-08-01 18:26:55 103

原创 Hashtable简述

散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。......

2022-08-01 16:57:00 1013

原创 HashMap底层机制及源码剖析

/如果table的索引位置key的hash和新的key的hash值相同,并满足(table现有的结点的key和准备添加的key是同一个对象||equals返回真),就认为不能加入新的k-v。/取出hash值对应的table的索引位置的Node,如果为null,就直接把加入的k-v,创建成一个Node,加入该位置即可。if((e=p.next)==null){//如果整个链表,没有和他相同,就加到该链表的最后。//如果当前的table的已有的Node是红黑树,就按照红黑树的方式处理。.........

2022-08-01 14:33:24 235

原创 Map接口遍历方法

代码】Map接口遍历方法。

2022-07-31 16:19:00 126

原创 StringBuffer常用方法

参数中的字符插入此序列中的指定位置,将该位置处原来的字符向后移,此序列将增加该参数的长度。处的字符,如果不存在这种字符,则一直到序列尾部。先将子字符串中的字符移除,然后将指定的。中的字符替换此序列的子字符串中的字符。处的字符,如果不存在这种字符,则一直到序列尾部。移除此序列的子字符串中的字符。(如果需要,序列将延长以适应指定的字符串。此对象表示的当前字符序列的长度。将指定的对象追加到此字符序列。hello,熊大熊二光头强。将字符串插入此字符序列中。,且小于等于此序列的长度。返回长度(字符数)。......

2022-07-23 19:16:39 177

原创 字符串(String)常用方法

这是字典排序的定义如果这两个字符串不同,那么它们要么在某个索引处的字符不同(该索引对二者均为有效索引),要么长度不同,或者同时具备这两种情况。如果两个字符串的长度相同,并且其中的相应字符都相等(忽略大小写),则认为这两个字符串是相等的。返回一个新的字符串,它是此字符串的一个子字符串。一个新分配的字符数组,它的长度是此字符串的长度,它的内容被初始化为包含此字符串表示的字符序列。返回此字符串的长度。返回一个新字符串,它是此字符串的一个子字符串。对象表示的字符序列和参数字符串表示的字符序列连接而成的字符序列。..

2022-07-23 17:26:16 311

原创 Integer类面试题及其详解

从他的实现方法可以看出他int在[-128,127]之间的时候他会直接拿缓存,而不会newInteger(),Integer.valueOf()方法基于减少对象创建次数和节省内存的考虑,缓存了[-128,127]之间的数字。此数字范围内传参则直接返回缓存中的对象。在此之外,直接new出来。IntegerCache为Integer类的缓存类,默认缓存了-128~127的Integer值,如遇到[-128,127]范围的值需要转换为Integer时会直接从IntegerCache中获取。...

2022-07-22 18:56:35 763

原创 包装类(Wrapper)的装箱和拆箱

演示包装类和基本数据类型的相互转换,这里以int和Integer演示。八种基本数据类型相应的引用类型——包装类。

2022-07-21 17:38:22 139

原创 三元运算符精度问题

虽然obj是指向了Integer类的数据,可是由于三元运算符是一个整体,所以Double会导致数据精度都会提高。

2022-07-21 16:18:30 255

原创 Java异常-Exception

当程序中出现了某些“错误”,但该错误信息并没有在Throwable子类中描述处理,这个时候可以自己设计异常类,用于描述该错误信息。定义类自定义异常类名(程序员自己写)继承Exception或RuntimeException;如果继承Exception,属于编译异常;如果继承RuntimeException,属于运行异常(一般来说,继承RuntimeException)。if(!thrownewAgeException("年龄需要在18-120之间");}......

2022-07-21 15:06:24 236

原创 Java 注解(Annotation)

使用Annotation时要在其前面增加@符号,并把该Annotation当成一个修饰符使用。用于修饰它支持的程序元素三个基本的Annotation1)@Override限定某个方法,是重写父类方法,该注解只能用于方法2)@Deprecated用于表示某个程序元素(类,方法等)已过时3)@SuppressWarnings抑制编译器警告。...

2022-07-20 16:33:24 118

原创 Java的动态绑定机制

Java的动态绑定机制1.当调用对象方法的时候,该方法会和该对象的内存地址/运行类型绑定2.当调用对象属性的时候,没有动态绑定机制,哪里声明,哪里使用

2022-07-18 21:29:43 211 1

空空如也

空空如也

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

TA关注的人

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