- 博客(24)
- 收藏
- 关注
原创 隐藏input框
//隐藏不留痕迹<input type="hidden" /><input type="text" style="display:none" /> //占位隐藏,会留下空白<input type="text" style="visibility: hidden;" />
2021-04-05 01:11:04
1728
1
原创 AIO,NIO,BIO区别
同步和异步同步就是一个任务的完成需要依赖另外一个任务时,只有等待被依赖的任务完成后,依赖的任务才能算完成,这是一种可靠的任务序列。要么成功都成功,失败都失败,两个任务的状态可以保持一致。而异步是不需要等待被依赖的任务完成,只是通知被依赖的任务要完成什么工作,依赖的任务也立即执行,只要自己完成了整个任务就算完成了。至于被依赖的任务最终是否真正完成,依赖它的任务无法确定,所以它是不可靠的任务序列。我们可以用打电话和发短信来很好的比喻同步与异步操作。阻塞和非阻塞阻塞与非阻塞主要是从 CPU 的消耗上来说的,
2021-04-04 22:24:10
173
原创 输入url,一次请求流程
流程如下:域名解析发起TCP的3次握手建立TCP连接后发起http请求服务器响应htp请求浏览器解析htm代码,并请求html代码中的资源(如js、css、图片等)浏览器对页面进行渲染呈现给用户1.域名解析–DNS解析DNS解析就是一个递归查询过程:比如域名:www.baidu.com.,1.浏览器搜索自己的DNS缓存(维护一张域名与IP地址的对应表)2.若没有,则搜索操作系统中的DNS缓存(维护一张域名与IP地址的对应表)3.若没有,则搜索操作系统的hosts文件(Windows
2021-04-04 22:23:07
268
原创 hashmap面试题
JDK8中的HashMap与JDK7的HashMap有什么不一样?JDK8中新增了红黑树,JDK8是通过数组+链表+红黑树来实现的JDK7中链表的插入是用的头插法,而JDK8中则改为了尾插法JDK8中的因为使用了红黑树保证了插入和查询了效率,所以实际上JDK8中的Hash算法实现的复杂度降低了JDK8中数组扩容的条件也发了变化,只会判断是否当前元素个数是否查过了阈值,而不再判断当前put进来的元素对应的数组下标位置是否有值。JDK7中是先扩容再添加新元素,JDK8中是先添加新元素然后再扩容H
2021-04-04 21:59:33
118
原创 自动拆装箱128陷阱
自动装箱规范要求boolean,byte,char在-128~127之间的short和int被包装到固定的对象中。对于Integer类型的变量,在以上的范围内的变量值,直接指向常量池中的缓存地址,不会new开辟出新的空间。下面是验证的代码: Integer a = 100; int b = 100; System.out.println(a==b);;// 比较两个变量的地址 System.out.println(a.equals(b));// 比较两个变量的数值true
2021-04-04 21:53:36
129
原创 git常用命令
git clone 远程仓库链接git status 查看本地仓中文件的更新情况git add . 提交该目录下的所有文件到远程仓库git add 路径/. 提交该路径下所有文件git add 文件路径/文件名git commit -m " 描述提交的内容信息"git push origin head:master 提交到远程仓库的主分支git checkout origin/子分支 切换到子分支的目录下,提交的文件将到达独立的子分支git pull 取回远程主机某个分支
2021-04-04 21:51:16
85
原创 TCP 粘包/拆包的原因及解决方法
Java NIO学习时,发现,如果客户端连续不断的向服务端发送数据包时,服务端接收的数据会出现两个数据包粘在一起的情况,这就是TCP协议中经常会遇到的粘包以及拆包的问题。发生TCP粘包或拆包有很多原因,现列出常见的几点,可能不全面,欢迎补充,1、要发送的数据大于TCP发送缓冲区剩余空间大小,将会发生拆包。2、待发送数据大于MSS(最大报文长度),TCP在传输前将进行拆包。3、要发送的数据小于TCP发送缓冲区的大小,TCP将多次写入缓冲区的数据一次发送出去,将会发生粘包。4、接收数据端的应用层没有及
2021-04-04 21:27:02
321
原创 mysql的id生成uuid
mysql中直接使用uuid()函数,可以生成一个随机的uuid正常的uuid是36位长度的,例如d48644cc-2c7a-4714-9900-18ab99e80b03,其中有4个字符是“-”,在mysql中可以使用replace()函数来替换。REPLACE(UUID(),"-","")insert into wkzc_coupon_info(logic_code,coupon_code,coupon_value) values(REPLACE(UUID(),"-",""),'1005046544'
2021-04-04 21:24:39
1469
原创 Dubbo-概念
1.分布式系统《分布式系统原理与范型》定义:“分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统”分布式系统(distributed system)是建立在网络之上的软件系统。随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。2.RPC什么是RPC?RPC【Remote Procedure Call】是指远程过程调用,是一种进程间通信方式,他是一种技术的思想,而不是规范。它允
2021-03-09 01:42:23
128
2
原创 jvm读取静态字段
类初始化规则虚拟机规范则严格规定了有且只有5种情况必须立即对类进行“初始化”(而加载、验证、准备自然需要在此之前开始):遇到new、getstatic、putstatic或invokestatic这4条字节码指令时,如果类没有进行过初始化,则需要先触发其初始化。生成这4条指令的最常见的Java代码场景是:使用new关键字实例化对象的时候、读取或设置一个类的静态字段(被final修饰、已在编译期把结果放入常量池的静态字段除外)的时候,以及调用一个类的静态方法的时候。使用java.lang.refle
2021-03-09 01:11:10
195
原创 Redis的六种淘汰策略
将 Redis 用作缓存时, 如果内存空间用满, 就会自动驱逐老的数据,淘汰那些老的或者不常用的部分keys,以保证新的数据写入成功。Maxmemory配置指令maxmemory配置指令用于配置Redis存储数据时指定限制的内存大小。通过redis.conf可以设置该指令,或者之后使用CONFIG SET命令来进行运行时配置。例如为了配置内存限制为100mb,以下的指令可以放在redis.conf文件中。maxmemory 100mb设置maxmemory为0代表没有内存限制。对于64位的系统这是
2021-02-27 22:06:21
455
原创 Dubbo环境搭建(windows)
1.安装zookeeper1.1、下载zookeeper网址 https://archive.apache.org/dist/zookeeper/zookeeper-3.4.13/1.2、解压zookeeperzookeeper-3.4.13\zookeeper-3.4.13\bin目录下解压运行zkServer.cmd ,初次运行会报错,没有zoo.cfg配置文件1.3、修改zoo.cfg配置文件将conf下的zoo_sample.cfg复制一份改名为zoo.cfg即可。注意几个重要位
2021-02-27 22:05:54
330
2
原创 过滤html标签 去除html标签
过滤所有html标签.replace(/<.*?>/g,"")过滤img,并计算img个数let reTag = /<img(?:.|\s)*?>/g;let arr = [];element.content.replace(reTag, function (match, capture) { arr.push(capture); });arr.length 为图片个数
2021-02-27 22:04:24
191
原创 java并发编程的艺术(一)
上下文切换CPU通过时间片分配算法来循环执行任务,当前任务执行一个时间片后会切换到下一个 任务。但是,在切换前会保存上一个任务的状态,以便下次切换回这个任务时,可以再加载这 个任务的状态。所以任务从保存到再加载的过程就是一次上下文切换。如何减少上下文切换减少上下文切换的方法有无锁并发编程、CAS算法、使用最少线程和使用协程。1.·无锁并发编程。多线程竞争锁时,会引起上下文切换,所以多线程处理数据时,可以用一 些办法来避免使用锁,如将数据的ID按照Hash算法取模分段,不同的线程处理不同段的数据。 ·
2021-02-27 21:49:42
140
原创 深入理解JVM(一)
运行时数据区域Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域 有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而一直存在,有些区域则是 依赖用户线程的启动和结束而建立和销毁。程序计数器程序计数器(Program Counter Register)是一块较小的内存空间,它可以看作是当前线程所执行的 字节码的行号指示器。在Java虚拟机的概念模型里,字节码解释器工作时就是通过改变这个计数器 的值来选取下一条需要执行的字节码指令,它是程序控制
2021-02-22 20:39:47
140
1
转载 JAVA静态代理和动态代理理解
代理代理是英文 Proxy 翻译过来的。我们在生活中见到过的代理,大概最常见的就是朋友圈中卖面膜的同学了。她们从厂家拿货,然后在朋友圈中宣传,然后卖给熟人。这里写图片描述按理说,顾客可以直接从厂家购买产品,但是现实生活中,很少有这样的销售模式。一般都是厂家委托给代理商进行销售,顾客跟代理商打交道,而不直接与产品实际生产者进行关联。所以,代理就有一种中间人的味道。接下来,我们说说软件中的代理模式。代理模式代理模式是面向对象编程中比较常见的设计模式。这里写图片描述这是常见代理模式常见的
2021-02-22 19:49:06
669
2
原创 Redis的持久化
1.Redis的持久化Redis的持久化就是把内存中的数据存储到磁盘中去。如果数据只是存储到内存中,如果redis宕机,数据会部分丢失,但是如果存储到磁盘中去,下次启动时直接从磁盘中读取数据,这样就保证了数据不会丢失。...
2020-10-27 14:12:54
824
原创 JUC线程笔记(一)
Java JUCJUC简介在 Java 5.0 提供了 java.util.concurrent (简称 JUC )包,在此包中增加了在并发编程中很常用 的实用工具类,用于定义类似于线程的自定义子 系统,包括线程池、异步 IO 和轻量级任务框架。 提供可调的、灵活的线程池。还提供了设计用于多线程上下文中的 Collection 实现等。...
2020-10-27 14:11:58
239
原创 Java NIO笔记(二)阻塞和非阻塞模式
文章目录1.NIO 的非阻塞式网络通信1.2 阻塞模式传输1.3 非阻塞模式传输2.选择器2.1 选择器(Selector)的应用2.2 SelectionKey2.3 选择器常用方法3 管道1.NIO 的非阻塞式网络通信传统的 IO 流都是阻塞式的。也就是说,当一个线程调用 read() 或 write() 时,该线程被阻塞,直到有一些数据被读取或写入,该线程在此期间不能执行其他任务。因此,在完成网络通信进行 IO 操作时,由于线程会阻塞,所以服务器端必须为每个客户端都提供一个独立的线程进行处理,当
2020-10-27 14:11:19
921
4
原创 Java NIO笔记(一)通道和缓冲区
文章目录1.Java NIO简介2.Java NIO和传统IO的区别3.通道和缓冲区3.1 缓冲区3.2 缓冲区中的四个核心属性3.3 缓冲区存取数据的两个核心方法3.4 缓冲区的常用方法3.5 直接缓冲区和非直接缓冲区4.通道4.1 Java 为 Channel 接口提供的最主要实现类4.2 利用通道完成文件的复制(非直接缓冲区)4.3 使用直接缓冲区完成文件的复制(内存映射文件)1.Java NIO简介Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标
2020-10-27 14:11:07
528
2
原创 Redis概述及linux安装redis
文章目录1.Redis是什么2.Redis特点3.Redis能做什么4.安装redis第一步 下载redis第二步 解压压缩包第三步 yum安装gcc依赖第四步 跳转到redis解压目录下第五步 编译安装5.启动redis方式一 直接启动redis方式二 以后台进程方式启动redis第一步:修改redis.conf文件第二步:指定redis.conf文件启动6. redis的helloworld1.Redis是什么Redis:REmote DIctionary Server(远程字典服务器)是完全
2020-10-27 14:10:24
993
1
原创 NoSQL概论
1.NoSQL是什么NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库。2.为什么要用NoSQL随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题,包括超大规模数据的存储。(例
2020-10-27 14:08:14
350
1
原创 Eclipse 使用maven创建springMVC+ajax项目完成前后台数据交互
一.在eclipse里创建maven-archetype-webapp项目1.new—》other–》maven2.默认下一步3.选择maven-archetype-webapp4.填写选项5.完成之后目录如下其中index.jsp报错"The superclass “javax.servlet.http.HttpServlet” was not found on the J...
2020-10-27 14:07:54
706
原创 杀死8080端口
最近在启动项目的时候经常会出现8080端口占用,导致项目启动失败关闭8080端口,项目正常运行1.启动cmd寻找8080端口 netstat -ano | findstr 80802.关闭8080端口杀死占用端口的进程号 taskkill /pid XXXX /f(XXX为进程号)...
2020-10-27 14:07:02
578
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人