- 博客(104)
- 收藏
- 关注
原创 Redis的共享session的应用-短信登录
其中的表有tb_user:用户表tb_user_info :用户详情表tb_shop:商品信息表tb_shop_type:商户类型表tb_blog:用户日记表(达人探店日记)tb_follow:用户关注表tb_voucher:优惠卷表tb_voucher_order:优惠卷的订单表黑马点评架构。
2023-03-27 20:36:39
149
原创 Redis基本数据结构介绍和Redis的java客户端的简单操作
Redis是一个一个Key-Value的数据库,key一般是String类型,不过Value的类型多种多样。
2023-03-26 21:06:42
214
原创 Spring Bean 的生命周期
pring容器帮助我们去管理对象,从对象的产生到销毁的环节都有容器来控制,其中主要包含实例化和初始化两个过程,当然在整个过程中会有一些扩展的存在
2023-03-02 23:26:58
15
原创 Cannot deserialize value of type `java.time.LocalDateTime` from String “2022-12-28 11:22:44“: Failed
【代码】Cannot deserialize value of type `java.time.LocalDateTime` from String "2022-12-28 11:22:44": Failed。
2022-12-28 16:13:44
277
原创 尚融宝 阿里云存储 0SS
阿里云存储oss 参考SDK中的:Java->上传文件->简单上传->流式上传->上传文件流。创建常量读取工具类:OssProperties.java。创建Service接口:FileService.java。Service接口:FileService.java。实现:FileServiceImpl.java。实现:FileServiceImpl.java。
2022-12-21 10:39:52
32
转载 com.fasterxml.jackson.databind.exc.MismatchedInputException: Expected array or string.
由上图第一行和中间标记部分了解到报错应该和LocalDateTime序列化和反序列化有关。1.在实体类对应时间属性上加上注解。
2022-12-12 20:36:55
304
原创 MyBatis association解决多对一和collection解决一对多的映射关系
此时可通过association和collection中的fetchType属性设置当前的分步查询是否使用延迟加载,fetchType=“lazy(延迟加载)|eager(立即加载)”select:设置分步查询的SQL的sql的唯一标识(namespace.SQLId或mapper接口的全类名.方法名)aggressiveLazyLoading:当开启时,任何方法的调用都会加载该对象的所有属性。此时就可以实现按需加载,获取的数据是什么,就只会执行相应的sql。association:处理多对一的映射关系。
2022-11-26 14:17:43
575
原创 MyBatis 解决字段名和属性名的映射关系的几种方式
2.在mybatis-config.xml设置驼峰命名。3.通过resultMap自定义设置。没有设置对应字段名和属性名映射之前。1.通过SQL语句给字段设置别名。
2022-11-25 18:03:01
74
转载 Mybatis主键递增报错Column ‘id‘ cannot be null
查看对应Mapper文件,已经设置主键自增策略。查看数据库表,也已经设置主键id自增。
2022-11-25 13:45:41
209
原创 MyBatis 参数传递
③ Collection:封装为map集合,可以使用@Param注解,替换Map集合中默认的arg键名。⑤ Array:封装为Map集合,可以使用@Param注解,替换Map集合中默认的arg键名。④ List:封装为map集合,可以使用@Param注解,替换Map集合中默认的arg键名。2.多个参数:封装为Map集合,可以使用@Param注解,替换Map集合中默认的arg键名。map.put(“collection”,collection集合)map.put(“collection”,list集合)
2022-11-23 17:13:40
139
原创 MyBatis 增删改查操作
mybatis 是一款优秀的持久层框架,用于简化 JDBC 开发MyBatis 本是 Apach 的一个开源项目 iBatis,2021 年这个项目由 apach software foundation 迁移到了 google code,并且改名为 MyBatis。2013 年 11 月迁移到 GitHub。
2022-11-23 15:54:06
468
原创 Java8新增日期类LocalDateTime,LocalDateTime与Date相比有什么优势
SimpleDateFormat可以对Date对象,进行格式化和解析1.SimpleDateFormat的构造方法2.SimpleDateFormat格式化和解析日期① 格式化(从Date到String)public String format(Date date):将日期格式化日期/时间字符串,把时间按照固定格式展示② 解析(从String到Date)pubic Date parse(String source):从给定字符串的开始解析文本以生成文本,需要对时间进行计算格式化。
2022-11-13 21:01:55
425
原创 StringBuilder常用方法及与String的区别和联系
StringBuilder是一个可变的字符串类,我们可以把它看成一个容器1.作用提高字符串的操作效率//用时:11 StringBuilder sb = new StringBuilder();i ++) {//用时:878 long start = System . currentTimeMillis();} }2.常用构造方法3.常用方法4.StringBuilder和String区别String:内容是不可变的。
2022-11-13 15:55:36
151
原创 String类常用方法
1.特点① String类在java.lang包下,所以使用的时候不需要导包② String类代表字符串,java程序中的所有字符串文字(例如"abc")都被实现为此类的实例,也就是说,Java程序中所有的双引号字符串,都是String类对象③ 字符串不可变,它们的值在创建后不可更改④ 虽然String的值是不可变的,但是它们可以被共享2.String常见构造方法。
2022-11-13 14:17:29
140
原创 什么是UDP、TCP,怎么用UDP和TCP实现网络通信和数据传输
网络编程:就是让两台计算机进行数据交互网络编程三要素IP地址:设备在网络中的地址,是唯一的标识端口:应用程序在设备中的唯一标识协议:数据在网络中传输的规则,常见的协议有UDP协议和TCP协议1.IPIP:全称"互联网协议地址",也称IP地址。是分配给上网设备的数字标签。常见的ip分类为:IPv4和IPv6IPv4:IPv6:由于互联网的蓬勃发展,IP地址的需求量愈来愈大,而IPv4的模式下IP的总数是有限的。采用128位地址长度,分成8组。
2022-11-12 19:00:37
1059
原创 Java IO流、字节流、字符流、缓冲流、对象操作流、Properties基础详解
byte[] getBytes(String charsetName):使用指定的字符集将该String编码为一系列字节,将结果存储到新的字节数组中。byte[] getBytes():使用平台的默认字符集将该String编码为一系列字节,将结果存储到新的字节数组中。比如说IO流中的释放资源。可以把对象以字节的形式写到本地文件中,直接打开文件,是都不懂的,需要再次用对象操作流读到内存中。对象操作输出流(对象反序列化流):把写到本地文件中的对象读到内存中,或者接收网络中传输的对象。
2022-11-12 13:51:30
255
原创 java-File类
③ 如果要删除一个有内容的文件夹,只能先进入到这个文件夹,把里面的内容删除完毕,才能再次删除这个文件夹,即只能删除文件和空文件夹。⑤ 当调用者是一个有隐藏文件夹时,将里面所有文件和文件夹的路径放在File数组中返回,包含隐藏内容。④ 当调用者是一个有内容的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回。② File封装的对象仅仅是一个路径名,它可以是存在的,也可以是不存在的。② 如果删除的是文件,那么直接删除,那么只能删除空文件夹。③ 当调用者是一个空文件夹时,返回一个长度为0的数组。
2022-11-03 17:12:24
127
原创 什么是类加载器,类加载器如何分类
③ 在内存中生成一个代表这个类的java.lang.Class对象,任何类被使用时,系统都会为创建一个java.lang.Class对象,即加载完毕创建一个class对象。链接阶段的第一步,这一阶段为了确保Class文件字节流中包含的信息符合当前虚拟机的要求,并且不会危害虚拟机的自身安全,即文件中的信息是否符合虚拟机规范,有没有安全隐患。将类的二进制数据流中的符号引用替换为直接引用,即本类中如果用到了其他的类,此时就需要找到对应的类。类加载器:负责将.class文件(存储的物理文件)加载到内存中。
2022-11-02 10:10:43
360
原创 Runnable、Callable、Future的基础学习
一个方法的计算可能很耗时,这个时候你在计算的过程中我没有必要一直在原地等你,浪费自己的时间,如果遇到一个耗时的方法就很浪费时间,这时让子线程去执行,子线程去执行的时候我可以做其他事情,直到我想要获取你结果的时候再用Future去控制,包括你的任务是否取消、正常运行的结果返回,这一系列结果都可以控制。③ 所以Future是一个存储器,它存储了call()这个任务的结果,而这个任务的执行时间是无法提前确定的,因为这完全取决于call()方法执行的情况。
2022-10-19 23:13:31
115
原创 AQS (AbstractQueuedSynshronizer) 在Semaphore、CountDownLatch、ReentrantLock中的应用
③ 这里会先检查剩余许可证数量够不够这次需要的,用减法来计算,如果直接不够,那就返回负数,表示失败,如果够了就用自旋加compareAndSetState来改变state状态,直到改变成功就返回正数,或者是期间如果被其他人修改了导致剩余数量不够了,那就返回负数代表获取失败。由于是可重入的,所以state代表重入的次数,每次释放锁,先判断是不是当前持有锁的线程线程释放的,如果不是就抛出异常,如果是的话,重入次数就减1,如果减到了0,就说明完全释放了,于是free就是true,并且把state置为0。
2022-10-18 20:23:35
196
原创 HashMap、ConcurrentHashMap、CopyOnWriteArrayList、BlockingQueue基础学习
ConcurrentHashMap:线程安全的HashMapCopyOnWriteArrayList:线程安全的ListBlockingQueue:这是一个接口,表示阻塞队列,非常适合用于作为数据共享的通道ConcurrentLinkedQueue:高效的非阻塞并发队列,使用链表实现,可以看做一个线程安全的LinkedListconcurrentSkipListMap:是一个Map,使用跳表的数据结构进行快速查找1.Vector和Hashtable通过Vector和Hashtable源码,Vector和Ha
2022-10-15 22:07:12
546
原创 java控制并发流程CountDownLatch、Semaphore、Condition、CyclicBarrier的基础学习
CyclicBarrier和CountDownLatch的区别① 作用不同:CyclicBarrier要等固定数量的线程都到达了栅栏位置才能继续执行,而CountDownLatch只需等待数字到0,也就是说,CountDownLatch用于事件,但是CyclicBarrier是用于线程的② 可重用性不同:CountDownLatch在倒数到0并触发门闩打开后,就不能再次使用了,除非新建新的实例,而CyclicBarrier可以重复使用
2022-10-14 22:47:30
469
原创 java中final关键字怎么使用、有哪些作用
如果对象在被创建以后,状态就不能被修改,那么它就是不可变的创建Person类,设置age和name属性,并且用final修饰}测试显示:如果Person类中有一个属性可变,意味着该对象不具备不可变性具有不变性的对象一定是线程安全的,我们不需要对其采取任何额外的安全措施,也能保证线程安全(final修饰的属性不能改但是可并发读取)
2022-10-10 11:44:58
415
原创 CAS原理是什么,适用场景有哪些,有什么优缺点
1.CAS(Compare And Swap)是一种思想是一种用来实现线程安全的算法,同时也是一组cpu指令。Compare And Swap这一条指令就能完成比较与交换的组合操作,不会被打断,主要运用在并发编程语句,实现那些不能被打断的数据交换操作,从而避免了多线程情况下,出现不可预知的问题2.思路:我认为V的值应该是A,如果是的话,那我就把它改成B,如果不是A(说明被别人修改过了),那我就不修改了,避免多人同时修改导致出错。
2022-10-09 17:42:40
330
原创 什么是原子类,原子类有那些,有什么作用
① 不可分割② 一个操作是不可中断的,即便是多线程的情况下也可以保证④ 原子类的作用和锁类似,是为了保证并发情况下的线程安全。不过原子类相对于锁有一点的优势粒度更细:原子变量可以把竞争范围缩小到变量级别,这是我们可以获得的最细的粒度的情况了,通常锁的粒度都要大于原子变量的粒度效率更高:通常,使用原子类的效率会比使用锁的效率更高,除了高度竞争的情况。
2022-10-09 15:08:31
418
原创 java中的锁(悲观锁、乐观锁、可重入锁、不可重入锁、公平锁、非公平锁、自旋锁、阻塞锁...)
① 锁是一种工具,用于控制对共享资源的访问② Lock和synchronized,这两个是最常见的锁,它们都可以达到线程安全的目的,但是在使用和功能上又有较大的不同③ Lock并不是用来替代synchronized,而是当使用synchronized不合适或不满足要求的时候,来提供高级功能的④ Lock接口最常见的实现类是ReentrantLock。
2022-10-08 21:30:59
1665
原创 ThreadLocal原理、作用、内存泄漏及使用场景
2.共享对象:如果在每个线程中ThreadLocal.set()进去的东西本身就是多线程共享的同一个对象,比如sttic对象,那么多个线程的ThreadLocal.get()取得的还是这个共享对象本身,还是有并发访问问题,所以不应该在ThreadLocal中放置静态的对象。ThreadLocal使得代码耦合度更低,更优雅。3.如果可以不使用ThreadLocal就解决问题,那么不要强行使用,例如在任务数很少的时候,在局部变量中就可以新建对象就可以解决问题,那么就不需要使用到ThreadLocal。
2022-10-03 22:51:53
536
原创 关于线程池构造函数参数、阻塞队列、拒绝策略、线程设置的入门学习
1.线程池的重要性2.什么是"池",软件中的"池",可以理解为计划经济3.如果不使用线程池,每个任务都开一个线程处理,① 一个线程② for循环创建线程③ 当任务数量上升到1000这样开销太大,我们希望有固定数量的线程,来执行这1000个线程,这样就避免了反复创建并且销毁线程所带来的开销问题。
2022-10-03 16:06:06
456
原创 [ErrorCode]: UnknownHost [RequestId]: Unknown com.aliyun.oss.ClientException: srb-dev-1.LTAI5tF8g6WQ
经过检查发现发现上面配置无错误。然后测试文件上传、删除均成功。
2022-09-26 15:16:22
591
原创 什么是Nginx?
⽣活中也有很多这样的例⼦,⽐如,我们去银⾏,可以处理业务的窗⼝有多个,那么我们最终会被分配到哪个窗⼝呢,这样的⼀个过程就叫做负载均衡。),找哪⼀个⽬标服务器来处理当前请求呢,这样⼀个寻找确定的过程就叫做负载均衡。在浏览器中配置代理服务器的相关信息,通过代理服务器访问⽬标⽹站,代理服务器收到⽬标⽹站的响应之后,会把响应信息返回给我们⾃⼰的浏览器客户端。负载均衡,当⼀个请求到来的时候(结合上图),Nginx反向代理服务器根据请求去找到⼀个原始服务器来处理当前请求,那么这叫做反向代理。● 负载均衡服务器。...
2022-08-26 11:48:52
452
原创 Java 8 新特性 Stream API 介绍与使用
Java8中有两大最为重要的改变。第一个是 Lambda表达式;另外一个则是 Stream API (java.util.stream.*)。Stream是 Java8中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用Stream API对集合数据进行操作,就类似于使用SQL执行的数据库查询。也可以使用Stream API来并行执行操作。简而言之,Stream API提供了一种高效且易于使用的处理数据的方式。...
2022-08-15 20:47:19
297
原创 Java 8 新特性 什么是 Lambda 表达式,它的语法格式是什么,怎么使用 Lambda 表达式?
Lambda 是一个匿名函数,我们可以把 Lambda 表达式理解为是一段可以可以传递的代码(将代码像数据一样传递)。可以写出更简洁更灵活的代码。作为一种更紧凑的的代码风格,使Java的语言表达能力得到了提升。...
2022-08-12 15:21:15
91
原创 Java 多态具体指什么?怎么使用多态?
多【多种】态【状态】,方法或对象具有多种形态。是面向对象的第三大特征,多态是建立在封装和继承基础之上的。
2022-08-10 16:14:10
254
原创 什么是重载和重写,它们有什么区别?
java 中允许同一个类中,多个同名方法的存在,但要求形参列表不一致比如 System.out.println();out 是 PrintStream 类型简单的说:方法覆盖(重写)就是子类有一个方法,和父类的某个方法的名称、返回类型、参数一样,那么我们就说子类的这个方法覆盖了父类的方法。...
2022-08-10 09:13:11
227
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人