- 博客(31)
- 收藏
- 关注
原创 Java多线程
多个代码块使用了同一个同步监视器(锁),锁住一个代码块的同时,也锁住所有使用该锁的所有代码块, 但是没有锁住使用其他同步监视器的代码块,其他线程有机会访问其他同步监视器的代码块。cpu在执行的时候是按照时间片执行的,一个时间片只能执行一个线程,因为时间片特别短,人为感受到的就是 “同时” 执行多个线程,实际上这个多线程是一个假象。多个代码块使用了同一个同步监视器(锁),锁住一个代码块的同时,也锁住所有使用该锁的所有代码块,其他线程无法访问其中的任何一个代码块。强调:同步代码块中能发生CPU的切换吗?
2025-01-15 18:11:47
573
原创 Java服务端实时推送之SSE(Server-Send Events)
服务端推送的背景与需求主要基于以下几个诉求:1. 传统实时处理方案轮询:这是一种较为传统的方式,客户端会定时地向服务端发送请求,询问是否有新数据。服务端只需要检查数据状态,然后将结果返回给客户端。轮询的优点是实现简单,兼容性好;缺点是可能产生较大的延迟,且对服务端资源消耗较高。长轮询(Long Polling):轮询的改进版。客户端向服务器发送请求,服务器收到请求后,如果有新的数据,立即返回给客户端;如果没有新数据,服务器会等待一定时间(比如30秒超时时间),在这段时间内,如果有新数据,就返回给客户端,
2025-01-04 16:50:06
2519
1
原创 mybatis中association的用法
association的用法property对应实体类中的字段,JavaType 是当前返回字段的类型 就是property指向的类型 例如:-- alarmSite是 字符串String类型 JavaType就是String类型<association property="alarmSite" javaType="java.lang.String"select="com.ruoyi.system.mapper.DeviceAlarmMapper.selectDeviceAlarm
2022-03-08 17:04:28
1887
原创 String字符串转为json串
String字符串转为json串import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObject;public class Test { public static void main(String[] args) {String madf="{\"username\":\"guandoa\",\"timestamp\":1646640795410}";JSONObject jsonObject = JSON
2022-03-08 10:43:18
1107
原创 gi的基本操作
git查看所有分支(当前状态在带*号的分支上)git branch dev* master //在该分支上切换分支到devgit checkout (分支名)git checkout dev创建分支devgit branch (分支名)git branch dev提交代码到新的分支dev(远程仓库)git push origin (分支名)git push origin dev合并分支把dev分支合并到master首先切换到master分支然后执行 git
2022-03-04 20:25:17
239
原创 sql优化
sql优化1、对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2、应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。3、应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null -- 可以在num列设置默认值0,然后通过=等号查询: select
2022-02-25 19:13:37
472
原创 事务的特性
事务是指由一组操作组成的一个工作单元,这个工作单元具有原子性(atomicity)、一致性(consistency)、隔 离性(isolation)和持久性(durability)。原子性:执行单元中的操作要么全部执行成功,要么全部失败。如果有一部分成功一部分失败那么成功的操作要全 部回滚到执行前的状态。一致性:执行一次事务会使用数据从一个正确的状态转换到另一个正确的状态,执行前后 数据都是完整的。隔离性:在该事务执行的过程中,任何数据的改变只存在于该事务之中,对外界没有影响,事务 与事务之间是完全的
2022-02-24 21:52:44
317
原创 异常 处理
异常处理Java 中的两种异常类型是什么?他们有什么区别?答:Java 中有两种异常:受检查的(checked)异常和不受检查的(unchecked)异常。不受检查的异常不需要在方法或者是构造函数上声明,就算方法或者是构造函数的执行可能会抛出这样的异常,并且不受检查的异常可以传播到方法或者是构造函数的外面。相反,受检查的异常必须要用 throws语句在方法或者是构造函数上声明。throw 和 throws 有什么区别?throw 关键字用来在程序中明确的抛出异常,相反,throws 语句用来表
2022-02-22 21:03:04
155
原创 装箱与拆箱
装箱和拆箱自动装箱是 Java 编译器在基本数据类型和对应的对象包装类型之间做的一个转化。比如:把 int 转 化成 Integer,double 转化成 Double,等等。反之就是自动拆箱。原始类型: boolean,char,byte,short,int,long,float,double封装类型:Boolean,Character,Byte,Short,Integer,Long,Float,Double...
2022-02-21 21:42:39
222
原创 并发,并行,串行
并发 并行 串行串行在时间上不可能发生重叠,前一个任务没完成,下一个任务只能等待。并行在时间上是重叠的,两个任务在同一刻互不干扰的同时执行。并发允许两个任务彼此干扰。统一时间点,只有一个任务运行,交替执行。...
2022-02-20 20:08:12
116
原创 访问修饰符
访问修饰符public private default protected访问级别修饰符同类同包子类不同包公开public√√√√受保护protected√√√x默认default√√xx私有private√xxx一般不写时默认为default,在同一个包中相当于public ,对于不是同一个包的相当于private,protected对子类公开,同一个包中不是父子关系的相当于private。private 方法
2022-02-19 16:04:58
179
原创 String方法
String的常用方法•indexof();返回指定字符的的索引。•charAt();返回指定索引处的字符。•replace();字符串替换。•trim();去除字符串两端空格。•splt();字符串分割,返回分割后的字符串数组。•getBytes();返回字符串byte类型数组。•length();返回字符串长度。•toLowerCase();将字符串转换为小写字母。String 类被final修饰,不能被继承...
2022-02-18 22:29:41
124
原创 如何实现一个ioc容器
如何实现一个ioc容器配置文件配置包扫描路径递归包扫描获取.class文件反射,确定需要交给IOC管理的类对需要注入的类进行依赖注入配置文件中指定需要扫描的包路径定义一些注解,分别表示访问控制层,业务层,数据持久层,依赖注入注解,获取配置文件注解从配置文件中获取需要扫描的包路径,获取当当前路径下的文件信息及文件夹信息,将当前路径下所有以.class结尾的文件添加到一个Set集合中进行存储遍历这个Set集合,获取在类上有指定注解的类,并将其交给IOC容器,定义一个安全的Map用来存储这些对象
2022-02-17 21:43:40
656
原创 List和set
List和SetList:有序,按对象进入的顺序保存对象,可重复,允许多个null元素对象,可以使用Iterator取出所有元素,然后一一遍历取出,也可以使用get(int index) 获取指定下标的元素Set:无序,不可重复,最多允许有一个null元素对象,取元素时只能使用iterator接口取出所有元素,在一一遍历各个元素, List list = new ArrayList<>(); //集合 list.add(1); list.a
2022-02-16 20:58:42
239
原创 接口和抽象类
接口和抽象类的区别抽象类可以存放在普通成员函数,而接口中只能存在public abstract方法。抽象类中的成员变量可以时各种类型的,而接口张的成员 变量只能是public static final 类型。抽象类只能继承一个,接口可以实现多个。接口的设计,是对类的行为进行约束,强制要求不同的类具有共同的行为,它只约束行为的有无,但不对如何实现行为进行限制。而抽象类的设计,是代码的复用。当不同的类具有某些相同的行为A,并且其中一部分行为的实现方式一致时B,可以让这些类都派生于一个抽象类。在这个抽象
2022-02-15 21:36:37
207
原创 重载和重写的区别
重载和重写的区别重载在同一个类中,方法名必须相同,参数类型不同,个数不同,顺序不同, 方法返回值和访问修饰符可以不同,(方法名必须相同,括号里必须不同) 发生在编译时public String cz(){ return ""; } public int cz(int a){ return 0; } public int cz(int a,long b){ return 0; } protected in
2022-02-14 21:20:44
302
原创 String,StringBuffer,StringBuilder
String,StringBuffer,StringBuilderString是final修饰的,不可变,每次操作都会产生新的String对象StringBuffer和StringBuilder都是在原有对象上操作StringBuffer是线程安全的,StringBuilder线程不安全StringBuffer方法有synchronized修饰性能上:StringBuilder >StringBuffer>String在经常需要改变字符串内容时,使用后面两个优先使用StringBu
2022-02-13 21:15:08
220
原创 ==和equals的深度理解
==和equals的区别==对比的是栈中的值,对于基本数据类型比较的是变量的值,引用类型是堆中内存对象的地址equals:在object中默认的也是采用==做比较,通常会重写String中已经重写过equals方法了,他是取出每一个字符做对比,判断是否相等。 String a="21"; String c = new String("21"); String d= c; System.out.println(a==c); //false
2022-02-12 22:14:58
327
原创 jdk,jre,jvm
jdk jre jvm 的理解jdkjava Develpemet Kit java 开发工具,开发者需要安装jrejava Runtime Environment java 运行时环境,运行Java程序需要安装jvmJava Virtual Machine java 虚拟机jdk包含jre :bin(jvm) lib(l类库)java工具 :Javac java jconsoleJava 文件运行过程.java =>经过Javac编译为=>.class文件===&
2022-02-11 21:36:01
1697
原创 面向对象的理解
面向对象 Java的面向对象是一种编程思想,对比面向过程,是处理一件事物的顺序及过程,而面向对象是把功能,特点,属性封装到对象之中,通过对象去处理具体的问题。例如:打电话的过程面向过程就是:人拨号 手机呼叫面向对象 会分为 :人 电话面向过程比较简单直接 高效,面对对象便于复用,扩展,维护。封装在于明确标识出允许外部使用的所有成员函数和数据项;简单点说就是把类中的某些信息隐藏,不允许外部程序直接拿调用,访问,而是通过该类提供的一些方法来进行对隐藏信息的操作。优点:
2022-02-10 21:18:15
298
原创 cent OS 7 安装MySQL5.7,以及远程连接
cent OS 7 安装MySQL5.7,以及远程连接一.下载mysql源安装包wget http://dev.mysqlcom/get/mysgl57-communityrelease-e17-8.noarch.rpm 二.安装mysql源yum localinstall -y mysql57-community-release-el7-8.noarch.rpm如果报错则操作如下:yum -y install wgetwget http://dev.mysqlcom/get/mysgl5
2021-11-07 01:43:09
248
原创 firstday
firstday一.网页与网站二.HTML1.HTML指的是超文本标记语言,描述网页的一种语言。2.不是编程语言,是一种标记语言。3.标记语言是一套标记标签。所谓超文本就是:它可以加入图片,声音,动画,多媒体等内容,(超越了文本的限制)。它还可以从一个文件跳转到另一个文件,与世界各地的主机的文件连接(超级链接文本)。三.网页的形成网页是由网页元素组成,是利用HTML标签描述出来,然后通过浏览器解析出来反馈给用户。前端人员编写代码------->浏览器显示代码(解析,渲染)----
2021-11-02 00:01:01
84
原创 IO总结
IO总结IO 是 input 和 output 两个单词的缩写。在计算机上就是输入与输出。File关于文件和文件夹的操作,我们使用的都是一个类:File常用的构造器说明File(String pathname)将指定的路径名转换成一个File对象File(String parent,String child)根据指定的父路径和文件路径创建对象方法File类常用方法boolean createNewFile()当指定文件(或文件夹)不存在时创
2021-03-17 19:35:29
48
原创 集合总结
集合总结一.集合的概念1.1集合是什么?集合:集合是java中提供的一种容器,可以用来存储多个数据,并且可以存储任意类型的数据!1.2集合与数组的区别?数组:数组的长度是固定的。数组中存储的是同一类型的元素,可以存储基本数据类型值。集合:集合的长度是可变的。集合存储的都是对象。而且对象的类型可以不一致。在开发中一般当对象多的时候,使用集合进行存储。1.3集合体系集合按照存储结构可分为两类:①单列集合 java.util.Collection
2021-03-17 19:34:38
71
Java 反射(Reflection) 从入门到精通
2025-01-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人