自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ThreadLocal原理以及为什么会出现内存泄漏

                                             ThreadLocal原理以及为什么会出现内存泄漏一、ThreadLocal     ThreadLocal,很多地方叫做线程本地变量,也有些地方叫做线程本地存储,其实意思差不多。可能很多朋友都知道ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。 ...

2018-11-03 17:27:46 2503

原创 SimpleDateFormat线程安全问题详解

                                              SimpleDateFormat线程安全问题详解         在平时的工作中,我们经常需要将日期在String和Date之间做转化,此时需要使用SimpleDateFormat类。使用SimpleDateFormat类的parse方法,可以将满足格式要求的字符串转换成Date对象;使用SimpleD...

2018-11-03 10:17:44 7503

原创 动态代理以及动态代理如何实现AOP

动态代理以及动态代理如何实现AOP一、代理设计模式         什么是代理模式呢?我很忙,忙的没空理你,那你要找我呢就先找我的代理人吧,那代理人总要知道被代理人能做哪些事情不能做哪些事情吧,那就是两个人具备同一个接口,代理人虽然不能干活,但是被代理的人能干活呀。        举例:晚会的主办方要举行歌舞表演,要找歌手唱歌和跳舞 ,主办方会找歌手的经纪人来确认沟通直至签合同,这样在

2018-01-03 15:40:48 1597

转载 求一个数的阶乘且防止溢出

求一个数的阶乘且防止溢出一、阶乘的定义    一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!。亦即n!=1×2×3×...×n。阶乘亦可以递归方式定义:0!=1,n!=(n-1)!×n。二、如何求一个数的阶乘      1、递归方法          我们首先想到的就是递归求一个数的阶乘       publ

2017-12-27 15:55:38 2155 1

原创 获取jar包中的class类

获取jar包中的class类1、fastjson jar包 com.alibaba fastjson 1.2.6 2.解析jar包中的内容import java.util.Enumeration;import java.util.jar.JarEntry;import java.

2017-12-18 21:03:14 5452

转载 单例设计模式

单例设计模式  一、单例模式   1.单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。注意:     1)、单例类只能有

2017-12-18 20:53:05 268

转载 java反射机制

java反射机制一、什么是反射    1.jvm的大体工作原理package test;/** * Created by on 2017/12/13. */public class TestHelloWorld { private String desc; public TestHelloWorld(String desc) { this.

2017-12-13 10:46:03 417

原创 jdk1.8 String源码解析

jdk1.8 String 源码解析   一、String类       public final class String implements java.io.Serializable, Comparable, CharSequence { //用于存储字符的字符数组,值不可更改 private final char value[]; //该

2017-12-11 15:20:15 623

原创 Java把一个大的文本文件拆分成几个小的文件

Java把一个大的文本文件拆分成几个小的文件 一、背景         本地调用线上服务运行了一个程序,运行完成后,日志文件644MB,由于日志中没有统计数据的代码,所以想用日志文件统计一个运行的结果。但是发现:用Notepad++打不开日志文件,原因是文件太大。所以才想到用程序实现        拆分的粒度:每个拆分后的小文件在100MB左右。二、java代码       1

2017-12-08 20:17:26 11799 1

原创 Linux的top命令

Linux的top命令   top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,常用于服务端性能分析。Top命令即动态观察程序的变化     top命令的结果分为两个部分:    1).统计信息:前五行是系统整体的统计信息    2).进程信息:统计信息下方类似表格区域显示的是各个进程的详细信息,默认5秒刷新一次。 1.统计信息说明:

2017-11-24 17:54:56 299

原创 linux内存管理机制以及free命令详解

linux内存管理机制以及free命令详解一、linux内存管理机制       1.物理内存和虚拟内存         直接从物理内存读写数据要比从硬盘读写数据要快的多,因此,我们希望所有数据的读取和写入都在内存完成,而内存是有限的,这样就引出了物理内存与虚拟内存的概念。         物理内存就是系统硬件提供的内存大小,是真正的内存,相对于物理内存,在linux下还有一个虚拟

2017-11-23 20:32:49 4945 1

原创 java jdk1.8 LinkedList源码解析

java jdk1.8 LinkedList源码解析    LinkedList底层使用双向链表来实现的,双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点   1.LinkedList的结点类型     //LinkedList的结点类型 pri

2017-11-17 14:51:24 446

原创 jdk1.8----ArrayList源码解析

jdk1.8----ArrayList源码解析1.ArrayList类的结构public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, java.io.Serializable { private static final long serialVersi

2017-11-09 17:38:48 564 1

原创 数据库事务、隔离级别及其应用

数据库事务、隔离级别及其应用     一、数据库事务           事务(Transaction):是并发控制的单元,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。通过事务,sql server 能将逻辑相关的一组操作绑定在一起,以便服务器 保持数据的完整性。事务通常是以begin transaction开始,以commit或rollback结束。

2017-11-08 17:37:49 3043

原创 跨域资源共享CORS以及在zepto中使用遇到的问题

跨域资源共享CORS以及在zepto中使用遇到的问题一、 跨域资源共享CORS     1.浏览器的同源策略        同源策略在web应用的安全模型中是一个重要概念。在这个策略下,web浏览器允许第一个页面的脚本访问第二个页面里的数据,但是也只有在两个页面有相同的源时。源是由URI,主机名,端口号组合而成的。这个策略可以阻止一个页面上的恶意脚本通过页面的DOM对象获得访问另一个页

2017-10-26 17:35:41 1882

转载 java类加载器以及双亲委派机制

java类加载器以及双亲委派机制一、类加载器      JVM定义了三类类加载,分别是:       1)Bootstrap ClassLoader /启动类加载器   是用本地代码实现的类装入器,它负责将$JAVA_HOME中jre/lib/rt.jar下面的类库加载到内存中。由于引导类加载器涉及到虚拟机本地实现细节,由C++实现,不是ClassLoader子类,开发者无法直

2017-10-24 19:51:53 521

原创 Java虚拟机架构

Java虚拟机架构     一、概述            Java 虚拟机是物理机的软件实现。Java的设计理念是WORA(Write Once Run Anywhere,一次编写随处运行)    一个运行中的Java虚拟机有着一个清晰的任务:执行Java程序。程序开始执行时他才运行,程序结束时他就停止。你在同一台机器上运行三个程序,就会有三个运行中的Java虚拟机。Java虚拟

2017-10-20 16:10:16 594

转载 mysql explain查看sql语句的执行计划

1、 概述:       执行计划的查看是进行数据库的sql语句调优时依据的一个重要依据,mysql的执行计划查看相对oracle简便很多,功能也相对简单很多的SQL语句都不能直接查看。本文档整理了mysql执行计划的生成方法和查看。2.mysql执行计划的生成方法和查看2.1 执行计划的生成方法:explain select …………….      生成的方法很简单在相应的s

2017-09-22 17:49:19 3142

原创 java中的==和equals()以及instanceof

java中的==和equals()以及instanceof 一、"=="  1、 "=="操作符的作用       1)用于基本数据类型的比较.          基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean, 他们之间的比较,是用双等号(==)来比较他们的值。      2)判断引用是否指向堆内

2017-05-15 19:43:50 620

原创 javascript中函数声明、函数表达式以及匿名函数和自执行函数

javascript中函数声明、函数表达式以及匿名函数和自执行函数1.函数声明和函数表达式   1)函数声明必须始终带有一个标识符(Identifier),也就是我们所说的函数名,而函数表达式则可以省略  //函数声明function add(a,b){ c = a + b; return c;}//函数表达式var expression = function (a,b)

2017-05-05 17:12:00 803

原创 java list中删除元素用remove()报错的fail-fast机制原理以及解决方案

java list中删除元素用remove()报错的fail-fast机制原理以及解决方案  现在有一个list,有6个元素,值分别是1、5、5、8、5、10,现需要删除值为5的元素  第一种            import java.util.ArrayList;import java.util.List;public class ListRemove1 { pub

2017-04-26 18:20:59 3420

原创 System.arraycopy实现数组之间的复制以及Arrays类的copyOf()实现数组复制

用System.arraycopy实现数组之间的复制         System提供了一个静态方法arraycopy(),可以使用它来实现数组之间的复制,其函数的原型是:         public static native void arraycopy(Object src, int srcPos,

2017-04-26 16:28:44 1427

转载 如何查看linux系统的jdk版本

如何查看linux系统的jdk版本1.查找使用的jdk安装后的目录      echo $JAVA_HOME;    假设为:/opt/soft/java2.进入到jdk安装目录下面的bin目录    /opt/soft/java/bin3.在上面的目录中查看jdk版本    ./java -version

2017-04-13 17:53:37 65124

原创 并发insert情况下会发生重复的数据插入问题

并发insert情况下会发生重复的数据插入问题1.背景   用多线程接收推送的订单数据,把接收的订单数据存到一个表中,实现的需求是:如果接收的订单消息在数据库中已经存在,那么执行update操作;如果没有存在,那么执行insert操作 代码逻辑:    if(该订单在数据库表中存在){ update();}else{ insert();}

2017-03-06 20:58:53 43364 8

原创 java序列化与反序列化

java序列化与反序列化   1.什么是序列化       Java序列化是指把Java对象转换成与平台无关的二进制流的过程,这些二进制流可以使Java对象脱离程序存在,从而可以保存在磁盘上,也可以在网络间传输;Java序列化是将一个Java对象写入IO流     Java反序列化是指把二进制流恢复为Java对象的过程,反序列化则是从IO流中恢复一个Java对象。2.为什么进行序列

2017-02-10 18:43:07 413

原创 log4j 2.x读取配置文件以及使用

log4j 2.x读取配置文件以及使用1.引用log4j jar包     org.apache.logging.log4j log4j-api 2.2 org.apache.logging.log4j log4j-core 2.2 org.apache.logging.log4j lo

2016-11-23 10:44:39 3351

转载 java 线程池ThreadPoolExecutor

java 线程池ThreadPoolExecutor1.线程池的作用      1)降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。      2)提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。      3)提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和

2016-11-22 11:55:17 845

转载 sql中AUTO INCREMENT 字段

sql中AUTO INCREMENT 字段       希望在每次插入新记录时,自动地创建主键字段的值,就可以用AUTO INCREMENT 字段      如:              CREATE TABLE `student` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', `name` varcha

2016-11-19 14:46:19 830

原创 微信公众平台中临时二维码的scene_id为32位非0整型

微信公众平台中临时二维码的scene_id为32位非0整型     一、  带参数的二维码             微信公众平台提供了生成带参数二维码的接口。使用该接口可以获得多个带不同场景值的二维码,用户扫描后,公众号可以接收到事件推送             用户扫描带场景值二维码时,可能推送以下两种事件:                        1.如果用户还未关注

2016-11-19 11:50:42 11642 1

原创 用XPath解析XML文件

用XPath解析XML文件一、XPath        XPath 是一门在 XML 文档中查找信息的语言, 可用来在 XML 文档中对元素和属性进行遍历。       XPath表达式比繁琐的文档对象模型(DOM)代码要容易编写得多。如果需要从XML文档中提取信息,最快捷、最简单的办法就是在Java程序中嵌入XPath表达式。在Java版本中推出了javax.xml.xpath包

2016-11-10 15:41:26 9694

转载 最大公约数-----欧几里德算法

最大公约数-----欧几里德算法       欧几里德算法又称辗转相除法,用于计算两个正整数a,b的最大公约数。      算法:               两个整数的最大公约数等于其中较小的那个数和两数相除余数的最大公约数。最大公约数(greatest common divisor)缩写为gcd。       gcd(a,b) = gcd(b,a mod b) (不妨设a>

2016-11-09 17:09:56 528

原创 负载均衡之权重轮询调度算法

负载均衡之权重轮询调度算法一、负载均衡    nginx不单可以作为强大的web服务器,也可以作为一个反向代理服务器。如果nginx是以反向代理的形式配置运行,那么对请求的实际处理需要转发到后端服务器运行,如果后端服务器有多台,如何选择一台合适的后端服务器来处理当前请求,这就是负载均衡二、nginx负载均衡策略之round_robin    round_robin策略做为默认策略:

2016-11-09 16:52:04 13748 2

原创 jsonp解决跨域请求以及其工作原理

jsonp解决跨域请求以及其工作原理   一.跨域问题JavaScript是一种在Web开发中经常使用的前端动态脚本技术。在JavaScript中,有一个很重要的安全性限制,被称为“Same-Origin Policy”(同源策略)。这一策略对于JavaScript代码能够访问的页面内容做了很重要的限制,即JavaScript只能访问与包含它的文档在同一域下的内容。    JavaSc

2016-09-19 21:29:50 12531

原创 Java解析url中的路径和参数

Java解析url中的路径和参数解析url,本想用正则表达式处理,但正则表达式速度较慢,所以用split来解析urlpublic class Test { public static void main(String args[]){ String baseUrl = "https://www.baidu.com?a=123&b=456&c=789"; Strin

2016-09-19 15:41:45 11245

原创 redis的计数器应用

redis的计数器应用           唯一计数是网站系统中十分常见的一个功能特性,例如网站需要统计每天访问的人数 unique visitor (也就是 UV)。计数问题很常见,但解决起来可能十分复杂:一是需要计数的量可能很大,比如大型的站点每天有数百万的人访问,数据量相当大;二是如果通过数据库表来存数据,比如记录一篇文章的访问次数,当有新的访问到来时,先要去数据库中查询这篇文章的访问量

2016-08-17 17:56:48 7344

转载 linux查看端口是否被占用

netstat这个命令常用在网络监控方面。利用这个命令,可以查看当前系统监听的服务和已经建立的服务,以及相应的端口、协议等信息netstat参数虽然很多,但是常用的不多,主要是下面几个参数:netstat -[atunlp]-a :all,表示列出所有的连接,服务监听,Socket资料-t :tcp,列出tcp协议的服务-u :udp,列出udp协议的服务-n :port

2016-08-17 16:54:04 3522

转载 linux相关命令

1.创建目录  mkdir [选项] 目录...   通过 mkdir 命令可以实现在指定位置创建以 DirName(指定的文件名)命名的文件夹或目录。要创建文件夹或目录的用户必须对所创建的文件夹的父文件夹具有写权限。并且,所创建的文件夹(目录)不能与其父目录(即父文件夹)中的文件名重名,即同一个目录下不能有同名的(区分大小写)。  mkdir test12.上传文件到服务器

2016-08-17 16:52:36 310

转载 linux中如何查看文件的大小

df可以查看一级文件夹大小、使用比例、档案系统及其挂入点,但对文件却无能为力。    du可以查看文件及文件夹的大小。    两者配合使用,非常有效。比如用df查看哪个一级目录过大,然后用df查看文件夹或文件的大小,如此便可迅速确定症结。[work@37-14-3 log]$ pwd/opt/scf/log[work@37-14-3 log]$du -h44

2016-08-17 16:50:37 2981

转载 java中的Timer和TimeTask

java中的Timer和TimeTask一、概述   Timer是一种定时器工具,用来在一个后台线程计划执行指定任务。它可以计划执行一个任务一次或反复多次。   TimerTask一个抽象类,它的子类代表一个可以被Timer计划的任务。二、   Timer是一个普通的类

2016-07-13 19:50:46 864

原创 乐观锁以及乐观锁的实现

乐观锁以及乐观锁的实现一、为什么需要锁(并发控制)?      在多用户环境中,在同一时间可能会有多个用户更新相同的记录,这会产生冲突。这就是著名的并发性问题。      典型的冲突有:        1.丢失更新:一个事务的更新覆盖了其它事务的更新结果,就是所谓的更新丢失。例如:用户A把值从6改为2,用户B把值从2改为6,则用户A丢失了他的更新。        2.脏读:当一

2016-07-13 18:08:23 19142 5

空空如也

空空如也

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

TA关注的人

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