自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 aerospike客户端EOFException排查

这个参数表示客户端与服务器之间的连接最长空闲时间,超过了这个时间,链接在服务端会被关闭,注意,这个是服务端的配置。而客户端的链接默认空闲时间配置是55s,也就是都采用默认值的情况下,意味着永远不会获取空闲连接(客户端idle time < 服务端idle time即可)出现这个问题的原因在于我们客户端配置的socket idle时间是500,客户端拿了一个在服务端过期看来过期的链接,导致I/O异常。asp服务端采用的是3.23版本,客户端是aerospike-client 4.x版本。

2023-07-02 18:05:27 214

原创 aerospike客户端policy设置官网文档翻译

如果想要更低的写延迟,并且应用可以容忍更低的写一致性级别(可能出现“脏读”,即在提交副本之前,如果从非主副本读取了相同的记录,则返回旧的值),则将提交级别策略设置为CommitLevel.COMMIT_MASTER。默认情况下,所有的客户端读操作都会首先被定向到主副本(Replica.SEQUENCE),然而,用户也可能希望将读操作分散到所有可用的副本上(例如,读取hotkey对性能的影响可以按照复制因子的顺序递减)。)时的默认行为是,在从写相关的API返回成功之前,确认所有的副本都成功写入。

2023-05-02 10:49:45 1815

原创 应用启动时aerospike客户端查询rt高原因

可以看到,默认的每个节点(说的asp节点)最小连接数是1,连接最大空闲时间是55s,这说明应用刚启动时,这时候流量稍微大一点过来,就会有超时的情况,耗在连接创建时间了;在应用刚起步时,发到预发测试或者生产小部分流量进来时,发现aerospike的rt特别高,在流量稍微大点时,rt恢复正常。流量低的情况更致命,每次流量来的间隔可能都超过maxSocketIdle了,这就导致每次都要创建链接。只能退而选择调大最大空闲时间,至于流量大的情况,只能做好应用优雅上线了,坑爹的asp客户端代码…

2023-04-30 02:04:51 467

原创 udf在aerospike服务端认定为“写”

那这意味着,一个脚本内容为“读”的udf,要在数据的主副本执行,然后同步到所有的副本,才算执行完成,那不就有多余的耗时操作了吗,毕竟我脚本的内容是一个读操作,我只要有一个节点执行就行了,居然还要等所有副本执行,就因为服务端默认认定所有的udf都是“写”吗?● COMMIT_ALL (default) — 返回前提交所有副本。如果master执行后发现未修改任何一个字节 则不会向replica发起后续请求。

2023-04-30 02:00:41 115

原创 Lambda的Reduce

Stream API提供了丰富的intermediate(filter、sorted、distinct、map…)、reduction 和terminal函数,这些函数同样支持并行执行。其中reduction可对一个元素流进行计算、合并来得到一个最终结果初始值为10,subtotal为每一次计算后的子结果// 31} });假设我们有一个User类,User有name和age,我们想累加计算所有的User实体算出总年龄} });

2023-04-26 20:57:58 1239

原创 线程捕捉异常

在Java中,线程中的异常是不能抛出到调用该线程的外部方法中捕获的。因为线程是独立执行的代码片断,线程的问题应该由线程自己来解决,而不要委托到外部。”基于这样的设计理念,在Java中,线程方法的异常都应该在线程代码边界之内(run方法内)进行try catch并处理掉,换句话说,我们不能捕获从线程中逃逸的异常。 public static void main(String[] args){ try { new Thread( () -> {

2021-02-06 22:30:19 1155 6

原创 InnoDB的doublewrite

doublewrite(两次写)给InnoDB存储引擎带来的是数据页的可靠性。为什么不用重做日志来恢复呢?重做日志记录的是页的物理操作,比如偏移量800写’aaa’记录,如果这个页已经发生了损坏,那么对其做重做是没有意义的doublewrite就是当写入失效的时候通过页的副本来还原该页,再进行重做:A. 在覆盖磁盘上的数据前,先将Page的内容写入到磁盘上的其他地方(InnoDB存储引擎中的doublewrite buffer,这里的buffer不是内存空间,是持久存储上的空间).B. 然

2021-01-13 16:01:38 548

原创 InnoDB的意向锁

锁类型InnoDB存储引擎实现了如下两种标准的行级锁:共享锁(S Lock),允许事务读一行数据排他锁(X Lock),允许事务删除或更新一行数据举例来说,在对记录r加X锁之前,已经有事务对表1进行了S表锁,那么表1上已存在S表锁,之后事务需要对记录r在表1上加上IX,由于不兼容,所以该事务需要等待表锁的释放通过一个例子来透彻理解共享锁的作用:事务A锁住了表中的一行,让这一行只能读,不能写。之后,事务B申请整个表的写锁。如果事务B申请成功,那么理论上它就能修改表中的任意

2021-01-10 21:16:43 254

原创 Mysql的各种log(binlog、redo log、undo log)

MySQL常见的三种log:binlogredologundologbinlog什么是binlogbinlog是在mysql的服务层产生的binlog记录了数据库表结构和表数据变更,它不会记录select(因为这没有对表没有进行变更)可以简单理解为:存储着每条变更的SQL语句(可能不止SQL,还有XID「事务Id」等等)用途主要有两个作用:复制和恢复数据MySQL使用一主多从结构时,从服务器需要与主服务器的数据保持一致,通过binlog来实现的可以通过binlog对数据进行恢

2021-01-07 16:17:53 4135 5

原创 JAVA多态(并没有函数重载!)

Java多态多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作,如图所示:优点多态的优点消除类型之间的耦合关系可替换性可扩充性接口性灵活性简化性多态存在的三个必要条件继承重写父类引用指向子类对象:Parent p = new Child();多态的实现方式重写接口抽象类和抽象方法一定要记住啊没有重载!!!!...

2020-11-24 15:35:06 206

原创 DFS+剪枝实现输入一个数n,输出由数字1~n组成n的序列

public static void main(String[] args){ int n = 5; // 最多可以由n个数组成 最少可以由一个数组成 for (int i = n; i > 0 ; i--) { myDfsII(1,n,i,new LinkedList<Integer>()); } } /* 1 1 1 1 1 ...

2020-10-17 00:13:36 333

原创 360 || 2021校园招聘的一道笔试题思路分享

题目:给定一个1到N的排列P1到PN(N为偶数),初始时Pi=i(1≤i≤N),现在要对排列进行M次操作,每次操作为以下两种中一种:①将排列的第1个数移到末尾;②交换排列的第1个数与第2个数、第3个数与第4个数、…、第N-1个数与第N个数。求经过这M次操作后得到的排列。输入描述第一行包含两个整数N和M,2≤N,M≤10^5。第二行包含M个空格隔开的整数t1到tM,1≤ti≤2。若ti=1,则表示第i次操作为操作①;若ti=2,则表示第i次操作为操作②。输出描述输出N个空格隔开的整数,即经过

2020-08-24 14:58:24 1010

原创 怎么给字符串字段加索引?&&阅读笔记

现在有一个支持邮箱登录的系统,定义:mysql> create table SUser(ID bigint unsigned primary key,email varchar(64), ... )engine=innodb; 业务会出现这样的语句:mysql> select f1, f2 from SUser where email='xxx';我们不想要全表扫描,所以会在email上加一个索引。可以创建包含整个字段值的索引:mysql> alter table

2020-07-19 23:22:54 294

原创 行锁功过:怎么减少行锁对性能的影响?&&阅读笔记

MyISAM引擎不支持行锁,MySQL的行锁是由具体引擎所实现。InnoDB支持行锁,并发控制比MyISAM更好两阶段锁事务B的update语句执行时会是什么现象呢?假设字段id是表t的主键。事务B的update语句会被阻塞,直到事务A执行commit之后,事务B才能继续执行。在InnoDB事务中,行锁是在需要的时候才加上的,但并不是不需要了就立刻释放,而是要等到事务结束时才释放。这个就是两阶段锁协议因此,如果事务中需要锁多行,尽可能把最可能造成锁冲突、最可能影响并发度的锁尽量往后放。eg:

2020-06-28 15:22:12 257

原创 全局锁和表锁 :给表加个字段怎么有这么多阻碍?&&阅读笔记

数据库锁设计的初衷是处理并发问题。根据加锁的范围,MySQL里面的锁大致可以分成全局锁、表级锁和行锁全局锁对整个数据库实例加锁,命令是Flush tables with read lock (FTWRL)只想让整个库处于只读状态时,可以使用这个命令,之后其他线程的以下语句会被阻塞:数据更新语句(数据的增删改)、数据定义语句(包括建表、修改表结构等)和更新类事务的提交语句。典型的使用场景:做全库逻辑备份但是让整个库只读,非常危险:如果在主库上备份,业务停摆如果在从库备份,备份期间从库 不能执

2020-06-28 11:22:25 298

原创 阿里巴巴JAVA开发规范&&个人需要注意的点

POJO 类中布尔类型变量都不要加 is 前缀,否则部分框架解析会引起序列化错误说明:在本文 MySQL 规约中的建表约定第一条,表达是与否的值采用 is_xxx 的命名方式,所以,需要在<resultMap>设置从 is_xxx 到 xxx 的映射关系。反例:定义为基本数据类型 Boolean isDeleted 的属性,它的方法也是 isDeleted(),RPC 框架在反向解析的时候,“误以为”对应的属性名称是 deleted,导致属性获取不到,进而抛出异常。如果模块、接口、类、方法

2020-06-25 17:16:55 6326

原创 什么?ArrayList我用增强for循环删除居然没报错?

笔者在阅读阿里巴巴Java开发手册时看到这样一段话:不要在 foreach 循环里进行元素的 remove/add 操作。remove 元素请使用Iterator 方式,如果并发操作,需要对 Iterator 对象加锁正例:List<String> list = new ArrayList<>();list.add("1");list.add("2");Iterator<String> iterator = list.iterator();while (it

2020-06-24 17:29:45 2128 7

原创 深入浅出索引&&阅读笔记

索引的出现其实就是为了提高数据查询的效率,就像书的目录一样。对于数据库的表而言,索引其实就是它的“目录”。索引的常见模型哈希表有序数组搜索树哈希表适用于只有等值查询的场景。有序数组在等值查询和范围查询场景中的性能非常优秀,单看查询确实爽,但是需要更新的时候就麻烦了,数组你懂的,插入删除都是大问题。所以,有序数组索引只适用于静态存储引擎,比如你要保存的是2017年某个城市的所有人口信息,这类不会再修改的数据。...

2020-06-23 21:30:40 350

原创 事务隔离:为什么你改了我还看不到?&&阅读笔记

事务就是要保证一组数据库操作,要么全部成功,要么全部失败。事务支持是在引擎层实现的,Mysql原生的MyISAM引擎不支持事务,InnoDB支持事务,这就是为何MyISAM会被InnoDB取代。事务的四个特性:ACID(Atomicity、Consistency、Isolation、Durability即原子性、一致性、隔离性、持久性)隔离性与隔离级别多个事务同时执行,有可能发生脏读(dirty read)、不可重复读(non-repeatable read)、幻读(phantom read),于是隔

2020-06-23 18:22:41 1813

原创 粗心导致redis反序列化失败

今天,在使用spring-session做一个reduis支持下的分布式session管理,在登录的时候存储了下用户的信息。突然想到,阿里巴巴的JAVA开发规范有明确要求每张表要有create_time字段和update_time字段,于是回去冲下修改了下数据库,然后在我又一次测试接口时,redis居然报错反序列失败了,我以为是我哪里出了问题,一步步排查,发现即使我什么都没做,只是发起一个请求,就会报redis反序列化失败。咦,那会不会是因为我修改了字段的原因呢?清空了一下redis的数据,果然如此。

2020-06-13 16:44:30 852

原创 日志系统:一条SQL更新语句是如何执行的?&&阅读笔记

阅读完文章后,自己的一些小记录。原文前言一条更新语句的执行流程与查询流程类似 一条SQL查询语句是如何执行的与查询流程不一样的是,更新流程还涉及两个重要的日志模块:redo log(重做日志)和binlog(归档日志)redo log记账例子:酒店掌柜有一个粉板,专门用来记录客人的赊账记录。如果赊账的人不多,那么他可以把顾客名和账目写在板上。但如果赊账的人多了,粉板总会有记不下的时候,这个时候掌柜一定还有一个专门记录赊账的账本。如果有人要赊账或者还账的话,掌柜一般有两种做法:一种做法.

2020-06-10 16:29:49 2241

原创 一条SQL查询语句是如何执行的?&&阅读笔记

阅读完文章后,自己的一些小记录。原文Mysql基本架构图MySQL大体上可分为Server层和存储引擎层Server层包括:连接器查询缓存分析器优化器执行器其他内置函数如日期、时间、数学和加密函数等所有跨存储引擎的功能都在这一层实现,如存储过程、触发器、视图等存储引擎层负责数据的存储和提取,插件式架构模式,支持InnoDB、MyISAM、Memory等多个存储引擎。默认是MyISAM,从MySQL 5.5.5版本InnoDB开始成为了默认存储引擎。连接器连接到数据库的第一.

2020-06-10 15:34:41 737

原创 深入了解JVM&&阅读笔记第二章

运行时数据区域程序计数器程序计数器是一个较小的空间,可看做是当前线程所执行的字节码的行号指示器,是程序控制流的指示器,通过改变这个计数器的值来选取下一条需要执行的字节码指令,从而实现分支、循环、跳转、异常处理、线程恢复等工,因此线程都是独立的,不同线程互不影响,独立存储。程序计数器只记录线程执行的JAVA方法,为正在执行的虚拟机字节码指令的地址是唯一一个不会出现任何OutOfMemoryError的区域JAVA虚拟机栈Java虚拟机栈为线程私有,生命周期同线程相同,描述的是Java方法执行的线

2020-05-29 17:20:17 480

转载 HTTP报文详详详详详详详详解

报文流(The Flow of Messages)HTTP 报文是在 HTTP 应用程序之间发送的数据块。这些数据块以一些文本形式的 元信息(meta-information)开头,这些信息描述了报文的内容及含义,后面跟着可选的数据部分。HTTP 使用术语 流入(inbound) 和 流出(outbound) 来描述事务处理(transaction) 的方向。报文流入源端服务器,工作完成之后,会流回用户的 Agent 代理中。HTTP 报文会像河水一样流动。不管是请求报文还是响应报文,所有报文都会向

2020-05-28 23:40:11 849

原创 浅谈Session、Cookie

为什么需要Session、CookieHttp是一个无状态协议,所以我们需要记录用户的状态,好让服务端识别我们是哪个用户Session由于HTTP协议是无状态的协议,所以服务端需要记录用户的状态,需要为用户创建Session来识别用户,Session保存在服务端的内存(或者数据库、文件),有唯一标识SessionId,Session的运行依赖于SessionId服务端如何识别特定的用户呢?SessionId存放在Cookie,每次HTTP请求客户端都会 发送相应的Cookie信息到服务端,通过Coo

2020-05-28 23:10:35 415

转载 RBAC新解:基于资源的权限管理(Resource-Based Access Control)

引用自 链接什么是角色当说到程序的权限管理时,人们往往想到角色这一概念。角色是代表一系列可执行的操作或责任的实体,用于限定你在软件系统中能做什么、不能做什么。用户帐号往往与角色相关联,因此,一个用户在软件系统中能做什么取决于与之关联的各个角色。例如,一个用户以关联了”项目管理员”角色的帐号登录系统,那这个用户就可以做项目管理员能做的所有事情――如列出项目中的应用、管理项目组成员、产生项目...

2020-05-05 21:39:09 443

转载 深入浅出HTTPS的对称加密和非对称加密(面试会问)

作者:全网iOS面试题总结 链接:https://www.jianshu.com/p/ac3a80ca59c3 来源:简书著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。一、HTTPS和HTTP的区别HTTPS协议 = HTTP协议 + SSL/TLS协议SSL的全称是Secure Sockets Layer,即安全套接层协议,是为网络通信提供安全及数据完...

2020-04-29 22:33:26 980

转载 深入浅出索引(下)

转载自 极客在开始这篇文章之前,我们先来看一下这个问题:在下面这个表T中,如果我执行 select * from T where k between 3 and 5,需要执行几次树的搜索操作,会扫描多少行?下面是这个表的初始化语句。mysql> create table T (ID int primary key,k int NOT NULL DEFAULT 0, s varc...

2020-04-28 15:59:02 392

转载 深入浅出索引(上)

转载自 极客提到数据库索引,我想你并不陌生,在日常工作中会经常接触到。比如某一个SQL查询比较慢,分析完原因之后,你可能就会说“给某个字段加个索引吧”之类的解决方案。但到底什么是索引,索引又是如何工作的呢?今天就让我们一起来聊聊这个话题吧。数据库索引的内容比较多,我分成了上下两篇文章。索引是数据库系统里面最重要的概念之一,所以我希望你能够耐心看完。在后面的实战文章中,我也会经常引用这两篇文章中...

2020-04-28 15:54:28 432 1

原创 当面试官问你mysql优化时..

用like模糊查询不要用 ‘%’ 开头数据库引擎会放弃索引进行全表扫描,如果不是必要,尽量别这么干select id from user where name like '%codeMan%' 不要动不动就select *如果你要的只是用户名,为啥你要用*呢,不要返回用不到的任何字段,万一用户的属性有几十行,你只是想要个用户名,何必呢select * from user // ...

2020-04-28 15:47:33 2184 1

原创 Spring AOP 不再怕了!

AOP是Sping里的一大核心技术,也是面试中经常问到的问题文章参考自百度什么是AOP?AOP(Aspect-Oriented Programming:面向切面编程)能够将那些与业务的逻辑无关 ,但是需要被业务模块所使用到的代码逻辑或责任 (如日志管理、权限控制、事务管理)封装起来,从而减少代码的冗余量,降低模块间的耦合度,有利于未来的可扩展性和可维护性简单来说,AOP就是可以让你少写...

2020-04-28 11:17:58 415

转载 Spring IoC 通俗易懂!(转载)

作者:Mingqi 链接:https://www.zhihu.com/question/23277575/answer/169698662来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。要了解控制反转( Inversion of Control ), 我觉得有必要先了解软件设计的一个重要思想:依赖倒置原则(Dependency Inversion Princ...

2020-04-27 17:14:36 360

原创 小Q最近遇到了一个难题:把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,且不能申请额外的空间。 你能帮帮小Q吗?

这是一道2017腾讯暑假实习生的编程题这道题的简单版本剑指offer 21剑指offer的第21道题,并没有要求相对顺序保持不变,所以解法很简单代码实现 public int[] exchange(int[] nums) { int i = 0; int j = nums.length-1; int temp; ...

2020-04-22 17:53:55 1474

原创 JAVA leetCode 113 &&剑指offer34 二叉树中和为某一值的路径解题思路

题目输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 ...

2020-04-19 20:32:55 297

原创 下次再考sizeof我一定会!

大三菜鸡一个,在几场笔试里面每次都被sizeof虐,这次我不能忍了。所有代码演示均在64位系统下文章参考:百度定义sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。语法sizeof的语法有两种形式sizeof(类型)sizeof 对象比如int i;sizeof(i);//oksizeof i;...

2020-04-19 11:43:02 1182 2

原创 LeetCode 445. 两数相加 II (链表) 我的解题记录

题目445. 两数相加 II给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。 进阶:如果输入链表不能修改该如何处理?换句话说,你不能对列表中的节点进行翻转。 示例:输入:(7 -> 2 -> 4 -> 3) + ...

2020-04-15 23:21:51 813

原创 JAVA leetcode&剑指offer 面试题44. 数字序列中某一位的数字 我的解题记录

题目解题思路首先,我们要明确的是,n是下标,从0开始的!我们可以注意到规律 09有10个数字,1099有90个数字,100999有900个数字,so代码class Solution { public int findNthDigit(int n) { if (n<10) return n; int i = 1; ...

2020-04-15 22:34:39 251

原创 JAVA leetCode&&程序员面试金典面试题 01.01. 判定字符是否唯一 我的解题记录

面试题 01.01. 判定字符是否唯一实现一个算法,确定一个字符串 s 的所有字符是否全都不同。示例 1:输入: s = "leetcode"输出: false 示例 2:输入: s = "abc"输出: true限制:0 <= len(s) <= 100如果你不使用额外的数据结构,会很加分。代码 public boolean isUnique(St...

2020-04-15 19:50:19 297

原创 JAVA实现求不带权无向连通图G中距离顶点y最远的一个顶点

昨晚考研的朋友发来这道题,平日很少接触图的算法,只会深度优先遍历和层次优先遍历,正好可以巩固一下。自己简单测了几组数据,都没问题。不知道有没有存在隐藏的bug,如果有人可以帮我指出感激不尽。关于图结点的类 class Node { public int val; public List<Node> children; pub...

2020-04-15 11:24:01 549

原创 JAVA剑指offer题目03 数组中重复的数字我的解题思路

题目链接前阵子在leetCode上做了一道剑指offer的“题目,是这样的题目很简单, 非常直观的解法就是:排序,然后就搞定了,但是这样的时间复杂度是O(nlogn),没事,那就出大招,空间换时间:不管三七二十一我就是哈希 ,然后遍历就完事。时间和空间复杂度都是O(n)。但是我觉得,这样好像不够温和儒雅,这空间复杂度完全可以优化呀。下面给大家看看我的解法。我们可以构建这个一个特殊的哈希表...

2020-04-13 22:02:48 307 1

空空如也

空空如也

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

TA关注的人

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