String字符串,FastJson常用操作方法

JSON字符串操作

1、创建配置环境

# 引入测试包testImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-test', version: '2.2.6.RELEASE'
# 创建测试类@RunWith(SpringRunner.class)@SpringBootTestpublic class JsonTest {@Testpublic void test(){System.out.println("xxxxxxx");}
}
  • 注意

    测试的时候需要更改一下idea的设置
    在这里插入图片描述

2、FastJson简介

# FastJson简介FastJson是将Java对象转为JSON格式字符串的过程,JavaBean对象,List集合对象,Map集合应用最为广泛。

3、序列化

# Json的数组形式jsonStr = ['0','1','2','3',4]
  • 测试

    @Test
    public void test(){// 创建数组String arr [] =  {"a", "b", ""};// 将数组转为JSON形式Object json = JSON.toJSON(arr);System.out.println("json = " + json);
    }
    

    在这里插入图片描述

# 序列化:将Java对象转为JSON字符串的过程
  • JSON.toJSONString(序列化java对象)

        @Testpublic void test(){Student student = new Student();student.setUserName("范浩然");student.setAge(12);student.setClassName("初二1班");// 将javaBean对象序列化String studentInfo = JSON.toJSONString(student);System.out.println("studentInfo = " + studentInfo);// 打印对象信息System.out.println("student = " + student);}
    

    在这里插入图片描述

        @Testpublic void test1(){Student student = new Student();student.setUserName("范浩然");student.setAge(12);student.setClassName("初二1班");// 序列化集合信息List<Student> studentList = new ArrayList<>();studentList.add(student);// 序列化集合信息String students = JSON.toJSONString(studentList);System.out.println("students = " + students);}
    

    在这里插入图片描述

        @Testpublic void test2(){Student student = new Student();student.setUserName("范浩然");student.setAge(12);student.setClassName("初二1班");HashMap<String, Student> studentMap = new HashMap<>();studentMap.put("1",student);// 序列化HashMapString studentInfo = JSON.toJSONString(studentMap);System.out.println("studentInfo = " + studentInfo);}
    

    在这里插入图片描述

4、反序列化

    @Testpublic void test3(){//  反序列化 将Json字符串反序列化为Java对象String str = "{\"age\":12,\"className\":\"初二1班\",\"userName\":\"范浩然\"}";// 第一个参数 反序列化的字符串,Java对象的Class对象Student student =  JSON.parseObject(str, Student.class);System.out.println("student = " + student);//  json对象转为数组String str3 = " [{\"age\":12,\"className\":\"初二1班\",\"userName\":\"范浩然\"}]";List<Student> studentList = JSON.parseArray(str3, Student.class);studentList.forEach(item ->{System.out.println(item);});// json字符串转为集合 转换后集合泛型的classString str2 = "{\"1\":{\"age\":12,\"className\":\"初二1班\",\"userName\":\"范浩然\"}}";// 第一个参数 字符串// 直接进行反序列化 Map集合是没有泛型的,没有泛型的集合是不安全的,转换后的集合必须具有泛型,// 调用parseObject传递参数,TypeReference类型,在TypeReference类的泛型中,传递转后的Map集合Map<String,Student> map = JSON.parseObject(str2,new TypeReference<Map<String,Student>>(){});// 遍历Mapmap.entrySet().stream().forEach(item->{// 遍历键值对System.out.println("key:"+item.getKey());System.out.println("value:"+item.getValue());});}

在这里插入图片描述

5、枚举介绍

 @Testpublic void test4(){// 枚举介绍 是进行序列化时 自己可以定义一些特殊的需求// toJSONString()// 参数一:要序列化的对象// 参数二:SerializerFeature枚举类型的可变参数// 常见的方法// 1.序列化Null值的字段Student student = new Student();student.setClassName("高三一班");student.setBirthday(new Date());String studentInfo1 = JSON.toJSONString(student);System.out.println("studentInfo1 = " + studentInfo1);// 序列化空字段String studentInfo2 = JSON.toJSONString(student, SerializerFeature.WriteMapNullValue);System.out.println("studentInfo2 = " + studentInfo2);// 序列化字段把值序列化为双引号String studentInfo3 = JSON.toJSONString(student, SerializerFeature.WriteNullStringAsEmpty);System.out.println("studentInfo3 = " + studentInfo3);// 字段为空的时候 序列化为0String studentInfo4 = JSON.toJSONString(student, SerializerFeature.WriteNullNumberAsZero);System.out.println("studentInfo4 = " + studentInfo4);// 序列化 布尔值为null 序列化为falseString studentInfo5 = JSON.toJSONString(student, SerializerFeature.WriteNullBooleanAsFalse);System.out.println("studentInfo5 = " + studentInfo5);// 序列化日期String studentInfo6 = JSON.toJSONString(student, SerializerFeature.WriteDateUseDateFormat);System.out.println("studentInfo6 = " + studentInfo6);// 格式化字符串可以接收多个String s = JSON.toJSONString(student, SerializerFeature.WriteNullNumberAsZero,SerializerFeature.WriteNullBooleanAsFalse,SerializerFeature.PrettyFormat);System.out.println("s = " + s);}

在这里插入图片描述

6、JSONField注解的使用

1、注解
# 若属性是私有的,必须有set方法,否则无法序列化、1.JSONField可以作用于get/set方法上面2.配置在字段上面
2、作用于字段上面
    @JSONField(name = "username")private String userName;@Testpublic void test5(){Student student = new Student();student.setUserName("范浩然");student.setClassName("高三一班");String studentInfo = JSON.toJSONString(student);System.out.println(studentInfo);}

在这里插入图片描述

3、格式化日期时间
#  使用JSONField格式化日期时间
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")private Date createTime;@Testpublic void test6(){Student student = new Student();// 赋值时间数据student.setCreateTime(new Date());// 转为JSON字符串String studentInfo = JSON.toJSONString(student);System.out.println("studentInfo = " + studentInfo);}

在这里插入图片描述

4、指定字段不序列化
# 可以指定某些字段不序列化1.serialize = false/deserialize
    /*** 指定年龄这个字段不序列化*/@JSONField(serialize = false)private Integer age;@Testpublic void test7(){Student student = new Student();// 虽然给年龄赋值了 但是指定了年龄不序列化 所以结果中年龄只有姓名student.setAge(32);student.setUserName("张三");String studentInfo = JSON.toJSONString(student);System.out.println("studentInfo = " + studentInfo);}

在这里插入图片描述

5、指定字段顺序
# 可以指定某些字段的一个序列化的顺序1.ordinal
    @JSONField(name = "username",ordinal = 1)private String userName;@JSONField(format = "yyyy-MM-dd HH:mm:ss",ordinal = 0)private Date createTime;// 首先序列化 创建时间 在序列化姓名@Testpublic void test8(){Student student = new Student();student.setUserName("范浩然");student.setCreateTime(new Date());String studentInfo = JSON.toJSONString(student);System.out.println("studentInfo = " + studentInfo);}

在这里插入图片描述

6、自定义序列化内容
# 在fastjson 1.2.16版本之后,JSONField支持新的定制化配置serializeUsing,可以单独对某个类的某个属性定制序列化、反序列化。

指定自定义序列化的内容

    /*** 指定自定义序列化字段*/@JSONField(serializeUsing = StudentTypeSerializable.class)private Boolean status;

创建实现序列化内容的类

/*** @author hrFan* @version 1.0* @description: 自定义序列化内容* @date 2022/5/9 星期一*/
public class StudentTypeSerializable implements ObjectSerializer {/**** @param serializer 序列化器* @param object 字段的值* @param fieldName 字段的名称* @param fieldType 字段的类型* @param features 特征* @throws IOException*/@Overridepublic void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {// 获取字段的值Boolean isStatus = (Boolean) object;// 判断字段的值String text = "";if (isStatus = false){text  = "未启用";}else {text = "已启用";}// 进行序列化serializer.write(text);}
}

测试

    @Testpublic void test9(){Student student = new Student();// 设置字段的值student.setStatus(false);String studentInfo = JSON.toJSONString(student);System.out.println("studentInfo = " + studentInfo);}

在这里插入图片描述

7、自定义反序列化内容

指定反序列化字段

    /*** 指定自定义序列化字段*/@JSONField(deserializeUsing = StudentTypeDeSerializable.class)private Boolean status;

创建反序列化内容的类

/*** @author hrFan* @version 1.0* @description: 自定义序列化内容* @date 2022/5/9 星期一*/
public class StudentTypeDeSerializable implements ObjectDeserializer {/**** @param parser Json解析器* @param type 字段类型* @param fieldName 字段名称* @return 反序列化完成的内容*/@Overridepublic Boolean deserialze(DefaultJSONParser parser, Type type, Object fieldName) {String isUse = "已启用";// 获取反序列化的值String status = parser.getLexer().stringVal();Boolean b = false;if (isUse.equals(status)){b = true;}// 返回字段的类型信息return b;}@Overridepublic int getFastMatchToken() {return 0;}
}

测试

    @Testpublic void test10(){// 自定义序列化的内容String studentInfo = "{\"status\":\"已启用\"}";Student student = JSON.parseObject(studentInfo, Student.class);System.out.println("student = " + student);}

在这里插入图片描述

3、String字符串操作

1、isBlank(判断字符串是否为空)

# isBlank 空格是非空1.包含的有空串("")、空白符(空格"","  ",制表符"\t",回车符"\r","\n"等)以及null值;
    @Testpublic void test1(){// 如果为空 返回true 不为空返回falseSystem.out.println("空格 : " + StringUtils.isBlank(" "));System.out.println("字符 : " + StringUtils.isBlank("s"));System.out.println("制表位 : " + StringUtils.isBlank("\t"));}

在这里插入图片描述

2、remove(移除字符)

 # 移除单个字符,也可以是字符串StringUtils.remove(String str, char remove)StringUtils.remove(String str, String remove);# 移除开头/结尾匹配的字符序列StringUtils.removeStart(String str, String remove);StringUtils.removeStartIgnoreCase(String str, String remove);StringUtils.removeEnd(String str, String remove);StringUtils.removeEndIgnoreCase(String str, String remove);
1、移除单个字符串
    @Testpublic void test2(){String str = "test";// 第一个参数 操作的字符串// 第二个参数 匹配删除的字符String afterStr = StringUtils.remove(str, "t");// 原字符串并不会被修改 System.out.println("afterStr = " + afterStr);}

在这里插入图片描述

2、移除匹配的字符串
    @Testpublic void test3(){String str = "testtesttestest";// 移除某个字符串String afterStr = StringUtils.remove(str, "es");System.out.println("afterStr = " + afterStr);}

在这里插入图片描述

3、移除首尾匹配的字符串
@Testpublic void test4(){// 移除开头或者结尾匹配的字符序列String str = "ABCDEFG";String afterStr1 = StringUtils.removeStart(str, "ab");String afterStr2 = StringUtils.removeEnd(str, "fg");System.out.println("-------------------------------------------------");// 删除忽略大小写String afterStr3 = StringUtils.removeStartIgnoreCase(str, "ab");String afterStr4 = StringUtils.removeEndIgnoreCase(str, "fg");System.out.println("afterStr1 = " + afterStr1);System.out.println("afterStr2 = " + afterStr2);System.out.println("afterStr3 = " + afterStr3);System.out.println("afterStr4 = " + afterStr4);}

在这里插入图片描述

3、trim(去除首尾空白)

    @Testpublic void test5(){String str = " demo ";System.out.println("str = " + str);// 去除首尾空白的字符String afterStr = StringUtils.trim(str);System.out.println("afterStr = " + afterStr);}

在这里插入图片描述

4、strip(去掉首尾匹配字符)

    @Testpublic void test6(){String str = "[demoomed]";System.out.println("str = " + str);// 去除首尾的[]// 应用的比较广泛String stripStr = StringUtils.strip(str, "[]");System.out.println("stripStr = " + stripStr);}

在这里插入图片描述

5、replace(替换)

# 注意若被替换的字符串为null,或者被替换的字符或字符序列为null,又或者替换的字符或字符序列为null此次替换都会被忽略,返回原字符串;
# 替换单个字符或字符序列 replace(String text, String searchString, String replacement);replace(String text, String searchString, String replacement, int max);max是指替换最大次数,0:不替换,-1:全部替换replaceChars(String str, char searchChar, char replaceChar);replaceChars(String str, String searchChars, String replaceChars);
# 只会替换一次,后面即使匹配也不替换replaceOnce(String text, String searchString, String replacement);
# 指定位置进行字符序列替换,从start索引处开始(包含)到end-1索引处为止进行替换overlay(String str,String overlay,int start,int end);    
# 可以同时替换多个字符序列,一一对应但被替换和替换的字符序列的个数应该对应,否则会报IllegalArgumentExceptionreplaceEach(String text, String[] searchList, String[] replacementList);StringUtils.replaceEach("test", new String[] { "t", "e" }, new String[] { "T", "E" });StringUtils.replaceEach("test", null, new String[] { "T", "E" });test (存在null,不进行替换)
# IllegalArgumentException (被替换和替换的个数不对应)	     StringUtils.replaceEach("test", new String[] { "t", "e" }, new String[] { "T", "E", "X" }); 
# 循环替换--了解即可replaceEachRepeatedly(String text, String[] searchList, String[]replacementList);StringUtils.replaceEachRepeatedly("test", new String[] { "e", "E" }, new String[] { "E", "Y" }); tYst (e被替换为E,E又被替换为Y)
1、(replace)替换单个字符或者字符序列
    @Testpublic void test7(){String str = "abc123abc";// 第一个参数 源字符串 第二个参数 需要替换的字符 三个参数 需要替换的字符串// 第四个参数 max是指替换最大次数,0:不替换,-1:全部替换String replaceStr1 = StringUtils.replace(str, "abc", "000");String replaceStr2 = StringUtils.replace(str, "abc", "000",1);// 当max设置为1时等价于只替换一次String replaceStr3 = StringUtils.replaceOnce(str, "abc", "000");System.out.println("replaceStr1 = " + replaceStr1);System.out.println("replaceStr2 = " + replaceStr2);System.out.println("replaceStr3 = " + replaceStr3);}

在这里插入图片描述

2、(overlay)替换指定位置字符串序列
    @Testpublic void test8(){String str = "system is very good";// 指定位置开始替换 直接替换除了首尾的字符String afterStr = StringUtils.overlay(str, "--------", 1, str.length()-1);System.out.println("afterStr = " + afterStr);}

在这里插入图片描述

3、(replaceEach)批量替换
    @Testpublic void test9(){String str = "abcdefgabcdefg";// 替换多个字符序列String [] arr1 = { "a", "b"};String [] arr2 = { "A", "B"};// 注意 替换的个数一定要一致不然报异常String afterStr = StringUtils.replaceEach(str, arr1, arr2);System.out.println("afterStr = " + afterStr);}

在这里插入图片描述

6、(reverse)反转

    @Testpublic void test10(){String str1 = "123456789";String str2 = "1-2-3-4-5-6-7-8-9";// 字符串反转String afterStr1 = StringUtils.reverse(str1);// 根据分隔符反转String afterStr2 = StringUtils.reverseDelimited(str2,'-');System.out.println("afterStr1 = " + afterStr1);System.out.println("afterStr2 = " + afterStr2);}

在这里插入图片描述

7、(substring)截取

# 截取1.从左到对右下标默认从0开始,从右往左下标默认从-1开始
    @Testpublic void test11(){String str1 = "0123456789";// 从第五个位置开始截取String afterBefore1 = StringUtils.substring(str1, 5);// 指定截取的开始位置和结束位置String afterBefore2 = StringUtils.substring(str1, 0, 5);System.out.println("afterBefore1 = " + afterBefore1);System.out.println("afterBefore2 = " + afterBefore2);}

在这里插入图片描述

# 根据指定的分隔符进行截取
# substringAfter从分隔符第一次出现的位置向后截取
# substringBefore从分隔符第一次出现的位置向前截取
# substringAfterLast从分隔符最后一次出现的位置向后截取
# substringBeforeLast从分隔符最后一次出现的位置向前截取
# substringBetween截取指定标记字符之间的字符序列
    @Testpublic void test12(){String str = "ab-cd-ef-gh-ij-kl-mn-op-qr";// 从分隔符第一次出现的位置向后截取String afterStr1 = StringUtils.substringAfter(str, "-");String afterStr2 = StringUtils.substringBefore(str, "-");System.out.println("afterStr1 = " + afterStr1);System.out.println("afterStr2 = " + afterStr2);System.out.println("------------------------------------------------");// 从分隔符最后一次出现的位置向前或者向后截取String afterStr3 = StringUtils.substringAfterLast(str, "-");String afterStr4 = StringUtils.substringBeforeLast(str, "-");System.out.println("afterStr3 = " + afterStr3);System.out.println("afterStr4 = " + afterStr4);System.out.println("------------------------------------------------");// 截取指定标记字符之间的序列String str2 = "A00000000000000000000000000000000000000A";String afterStr5 = StringUtils.substringBetween(str2, "A");System.out.println("afterStr5 = " + afterStr5);}

在这里插入图片描述

8、(containsOnly)包含

# 包含判断字符串中的字符是否都是出自所指定的字符数组或字符串   StringUtils.containsOnly(str, validChars);需要注意的是:前面的字符是否都出自后面的参数中,也是拆为数组来比较
    @Testpublic void test13(){String str = "Happiness is a way station between too much and too little";// 注意 他是拆分成字符数组比较的(所以只要有to这个字符串序列 就会匹配成功) 注意顺序// 判断字符序列中是否包含一个字符或一个字符序列// str中是否包含to这个字符序列boolean isExistTo1 = StringUtils.containsOnly("to",str);boolean isExistTo2 = StringUtils.containsOnly("ato",str);System.out.println("isExistToo1 = " + isExistTo1);System.out.println("isExistToo2 = " + isExistTo2);// 用于检测字符串是否以指定的前缀开始boolean isHappinessPrefix = StringUtils.startsWith(str,"Happiness");System.out.println("isHappinessPrefix = " + isHappinessPrefix);}

在这里插入图片描述

9、(indexOf)查找字符索引

# indexOf返回在字符串中第一次出现的位置,如果没有在字符串中出现,则返回-1
# lastIndexOf返回在字符串中最后一次出现的索引
# indexOfAny返回字符数组第一次出现在字符串中的位置
# indexOfAnyBut子字符串与主字符串不匹配部分的位置StringUtils.indexOfAnyBut("sdsfhhl0","h");//结果是0StringUtils.indexOfAnyBut("sdsfhhl0","s");//结果是1StringUtils.indexOfAnyBut("aa","aa");//结果是-1
# indexOfDifference统计两个字符串共有的字符个数
# difference去掉两个字符串相同的字符以后的字符串
    @Testpublic void test14(){String str = "hello,world";// 查找字符出现的位置int index1 = StringUtils.indexOf(str, "l");System.out.println("index1 = " + index1);// 查找字符最后出现的索引位置int index2 = StringUtils.lastIndexOf(str,"l");System.out.println("index2 = " + index2);// 查找字符串第一次出现的索引的位置int index3 = StringUtils.indexOfAny(str, "l");System.out.println("index3 = " + index3);// 查找字符和字符串不匹配的开始位置int index4 = StringUtils.indexOfAnyBut(str,"we");System.out.println("index4 = " + index4);// 统计两个字符串开始共有的字符个数int number = StringUtils.indexOfDifference(str,"hello");System.out.println("number = " + number);// 去除两个字符串开始共有的部门String afterStr = StringUtils.difference(str,"hello,java");System.out.println("afterStr = " + afterStr);}

在这里插入图片描述

10、首字母大小写

# capitalize首字母大写
# uncapitalize首字母小写
    @Testpublic void test15(){String str = "fhr";System.out.println("str = " + str);// 首字母变为大写String capitalize = StringUtils.capitalize(str);System.out.println("首字母大写 = " + capitalize);// 首字母变为小写String uncapitalize = StringUtils.uncapitalize(capitalize);System.out.println("首字母小写 = " + uncapitalize);// 全部变为大写String upperCase = StringUtils.upperCase(capitalize);System.out.println("全部变为大写 = " + upperCase);// 全部变为小写String lowerCase = StringUtils.lowerCase(upperCase);System.out.println("全部变为小写 = " + lowerCase);}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/694378.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于Linux中使用退格键出现^H的问题解决

关于Linux中使用退格键出现^H的问题解决 今天在Linux下执行脚本和监听端口的输入时候&#xff0c;不小心输错内容想要删除用退格键发现变成了^H&#xff0c;从网上查了资料并且实际应用了一下&#xff08;我的虚拟机是CentOS7&#xff09;。 使用ctrl退格键即可成功删除内容 …

LeetCode.105. 从前序与中序遍历序列构造二叉树

题目 105. 从前序与中序遍历序列构造二叉树 分析 这道题是告诉我们一颗二叉树的前序和中序&#xff0c;让我们根据前序和中序构造出整颗二叉树。 拿到这道题&#xff0c;我们首先要知道前序的中序又怎样的性质&#xff1a; 前序&#xff1a;【根 左 右】中序&#xff1a;…

Linux用到的命令

1 压缩文件 tar -czf wonderful.tar.gz pm 这个命令的作用就是创建一个以.tar.gz结尾的包文件&#xff0c;然后调用gzip程序将当前目录下的pm文件夹压缩到这个以.tar.gz结尾的文件里面去

【已解决】PPT无法复制内容怎么办?

想要复制PPT文件里的内容&#xff0c;却发现复制不了&#xff0c;怎么办&#xff1f; 这种情况&#xff0c;一般是PPT文件被设置了以“只读方式”打开&#xff0c;“只读方式”下的PPT无法进行编辑更改&#xff0c;也无法进行复制粘贴的操作。 想要解决这个问题&#xff0c;我…

激光雷达反光板算法总结

1 高反特征提取 首先,从雷达原始数据,提取到高反点;根据雷达的规格书提供的不同材料的强度,设定合适的阈值;;更优的方法是根据距离设定不同的阈值 2 反光板及反光柱的聚类 根据高反点是否连续进行聚类,同时结合距离及雷达的角度分辨率,计算出针对不同尺寸的反光板或反…

多任务互斥及队列

一.互斥的引入 在FreeRTOS中&#xff0c;互斥&#xff08;Mutex&#xff09;是一种用于保护共享资源的机制。互斥锁可以确保同一时间只有一个任务能够访问共享资源&#xff0c;从而避免了竞态条件和数据不一致的问题。 FreeRTOS中互斥的引入方法&#xff1a; 创建互斥锁&#…

win10开机黑屏,explorer.exe文件找不到

一、问题 今天清理c盘时&#xff0c;不知道做了什么操作&#xff0c;把相关文件弄没了&#xff0c;然后电脑开机黑屏&#xff0c;进入不了桌面&#xff0c;能看见鼠标。 二、解决办法 网上搜了一些解决办法&#xff1a;ctrlshftdelete 打开任务管理器》运行新任务》输入expl…

MySQL数据库基础(十二):子查询(三步走)

文章目录 子查询&#xff08;三步走&#xff09; 一、子查询&#xff08;嵌套查询&#xff09;的介绍 二、子查询的使用 三、总结 子查询&#xff08;三步走&#xff09; 一、子查询&#xff08;嵌套查询&#xff09;的介绍 在一个 select 语句中,嵌入了另外一个 select …

《Linux C编程实战》笔记:消息队列

消息队列是一个存放在内核中的消息链表&#xff0c;每个消息队列由消息队列标识符标识。与管道不同的是消息队列存放在内核中&#xff0c;只有在内核重启&#xff08;即操作系统重启&#xff09;或显示地删除一个消息队列时&#xff0c;该消息队列才会被真正的删除。 操作消息…

OPPO公布全新AI战略,AI 手机时代再提速

2024年2月20日&#xff0c;深圳——今日OPPO 举办 AI 战略发布会&#xff0c;分享新一代 AI 手机的四大能力特征&#xff0c;展望由AI驱动的手机全栈革新和生态重构的趋势&#xff0c;并发布由OPPO AI 超级智能体和 AI Pro 智能体开发平台组成的OPPO 1N 智能体生态战略&#xf…

Android基础Adapter适配器详解

一、概念 Adapter是后端数据和前端显示UI的适配器接口。常见的View如ListView、GridView等需要用到Adapter. BaseAdapter&#xff1a;抽象类&#xff0c;实际开发中继承这个类并且重写相关方法&#xff0c;用得最多的一个Adapter&#xff01; ArrayAdapter&#xff1a;支持泛型…

数字化商品管理:革新鞋服零售模式,引领智能商业新时代

随着科技的快速发展&#xff0c;数字化浪潮席卷各行各业&#xff0c;鞋服零售企业亦不例外。在这个新时代&#xff0c;数字化商品管理不仅成为鞋服零售企业革新的关键&#xff0c;更是其引领智能商业浪潮的重要引擎。本文将围绕数字化商品管理如何深刻影响鞋服零售模式&#xf…

力扣 309. 买卖股票的最佳时机含冷冻期

题目来源&#xff1a;https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-cooldown/description/ C题解&#xff1a;动态规划 状态1&#xff1a;表示持有股票。更新为之前持有股票&#xff08;dp[i-1][0]&#xff09;或者不持有股票且不处于冷冻期后买入&…

make_shared_for_overwrite

这个函数用来malloc数组&#xff0c;但不初始化。 不过这个仅限于内置类型。如果是用户写的&#xff0c;就会增加自动初始化&#xff08;调用客户写的初始化&#xff09;。

Java基于SSM的羽毛球馆管理系统,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

[word] word带圈数字20以上 #笔记#笔记

word带圈数字20以上 办公中有时候需要用到带圈数字&#xff0c;超过20的数字就不能直接编辑了&#xff0c;那么20以上带圈数字要怎么输入呢&#xff1f;其实通过小技巧就能完成的&#xff0c;接下来就给大家介绍下呢&#xff0c;一起看看吧&#xff01; 20以上带圈数字输入技巧…

Java Swing游戏开发学习1

不使用游戏引擎&#xff0c;只使用Java SDK开发游戏的学习。 游戏原理 图片来自某大佬视频讲解 原理结合实际代码 public class GamePanel extends Jpanel implements Runnable {...run(){}// 详情看下图... }项目结构 运行效果 代码code 在我的下载里面可以找到&#xf…

USART(串口发送接受单字节)

一、硬件 差分信号不需要太大的压差。在相同的电磁干扰的环境下&#xff0c;因为是双扭线&#xff0c;两根线受干扰的程度是一样的&#xff0c;所以压差相对不变。提高抗干扰能力。485是双绞线传输取的是两线的压差。一般来说受干扰后同步变化&#xff0c;比如都升0.5V或都降5…

PROBIS铂思金融破产后续:ASIC牌照已注销

2024年1月31日&#xff0c;PROBIS铂思金融的澳大利亚ASIC牌照 (AFSL 338241) 被注销《差价合约经纪商PROBIS宣布破产&#xff0c;澳大利亚金融服务牌照遭暂停》&#xff0c;这也就意味着&#xff0c;PROBIS铂思金融目前已经没有任何金融牌照。 值得注意的是&#xff0c;时至今日…

Python实现线性逻辑回归和非线性逻辑回归

线性逻辑回归 # -*- coding: utf-8 -*- """ Created on 2024.2.20author: rubyw """import matplotlib.pyplot as plt import numpy as np from sklearn.metrics import classification_report from sklearn import preprocessing from sklearn…