自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(69)
  • 资源 (2)
  • 收藏
  • 关注

原创 Java序列化 Serializable 详解

1.什么是序列化序列化指堆内存中的java对象数据,通过某种方式把对存储到磁盘文件中,或者传递给其他网络节点(网络传输)。这个过程称为序列化,通常是指将数据结构或对象转化成二进制的过程.2.序列化使用场景由序列化的定义,我们就可以知道其使用场景 想把内存中的对象保存到一个文件中或者数据库中时候; 想用套接字在网络上传送对象的时候; 想通过RMI传输对象的时候总结: 序列化使用场景都是涉及到将对象转化成二进制,因为序列化保证了能够成功读取到保存的对象。3.如何实现序列化实现Seria

2020-10-13 23:25:05 47

原创 老生常谈的ConcurrentHashMap实现原理详解

Jdk 1.7 之前,ConcurrentHashMap 通过加锁保证线程安全,并引入锁分段机制以减小加锁的粒度,从而提升性能。Jdk 1.8 中的 ConcurrentHashMap 实现则引入了 CAS 机制以尽量避免加锁操作,虽然仍然有部分同步代码,不过锁的粒度相对于分段锁而言更加细粒度。另外一个重要的设计就是在结点个数达到阈值时会自动将链表转换成红黑树,从而进一步提升性能。存储结构设计在存储结构设计上,新的 ConcurrentHashMap 相对于之前看起来更加的简洁。如下图,在一个 Node

2020-10-12 08:42:06 26

原创 Synchronize关键字详解

前言synchronized关键字,多线程并发编程最常用关键字作用对于synchronized关键字的作用,简单来说一句话就可以概况:在同一时刻,最多只有一个线程能执行该段代码。以串行化的方式执行代码,自然不存在线程安全问题。用法synchronized关键字的用法大致可以分为两类:对象锁和类锁。当然,Java中一切皆对象,类也是对象。所以这里的对象锁中的对象可以认为是狭义上的对象。对象锁:锁住的是一个对象,具体用法是利用synchronized关键字修饰非静态方法或者synchron

2020-10-11 16:32:17 77

转载 synchronize底层实现原理以及相关的优化

首先来说下synchronize和Lock的区别:两者都是锁,用来控制并发冲突,区别在于Lock是个接口,提供的功能更加丰富,除了这个外,他们还有如下区别:synchronize自动释放锁,而Lock必须手动释放,并且代码中出现异常会导致unlock代码不执行,所以Lock一般在Finally中释放,而synchronize释放锁是由JVM自动执行的。Lock有共享锁的概念,所以可以设置读写锁提高效率,synchronize不能。(两者都可重入)Lock可以让线程在获取锁的过程中响应中断,而sync

2020-10-10 16:17:03 24

原创 如何获取通过window.open打开的父窗口的window对象

window.opener:opener 属性是一个可读可写的属性,可返回对创建该窗口的 Window 对象的引用。当使用window.open()打开一个窗口,您可以使用此属性返回来自目标窗口源(父)窗口的详细信息。

2020-08-24 14:49:45 151

原创 React前端渲染优化——父组件导致子组件重复渲染

本篇文章是针对父组件导致子组件重复渲染的优化方法一、 说明目前我们所使用 react 版本一般会有以下四种方式触发渲染 render,而其中通过父组件 render 会直接通知子组件也进行 render。二、一般的优化方式鉴于此种情况,如果完全不做控制下,父组件 render, 那么子组件一定会 render。真实 dom 的渲染 react 会在 diff 算法之后合计出最小改动,进行操作。但对于结构复杂页面,自顶向下,只是单纯 diff 也要花费很长的时间来处理 js 任务。再加上我们每个组件

2020-08-24 14:39:44 480

原创 阻止鼠标点击默认事件与冒泡

阻止鼠标点击默认事件与冒泡e.preventDefault(); e.stopPropagation();

2020-08-24 14:31:59 46

原创 window.open 方式请求下载接口的时候,链接太长怎么办?

window.open 方式请求下载接口的时候,链接太长怎么办?解决方案:post from 表单方式提交this.post('/api/HCReportxx/exportHcReportxx',{"year":'2019',"data": JSON.stringify(param)});post =(url, params) =>{ // 创建form元素 var temp_form = document.createElement("form");

2020-08-24 14:25:10 48

原创 字符串与各种集合类的相互转化

工作中经常有逗号字符串转换成List、Map、Set集合类的需求,今天我来总结一下一些好的方法实现,以及可能会碰到的问题。OK,我们开始吧!

2020-07-01 10:32:19 278

原创 利用Java反射机制实现动态方法

使用场景:项目中不同模块对某些数据的权限控制是不一样,此时可以利用Java的反射机制来实现动态的权限检测,减少代码的耦合性。主要代码: //targetNameMethodStr:XX.XX.XXX的路径地址 String targetNameMethod = targetNameMethodStr.substring(targetNameMet...

2019-06-18 15:34:51 244

原创 工具类之剔除Html标签 Java

如题: /** * 去除html格式,提取文字信息 */ public static String getContent(String content){ if(StringUtil.isNull(content)){ return ""; } String txtcontent = setTex...

2019-05-31 10:06:26 241

原创 #SqlServer、Oracle、MySQL不同语法3——查找数据库中表名包含某个关键字的表

如题,话不多说直接上代码。--Oracleselect table_name from user_tables where table_name like '%关键字%'--MySQLSELECT distinct TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME LIKE '%关键字%'--SqlServer...

2019-03-21 09:44:34 115

原创 #多线程学习——ThreadPoolExecutor之不允许使用Executors创建

在阿里巴巴开发手册的并发处理那章提到线程池不允许使用Executor来创建,要用ThreadPoolExecutor的方式来创建本文就来分析一下为什么不能使用Executor来创建。其实手册下面说明已经说了1)FixedThreadPool 和 SingleThreadPool:允许的请求队列长度为 Integer.MAX_VALUE,可能会堆积大量的请求,从而导致 OOM。2)Cach...

2019-03-20 17:45:59 300 1

原创 #SqlServer、Oracle、MySQL不同语法 2 ——将排序字段为null的排到后面、Order by详解

1.将排序字段为null的排到后面之前在网上查了一下,发现很多文章介绍的都是这三种数据库使用不同的语法解决,比较麻烦。下面的介绍的是一种通用的,较为简单,故记录一下。1.1使用场景:当需要将字段为null排到后面时所使用。1.2代码实例select name,排序字段from table1where id = 106 order by case when 排序字段 is null...

2019-03-11 11:59:59 124

原创 #SqlServer、Oracle、MySQL不同语法 1——更新多个字段、update select 用法

1.更新多个字段SqlServer写法alter table table1 add name_account varchar(255) null,name_project varchar(255) nullOracle写法alter table table1 add (name_account varchar2(255) null,name_project varchar...

2019-03-08 16:59:23 3877

原创 代码规范 阿里开发手册笔记

不允许任何魔法值直接出现在代码里Objects 工具类所有的相同类型的包装类对象之间的值得比较,全部使用equals方法比较对于 Integer var = ? 在-128 至 127 范围内的赋值,Integer 对象是在IntegerCache.cache 产生,会复用已有对象,这个区间内的 Integer 值可以直接使用==进行判断,但是这个区间之外的所有数据,都会在堆上产生,并不...

2019-02-01 14:51:18 178

原创 工具类之Objects

Objects类是JDK1.7新增的一个工具类主要用于非空检查和比较主要方法如下:摘自//比较两个对象是否相等(首先比较内存地址,然后比较a.equals(b),只要符合其中之一返回true)public static boolean equals(Object a, Object b);//深度比较两个对象是否相等(首先比较内存地址,相同返回true;如果传入的是数组,则比较数组...

2018-12-19 09:31:20 84

原创 ES6学习之Json

1.Json的标准写法(1).只能用双引号(2).所有名字必须用引号包起来{a:5,c:6,d:7}×{"a":5,"b":"asdf","c":7}√2.Json对象常用方法JSON.stringify(str) : 将JSon转换为字符串JSON.parse(Jso

2018-11-18 18:20:34 94

原创 ES6学习之面向对象

1.写法class User{ constructor(name,password){//构造器 this.name = name; this.password = password; } showName(){ alert(this.name); } showPass(){ alert(this.password); }}let user = ne...

2018-11-18 17:04:04 86

原创 ES6学习之字符串

1.startsWith、endsWith这两个方法比较简单就不说了2.字符串模板应用场景:1.直接把东西塞到字符串中 ${东西}2.可以折行let titel = '标题';let content ='内推';let str =`<div> <h1>${title}</h1> <p>${content}</...

2018-11-18 16:25:07 74

原创 ES6入门学习之数组

1.map方法关键字:映射、一对一给你十个返回给我十个let arr = [12,6,8];arr.map(function (item){console.log(item);//12,6,8});let result = arr.map(item=>return item*2);console.log(result);//24,12,16let socre =[19....

2018-11-18 15:20:23 105

原创 ES6入门学习之解构赋值

解构赋值的作用:简化赋值操作。(字面意思:解开一个结构赋值给某个东西)解构赋值的写法要求:1.左右两边结构必须一样2.右边必须符合语法要求3.声明和赋值必须写在一起基本demo:let [a,b,c] = [1,2,3];console.log(a,b,c);//1,2,3let {a,b,c} = {a:1,b:2,c:3};console.log(a,b,c);//1,2...

2018-11-14 22:01:30 66

原创 获取数据库中包含某个关键词的所有表名(Sqlserver、MySQL、Oracle)

1.sqlserverselect name as table_name from sys.objects where type='U' and name like '%关键词%'2.mysqlSELECT distinct TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME LIKE '%关键词%'3.oraclese...

2018-10-15 11:41:37 1261

原创 #多线程学习——start()和run()的区别

start() : 它的作用是启动一个新线程,新线程会执行相应的run()方法。start()不能被重复调用。run() : run()就和普通的成员方法一样,可以被重复调用。单独调用run()的话,会在当前线程中执行run(),而并不会启动新线程。...

2018-10-12 14:09:41 117

原创 #多线程学习——线程的5种状态

线程状态图

2018-10-12 11:50:39 198

原创 #多线程学习——Thread 和 Runnable的区别

常用的多线程的实现方式有两种——继承Thread类、实现Runnable接口那他们的区别是什么呢?1.Runnalble具有更好的拓展性Thread 是类,而Runnable是接口(Thread本身是实现了Runnable接口的类)。一个类只能继承一个父类,而一个类可以实现多个Runnable接口,所以Runnable具有更好的拓展性。2.Runnable可以用于“资源的共享”多个线程都...

2018-10-12 11:49:51 242

原创 ES6入门学习——map

1 创建Map//第一种var map = new Map();map.set('one',1);map.set('two',2);map.set('three',3);//第二种var map = new Map(['one',1],['two',2],['three',3])2 Map实例-所有的Map对象实例都会继承Map.prototyp属性Map.prototyp...

2018-09-21 13:57:40 101

原创 ES6入门学习——箭头函数

一个参数:var single = a => asingle('hello') //'hello' 没有参数://要写小括号var none = () =>{console.log("没有参数");}多个参数:var add = (a,b) =>{ a+b;}...

2018-09-21 13:32:54 91

原创 工具类之枚举类enum

使用场景:对离散量进行表示表示或者是转化时。枚举(enum),是指一个经过排序的、被打包成一个单一实体的项列表。一个枚举的实例可以使用枚举项列表中任意单一项的值。注意: Java中一个枚举就是一个类,它也可以有属性和方法,并且实现接口。只是所有的枚举都继承自java.lang.Enum类,因此enum不可以再继承其他的类。代码:public enum YesOrNo { 是(1,...

2018-09-20 17:39:47 306

原创 convert函数判断字段是否被使用

用covert函数来判断字段是否为null或者是“”convert函数的基本用法convert函数的巧用——判断字段是否被使用convert函数的基本用法我们都知道CONVERT() 函数是用来转化数据类型的通用函数,其语法如下:CONVERT (data_type[(length)], expression [, style])参数说明:data_type:目标系统所提供的数据类型,包...

2018-09-20 16:48:06 152

转载 IntelliJ IDEA 2017.3.5永久破解

效果: 有效期2099 1、下载 官网链接:https://www.jetbrains.com/idea/download/previous.html选择IDEA ultimate 2017.3.5 windows64位下载,下载之后执行exe文件安装。2、破解 下载破解补丁:https://pan.baidu.com/s/14kHeQTsZ7BSupYLtHoK0xw ...

2018-09-13 09:38:37 2272 2

转载 【intellij idea】Project Structure 详解

项目的左侧面板 项目设置->Project  Project Settings -> ModulesSources面板 Paths面板dependencies面板   Project Settings - > Libraries  Project Settings - > Facets ...

2018-08-17 10:49:44 2877

转载 Idea使用SVN教程

第一步:下载svn的客户端,通俗一点来说就是小乌龟啦!去电脑管理的软件管理里面可以直接下载,方便迅速 下载之后直接安装就好了,但是要注意这里的这个文件也要安装上,默认是不安装的,如果不安装,svn中的bin目录下就会没有svn.exe,这个待会会用到,所以一点要注意哦。(都是坑啊)  然后就下一步下一步就安装好了。第二步:如果已经搭建好了svn服务的话,就要开始在idea中配置相关的配置了...

2018-08-17 10:46:45 54821 5

原创 Resin3.X 与 Eclipse 集成

Eclipse 配置 Resin3.X版本因为公司的项目架构比较老,用的服务器是Resin3.18,Resin3.X版本在Eclipse配置起来比较复杂故此记录一下。 1. 2. 3. 4. 成功结果 参考文章及时总结,提高效率。...

2018-07-30 23:37:31 549 6

原创 #读书笔记—《自控力》第二章

意志力的本能:人生来就能抵制奶酪蛋糕的诱惑本章主要讲的是人有自控的能力,以及提高意志力的方法。意志力的本能:三思而后行。最有效的做法就是让自己放慢速度,而不是给自己加速(比如应激反应)。 提高意志力的方法: 1.调节呼吸 将呼吸频率减低到每分钟4~6次,即每次呼吸用10~15秒。每天进行20分钟。2.锻炼 出门走走。3.充足的睡眠...

2018-07-10 00:21:53 839

原创 #读书笔记—《自控力》第一章

我要做,我不要,我想要:什么是意志力?为什么意志力至关重要? 意志力就是驾驭“我要做” “我不要” 和“我想做”这三种力量。我想做:牢记自己真正想要事物是什么。意志力的控制在大脑的前额皮质人们在做决定的时候往往是没有意识的。大部人做决定的时候就想开了自动挡,根本意识不到自己为什么做决定,也没有认真考虑这样做的后果。注意分散的人更容易先诱惑屈服。所以要想控制自己,第一步就是...

2018-06-26 18:02:33 631

原创 #读书笔记系列

写读书笔记的目的是记录书中自己认为写比较好的语句和自己的感受,防止自己忘记,可以时常看一下温习一下。同时也为了督促自己养成读书的好习惯。每本书就像一个人,你读这本书就是和这本书的作者对话,可以从他的身上了解到你所不知道的世界,认识你所不熟悉的事物。特别是当你出身环境不好,身边没有什么了不起值得学习的人物,或者没有人指引你的时候。读书就能让你认识到那些走在前沿的人的思想,三观,对待世界的态度。这...

2018-06-26 16:51:13 124

原创 Redis 验证码读取

import java.util.Date;import javax.annotation.Resource;import org.apache.commons.lang3.time.DateUtils;import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPool;public class OTP...

2018-02-27 15:03:35 1007

转载 成功的背后

转载:来自CSDN第一名博主:http://blog.csdn.net/phphot/article/details/2187505成功的背后,有着许多不为人知的故事,而正是这些夹杂着泪水和汗水的过去,才成就了一个个走向成功的普通人。   凌晨两点半,早已习惯了一个人坐在电脑前的我,望着屏幕,任思绪在暗夜的包容下静静流淌,时光仿佛又定格在三年多前的那一刻:“283 分”。那是被中国万千学子称...

2018-02-27 14:45:02 520

原创 mysql 时区转换之convert_tz

如题: mysql>select convert_tz(‘2018-02-27 00:00:00’,’+08:00’,’+09:00’); +—————————————————————–+ | convert_tz(‘2014-02-27 00:00:00’,’+08:00’,’+09:00’) | +—————————————————————–+ | 2014-02-27 01:...

2018-02-27 14:27:43 1636

standard-1.1.2.jar

standard-1.1.2.jar

2017-08-02

jstl-1.2.jar

jstl-1.2.jar

2017-08-02

空空如也

空空如也

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

TA关注的人 TA的粉丝

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