自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

悠闲咖啡007的博客

对生活总得说点什么~

  • 博客(70)
  • 问答 (1)
  • 收藏
  • 关注

原创 atomic

CAS原理CAS 的全称为“Compare And Set”,其作用是对某一个变量进行原子化的更新操作。该算法的思想是: cas(v,e,u); v 表示要更新的变量,e 表示变量的预期值,u 表示变量的新值。当且仅当 v 的实际值等于 e 值时,才会将 v 的值设为 u,如果 v 值和 e 值不同,则说明已经有其他线程做了更新,则当前线程什么都不做,即更新失败。注:CAS其底层是通过CPU...

2019-05-07 17:45:21 549

原创 Thread 源码

创建线程方式有2种方式可以创建一个可执行线程。1.继承Thread类。子类可覆写父类的run()方法。子类实例分配内存后可运行(非立即,取决于CPU调用) class PrimeThread extends Thread { long minPrime; PrimeThread(long minPrime) { this.minPrim...

2019-05-05 16:52:08 358

原创 ThreadPoolExecutor 源码

使用示例不带返回值public static void main(String[] args) { // 这里使用 guava ThreadFactory threadFactory = new ThreadFactoryBuilder().setNameFormat("demo-pool-%d").build(); ThreadPoolExecutor executo...

2019-05-05 16:49:28 285

原创 一些配置参数的记录

通用配置一般不需要更改mysql配置。[mysqld]# basic datadir = /var/lib/mysql #设置数据存储位置socket = /var/run/mysqld/mysqld.sockpid-file = /var/run/mysqld/mysqld.piduser = mysqlport = 33...

2019-04-23 20:10:10 177

原创 MySQL锁机制

InnoDB锁机制MySQL 的 InnoDB 存储引擎支持行级锁,InnoDB的行锁是通过给索引项加锁实现的,这就意味着只有通过索引条件检索数据时,InnoDB才使用行锁,否则使用表锁。例如:t(uid, uname, age, sex) innodb;uid PK无其他索引update t set age = 10 where uid = 1; 命中索引,行锁。update ...

2019-04-15 13:33:39 144

原创 范式和反范式

范式目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以次类推。一般说来,数据库只需满足第三范式(3NF)就行了。第一范式:确保每列的原子性如果每列(或者每个属性...

2019-04-15 13:32:44 210

原创 java8 函数式接口

函数式接口函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。函数式接口可以被隐式转换为lambda表达式。这些接口在java.util.function包中。@FunctionalInterfaceJava 8 为函数式接口引入了一个新注解“@FunctionalInterface”,主要用于编译级错误检查,加上该注解,当...

2019-04-12 16:16:30 285

原创 FutureTask 学习

Future在 Java 中一般通过继承 Thread类或者实现 Runnable接口这两种方式来创建多线程,但是这两种方式都有个缺陷,就是不能在执行完成后获取执行的结果,因此Java 1.5之后提供了 Callable 和 Future接口,通过它们就可以在任务执行完毕之后得到任务的执行结果。FutureTask 是一个支持取消行为的异步任务执行器。该类实现了 Future接口的方法:取...

2019-04-11 15:27:26 151

原创 解决 前端Failed to decode downloaded font

前台使用字体时,经过 Maven 的 filter,会破坏 font 文件的二进制文件格式,到时前台解析出错。解决方案:<plugin> <artifactId>maven-resources-plugin</artifactId> <configuration> <resources> ...

2019-04-10 10:02:09 2537

原创 SpringBoot 常用注解

@SpringBootApplication@SpringBootApplication 是一个复合注解,包含了 @SpringBootConfiguration,@EnableAutoConfiguration,@ComponentScan 这三个注解。@SpringBootConfiguration标注当前类是配置类,这个注解继承自@Configuration。并会将当前类内声明的一个...

2019-04-09 16:58:15 130

原创 apache POI 使用

依赖<!--xls--><dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.0.0</version></dependency><!...

2019-04-09 16:56:09 1006

原创 Maven小结

参考 https://blog.csdn.net/yaerfeng/article/details/26448417Maven下载安装配置Java运行环境Maven 依赖 Java运行环境,因此使用 Maven 之前需要配置 Java的运行环境。安装MavenMaven下载地址:http://maven.apache.org/download.cgi下载Maven最新版本的二进制zip...

2019-04-08 18:44:42 505

原创 jackson注解使用

读 + 写 注解@JsonIgnore在将Java对象序列化为json时,有些属性需要过滤掉,不显示在json中,可以使用@JsonIgnore忽略单个字段。public class PersonIgnore { @JsonIgnore public long personId = 0; public String name = null;}@JsonI...

2019-03-16 15:50:53 964

原创 jackson处理json

介绍Jackson 的核心模块由三部分组成jackson-core,核心包,提供基于"流模式"解析的相关 API,它包括 JsonPaser 和 JsonGenerator。 Jackson 内部实现正是通过高性能的流模式 API 的 JsonGenerator 和 JsonParser 来生成和解析 json。jackson-annotations,注解包,提供标准注解功能。jacks...

2019-03-16 15:48:59 18413 1

原创 使用TimeUnit类中的sleep代替Thread.sleep

TimeUnit是什么?TimeUnit是java.util.concurrent包下面的一个类,TimeUnit提供了可读性更好的线程暂停操作,通常用来替换Thread.sleep(),在很长一段时间里Thread的sleep()方法作为暂停线程的标准方式,几乎所有Java程序员都熟悉它,事实上sleep方法本身也很常用而且出现在很多面试中。如果你已经使用过Thread.sleep(),...

2018-03-07 21:36:26 7924 1

原创 Spring动态切换数据源

需求背景:项目中需要根据用户身份访问不同数据源,涉及到动态切换数据源,先写个小demoAbstractRoutingDataSource经过网上搜索发现Spring中提供了一个叫AbstractRoutingDataSource的抽象类,该类充当了DataSource的路由中介, 能有在运行时, 根据某种key值来动态切换到真正的DataSource上,先看下AbstractR...

2018-03-07 21:34:43 516

原创 网站访问日志记录的两种方式

网站访问记录日志能方便的帮助我们开发人员准确的定位到问题,能帮助我们进行错误重现,快速的解决问题,节省时间。这里我将项目中用到的两种记录方式简单总结一下,希望能帮助有需要的人本文代码需要对Spring拦截器、AOP有一定的了解,可以先百度了解下Spring拦截器、AOP的概念及用途一、使用Spring拦截器来记录首先创建拦截器LoggerFilter,继承HandlerIn...

2018-03-07 21:33:50 7138 1

原创 jvm调优小结

Java虚拟机根据对象存活的周期不同,把堆内存划分为几块,一般分为新生代、老年代和永久代(对HotSpot虚拟机而言),这就是JVM的内存分代策略一、jvm分代jdk7分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的。因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率。试想,在不进行对象存活时间区分的情况下,每次垃圾回收都是对整个堆空间进...

2018-03-07 21:31:28 223

原创 使用JodaTime处理时间

简介在Java中处理日期和时间是很常见的需求,基础的工具类就是我们熟悉的Date和Calendar,然而这些工具类的api使用并不是很方便和强大,于是就诞生了Joda-Time这个专门处理日期时间的库。在这里记录下使用方法,方便日后参考。 api 官网 http://www.joda.org/joda-time/apidocs/index.html?overview-summary.html...

2018-03-01 09:30:57 18403

原创 使用ffmpeg获取视频时长等

查看视频信息的命令:ffmpeg -i 视频文件,如下:ffmpeg -i d://a.mp4控制台输出ffmpeg version N-89471-g88e2dc7d04 Copyright (c) 2000-2017 the FFmpeg developers built with gcc 7.2.0 (GCC) configuration: --enable-g...

2018-02-13 14:09:01 24080 3

原创 使用ffmpeg转码m3u8并播放

简介随着客户的增加,mp4文件播放的弊端也日益凸显,主要集中在两个方面当视频时长比较长的时候,mp4的关键帧元素往往很大,需要加载很长时间才能开始播放,网速不好的情况缓冲加载就要20多秒的时间,客户早已急不可耐。当用户打开一个视频播放的时候,浏览器会持续请求下载mp4文件直到下载完成,就算是用户暂停视频播放浏览器也会持续这种下载状态,如果这个视频文件是500M则会请求服务器下载500M...

2018-02-11 18:30:38 48756 5

原创 jvm类的初始化(三)

JVM初始化一个类包含如下步骤:假如这个类还没有被加载和连接,程序先加载并连接该类假如该类的直接父类还没有初始化,则先初始化其直接父类假如类中有初始化语句,则系统依次执行这些初始化语句。类初始化的时机:创建类的实例:new,反射等。调用某个类的静态方法访问某个类或接口的静态属性使用反射方式来强制创建某个类或接口对应的Class的对象。初始化某个类的子类,该子类的所有父

2018-02-03 16:59:07 418

原创 jvm类加载器(二)

类加载器类加载器是一个用来加载类文件的类。Java源代码通过javac编译器编译成类文件。然后JVM来执行类文件中的字节码来执行程序。类加载器负责加载文件系统、网络或其他来源的类文件。有三种默认使用的类加载器:Bootstrap类加载器、Extension类加载器和System类加载器(或者叫作Application类加载器)。每种类加载器都有设定好从哪里加载类。Bootstrap类加载

2018-02-03 16:58:31 193

原创 jvm虚拟机生命周期(一)

jvm虚拟机生命周期当我们编写一个java的源文件后,经过编译会生成一个后缀名为class的文件,这种文件叫做字节码文件,只有这种字节码文件才能够在java虚拟机中运行,java类的生命周期就是指一个class文件从加载到卸载的全过程。一个java类的完整的生命周期会经历加载、连接、初始化、使用、和卸载五个阶段,如图所示:1.加载Java虚拟机把Class类文件加载到内存中,并

2018-02-03 16:57:11 586

原创 使用ffmpeg进行视频截图转码

ffmpeg官网 http://ffmpeg.org/window安装下载访问 https://ffmpeg.zeranoe.com/builds/ 下载windows安装包解压添加到环境变量验证安装输入ffmpeg -version命令查看ffmpeg版本,输出版本号说明安装成功Linux安装 操作系统:Ce...

2018-01-26 18:10:20 9258 1

原创 四、Linux openssl格式转换

1.首先检验openssl是否安装rpm -qa|grep -i openssl控制台输出[root@iZ2ze151s8hbnmcywxx16pZ 214027617260696]# rpm -qa|grep -i opensslopenssl-devel-1.0.1e-60.el7.x86_64openssl-1.0.1e-60.el7.x86_64openssl-l

2018-01-22 21:08:46 365

原创 三、基于nginx构建单向认证服务

修改nginx配置文件#服务器的集群 upstream netitcast.com { #服务器集群名字 server localhost:8080 weight=1;#服务器配置 weight是权重的意思,权重越大,分配的概率越大。 }解开配置文件注释# HTTPS server##server {# listen

2018-01-22 21:07:52 303 1

原创 二、基于tomcat构建单向认证服务

工具准备:keytool(JDK自带证书生成工具),tomcat8利用JDK中keyStore生成证书。一、绑定本机域名打开目录“C:\Windows\System32\drivers\etc” 找到hosts文件,编辑编辑完后,启动tomcat,访问地址“http://www.52zsmm.com:8080/” ,显示tomcat页面即为配置成功二、生成服务器密钥

2018-01-19 19:43:58 258

原创 一、HTTPS详解SSL TLS

一、什么是HTTPSHTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。h

2018-01-18 17:03:27 939

原创 判断double是否为整数

/** * 判断double是否是整数 * @param obj * @return */ public static boolean isIntegerForDouble(double obj) { double eps = 1e-10; // 精度范围 return obj-Math.floor(obj) < eps; }

2018-01-18 13:15:35 9333

原创 添加jar到本地仓库

mvn install:install-file -Dfile=包地址 -DgroupId=包groupId -DartifactId=包artifactId -Dversion=包版本 -Dpackaging=jar

2018-01-18 13:13:24 173

原创 使用yuicompressor-maven-plugin压缩js css

YUI Compressor是一款非常强大JS混淆和压缩工具。目前很多Javascript框架都使用YUI Compressor进行了代码压缩。YUI Compressor压缩的好处是不仅大大减少js、css的体积,同时在对javascript代码的混淆压缩中对属性命名的替换,使得压缩过的js不易阅读,能起到源码的保护作用。本文主要介绍YUI Compressor的使用方法和技巧。一、在Mav

2018-01-17 15:55:42 785

原创 Spring Security实战

引入jar这里只是spring security + jwt 的包dependency> groupId>org.springframework.securitygroupId> artifactId>spring-security-coreartifactId> version>4.2.3.RELEASEversion>dependency>depen

2018-01-17 15:55:08 292

原创 JWT (Json Web Token)教程

JWT(Json Web Token)是实现token技术的一种解决方案,JWT由三部分组成: header(头)、payload(载体)、signature(签名)。头JWT第一部分是header,header主要包含两个部分,alg指加密类型,可选值为HS256、RSA等等,typ=JWT为固定值,表示token的类型。。{ "typ": "JWT", "

2018-01-17 15:54:22 819

原创 MySQL分区、分表学习

现在学习mysql表分区,百度了资料,特整理一下,原文章https://my.oschina.net/ydsakyclguozi/blog/393583分区一、什么是表分区通俗地讲表分区是将一大表,根据条件分割成若干个小表。mysql5.1开始支持数据表分区了。 如:某用户表的记录超过了600万条,那么就可以根据入库日期将表分区,也可以根据所在地将表分区。当然也可根据其

2018-01-17 15:53:46 228

原创 索引小结

1.mysql索引MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索包含多个列。 创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。实际上,索引也是一张表,该表保存了主键

2018-01-17 15:53:14 186

原创 windows mysql 服务安装

一、下载mysql安装包http://pan.baidu.com/s/1bpH7gPh二、解压将文件解压并放到D盘,命名后的总路径:D:\Program Files\MySQL三、添加环境变量将D:\Program Files\MySQL\bin 追加到path中四、配置文件在根目录下创建文件“my.ini”。添加如下配置:[mysqld]ba

2018-01-17 15:52:40 257

原创 Spring Security学习(二)

以下配置基于表单登录配置自定义配置登录页面@Overrideprotected void configure(HttpSecurity http) throws Exception { http.formLogin() // 自定义页面路径 .loginPage("/api/login") .an

2018-01-17 15:51:33 223

原创 Spring Security学习(一)

原理当一个请求进来时,先经过各种过滤器(通过代码配置生效),比如UserName Password AuthenticationFilter(表单登录)、BasicAuthenticationFilter(Basic登录)等最后经过FilterSecurityInterceptor,这是Spring Security验证的最后一步,如果验证通过则正常访问服务,如果验证不通过则会抛出异常

2018-01-17 15:50:51 175

原创 使用memcache缓存

首先,通过maven引入jardependency> groupId>net.spygroupId> artifactId>spymemcachedartifactId> version>2.10.3version>dependency>创建MemCache对象package com.os.core.util.memcache;import jav

2018-01-17 15:49:39 304

空空如也

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

TA关注的人

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