自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

naget的博客

技术道路上的每一点一滴都期待与您分享

  • 博客(46)
  • 资源 (1)
  • 问答 (2)
  • 收藏
  • 关注

原创 使用Spring的@Schedule别忘了这件事

哪件事?替换@Schedule定时任务的调度器,改变线程池大小,具体数值需要根据自己业务中的定时任务情况来评估。@Configuration@Slf4jpublic class SchedulingConfig implements SchedulingConfigurer { @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { log.info("replace D

2021-06-13 13:30:37 255

原创 用Redis中的zset实现一个限流器

你被限流过吗我还记得14年抢红米的时候,下面这个图是我最烦的一个图抢了两个星期,才终于买到了我的第一台小米手机:红米1s。小米商城加入了一个排队的机制,于是我们可以感知到自己被限流了,但大部分服务,比如最近各大电商的抢茅台活动,并没有让我们感知到限流,不管你是手速不够还是被限流,都会给你返回“很遗憾,已经被抢光了”类似的提示。不过确实也没必要让用户感知到这个机制(你看,程序员又想做产品经理的主了),毕竟结果都是一样的。对于这种火爆的活动,为了保证服务的稳定性,都需要对特定的接口进行限流,用Redis中

2021-01-10 21:20:18 1406 2

原创 Redis实现分布式锁

分布式锁初见 public static int count = 0; private static int expireTime = 50; private static String lockKey = "desc"; public void decr() { if (RedisPoolUtil.setNxPx(lockKey, "1", expireTime)) { try { //业务处理

2021-01-03 17:03:21 168

原创 Cause: java.sql.SQLException: Query result set is too large

解决方案:select * from table 改为 select id,name from table,只查询自己需要的字段报错原因:查询表字段过多,数据量太大

2020-10-19 15:26:55 915

原创 Web的核心:HTTP协议

概念HTTP全称“超文本传输协议”,是一个应用层协议,对Web的请求应答格式进行了规定。HTTP由两个程序实现,一个客户端程序,一个服务端程序。两者通过交换HTTP报文进行通信,客户端发出请求报文,并从服务端收到响应报文。请求报文和响应报文请求报文请求报文由请求行、首部行和实体三部分组成,如下图所示:请求行中包括三个部分。方法字段可以有几种不同的值,包括GET、POST、DELETE、HEAD和PUT。URL字段说明资源请求路径,版本字段说明该次请求使用的HTTP版本。首部行以键值对的方式为客户

2020-06-11 13:38:10 635

原创 计算机网络世界

计算机网络世界是人类虚拟出来的一个世界,但建立在物理可见的设备上面。这些设备包括:主机、服务器、移动设备、路由器、链路层交换机、调制解调器、基站、手机和蜂窝电话塔等。它将我们平时最常接触的设备,比如手机电脑等,称为网络的边缘;而将提供服务的服务器、路由器和交换机等称为网络的核心。如下面这个图,云彩是网络的核心,其余是网络的边缘。处在网络边缘的设备,想要上网,就需要通过因特网服务提供商(Internet Service Provider),简称ISP。网络提供商提供了什么呢?其实就是一个网络,这个网络由多

2020-05-18 14:50:04 299

原创 简单易懂的P2P通信原理

P2P即端到端我发一条微信给你,这不是P2P。因为消息并不是直接从我手机发送到你的手机,而是从我手机先发送到微信的服务器,服务器再转发到你的手机上,像下边这样:P2P是这样:P2P技术要解决的问题目前使用的终端设备(如手机),绝大部分都仅仅拥有网络提供商分配给的内网IP,而处在不同内网环境中的设备并不能够使用内网IP进行通信。P2P的技术储备...

2020-05-01 10:14:48 8631

原创 udp广播 安卓和pc互相收不到消息

事件在同一个wifi下,我有两个设备,一个pc,一个安卓。安卓用netty用发广播包,但pc就是收不到;pc发广播包,安卓也收不到。但是他们都可以收到自己的广播包。解决过程百度告知:虚拟网卡会过滤掉广播包我:禁用虚拟网卡,可是还是不行我:卸载所有虚拟机组件,可惜还是不行原因误打误撞发现原因是:家里用了小米路由器,小米路由器默认开启了AP隔离,但是坑人的是,小米路由器的管理后台竟然没有...

2020-03-02 14:17:57 1080 1

原创 shardingsphere踩坑实记

环境概况:组件版本springboot2.1.1.RELEASEmybatis-plus-boot-starter3.0.7.1sharding-jdbc-spring-boot-starter4.0.0-RC1踩坑记录:报错datasource不能完成注册(The bean ‘dataSource’, defined in class path ...

2019-12-12 13:10:43 8856 1

原创 他非让我分表

目录分库分表初见当分表来临时DEMO分库分表初见曾经为了面试,熟读并背诵了那么多骚操作,对于数据库这方面,常会背到的就是sql优化,分库分表了。面试官我同学,当你sql查询特别慢时怎么办呢?加索引加索引要注意些啥?巴拉巴拉...还是慢呢?读写分离,分散压力一致性问题呢?巴拉巴拉...数据量比较大,还是慢呢?分库分表具体说说水平切分,垂直切分按什么切分呢时间切分,关键字段切分有什么成熟方案吗?...

2019-12-05 22:56:52 157

原创 2019秋招招招招不到

管什么秋招不易,干就完了。1.滴滴新锐计划-java岗一面(1小时)自我介绍问了下专业(物联网工程)学些啥树的广度优先遍历都了解哪些数据结构找出最长连续序列长度,比如【8 5 4 1 2 3 7】子序列为12345,长度为5(使用set)数组和链表优缺点java的优点hashmap结构,线程安全吗,put方法的考察CHMJUC包看过吗gc回收算法类加载过程如何同...

2019-09-22 11:14:47 175

原创 阻塞队列中的线程协作(阻塞、唤醒、锁)

自己写一个阻塞队列阻塞队列所谓一种队列,主要操作由两个put放入元素和take取出元素。所谓的阻塞就是当多个线程同时存取数据时,如果遇到队列为空或者队列为满时,会发生阻塞。put:向队列中存入一个元素,如果已满,则阻塞当前线程,等待唤醒。如果正常存入了元素,那么唤醒其他阻塞的线程(有些执行take操作的线程因为队列为空而阻塞)take:从队列中取一个元素,如果队列为空,则阻塞当前线程,等待唤...

2019-07-27 10:55:40 1070

原创 lombok不生效解决方案

首先看这篇:https://blog.csdn.net/m0_37779977/article/details/79028299如果任然没有解决问题:有可能使lombok版本过低,请升级版本如图点击reload list of plugins,然后更行插件,并重启idea。(我的从0.8升到0.25完美解决问题)...

2019-07-24 19:08:56 4064

原创 2019春招(阿里文娱,后两面)

四面(中间夹杂着聊天,共一个小时左右)物联网都有些什么内容呀?(我的专业是物联网工程,所以问了这个)zigbee跟其他通信协议有什么优点吗?为什么不用蓝牙,wifi等平常看直播吗,看比赛吗?(面试官做直播的,世界杯那种赛事直播)你觉得5G跟4G相比有什么优势,会产生什么影响说一下hashmap的结构,跟hashtable,chm什么区别说一下http的原理(面试官想问的是TCP握手撒...

2019-05-18 10:37:43 463

原创 2019春招面经(阿里文娱,前三面)

一面(43分钟)1 排序算法(快排 归并 冒泡)2 网络分层,各个协议属于哪一层3 TCP 握手撒手(三握,四撒,每一步分别处于什么状态,连接中出现大量time_wait,可能是什么原因?)4 tcp和udp的区别5 hashmap和chm区别6 bean加载过程7 循环依赖如何解决8 threadlocal的作用,使用时注意些什么,内存泄露,陈旧entry不清理的话,除了内存泄漏...

2019-05-13 21:48:02 942

原创 编码和解码

概念字符的三种形态图片来自:https://zhuanlan.zhihu.com/p/25435644编码:将字符转为字节序列(abcdefg-------------> 0101010100101010010)解码:将字节序列转为字符(10010101010100010010110------> abcdefg)一个web项目中的编解码历程这个是个简单的场景:中间的...

2019-04-20 20:34:37 8814

原创 春招在即,题刷的怎么样了?

我还记得去年春招的时候,好多次死在了笔试上。对于研发岗,笔试大多数考察的就是基本的算法,甚至就是网上我们可以刷到的算法题。如果你有刷leetcode的习惯,那么你应该是可以过关斩将,AC到手软了。但对与大多数人可能没有时间或者其他原因,这个刷leetcode的进程总是会被莫名终止。如果有个人能领着我刷就好了,我就是这么想的,于是买了《剑指offer》,上面有68道算法题,涉及了涵盖数组、链表、树...

2019-01-08 15:38:49 295

原创 无符号数和有符号数

人有十个手指头,习惯了逢十进一,于是十进制成了生活中的标准。程序的世界只有高低电平两种状态,更适合用二进制来表示,于是二进制成了程序世界的标准。对与无符号数来说,我们更喜欢谈他们之间的转化,十进制是我们最习惯的进制,于是十进制转为R进制,R进制转为十进制变尤为重要。十进制——>R进制(整数部分小数部分分开转化,取到的第一个余或第一个整最接近小数点)将217转化为二进制数(除基取余法)...

2018-11-29 09:59:06 985

原创 使用bitmap进行大量数据的排序、判断存在与否

使用bitmap主要是可以减少存储空间的使用,用一个bit来存储一个元素的状态。当我们需要在一亿个数中判断某个数是否存在时,我们不需要将这一亿个数同时放入内存。排序首先有一个bit数组,如果我们排序的所有元素中最大的数是一亿,那么我们就需要这个数组大小初始化为一亿零一(加上0),从0排到一亿,每一位bit就对应这个数,比如第6个bit位对应数字5的状态,如果是1表示待排序中存在5,是0,,则表...

2018-11-10 20:03:22 2788

原创 DNS小述

DNS全称是Domain Name System,中文是域名系统。首先它是一个分布式数据库,由分层的DNS服务器组成;其次,它是一个应用层协议,使得主机能够通过这个协议来查询分布式数据库,DNS协议运行在UDP之上,使用53号端口。DNS三个作用:①别名映射 ②IP映射 ③负载均衡...

2018-11-08 14:28:51 122

原创 二叉树遍历总结(先序||中序||后序||按层遍历||之字遍历&&递归||非递归)

先序遍历:8 6 5 7 10 9 11后序遍历:5 7 6 9 11 10 8中序遍历:5 6 7 8 9 10 11按层遍历:8 6 10 5 7 9 11之字遍历:8 10 6 5 7 9 11先序遍历递归 public static void printBTPerRecursion(TreeNode root){ if (root!=null){ ...

2018-11-06 18:45:35 125

原创 linux命令小记

2018-10-31 16:29:25 169

原创 联合索引这点事儿

我们从头开始ER图建表按照ER图,建立数据库和表,并且进行测试数据的填充。(建表sql和填充脚本的文件可公众号(Vegout)回复关键字“联合索引”获取)sql优化——建索引1、查询所有标题以title666开头的文章select * from article where title like "title666%"结果已找到记录: 1,111 警告: 0 持续时间 1 ...

2018-10-23 20:46:31 1222

原创 新装的linux设置root密码

2018-10-22 14:34:33 5772

原创 ThreadLocal详解

保证线程安全一是可以同步对共享资源的操作和访问,二是不共享。就像ThreadLocal这样,给每个线程分一个对象,每个线程也只能访问到自己的这个对象,从而保证线程安全。就像SimpleDateFormat这个类,咋也没想到它是线程不安全的,既然线程不安全我们就给每一个线程都实例化一个SimpleDateFormat,自己用自己的就安全了,ThreadLocal就给我们实现了分配线程私有对象这么个功...

2018-10-19 14:46:15 181

原创 浅谈java线程池(基于jdk1.8)

多线程让程序世界丰富多彩,也让其错综复杂。对于线程的创建和销毁成了一笔不小的开销,为了减少这些开销,出现了线程池。线程池对线程进行管理,对于需要使用多线程的你来说,只需要把你的任务丢给线程池就可以了。当你把任务丢给线程池的时候,它是如何处理的呢?我们去源码中寻找踪迹。ThreadPoolExecutor线程池在JDK中的主要实现类就是这个ThreadPoolExecutor。我们首先看一下他的...

2018-10-09 14:09:44 258

原创 浅析ClassLoader的双亲委派

小引public class Demo { public static void main(String[] args) { System.out.println(Demo.class.getClassLoader().toString()); }}输出sun.misc.Launcher$AppClassLoader@18b4aac2小n:都说java...

2018-10-05 17:28:38 223

原创 JDK1.8HashMap源码解析

数据结构JDK1.8中的HashMap采用了数组加链表加红黑树的数据结构,就像这样:每当插入一个元素的时候,就会对这个元素的键的Hash值按此时的数组长度取模,然后装入对应的位置。比如一个hash值为14的元素插入一个table长度为16的hashmap中,14对16取模是14,于是就装入14这个位置。不同的元素取模之后发生碰撞,比如30对16取模也等于14,这样也需要放入14的位置,于是就...

2018-09-29 16:52:31 642

原创 计数排序

计数排序和原来说过的几个排序算法有一个特别大的不同之处:它是一个不基于比较的排序算法。不管是快排,归并,还是堆排,它们都难以突破NlogN的运行时间下限,而计数排序是一个线性时间级别的排序算法。对NlogN的突破凭借的就是不基于比较对元素进行排序,当然了,它也有很大的局限性,比如它只能对整数进行排序。总之,计数排序是一种对整数进行排序非常有效的排序算法。计数排序的思想就是记录每个元素出现的次数,...

2018-09-26 21:59:46 3526 1

原创 子字符串查找之KMP

这里写自定义目录标题字符串查找字符串查找模式ABABAC字符串文本ABABAABABAC当我们需要从文档中查找某个关键词时,就用到了子字符串查找技术。比如在某个数据库导出文档中想要查找所有用户的密码,想在一个学长给的word题库中查找你正在做的检测题的答案。就像上边这个表格,我们想要在字符串文本中查找模式所在位置,并返回这个位置给用户。这个功能是怎么实现的呢?...

2018-09-20 11:43:16 1650

原创 无向图

概念轰炸图是由一组顶点和一组能够将两个顶点连接的边组成的x-y表示x到y的一条边一条连接一个顶点和其自身的边称为自环连接同一对顶点的两条边称为平行边含有平行边的图称为多重图某个顶点的度数即为依附于它的边的总数当两个顶点通过一条边相连时,我们称这两个顶点是相邻的,并称这条边依附于这两个顶点子图是由一幅图的所有边的一个子集(以及它们所依附的所有顶点)组成的图如果从任何一个顶点都存...

2018-09-15 21:34:47 589

原创 初识红黑树

小引——2-3树二叉查找树中,每个结点上有一个键和两个链接,我们称这种结点为2-结点。所以,有着两个键和三个链接的结点我们称之为3-结点。由2-结点和3-结点构成的树称为2-3树。 2-3树和上一篇说的普通二叉查找树最大的不同就是,它可以保持树的平衡,从而避免了二叉查找树的最坏情况的出现,守住了对数级别操作的底线,通过的办法就是自下向上生长。查找查找很简单,跟二叉查找树是类似的,...

2018-09-07 22:13:44 152

原创 二叉查找树中的插入查找和删除

上一篇文中,通过二分查找,我们实现了对数级别的查找方案,但因为使用了数组这一数据结构,插入时需要移动大量的元素,导致插入动作任然很慢。为了减少移动的元素,我们这次使用链表,为了保持二分查找的效率,我们将二者结合起来——二叉查找树。 一个二叉查找树就是一个二叉树,每个节点上包含有一个键一个值一个指向左节点的链接一个指向右节点的链接(这个图中的数字代表键,值没有显示)。而且每个结点的键都大于其左...

2018-09-05 17:06:10 10026 4

原创 无法连接到此网络 win10

今天回家,发现连接不上家中的无线网了,报的就是这个错 无法连接到此网络只要一连,就报这个错,没有任何其他提示。重启大法也没能解决这个问题,我就百度了一下,还好,百度依旧保持了他原来的风格,搜出的绝不是你想要的(不好意思,又黑了你一把度度,实习生把我收了我就把这句删了呗嘿嘿嘿) 最后瞎捯饬一翻,发现“忘记密码”一次,然后重输密码就可以了。 ·...

2018-07-08 10:00:50 20719 4

原创 spring源码中的aspects包无效,debug之路何去何从?(总结spring源码debug环境搭建步骤)

前言:原来根据其他博文搭建了spirng源码debug环境,可惜的是aspects包在idea中不能完成编译,只能unload,但是这样做了之后,就不能debug源码的aop部分,于是有了这篇博客。 1. 下载源码 预编译oxm模块 导入idea自动构建 将aspects包unload 5.自己新建一个module,用来编写demo 我新建的demo是maven...

2018-05-24 13:31:59 6800

原创 六个文件开启mybatis之旅

第一个文件(POJO):User.javapublic class User { private Long id; private String name; private String sex; private int age; public User() { } public User(String name, String sex, int

2017-11-27 13:49:41 202

原创 Jquery.form.js的使用

面临问题:form表单submit之后,后端会返回提示信息。但原生html无法获取后端返回的数据,就造成了这样一种局面:提交之后,页面发生跳转,在一个空白页面上显示了后端返回的json数据,用户体验0分。解决办法:使用jquery.form.js 步骤自定义控制提交函数 var submitChange=function () { $("form").ajaxSubmit(f

2017-06-13 20:04:17 654

转载 centOS重装mariadb

Centos7上卸载Mariadb数据库查询所安装的MariaDB组件:[root@localhost logs]# rpm -qa | grep Maria*MariaDB-server-5.5.49-1.el7.centos.x86_64MariaDB-common-5.5.49-1.el7.centos.x86_64MariaDB-client-5.5.49-1.el7.centos.x

2017-05-24 16:12:04 674

原创 Error during execution of processor 'org.thymeleaf.standard.processor.text.StandardTextInliningTextP

错误1:Error during execution of processor ‘org.thymeleaf.standard.processor.text.StandardTextInliningTextProcessor’说明后端返回给前端一个modelAndView modelAndView.addObject("article",article); modelA

2017-05-21 16:45:28 6973 2

原创 感性认识spring的IoC

我们在程序开发时,作为一个java的发烧友,一定是将面向对象的思想熟记于心。当我们想要吃红烧肉时,我们不再去买肉,买油,买菜,买各种原料,而是new一个厨师出来,然后get一盘红烧肉。与面向过程的C语言来说,着实方便了不少。但时代在进步,技术在发展,我们可以有更加方便的做法。让厨师来做红烧肉,我们还得自己去叫厨师,如果有一天我们想打扫屋子,还得自己去找清洁工,于是我们想,如果能有一个代理人,我需要什

2017-04-15 09:35:47 721 2

计算机网络 习题答案(谢希仁)

大学教材《计算机网络》的课后习题答案

2017-04-07

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

TA关注的人

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