自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 本地生成https授信证书

生成https自签名授信证书

2022-08-24 16:31:15 975 1

原创 spring + mybatis + c3p0 整合(mybatis分页)

文章目录摘要概述RowBounds分页分页原理分页插件PageHelper摘要近期由于项目使用mybatis出现了数据源阻塞,导致应用程序假死,服务超时引发严重后果,故此下定决心重新梳理一下spring+mybatis+c3p0整合问题,主要分为:配置、源码(通过一次数据库操作分析)、myabatis缓存、问题总结使用版本spring 4.1.7.RELEASE、mybatis 3.3.0、mybatis-spring 1.2.3spring + mybatis + c3p0 整合(配置篇)spr

2022-05-17 18:15:58 259

原创 AES加解密

摘要由于业务需求,对接一家第三方服务商,接口报文是使用AES GCM算法加密的字节流数据算法简介AES 高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2

2022-05-08 16:37:55 397

原创 spring + mybatis + c3p0 整合(源码分析-mybati核心对象)

文章目录摘要mybatis整体架构接口层核心处理层基础支持层mybatis核心对象configuration创建4大核心对象源码Executor组件StatementHandler组件ParameterHandler组件 参数处理器ResultSetHandler 组件 结果处理器插件开发摘要近期由于项目使用mybatis出现了数据源阻塞,导致应用程序假死,服务超时引发严重后果,故此下定决心重新梳理一下spring+mybatis+c3p0整合问题,主要分为:配置、源码(通过一次数据库操作分析)

2022-05-05 17:56:50 330

原创 spring + mybatis + c3p0 整合(源码分析)

文章目录摘要通过一次数据库操作分析mybatismybatis核心对象示例代码mapper代理对象MapperProxyspring的mybatis相关bean加载MapperScannerConfigurer类ClassPathMapperScanner类MapperFactoryBean 实现Mapper的代理对象MapperProxy创建SqlSessionTemplate是mybatis核心类,摘要近期由于项目使用mybatis出现了数据源阻塞,导致应用程序假死,服务超时引发严重后果,故此下定决

2022-04-24 14:44:10 392

原创 spring + mybatis + c3p0 整合(配置篇)

spring + mybatis + c3p0 整合(配置篇)整合配置

2022-04-08 16:12:52 1066

原创 spring事物管理

这里写自定义目录标题spring事物管理新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入spring事物管理事物用来确保数据的完整性和一致性。事物有四大特性:新的改变我们对Markdown编辑器进行了一些功能拓展与语

2022-04-03 17:33:21 77

原创 java编码(ISO-889-1、UTF-8、GBK、Unicode)

文章目录java编码ACSII编码对应表常用编码1、ISO-8859-12、GB2312/GBK3、Unicode4、UTF-8几种编码关系java字符串处理getBytes(charset) 将字符串所表示的字符按照设置charset编码以字节形式表示new String(byte[],charset) 将字节数组按照设置charset编码识别,最后转换为Unicode存储GBK、UTF-8、I...

2019-11-25 15:09:07 1978

原创 java序列化反序列化

代码参考https://github.com/eos2009/java-core-learn.git概念序列化和反序列化属于通信协议的一部分。 序列化:将对象(java)转换成二进制串的过程。反序列化:将在序列化过程中所生成的二进制串转换成者对象(java)的过程序列化java序列化需要实现Serializable,否则或抛出异常serialVersionUID建议序列化类设置p...

2019-10-23 15:50:33 289

原创 一次dubbo客户端消费者超时-线程池耗尽问题处理

1、问题起因上线一个文件下载服务,运行一直稳定,偶有异常(连接国外网络不稳定导致),一天突然消费端频繁抛出超时异常(不是所有请求都超时,大部分超时),起初以为下载文件过大导致超时,测试发现不是该问题(使用小文件测试),猜测可能是服务端出了问题2、查看问题查看服务端最近异常log,发现如下异常(异常信息从网上down的,不是原始信息,原始信息当时删了,懒得去找了。。)[DUBBO] An ...

2019-10-21 15:03:19 4332 1

原创 gitlab安装配置

Gitlab安装配置使用系统centos7ssh安装ssh yum install -y curl policycoreutils-pythonopenssh-serverSSH服务设置成开机自启动,安装命令:systemctl enable sshd启动SSH服务,安装命令:systemctl start sshd防火墙安装 yum install firewalld syst...

2019-10-15 09:59:08 197

原创 Git使用及原理

简介使用推送本地项目到远程仓库从远程仓库拉取项目开发过程中提交、合并代码原理参考https://www.jianshu.com/p/ae3f7c954061https://www.jianshu.com/p/6bb76450d763...

2019-10-14 15:06:55 177

原创 docker入门学习--一个简单springboot项目+nginx+mysql

PS:本人还在学习摸索中,有不对的欢迎大佬指教docker部署一个简单springboot项目+nginx+mysql项目地址:https://github.com/eos2009/learn-docker启动后访问效果

2019-09-06 17:50:55 191

原创 docker入门学习--Dockerfile

PS:本人还在学习摸索中,有不对的欢迎大佬指教docker DockerfileDockerfile简介Dockerfile就是一个普通的文本文件,其内包含了一条条的指令,每一条指令都会构建一层镜像Dockerfile实战创建一个Dockerfile文件命令解释FROM 第一条指令必须为 FROM 指令;指定基于nginx镜像创建镜像MAINTAINER 作者信息RUN指...

2019-09-06 17:12:55 258

原创 docker入门学习--导入导出上传下载

PS:本人还在学习摸索中,有不对的欢迎大佬指教docker导出使用上篇文章中启动容器,向nginx添加一个页面查看结果导出容器docker export nginx > nginx.tardocker导入容器导入(导入刚才导出容器 - 指定镜像名称:tag)cat nginx.tar | docker import - eos2009/nginx_test:v1...

2019-09-06 16:45:38 141

原创 docker入门学习--docker应用(nginx)

docker应用容器镜像简介镜像也是docker的核心组件之一,镜像是容器运行的基础,容器是镜像运行后的形态;可以理解为镜像是容器的模板。总体来说,镜像是一个包含程序运行必要环境和代码的只读文件,它采用分层的文件系统,将每一层的改变以读写层的形式增加到原来的只读文件上。镜像的体系结构镜像的最底层是一个启动文件系统(bootfs)镜像,bootfs的上层镜像叫做根镜像,一般来说,根镜像是一个...

2019-09-06 15:54:39 139

原创 docker入门学习--docker-compose安装

docker-compose简介Docker-Compose是一个部署多个容器的简单但是非常必要的工具。在实际的开发环境或者生产环境,容器往往都不是独立运行的,经常需要多个容器一起运行,使用docker-compose可以实现容器编排docker-compose安装安装python-pip(新装系统没有安装过,已安装可忽略)安装依赖yum -y install epel-releas...

2019-09-06 13:53:32 220

原创 docker入门学习--安装

docker入门学习--安装docker简介docker安装准备docker安装docker简介根据wikipedia中的介绍Docker是一个开放源代码软件项目,让应用程序布署在软件容器下的工作可以自动化进行,借此在Linux操作系统上,提供一个额外的软件抽象层,以及操作系统层虚拟化的自动管理机制。Docker利用Linux核心中的资源分脱机制,例如cgroups,以及Linux核...

2019-09-06 11:24:03 109

原创 java--泛型

demo代码 https://github.com/eos2009/java-core-learn.gitjava泛型介绍泛型是Java 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。在Java中,使用变量E表示集合的元素类型,K和V分别表示关键字与值的类型。T(需要时还...

2018-10-25 15:43:53 169

原创 springcloud-eureka学习

1、简介    eureka是springcloud系列的注册中心,分为客户端和服务端2、使用    客户端@ServletComponentScan@ComponentScan@SpringBootApplication@MapperScan(basePackages = "com.cf.page.mapper")@EnableSwagger2Doc@EnableDiscoveryCl...

2018-05-10 14:17:52 179

原创 redis--bitmap实现去重

1、问题    最近做一个探针项目,需要判断用户是不是第一次被采集,原来直接使用redis的key-value第一次缓存,过了段时间发现这样key会无穷无尽。。2、解决方案    使用布隆算法实现去重,布隆算法参考:漫画:Bitmap算法 整合版    具体实现,针对具体用户的mac做hash,hash生成的结果作为bitmap的offset,bitmap即位图,每位保存0或1,1标识已经存在  ...

2018-05-09 17:35:58 5363 1

原创 springcloud-ribbon学习

1、简介    Ribbon是Netflix公司开源的一个负载均衡的项目,是一个客户端负载均衡器,运行在客户端上。它是一个经过了云端测试的IPC库,可以很好地控制HTTP和TCP客户端的一些行为。 Feign已经默认使用了Ribbon。2、实现    在使用Eureka做注册中心的前提下,客户端简单实现RestTemplate+@LoadBalanced @Bean @LoadBal...

2018-05-09 16:47:02 357

原创 redis-问题方案

1、缓存雪崩通俗简单的理解就是:由于原有缓存失效(或者数据未加载到缓存中)第一,大多数系统设计者考虑用加锁或者队列的方式保证来保证不会有大量的线程对数据库一次性进行读写,避免缓存失效时对数据库造成太大的压力,虽然能够在一定的程度上缓解了数据库的压力但是与此同时又降低了系统的吞吐量。第二,分析用户的行为,尽量让缓存失效的时间均匀分布。第三,如果是因为某台缓存服务器宕机,可以考虑做主备,比如:redi...

2018-05-08 13:56:29 128

原创 elasticsearch相关概念

自己的一些粗浅理解,参考 https://www.elastic.co/guide/cn/elasticsearch/guide/current/document.html自己写的一个小例子https://gitee.com/chenfei01/my-zb/tree/master/learn-elasticsearch1、索引    此索引非关系数据库的索引,其可以理解相当于一个 “关系数据库”2...

2018-03-29 16:52:28 177

原创 CAT-原理简单分析

简介    cat本文简单分析,启动加载流程启动时加载CatServlet:这里分两条线    一个加载各个模块,如catHomeModule、catConsumeModule、catCoreModule等    一个启动一个socket监听,接收消息,初始化县城,使用consume模块的各个分析器,对消息做不同分析处理主要几个类    RealtimeConsumer        consum...

2018-03-13 10:18:24 2192

原创 Elasticsearch学习简单命令

Elasticsearch安装    1、官网下载 https://www.elastic.co/downloads/elasticsearch    2、下载zip,解压         linux运行  ./bin/elasticsearch         windows运行 bin目录下 elasticsearch.bat           kibana安装 同Elasticsearch...

2018-03-09 15:48:19 215

原创 sharding-jdbc使用

示例代码    https://gitee.com/chenfei01/my-zb/tree/master/learn-sharding-jdbc简介    sharding-jdbc是当当提供的开源的分库分表,读写分离工具,已jar包形式提供服务,不需要中间层,不需要部署    功能简介:        分库分表        读写分离        分布式主键(64位   一位符号为 0  +...

2018-03-06 16:39:04 6182

原创 spring-session

简介    示例代码点击打开链接    session共享方式1、使用nginx反向代理做负载均衡 可以通过ip_hash方式实现一个ip访问一台服务器;有前提条件nginx要能拿到用户的真实ip 2、应用实现,如spring-session+redis本文主要说明第二种spring-session实现    原理通过filter将session替换为Redis处理    主要类有:       ...

2018-02-26 16:58:13 170

原创 java io学习---tomcat

简介什么是tomcat操作系统对于进程中的线程数有一定的限制:   Windows 每个进程中的线程数不允许超过 2000;   Linux 每个进程中的线程数不允许超过 1000;   另外,在 Java 中每开启一个线程需要耗用 1MB 的 JVM 内存空间用于作为线程栈之用。参考资料 Tomcat学习总结(7)——Tomcat与Jetty比较Tomcat 系统架构与设计模式,第 1 部

2017-12-19 16:07:33 131

原创 线程并发学习—-ConcurrentHashMap

线程并发学习—-核心概念(转载) 线程并发学习—-线程阻塞(sleep、wait、notifyAll、notify、join) 线程并发学习—-线程阻塞(synchronized) 线程并发学习—-线程阻塞(lock) 线程并发学习—-Thread、Runnable、Callable 线程并发学习—-队列(Queue) 线程并发学习—-ConcurrentHashMap 线程并发学习—

2017-12-19 14:24:17 188

原创 线程并发学习----JUC工具类

线程并发学习—-核心概念(转载) 线程并发学习—-线程阻塞(sleep、wait、notifyAll、notify、join) 线程并发学习—-线程阻塞(synchronized) 线程并发学习—-线程阻塞(lock) 线程并发学习—-Thread、Runnable、Callable 线程并发学习—-队列(Queue) 线程并发学习—-JUC工具类 spring学习—-线程池 ja

2017-12-19 14:08:12 641

原创 线程并发学习----原子类

线程并发学习线程并发学习—-核心概念(转载) 线程并发学习—-线程阻塞(sleep、wait、notifyAll、notify、join) 线程并发学习—-线程阻塞(synchronized) 线程并发学习—-线程阻塞(lock) 线程并发学习—-Thread、Runnable、Callable 线程并发学习—-队列(Queue) 线程并发学习—-原子类 spring学习—-线程池

2017-12-18 15:51:49 280

原创 线程并发学习—-线程阻塞(sleep、wait、notifyAll、notify、join)

比较两者来自不同的类(分别是Thread和Object)sleep方法没有释放锁;而wait方法释放了锁,使得其他线程可以使用同步控制块或方法wiat只能在同步控制方法或者同步控制块使用,而sleep可以在任何地方使用sleep必须捕获异常,而wait不需要notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪

2017-12-18 14:59:10 758

原创 线程并发学习----队列(Queue)

线程并发学习线程并发学习—-核心概念(转载) 线程并发学习—-线程阻塞(sleep、wait、notifyAll、notify、join) 线程并发学习—-线程阻塞(synchronized) 线程并发学习—-线程阻塞(lock) 线程并发学习—-Thread、Runnable、Callable 线程并发学习—-队列(Queue) spring学习—-线程池 java中一些锁概念整理

2017-12-15 18:21:26 441

原创 线程并发学习----线程阻塞(lock)

线程并发学习线程并发学习—-核心概念(转载) 线程并发学习—-线程阻塞(sleep、wait、notifyAll、notify) 线程并发学习—-线程阻塞(synchronized) 线程并发学习—-线程阻塞(lock) 线程并发学习—-Thread、Runnable、Callable spring学习—-线程池 Lock类图Lock与synchronized比较synchronized

2017-12-14 11:08:04 1584

原创 java基础---异常

简介java异常的基类为Throwable,分为Error和ExceptionErrorerror表示程序无法处理的异常,是比较严重的错。JVM异常:StackOverFlowError(栈溢出)OutOfmemonyError(内存溢出)等其它异常:如网络中断等Exceptionexception表示程序可以处理的异常RuntimeException运行时异常 NullPointExc

2017-12-12 16:53:47 161

原创 缓存学习---redis

简介 官网公布数据:读的速度是110000次/s,写的速度是81000次/s redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富

2017-12-12 11:51:42 1039 2

原创 JVM学习---JVM内存结构、垃圾回收

jvm内存结构运行时方法区,包含以下几个部分 方法区:保存每个类的信息(包括类的名称、方法信息、字段信息)、静态变量、常量以及编译器编译后的代码等 java栈 :保存有局部变量表、操作数栈、指向运行时常量池的引用、方法返回地址 本地方法栈:保存本地方法执行需要信息,为本地方法服务 程序计数器:用来指示执行哪条指令的 堆:保存对象本身的以及数组 注:堆和方法区为线程共享

2017-12-08 16:10:59 149

原创 spring学习----注解描述

有些注解总是忘记含义,特此记录一下java注解@Target({ ElementType.FIELD, ElementType.PARAMETER, ElementType.METHOD }) Java的元注解(指修饰注解的注解)之一。用来指定注解修饰类的哪个成员@Retention(RetentionPolicy.RUNTIME) 注解按生命周期来划分可分为3类:RetentionPolicy

2017-12-04 15:23:13 278

原创 线程并发学习----线程阻塞(synchronized)

线程并发学习线程并发学习—-核心概念(转载) 线程并发学习—-线程阻塞(sleep、wait、notifyAll、notify) 线程并发学习—-线程阻塞(synchronized) 线程并发学习—-线程阻塞(concurrent包) 线程并发学习—-Thread、Runnable、Callable spring学习—-线程池 简介在并发编程中,我们需要处理两个关键问题:线程之间如何通信及

2017-11-28 13:58:58 5500 1

空空如也

空空如也

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

TA关注的人

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