自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ZSS1753936255的博客

自己是新手。如果有错的。请大家多多指教,一起进步

  • 博客(108)
  • 资源 (2)
  • 收藏
  • 关注

原创 java设计模式-生成器模式

它不直接与产品的构建过程相关,而是使用生成器父类或其子类来指导构建过程。指导器通常包含一个方法,该方法接受一个生成器对象作为参数,并按照一定的顺序调用生成器的方法来构建复杂对象。

2024-09-22 21:07:34 209

原创 java设计模式-适配器模式

如图所示: Target接口就是接口类Translator中的translate()接口。我们对应的适配器Adapter实现了标准接口Translator接口。现在 为了要实现实际接口 speak接口。那么就需要把 speaker依赖进来。调用speaker.speak()方法。

2024-09-22 20:43:39 541

原创 java设计模式-抽象工厂

具体根据需求可以细致理解为:

2024-09-22 14:57:52 78

原创 java采集微信公众号数据

java采集微信公众号数据

2024-06-13 16:09:52 1051 1

原创 面试之CurrentHashMap的底层原理

首先回答HashMap的底层原理?HashMap是数组+链表组成。数字组是HashMap的主体,链表则是主要为了解决哈希冲突而存在的。要将key 存储到(put)HashMap中,key类型实现必须计算hashcode方法,默认这个方法是对象的地址。接着还必须要覆盖对应的equals方法。如果对于插入的操作的来说,那么对于添加操作,其时间复杂度依然为O(1),因为最新的Entry会插入链表头部。对于查找的来说话,就需要遍历 链表,然后key的equals方法去逐一对比查找。但是对应的key可以为空。

2023-07-26 10:45:01 1422

原创 JVM对象在堆内存中是否如何分配?

选择那种分配方式 是有 java堆是否规整而决定的。而java堆是否规整是否对应的垃圾回收器是否带有空间压缩整理的能力决定的。因此当使用Serial,ParNew等带有压缩整理过程的收集器时,系统采用的分配算法是指针碰撞。当使用CMS这种基于清楚算法的收集器时,理论是就只能采用复杂的空闲列表。2:空闲列表: 内存不规整的情况下。1:指针碰撞:内存规整的情况下。

2023-07-22 10:36:01 574

原创 面试之JVM类的生命周期

按照Java虚拟机规范,从class文件到加载到内存中的类,到类卸载出内存为止,它的整个。

2023-07-20 10:46:56 149

原创 面试之JVM的储存空间

之后,取消了整个永久代区域,取而代之的是元空间。运行时常量池和静态常量池存放在元空间中,而字符串常量池依然存放在堆中。

2023-07-19 22:22:33 239

原创 MySQL面试之InnoDB的行锁是怎么实现的?

2)select ... from lock in share mode语句:追加了共享锁,InnoDB会使用Next-Key Lock锁进行处理,如果扫描发现唯一索引,可以降级为RecordLock锁。3)select ... from for update语句:追加了排他锁,InnoDB会使用Next-Key Lock锁进行处理,如果扫描发现唯一索引,可以降级为RecordLock锁。Next-key Lock 锁: 记录锁和间隙锁组合,同时锁住数据,并且锁住数据前后范围。(RR隔离级别支持)

2023-07-16 20:46:52 865

原创 面试之可重复读是否可以解决幻读

产生幻读的原因是:行锁只能锁住行,但是新插入记录的这个动作,要更新的是记录之间的'间隙'。不过理论上 是会出现幻读的,简单的来说幻读指的是当用户读取某一范围的数据行时,另外一个事务又在该范围插入了新行,当用户再次读取该范围的数据时会发现 出现新的幻影行。当前读:读取的数据最新的数据,当前读和快照读不同,因为读取最新的数据而且保证事务的隔离性,所以当前读 是需要对数据进行加锁的。T5:Q3返回三行(0,0,1),(1,1,1),(6,6,1)T3:Q2返回两行(0,0,1),(1,1,1)

2023-07-16 19:10:39 859

原创 面试之MySQL的主从同步原理

注意: 主从节点binlog 文件+ pisiton 偏移量 来定位主从同步的位置,从节点会保存 已接收的偏移量,如果从节点发生down 机 重启,则会自动从 position的位置 发起同步。由于mysql默认的复制方式 都是异步的,主库把日志发送给 从库后 不关心 从库是否已经处理,这样会产生一个问题。这时候 把 从库身为 主库后,日志就丢失了。和全同步不同的是,半同步复制的逻辑是这样的,从库写入日成功后返回ACK 确认后 主库,主动收到至少一个从库 的确认就认为 写操作完成。

2023-07-16 14:41:58 611

原创 面试之MySQL中的mvcc

不同的事务session会看到自己特定版本的数据。当然快照是一种概念模型,不同的数据库可能用不同的方式来实现这种功能。能不能让读写之间也不冲突的方法,就是读取数据时通过一种类似快照的方式将数据保存下来,这样读锁就和写锁。mvcc的目的就是多版本并发控制,在数据库的实现,,他实现的原理主要是通过 记录中的 3个隐式字段,Undo Log版本链,ReadView来实现的。首先需要知道什么是 MVCC?

2023-07-15 23:49:38 554

原创 面试之MySQL中的锁

行锁的是mysql锁中粒度最小的一种锁,因为锁的粒度很小,所以发生资源争抢的概率也很少,并发性能很大,但是 也会造成死锁,每次加锁和释放锁的开销也会很大。悲观锁:在对一条数据修改的时候,为了避免同时被其他人修改,在修改数据之前先锁定,在修改的方式控制。共享锁和排他锁是悲观锁的不同实现,都是属于悲观锁的范畴。Next-key-Lock锁: 记录锁 和间隙锁组合,同时锁住数据,并且锁住数据前后范围。排他锁(X):如果事务T对数据A加上排他锁后,则其他事务不能再对数据A加任何类型的封锁。

2023-07-15 22:03:37 556

原创 面试题之MySQL事物的特性

在关系性数据库管理系统配置,一个逻辑工作要成为事物,必须要满足4个特性,即所谓的ACID:原子性(Atomicity),一致性(Consistency)、隔离性(lsolation)和持久性(Durability)。指的是一个事务一旦提交,它对数据库中数据的改变就应该是持久性的。隔离性:指的的一个事务不能被其他事务干扰,即一个事务内部的操作及使用的数据对于其他的并发事务是隔离的。在非并发的状态下,事务间天然保证隔离性,因此只需要保证事务的原子性即可保证 一致性。

2023-07-15 16:45:59 743

原创 面试之双亲委派原理

详细解释:当一个类加载器收到加载任务时,会先交给自己的父加载器去完整,因此最终的加载的人任务都会交给最顶层的BootstrapClassLoader,只有当父加载器无法完成加载,才反馈进行递归回溯,此时子类加载的时候,就是通过调用对应的findClass(name)去加载,子类依次回溯加载。应用类加载器主要加载classpath下的class。1:loadclass:双亲委派机制,子类加载器委托父类加载器加载,父类加载器都加载失败时,子类加载器通过findclass自行加载。回答的过程中磨磨唧唧。

2023-07-15 12:30:40 776

原创 面试之SpringAOP的理解:

主要就是有JDK动态代理和CGLIB动态代理。对于没有实现接口的对象,就无法使用JDK动态代理,转而使用CGLIB动态代理生成一个被代理对象的子类来 作为 代理。CGLIB 是通过继承的方式做的动态代理,因此如果某个类被标记为 final,那么它是无法使用 CGLIB 做动态代理的。AOP(面向切面编程)指的是那些业务本身无关,但是被业务模块所共同调用的业务逻辑或责任(日志管理,权限管理等)封装起来,便于减少系统的重复代码,降低系统见的耦合性,有利于未来系统的扩展性。

2023-07-11 10:22:39 368

原创 面试题之spring源码

IOC的底层原理 :

2023-07-10 18:25:04 557

原创 Redis常用面试题

通过VM功能可以实现冷热数据分离,是热数据人在内存中,冷数据保存在磁盘中,这样就 避免因为内存不足而造成访问数据下降的问题。缓存穿透:指的是 查询一个一定不存在的数据,由于缓存是不命中需要去数据库,导致这个不存在的数据每次请求都要到数据库查询,从而给数据库带来压力。缓存雪崩:指的缓存中数据大批量到过期时间,而查询数据量巨大,请求都直接访问数据库,引起数据数据库压力过大甚至down机。通俗点:读请求访问时,缓存和数据库都没有某个值,这样就会导致每次对这个值的查询请求都会穿透到数据库,这就缓存穿透。

2023-07-09 20:03:51 492

原创 面试必问之ThreadLocal的底层原理

最主要的目的: 首先为什么要有这个ThreadLocal 的通过变量副本来起到 线程隔离的作用引起线程不安全的原因是多个线程共享一个变量,如果变量不共享是不是就可以避免线程不安全问题呢?没错,threadLocal就是这么做的。每一个Thread类中都一个ThreadLocalMap类型的成员变量 threadLocals.。这个threadLocals就是用来存储当前线程变量和对应副本值的映射关系的。在中,多个线程访问同一个变量,可能读到另一个线程修改后的值,也可能不是修改后的值。所以。

2023-07-07 17:52:53 250

原创 面试必问之sychrionzed锁的底层原理

sychrionzed的底层原理:实例数据:存放类的属性数据信息,包括父类的属性信息;对齐填充:由于虚拟机要求 对象起始地址必须是8字节的整数倍。填充数据不是必须存在的,仅仅是为了字节对齐;根据寻址优化算法synchrionzed用的锁就是存在对象头中。hotspot虚拟机的对象头主要包括两部分:MarkWord(标记字段),ClassPointer(类型指针)。其中classPointer时对象指向它类元数据的指针。虚拟机通过这个这个指针可以确定这个对象指向哪一个实列。

2023-07-06 22:57:01 117

原创 面试之线程池(高级开发 必问)

最佳线程数(核心线程数+1).比如8核CPU时,可以吧线程数设置为9.因为CPU密集的业务场景中,每个线程都会在较大的负荷下工作。我们之所以要手动创建线程池,是因为 JDK 自带的工具类所创建的线程池存在一定的弊端,那究竟存在怎么样的弊端呢?还有一个问题就是这些线程池的线程都是使用 JDK 自带的线程工厂 (ThreadFactory)创建的,线程名称都是类似pool-1-thread-1。的形式,第一个数字是线程池编号,第二个数字是线程编号,这样很不利于系统异常时排查问题。(3):提高线程的管理学。

2023-07-04 00:22:25 112

原创 面试之谈谈你对SpringMVC的理解:

1.把传统的MVC架构里面的Controller控制器进行了拆分。分成了前端控制器的DispatcherServlteth和后端控制器的Controoler.1.浏览器的请求会首先经过SpringMVC里面的核心控制器DispatcherServlet,他负责对请求进行分发对应的Controller。所以,Spring MVC 天生就是为了MVC模式而设计的,因为在开发MVC应用的时候会更加方面和灵活。3.在试图层,可以支持不同的试图,比图Freemakr,volocity,JSP等等。

2023-06-29 08:02:31 502

原创 01背包一维数组

/举例子:对于二位数组来说,当前层是需要上一层的数据和左上角的数据 来Max比较求大。//逆序才能拿到上一轮的背包数据,正序只能计算本轮背包不断加塞的数据。//如果是正序遍历则dp[j]是累加的结果。//定义dp数组:dp[j]表示背包容量为j时,能获得的最大价值。//遍历顺序:先遍历物品,再遍历背包容量。

2023-05-05 01:17:19 483 1

原创 01背包二维数组详解

/而递推公式则表示的是:dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i]);//那么就需要把整个背包重量为j的空间留一个 weight[i],而对应的对应的i-1的物品就是需要留的空间为j-weight[i].//dp[i-1][j-weight[i]]就是i-1中物品中容量为 j-weight[i]最大价值,此时需要加上value[i].// 整体的公式就是 dp[i-1][j-weight[i]]+value[i]

2023-05-05 00:13:33 642

原创 分页的实现

首先我们需要清楚的是,前台有后台的/** * (这个分页的功能)前端要想后台请求的参数为: * page;当前页 * rows:m每页大小 * sortBy:排序字段 * desc:是否为降序 * key:查询的关键 * * 后台要想前台响应的话,我们就需要有响应的结果即可 * total:总条数 * items:当前页数据 * totalPage:有些还需要总页数...

2018-11-20 15:22:37 328

原创 springmvc关于文件上传

这里假设大家前面的导包,和xml的配置已经配好。还有form表单的配置配好的话。这里我们就是简单service的单文件上传的。/** * 在上传的过程中,我们需要对上传的内容进行校验 * 1.校验文件大小 * 2.校验文件的媒体类型 * 3.校验文件的内容 * 文件大小在spring的配置文件中设置,因此已经回呗校验,我们不用管 */@Servicepublic clas...

2018-11-19 17:31:19 234

转载 springmvc关于参数的处理问题

  一、Action参数类型 1.1、自动参数映射 1.1.1、基本数据类型 1.1.2、自定义数据类型 1.1.3、复杂数据类型 1.1.4、List集合类型 1.1.5、Map集合类型 1.2、@RequestParam参数绑定 1.2.1、基本数据类型绑定与注解属性 1.2.2、List与数组绑定基本数据类型 1.2.3、List与数...

2018-11-19 11:55:24 444

转载 SpingMvc与前台 的json数据交互

json数据格式在接口中调用。html页面比较常用,sjon格式比较简单,解析也比较简单,所以使用很普遍,在springgmvc中妈也支持对json数据的解析和转换,这篇文章主要总结一下springmvc中如何和前台交互json数据。1.两种交互形式springmvc和前台交互主要有两种形式,如下图所示:可以看出,前台传过来的方式有两种,一种是传json格式的数据够来,另一种就是在ur...

2018-11-18 15:54:56 229

转载 Springmvc对restful的支持

Restful架构,就是目前 流行的一种互联网架构。他结构清晰,符合标准,已于理解,扩展方便,所以正得到越来越多网站的采用。Restful架构对url进行规范,写restful格式的url是怎么样子呢》我们一般请求的url是类似 这样子的:http://...../xxx.action?id=001&type=aaa 而rest的url的风格是什么样子的呢?一般他类似于:http:...

2018-11-18 11:33:01 416

原创 java集合的理解

java的hashMap是如何工作的。HashMap是一个针对数据结构的键值,每个键都会有对应的值,关键是识别这样的值。 HashMap基于hash原理,我们通过put()和set()方法存储和获取对象的,当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashCode,然后找到桶位置存储值对象的。当获取对象时,通过键对象的equals()方法找到正确的键值对...

2018-10-23 00:41:02 292

原创 浅浅的谈一下mysql与oracle的区别

 这里我会浅浅的谈一下mysql与oracle的区别: 相同点:1.都是关系型数据库管理系统         2.都是目前比较流行的数据库 不同点:1.单引号的处理 mysql里可以用双引号抱起字符串,Oracle里只可以供单引号抱起字符串。 mysql是一个自动增长的数据类型,插入数据的时候,他不会自动增长,orcale不支持自动增长的数据类型, 是通过建立一个自动增长的序列号来...

2018-10-22 23:54:48 192

原创 java二叉树的遍历

是我自己受到打击了。所以自己要手撕代码了。这里我们讲的就是二叉树的代码。然后我们还会涉及到的是bfs(广度优先遍历),dfs(深度优先遍历)进行层次遍历//节点类public class TreeNode(){    private String data;//这里我们指的是数据部分    private TreeNode left;//左节点的引用    private TreeNo...

2018-10-19 23:33:14 162

原创 springIOC和springAOP

ioc利用的是java反射机制,aop利用代理模式。springioc是控制反转,最大的好处就是降低了对象之间的耦合度,在一个系统之间有些具体如何实现的不需要我们理解他。只需要知道她是怎么用的就行了。就可以了。这里的对象创建依靠的是springioc,而不是开发者主动创造的。主动创建的模式,责任归于开发者,而在被动创建的话,责任就是ioc容器。基于这样的创建的模式,就说对象呗控制反转s...

2018-10-12 22:58:28 841

原创 数据库的索引原理???

使用索引很简单的。只要能写创建表单语句。就能写创建索引的语句。当然我的本科的局限性:就是加索引能失败查询变快。。。变快。变快 特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,BTree索引,哈希索引,全文索引。因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。MySQL官方对索...

2018-10-12 22:52:42 192

原创 springmvc和mybatis的理解:

springmvc的工作流程:1.用户发送请求至前端控制器(DispatherServlet)2.DispatcherServlet收到请求调用HandlerMapping处理映射器3.处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatherServlet.4.DispatcherServlet通过处理器适配器调用处理器。5....

2018-10-08 10:21:02 757

原创 java值多线程的总结

java多线程的放肆有四种1.继承Thread类,重写run方法。2.实现Runnable接口,重写run方法,实现Runnable接口的实现类实例对象作为Thread构造器函数的target.3.通过Callable和FutureTask创建线程。4.创建线程池创建线程前面两种可以归一类:无返回值,原因很简单,通过重写run方法,run方式的返回值是void,后面两种可以归一类:有返...

2018-09-27 12:02:43 236

原创 hashCode和equals

一.关于hashCode1.hashCode的存在是主要用于查找的快捷性。如Hashtable,HashMap。hashCode是用来在散列存储结构确定对象的存储地址的。2.如果两个对象相同,就是适用于equals方法。那么两个对象的hashCode一定要相同。3.如果对象的equals方法被重写了,那么对象的hashCode也尽量重写。并且hashCode使用的对象。一定要要和eauals...

2018-09-26 09:39:56 187

原创 设计模式:懒汉模式,饿汉模式

设计模式:懒汉模式,饿汉模式单列设计模式:保证了一个类在内存中只能有有一个对象,比如多线程访问一个配置文件。希望多程序都是操作的是同一个配置文件的数据。那么就需要保证该文件对象的唯一性。思路:1.怎么做才能保证这个对象是唯一的?其他程序通过new创建该类对象是根本无法控制个数,那么,就不让其他程序创建该类的对象了。因为不可以控制,2.不让其他程序创建,就让在本类中自己创建一个对象。3...

2018-09-25 21:06:27 924 1

原创 简谈我们对redis的6中数据类型

前面我已经介绍过了redis和数据库的区别,还有redis我认为不太可能会取代数据库。reids是一种基于内存的数据库,并且提供一定的持久化功能,他是一种键值对数据库(key-value),使用key作为索引找到当前缓存的数据,并且返回给程序调用者。。当前redis支持6中数据类型,他们分别是string(字符串),List(本质是双向链表),set(无序不重复的集合),hash(哈希结构),...

2018-09-08 18:35:04 352

原创 面试题之你对redis的认识

这里是我自己看书对redis的总结:这次我们目标的Redis在java互联网项目网中的作用。在传统的javaweb项目中,使用数据库进行存储数据,但是有一些致命的弊端。主要来自性能方面。由于数据库持久化数据主要是面向磁盘,而磁盘的读/写比较慢,在一般的管理系统上,由于不存在高并发,因此没有需要瞬间需要读/写大量书写数据的要求,这时候数据库的读写是没有问题的。但是在互联网中,往往存在大量数据的需...

2018-09-07 16:09:53 3208 1

基于Arduino的智能小车的火警系统代码

基于Arduino的开发,有火焰传感器,温湿度传感器,lcd显示屏,光敏传感器,蜂鸣器。这些传感器的集成和实现

2018-06-20

ssh框架项目国家税务管理系统

poi的execl的导入导出,留言的发布,图片上传。。。。。。

2018-06-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除