keepspy 发布于 06月09, 2021

【工作踩坑】之mysql问题

最近不知道怎么回事,接连有同事踩坑,而且都是和Mysql有关,一个是执行delete语句导致全变数据删除,另一个是使用Mybatis封装的Wrapper更新表出问题导致 in子查询问题前两天同事遇到一个Mysql删除语句问题,最终导致全表数据删除,接下来就给大家详细介绍下问题的原因和解决方法。问题重现在介绍问题之前,先问大家一个问题,现在库里有两张表user(用户表)、class(班级表),用户表有两个字段(id,name),班级表也有两个字段(id,type),然后执行以下sql:delete from user where name in ( select name from class...

阅读全文 »

keepspy 发布于 01月13, 2021

【Leetcode题解】-只出现一次的数字、多数元素、搜索二维矩阵

今天分享几个leetcode(力扣)有趣的几个题目的题解1、只出现一次的数字题目连接:https://leetcode-cn.com/problems/single-number/给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4题解:题意很明确,就是找数组中只出现一次的数字,如果不关心要求(时间复杂度O(n)、空间复杂度O(1)),可能大多数人想到的是维护一个map,key是数组...

阅读全文 »

keepspy 发布于 12月22, 2020

【转载面经】-阿里影业四面、美团二面

阿里影业-四面挂一面时间:2020/11/25 20:00 37分钟1、你在项目中遇到过的最难的问题是什么,如何解决的根据自己实际情况作答2、JAVA8有哪些新特性,说一下你了解的 (1)、 lambda表达式 (2)、 去永久代,变为元空间 (3)、Optional 类 − Optional 类已经成为 Java 8 类库的一部分,用来解决空指针异常。 (4)、Stream API −新添加的Stream API(java.util.stream) 把真正的函数式编程风格引入到Java中。 (5)、Date Time API − 加强对日期与时间的处理。3、设置元空间大小的参数知道吗...

阅读全文 »

keepspy 发布于 12月08, 2020

【java基础系列】之垃圾回收器及回收算法

本章和大家聊一下jvm的垃圾收集器以及对应的垃圾收集算法,可能大部分同学对于GC方面的了解程度还停留在面试那一级别,如果问起什么三色标记算法,可能有些同学就不知道啦,下面就和大家一起整体了解下GC和它的一些延伸知识点你懂的越多,你不懂的越多垃圾收集算法本章大概介绍几个常见的垃圾收集算法:复制算法、标记-清除、标记-整理、分代回收标记-清除算法算法分为"标记"和“清除”两个阶段:首先扫描所有对象标记出需要回收的对象,在标记完成后扫描回收所有被标记的对象,所以需要扫描两遍。回收效率略低,如果大部分对象是朝生夕死,那么回收效率降低,因为需要大量标记对象和回收对象它的主要问题,标记...

阅读全文 »

keepspy 发布于 11月30, 2020

【Mysql知识汇总】之常用索引及sql优化

写在前边:索引在mysql中是极其重要的,它可以大大提高数据查询的速度,而且使用起来灵活方便,本章大概聊一下常用的索引类型以及sql优化相关的知识你懂得越多,你不懂的越多索引类型mysql的索引类型从逻辑角度大概可分为:普通索引(normal)、唯一索引(unique)、主键索引、组合索引。普通索引(normal)普通索引可以理解为单个字段的索引,可以使用如下命令创建CREATE INDEX index_name ON table(column(length))或者修改通过表结构的方式创建ALTER TABLE table_name ADD INDEX index_name ON (colum...

阅读全文 »

keepspy 发布于 11月02, 2020

【Mysql知识汇总】之存储引擎和索引模型

写在前边:mysql所涉及的基础知识还是比较多的,什么存储引擎、索引、索引模型、sql优化、范式等等,本节先描述最基础的存储引擎和索引模型 你懂得越多,你不懂的越多存储引擎 存储模型是对数据库存取数据的一种实现机制,包括为存储数据建立索引,以及查询技术的方式。常用的存储引擎:MyISAM、InnoDB、Memory、Archive。查看方式: show engines; // 查看mysql所支持的存储引擎,以及从中得到mysql默认的存储引擎。四种存储引擎的比较InnDB:数据的屋里组织形式是簇表 支持事务支持自增长列支持MVCC的行级锁支持外键支持热备份默认使用B+ 树 索引模型不仅缓...

阅读全文 »

keepspy 发布于 09月11, 2020

【通信协议】笔记之Redis协议抓取分析

从此篇文章开始,将进入通信协议相关学习,大概囊括几个知识点:TCP协议、UDP协议、Redis协议相关,顺带介绍Wireshark分析工具、Tcpdump命令等使用工具。本篇文章主要介绍Redis协议相关知识点。RESP(Redis序列化协议)概念 Redis底层使用的通信协议是RESP(Redis Serialization Protocol的缩写),RESP协议可以序列化多种类型,比如Simple Strings(简单字符串),Errors(错误类型),Integers(整形),Bulk Strings(批量串)和Arrays(数组),但此协议只适用于Redis客户端-服务端之间的通信,R...

阅读全文 »

keepspy 发布于 05月25, 2020

【java基础系列】-Map集合之HashMap(java8)

提起Map想必大家都不陌生,用的最多的比如:HashMap、TreeMap、ConconrentHashMap等等,本文主要介绍HashMap底层的一点东西,说的不全,后续会继续补充。。。你懂得越多,你不懂的越多简介HashMap在java.util包下,是AbstractMap的字类,属于非线程安全的集合,HashMap的源码相信很多人都看过,我再稍微总结下,做个笔记,以便后续复习,先介绍下HashMap类的几个变量:DEFAULT_LOAD_FACTOR = 0.75f :默认装载因子(0.75)EFAULT_INITIAL_CAPACITY = 1 << 4:默认初始容量...

阅读全文 »

keepspy 发布于 03月28, 2020

【Redis学习笔记】—应用场景、数据类型、雪崩、穿透、击穿

仔细体会这句话你知道的越多,你不知道的越多使用场景传统Mysql已经不能满足所有场景,比如,秒杀商品库存扣减,App流量访问高峰,很多高并发场景都有可能吧redis打崩,于是引入缓存中间件,常用的有Redis、Memcached。延伸:Redis和Memcached的优缺点Redis优点: 1、 速度快,内存型Key-Value存储,查找时间复杂度O(1); 2、数据类型丰富:List、Set、Zset、Hash、Geo等; 3、支持事务,操作原子性; 4、功能多:自定义过期时间、跳表、哨兵、分布式锁实现等;Redis相比于Memcached的优点: 1、Memcached 存储是简...

阅读全文 »

keepspy 发布于 12月19, 2019

【工作】记一次TCP数据传输的问题修复过程

背景:前一阵接了某家公司的车辆数据,接入方式是使用底层的tcp传输协议,数据处理中间层框架使用mina,联调完后发现时不时会出现数据丢失现象。解决过程首先想到可能是数据包解析方面的问题,于是翻了下对方提供的协议文档,按照对方提供的协议,发现字节没有对错,咨询对方技术后人家说不是按数字节解析,而是每个字段前面对应的标识解析。之后连夜写(其实是拷贝粘贴)了个通用解析方法,部署后发现大多数丢的数据恢复了,但偶尔还是有那么几个数据丢失,作为一个对工作极其负责(较真)的人,我决定彻查到底。排除了解析问题,接下来就是要确认下是不是存在网络丢包,于是想用ping 测试下丢包率,结果对方服务器设置了限制pin...

阅读全文 »

keepspy 发布于 09月28, 2019

docker 快速入手及push 镜像到dockerhub

写在前面自微服务火起来之后,相关生态系统不断完善,成百上千的服务架构落地与实施面临的复杂性越来越大,如何实现服务的快速持续构建部署、相关环境配置隔离、服务器资源最小占用率等等一系列问题,已经成为开发过程中不得不关注的点,在这一大背景下docker孕育而生。docker 是什么 docker是一个用于开发、交付和运行应用程序的开放平台,它可以将应用程序和基础架构分开,借助Docker,可以像管理应用程序相同的方式来管理基础架构。通过利用Docker的方法来快速交付、测试和部署代码,可以大大减少编写代码到在生产环境中运行代码之间的时间差。(引用官方)总而言之,docker 能够实现是同一个硬件...

阅读全文 »

keepspy 发布于 05月11, 2019

【Java8】 之 Lambda 表达式 和 流式API

Lambda 表达式和流API 是 java8 新出的特性一、Lambda表达式 Lambda表达式的出现取代了匿名类、取消了模板、允许使用函数式风格编写代码。使得程序不必依赖于匿名类那样死板,程序员可以根据需求直接在方法中自定义代码。下边通过几个例子介绍一下。1、用Lambda表达式代替Runnable之前实现Runnable接口newThread(newRunnable() { @Override public void run() { Syste...

阅读全文 »

keepspy 发布于 05月08, 2019

mvn_deploy_上传jar到Nexus私服

 最近用shiro做了个权限系统,大概包括两个组件:认证中心、客户端过滤器。主要流程是子系统接入过滤器jar包,拦截请求并获取token,然后拿token去认证中心进行登录校验或鉴权,然后返回相应的鉴权结果,等等之类的吧!!! 就是在上传过滤器jar包时候遇到的一些规范和问题大概说下: 规范:jar包的version后缀一般分为snapshot和release两个命名方式。snapshot的意思是正在开发的、测试的、或者不稳定的程序 reslease的意思是稳定的,正式的版本eg. <groupId>cn.net.xxxx</grou...

阅读全文 »

keepspy 发布于 05月08, 2019

2016第七届蓝桥杯--剪邮票(DFS)

第七题:剪邮票如【图1.jpg】, 有12张连在一起的12生肖的邮票。​​​​现在你要从中剪下5张来,要求必须是连着的。(仅仅连接一个角不算相连)比如,【图2.jpg】,【图3.jpg】中,粉红色所示部分就是合格的剪取。请你计算,一共有多少种不同的剪取方法。请填写表示方案数目的整数。注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。思路:首先想到先从12个数中找5个数,列出所有可能,然后再判断这5个数是否相连。。思路很清晰,但是要注意示例中第二种情况,附代码:#include<stdio.h>#include<string.h>#include<...

阅读全文 »

keepspy 发布于 05月08, 2019

解决关于selenium_获取新页面元素失败的问题

当我们使用selenium 实现模拟登陆时,获取到登陆按钮元素后,直接调用它的click()方法就能实现登陆跳转,并且此时的webDriver 也是指向当前页面,这个是没问题的,不过需要注意的是因为页面加载速度一般小于程序运行速度,所以在获取登陆后页面的元素之前,可以用WebDriverWait的util方法解决,也可以直接通过Thread.sleep()让程序睡眠一会(不推荐)。但是博主要说的重点是如果我们是通过点击普通超链接进入到新页面,那么通过上面的方法是获取不到新页面元素的,因为此时的webDriver 依然指向之前的页面,解决方法:首先获取窗口的所有句柄,然后遍历这个句柄集合,直到...

阅读全文 »