自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 java 实现一个lsm数据库 实现 put delete update get scan 操作 并且使用treemap作为 稀疏索引结构 且实现 level_size的compare策略 实现层级

可以使用 batch命令 批量实现插入 然后 测试 作者使用 batch 1 30000000 一下存了30000000个记录,然后crud,速度非常快。: 压缩策略实现了level_size 当某一层级超过限定个数 就使用归并合并这些sstable File 填充到下一个层级。测试 查询2g的文件,查找时间极短(第一次为4ms(因为要打开随机文件句柄) 后面为0ms):treeMap 每个sstable都对应一个稀疏索引 例如。: 磁盘写入自定义的协议字节。: treeMap实现。

2024-01-05 18:23:34 439

原创 Spring扫描项目项目Bean的顺序

Spring扫描项目项目Bean的顺序

2021-12-24 15:25:30 1243

原创 java nio 写一个完整的http服务器 使用Reactor模式 提升性能 支持文件上传 chunk传输 gzip 压缩 使用过程 和servlet差不多

基于 Java NIO 实现完整的 HTTP 服务器 使用Reactor模式 提升性能 仿照servlet对输入输出做出响应

2021-12-21 15:03:40 1069

原创 es restAPI 练习

#查看所有索引GET /_cat/indices?v#删除索引DELETE /*# 创建/book索引并创建(musicbook)类型 没有类型了 类型默认_docPUT /book{ "mappings": { "properties": { "name":{ "type":"keyword" }, "price":{ "type":"double" },...

2021-09-16 10:56:37 255

原创 高并发下关于利用redis分布式锁实现插入数据唯一性 (业务场景: 先根据条件查询数据库 若没有则新增 有则直接返回结果)的加锁注意事项

高并发下关于利用redis分布式锁实现插入数据唯一性 (业务场景: 先根据条件查询数据库 若没有则新增 有则直接返回结果)的加锁注意事项加锁不能像下面这样加 伪代码如下:fun(){*lock;*val data= 根据条件去查询db 获取结果;if(data不存在){插入数据data=插入数据;}*unlock;*返回 data;}向上面这样加锁 在极端情况下 会导致还是会导致重复插入;在java的事务管理器中 提交事务的时机是在这个方法结束的时候再提交的。像

2021-04-14 17:10:11 850

原创 idea下载源码 出现无法下载 解决办法

idea下载源码 出现无法下载 解决办法先说原因maven版本问题导致的 用默认的idea maven 然后配置文件 选自己的例如:问题解决

2021-04-01 10:34:04 903

原创 netty 启动绑定时为什么给ServerSocketChanel注册的ops为 0 而不是OP_ACCEPT(16) 解析 + 代码位置:io.netty.channel

netty 启动绑定时为什么给ServerSocketChanel注册的ops为 0 而不是OP_ACCEPT(16) 解析代码位置:io.netty.channel.nio.AbstractNioChannel#doRegister当向selector注册键值为0时 不会报错 但会什么都不做 所以 肯定后面在某个时刻会把selector的键值改成正常的 那么怎么改呢?jdk 提供了这个apiSelectionKey#interestOps下面观察netty在那一步做了这个步骤代码位置

2021-03-04 10:15:44 412 1

原创 情侣一起看同步看电影H5网站 电影同步观看平台 (自己写的 已开源)

H5网站 电影同步观看平台 (自己写的 已开源)说明此项目由本人业余开发 由于本人与女朋友异地 有时候想要一起看电影 但是苦于没有很棒的平台 很多可以提供同步观看的平台影片资源太少 也很不清晰 所以我决心自己写一个这样的平台此平台电影资源是采用java爬虫爬取网上资源的 大部分电影都可以找到 但是请仅限自己观看 请勿传播!涉及技术前端采用uni-app开发后端我使用netty开发了一个im聊天框架并做成了springboot启动器,配合我自己写的前端sdk,可以很方便集成在项

2021-02-20 15:34:52 15137 2

原创 封装netty 一个webSocket即时聊天的Im服务器springboot 启动器

封装netty 一个webSocket即时聊天的Im服务器springboot 启动器只需要几步就可自己创建一个im聊天服务器引入依赖(需要本地安装 jar包在github) <dependency> <groupId>com.pps.im</groupId> <artifactId>springboot-netty-im-pps-starter</artifactId>

2021-01-04 15:10:45 270

原创 封装fastdfs-java为sppringboot启动器并提供工具类简化分片上传流程

#基于fastdfs-client-java封装的一个springboot启动器 如果觉得好用请给我点赞本jar包还未上传到maven中央仓库 所以需要自己本地安装 不在赘述##特性:使用yaml或者property配置fastdfs参数封装了普通上传方法,更简便 代码不再展示封装了分片上传的细节 提供两个方法供分片上传 一个是初始化分片上传一个是分片上传分片上传代码示例 String uploadId = fastdnsUtil.init_chunck("test.png"

2021-01-04 14:32:05 221

原创 自定义事务管理器的实现 以应对同一个系统多个数据源@Transactional事务 失效问题

一 问题由来?在同一个系统中如果使用多个数据源 当一个服务方法里面 另一个服务类的方法 而这两个服务操作的不是同一个同一个数据库 那么@Tranactional将会失效 我们常用的DataSourceTransactionManager事务管理器就不管用了 这种情况无法实现事务的原子性了 归根到底的最终原因:是这两个服务的无法拿到无法拿到同一个Connection 也就是无法拿到同一个数据库连接 在源码中 拿连接的逻辑是根据数据源来拿取的 它保存在一个Thread...

2020-11-09 09:53:21 1188 2

原创 记录一次自定义ResponseBodyAdvice<Object> 不生效的问题以及原因 结论: 当方法参数里面有HttpServeltResponse 时它将不会生效

前提: controller有@controller 方法参数有@ResponseBody@RequestMapping("/test1/test6")@ResponseBodypublic void test9(HttpServletResponse response) throws IOException { System.out.println("--");}不会进入自定义的 ResponseBodyAdvice<Object>@RequestMappi..

2020-10-26 17:12:57 3676 1

原创 编写一个mybatis批处理工具类 用来执行业务的批量操作 而不用到xml里面写循环

原理就是 使用工具类的时候单独得到项目环境的 SqlSessionFactory 然后用它开一个BATCH的session 然后进行操作1 定义一个枚举类 表示我们的批处理是什么操作public enum OpreationType { INSERT,UPDATE,DELETE}2 写工具类@Componentpublic class MyBatisBatchUtil { @Autowired private Lis...

2020-10-21 14:51:03 261

原创 详解spring与mybatis整合原理 以及自定义整合过程 让mapper使用自定义的指定的执行器 在官方的整合中 默认使用的是Simple 无法指定

spring与mybatis整合 我这里就用springboot举例了 首先从@MapperScan注解开始当我们使用这个注解时 spring会导入一个处理类@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.TYPE})@Documented@Import({MapperScannerRegistrar.class})public @interface MapperScan { String[] value()..

2020-10-19 15:24:17 314

原创 编写一个可以自动添加过滤条件的mybatis插件(类似 分页插件PageHelper) 这样在某些业务下就不用在xml sql语句中添加过滤条件了 也不用在实体类中添加与我们业务无关的字段了

原理:原理类似mybatis分页插件 在使用时添加过滤条件即可 整个难点是改写原本sql 因为可能这个sql很复杂 我写的改写算法可能有bug步骤1编写存放我们过滤条件的类package com.yinhai.domain.common.plug;import com.github.pagehelper.util.MetaObjectUtil;import lombok.extern.slf4j.Slf4j;import org.apache.ibatis.c...

2020-10-15 11:36:31 803

原创 spring三级缓存详情 为何采用三级缓存?一级加三级其实就可以解决循环依赖了 为何要加个二级缓存 以及自定义的乞丐版的spring

spring三级缓存详情 为何采用三级缓存?循环依赖相信大家都知道 比如对象A自动注入B 对象B自动注入A 那么如果没有缓存 spring创建A时 检测到A依赖B 但是容器此时还没有B 就会转而创建B 而容器B又依赖A 但是此时容器还没有A 又创建A去了 从而无限递归 造成错误。对于上述情况 spring将创建对象分为大概三个步骤1 实例化 在堆中new一个对象 但此时还没有给对象属性赋值2 给对象赋值3 类的增加等操作也就是容...

2020-09-27 15:50:09 2695 10

转载 spring 事务传播机制

spring事务传播属性定义在org.springframework.transaction.TransactionDefinition接口,类似于EJB CMT的事务传播属性定义,主要有以下几种类型:propagation 说明 PROPAGATION_REQUIRED 支持当前事务,如果当前没有事务,则新建一个事务执行 PROPAGATION_SUPPORTS 支持当前事务,如果没有当前事务,则以非事务的方式执行 PROPAGATION_MANDATORY 支持当

2020-09-18 11:41:51 739

原创 springboot + mybatis 配置多数据源 思路简单清晰 实战演示

一 思路首先我们知道一个数据源可以简单的理解为一个数据 我们程序要配置多数据源 那么就需要 配置多个数据库的连接信息 然后对与事务 一个数据源对应一个事务管理器 在mybatis的初始化中 它需要根据数据源创建sqlSessionFactory工厂 我们要创建多数据源 那么我们应该创建多个sqlSessionFactory与数据源对应 这个时候问题来了 我们怎么可以让不同的mapper调用不同的会话工厂呢得到会话呢 这些就是配置多数据源的步骤与原理 下面我...

2020-09-11 15:01:15 1007

原创 spring注入Bean的八种方式

方式一直接xml 注入 不举例了方式二 配合包扫描@ComponentScan 使用@Controller @Service @Component 等方式注入 可以使用excludeFilters 排除扫描包下某些类注意 在springboot应用下 默认扫描包位置 springboot启动类所在包及其子包 像图示这种情况下 F H这两个类 都被我加了 @Component 他们也在包扫描下的位置下 如果使用excludeFilters 可以排除某个类进容器.

2020-08-28 17:17:52 855

原创 开发一个mybatis主键自动生成的插件 默认使用雪花算法生成Id

前言:最近阅读了mybatis相关的源码 知道了mybatis插件的运行流程 于是自己尝试着开发一个主键自动生成的插件出来 这样在数据库的主键不能自动生成的时候 可以不用每次都给实体类赋值注:本次开发环境为单纯的mybatis环境相信阅读过mybatis源码的同学都知道 mybatis四大组件 分别是 Executor ParamHandler ResultHandler StatementHandler mybatis 基本就是使用Executor来做我们的数据库交互...

2020-08-20 16:37:14 2585

转载 2020-08-13

数据库相关 面试问题集合https://www.cnblogs.com/jay-huaxiao/p/12950484.html

2020-08-13 17:05:32 88

原创 mysql 常见查询优化

语法上:1不要在表的列进行运算 例如select * from table where col*2=12,会造成索引失效;2like 使用时 尽量使用 'xx%' 这种模式 如果一定要使用‘%xx%’这种 需要在对应的列上加上组合索引 例如增加组合索引index(x,y),那么select x,y from table where y like '%xx%'也是可以使用索引的;3尽量使表的列有默认值 因为is null或者 is not null 这种方式 索引会失效;4..

2020-06-23 13:37:36 171

原创 使用RestTemplate 调用远程服务接口 响应的中文数据被转义成Unicode码(就是/u1665这种 且数据被多加了双引号 和换行符 很神奇

今天公司有个业务 需要我请求一个远程服务接口 获得数据 然后处理返回给调用者 但是笔者遇到了标题的问题 上网搜索大多都是发送json请求 请求参数乱码 不是我的问题 久久不能解决问题 结果笔者抱着试一试的态度 将restTenplate的转换器转换成阿里的FastJson 这种问题居然解决了代码如下: @Bean public RestTemplate rest...

2020-04-20 16:46:38 2548 3

原创 docker 根据自定义redis.conf配置启动 redis 避坑指南

首先拉取redis镜像:docker pull redis:4.0.0去找一篇redis.conf实例 加以修改注意:修改的时候有很大的一个坑 这里的daemon 需要改成no 而不是非docker启动的普通的redis那样 需要改成yes why?首先普通方式安装的redis 如果这个daemon 不设置成no 就只能前台运行 不能再后台运行 所以需要把他改...

2020-04-10 20:20:56 562

原创 centOs7 基于docker 安装mysql主从复制mysql数据库

1 首先拉取mysql镜像 我选择的是mysql5.7docker pull mysql:5.72 在宿主机上准备挂载的目录 我的准备截图: mkdir /dockerData/mysqlData -pcd /dockerData/mysqlDatamkdir mysqlMastermkdir mysqlSlavecd mysqlMastermkdir d...

2020-04-03 17:22:21 242

原创 调整虚拟机中 centOs7的NAT模式网络为静态IP

网上看不不少博文 全是坑 自身实践这篇博文是可以的 没有坑https://blog.csdn.net/Hanniel/article/details/86710900?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task...

2020-04-02 14:30:26 91

转载 JdbcType与Oracle、MySql数据类型对应列表

JdbcType与Oracle、MySql数据类型对应列表,及JdbcType Oracle MySql CHAR CHAR CHAR VARCHAR VARCHAR VARCHAR LONGVARCHAR LONG VARCHAR CLOB CLOB TEXT NCHAR NCHAR NV...

2020-03-31 11:12:36 868

原创 数据库查询优化之多表连接时的优化

当我们连接多张表时 有时候会跟where条件 例如下面这个sql语句:select s.patient_id, p.name plan_name, p.way plan_way, p.class_time, p.desc plan_desc, ...

2020-03-23 10:57:44 600

原创 linux(centOs7) 使用yum 安装mysql 完整无坑版

1 首先需要检查你自己的系统是否已经安装 若有 则需要卸载 再安装清理环境centos7会自带一个mariadb查看是否已安装rpm-qa|grep-imysqlrpm -qa |grep -i mariadb(centos7默认系统自带的)mariadb是从mysql来的,是它的一个分支,需要清理掉清理掉mariadb包用yum直接安装你的话,用的...

2020-03-22 15:58:44 242

原创 java 利用openOffice实现word ppt 等资源转化为pdf文件

网上有很多教程,但是很多坑,比如jobconvert2.2.1无法转pptx等格式的文件 而jobconvert2.2.2可以 但是maven仓库又没有 对于公司开发 这是个问题 毕竟公司的仓库不能让你随意操作。 由于公司使用的springboot 上网搜索了一下有相关的jar包 这就比较好办了 但是也有一些坑 下面是我的工作实践总结: 1 首先下载openoffi...

2020-03-19 16:50:24 858

原创 当数据库某个表的字段为关键字 比如desc 这时候查询语句会报错 怎么处理

当数据库某个表的字段为关键字 比如desc 这时候查询语句会报错 怎么处理?我们可以给这个字段加"" 就可以解决了

2019-11-28 09:06:11 513

原创 springcloud学习笔记一

初学微服务,首先要明晰微服务架构,微服务,是什么?微服务:套用微服务的提出者马丁·夫勒的论文定义:业界大牛 马丁.福勒(Martin Fowler )这样描述微服务:论文网址:https://martinfowler.com/articles/microservices.html#MicroservicesAndSoa中文版翻译网址:http://blog.cuicc.com/bl...

2018-12-27 22:25:45 153

空空如也

空空如也

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

TA关注的人

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