自定义博客皮肤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)
  • 收藏
  • 关注

原创 MIT 6.5830 概述

同MIT6.824系列类似,6.4830是关于Database System的一门课程,。从课程信息可知,理论课分为 21 个课时,3个问题集,4个实验,1个项目。课程的 ppt 可以下载,对应的课堂回放可以直接在 YouTube 上观看。

2024-01-31 10:09:10 419 2

原创 iPhone通话录音调研

iPhone通话录音方案

2023-02-14 13:54:54 277 1

原创 读书笔记:程序员的自我修养—链接、装载与库

代码被编译&汇编成机器文件后, 指令常被放在代码段中, 即 .code & .text section, 全局变量和局部静态变量数据放在数据段中,即 .data section。引用其他模块的函数或者全局变量时不需要知道他们的地址,链接器会修正编译器产生的指令目标地址。

2022-12-15 11:11:39 189

原创 csapp 读书笔记

csapp 读书笔记

2022-12-04 21:23:43 211

原创 Electron抓包体验

Electron 桌面应用抓包

2022-11-04 00:22:34 1941

原创 应用层处理 tcp 粘/拆包问题

应用层粘包处理

2022-11-03 00:28:23 497

原创 Golang 中对 json 的优雅处理

golang 中对 json 的优雅处理

2022-10-30 17:07:34 2762

原创 最新 kafka 安装 2021-6

背景kafka 在最新的 2.8 版本中,由于运维成本过大,故障处理不友好,分区瓶颈等等原因,弃用了 Zookeeper,而自己实现了 KRaft 协议。所以最新版的安装不再需要 zk 了,网上的教程也统统过时了。步骤其实按照官网上的 quick start 非常简单,傻瓜式操作。前提, sudo apt install openjdk-8-jre-headless 安装一下 jdk然后去下载 kafka 的最新安装包 , 推荐清华源wget https://mirrors.tuna.tsin

2021-05-25 10:04:32 863 1

原创 [求助] 0.0.0.0 和 127.0.0.1 端口监听问题

在 win10 中安装了一个 wsl2, 并且在 wsl2 中部署了一个 mysql5.7结果在 win10 中也能正常访问 3306 端口进入 mysql5.7在 win10 上输入 netstat -ano | findstr 3306 得到了可以看到,这个就是 wls2 中的 mysql5.7, 就比较奇怪,3306端口直接穿透到了win10中于是想,如果再在 win10 中部署一个 mysql, 按道理说应该会端口冲突无法启动,结果在 win10 上下载了一个 mysql8.0

2021-05-19 19:01:47 1551

原创 win10 powershell 设置永久别名

首先使用 Test-Path $profile 查看是否有 profile 文件, 如果显示 flase 则执行2New-Item -path $profile -itemtype file -Force 返回一个目录,去打开编辑这个文件文件添加function 别名 {你要代替的命令,可以包含空格}打开一个管理员模式的 power shell 执行 Set-Executionpolicy Remotesigned重新打开一个 power shell, 别名即可使用...

2021-05-17 23:36:07 918

原创 网络通信基础面试题 源自《WireShark网络分析》

背景《WireShark网络分析就是这么简单》这本书没有枯燥晦涩的网络协议讲解,而是非常接地气的实际问题剖析,例如本书第一页的问题抛出。分析一开始我是拿每个服务器的IP地址和自己的子网掩码相&,于是A和B得到了不同的结果,说明二者不在一个子网。【实际上这是不正确的】作者在B服务器上 ping 192.168.26.3 即A 服务器,并且用 WireShark 在B服务器上抓包。首先B服务器根据目标IP,也就是A的192.168.26.129 ,和自己的子网掩码 255.255.255.

2021-05-17 16:05:45 489

原创 手机app抓包,无视SSLPinning

背景:想要针对手机抓包玩耍一下,charles配置完证书等操作后,结果发现除了游览器能够正常抓包外,绝大部分流行的app都无法抓包[少数主流可以],许多包抓下来出现如图效果。全都是红色的Connection 200,显示SSL 问题[实际上证书都已配好]原因:原理:charles 抓包原理实际上是 https 中间人攻击,只不过我们手动安装并信任了这个中间人的证书。问题:游览器默认是信任这个证书的,但app不一定啊,app客户端完全可以先验证证书是不是自己公司的,发现不是直接拒绝并停止网络请求[这

2021-05-15 21:13:04 1889 1

原创 charles 手机app抓包坑点总结

2021.5.15注意点:电脑使用抓包charles 使用需要一开始就配置好 http 证书,否则抓得全都看不到,毕竟现在都是 https了。 在 help 里选择安装证书,注意要选择证书存储为:“受信任的根证书颁发机构”(Windows 下) 另外在 proxy 选项中打开 SSL 设置,把443和*填进去。手机抓包首先连接和电脑同一个WiFi,并且手动配置代理,地址是电脑的ipv4地址,端口是 charles 默认设置中的 8888然后同样使用 help 选项里的安装到移动设备中,到c

2021-05-15 19:23:21 838

原创 IDEA错误: 找不到或无法加载主类 Main

报错如题除了网上说的 Rebuild Project 和 File Invalidate Cache 之外,还有一个种可能,那就是项目使用了Maven,而且没有设置 自动导入的情况下,极小概率会出现这个问题,算是 idea 的一个bug这时候只需要在 pom.xml 中随便打一个空格,idea会自动跳出右下角的框,点击 import changes,然后重启 idea 即可。...

2020-02-09 11:28:07 2798

原创 Java对象池pool2分析PooledObjectFactory

背景:    池化技术 在Java中使用的相当多了,例如各种数据库连接池,以及JDK自己实现的线程池等等,从根本上说他们都是对象池,把资源池化,按需存取,不仅能够一定程度上节省对象的创建时间(缓存思想),还能够对池子做一些管理和控制(例如设置资源最大数,闲置数等等)。池的经典实现要数 apache 的 pool2 了 .Pool2默认的对...

2020-02-08 23:40:55 4834

原创 最新 springboot2.x 整合 shiro 身份认证

背景shiro是一套工业级的身份及权限验证模块,具体功能和原理在此实战中不多累述。总之 Shiro 的核心是两个功能,一是 身份验证 (通俗说就是登录),二是 权限验证(此用户有没有权限操作)。这里使用 Springboot 2.x 搭建,引入的是 shiro-spring-boot-web-starter,注意其中的web不能少,如果是web项目的话。这里需要指出,sp...

2020-02-05 15:07:26 284

原创 java 实现 全排列,组合数

数学概念:组合数:从n个不同元素中,任取m(m≤n)个元素并成一组,叫做从n个不同元素中取出m个元素的一个组合排列数:从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。Java实现:其中,全排列有两种实现方式,分别是基于交换和基于flag标志位的。public class Main2 {...

2020-01-31 17:31:20 1036

原创 微软面试题 : 链表排序

很经典的一道题,既然是面试拿出来,肯定是要求 O(n * logn) 的时间复杂度了。肯定是递归了,可以用快排或者归排

2020-01-30 22:38:41 209

原创 链表算法: k个一组反转链表

单链表是最基本的数据结构,但同样可以考察递归思想。描述:如题, 将链表中的元素 k 个为一组,组内进行反转,不够 K 个的不反转。例如:给定这个链表:1->2->3->4->5当 k = 2 时,应当返回: 2->1->4->3->5当 k = 3 时,应当返回: 3->2->1->4->5...

2020-01-30 21:55:54 391

原创 Shiro+ Springboot 报错 required a bean named 'authorizer' that could not be found

背景:在使用 shiro-spring-boot-web-starter 时,启动项目报错。Description:Parameter 0 of method authorizationAttributeSourceAdvisor in org.apache.shiro.spring.boot.autoconfigure.ShiroAnnotationProcessorAutoConfig...

2020-01-05 22:25:21 7335 7

原创 Shiro 整合 Springboo2.2

Shiro就不多介绍了,原理性的东西非常多。总结一下有一些要注意的点,例如Authentication 和 Authorization 这两个几乎长的一毛一样的单词对新手来说实在太不友好了。前者是登录时用的身份验证 (即用户密码),后者是 角色权限相关的验证SpringBoot网上很多教程是Spring的,一大堆 Bean 配置让人云里雾里的。 SpringBoot 出了 start...

2020-01-05 21:14:52 254

原创 最大m子段和 快手面试题:善变的同伴

背景快手的一道算法面试题,链接 快手面试题:善变的同伴其实抽象出来就是 最大m子段和本文参考的是这位C++版,但其侧重讲的是优化https://blog.csdn.net/winter2121/article/details/72848482定义:给定由n个整数(可能为负)组成的序列a1、a2、a3…,an, 以及一个正整数m,要求确定序列的m个不相交子...

2019-12-31 15:40:47 782

原创 idea中maven命令启动的java路径

问题描述:在idea中,使用 maven 和其插件(在右侧栏中),双击运行时启动的是jdk7疑惑:JAVA_HOME 是1.8的项目的 project 和 modules 设置也都是 1.8的maven config 文件按照如图设置 (确定使用的是这个idea的maven)所有的 jdk配置都是 1.8的了,为什么它还从1.7启动?在网上搜索不到这个问题之后,给自己留...

2019-12-28 22:35:50 389

原创 @PostContrust @AutoWired 执行顺序

两个类,BeanA 和 BeanB ,其中 BeanA 中引用了BeanB,那么 @PostContrust 的触发时机是什么时候呢。 其实顾名思义,Post 是后的意思,Contrust是建造的意思,可以猜想是在构造函数完成之后,下面用代码做实验类 BeanA@Componentpublic class BeanA { @Autowired private BeanB ...

2019-12-21 12:47:00 2207

原创 2019微软冬季实习生面试题

背景:1.base 苏州微软2.winter intern 项目电面:过了简历筛选之后被HR联系约线上面试时间,两轮连在一起,各一个小时,由不同的人面。面试用自家的产品Teams,多人会议软件。简单的自我介绍(中文),之后直接在 collabedit 白板上说题。第一场:数字转码,例如 126 可以转换成 ABC , LC, AZ 三种,那么给出一个数字串,求能转换出来的字符串。这...

2019-12-12 10:42:41 1332 2

原创 零基础深入理解MapReduce原理和过程 (针对新人)

背景看了网上的教程,很多用的是这个WordCount的图,我无力吐槽,并不是说这个图不对,只是觉得站在新手的角度上来说:最核心的Shuffle过程,这个图没有讲。Reduce过程有4个,容易让新手以为Reduce的数量和单词有关。分析:下面的图更细致一些,但是还是有对新手不了解的地方,我用最平实的语言来叙述。还是统计单词,例如统计《莎士比亚全集》。第一阶段 split: 假设...

2019-12-04 12:56:08 321 2

原创 CopyOnWriteArrayList set方法中的 Not quite a no-op; ensures volatile write semantics

背景:CopyOnWrite技术即写时复制,原理在网上一大堆了,关于CopyOnWriteArrayList的 set方法中(420行) 为什么即使没有发生任何变化,也要 setArray 一下? 需要去刷新volatile所修饰的数组引用吗?探索:网上解析很多,但核心其实就一点:这不是为了保证CopyOnWriteArrayList本身的可见性,\color{red}{这不是为了保证...

2019-11-30 20:52:31 518

原创 ArrayList构造函数 c.toArray might (incorrectly) not return Object[] (see 6260652)

问题:在ArrayList或者CopyOnWriteArrayList等源码中,以Collection为参数的构造方法中为什么会出现红框中的判断呢,难道c.toArray()返回的还不一定是Object类型的数组?探究:打开 c.toArray的源码,发现是接口,我们随便找一个实现类,就例如最常见的ArrayList吧注意,这里的elementData是ArrayList的内部数组,它...

2019-11-30 15:01:52 314

原创 Java LRU的两种实现

LRU 最近最久未使用,是一种常用的淘汰算法,广泛应用与OS内存页面调度,Redis缓存淘汰策略,等等。在Java中有两种实现方式,一个是直接利用JDK已有的 LInkedHashMap ,一个是自己手写 DoubleLinkedList 结合HashMap。一:利用JDK方法public class LRU<K,V> extends LinkedHashMap<K,V&gt...

2019-11-22 14:23:26 569

原创 java用迭代器时修改集合一定会触发Fast-fail机制?

已经有很多帖子分析了Fast-fail机制,就不累述了。往往我们喜欢把知识点提炼成最精简的话语放到大脑里,就是Fast-fail机制是为了防止迭代器进行集合迭代过程中对集合元素进行增加或删除(包括单线程和多线程),保证数据一致性但事实真的这么简单?看个小demo运行可以发现,移除 “hello” 或 “java” 都会引发 ConcurrentModificationException异常...

2019-11-19 21:32:40 168

原创 Java 实现生产者消费者问题 使用 BlockingQueue

生产者消费者有多种实现方法,最基础的有Java原生语法,synchronized + wait和notify或者进一步有ReEntrantLock + Condition而在 Java 多线程编程最佳实践中提到,多用同步工具少用 wait() 和 notify()建议使用 BlockingQueue 实现生产者消费者问题import java.util.concurrent.ArrayB...

2019-11-07 20:33:10 146

原创 Mybatis的< resultMap>中 < id> 标签的作用(用于collection)

resultMap的作用<resultMap>标签用于封装sql的查询结果,可以包装成一个简单POJO对象,也可以包装成我们自定义的对象,只要我们使用<result>子标签指定好查询结果的列和对象的属性之间的对应关系就好了。官方原因说是用于提高性能,但是在一些情况下,没有Id的话结果会出错。官方doc传送门(中文):https://mybatis.org/mybat...

2019-10-22 11:35:10 13600 3

原创 spring boot拦截器无法加载Thymeleaf引入的static文件

背景    用BootStrap写了个前端登录页面,用的是Spring boot 官方推荐的Thymeleaf模板引擎,后端用的是继承WebMvcConfigurer的拦截器在进入页面时发现js.css等渲染不成功,F12调试才发现是因为静态文件都被拦截器拦截了,于是就按照网上烂大街的方法:在拦截器里设置excludePathPatterns排除static路径下的拦截p...

2019-10-17 16:28:22 1334 1

原创 Springboot + quartz 无法使用@Autowired注入Service的问题

问题具体问题就是需要在具体任务Job中使用@Autowired注入自己的Service。但一直报空指针异常。原因是因为job的实例化在quartz进行,和Spring托管的Service啥的不是一条路,所以关联不到一起翻遍了csdn也没找到好的解决方案,甚至还有配置xml的,那还用什么Springboot。解决方案一最后找了一个比较完整且靠谱的帖子,但是也没有解决问题。在调试中我发现,通过...

2019-10-08 09:57:37 2345 3

原创 mybatis + lombok 出现 java.lang.IndexOutOfBoundsException

**问题描述:**就是一个简单的select语句,拿出来单独运行也是OK的。select s.sid,s.title,s.url,s.icon,s.cate_id from sites s跟进错误栈调试发现,报错是因为mybatis要把select出来的字段包装成Java对象时,找不到其构造函数中对应的字段。构造函数为啥这5个字段呢。就是因为用了lombok的@Builder方法,这...

2019-10-05 17:57:00 3273 1

原创 算法之 数组两端取数游戏

题目  同学A与B玩取数游戏。即有一个2n项的数组,其中每个都是整数且对两位同学都是可见的,两位同学轮流从 两端 取走数字(假设A同学先取)。  胜负评判:所取数之和较大者获胜(可能存在平局)。分析如果题目问A同学的胜负情况,那可以直接回答胜或者平局,因为数组对两位同学都是可见的,都做出最佳决策的情况下肯定是先取者获胜,或者平局。如果题目问A同学最后会比B同学多多...

2019-09-25 15:51:44 4346 3

原创 校招算法题:字符串价值

在牛客网上看到一个2018校招题,爱奇艺的,叫做 “字符串的价值”。感觉所有别人的答案都不满意,特此记录题目描述:有一种有趣的字符串价值计算方式 : 统计字符串中每种字符出现的次数,然后求所有字符次数的平方和作为字符串的价值例如: 字符串"abacaba",里面包括4个’a’,2个’b’,1个’c’,于是这个字符串的价值为4 * 4 + 2 * 2 + 1 * 1 = 21牛牛有一个字符串...

2019-06-20 09:54:42 364

原创 二叉树相关面试算法题(java实现)

二叉树可以说是最重要的非线性数据结构了,也是考察递归思想的重要手段。二叉树分为普通二叉树,排序二叉树,平衡二叉树,红黑树等等。这里代码中我选择的是排序二叉树,有特殊性但又不失一般性,复杂度适中。算法主要有(难度递增):各种遍历,其中要注意的是后序非递归遍历,层序遍历(带层数,例如问第3层有几个节点)。常见的统计叶子,非叶子节点数,求深度,判断左右子树相似,判断平衡等。根据先序与中序建立...

2019-05-30 00:17:10 764

原创 JDK设计缺陷

最近在看经典书籍Effective Java 中文版(第三版),里面讲了好几处JDK的设计缺陷,特此记录,缓

2019-05-19 09:27:33 407

原创 @RequestBody与表单数据转换Json

背景在写SpringBoot时有个public Order insert(@RequestBody Order order) {…}方法用@RequestBody来接收前台JSON格式的数据。这时候前端的数据是以From表单传来的。遇到了几种形式的报错,特此记录方案网上查表单数据转JSON用于@RequestBody的资料,乱七八糟真是踩坑不少。首先ajax里面一定要有 conten...

2019-03-29 21:11:10 2217

空空如也

空空如也

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

TA关注的人

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