自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 记一次jQuery EasyUI使用-Easyui combobox的使用方法

开局附上最最最有用的官方文档。划重点⚠️:easyui使用手册进入正题--------------------------------------------------------------------------------------------------------------------------------------------------------------现...

2020-04-24 16:58:11 308

原创 Java并发编程-第二章

以下内容来自《Java并发编程》书籍第二章。⚠️补充:1、volatile的有序性volatile通过内存屏障实现禁止指令重排序保证有序性。硬件层面的内存屏障分为Load Barrier 和 Store Barrier即读屏障和写屏障。2、同步代码块和同步方法底层实现是有区别的。一个使用标识位,一个使用监控。同步代码块是在代码块的开始和结束或异常位置插入moni...

2020-04-23 16:16:36 202

原创 JAVA并发编程-第一章

最近开始读Java并发编程这本书,做一个复习大纲。

2020-04-22 13:42:48 174

原创 力扣 868题-二进制间距 简单题

一、题目描述给定一个正整数N,找到并返回 N的二进制表示中两个连续的 1 之间的最长距离。如果没有两个连续的 1,返回 0 。示例 1:输入:22输出:2解释:22 的二进制是 0b10110 。在 22 的二进制表示中,有三个 1,组成两对连续的 1 。第一对连续的 1 中,两个 1 之间的距离为 2 。第二对连续的 1 中,两个 1 之间的距离为 1 。...

2020-04-01 11:26:48 260

原创 web.xml中servlet的配置解释

一、首先web.xml配置文件是非必须的,如果你的web项目没有servlet、filter等的配置的时候,当然是不需要web.xml的配置文件。web.xml配置文件是用来初始化项目的配置的,比如Welcome页面、servlet、servlet-mapping、filter、listener、启动加载级别等。二、servlet的配置<?xml version="1.0" enc...

2020-02-05 11:53:49 2746

原创 消息中间件之rabbit mq

公司用的消息中间件是rabbit mq 并在此基础上进行了一些封装 故而进行研究一番。官方文档学习基础知识rabbit mq 运行在erlang环境之上,所以对应erlang支持的平台环境 rmq都支持以下的平台是Erlang语言所支持的,因此RabbitMQ可以运行其上:Solaris BSD Linux MacOSX TRU64 Windows NT/2000/X...

2019-12-26 14:24:46 408

原创 线程join之底层分析

一、线程的五种状态及相互转换条件从操作系统的角度,线程分为就绪、运行和阻塞三种状态。 线程的生命周期  创建:一个新的线程被创建,等待该线程被调用执行;  就绪:时间片已用完,此线程被强制暂停,等待下一个属于它的时间片到来;  运行:此线程正在执行,正在占用时间片...

2019-12-23 18:13:00 628

原创 记Tomcat删除war包问题

由于不清楚tomcat部署原理,误认为tomcat部署完成之后,可以把war删除,然后以后每次部署,只需要增量部署就行了,然后还怕由于war包的存在,增量部署的内容会被覆盖掉,不清楚war包什么时候会自动重新部署。于是,,rm -rf mm.war---尴尬了。。删除war包之后,发现解压的项目目录都顺带不见了。。。于是赶紧查询资料:纠正自己的错误思想:1、tomcat全量部署完成...

2019-11-13 11:50:48 3377

原创 Spring实现事务的原理

Spring是通过AOP实现事务的,我们都知道,Spring的AOP是基于代理实现的,代理分两种,一种是JDK,一种是CGlib,JDK动态代理要求代理类必须实现一个接口,因为具体实现的时候,需要根据接口类型动态构造代理类对象。而Spring就是在代理类调用invoke方法之前或之后加上一些公共的代码进行实现事务的管理的。Spring对事务支持的本质也是基于数据库对事务的支持一般事务操作步...

2019-11-12 23:37:44 442

原创 java基础面试题

一、面向对象和面向过程区别1、面向对象比面向过程性能低,因为类的实例化需要耗费性能。2、面向对象比面向过程更易复用、易拓展、易维护。java性能差的主要原因并不是因为它是面向对象语言,而是因为它编译过后并不是能直接能在机器上执行的机器码,而是字节码,还需要边解释边执行,所以效率低。那么为什么java要采用字节码呢?字节码是给JVM识别的代码,不需要针对特定的OS,实现跨平台的特性,一处编译...

2019-11-03 19:15:50 260

原创 Volatile关键字

基础知识补充:主内存和cpu之间的关系,因为cpu是在是处理速度太快了。所以一般cpu都有一个cpu缓存,上图的意思是主内存---》cpu缓存---》cpu寄存器---》cpu执行处理,写的时候反之。看上图,就是多线程情况下java操作变量的大致步骤,需要注意的是,多线程操作的变量都是从主内存拿到的是变量的副本,然后进行一系列操作后,另赋值给主内存,所以,这种情况下就会导致多线程...

2019-11-01 23:56:22 204

原创 HashMap的扩容

HashMap默认数组大小是16,研究表明,当数组长度为2的n次幂的时候,不同的key算得的index相同的几率较小,数据在数组上分布的比较均匀,也就是产生hash碰撞的几率比较小,相对的,数据存放在链表上的几率比较小,查询效率也就比较高了。所以在存储大数量数据的时候,最好指定hashmap的size为2的整数次幂,就算不指定的话,也会以大于且接近于指定值大小的2次幂来初始化的。预先指定的话,可...

2019-11-01 14:33:40 535

原创 hashMap的put原理

HashMap的put过程详解HashMap结构HashMap是一个数组+链表构成的哈希表结构,支持多种数据结构,key和value都可以为null,但是key只能有一个为null;key和value都不可以存放基本数据类型,可以存放他们的封装类;key可以是任意对象,需要重写hashcode方法。hashmap的put过程:1.计算key的hashcode值(hashcode是ob...

2019-10-31 17:22:08 3125 2

原创 Spring原理

2019-10-24 22:53:26 143

原创 Mysql索引失效的问题

mysql索引失效的情况:索引字段使用函数表达式索引字段使用like,以%开头如:like %id;--不使用索引;like id%--可以使用索引or的使用,但并不是所有的or都会使索引失效,如果or连接的所有条件字段都设置了索引,那么还是会走索引的;一旦有一个条件没有建立索引,那么就会走全表扫描。如果创建多列索引,必须所有的列都用来where的查询条件的时候,索引才会有效字符串类型的...

2019-10-23 18:01:21 237

原创 shiro实现单点登录

需求:实现同一个账号同一个时刻只能在一个IP浏览器登录,后者把前者挤掉线。实现:通过shiro的session管理机制进行实现。我的理解:shrio有一套sessionmanager的管理器,用来管理登录用户的session。不同的用户每次登录都会生成一个sessionid,保存在shrio框架中。我只需要实现根据登录用户的账号,判断正在登录的用户session是否已经存在于当前活跃的sess...

2019-10-23 14:19:28 2884

原创 记一次oracle sql语句未提交引起的生产问题

问题:今天帮助同事排查生产问题,遇到一个oracle执行语句未提交引起的坑。以下记录警醒自己。现象:页面上某一个按钮点击之后,总会有不确定性的延迟--并不是正常延迟。排查:查看日志,发现总是执行到一个服务中,执行失败。这个服务中有三条sql语句,前两条是更新update,第三条是删除delete。这几个操作总是发生不定性的错误,执行延迟等问题。分析:oracle中DML语句执行需要提交...

2019-10-14 22:09:53 1392

原创 记一次map中null坑

现象:前端ajax的post请求中的date中不存在store_code字段,但是后端controller由于逻辑复用需要使用request.getParamter("store_code");然后将该值放到pack(公司框架定义的一个数据结构,用户生成json类型的报文。支持多层嵌套),然后将pack转换为json进行socket请求。最终生成的json中,有store_code="null...

2019-09-27 17:55:05 934

原创 记静态常量遇到的坑

场景:public class TppsPath { static final String name = "小花";}public class Test { public static void main(String args[]){ System.Out.Println(TppsPath.name);}}某个类引用了该变量值。由于需求变更,需要更改n...

2019-09-27 16:36:23 352

原创 僵尸进程

linux部署程序场景:项目启动是按照启动脚本进行启动的,启动脚本是start.sh现象:启动脚本启动之后,有些请求总是请求不过来,而且重启服务,使用kill -9 pid根本杀不死。分析:当时毫无头绪,上网搜索发现可以查看一下程序是否存在僵尸进程。僵尸进程产生的原因是由于子进程被杀死了,但是父进程还活着,所以这个子进程就在进程表中占用一个位置,而且无法死掉。僵尸进程: 是当子进程比父...

2019-09-27 11:29:55 219

原创 ORACLE实现更改列字段类型为CLOB

场景:更改表TBL_MER_BASE_INFO_R_EXPAND 中的QRCODE_DATA列字段类型为CLOB类型SQL:alter TABLE TBL_MER_BASE_INFO_R_EXPAND ADD(temp_clob CLOB);//给表新增一个clob类型的列update TBL_MER_BASE_INFO_R_EXPAND set temp_clob = QRCODE_...

2019-09-25 11:42:44 4961 2

原创 简谈Java反射机制

Java反射的概念Java反射是指在程序运行过程中能动态获取类的各种信息,在Java中,只要给定确定的类名,就能通过反射机制获取类的所有信息。反射机制的优点就是可以实现动态创建对象和编译,体现出很大的灵活性。它的缺点是对性能有影响。使用反射,相当于需要先编译,再执行,比起已经经过编译的代码,执行起来效率略低。表现形式Class.forName("com.mysql.jdbc.Driv...

2019-09-22 11:02:27 223

转载 Java代码块执行顺序问题

目录一、知识基础二、魔鬼实战 一、知识基础1.静态块:static{ System.out.println("This is a 静态块");}执行时间:类加载时只执行一次,时间上优先于主函数 ; 存储区域:静态代码块中声明的变量或对象以及静态变量和对象的句柄存在于方法区中;...

2019-09-22 10:46:06 196

转载 Java 链表、栈、队列底层实现原理

目录一、自定义类实现链表二、自定义类实现栈三、自定义类实现队列一、自定义类实现链表1.定义节点的数据类型public class NodeClass<T> { private T Date; //数据 private NodeClass<T> Next; //...

2019-09-21 19:32:08 935

原创 Java的反射机制

java反射机制反射机制指的是程序在运行时能够获取自身的信息。在java中,只要给定类的名字, 那么就可以通过反射机制来获得类的所有信息。Class.forName("com.mysql.jdbc.Driver.class").newInstance();//这句代码就是用了java反射机制实现的,在程序运行时,加载类并进行实例化。现在很多开 框架都用到反射机制,hibernate、...

2019-09-21 18:45:23 194

原创 浅谈Java的代理模式

概念:代理模式是一种设计模式,是为了在不变动目标对象(类)源码的情况下,进行目标对象现有功能的拓展。保证不修改原有类的同时(即满足对扩展开放,对修改关闭的原则),对原有类增加一些功能实现。1、静态代理(代理类需要自己写) 定义:静态代理就是在编译时就确定了代理类与被代理类的关系。因为在编译阶段已经确认了代理关系。 实现思路:定义一个接口,定义一个目标类和一个代理类同时实...

2019-09-21 17:29:47 173

原创 Java new一个对象的微观过程

1、从JVM的角度 1.1 类加载检查--虚拟机遇到一条new指令的时候,jvm先判断类是否已经被加载、解析、初始化过(常量池中)。 1.2 分配内存空间--一个对象的内存存储布局分为:对象头(类型指针+对象本身运行时数据,如hash码、GC分代年龄等)、实例数据、对齐填充。根据JVM的GC是否有压缩规整的功能,分为指针碰撞法分配内存空间和空闲列表法分配内存,分配完内存...

2019-09-21 10:21:33 190

原创 http请求的url或body或header有长度或大小的限制吗?

http请求的url或body或header有长度或大小的限制吗?首先:http协议对url长度是没有限制的。HTTP协议不对URI的长度作事先的限制,服务器必须能够处理任何他们提供资源的URI,并且应该能够处理无限长度的URIs,这种无效长度的URL可能会在客户端以基于GET方式的请求时产生。如果服务器不能处理太长的URI的时候,服务器应该返回414状态码(此状态码代表Request-URI太...

2019-09-20 15:31:34 50809

原创 java基础面试题

hashmap的变更:JDK1.8之前,hashmap采用链表数组数据结构实现存储,hashmap初始大小是16,每次扩容为原来的2倍。JDK1.8之后,引入了红黑树,当产生hash碰撞导致某链表长度大于8时,自动转换为红黑树进行存储,方便查找。红黑树,平衡二叉树,左孩子小于父节点小于右孩子。HashMap 通过 key 的 hashCode 经过扰动函数处理过后得到 hash...

2019-09-17 21:47:55 259

空空如也

空空如也

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

TA关注的人

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