自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

微信公众号:一颗向上的草莓

微信公众号:一颗向上的草莓

  • 博客(334)
  • 资源 (2)
  • 收藏
  • 关注

转载 Java之泛型<T> T与T的用法

<T> T表示返回值是一个泛型,传递什么类型,就返回什么类型的数据,而单独的T就是表示当前对象创建时,就限制你传递的参数类型,下面案例中,通过一个泛型的返回方式,获取每一个集合中的第一个数据, 通过返回值<T> T 和T的两种方法实现。1、<T>T 用法这个<T> T 表示的是返回值T是泛型,T是一个占位符,用来告诉编译器,这个东西先给我留着,等我编译的时候,告诉你。package xxxx;import java.util.ArrayLi.

2022-02-20 17:23:14 5225

原创 使用java scan 大量的redis的key

1、redis配置import com.soul.data.lettuce.config.AbstractSpringDataRedisConfig;import com.soul.data.redis.core.StringRedisTemplate;import org.springframework.beans.factory.annotation.Value;import org.springframework.cache.interceptor.KeyGenerator;import

2022-01-06 17:31:29 1781

转载 idea debug只断点当前线程,不阻塞其他线程

公司前后端分离,后端人员无需编写前端js ,后端开发调试某个数据的时候,前端总是嫌弃后端断点,影响到他开发.....idea早已提供这个功能,做下记录选中你需要调试的控制器,其他控制器不会受到影响,亲测可用...

2021-08-30 20:19:25 2443

原创 java ReentrantLock 怎么缩写锁的粒度

1、背景目前是有很多个查询条件,比如版本(v3.90.1,v3.90.1,v3.90.2等),系统(安卓,ios),应用id等,希望按某个查询条件来锁定查询资源,可以使用ReentrantLock 来缩小锁的粒度。2、使用2.1 核心代码 private Map<String, LocalCacheEntry> map = new ConcurrentHashMap<>(); /** * 使用java本地锁查询数据 */

2021-07-25 16:07:33 488

原创 java使用redis分布式锁

1、背景目前在查询时并发量较高,qps 6000左右,数据查出来后缓存在redis中,有效期5分钟,为防止redis失效的瞬间有太多到达数据库,给数据库造成冲击,在查询时使用redis分布式锁,保证一种查询条件只有一个查询能请求到数据库。2、使用2.1引入jedis <!--jedis--> <dependency> <groupId>redis.clients</groupId> <artifactId>jed

2021-07-25 11:18:11 706

原创 springboot读取resource下面的文本文件

@RequestMapping("/test") public String test() { //直接将目标文件读成inputstream this指当前类的实例对象 InputStream ins = this.getClass().getClassLoader().getResourceAsStream("userInfo.txt"); BufferedReader reader = new BufferedReader(new InputStreamReader(ins)); ..

2021-04-08 17:09:32 520

原创 提取文本内容的url内容

import java.util.regex.Pattern;import java.util.regex.Matcher;/** * Commonly used regular expression patterns. */public class Patterns { /** * Regular expression to match all IANA top-level domains. * List accurate as of 2011/07..

2021-04-08 17:07:26 2011

原创 Linux netstat命令详解

简介Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。输出信息含义执行netstat后,其输出结果为Active Internet connections (w/o servers)Proto Recv-Q Send-Q Local Address Foreign Address Statetcp 0 2 210.34.6.

2021-02-17 20:07:26 504

原创 kafka学习地址

https://objcoding.com/2020/09/19/kafka-standalone-consumer/http://matt33.com/tags/kafka/

2020-12-22 20:09:44 361

原创 CPT CPC CPA CPM 广告投放了解

网络广告发展到今天,经历了从最初的短信联盟到现在的广告联盟,广告形式也有了很大的变化,出现了CPC、CPM、CPA、CPS、CPT等众多广告形式。今天就为大家科普这些广告术语,一次搞懂!1CPM:按展示付费CPM—英文全称Cost Per Mille 或者是Cost Per ThousandImpression, 也称千人印象成本。CPM是一种展示付费广告,只要展示了广告主的广告内容,广告主就为此付费。这种广告的效果不是很好,但是却能给有一定流量的网站、博客带来稳定的收入。传统媒介多采用这种计价方式

2020-12-10 16:13:52 1181

原创 1、生成一对app密钥

public class AppUtils { //生成 app_secret 密钥 private final static String[] chars = new String[]{"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z",.

2020-11-05 19:31:45 960

转载 mac开启sshserver

mac笔记本默认不开始ssh server,不过可以ssh远程的其他电脑。如何开启ssh server呢?查看ssh serverps -e |grep ssh34643 ?? 0:00.02 /usr/bin/ssh-agent -l34640 ttys000 0:00.17 ssh [email protected] ttys001 0:00.10 ssh [email protected] ttys002 0:00

2020-10-20 19:32:27 1082

转载 Netty实战一之异步和事件驱动

Netty是一款异步的事件驱动的网络应用程序框架,支持快速地开发可维护的高性能的面向协议的服务器和客户端。使用Netty你可以并不是很需要网络编程、多线程处理、并发等专业Java知识的积蓄。Netty的架构方法和设计原则是:每个小点都和它的技术性内容一样重要,穷其精妙,因此我们也借此可以了解更多方面: 关注点分离——业务和网络逻辑解耦 模块化和可复用性 可测试性作为首要的要求1、Java网络编程早期的Java API只支持由本地系统套接字库(需要了解复杂的C语言套接字库)提供的所谓的阻塞函数

2020-08-24 20:59:07 292

转载 记一次有惊无险的 JVM 优化经历

背景生产环境有二台阿里云服务器,均为同一时期购买的,CPU、内存、硬盘等配置相同。具体配置如下: 节点 CPU 内存 硬盘 其它 A 2CPU 4G 普通云盘 Centos6.4 64位+JDK1.8.0_121...

2020-07-28 20:58:19 219

转载 记一次线上Kafka消息堆积踩坑总结

年后上线的系统,与其他业务系统的通信方式采用了第三代消息系统中间件Kafka。由于是第一次使用,踩了很多坑,通过这篇博客和大家分享一下,也算是做个总结,以便以后温故而知新。一、线上问题 系统平稳运行两个多月,基本上没有问题,知道最近几天,突然出现Kafka手动提交失败,堆栈信息如下:通过堆栈信息可以看出,有两个重要参数: session.timeout 和 max.poll.recordssession.timeout.ms :在使用Kafka的团队管理设施时,用于检测消费者失...

2020-07-28 19:26:20 395

转载 Kafka分区与消费者的关系

1. 前言我们知道,生产者发送消息到主题,消费者订阅主题(以消费者组的名义订阅),而主题下是分区,消息是存储在分区中的,所以事实上生产者发送消息到分区,消费者则从分区读取消息,那么,这里问题来了,生产者将消息投递到哪个分区?消费者组中的消费者实例之间是怎么分配分区的呢?接下来,就围绕着这两个问题一探究竟。2. 主题的分区数设置在server.properties配置文件中可以指定一个全局的分区数设置,这是对每个主题下的分区数的默认设置,默认是1。当然每个主题也可以自己设置分区数量,如..

2020-07-24 21:21:14 364

原创 IDEA 远程调试

IDEA 远程调试,像运行本地代码一样调试远程主机上的程序,以排查远程程序的BUG或代码执行流程。1 概述原理:本机和远程主机的两个 VM 之间使用 Debug 协议通过 Socket 通信,传递调试指令和调试信息。被调试程序的远程虚拟机:作为 Debug 服务端,监听 Debug 调试指令。jdwp是Java Debug Wire Protocol的缩写。调试程序的本地虚拟机:IDEA 中配置的 Remote Server,指定 Debug 服务器的Host:Port,以供 Debug 客.

2020-07-20 17:12:59 477

原创 kafka中处理超大消息的一些考虑

Kafka设计的初衷是迅速处理短小的消息,一般10K大小的消息吞吐性能最好(可参见LinkedIn的kafka性能测试)。但有时候,我们需要处理更大的消息,比如XML文档或JSON内容,一个消息差不多有10-100M,这种情况下,Kakfa应该如何处理?针对这个问题,有以下几个建议: 最好的方法是不直接传送这些大的数据。如果有共享存储,如NAS, HDFS, S3等,可以把这些大的文件存放到共享存储,然后使用Kafka来传送文件的位置信息。 第二个方法是,将大的消息数据切片或切块,在生产端将数..

2020-07-19 10:46:58 595

转载 Intellij关闭双击shift打开全局搜索

方法一Intellij关闭双击shift打开全局搜索在使用Intellij idea的时候有个很强大的功能就是全局搜索 SearchEverywhere,双击shift就能唤出。同时shift键是我们切换输入法经常用到的,在中英文切换的时候总是误操作把全局搜索框召唤出来。1:修改配置文件的方式关闭全局搜索2:定位配置文件所在位置idea安装目录/lib/resources.jar3:利用解压工具提取 PlatformActions.xml4:定位文件中SearchEverywhere

2020-07-17 17:30:36 317

转载 iTerm2 + Oh My Zsh 打造舒适终端体验

写在前面最终效果图:本文严重抄袭自:https://www.jianshu.com/p/7de00c73a2bb因排版和原文中的一些bug,参照搜索引擎和原文有了本篇文章。因为powerline以及homebrew均需要安装command line tool,网络条件优越的同学在执行本文下面内容之前,可以先安装XCode并打开运行一次(会初始化安装components),省去以后在iterm2中的等待时间。另外,git也是必要的,各位可以自行下载安装,除了网络没有任何坑:h.

2020-07-17 16:14:59 332

转载 DFA敏感词过滤算法

运用DFA算法加密。首先我先对敏感词库初始化,若我的敏感词库为冰毒白粉大麻大坏蛋初始化之后得到的是下面这样。:{冰={毒={isEnd=1}, isEnd=0}, 白={粉={isEnd=1}, isEnd=0}, 大={麻={isEnd=1}, isEnd=0, 坏={蛋={isEnd=1}, isEnd=0}}}。ok,我把初始化之后的数据用A来表示。假设待检测的文字为:张三是个大坏蛋,他竟然吸食白粉和冰毒。后面检测文字中是否有敏感词的时候,先把要检测的文字迭代循环,并转换

2020-06-30 11:48:13 640

转载 MySQL1000万条数据分页查询优化

这种问题的解决就是通过构建一个新的小表,以小表来join驱动大表;或者构建一个子查询语句,用exist,in做查询;或者注意索引下推和索引覆盖的使用。概述今天一个朋友问我一个问题,说MySQL很多数据查询怎么优化。我就直接说了个分页查询就行了啊,查询字段加索引。然而结果并没有我想象得那么简单,他分页查询直接把服务查崩了。原来他们数据量已经有好几百万了。你可能会问不就几百万数据吗,分页只查询10条怎么可能查询会很慢。后面我会模拟1000万条数据分页查询。准备工作1.新建一个测试库,我这里就叫

2020-06-30 10:35:29 2163

转载 datetime和timestamp的区别

timestamp存储的时间与时区有关,变换时区数据会受影响;datetime与时间无关;timestamp存储时间范围小,1970-01-01 00:00:00到2038-01-19 03:14:07;datetime没有这个限制。所以工作中要尽量用datetime。时间日期数据类型总概况MySQL中有多种表示时间日期的数据类型,主要有YEAR、TIME、DATE、DATETIME、TIMESTAMP等。每一种数据类型都有存储的时间日期格式、以及取值范围,因此在使用时间日期数据类型的时候需

2020-06-30 08:53:28 18847 1

转载 InnoDB MVCC 机制

本文详细的介绍了什么是MVCC?为什么要有MVCC?以及MVCC的内部实现原理:包括Undo Log的版本链是如何组织的,RR、RC两个级别下一致性读是如何实现的等。通过案例、插图,以最通俗易懂的方式,让你彻底掌握MVCC的来龙去脉。1 什么是MVCCMVCC (Multiversion Concurrency Control)中文全称叫多版本并发控制,是现代数据库(包括MySQL、Oracle、PostgreSQL等)引擎实现中常用的处理读写冲突的手段,目的在于提高数据库高并发场景下的...

2020-06-29 13:35:18 330 1

转载 RocketMQ 持久化

RocketMQ 采用文件系统的方式来存储消息,消息的主要存储文件包括 CommitLog 文件、ConsumeQueue 文件、IndexFile 文件。 CommitLog 是消息存储的物理文件,所有消息主题的消息都存储在 CommitLog 文件中,每个 Broker 上的 CommitLog 被当前机器上的所有 ConsumeQueue 共享。CommitLog 中的文件默认大小为 1G,可以动态配置; 当一个文件写满以后,会生成一个新的 CommitLog 文件。所有的 Topic 数据

2020-06-29 11:46:01 3035 1

转载 Redis线程模型

Redis基于Reactor模式开发了自己的网络事件处理器。被称为文件事件处理器,由于这个处理器是单线程的所以决定了redis是单线程的。  Redis线程模型的组成: 多个socket   IO多路复用程序 scocket队列 文件事件分配器 事件处理器(连接应答处理器,命令请求处理器,命令回复处理器)    多个 socket 可能会并发产生不同的操作,每个操作对应不同的文件事件,但是 IO 多路复用程序会监听多个 socket,会将 socket.

2020-06-29 11:19:14 122

转载 Java内存模型与Volatile,Happen-Before原则等

Java的内存模型Java内存模型(JMM)是一个抽象的模型。决定了线程主要定义了线程和内存间的抽象关系:主内存存放的是线程共享变量,每个线程有自己的工作内存,存放变量的副本,只能对副本进行读写,副本的变量再刷新到主内存中。具体体现为多核CPU,每核有一个高速缓存,每个核的线程对高速缓存读写,并且有共同的主存。主内存与工作线程交互的操作有以下八种:lock(锁定):作用于主内存的变量,它把一个变量标识为一条线程独占的状态unlock(解锁):作用于主内存的变量,释放锁定状态的变量read(读

2020-06-29 11:15:33 204

转载 深入理解CMS GC

深入理解CMS GC背景 网上关于cms gc介绍和调优的文章比较多,但大多没有经过验证。因为cms目前在Java9之前还是相对用的较多(G1也需要持续去调研),所以这里把CMS的一些重要知识和调优经验总结一下 相关jvm源代码版本为/openjdk-8-src-b132-03_mar_2014/openjdk/hotspot/src/share/vm 除了OpenJDK的源代码和R大以外,什么都不要轻易相信 CMS的一些重要知识点 使用cms gc必备的三个参数

2020-06-28 18:03:50 697 1

原创 JVM调优

1.Java内存分析工具MAT(Memory Analyzer Tool)安装使用实例2.jmap 命令3.JVM系列 实用命令(jmap、jstat、jstack)4.jvm 性能调优工具之 jstat

2020-06-27 21:34:18 131

原创 rocketmq发送事务消息

现在有一个业务场景为了保证数据一致性,可以使用事务消息。教师节学生给老师送花活动,先校验学生和老师是否是师生关系,再判断学生金币是否够,够则扣减学生金币,同时给老师增加相同的花数,对老师收到的鲜花进行全国排名,排名前十的可以获得平台赠送的实体书籍作为奖励。为了保证数据的一致性和高并发,扣减金币之后发送事务消息。核心代码如下:import com.aliyun.openservices.shade.com.alibaba.rocketmq.common.message.Message;impo

2020-06-27 18:42:05 556

转载 分布式系统的面试题11

1、面试题zk都有哪些使用场景?2、面试官心里分析zk,zookeeper,你们现在在聊的面试topic,是分布式系统,他其实已经跟你聊完了dubbo以及相关的一些问题,确认,你现在分布式服务框架,rpc框架,基本都有一些认知。可能开始要跟你聊分布式相关的其他问题了。分布式锁这个东西,很常用的,你做java系统开发,分布式系统,可能会有一些场景会用到。最常用的分布式锁就是zookeeper来做分布式锁。其实说实话,问这个问题,一般就是看看你是否了解zk,因为...

2020-06-27 13:42:52 255

转载 分库分表的面试题5

1、面试题你们有没有做MySQL读写分离?如何实现mysql的读写分离?MySQL主从复制原理的是啥?如何解决mysql主从同步的延时问题?做了读写分离。配置主库和从库,主库下面挂从库,主库数据发生变更时写到mysql的binlog日志,主库与从库建立连接,同步数据到从库的relay log中继日志,从库起一个sql线程解析relay log日志并执行。高并发下会导致读写延迟,比如主库每秒写并发2000,延迟时间较长,可考虑分库;打开并行复制;如果必须要写数据之后立马读,可以配置读.

2020-06-27 11:24:22 437

转载 为什么推荐InnoDB引擎使用自增主键

结论:B树叶子结点和非叶子节点均存储了子节点的指针和数据域,导致非叶子节点容纳的指针减少,故树高比较高;B+树,叶子节点存储数据域,非叶子节点存储子节点指针,所以每页可以容纳更多指针,树高更低,磁盘IO更少。MyISAM的叶子节点存储的是数据所在的地址,还需要根据这个地址查询真正的数据,非聚簇索引结构,数据和索引是分开的;INNODB的叶子节点存储的是主键key和行记录数据,聚簇索引,数据和索引是在一起的。Innodb使用自增或者有升高趋势的(比如雪花算法生成的id)目的是自增的主键是在插入

2020-06-26 23:04:35 614

原创 一次线程池未关闭导致的内存泄露问题

背景,运营反馈接口查询越用越卡。排查方案,跳板机登录到服务器,top命令查看,内存占用过高,使用jmap分析:jmap -histo:live 858524Thread类型的对象占用的内存最多。使用jstack命令分析:jstack -l 858524可以看到线程池中有很多线程处于WAITING状态,遗憾的是没有对线程池进行命名,不确定是在哪创建的线程池。在MAT中分析(对本次没实际意义,只单纯使用)使用jmap -dump:format=b,file=f2

2020-06-26 22:19:34 2193

转载 分库分表的面试题4

1、面试题分库分表之后,id主键如何处理?2、面试官心里分析其实这是分库分表之后你必然要面对的一个问题,就是id咋生成?因为要是分成多个表之后,每个表都是从1开始累加,那肯定不对啊,需要一个全局唯一的id来支持。所以这都是你实际生产环境中必须考虑的问题。3、面试题剖析(1)数据库自增id这个就是说你的系统里每次得到一个id,都是往一个库的一个表里插入一条没什么业务含义的数据,然后获取一个数据库自增的一个id。拿到这个id之后再往对应的分库分表...

2020-06-26 16:19:41 177

转载 分库分表的面试题3

1、面试题如何设计可以动态扩容缩容的分库分表方案?2、面试官心里分析(1)选择一个数据库中间件,调研、学习、测试(2)设计你的分库分表的一个方案,你要分成多少个库,每个库分成多少个表,3个库每个库4个表(3)基于选择好的数据库中间件,以及在测试环境建立好的分库分表的环境,然后测试一下能否正常进行分库分表的读写(4)完成单库单表到分库分表的迁移,双写方案(5)线上系统开始基于分库分表对外提供服务(6)扩容了,扩容成6个库,每个库需要12个表,你怎么来增加更多库...

2020-06-26 16:08:41 260

转载 分库分表的面试题2

1、面试题现在有一个未分库分表的系统,未来要分库分表,如何设计才可以让系统从未分库分表动态切换到分库分表上?可以采用停服清洗数据和双写。我们采用的双写,用户新增修改操作往两份数据库上都写,老用户走老接口从老数据库中查询,新用户走新接口从新数据库查,注意需要核对新老版本数据是否全一样(可以写程序跑),一般新版本发布几天后,90%用户会更新到最新版,慢慢基本都走新接口了,待某次版本强升之后,老版本数据可以去掉了。2、面试官心里分析你看看,你现在已经明白为啥要分库分表了,你也知道常用的..

2020-06-26 15:55:32 240

转载 分库分表的面试题1

1、面试题为什么要分库分表(设计高并发系统的时候,数据库层面该如何设计)?用过哪些分库分表中间件?不同的分库分表中间件都有什么优点和缺点?你们具体是如何对数据库如何进行垂直拆分或水平拆分的?分库的目的是为了提高并发度,简单来说就是TPS,单个数据库每秒并发2000都非常高了,一般保持在1000左右;分表示为了提高查询速度,简单来说就是QPS,单表数据量大查询慢,可以拆分成多个表;sharding-jdbc和mycat以及自研组件。sharding-jdbc支持分库分表,读写分离,柔性事.

2020-06-26 15:28:07 662

转载 【mysql】关于InnoDB存储引擎 text blob 大字段的存储和优化

最近在数据库优化的时候,看到一些表在设计上使用了text或者blob的字段,单表的存储空间已经达到了近100G,这种情况再去改变和优化就非常难了一、简介为了清楚大字段对性能的影响,我们必须要知道innodb存储引擎的处理方式:1、一些知识点1.1 在InnoDB 1.0.x版本之前,InnoDB 存储引擎提供了Compact和Redundant(Redundant 格式是为兼容之前版本而保留的)两种格式来存放行记录数据,compact 和 redundant 合称为Antelope...

2020-06-24 17:33:04 452

转载 mysql的text与off-page

经常遇到这样的问题:表中的大字段列(text)怎么处理?是应该独立成一张表,还是尽量变成varchar,对性能到底有什么影响。先来看一些知识点1.innodb_page_size在innodb引擎下(5.6),有一个参数innodb_page_size,默认值是16k。(PS: 这个参数在数据库初始化的时候就要放在my.cnf中,如果已经创建了表再修改此参数,mysql就会启动不起来)show VARIABLES like '%innodb_page_size%'--------.

2020-06-24 16:11:32 654

极客时间 趣谈网络协议(1-41讲)PDF资料

小说一样的网络协议入门课 网络协议是每个程序员入门的必修课,但是彻底掌握并应用网络协议知识却并非易事,比如常见的 TCP/IP、HTTP。网络协议的内容很基础,但基础知识不等于简单知识,更不等于不重要的知识。在网络协议的学习过程中,如果你也有过这样的感受: 协议知识琐碎又枯燥,一看书就头大; 协议内容很基础,但面试一问就“崩盘”; 工作遇到才去查书,现学却没法现卖; 协议知识太底层,不知道如何在热门领域应用。 那么,“趣谈网络协议”专栏就是为你量身定制的。

2018-11-15

shiro认证授权

shiro入门认证和授权的相关代码,博客地址:http://blog.csdn.net/u014532775/article/details/76620643

2017-08-03

空空如也

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

TA关注的人

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