- 博客(340)
- 资源 (11)
- 问答 (1)
- 收藏
- 关注
原创 2020阿里社招面试心得(成功拿到offer)
先自我介绍一下,本人来自西安的一所211计算机高校。17年研究生毕业,先面试了阿里,四面然后挂了,具体参考: https://blog.csdn.net/dlf123321/article/details/52659174后面面试腾讯,三面,过了。具体参考https://blog.csdn.net/dlf123321/article/details/52659174 。之后两年半就一直在腾讯做分布...
2020-03-13 19:18:49 16243 6
原创 2017京东校招面试回忆(已成功拿到offer)
1面 24日 晚上5:30-6:401 先说自己熟悉的领域2 list的实现有什么? arraylist1.6 1.7区别 底层 linkedlist 底层是怎么实现的 单向还是双向 lru缓存 如果按位置索引,那个快?3 hash的实现 是否是线程安全的 写一个不安全的实现 哪里不安全 hashmap的不安全在于扩容的时候 参见:http://b
2016-09-26 23:02:18 13400 7
原创 2017腾讯校招面试回忆(成功拿到offer)
我本来报的岗位是企业事业群,后来把我分配到了技术工程群三面是9月23日,到现在,最后的结果还没出来,我也不知道是过了还是挂了,先写出来,希望对明年找工作的朋友们一点帮助一面 21号 大概1小时 面试半小时 聊天半小时 1 二叉树的查找 我大笔一挥,在纸上写下了下面的的代码 public static TreeNode find(TreeNode tree,
2016-09-26 15:18:22 19943 9
原创 谈谈std::map的lower_bound
我们知道std::map内部是一个红黑树,放到std::map里的数据等有一个能比较大小的方法。它相当于java里面的TreeMap。它里面有个lower_bound方法,返回一个迭代器,它指向map里第一个大于等于参数的元素。方法的签名很简单,但是在不同情况下,它的返回值还是有些麻烦的,这里记录一下。分别指明下面几种case。
2024-05-14 10:08:09 194
原创 关于In template: no matching constructor for initialization of
n),而没有默认构造函数(即没有不带参数的构造函数),当std::map试图为键20默认构造一个Extent对象作为占位符时,就会找不到合适的构造函数来匹配,从而引发“no。Extent>,即键是int类型,值是Extent类型的对象。int>),插入操作不涉及复杂的对象构造,因为其值类型是基本类型int,可以直接进行复制赋值,所以不会遇到构造函数匹配的问题。赋值或插入:接着,如果找到了键20,则直接对该键对应的值进行赋值;在您提供的代码中,map3是一个std::map<int,基础不牢,地动山摇!
2024-05-13 21:33:53 174
原创 Clion attach一个linux进程进行debug
remote 我不知道是什么意思,就写的是我之前在192.167.155.45 的linux上编译出calculateSum时的地址。在远程linux上,直接运行程序calculateSum,然后另起一个ssh连接 ps -ef|grep calculateSum,拿到它的进程号,假定是130225。手头的一段程序,目前已经在linux上运行了,我在windows上有源代码,想在本地debug一下,看看代码里复杂的流程都是怎么样运行的。以上面的文件为例,编译出来的二进制程序就叫calculateSum。
2024-03-11 11:30:24 430
原创 关于Failed to start LSB
在/etc/sysconfig/network-scripts里面找到ifcfg_eth0.4095,重命名。在/var/log/message里面发现了 了如下错误。发现机子不能ping通自己,然后就。也不知道这个4095是干啥的。
2024-02-29 14:46:06 325
原创 关于memtable的生命周期与flush流程
既然谈到什么周期,那我们得明确,MemTable至少有下面几个变化点:1 刚启动的时候或者说启动恢复的时候,从无到有。2 Memtable变成Immemtable的时候。3 Immemtable下刷到磁盘变成sst的时候。
2024-02-28 09:57:28 636
原创 RocksDB的关键参数与优化方案
默认情况下max_total_wal_size是0,系统会使用多个columnFamily的write_buffer_size* max_write_buffer_number的积相加。控制并发度: 当增大 min_write_buffer_number_to_merge 的值时,系统会允许更多的MemTable转换为Immutable MemTable而不立即进行Flush操作,这意味着可以在内存中累积更多的数据,提高并发写入性能,尤其是在高吞吐量场景下。单个memtable的最大大小,默认64MB。
2024-02-27 10:59:33 852
原创 为新固态硬盘安装操作系统
2 原本的sata硬盘的盘符是C,现在变成了M。当时我的界面下面有两个块,一个是老的sata ssd 一个就是我新的致钛7100。1 启动之后,我的新的致钛7100所在的盘(之前我给他分配的是H盘符),盘符变成了C。然后很多文章就会告诉你,重启电脑就会自动弹出选择启动盘的界面,选择新的系统,然后就会load新的系统了。情况是这样的,我的电脑本来就有一块sata的固态硬盘,作为c盘,装载的是win10系统。然后,咱们的dism软件就会把win10系统从iso里面读出来,放到新的那个固态里面。
2024-02-22 22:22:42 993
原创 WordPress Nginx 报错 502 Bad Gateway
然后去看看php的配置文件,在/usr/local/php8.2/etc/php-fpm.conf,里面发现。最近机器重启了一次,访问WordPress就发现报错502 Bad Gateway。然后查询/home/wwwlogs/nginx_error.log发现如下错误。然后我就直接把listen改成了/tmp/php-cgi.sock。之前租了一台服务器,部署了Nginx,WordPress。然后先kill掉php的进程,再重新启动。
2024-02-17 21:45:33 790
原创 谈谈BlueFS
BlueFS具体是个什么东西呢?如上图,在Ceph里,使用BlueStore作为默认的存储引擎。作为存储引擎,它说白了就是存储文件的,但是一般情况下,文件分为原始数据与元数据。如上图,对于原始数据,BlueStore是直接操作裸盘进行存储的;对于元数据则使用RocksDB来进行保存。
2024-02-01 15:52:30 871
原创 关于c++里string的底层存储布局
另外以上面的代码为例,b的地址是0x7fffffffe760,这个一直不会变,但是随着代码的运行,b的地址是0x7fffffffe760里面首8个字节的数据会改变,并不是一直都是7fffffffe770,这个应该是为了防止内存越界吧。string在c++里面的变量的地址,其实是一个8字节的指针,存放着数据的真实地址,之后的8个字节是一个数字代表了字符串的长度。是的,是凑巧,如果咱们的代码里面多申请几个变量,0x7fffffffe760里面存放的就不一定是16个字节以后的位置了。OK,咱们总结以下。
2024-01-25 11:48:05 368
原创 Windows下使用clion调试LevelDB与rocksdb
使用clion打开项目,在根目录下新建一个app目录,app目录下新建一个main.cpp。在CMakeList.txt里面寻找leveldbutil字符串,然后在下面增加。
2024-01-11 17:27:31 473
原创 c的编译链接与执行
就是处理#define,#if同时还有把#include包含的文件插入到该指令的位置。使用gcc hello.c可以将我们的源代码翻译成a.out这个可执行文件。因为#include包含的文件插入到该指令的位置,所以.i文件一般比较大。我们一般使用gcc -E hello.c -o hello.i。我们具体的说,gcc hello.c -o myhello。我想在b.cpp中引用等于10的这个k就得在b.cpp中写。或者gcc hello.c -o hello.out。预处理生成的文件的后缀名一般是.i。
2023-12-06 16:31:38 485
原创 关于SafeThreadLocal的一点思考
它的作用呢?很简单就是能做到在同一个线程内的不同业务模块内保存一组信息,让各个模块都能修改&读取。想想如果没有她,只能使用参数传递的方法,从头传到尾,多麻烦。OK它的作用与好处说完了,那它还有一个很多的问题就是,每次使用完都必须清理。为什么?我线程结束了,即使不清理,哪能怎么样呢?是的,你的线程是结束了,但是我们的应用一般都是跑在容器里面的(例如Tomcat),而容器里面的服务线程是从线程池里面取的,它是可以服用的。那如果不清理,造成的影响就是。
2023-11-08 10:53:54 12
原创 关于FastJSON序列化Bean时对get方法调用的细节
如果版本低于2.0.35,且bean里面有返回值为void的且get开头的方法就会报错:java.lang.ArrayIndexOutOfBoundsException。使用JSON.toJSONString去序列化Bean的时候。FastJSON会把Bean里面的。另外这里用的FastJSON版本是。
2023-11-03 10:25:05 183
原创 SimpleDateFormat的替换方案
众所周知,SimpleDateFormat是线程不安全的,在多线程情况下,格式化时间或解析时间都会遇到意想不到的问题。所以有必要聊聊它的替换方案。
2023-10-26 10:42:18 239
原创 mysql的一些知识
MySQL 在完成一条更新操作后,Server 层还会生成一条 binlog,等之后事务提交的时候,会将该事物执行过程中产生的所有 binlog 统一写 入 binlog 文件。最终的更新磁盘上的数据是随机写;那在真实的更新数据之前,就先写redo log,这不是依然要写磁盘么?在「读提交」隔离级别下,可能发生不可重复读和幻读现象,但是不可能发生脏读现象;在「可重复读」隔离级别下,可能发生幻读现象,但是不可能脏读和不可重复读现象;在「读未提交」隔离级别下,可能发生脏读、不可重复读和幻读现象;
2023-06-27 00:38:33 192
原创 线程的创建(Runnable,Future,CompletionService,CompletableFuture的辨析)
上面三种启动线程的方式,都只是用来学习的,并不推荐,因为每个任务都启动一个线程去执行,实在是太慢了,我们一般都会使用线程池。代码如上,使用FutureTask来承接Callable,Callable里面存放需要执行的任务。直接让某个类继承Thread类,复写run方法,外部调用的时候直接调用start方法。使用runnable解决java单继承的问题,但是也还有一个问题,那就是,没有返回值。另外如果future的结果还没有出来,调用它的get方法就会阻塞。FutureTask的run方法会阻塞主进程!
2023-06-02 18:10:01 399
原创 mysql锁的相关知识
下面的所有例子都以一个下面这表为例mysql锁的概念有很多,悲观锁,乐观锁,行锁,排他锁。。。。,但是请注意,这些概念并不是一个层级的。就像人里面有男人,女人,老人,小孩,公务员,农民等等。
2023-04-19 18:58:54 313
原创 关于RedissonLock的一些所思
就是业务方使用锁的时候,也不用指定那个自动删除时间,用户使用锁的时候Redisson就会自动每隔10s调用一次redis,把锁的超时时间往后推30s。使用锁的时候,有个问题,就是当某个线程从redis拿到了锁之后,一般要告诉redis这个锁最长多久就要自动删除(如果不这么做,一旦某个线程自己死掉了,那redis就认为这锁一直被某个线程持有着,就不会放别的线程进来了,相当于卡死了整个系统)就上面的例子里,如果某个线程已经拿到了my_order的锁,那别的线程调用myLock.lock方法就会阻塞。
2023-02-17 14:40:42 1037
原创 关于公钥与私钥的一点看法
什么意思,a给b发送了一个670(加密后的消息)。但是消息再发送过程中篡改了(有可能是某些人故意的,也有可能是网络各种异常),b收到的消息变成了67或者变成了671。啥意思,如果a这个用户想发送的原始数据是485,然后a给这个458进行加密,怎么加密呢?之前,用户a想给用户b发消息,a希望他自己发出现的消息,只能被b读懂。也就是说a希望发出去的数据是被加密过的,收到消息的人可以是b,c,d,e等等。准确的需求就是,b收到了一组消息,但是谁能保证这个消息就真的是a发出的呢?首先,a把自己的公钥给b;
2023-02-13 11:26:51 940
原创 关于事务的一点思考--谈谈Transaction rolled back because it has been marked as rollback-only
那还有一个问题,如果就按照最原始的写法,抛出了Transaction rolled back because it has been marked as rollback-only这个异常,那整个事务到底是什么情况呢?但是Spring 已经感知到了方法B的异常,然后在方法A里面,代码逻辑吃掉了异常,当A结束的时候,Spring并没有感知到A的异常,就准备提交事务。且方法A和方法B上都启动了事务。方法A收到B的异常后直接吃掉了,没有继续抛出。知道了原因,解决这个异常那就简单了。方法A调用了方法B。
2022-12-01 20:18:30 297
原创 Mock和Spy的区别 打桩的区别
thenReturn(…● doReturn(…) 不会调用真实方法。2、对该对象私有方法的调用无法进行模拟,会调用真实方法。mock的对象,方法都是空的。(忽略public与否)1、对该对象所有非私有方法的调用都没有调用真实方法。对该对象所有方法的调用都直接调用真实方法。spy的对象,方法都是真实的。打桩主要是为了指定返回值。另外对于mock的对象。
2022-11-19 20:04:43 1299
原创 Mockito的@Mock与@MockBean
按照上一篇的MockitoTest运行,就会报错因为redis的host连接失败(因为我之前申请的redis已经过期了)所以不能生成RedissonClient ,然后UserController 就失败了。我所理解的区别就是@Mock生成的类和spring容器没有关系,虽然在上文PersonMapper 他也注入进了UserController。ok 上面说了那么多,终于到正题了,那就是 @MockBean和@Mock到底有什么区别。怎么办,我想到了一个我可以排除RedissonClient 呀。
2022-11-19 00:04:54 2385
springmvc 异常处理示例
2016-02-27
用java发送邮件
2014-09-09
fusioncharts/widgets for flex 的swf 与swc文件
2012-11-28
Collections.sort的源码问题
2015-03-03
TA创建的收藏夹 TA关注的收藏夹
TA关注的人