- 博客(120)
- 资源 (3)
- 问答 (5)
- 收藏
- 关注
原创 位运算详解
位运算学习机器数一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1.比如,十进制中的数 +3 ,计算机字长为8位,转换成二进制就是00000011。如果是 -3 ,就是 10000011 。那么,这里的 00000011 和 10000011 就是机器数。真值因为第一位是符号位,所以机器数的形式值就不等于真正的数值。例如上面的有符号数 10000011,其最高位1代表负,其真正数值是 -3 而不是形式值131(100
2021-09-26 10:52:31 798
原创 JAVA代理模式详解
代理模式代理模式是最常用的java设计模式 特征是代理类和委托类有相同的接口 代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。简单的说就是,我们在访问实际对象时,是通过代理对象来访问的,代理模式就是在访问实际对象时引入一定程度的间接性,因为这种间接性,可以附加多种用途静态代理静态代理:由程序员创建或特定
2021-09-23 14:08:05 1156
转载 virtualBox打开一个虚拟机报错解决(真解)
这个问题困扰了我一个星期 最后终于在一个好兄弟的博客里面找到了解决方法 太顶了啊系统:win10解决办法https://blog.csdn.net/serdyun/article/details/118087319
2021-09-16 18:56:25 20190 12
原创 字符串判空与list判空 快捷工具类方法
空指针异常可以说是java项目最常见的异常之一,为了避免空指针异常,各种判空操作必不可少,下面就介绍一下我一直在用的工具类的判空方法,方便快捷。字符串判空String str = null;StringUtils.isNotBlank(str);String secondStr = “”;StringUtils.isNotBlank(secondStr );//当字符串不为空时返回true 此案例返回false false 源码public static boolean isNotBla
2021-08-26 09:56:03 823
原创 Error occurred during initialization of VM Initial
IDEA打开失败 Error occurred during initialization of VM Initial heap size set to a larger value than the maximum heap size问题本来以为是自己在vm中设置的内存太大了结果调小了还是运行不起来直到删除了自己在c盘用户目录下的idea 就可以运行成功了IDEA可能读取的是你c盘中的vm的配置文件...
2021-07-29 09:43:09 1843 1
原创 手把手教你实现typora在线存放图片(无脑简单)
首先安装pic软件 在typora中就可以进行安装首先进入偏好设置找到图像然后根据上图进行安装就可以然后是git创建仓库获得密钥记住设置为开源仓库 否则访问不到然后去获得私人令牌之后是配置你的pic app找到插件 下载下图插件然后在设置中配置之后进入图传设置 进行配置然后我们再进入图像设置 验证图片上床成功之后就是可以成功上传了我这里好像出了点bug 但是在文档里面我是成功上传了 如果你也出现了这个问题可以在文档里面试一下看看是不是成功了...
2021-05-04 10:55:05 1099
原创 自定义注解
声明注解声明一个注解要用到的东西修饰符访问修饰符必须为public,不写默认为pubic;关键字关键字为@interface;注解名称注解名称为自定义注解的名称,使用时还会用到;注解类型元素注解类型元素是注解中内容,可以理解成自定义接口的实现部分;元注解@Target表明该注解可以应用的java元素类型Target类型描述ElementType.TYPE应用于类、接口(包括注解类型)、枚举ElementType.FIELD应用于属性(包括枚举中的常
2020-12-18 10:25:16 183
原创 IDEA的DeBug使用
如果你的光标在其它行或其它页面,点击这个按钮可跳转到当前代码执行的行。步过,一行一行地往下走,如果这一行上有方法不会进入方法。步入,如果当前行有方法,可以进入方法内部,一般用于进入自定义方法内,不会进入官方类库的方法,强制步入,能进入任何方法,查看底层源码的时候可以用这个进入官方类库的方法。步出,从步入的方法内退出到方法调用处,此时方法已执行完毕,只是还没有完成赋值。回退断点运行到光标处,你可以将光标定位到你需要查看的那一行,然后使用这个功能,代码会运行至光标行,而不需要打断点。计算表达式.
2020-12-17 15:43:51 194
原创 Redis五种基本数据类型
什么是Redisredis是一个高性能的key-value数据库,它是完全开源免费的,而且redis是一个NOSQL类型数据库,是为了解决高并发、高扩展,大数据存储等一系列的问题而产生的数据库解决方案,是一个非关系型的数据库。但是,它也是不能替代关系型数据库,只能作为特定环境下的扩充。Redis常识Redis默认有16个数据库默认使用的是第0个数据库端口号 默认6379可以使用select 数字来切换数据库DBSIZE 查看DB大小keys * 查看数据库所有的keyflushdb 清空
2020-10-07 19:53:05 425
原创 CAP简述
CAP基本概念C 数据一致性弱一致性(不保证总能得到最新的值)最终一致性( 放宽对时间的要求,在被调完成操作响应后的某个时间点,被调多个节点的数据最终达成一致 )强一致性(每个节点的数据都是最新版本)A 可用性 数据具备高可用性P 分区容错性 容忍网络出现分区 分区之间网络不可达C和A都很容易 P到底是什么意思呢?分区分布式的系统,节点之间的通信是通过网络来进行的。如果出现了一些故障,节点之间不连通了,整个网络就被划分成了几块区域。这样数据就被分成了几块不连通的区域。这就叫做分区。例
2020-10-07 19:45:12 496
原创 集群 分布式概念简述
集群计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作。在某种意义上,他们可以被看作是一台计算机。集群系统中的单个计算机通常称为节点,通常通过局域网连接,但也有其它的可能连接方式。集群计算机通常用来改进单个计算机的计算速度和/或可靠性。一般情况下集群计算机比单个计算机,比如工作站或超级计算机性能价格比要高得多集群技术特点:通过多台计算机完成同一个工作,达到更高的效率。两机或多机内容、工作过程等完全一样。如果一台死机,另一台可以起作用。
2020-10-07 19:44:17 367 2
原创 单例模式
懒汉式在使用的时候才去检查有没有实例,有就返回,没有就初始化一个。存在线程安全问题,使用双端检索机制解决。class Single{private Single(){}private static Single single = null;public static Single getInstance(){if(single == null){single = new Single();}reutrn single;}}饿汉式一开始就初始化好实例对象,好处是线程安全,坏处是浪
2020-10-07 19:42:58 390
原创 Lock(ReentrantLock)
为什么会出现Locksynchronized是性能低效的。因为这是一个重量级操作,它对性能最大的影响是阻塞的是实现,挂起线程和恢复线程的操作都需要转入内核态中完成,这些操作给系统的并发性带来了很大的压力。相比之下使用Java提供的Lock对象,性能更高一些。到了JDK1.6,发生了变化,对synchronize加入了很多优化措施,有自适应自旋,锁消除,锁粗化,轻量级锁,偏向锁等等。导致在JDK1.6上synchronize的性能并不比Lock差。官方也表示,他们也更支持synchronize,在未来的
2020-10-07 11:15:42 280
原创 Synchronized详解
Synchronized基本理解synchronized关键字是为了解决并发编程中的线程安全问题而实现的关键字。synchronized的思想就是给对象加上一个锁,这锁可以叫做对象锁,也可以叫排他锁。synchronized关键字有三种使用方式:普通同步方法(实例方法),锁是当前实例对象 ,进入同步代码前要获得当前实例的锁静态同步方法,锁是当前类的class对象 ,进入同步代码前要获得当前类对象的锁同步方法块,锁是括号里面的对象,对给定对象加锁,进入同步代码库前要获得给定对象的锁。synch
2020-10-06 21:52:20 611
原创 ThreadLocal详解
基本概念ThreadLocal的基本作用就是数据隔离,填充的数据只属于当前线程,变量的数据对别的线程而言是隔离的。隔离用在哪里?spring实现事务隔离的底层就使用了ThreadLocal。保证单个线程中的数据库操作使用的是同一个数据库连接。同时采用这种返回格式可以使业务层使用事务不需要感知并且管理connection对象,通过传播级别,穷啊秒的管理多个事务配置之间的切换 挂起 和 恢复。Spring框架里面就是用的ThreadLocal来实现这种隔离,主要是在TransactionSynchro
2020-10-06 21:20:40 286
原创 MySQl三范式 视图触发器存储过程简述
三范式第一范式 原子性表示每一项的信息都是不可再分的比如 你一个字段中存放了 姓名和年龄 这就违反了原子性第二范式 唯一性消除数据之前的部分依赖 使一个表中的非主键部分完全依赖于主键消除非主键部分依赖联合主键中的部分字段需要实现每一 行数据具有唯一 可区分的特性,并不能有部分依赖关系。通常,给一个表加主键(也是推荐做法),就可以做到“唯一可区分”。第三范式 独立性消除传递依赖属性不依赖于其它非主属性数据不能存在传递关系,即每个属性都跟主键有直接关系而不是间接关系。视图从一个或
2020-10-06 14:29:30 228 1
原创 Redis跳跃表
Redis 跳跃表基本概念跳跃表是有序集合的底层表现之一Redis使用跳跃表作为有序集合键的底层实现之一,如果一个有序集合包含的元素数量比较多,又或者有序集合中元素的成员是比较长的字符串时, Redis就会使用跳跃表来作为有序集合健的底层实现。跳跃表(skiplist)是一种****有序数据结构****,它通过在****每个节点中维持多个指向其他节点的指针(注:可以理解为维护了多条路径),从而达到快速访问节点的目的。****Redis的跳跃表由****redis.h/zskiplistNode和r
2020-10-06 14:27:23 374
原创 Redis缓存穿透 缓存雪崩
先查缓存 如果缓存中没有 就会去数据库中查询缓存穿透(查不到)基本概念用户想要查询一个数据,发现redis内存数据库中没有,于是缓存没有命中,于是向持久层数据库查询。发现也没有,于是本次查询失败。当用户很多的时候,缓存都没有命中,于是都去请求了持久层数据库。这就会给持久层数据库带来很大的压力,也就相当于出现了缓存穿透。解决方案布隆过滤器布隆过滤器时一种数据结构 对所有可能查询到的参数用hash的形式存储,在控制层先进行校验,不符合就丢弃,从而避免了对底层存储系统的查询压力。缓存对象当存储层
2020-10-06 14:25:30 291
原创 Redis主从复制
主从复制基本概念最少要一个主节点 二个从节点默认情况下,每台Redis服务器都是主节点 且每一个主机节点可以有多个从几点(或者没有) 而每个从节点只能有一个主节点指将一个Redis服务器的数据,复制到其他的Redis服务器,前者称为主节点,后者称为从节点;数据的赋值时单向的,只能从主节点到从节点。Master以写为主,Slave以读为主。默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点,但是一个从节点只能有一个主节点。作用数据冗余主从复制实现了数据的热备份,是持久化
2020-10-06 14:23:16 215
原创 简述Jvm运行时数据区域
线程公有堆new对象 存放对象实例的地方此内存地区的唯一目的就是存放对象的实例,Java中几乎所有的对象实例都是在这个地方分配的GC垃圾回收发生的区域方法区存储已经被虚拟机加载的类型信息 常量 静态变量 即时编译器编译器后的代码缓冲等数据线程私有java虚拟机栈生命周期与线程相同。虚拟机栈描述的Java方法执行的线程内存模型:每个方法被执行的时候,Java虚拟机都会同步穿件一个栈帧用于存储局部变量表 操作数栈 动态链接 方法出口等信息。每一个方法被调用直至执行完成的过程,就对应这一个.
2020-10-06 14:16:30 245
原创 java的四大引用类型
Java中的引用类型有四个级别分别为强引用 软引用 弱引用和虚引用强引用:比如一个对象被强引用了,那么垃圾回收机制绝对不会回收它,宁愿抛出 OutOfMemoryError 错误,使程序异常终止。软引用:如果一个对象只具有软引用,那么如果内存空间足够的时候,垃圾回收器就不会回收它,如果内存空间不够了,就会回收这些对象的内存,只要垃圾回收器没有回收,改对象就可以被程序使用。主要用于内存敏感的高速缓存。在 jvm 报告内存不足之前会清除所有的软引用,这样以来 gc 就 有可能收集软引用的对象,可能
2020-10-06 14:15:42 165
原创 类加载机制
什么时候会发生类加载?new对象 创建实例反射访问某个类或接口的静态变量 或是对静态变量赋值调用类的静态方法初始化一个类的子类JVM启动时标明的启动类,即文件名和类名相同的那个类类加载过程当程序主动要使用某个类时,如果该类还没有被加载到内存中,则JVM则会通过加载、连接和初始化来对类进行初始化。加载指把类的class文件读入内存,并且创建一个java.lang.Class对象。类的加载由类记载器来完成。链接当类被加载之后,系统为之生成一个对应的Class对象,接着将会进入连接阶
2020-10-06 14:15:03 224
原创 jvm垃圾回收机制
对象已死?给对象中添加一个引用计数器,每当有一个地方引用他时,计数器值就+1,;当引用失效时,计数器值就-1;任何时刻计数器为0的对象就是不可能在被使用。可达性路径分析法 GC Roots通过一系列的GC Roots的对象作为起始点,从这些根节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chain),当一个对象到GC Roots没有任何引用链相连时,则证明此对象是不可用的。可以作为GC Roots的对象包括以下几点虚拟机栈(栈帧中的本地变量表)中引用的对象。方法区中的类静态属
2020-10-06 14:14:02 271
原创 MySQL拼接字符串
concat()函数concat(String s1,String s2)函数concat()函数在连接字符串的时候,只要其中一个是null,那么就会返回null。concat_ws(separator,str1,st2,…)string1,string2代表字符串,concat_ws 代表 concat with separator,第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。如果分隔符为 NULL,则结果为 NULL。函数会忽略
2020-09-22 18:52:01 222
原创 Spring MVC常用注解及作用
@Controller负责处理前端控制器DispatcherServlet分发过来的请求。然后把用户请求的数据经过业务处理只会封装,然后在返回给对应的View进行展示。@RequestMapping用来处理请求地址映射的注解,可用于类和方法上面,用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。一般有value(指定请求的地址) method(指定请求的类型 get post等)consumes(指定处理请求的提交内容类型) produces(指定返回的内容类型)params(指定r
2020-09-22 18:50:54 852
原创 MySQL数据类型 char和varChar的区别
char和varchar的区别varchar的长度是可变的,char的长度不可变。获取数据时,char需要使用trim()方法去空格,但是varchar不需要。存储时,char类型的数据要比varchar类型的数据更快。因为其长度固定,方便存储于查找。char是以空间换取时间效率,而varchar是以空间效率为首位的。char的存储方式是,对英文字符(ASCII)占用1个字节,对一个汉字占用两个字节;而varchar的存储方式是,对每个英文字符占用2个字节,汉字也占用2个字节,两者的存储数据都非.
2020-09-21 15:02:49 681
原创 Oracle和MySQL数据库的区别
MySQL是轻量型数据库,并且免费,没有服务恢复数据。Oracle是重量型数据库,收费,Oracle公司对Oracle数据库有任何服务。事务:MySQL默认是自动提交,而Oracle默认不自动提交,需要用户手动提交,需要在写commit;指令或者点击commit按钮。对事务的支持MySQL在innodb存储引擎的行级锁的情况下才可支持事务,而Oracle则完全支持事务保存数据的持久性MySQL是在数据库更新或者重启,则会丢失数据,Oracle把提交的sql操作线写入了在线联机日志文件中,保持到
2020-09-21 14:45:23 357
原创 JSON
什么是JSON?JSON是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于阅读和编写,同时也易于解析和生成,并有效地提升网络传输效率。JSON语法(1)数据在名称/值对中(2)数据由逗号分隔(3)大括号保存对象(4)中括号保存数组Java解析JSONjackSon解析JSON SpringMVC内置解析器public class JackJsonUtils { static Objec
2020-09-21 14:18:41 245
原创 Ajax请求 Servlet接受Ajax请求 SSM框架接受Ajax请求
Ajax请求是什么?ajax是一种创建交互式网页应用的网页开发技术,全称Asynchronous JavaScript and XML,特点是异步请求,局部刷新ajax的优势:异步模式,提升了用户的体验。优化了浏览器和服务器之间的传输,减少了不必要的数据往返,减少了带宽占用。ajax在客户端运行,承担了一部分本来由服务器承担的工作,从而减少了大用户量的服务器负载。Servlet怎么接受Ajax请求?@WebServlet("/*******") 在编写的Servlet上面加这个注解 里面写路径
2020-09-21 14:09:51 386
原创 session和cooike的区别
首先我们要知道Session是什么?Session指的是客户端和服务器的一次会话,从客户端连接服务器的一个WevApplication开始,直到客户端与服务器断开连接为止。是HTTPSession的实例。Session是存储在web服务器上的一块信息,Session对象存放特定用户会话所需的属性和配置信息。当用户在应用程序的web页跳转时,存储在Session对象中的变量将不会丢失,而是会一直存在下去。Cookie又是什么?中文翻译过来叫做小饼干 小点心Cooike实际上是一块段的文本信息。客户端
2020-09-21 13:54:24 486
原创 Java的引用类型
Java的引用类型有四种 强引用 软引用 弱引用和虚引用强引用:如果一个对象被强引用了,那么垃圾回收机制宁愿抛出OutOfMemoryError错误,也不会回收它。软引用如果一个对象时软引用类型的,在内存充足的情况下,垃圾回收不会回收它,一旦内存不足时,垃圾回收就会回收这个对象的内存。只要这个对象还没有被回收,该对象就可以被程序调用。软引用主要是用于内存敏感的高速缓存。在jvm报告内存不足的时候,会清理所有的软引用,这样GC就可以回收软引用的对象,解决内存吃紧的问题,避免内存溢出。弱引用如果一
2020-09-21 12:01:18 217
原创 抽象类和接口的区别
抽象类1.抽象类中可以构造方法2.抽象类中可以存在普通属性,方法,静态属性和方法。3.抽象类中可以存在抽象方法。4.如果一个类中有一个抽象方法,那么当前类一定是抽象类;抽象类中不一定有抽象方法。5.抽象类中的抽象方法,需要有子类实现,如果子类不实现,则子类也需要定义为抽象的。6,抽象类不能被实例化,抽象类和抽象方法必须被abstract修饰关键字使用注意:抽象类中的抽象方法(其前有abstract修饰)不能用private、static、synchronized、native访问修饰符修饰。
2020-09-21 11:47:22 199
原创 重载和重写的区别
重载和重写都是多态的体现,不过重载是体现的编译时的多态性,重写体现的运行时的多态性。重载在一个类中,重写发生在子类和父类。重载可以抛出新的异常。重写能抛出任何非强制性异常,无论被重写的方法是否抛出异常。但是不能抛出新的强制性异常,或者比重写方法声明的更广泛的强制性异常。重载可以有不同的访问修饰符,但是重写的方法不能比父类的访问权限低。重载要求参数列表不同,重写要求参数列表必须相同。构造方法不能被重写,能被重载,声明为final的方法不能被重写可以被重载,声明为static的方法不能被重写可以被重载
2020-09-21 11:35:58 506
原创 静态变量和实例变量的区别
静态变量是被static关键字修饰的变量,存放在方法区中,可以在静态范围内调用,它属于类不属于对象,不管创建多少个对象,静态变量在内存中有且只有一个拷贝。实例变量,必须依附于某一实例,需要先创建好对象,然后通过对象才能访问到实例变量,实例变量存放在堆中。...
2020-09-21 11:21:47 181 1
原创 ==和equals的区别
根本上的区别是==是运算符,而equals()是一个方法。==如果比较的是基本数据类型,比较的就是他们的值,如果是比较的引用数据类型,比较的就是他们的值。在Object类中 equals() 方法是使用的 == 比较的是地址,但是在引用数据类型中都重写了equals()方法比较的是他们的值...
2020-09-21 11:18:59 215
原创 MySQL事务详解
事务事务是一个不可分割的数据库操作序列,也是数据库并发控制的基本单位。其执行的结果必须是式数据库从一种一致性到另外一种一致性。ACID事务的特性原子性 :最小的工作单元,要么一起提交成功,要么全部回滚失败。一致性: 事务中操作的数据及状态改变是一致的,即写入资料的结果必须符合预设的规则,不会因为系统出现意外而导致不一致。隔离性: 解决并发访问下数据的可见性带来的问题持久性: 事务只要做出的修改就会永久保存,不会因为系统的意外导致数据的丢失。原子性最小的工作单元,要么一起提交成功,要么失败全部
2020-09-18 14:42:04 258
原创 线程的同步 线程池
什么是线程的同步?多个线程操作同一个资源的时候回出现资源争夺问题,这就需要线程的同步。线程的同步要对同一个对象进行,不同对象无法进行线程同步。线程同步其实就是一种等待机制, 多个需要同时访问此对象的线程进入这个对象的等待池形成队列,等待前面线程使用完毕,下一个线程再使用。实现线程同步的三种方式synchronized实现线程同步同一个进程的多个线程共享同一块存储空间,在带来方便的同时,也带来了访问冲突问题,为了保证数据在方法中被访问是的正确性,在访问时加入了锁机制synchronized,当一个
2020-09-16 13:39:23 1522
原创 多线程 前台线程和后台线程
先复习一下什么是线程线程是程序执行的一条独立的执行路径。而多线程,就是多个线程组成一个程序。程序在执行时,即使自己没有定义线程,后台也会运行多个线程,比如main主线程 垃圾回收线程(每次程序运行 肯定会启动的两个线程)main()方法是主线程的入口,也是系统的入口。在一个进程中,如果开辟了多个线程,检查的运行由调度器安排调度,调度器与操作系统紧密相关 先后顺序是无法干预的。对同一份资源进行操作时,会出现资源的争夺问题,这个时候就需要线程的同步。每一个线程都是在自己的工作内存中交互,内存控制
2020-09-16 11:36:31 864
原创 什么是线程?线程和进程的区别是什么?
首先我们要知道线程是什么?线程是程序中执行的线程,Java虚拟机允许程序同时运行多个执行线程。线程也可以说是一条独立的执行路径那么进程是什么?进程是系统中正在运行的一个程序,程序一旦运行就是一个进程。进程可以看成程序执行的一个实例。进程是系统资源分配的独立实体,每个进程都拥有独立的地址空间。一个进程无法访问另一个进程的变量和数据结构,如果想让一个进程访问另一个进程的资源,需要使用进程间通信,比如管道,文件,套接字等。进程和线程有什么区别?根本区别:进程操作系统分配资源的基本单位,而线程是任务调
2020-09-16 10:50:04 2220
校园网的设计(计算机网络大作业)
2020-09-15
辅导信息管理系统.rar
2020-09-15
仿qq音乐播放器.rar
2020-09-14
sqlldr执行脚本报错 错误信息如下 各位看看
2022-03-22
前台界面多出一个> 但是在代码里面完全找不到
2021-11-12
目前在国企上班空闲时间多 我该怎么提升自己
2021-09-26
vagrant创建虚拟机出错
2021-09-15
TA创建的收藏夹 TA关注的收藏夹
TA关注的人