自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

王星星

勇士斗恶龙

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

原创 HashMap的并发put问题

HashMap并发下所产生的问题

2022-12-10 23:39:55 1365 2

原创 当线程池任务抛出异常

线程池原理剖析

2022-08-09 22:01:26 1922 1

原创 当Map的值为NULL

Java中HashMap的采坑记录

2022-07-31 23:40:11 2924

原创 Java编程技巧

最近读了Effective Java,汇总精华并略去一些我没GET的地方,结合平时的实际开发工作,写个读后感,夹带了自己编程私货,欢迎拍砖~对象的创建和销毁1. 静态工厂方法静态工厂方法可以方便的构造一个简单实例,使得代码更易读,不用每次都创建对象。public static Boolean valueOf(boolean b) { return b ? Boolean.TRUE : Boolean.FALSE;}在业务应用中,可以应用在简单的Response中,尤其是不变的success响

2022-04-15 23:57:18 531

转载 漫谈JavaFX

从接触软件工程到现在,我依次使用过C/Cpp/Java/Php/Python/JavaScript等编程语言,也使用过它们的一些工程化的框架,如Java系的Spring,Js系的Vue和React。因为机缘巧合,我对Java接触的更多一点,用Spring写过Web,用Jsoup写过爬虫,用Swing写过桌面,用Netty写过IM,恰好最近有一个开发桌面端工具的小需求,所以就试用了一把号称next generation client application platform for desktop, mobi

2022-02-11 21:52:24 587

原创 Java8的函数式编程

Java8发布了一系列高效的操作方式,其中lambda就是一个很重要的特性。譬如我们可以利用lambda代替匿名内部类,可以更方便的创建线程,更方便的使用接口。同时Java8还结合lambda定义了一系列常用且高效的api,如forEach,Stream,Optional等等。Lambda的起源Lambda起源于20世纪40年代,是一种数学表达式λ,也是一种函数演算。这在和面向对象,面向过程并称三大编程方式的函数式编程中用的极为广泛。其实不止Java,C++也早已引入了Lambda编程,同时学习Lam

2021-08-22 15:00:10 441

原创 MQ消费多业务场景的最佳实践

本质上是场景层面上的对同级业务分支过多的几种解决方案引言在很多项目中都会用到消息队列来做异步处理,那么必然会有消费者的一方。大多数时候,我们监听的消息可能包含多种topic,或者是多种bizCode,不同的bizCode需要多种处理逻辑,普通情况下,我们需要多个if-else来处理问题,如下:@Servicepublic class Subscriber implements MessageListenerConcurrently { @Override public Consum

2021-07-31 22:44:58 397

原创 我在大学所构建的技术体系

从我的角度来看,我对于整个大学所学到的知识分为三个部分,第一部分是专业能力,第二部分是沟通能力,第三部分是学习能力。下面我将分段落来阐述这三大部分。一.专业能力专业能力由里及表,我主要把其分为五个子模块,分别是硬件、操作系统、编程语言、程序和业务。不过需要强调的是,这个由表及里只是狭义上的,因为我们无法断定操作系统和编程语言哪个在里面,哪个在表面。我想,我这个划分更适合按照程序员接触的角度来说明。这几个模块只针对于我自己的专业,根据我自己的理解划分的1. 硬件对于硬件来说,它主要分为CPU、GPU

2021-06-08 13:54:06 458 2

原创 最近思考的一些技术问题

请使用任意语言写一个占用尽可能多内存,消耗尽可能多CPU的程序,程序要持续运行很长时间并且不崩溃如果使用Java的话则考察的是JVM的内存分配操作系统中的32bit和64bit是什么意思?用过哪些语言,各个语言的优缺点,为什么要用它?解释型语言和编译型语言的区别?这两种语言有什么优劣?性能,安全,编译和执行速度,内存占用?并发的目的是什么,你知道哪些并发编程的手段(语言无关)线程同步问题和安全问题如何解决?多线程的缺点如何解决?事务的特性和实现方式,要你来..

2021-06-01 14:44:13 142

原创 高效Spring开发

不知道身为读者的你是否用过Java?也不知道使用Java的你是否使用过Spring?如果上面两个问题你都回复是的话,那么这篇文章你应该好好看看,它可能会使你的工程代码更加丝滑。如果上面两个问题你给出任意一个否定的回答时,你可以离开,但是如果你执意驻留在此的话,你也可能会有一些不同的收获。同时,本文不会去讲Spring的源码和原理,只讨论如何高效使用Spring的特征如果你是Java开发者,当你看到这个标题的时候可能会嗤之以鼻:“Spring的特征,这能有什么?不就是IOC和AOP吗?”你想的没错,这

2021-04-04 21:07:15 350

原创 Mybatis中实体类和数据库字段的映射方式

这个东西我好久就想写了,之前在阿里实习时,所有MySQL的数据都会以D1的频率备份到ODPS上,而我负责的项目需要查询ODPS里面的数据,但是ODPS的Java SDK版本类似于JDBC一样配置多且难用,所以我就诞生了写一个针对于ODPS的工具类以方便后来者操作ODPS,在写的过程中,我发现最难的就是映射那一块,所以拖了好久,今天终于拿出时间来分析下这一块的东西。预备工作在聊Mybatis之前,还是要先说下传统的JDBC查询数据库的步骤:@Testpublic void testJdbc() {

2021-03-30 14:46:32 5027

原创 SpringMVC源码分析

前几天看了分析了@RequestBody的原理,并且DIY了一个参数解析器,今天趁热打铁,分析下SpringMVC的原理,主要包括启动流程和执行流程以及其设计思路。SpringMVC中的MVC指的是model view 和 controller,view指的是渲染的视图,model指的是应用中包含的各种数据,controller则是负责业务处理的控制器。对于整个流程来说,当一个HTTP请求进入服务器之后,controller会对后台的数据,即model进行加工处理,然后由SpringMVC将这些model

2021-02-18 21:06:32 202 2

原创 @RequestBody原理

通过Http传递参数一般有两种方式,一种是通过url解析参数,一种是通过body来解决,那么我们本次说的RequestBody就是去解析请求体然后映射到我们的参数,那 么它该如何解析body呢?这就是本篇博客诞生的目的。这个其实是SpringMVC中做的一个处理机制,在整个SpringMVC的处理流程中,会通过HandlerMethod来代理每个Map后的controller和method,在通过反射invoke method的过程中,会解析request来获得arguments,而@RequestBo

2021-01-27 15:50:25 24656 5

原创 鹅厂六轮游

从9月2号开始腾讯的WXG一面,到9月14号的HR面结束,终于又完成了一个公司的面试,对于0offer的我来说也确实是一场莫大的慰藉吧~整体来说比较难,前三轮中八股文比较少(携程一面全是八股文,把我背的累死),因为我对C++/go不太熟悉,所以语言方面问的比较少,更多的是算法和计算机网络,操作系统,以及各种各样的场景题一面基础vector申请堆内存的方式这个不会。。。(只记得如果是小内存的话直接申请,如果是大内存大的话用mmap来申请)红黑树的结构进程通信方式共享内存(重点介绍)管道(

2021-01-11 10:25:21 288 1

原创 拼多多二轮游

很久就投递了拼多多的拼越计划,但是笔试挂,然后在提前批的时候笔试成功,大概在9月7号的时候开始的一面,12号的时候二面,然后等了将近一个半月,直接HR面试,然后就过了。。。感觉是白菜,果断拒绝。一面第一轮面试比较偏重基础写出找到至少两门不及格的人的名次namescorecourse王星星98语文辰开26数学思路要分为两步,首先查询成绩小于60的列,将其作为一个子表,然后在该子表上进行聚合,然后在该表上查找出现次数超过两次的姓名,此时,即是所要求的答

2021-01-04 09:12:36 320

原创 我的2020

几天前我刚过完21岁生日,感觉一切都好快好快,仿佛我第一次过生日就在昨天,那个时候我还小,还记得当时外婆给我拿的大蛋糕…21岁的我,经历了太多太多,我总感觉自己发生了质变,大学将近4年的积累,遇见2020年这个爆发点,让我感觉到了不一样的自己。第一次步入社会给我较大的冲击,五花八门的职场关系和形形色色的人际关系搞的我头晕眼花。某种意义上,我是一个极其自负的人,但是被社会殴打后,我明白了夹着尾巴走路。一次次的教训让我明白了在社会中,不是每个人都能和我开玩笑,也不是每个人都会为我着想。社会让我看到了我的稚嫩

2020-12-31 20:28:25 265 2

原创 Kotlin学习笔记

作为一门Jvm的衍生语言,Kotlin在安卓阵营大放异彩,Google官方在19年IO大会上宣布全局支持Kotlin,究竟是人性的扭曲还是道德的沦丧?昨天组内安卓大神分享了Kotlin,今天我又参考了Google官方的文档,特来整理一下。壹. Kotlin的历史发展Kotlin是一种在Java虚拟机上运行的静态类型编程语言,它主要是由JetBrains开发团队所发展出来的编程语言,其名称来自于圣彼得堡附近的科特林岛。2010年,JetBrains着手开发Kotlin项目。2011年7月,JetBr

2020-12-24 21:32:10 334

原创 DIY一个参数解析器

在公司实习中,公司原有代码的RESTful请求中,GET和POST居多。我们知道,对于URL携带的参数来说,我们需要用@PathVariable,@RequestParam来进行解析和映射。对于POST的body来说,我们可以通过@RequestBody来把body映射到参数中,而Spring默认的反序列化方式是通过Jackson,我们也可以通过converter来改变。1. 从一个实验开始对于POST请求来说,前端往往会把参数序列化为Json放到body中,然后我们后端再通过@RequestBody对

2020-12-22 19:56:14 168

原创 论《工作拧螺丝》

很多人都在抱怨“面试造飞机,工作拧螺丝”的现象,透过这种现象,我们不妨想一下,为什么面试需要造飞机,同时,我们在工作中,拧的到底是什么螺丝呢?这篇文章的诞生经历比较神奇,是因为我昨天晚上躺上床,闭上眼睛,突然想到的一种个人和公司业务的一种关系。然后今天来就想把这种关系表达一下。因为个人能力和见识的原因,下面的解释不一定准确,但是对于新人来说,还是有一定的参考能力的。1. 从一个问题开始首先抛出这样一个问题,公司招人的目的是什么? 相信不难回答,无论公司的业务扩张,还是公司想招聘某些特殊人才,不容置疑的

2020-12-21 15:21:23 317

原创 百度三轮游

记得那是周五,一天连着四轮面试(上午两场+下午两场),上午是百度一面和shopee,下午两轮全是百度的一面String,StringBuffer, StringBuilderString是由final修饰的类,同时它是由byte(9+)或者char(8-)数组组成的,这些数组也是final的StringBuffer是线程安全的,StringBuilder是线程不安全的。StringBuffer是通过synchronized的方法级别来实现的对于StringBuffer和StringBuild

2020-12-20 17:24:12 252 1

原创 HEXO使用指南

最近用了hexo搭建博客,踩了许多坑,所以想总结一篇文章。包括每一步的做法,以及可能踩的坑,以及应对的办法:欢迎大家访问的我新博客:https://wxxlamp.cn大家可以参考这个文档;easyhexo1. 环境准备在使用HEXO之前,我们需要安装node.js和npm(因为node.js已经包含了npm,所以我们只需要更新npm即可)。同时因为npm是国外的源,我们一般都会设置淘宝的镜像,或者是用cnpm下载node.js和npm,我是按照这个教程来的,其中的安装vue我们可以不用搞。2.

2020-12-16 19:48:38 2806

原创 基于Tomcat的webSocket的使用方式和源码分析

WebSocket是基于tcp的一种全双工通信的协议,它在建立连接的时候需要使用http协议,之后开始连接之后会独立出来。通过,http的每次连接都需要建立在url之上,但是webSocket只需要一个url来建立握手。常见的webSocket有多种实现方式,如SpringBoot+tomcat,或者是springboot+netty使用方式以下的代码均是基于Spring+tomcat首先会在socket那里协商ServerEndPoint注解,然后注解出几个方法,如@BeforeHa.

2020-10-12 17:50:18 3442 1

原创 开水团四轮游

一面JavaHashMap和ConcurrentHashMapHashMap是基于拉链式的散列方法,当阈值超过3/4*cap时,就会进行桶的扩容,扩容时如果红黑树的个数小于6则重新变为链表。扩容的时候会拆分成两个链表(要么一致,要么差一个oldCap)ConcurrentHashMap有一个特别的字段sizeCtl,不同的值有不同的含义。当为负数时:-1代表正在初始化,-N代表有N-1个线程正在 进行扩容;当为0时:代表当时的table还没有被初始化;当为正数时:表示初始化或者下一次进行扩容的大

2020-09-07 09:56:07 217

原创 美团一面

美团基础架构部的软件中心主要负责容器化( 内核,调度,弹性,镜像,自动化运维)Java1. HashMap和ConcurrentHashMapHashMap是基于拉链式的散列方法,当阈值超过3/4*cap时,就会进行桶的扩容,扩容时如果红黑树的个数小于6则重新变为链表。扩容的时候会拆分成两个链表(要么一致,要么差一个oldCap)ConcurrentHashMap有一个特别的字段sizeCtl,不同的值有不同的含义。当为负数时:-1代表正在初始化,-N代表有N-1个线程正在 进行扩容.

2020-08-24 17:19:16 305

原创 字节1&2面

这是秋招提前批,一二面是连着的Web1. Redis的使用场景在我的项目中主要用来做三件事情:1. 缓存热点值;2. 缓存用户token;3. 缓存库存其他的还有如:分布式锁,zset的排行榜,pop/push生产者消费者,hash实现好友关系,登陆过期时间,计数器,布隆过滤器(推荐系统,爬虫系统等)2. Redis中key对于不同实例的映射算法Redis使用Hash槽来实现一致性hash如何解决机器少的问题这个是数据倾斜的问题,可以设置多个虚拟节点然后再hash3. Redis的集群模

2020-07-27 22:16:10 618

原创 优雅路由的思考

最近在看部门的业务代码,发现了好多路由的方式,结合之前对SpringIOC的学习,进行一下小小的总结我们小学二年纪就知道,Spring的IOC其实是一个Map,在我们getBean的时候去获取map中的value,也就是我们需要的bean。当我们业务中如果有多个业务需要去路由到不同的类上去执行不同的业务逻辑,该如何借鉴IOC的思想呢?我们是否也可以通过Map的形式把BizCode和其对应的类放到map中,然后等到需要的时候再去获取?如何存放到Map里面呢?这里就需要用到我们面试中“背”过的Sprin

2020-07-20 22:54:49 170

原创 Jpa爆出SQL语法错误

问题描述最近项目有用到Jpa,因为Jpa这种ORM框架和ibatis这样的框架不同,使用者不需要自己写SQL就可以对数据库完成增删查改,但是我在进行单元测试的时候发现在调用Jpa.save(Entity e)方法的时候,爆出的异常是SQL语法和版本不符,这就意味着SQL写错了...

2020-05-16 11:02:48 1068

原创 Mysql因为内存不够而不能启动

问题描述由于数据库在云上放着,在写项目的过程中组里成员突然发现数据库连不上了,然后我就登陆服务器看了一眼:数据库连不上然后我重启数据库的时候会提示一下:Job for mysqld.service failed because a fatal signal was delivered to the control process. See "systemctl status mysqld...

2020-04-29 09:51:13 1379 1

原创 这可能不仅仅是篇面经

1. 背景考虑到我大二学习Java的时候,在准备工作时不知道做什么,准备什么,这篇文章的目的主要是为了帮助哪些和我一样的人去准备实习和秋招。本人211(郑州大学)21届本科毕业生,和大佬相比,我还是一只蒻箕。不过在H大博客和知识星球的帮助下,我终于在20年实习招聘时拿到了阿里(Java)和腾讯(后台转C++)的offer,回想准备面试以及学习的这一路走来,尽管有些崎岖,但终于如愿以偿。2. ...

2020-04-08 11:52:19 1685 7

原创 阿里HR面&小米一面

小米一面1. Collection的实现类List Set(通过map实现)TreeSet和HashSet一个能通过红黑树排序,一个是使用使用hash2. Synchronized和ReetrantLock抛出异常的不同唤醒线程数目不同Jvm支持方式不同3. JDK1.8的特殊之处这个我竟然忘记说lambda和stream,然后我就跟面试官说,我是用太久1.8了,可能不觉得...

2020-04-01 16:08:10 910

原创 阿里交叉面&腾讯HR面

阿里交叉面问题都比较基础1. 缓存一致性双删+MQ2. mq的事物一致性两阶段提交3. mq的两阶段提交4. mq消息有序发送通过取模来放到同一个队列里面为什么这样保证5. 可达性分析6. RPC7. 线程的状态new,runnable,block,wait,timeWait,terminate线程阻塞和等待的区别8. NIO9. AOP如何实现代理模式?实现方式...

2020-03-31 20:48:08 2930 2

原创 腾讯视频二面【附常见HR面试问题】

网络1. TCP的粘包拆包如何处理1、发送端给每个数据包添加包首部,首部中应该至少包含数据包的长度,这样接收端在接收到数据后,通过读取包首部的长度字段,便知道每一个数据包的实际长度了。2、发送端将每个数据包封装为固定长度(不够的可以通过补0填充),这样接收端每次从接收缓冲区中读取固定长度的数据就自然而然的把每个数据包拆分开来。3、可以在数据包之间设置边界,如添加特殊符号,这样,接收端通过这...

2020-03-30 21:10:23 4261 2

原创 腾讯云&腾讯视频

腾讯云Java1. Java变量的传递方式值传递OS2. 栈和堆的区别(OS层面)栈是先进后出的,一般是OS自动分配的,堆是由程序员自己申请的函数定义的变量是在栈上,譬如malloc是在堆上操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时,会遍历该链表,寻找第一个空间大于所申请空间(可能是其他算法)的堆结点,然后将该结点从空闲结点链表中删除,并将该结点的空间分配给程序...

2020-03-29 10:37:34 596 2

原创 字节跳动二面复盘

感觉面试官挺不友好的,说不上来的怪。依旧没有问项目。这次其实挺亏的,很多问题都会,但是回答好像没有get到面试官的点,然后算法当时太紧张也没写出来,面试完立刻就写出来了cWeb1. Nginx和Redis的网络模型Nginx采用Master-Worker多进程模型(易于管理,各个Worker不相互影响),多路复用Redis基于内存和多路复用,同时采用单线程模型2. Nginx反向代理使...

2020-03-25 20:59:57 1297

原创 支付宝三面&字节跳动一面

支付宝支付宝是前天晚上9点半我在洗jio的时候电话打过来的,足以看出支付宝这边福报程度,P9大佬这个点还在加班,我吐。而且不预约是蚂蚁金服一贯的传统。这次面试应该也是过了,又面临着支付宝和阿里金融两难的选择境地。1. 项目中为什么要用Nginx用nginx做反向代理和负责均衡2. Nginx为什么可以做负载均衡一般来说公网延迟高,客户端与nginx之间的请求连接走公网,nginx先把这些...

2020-03-21 11:14:14 1486

原创 钉钉实习一面复盘

第十次面试,可以召唤某些东西了Java1. 常用的集合List,Map,SetCOW,ConCurrentHashMap保存许多ip用什么List2. HashMap的底层数据结构HashMap进行get的时间复杂度O(nlogn)多线程HashMap的操作3. 线程不安全会出现什么问题数据不一致,死锁4. 用多线程的场景漏桶算法,生产者消费者模式5. 线程池的使用场景...

2020-03-19 09:47:18 531 1

原创 支付宝二面&阿里金融三面复盘

支付宝二面我都不知道我什么时候过了一面了,可能是上次的蚂蚁金融那个把Java1. Java接触多久了2. 生产者消费者模式的实现方式3. Condition和notify的区别4. ConcurrentHashMap的原理5. 本地变量存在哪里6. volatile如何保证可见性7. 工作内存和主内存的存储方式8. JDK看过哪些源码9. String类的char[]编码方式...

2020-03-15 11:25:43 632

原创 蚂蚁金服一面&淘宝二面复盘

蚂蚁金服一面关于项目问的也比较坑,下面是蚂蚁金服的问题Java1. Jvm的内存结构jar包和final static在哪2. 双亲委派自己new一个java.lang.String有什么影响如果是实现双亲委派模型的类加载则直接报错,如果自己的类加载器的话也会报错,因为Jvm规定了只能有Bootstrap加载java.*包3. G1的优点适合低延迟DB4. MySQL的隔离级...

2020-03-13 14:46:48 1811

原创 阿里企业金融二面复盘

Java这次竟然没有一个Java基础相关的。。。。我极度怀疑面试官看了我博客,故意避开我会的。。。框架1. @bean的作用声明该返回值是一个bean运行还是编译 运行bean如何起作用通过@ComponentScan对包进行扫描通过什么查看注解反射有个查看annotation方法2. 为什么@Before可以AOP在spring的生命周期的后置方法中,先查找实现了poi...

2020-03-12 21:36:15 377

原创 阿里企业金融&阿里云实习一面复盘

我算法好慌企业金融(55min)是昨天晚上录音没录上我去,伤心。除了项目我MQ的防止消息重新消费没回答的多好,其他的基本都回答上来了。凭着记忆说一下把,不是太全,项目问了大概有20-30分钟阿里云(1h10min)是刚才视频面的,面试官人贼帅。因为是视频面,所以也没有录音下面的面试题都是我凭记忆记的Java1. HashMap和ConcurrentHashMapConcurrentH...

2020-03-10 22:30:41 315 2

Java集合框架思维导图PDF版

这个是我自己通过官方文档整理的Java集合框架的思维导图,和大家分享一下。原文链接在这里:https://blog.csdn.net/coder_what/article/details/89606987。如果没有c币的话可以通过刚才的链接联系我鸭,耶耶耶

2019-04-27

多个括号的实数四则运算

用C语言写的超详细的实数(带浮点数和负数)带多个括号的四则运算,方法类似递归适合新手。 编译器用的dev

2018-09-13

空空如也

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

TA关注的人

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