mina-1 mina-1每个MINA组件的作用基于MINA的应用程序分为3层I/O 服务 - 执行实际的 I/OI/O 筛选器链 - 将字节筛选/转换为所需的数据结构,反之亦然I/O 处理程序 - 此处驻留着实际的业务逻辑为了创建基于MINA的应用程序,必须:创建 I/O 服务 - 从已可用的服务(*接受器)中进行选择或创建自己的服务创建筛选器链 - 从现有筛选器中进行选择,或创建自定义筛选器以转换请求/响应创建 I/O 处理程序 - 编写业务逻辑,处理不同的消息...
Spring Bean的生命周期 Spring Bean的生命周期Spring对bean进行实例化;Spring将值和bean的引用注入到bean对应的属性中;如果bean实现了BeanNameAware接口,Spring将bean的ID传递给setBeanName()方法;如果bean实现了BeanFactoryAware接口,Spring将调用setBeanFactory()方法,将BeanFactory容器实例传入;如果bean实现了ApplicationContextAware接口,Spring将调用setApplic
Java并发编程 service层处理并发事务加锁可能会无效 Java并发编程 service层处理并发事务加锁可能会无效问题描述近期写了一个单体架构秒杀的功能,在对商品库存进行扣减,有线程安全问题,因此加了Lock锁进行同步,但发现加锁后并没有控制住库存线程安全的问题,导致库存仍被超发。输出一下代码:@Override@Transactional(rollbackFor = Exception.class)public Result startSeckillLock(long seckillId, long userId) { /** * 这里加锁
MySql存储过程遍历结果集,并执行动态SQL CREATE PROCEDURE update_dr_ytenantId()BEGIN -- 游标到达结果集的结尾标记,默认为0 DECLARE s INT DEFAULT 0; -- 查询到的update sql DECLARE sql__ varchar(500); -- 定义游标,结果集 DECLARE sqlList CURSOR FOR select concat('update ', a.TABLE_NAME, ' set ', ' dr = 0 where dr is nul
Java虚拟机--栈帧、操作数栈和局部变量表 Java虚拟机–栈帧、操作数栈和局部变量表前言本文主要分为两部分:Java虚拟机运行时栈帧介绍一个关于字节码指令以及操作数出栈/入栈的小实验1. Java虚拟机栈和运行时栈帧结构Java虚拟机是基于栈架构的,如图所示:为什么要深入研究虚拟机栈?因为它很重要。除了一些native方法是基于本地方法栈实现的,所有的Java方法几乎都是通过Java虚拟机栈来实现方法的调用和执行过程(当然,需要程序计数器、堆、方法区的配合),所以Java虚拟机栈是虚拟机执行引擎的核心之一。而Java虚拟机栈中出
Java虚拟机-堆、栈、运行时数据区 Java虚拟机-堆、栈、运行时数据区前言:本篇文章主要讲解java(JVM)在运行期间,其运行时数据区的作用、职责与划分。包括堆内存、栈内存–虚拟机栈、本地方法栈、方法区、常量池、程序计数器等概念。文章主要内容摘自《深入理解Java虚拟机》第三版-周志明Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而一直存在,有些区域则是依赖用户线程的启动和结束而建立和销毁。这些区域如图所示:1
初识Mysql事务及隔离级别 Mysql事务事务简介:在Mysql中只有使用了Innodb数据库引擎的数据库或表才支持事务。事务处理可以用来维护数据库的完整性,保证成批的sql语句要么全部执行,要么全部不执行。事务用来管理insert,update,delete语句。事务不能嵌套。事务的四大特征(ACID):一般来说,事务是必须满足4个条件(ACID):原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。**原
Redis 字符串(string) Redis 字符串(string)字符串(string)是Redis最基本的键值对类型,这种类型的键值对会在数据库中把单独的一个键和单独的一个值关联起来,被关联的键和值既可以是普通的文字数据,也可以图片、视频、音频、压缩文件等更为复杂的二进制数据。字符串相关操作SET:为字符串键设置值SET key value在默认情况下,对一个已经设置了值的字符串键执行SET命令将导致键的旧值被新值覆盖。例如:redis> SET song_title "Get Wild" OKredis>
Mysql锁之共享锁(读锁)和排他锁(写锁) Mysql锁之共享锁(读锁)和排他锁(写锁)InnoDB和MyISAMMysql在5.5之前默认使用MyISAM存储引擎,之后使用InnoDB。查看当前存储引擎:show variables like ‘%storage_engine%’;MyISAM操作数据都是使用的表锁,你更新一条记录就要锁整个表,导致性能较低,并发不高。当然它也不会存在死锁问题。InnoDB与M有ISAM的最大不同有两点:InnoDB支持事务InnoDB采用了行级锁。也就是你需要修改哪行,就可以只锁定哪行。在M
Tomcat + Memcached实现session共享 Tomcat + Memcached实现session共享Linux Memcached安装Linux系统安装memcached,要先安装libevent库。yum install libevent libevent-devel下载http://memcached.org,并上传解压缩#解压缩tar -zxvf memcached-1.6.6.tar.gz#进入目录cd memcached-1.6.6#配置./configure --prefix=/usr/local/memcache
Zookeeper集群搭建 Zookeeper安装及启动验证Java安装使用以下命令验证:$ java -version如果已经安装了Java,那么可以看到已安装的Java的版本。否则,请先安装Java。参考:https://blog.csdn.net/wjy2460956668/article/details/108074844安装Zookeeper下载http://zookeeper.apache.org/ 并上传解压缩配置zookeeper环境变量注意中间分隔符是 : 冒号#修改文件/etc/profile
FastDFS + keepalived + nginx集群搭建 FastDFS + keepalived + nginx集群搭建安装环境nginx-1.17.3fastdfs相关资源地址:https://github.com/happyfish100libfastcommon-master.zipfastdfs-master.zipfastdfs-nginx-module_v1.16.tar.gzngx_cache_purge模块资源地址:http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gzng
Linxu安装JDK8及环境变量配置 Linxu安装JDK8及环境变量配置下载JDK81.下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html2.选择Linux的jdk,这里选择tar.gz方式,即源码安装解压将安装包上传至虚拟机 /usr/local/java/ 目录下#进入/usr/local/java目录下cd /usr/local/java#解压tar zxvf jdk-8u261-linux.x64.tar.gz#删除压缩
Nginx安装--Linux环境 Nginx安装环境要求编译器及相关工具:必须确保操作系统安装有GCC编译器;make工具。#通过yum命令安装编译器及相关工具yum install gcc gcc-c++ make;模块依赖性:Nginx的一些模块需要第三方库的支持,如rewrite模块需要pcre库,gzip模块需要zlib模块,ssl功能需要openssl库等。#通过yum命令安装这些依赖库yum -y install pcre pcre-devel zlib zlib-devel openssl openssl-de