- 博客(53)
- 收藏
- 关注
原创 Hashmap原理整理
HashMap简介:HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。HashMap 继承于AbstractMap,实现了Map、Cloneable、java.io.Serializable接口。HashMap 的实现不是同步的,这意味着它不是线程安全的。它的key、value都可以为null。此外,HashMap中的映射不是有序的。HashMap 的实例有两个参数影响其性能:“初始容量” 和 “加载因子”。容量 是哈希表中桶的数量,初始容量 只是哈希表在创建时的容量。加
2020-08-26 17:58:43
245
原创 取消全部定时器方法
首先是取消单个定时器,按照下面的用法可以单独取消,但是有很多的话这样取消就慢了。var myVar;function myFunction() { myVar = setTimeout(function(){ alert("Hello"); }, 3000);}function myStopFunction() { clearTimeout(myVar);}下面这个方法就可以关掉所有的定时器了,简单粗暴!!var highestTimeoutId = setTimeout("
2020-08-03 10:22:01
1955
原创 关于不同域名共享cookie的问题
项目背景:两个项目之间需要共同的登录信息,域名不相同cookie不能直接传递。在这里介绍一下cookie:1.cookie是一个存储在客户端的字符串属性,可以用它对当前网页的cookie进行读,写,增.删等操作;javascript能够用document对象的cookie属性对cookie进行操作;2.cookie的四个可选属性:2.1 cookie的生存期属性:expires;默认情况下,cookie只在浏览器会话期存在.退出浏览器就丢失;可以用expires设置时间;退出浏览器后就不会丢失并存为
2020-07-14 16:29:57
11443
转载 vue.js实现页面跳转传参以及vue相关功能介绍
由于项目急且前端开发人员只会拼页面具体数据交互不会,只能我后台开发人员来写。因为是数据交互使用的是ajax方式,我首先要面临的问题是我获得的数据怎么显示在页面上,以及怎么把数据保存下来,等页面跳转时就不用向后台再次请求数据,比如用户名以帐号相关基础信息,不可能每次打开新页面都向后台请求一下,太麻烦且交互数据太多。我首先想到的是H5里的LocalStorage,SessionStroage保存数据,而且用jquery获得dom元素,再用jquery的attr()和html()方法设置dom元素属性。先介绍一
2020-07-06 15:36:52
637
转载 $.ajax()方法详解
$.ajax()方法详解jquery中的ajax方法参数总是记不住,这里记录一下。1.url:要求为String类型的参数,(默认为当前页地址)发送请求的地址。2.type:要求为String类型的参数,请求方式(post或get)默认为get。注意其他http请求方法,例如put和delete也可以使用,但仅部分浏览器支持。3.timeout:要求为Number类型的参数,设置请求超时时间(毫秒)。此设置将覆盖$.ajaxSetup()方法的全局设置。4.async:要求为Boolean
2020-06-04 17:05:39
164
原创 Java的三种代理模式总结
Java的三种代理模式代理(Proxy) 是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法。如图所示:代理模式的关键点是:代理对象与目标对象.代理对象是对目标对象...
2020-04-19 23:12:17
201
原创 时间复杂度相关知识总结
数组:采用一段连续的存储单元来存储数据。对于指定下标的查找,时间复杂度为O(1);通过给定值进行查找,需要遍历数组,逐一比对给定关键字和数组元素,时间复杂度为O(n),当然,对于有序数组,则可采用二分查找,插值查找,斐波那契查找等方式,可将查找复杂度提高为O(logn);对于一般的插入删除操作,涉及到数组元素的移动,其平均复杂度也为O(n)线性链表: 对于链表的新增,删除等操作(在找到指定操作位...
2020-04-19 22:55:50
2595
原创 http、HTTPS相关总结
HTTP协议,即超文本传输协议(Hypertext transfer protocol)。是一种详细规定了浏览器和万维网(WWW = World Wide Web)服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。HTTP协议作为TCP/IP模型中应用层的协议也不例外。HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS...
2020-04-03 00:25:40
476
原创 对象分配策略
对象的创建过程中—— 分配内存,有两种方式 指针碰撞和空闲列表。选择那种分配方式由 Java 堆是否规整决定,而 Java 堆是否规整又由所采用的垃圾收集器是否带有压缩整理功能决定。对象的内存分配,往大方向上讲,就是在堆上分配,对象主要分配在新生代的 Eden 区上,如果启动了本地线程分配缓冲,将按线程优先在 TLAB 上分配。少数情况下也可能直接分配在老年代中,分配的规则并不是百分之百固定的。...
2020-03-30 23:10:09
830
原创 Java线程池的学习总结
一 使用线程池的好处线程池提供了一种限制和管理资源(包括执行一个任务)。 每个线程池还维护一些基本统计信息,例如已完成任务的数量。这里借用《Java 并发编程的艺术》提到的来说一下使用线程池的好处:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。提高线程的可管理性。线程是稀缺资源,如果无限制的创建...
2020-03-27 10:21:57
246
1
原创 设计模式之工厂模式
工厂模式在工厂方法模式中,核心的工厂类不再负责所有的产品的创建,而是将具体创建的工作交给子类去做。该核心类成为一个抽象工厂角色,仅负责给出具体工厂子类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。...
2020-03-27 00:21:36
194
原创 设计模式之单例模式
所谓单例,就是整个程序有且仅有一个实例。该类负责创建自己的对象,同时确保只有一个对象被创建。在Java,一般常用在工具类的实现或创建对象需要消耗资源。特点类构造器私有持有自己类型的属性对外提供获取实例的静态方法单例模式的几种实现方式1、懒汉式,线程不安全最大的问题就是不支持多线程。因为没有加锁 synchronized,所以严格意义上它并不算单例模式。这种方式 lazy loadi...
2020-03-27 00:18:15
95
原创 序列化和反序列化
序列化和反序列化的定义:Java序列化就是指把Java对象转换为字节序列的过程Java反序列化就是指把字节序列恢复为Java对象的过程。序列化最重要的作用:在传递和保存对象时.保证对象的完整性和可传递性。对象转换为有序字节流,以便在网络上传输或者保存在本地文件中。反序列化的最重要的作用:根据字节流中保存的对象状态及描述信息,通过反序列化重建对象。总结: 核心作用就是对象状态的保存和重建。...
2020-03-26 23:49:47
126
原创 反射机制
一、什么是反射:反射是Java的特征之一,是一种间接操作目标对象的机制,核心是JVM在运行的时候才动态加载类,并且对于任意一个类,都能够知道这个类的所有属性和方法,调用方法/访问属性,不需要提前在编译期知道运行的对象是谁,他允许运行中的Java程序获取类的信息,并且可以操作类或对象内部属性。程序中对象的类型一般都是在编译期就确定下来的,而当我们的程序在运行时,可能需要动态的加载一些类,这些类因为...
2020-03-26 23:34:24
376
原创 SpringBean的一些介绍和理解
**在 Spring 中,那些组成应用程序的主体及由 Spring IOC 容器所管理的对象,被称之为 bean。**简单地讲,bean 就是由 IOC 容器初始化、装配及管理的对象,除此之外,bean 就与应用程序中的其他对象没有什么区别了。而 bean 的定义以及 bean 相互间的依赖关系将通过配置元数据来描述。Spring中的bean默认都是单例的,这些单例Bean在多线程程序下如何保证...
2020-03-23 23:43:50
292
原创 Spring相关资料介绍
SpringAOP,IOC实现原理推荐阅读:自己动手实现的 Spring IOC 和 AOP - 上篇自己动手实现的 Spring IOC 和 AOP - 下篇AOPAOP思想的实现一般都是基于 代理模式 ,在JAVA中一般采用JDK动态代理模式,但是我们都知道,JDK动态代理模式只能代理接口而不能代理类。因此,Spring AOP 会这样子来进行切换,因为Spring AO...
2020-03-23 23:22:51
120
原创 Spring AOP实现原理
代理模式代理模式的UML类图如下:可以看到还是很简单的,代理类实现了被代理类的接口,同时与被代理类是组合关系。下面看一下代理模式的实现。静态代理接口类:interface Person { void speak();}真实实体类:class Actor implements Person { private String content; public A...
2020-03-23 23:20:25
125
原创 什么是 RedLock
基于 Redis 实现分布式锁的方式名叫 Redlock,此种方式比原先的单节点的方法更安全。它可以保证以下特性:安全特性:互斥访问,即永远只有一个 client 能拿到锁避免死锁:最终 client 都可能拿到锁,不会出现死锁的情况,即使原本锁住某资源的 client crash 了或者出现了网络分区容错性:只要大部分 Redis 节点存活就可以正常提供服务怎么在单节点上实现分布式锁...
2020-03-23 22:50:14
4085
原创 事务的相关知识点
什么是事务?事务是逻辑上的一组操作,要么都执行,要么都不执行。事务的四大特性原子性、一致性、隔离性、持久性原子性(Atomicity): 事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用;一致性(Consistency): 执行事务前后,数据保持一致,多个事务对同一个数据读取的结果是相同的;隔离性(Isolation): 并发访问数据库时,一个用户...
2020-03-23 00:53:32
293
原创 MySQL的一些介绍
什么是MySQL?MySQL 是一种关系型数据库,在Java企业级开发中非常常用,因为 MySQL 是开源免费的,并且方便扩展。阿里巴巴数据库系统也大量用到了 MySQL,因此它的稳定性是有保障的。MySQL是开放源代码的,因此任何人都可以在 GPL(General Public License) 的许可下下载并根据个性化的需要对其进行修改。MySQL的默认端口号是3306。MyISAM和In...
2020-03-23 00:41:09
536
原创 聚集索引和非聚集索引
索引简介索引是关系型数据库中给数据库表中一列或多列的值排序后的存储结构,SQL的主流索引结构有B+树以及Hash结构,聚集索引以及非聚集索引用的是B+树索引。SQL Sever索引类型有:唯一索引,主键索引,聚集索引,非聚集索引。MySQL 索引类型有:唯一索引,主键(聚集)索引,非聚集索引,全文索引。聚集索引聚集(clustered)索引,也叫聚簇索引。定义:数据行的物理顺序与列值(...
2020-03-23 00:11:18
175
原创 平衡二叉树、B树、B+树、B*树
1、平衡二叉树平衡二叉树是基于二分法的策略提高数据的查找速度的二叉树的数据结构;**特点:**平衡二叉树是采用二分法思维把数据按规则组装成一个树形结构的数据,用这个树形结构的数据减少无关数据的检索,大大的提升了数据检索的速度;平衡二叉树的数据结构组装过程有以下规则:(1)非叶子节点只能允许最多两个子节点存在。(2)每一个非叶子节点数据分布规则为左边的子节点小当前节点的值,右边的子节点大...
2020-03-22 23:31:46
123
原创 关于集合的一些总结
说说List,Set,Map三者的区别?List(对付顺序的好帮手): List接口存储一组不唯一(可以有多个元素引用相同的对象),有序的对象。Set(注重独一无二的性质): 不允许重复的集合。不会有多个元素引用相同的对象。Map(用Key来搜索的专家): 使用键值对存储。Map会维护与Key有关联的值。两个Key可以引用相同的对象,但Key不能重复,典型的Key是String类型,但也可以...
2020-03-19 23:37:44
250
原创 Java多线程系列——Lock锁
Lock锁简介1、从Java5开始,Java提供了一种功能更强大的线程同步机制——通过显式定义同步锁对象来实现同步,在这种机制下,同步锁由Lock对象充当。2、Lock 提供了比synchronized方法和synchronized代码块更广泛的锁定操作,Lock允许实现更灵活的结构,可以具有差别很大的属性,并且支持多个相关的Condition对象。3、Lock是控制多个线程对共享资源进行访...
2020-03-18 23:36:05
237
原创 synchronized关键字最主要的三种使用方式的总结
synchronized关键字最主要的三种使用方式的总结修饰实例方法,作用于当前对象实例加锁,进入同步代码前要获得当前对象实例的锁修饰静态方法,作用于当前类对象加锁,进入同步代码前要获得当前类对象的锁 。也就是给当前类加锁,会作用于类的所有对象实例,因为静态成员不属于任何一个实例对象,是类成员( static 表明这是该类的一个静态资源,不管new了多少个对象,只有一份,所以对该类的所有对象...
2020-03-18 01:00:51
680
原创 线程池原理总结
有一个简单并且适用面比较广的公式:CPU 密集型任务(N+1): 这种任务消耗的主要是 CPU 资源,可以将线程数设置为 N(CPU 核心数)+1,比 CPU 核心数多出来的一个线程是为了防止线程偶发的缺页中断,或者其它原因导致的任务暂停而带来的影响。一旦任务暂停,CPU 就会处于空闲状态,而在这种情况下多出来的一个线程就可以充分利用 CPU 的空闲时间。I/O 密集型任务(2N): 这种...
2020-03-18 00:48:38
113
原创 锁的膨胀过程总结
自旋锁:自选锁其实就是在拿锁时发现已经有线程拿了锁,自己如果去拿会阻塞自己,这个时候会选择进行一次忙循环尝试。也就是不停循环看是否能等到上个线程自己释放锁。膨胀过程java中每个对象都可作为锁,锁有四种级别,按照量级从轻到重分为:无锁、偏向锁、轻量级锁、重量级锁。每个对象一开始都是无锁的,随着线程间争夺锁,越激烈,锁的级别越高,并且锁只能升级不能降级。最高效的是偏向锁,尽量使用偏向锁,如果...
2020-03-18 00:02:24
561
原创 并发编程相关知识总结
1.何为线程?线程与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程不同的是同类的多个线程共享进程的堆和方法区资源,但每个线程有自己的程序计数器、虚拟机栈和本地方法栈,所以系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小得多,也正因为如此,线程也被称为轻量级进程线程和进程最大的不同在于基本上各进程是独立的,而各线程则不一定,因为同一...
2020-03-17 23:32:50
315
原创 经典算法之比较类排序
十种常见排序算法可以分为两大类:比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。 相关概念稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。不稳定:如果a原本在b的前面,而a=b...
2020-03-17 00:47:15
144
原创 堆排序
堆排序堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。如图所示:堆结构逻辑上讲,公式来描述一下堆的定义大概就是:大顶堆:arr[i] >= ar...
2020-03-13 16:58:48
145
原创 类加载器及双亲委派模型和破坏双亲委派
JVM 中内置了三个重要的 ClassLoader,除了 BootstrapClassLoader 其他类加载器均由 Java 实现且全部继承自java.lang.ClassLoader:BootstrapClassLoader(启动类加载器) :最顶层的加载类,由C++实现,负责加载 %JAVA_HOME%/lib目录下的jar包和类或者或被 -Xbootclasspath参数指定的路径中的...
2020-03-12 23:53:58
421
原创 JVM的一些介绍
一、JVM 是 Java Virtual Machine 的缩写,它是一个虚构出来的计算机,一种规范。通过在实际的计算机上仿真模拟各类计算机功能实现···简单来说其实就类似于一台小电脑运行在windows或者linux这些操作系统环境下,它直接和操作系统进行交互,与硬件不直接交互,可操作系统可以帮我们完成和硬件进行交互的工作。JVM 是不认识文本文件的,所以它需要进行编译 ,让其成为一个它会读...
2020-03-12 22:51:39
136
原创 使用QueryWrapper构造器完成分页及查询的方法
在.xml文件select查询sql下加上${ew.customSqlSegment}并且在mapper层的构造器前加上@Param(Constants.WRAPPER)即可使用QueryWrapper构造器进行查询操作。
2019-12-20 14:41:56
4784
原创 Mabitis中#与$符号区别
Mabitis中#与$符号区别在 Mapper.xml文件中使用如下的 sql 可以实现动态传递参数 name:select * from user where name = #{name};或者是:select * from user where name = ${name}; 一、用法1、能使用 #{ } 的地方就用 #{ }首先这是为了性能考虑的,相同的预编译 sql 可...
2019-09-23 23:52:37
178
原创 环境变量配置
Path环境变量的配置目的是为了实现java和javac命令在任意命令目录下能够访问。配置方法——创建新的变量名称:JAVA_HOME计算机-右键属性-高级系统设置-高级-环境变量-系统变量——在JAVA_HOME添加变量值:JDK安装目录——在path环境变量最前面添加如下内容*%JAVA_HOME%\bin;...
2019-08-15 11:51:31
103
原创 常用DOS命令
打开控制台–win + r ,然后cmd回车。常用命令:盘符切换命令 盘符名称:查看当前文件夹 dir进入文件夹命令 cd 文件夹名进入多级文件夹 cd 文件夹1\文件夹2\文件夹3退出文件夹命令 cd…退出到磁盘根目录 cd/清屏 cls退出 exit上下键 查找敲过的命令Tab键 自动补齐命令...
2019-08-15 11:03:20
81
原创 Git常用命令
基础用法(最常用):git clone:从码云上克隆文件。git pull:从码云上拉下代码。git add .:添加文件到本地暂存区。git status:检查仓库中的文件状态。git commit m-“备注信息”:提交到版本库并记录提交信息。git push:将文件推到码云上去。(慎重操作,确定后再进行操作)Git的使用:1 git 初始化配置1.1 配置用户名: gi...
2019-08-13 18:35:51
214
转载 PowerDesigner16.5 反向生成
PowerDesigner16.5 反向生成https://blog.csdn.net/weixin_38746118/article/details/94883695一、创建模板首先创建一个导出模板,如下图:位置在“report——>report templates”进入界面,如下图:填写模板名称,语言选择中文简体,类型选择“Physical Data Model”,点击o...
2019-07-09 17:30:41
743
原创 接口的使用
接口(interface):主要用来描述类具有什么功能,而并不给出每个功能的具体实现一个类可以实现(implement)一个或多个接口,并在需要接口的地方,随时使用实现了相应接口的对象。public interface People{ public Student implements People}Arrays类中的sort方法承诺可以对对象数组进行排序,但要求满足下列前提:对象所属...
2019-06-25 19:29:51
199
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人