自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 使用ByteBuffer

文章目录创建堆缓冲区和直接缓冲区直接缓冲区与非直接缓冲区运行效率比较包装wrap数据的处理put(byte[] b)和get()方法的使用put(byte[] src, int offset, int length)和get(byte[] dst, int offset, int length)put(ByteBuffer src)putType()和getType()slice()方法转换为CharBuffer字符缓冲区及中文的处理设置与获得字节顺序创建只读缓冲区压缩缓冲区比较缓冲区内容复制缓冲区对缓冲区

2020-06-27 19:15:25 65

原创 缓冲区Buffer

文章目录缓冲区介绍Buffer类的使用包装数据与获得容量限制获取与设置位置获取与设置剩余空间大小获取缓冲区介绍abstract class Buffer7个直接子类abstract class ByteBuffer、CharBuffer、DoubleBuffer、FloatBuffer、IntBuffer、LongBuffer、ShortBuffer。NIO中的Buffer是一个用于存储脚本数据类型的容器,以类似于数组有序的方式来存储和组织数据。Buffer类的使用API:包装数据与获

2020-06-21 18:26:24 66

原创 RSA验签

RSA签名验签通用类import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.Reader;i...

2020-01-08 16:35:49 62

原创 java使用validator进行校验

html页面表单提交的对象数据或者接口对接,都需要对接收到的数据进行校验(非空、长度、格式等等),jdk或hibernate都提供了对object对象的校验,只需加上相应的注解即可。引入pom<dependency> <groupId>org.hibernate.validator</groupId> <artifactId>hibernat...

2020-01-08 15:03:04 115

原创 利用反射实现MapStr、MapObj与bean之间的转换

import java.beans.BeanInfo;import java.beans.Introspector;import java.beans.PropertyDescriptor;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.util.HashMap;import java...

2020-01-08 11:43:43 68

转载 用shedlock实现分布式定时任务锁

转载自:https://www.cnblogs.com/gutousu/p/10235160.htmlspring的定时任务经常被各个服务用到,比如定时清理日志,定时提醒,比较方便的就是用Scheduled注解了简单的配置一下就能用了@EnableScheduling@SpringBootApplicationpublic class ScheduledLockApplication...

2020-01-07 17:07:07 167

原创 Spring获取应用上下文通用类SpringContextHolder

获取应用上下文通用类(以静态变量保存SpringApplicationContext,可在任何代码任何地方任何时候中取出ApplicaitonContext)import java.util.Locale;import org.springframework.beans.BeansException;import org.springframework.context.Applicatio...

2020-01-07 15:44:12 265

原创 通过Redis和AOP实现防重提交

下面的代码是使用shiro做安全控制的后台管理系统的防重提交。可根据实际情况进行修改import javax.servlet.http.HttpServletRequest;import org.apache.shiro.SecurityUtils;import org.apache.shiro.subject.PrincipalCollection;import org.apache...

2020-01-07 14:33:54 97

原创 JAVA常用加解密工具类

文章目录DesAESRSADesimport org.apache.commons.codec.binary.Base64;import javax.crypto.Cipher;import javax.crypto.SecretKeyFactory;import javax.crypto.spec.DESKeySpec;import java.security.Key;publ...

2020-01-07 11:08:06 215

原创 交易型系统设计的一些原则

墨菲定律:任何事情都没有表面看起来那么简单所有的事情都会比你预计的时间长可能出错的事总会出错如果你担心某种情况发生,那么他就更有可能发生高并发原则无状态如果设计的应用是无状态的,那么应用比较容易进行水平扩展。拆分根据具体情况权衡,是设计一个大而全的系统还是按功能模块拆分系统。服务化进程内服务->单机远程服务->集群手动注册服务->自动注册和发现服务-&g...

2020-01-06 11:39:18 34

原创 Redis源码概述

从Redis官网下载最新稳定版本的Redis。解压后源码主要存放在src文件夹中。其中server.c为服务端程序,redis-cli.c为客户端程序。Redis源代码的核心部分主要如下:基本的数据结构:动态字符串sds.c整数集合intset.c压缩列表ziplist.c快速链表quicklist.c字典dict.cSreams的底层实现listpack.c和rax.c...

2019-12-31 09:39:52 52 1

原创 Redis优点

Redis是内存型的数据库,也就是说Redis中的key-value对是存储在内存中的,因而效率比磁盘型的快Redis的工作模式为单线程,不需要线程间的同步操作。Redis采用单线程的原因是因为其瓶颈在内存和带宽上,而不是CPURedis中key-value的value不仅可以是字符串,也可以是复杂的数据类型,如链表、集合、散列表等Redis支持数据持久化,可以采用RDB、AOF、RDB&...

2019-12-31 09:10:22 45

原创 tomcat线程池配置

以Tomcat8为例配置方式一:<Connector port="8080" acceptCount="100" maxConnections="200" minSpareThreads="10" maxThreads="200"/>acceptCount:请求等待队列大小。当Tomcat没有空间线程处理连接请求时,新来的连接请求放入等待队列,默认为100。当队列超过a...

2019-11-22 18:05:32 126

转载 高性能分布式锁-redisson的使用

概述:在一些高并发的场景中,比如秒杀,抢票,抢购这些场景,都存在对核心资源,商品库存的争夺,控制不好,库存数量可能被减少到负数,出现超卖的情况,或者 产生唯一的一个递增ID,由于web应用部署在多个机器上,简单的同步加锁是无法实现的,给数据库加锁的话,对于高并发,1000/s的并发,数据库可能由行锁变成表锁,性能下降会厉害。那相对而言,redis的分布式锁,相对而言,是个很好的选择,redis官...

2019-11-21 09:46:57 41

原创 MySQL复制原理

复制的基本步骤配置一个服务器作为Master配置一个服务器作为Slave将Slave连接到Master步骤1和2需要重启MySQL配置Master将服务器配置为Master,要确保服务器有一个活动的二进制日志(binary log)和唯一的服务器ID。二进制日志上保存了Master上所有的改变。服务器ID用于区分服务器,要创建二进制日志和服务器ID,需要停掉服务器,然后将log-b...

2019-11-01 11:37:49 56

原创 MySQL安全、用户语句和函数

用户访问权限信息存储在一组规则的MyISAM表中,称之为授权表。这些表位于mysql数据库中,分别是:user :全局层级权限(gobal privileges)db:数据库层级权限(database-specific privileges)tables_priv:表层级权限(table-specific privilege)columns_priv:列层级权限(column-speci...

2019-10-31 18:33:08 56

原创 直接在命令行执行MySQL语句

mysql --user='xx' --password='xxx' -e "select * from tmp" database可以在SQL语句结尾处,输入将要用到的数据库名,也可以在表名称前面添加数据库名,database.tmp

2019-10-31 16:38:07 186

原创 MySQL批量导入数据

数据文本文件books.txt格式如下ISBN|TITILE|AUTHOR_LAST|AUTHOR_FIRST|COPYRIGHT DATE|1234567|Notes from undergroud|dostoevsky|fyodor|august 1994|……使用MySQL的LOAD DATA INFILE语句LOAD DATA INFILE '/tmp/books.txt' R...

2019-10-31 16:32:10 190

原创 MySQL取消正在执行的SQL语句

mysql> create database bookstore;Query OK, 1 row affected (0.00 sec)mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || admin ...

2019-10-31 14:31:09 273

转载 爬取B站视频 - m4s文件的相关研究

相关教程的直通车:怎样在电脑上下载哔哩哔哩的视频?如何下载B站(bilibili)视频手动法b站视频怎么保存在手机本地偶遇的网站:看哔哩哔哩唧唧-哔哩哔哩唧唧-bilibili视频|弹幕在线下载BiliPlus , ( ゜- ゜)つロ 乾杯~爱哔哩(bilibili视频、音频mp3解析下载站)爬取B站视频目录一、前言 ↶最近一段时间,突然想爬B站视频,发现竟然不是f...

2019-10-31 09:45:03 7081 1

转载 读者写者问题(读者优先,写者优先 ,读写公平)

读者优先读者优先的解决方案:互斥信号量wrt,初值是1,代表一个共享文件,解决“读-写”互斥,“写-写”互斥。一个记数器,即整型变量readcount,记录读者数,初值是0。 来一个读者, readcount加1 当readcount =1表示是第一个读者, 则需要执行p操作抢占文件;否则表示已有读者在安全的读数据。 走一个读者,readcount减1 当readcount =0表示是最后一...

2019-10-28 17:18:59 1550

原创 InnoDB存储引擎

第一个完整支持ACID事务的MySQL存储引擎,行锁设计,支持MVCC,提供类似Oracle风格的一致性非锁定读,支持外键,被设计用来最有效的利用内存和CPU。InnoDB体系结构InnoDB有多个内存块,可以认为这些内存块组成了一个大的内存池,负责如下工作:维护所有进程/线程需要访问的多个内部数据结构缓存磁盘上的数据,方便快速的读取,并且在对磁盘文件上的数据进行修改之前在这里缓存重做...

2019-10-25 11:03:53 104

原创 MySQL表存储引擎

存储引擎时MqSQL区别于其他数据库的一个最重要特性。每个存储引擎都有各自的特点,能够根据具体的应用建立不通的存储引擎表。MySQL的核心是存储引擎。MySQL是开源的,可以根据MySQL预定义的存储引擎接口编写自己的存储引擎,也可以通过修改源码来实现自己想要的特性。InnoDB存储引擎支持事务,主要面向在线事务处理(OLTP)方面的应用。特点是行锁设计、支持外键,默认情况下读取操作不会产生...

2019-10-24 10:05:17 53

原创 MySQL体系结构

MySQL体系结构图MySQL由以下几部分组成连接池组件管理服务和工具组件SQL接口组件查询分析器组件优化器组件缓冲(Cache)组件插件式存储引擎物理文件MySQL区别于其他数据库的最重要的特点是其插件式的表存储引擎...

2019-10-23 16:08:17 62

原创 mysql数据库和实例

数据库(database)物理操作系统文件或其他形式文件的集合。MySQL中,数据库文件可以是 frm、myd、myi、ibd结尾的文件。使用NDB引擎时,数据库的文件可能不是操作系统上的文件,而是存在于内存中的文件,但是定义不变。.frm、.myd、.myi文件是MySQL的原始数据文件.frm 表结构文件.myd 表数据文件.myi 表索引文件数据库实例(instance)...

2019-10-23 15:25:56 59

原创 RabbitMQ优先级队列

优先级队列,具有高优先级的队列具有高的优先权,优先级高的消息具备优先被消费的特权.可以通过设置队列的x-max-priority参数来实现。Map<String,Object> args = new HashMap<String,Object>();args.put("x-max-priority",10);channel.queueDeclare("queue.p...

2019-10-21 11:00:07 171

原创 RabbitMQ延迟队列

延迟队列存储的对象是对应的延迟消息,所谓延迟消息是指当消息被发送后,并不想让消费者立刻拿到消息,而是等待特定时间后,消费者才能拿到这个消息进行消费。延迟队列的使用场景有很多,比如:订单系统,用户下单30分钟内进行支付,30分钟内没有支付,这个订单将进行异常处理手机遥控家里的智能设备在指定的时间进行工作。这时候可以将用户指令发送到延迟队列通过DLX和TTL模拟出延迟队列的功能...

2019-10-21 10:45:30 47

原创 RabbitMQ死信队列

DLX,Dead-Letter-Exchange,死信交换器。当消息在一个队列中变成死信,能被重新发送到另一个交换器中,这个交换器就是DLX,绑定DLX的队列就称之为死信队列。消息变成死信一般由以下几种情况:消息被拒绝(Basic.Reject/Basic.Nack),并设置requeue参数为false消息过期队列达到最大长度为队列添加DLXchannel.exchangeDec...

2019-10-21 10:25:52 26

原创 RabbitMQ消息和队列的TTL

设置消息的TTL两种方法设置消息的TTL通过队列属性设置,队列中所有消息都具有相同的过期时间对消息本身进行单独设置如果同时设置,则消息的TTL以较小的值为准。消息在队列中的生存时间一旦超过设置的TTL值,就会变成死信(Dead Message),消费者将无法再收到该消息(这点不是绝对的)。通过队列设置消息的TTLMap<String,Object> args = new...

2019-10-18 14:52:35 72

原创 mandatory和immediate

mandatory和immediate是channel.basicPublish方法中的两个参数,他们都有当消息传递过程中不可达目的地时将消息返回给生产者的功能。RabbitMQ提供的备份交换器(Alternate Exchange)可以将未能被交换器路由的消息(没有绑定队列或者没有匹配的绑定)存储起来,而不是返回给客户端。mandatory参数mandatory为true时,交换器无法根据自...

2019-10-18 14:40:34 51

原创 RabbitMQ客户端开发

连接RabbitMQ在给定的参数下连接RabbitMQConnectionFactory factory = new ConnectionFactory();factory.setUsername(USERNAME);factory.setPassword(PASSWORD);factory.setVirtualHost(virtualhost);factory.setHost(IP_...

2019-10-17 11:23:41 52

原创 AMQP协议介绍

AMQP协议本身包括三层:Module Layer:协议最高层,主要定义了一些供客户端调用的命令,客户端可以利用这些命令实现自己的业务逻辑。例如,客户端可以使用Queue.Declare命令声明一个队列或者使用Basic.Consume订阅消费一个队列中的消息Session Layer:中间层,主要负责将客户端的命令发送给服务器,再将服务端的应答返回给客户端,主要为客户端和服务端之间的通信提...

2019-10-17 10:04:34 47

原创 RabbitMQ相关概念

RabbitMQ模型架构生产者和消费者Producer:生产者,投递消息的一方生产者创建消息,然后发布到RabbitMQ中。消息包含消息体和标签。消息体也称为payload,实际应用中,消息体一般是一个带有业务逻辑结构的数据,比如一个JSON字符串。消息的标签用来表述这条消息,比如一个交换器的名称和一个路由键。生产者把消息交由RabbitMQ,RabbitMQ会根据标签把消息发送给感兴趣...

2019-10-16 10:38:51 41

原创 RabbitMQ简介

起源RabbitMQ是采用Erlang语言实现的AMQP(Advanced Message Queuing Protocol,高级消息队列协议)的消息中间件。2006年6月,由Cisco、Redhat、iMatix等联合制定了AMQP的公开标准,由此AMQP登上了历史舞台。是一个应用层协议的开放标准。RabbitMQ是由RabbitMQ Technoligies Ltd开发并提供商业支持。取...

2019-10-15 16:12:53 34

原创 消息中间件

什么是消息中间件消息(Message)是指在应用间传递的数据。可以非常简单,如文本字符串、JSON等,也可以复杂,如内嵌对象。消息队列中间件(Message Queue Middleware,简称MQ)是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。两种传递模式:点对点生产者发送一条消息到queue,只有一个消费者能收到。queue实现...

2019-10-15 15:36:47 41

转载 Mac下TensorFlow安装及环境搭建

一、深度学习框架的选择随着深度学习日趋火热,技术的逐渐兴起,各种深度学习框架也层出不穷。目前使用普遍的框架有Tensorflow、Caffe、PyTorch、Theano、CNTK等,那么在这么多框架中该如何选择呢?笔者作为一个初学者,架不住Tensorflow的名气之大,所以最开始便选择了Tensorflow。当然不仅仅只是因为名气大,Tensorflow作为谷歌主持的开源项目,它的社区热...

2019-10-05 16:29:31 67

转载 TensorFlow是什么

TensorFlow 是由 Google Brain 团队为深度神经网络(DNN)开发的功能强大的开源软件库,于 2015 年 11 月首次发布,在 Apache 2.x 协议许可下可用。开源深度学习库 TensorFlow 允许将深度神经网络的计算部署到任意数量的 CPU 或 GPU 的服务器、PC 或移动设备上,且只利用一个 TensorFlow API。你可能会问,还有很多其他的深度学习库...

2019-09-27 16:39:25 143

原创 FFmpeg给视频添加水印

给视频加图片水印ffmpeg -i input.mp4 -vf "movie=logo.png[watermark];[in][watermark] overlay=main_w-overlay_w-10:main_h-overlay_h-10[out] " output.mp4-vf:滤镜相关,视频裁剪,水印等等操作都需要它完成logo.png: 要添加的水印图片地址/abosolute...

2019-09-26 17:51:43 1199

转载 ffmpeg从视频中提取图片

ffmpeg -i test.mp4 -r 30 image-%3d.jpgffmpeg -i test.mp4 -r 30 -t 4 image-%3d.jpgffmpeg -i test.mp4 -r 30 -ss 00:00:20 image-%3d.jpgffmpeg -i test.mp4 -r 30 -ss 00:00:20 -vframes 10 image-%3d.jpgf...

2019-09-26 14:51:35 874

转载 ffmpeg视频截取动态图

ffmpeg -y -ss 00:00:10.000 -i input.mp4 -pix_fmt rgb24 -r 7 -s 750*420 -t 00:00:7.000 -vf "transpose=1" output.gif-y:表示输出文件若存在则直接覆盖-ss:从视频的后面的时间开始截取-i:输入原始视频文件-pix_fmt:输出的动图每张图片格式 ??-r:指定输出的动图共有...

2019-09-26 14:43:19 113

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