- 博客(48)
- 收藏
- 关注
原创 python中的defaultdict
collections.defaultdict 是 collections 模块提供的一个有用的类,它是内置字典类 dict 的一个子类。与普通字典一样,可以进行元素的访问、添加、删除等操作。区别在于当访问一个不存在的键时,defaultdict 会返回默认值,而不会引发 KeyError 错误。
2024-03-05 14:35:25
235
原创 RabbitMQ
在RabbitMQ中,如果Pushlisher发送的消息是基本数据类型或String类型,可以在Consumer中直接使用对应类型或可以转换的类型进行接收。如果发送的消息是对象或集合这种复杂类型,旧版本RabbitMQ会把这些数据进行序列化后放入到Message的body中。Consumer接收时方法参数应该为Message,并对Message中body进行反序列获取到对象或集合数据。新版本则直接可以用实体类作为参数。正常情况下,应该有一个公共项目,里面写上实体类,这个项目分别被和去依赖。
2023-06-26 15:55:13
451
原创 那些年,我没答出来的面试题
解决办法:rollbackFor = Exception.class如果确实想调用另一个方法,在Service类中注入自己,或AopContext.currentProxy()获取代理对象。
2023-06-12 18:31:55
270
原创 并发问题汇总
取消订单的定时任务和订单支付的业务会出现并发问题。即已经被取消的订单可能会被误支付,或者恰好订单支付完时,被取消订单。可以使用SETNX命令在Redis中设置一个键值对,键为订单ID,值为一个唯一的标识符,来实现分布式锁。在修改订单状态之前,先使用SETNX命令判断该订单ID是否已经被锁定。如果该订单ID已经被锁定,则表示有其他线程正在修改该订单,当前线程则不能修改改订单。如果该订单ID没有被锁定,则可以将其锁定,并进行状态修改操作。
2023-05-11 17:33:46
1088
原创 HTML超文本标记语言
HTML超文本标记语言单标签(完结标签)双标签单标签(完结标签)双标签font字体标签color属性修改字体颜色face属性修改字体size属性修改文本大小<font color="red" face="宋体" size="7">我是字体标签</font>h1-h6标题标签align属性左对齐(left)/居中(center)/右对齐(right)<h1 align="left">这是一级标
2021-09-25 14:29:11
162
原创 数据查询语言(DQL)
数据查询语言(DQL)基础查询1.查询表中的单个字段2.查询表中的多个字段3.查询表中所有字段(*代表所有)4.查询常量值5.查询表达式6.查询函数7. 给查询列表起别名8.去重(去除重复的数据),在select后加distinct9.+号的作用10.concat拼接函数,用于拼接字符串11.if null函数12. isnull函数条件查询按条件表达式筛选按逻辑表达式筛选模糊查询1.like2. between···and···3.in4. is null 或者is not null5.安全等于&
2021-09-18 10:07:49
511
原创 32.缓冲流和对象流
这里写目录标题概念字符缓冲输入流字符缓冲输出流CSV文件的读写读写Properties文件读写简介写读对象流(了解)序列化ObjectOutputStream反序列化 ObjectInputStream总结概念缓存是IO的一种性能优化,缓存流为IO流增加了内存缓存区。有了缓存区,便可以减少系统直接与硬盘交互传输的次数,增加每次传送的数据量,借以提高传输效率,保护硬件。没有缓存功能的流当去输出时直接存入硬盘或目的地,如果有缓冲功能,则会将输出的内容先放置到缓存区中,等到有一定的数据量的时候,或者是调用cl
2021-09-07 15:44:42
325
原创 31java的IO流
流的分类File对象可以表示存在的文件或文件夹,也可以表示不存在的。我们想要得到文件的内容怎么办,File只是操作文件,文件的内容如何处理就需要使用io流技术了。 I/O类库中使用“流”这个抽象概念。Java对设备中数据的操作是通过流的方式。“流”屏蔽了实际的I/O设备中处理数据的细节。IO流用来处理设备之间的数据传输。设备是指硬盘、内存、键盘录入、网络等。Java用于操作流的对象都在IO包中。IO流技术主要用来处理设备之间的数据传输。 由于Java用于操作流的对象都在IO包中。所以使用IO.
2021-09-05 21:53:51
109
原创 30.递归
概念程序调用自身的编程技巧称为递归。递归做为一种[算法在程序设计语言中广泛应用。public class Test { public static void main(String[] args) {// //求1-5之间所有数字的和// int sum = 0;// for(int i=1;i<=5;i++) {// sum = sum + i;// }// System.out.println(sum); System.out.println("----
2021-09-05 21:43:02
82
原创 29.File类
这里写目录标题File类简介File类常用方法File类简介存储在变量,数组和对象中的数据是暂时的,当程序终止时他们就会丢失.为了能够永久的保存程序中创建的数据,需要将他们存储到硬盘或光盘的文件中。为了操作这些文件,我们需要学习一个和文件有密切关系的类,叫做File类。提示: windows系统中以/或\来进行文件路径之间的分隔,而linux以/分隔,如果要让代码跨平台可以使用File.separatorChar自动根据系统来匹配分隔符。File类常用方法package com.woniuxy
2021-09-05 21:39:46
101
原创 28.异常
异常异常简介异常的分类常见的异常类型异常处理异常的常用方法finally多重try-catch声明异常throwsthrow**自定义异常类**自定义非运行时异常类自定义运行时异常类案例案例1案例2异常简介异常就是程序不正常。异常的后果: 异常会导致程序非正常终止异常的处理: 我们需要在程序出现异常的时候能够继续往下执行,这个时候我们就需要对异常做处理异常的分类常见的异常类型异常处理try-catch块 //我们使用try-catch对异常做处理,保证程序出现异常后不会终止,而会继
2021-09-05 21:36:05
93
原创 27.集合框架
集合集合简介集合的概念集合和数组的区别集合的结构ArrayList集合集合的增删改查集合的其他方法集合的泛型Set集合hashSet集合hashSet集合的增删改查hashSet集合的应用集合简介集合的概念集合是存储对象的容器,面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的存储和操作,集合是存储对象最常用的一种方式。集合中可以存储任意类型的对象, 而且长度可变。在程序中有可能无法预先知道需要多少个对象, 那么用数组来装对象的话, 长度不好定义, 而集合解决了这样的问题。集合和数
2021-09-05 21:17:14
254
原创 26.API文档中的常用工具类
API文档中的常用工具类Object类数组工具类Arrays数学工具类MathUUID类Random类查看源码Object类equals()用来比较两个对象是否相等 --比较的是对象的内存地址。toString()如果子类没有重写父类Object类的toString方法,这个时候直接输出对象,结果是对象的内存地址如果子类重写父类Object类中的toString方法,这个时候直接输出对象,结果是执行子类重写后的toStirng方法,输出对象的字符串表现形式hashCode()获取对象的哈希
2021-08-27 12:17:37
244
原创 25.匿名对象和内部类
一般在编写代码时可能会遇到这样的场景——在某些时候,我需要定义并某个类,但是只会使用这一次,或者是某个类对象只会使用一次,为它们专门取名可能会显的很麻烦。为了应对这种情况,Java中允许使用匿名对象和内部类的方式来解决这个问题。匿名对象【重点】匿名对象就是没有对象名的对象匿名对象只能使用一次,使用完后会被jvm的垃圾回收器从内存中清理掉如果一个程序中创建了多个对象,程序的运行会很慢,这时,如果有的对象在程序运行过程中只会使用一次,就可以使用匿名对象匿名对象通常被作为方法的参数进行传递案例:用
2021-08-27 12:10:50
210
原创 23.Package(包)机制
什么是包?包机制是Java语言中所特有的一种机制,主要是因为Java本身跨平台特性的需要; Java语言使用包(package)将类组织起来,借助包可以方便的组织自己的代码,并将自己的代码与别人提供的代码库分开管理; 在项目开发过程中使用包的另一主要原因是确保类名的唯一性; 为了确保包名的唯一性,SUN公司建议将项目开发者的因特网域名以逆序的形式作为包名,并且对不同的项目 使用不同的子包。包的命名规范全部都由小写字母或数字组成。多级包之间使用点间隔。创建格式:公司的域名倒着写,域名就是公司的
2021-08-24 17:09:20
307
原创 21.抽象类
什么是抽象?类到对象是实例化,对象到类是抽象。什么是抽象类?如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象类是被abstract修饰的类,抽象类不能被直接创建对象,只能作为父类被子类继承,由子类创建对象。抽象类属于什么类型?抽象类也属于引用数据类型抽象类的语法格式:【修饰符列表】 abstract class 类名{ 类体;}抽象类的特点final和abstract无法联合使用,这两个关键字是对立的。抽象类的子类可以是抽象类,抽象类也可以继承普通类,
2021-08-24 15:46:46
484
原创 20.final、super关键字
final关键字final可以定义常量,常量的值为最终值,不可以被修改。final可以修饰一个类,被final修饰的类为最终类,不可以被继承,没有子类。final可以修饰方法,被final修饰的方法为最终方法,不能被重写。super 关键字super关键字:super只能出现在子类中,用来访问父类的属性和方法super调用父类的构造方法,必须把super()写在子类构造方法的第一行。就算不写,在子类构造方法的第一行,也默认有super()。super调用父类的普通方法和成员属性在子类的任意
2021-08-24 12:59:24
111
原创 19.方法的覆盖重写
概念子类继承父类之后,当父类的方法无法再满足子类的功能需求时,在子类中对父类的方法重新定义,只改变方法的方法体,不改变方法名和参数列表。子类对象调用的是被重写之后的方法重载(overload)与重写(override)的区别位置不同:方法的重载发生在一个类中,方法的重写发生在具有继承关系的子类里面。写法不同:方法的重载–多个方法,方法名相同,参数列表不同。方法的重写–子类重写父类的方法,方法名和参数列表必须跟父类的方法一致。多态不同—重载是编译时的多态性,重写是运行时的多态性。返回不同—重
2021-08-23 21:16:56
82
原创 18.java的继承机制
继承的概念继承是面向对象的三大基本特征之一。继承的语法步骤:1.把多个类中公共的属性和方法(变量名和方法名都相同)都抽取到一个类中,作为父类。2.使用extends表示继承关系,子类继承父类。继承的特点:1.构造方法不能被继承(构造方法的方法名称跟类名一致)。2.一个父类可以有多个子类,但一个子类只能有一个父类。3.可以多重继承,也就是A继承B,B继承C。4.私有的属性和方法不能被继承。继承的优缺点优点:提高代码的复用性,降低程序的冗余度。缺点:继承破坏了封装性。继承提高了代码的耦
2021-08-23 21:04:05
318
原创 17.java的封装机制
java的封装什么是封装封装的步骤封装的好处什么是封装封装,是面向对象编程的核心思想之一,指的就是将描述某种实体的数据和基于这些数据的操作集合到一起,形成一个封装体其实生活中就有很多封装的案例。以电视机为例,每一台电视机的内部都有很多线路和零件,制造商为了减少零件老化会给零件外面涂上防氧化涂层,为了避免人为破坏,保证零件的完整性,制造商会用外壳把内部器件封存起来,而我们想要看电视就通过遥控器进行操作。隐藏了内部细节,对外只提供简单的操作入口,这就是电视机的封装。java的封装原理和电视机的封装类似。
2021-08-22 23:15:48
378
原创 15.对象的输出
如果直接输出对象,这个时候输出的是对象在计算机内存中的地址,并且不同的对象,他们的内存地址也不一样。如下图所示:但是,如果在类中生成一个toString方法,我们再输出对象,程序会自动调用toString方法。...
2021-08-20 21:02:24
882
原创 14.this关键字
当方法的局部变量和类的成员变量重名的时候,系统是区分不了哪个是成员变量,哪个是局部变量的,于是就会根据“就近原则”,优先使用局部变量。如果需要访问本类当中的成员变量,需要使用格式:this.成员变量名this关键字的作用:用于区分成员变量和局部变量之间的重名问题...
2021-08-20 21:02:10
72
原创 16.变量的作用域
变量的作用域是面向对象中一个非常重要的知识点。每一个变量在定义之初,都有一个作用范围(也叫作用域),一旦超出变量的作用域,就无法再使用这个变量。按照变量的定义位置和作用范围,我们把变量分为一下几类:成员变量、局部变量、全局变量。成员变量一种定义在类里面,方法外面的变量。可以在整个类中使用,在其他类中只能通过类名.变量名的方式来访问。成员便量即使没有赋值,系统也会给个默认值。成员变量的默认值规则和数组一样,规则如下:如果是整数类型,那么默认值为0;如果是浮点类型,那么默认值为0.0;如果是布尔类
2021-08-20 21:01:31
2521
原创 13.java构造方法
构造方法构造方法是一种特殊的方法。格式: 修饰符 类名(参数){ 方法体; } 特点:方法名称和类名一致构造方法没有返回值构造方法可以重载功能:主要是完成对象数据的初始化作用:创建对象当一个类中,没有给任何的构造方法,系统将会给出一个默认的构造方法。如果手写了一个构造方法,会把默认的无参构造方法覆盖掉,。为了保证程序运行正常,需要手动加上无参构造方法。其实在创建对象的同时,会调用构造方法,构造方法是在对象创建的时候执行。如下图所示,我们创建了一个对象pro,此时
2021-08-20 00:49:50
121
原创 12.java中的方法(二)
方法的重载对于功能类似的方法来说,因为参数列表不一样,往往却要定义多个方法名,太麻烦。比如定义四个方法,分别是实现两数相加、三数相加、四数相加、两字符串拼接的功能。那么我们就得定义四个方法名:sumTwo、sumThree、sumFour、sumString。定义太多的方法名很容易记不清,由此我们引出了方法的重载。概念: 所谓方法的重载,就是在同一个类中,对于多个具有相似功能的方法,全都定义相同的方法名称。方法名相同,但是参数列表不同(参数个数,参数的数据类型),可以公用一个方法名调用: 在方法调用
2021-08-19 17:03:36
160
原创 11.java中的方法(一)
方法:就是将一个功能抽取出来,把代码单独放在一个大括号内,形成一个单独的功能。当我们需要这个功能的时候,就可以去调用这个方法。这样既实现了代码的复用性,也解决了代码冗余的现象。方法的定义格式①:public static void 方法名称(){方法体;}方法体:也就是写在方法中的代码,可以包含任意条语句。注意事项:1.方法定义的先后顺序无所谓。2.方法之间是平行的关系,方法的定义不能包含嵌套关系。3.方法定义好了之后,是不会执行的。如果想要执行,一定要进行方法的调用。如何调用方法:格
2021-08-19 17:03:08
433
原创 10.java数组
java数组一级目录二级目录三级目录数组的概念:一种容器,可以同时存放多个数据值。数组的特点:数组是一种引用数据类型。数组当中有多个数据,数据类型必须统一。数组的长度在程序运行期间不可以改变。数组的初始化:在内存中创建一个数组,并且向其中赋予一些默认值。两种常见的初始化方式:1、动态初始化(直接指定数组的长度)2、静态初始化(指定该数组的内容)动态初始化的格式:数据类型 [ ] 数组名称 = new 数据类型[数组长度] ;解析含义:左侧数据类型:也就是数组当中保存的数据
2021-08-18 14:48:03
411
原创 8.java循环结构
循环:1.概念:将重复的操作反复在一个地方执行。2.作用:减少代码的冗余,提高可读性。3.分类:while 当型循环do…while 直到型循环for循环(企业开发中使用最多的循环)while语法while(循环条件){ }...
2021-08-16 20:25:27
255
1
原创 7.java分支结构
基本if语句语句格式: if ( 关系表达式 ) { 语句体; }执行流程:首先计算关系表达式的值。如果关系表达式的值为true就执行语句体。如果关系表达式的值为false就不执行。继续执行后面的语句体。案例:当王粱上个月销售额大于10000元,并且这个月销售额大于10000元,或者上个月销售额不小于15000元时,主管奖励他。 //1.定义变量存储王梁上个月的销售额 int lastMonth = 12000; //2.定义变量存储王梁这个月的销售额 in
2021-08-12 16:59:28
238
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人