自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(75)
  • 收藏
  • 关注

原创 用MiniPC搭建个人服务器

最近突然对小型电子产品产生的兴趣,经过一段时间调查,最终选择从迷你PC下手。因为类似树莓派的产品,还是有一定的上手门槛的。开发板类的产品也更偏硬件一点。而迷你PC除了小一点,其实就是一台电脑,我之前也有一些组装经验,还可以学习一下Linux和运维知识,技能点上也更契合我的职业。硬件介绍硬件规格CPU:英特尔13代处理器N100,4核4线程,最高频率3.4GHz,配备24个EU的核...

2023-03-05 19:34:00 1148

原创 0基础就可以上手的Spark脚本开发-for Java

前言最近由于工作需要,要分析大几百G的Nginx日志数据。之前也有过类似的需求,但那个时候数据量不多。一次只有几百兆,或者几个G。因为数据都在Hive里面,当时的做法是:把数据从Hive导到MySQL,然后写代码查询MySQL并处理。如果你的处理逻辑比较简单,或只是查询统计,不会设计上游的服务调用,也可以直接写Hive SQL。上面的做法在面对少量数据时还可以应付,对于大量数据就很不可取了。...

2022-07-16 11:44:00 149

原创 VS Code Go开发环境配置

1.安装Go下载网址:https://go.dev/doc/install根据自己的操作系统来进行安装,官网针对Windows、Linux、macOS都有对应教程。安装完成后打开终端,输入go version,成功输出版本号,代表安装成功。go versiongo version go1.18.3 darwin/arm642.安装Go插件3.更新Go tools打开VS Code...

2022-07-14 21:22:00 544

原创 【算法】链表的基本操作和高频算法题

链表的基本操作链表的基础操作有查找、删除、添加。查找先定义一下链表的数据结构:class DataNode{ int key; int value; DataNode pre; DataNode next; public DataNode(){}; public DataNode (int key,int va...

2022-05-21 21:56:00 197

原创 【Elastic-2】SpringBoot整合ELK、SpringBoot写ES

ELK相关TODO 快速开始文档(https://www.cnblogs.com/lbhym/p/15934416.html) SpringBoot整合ELK ELK接入Kafka(待Kafka快速开始文档完成之后)Kafka相关TODO Kafka快速开始文档,包含下载、配置、启动、Java Client等 管理Kafka及常见问题解决,包含Kafka Manager、Adm...

2022-03-01 07:56:00 129

原创 【Elastic-1】ELK基本概念、环境搭建、快速开始文档

TODO 快速开始文档 SpringBoot整合ELK(Logstash收集日志、应用主动向ES写入) ELK接入Kafka基本概念ElasticSearch什么是ElasticSearch?首推官网的解释: https://www.elastic.co/guide/en/elasticsearch/reference/7.11/elasticsearch-intro.html...

2022-02-25 08:41:00 278

原创 更准确的测试Java程序性能——JMH基准测试

什么是JMH​ JMH,即Java Microbenchmark Harness,Java平台下的一套微基准测试工具。如果我们需要测试API性能的话,就可以用上这个工具,所以它并不是取代单元测试的。它可以在开发阶段提供性能参考标准,不过这并不代表线上的性能表现,不同的硬件和操作系统也会带来性能差异,所以最终还是需要上到测试或沙箱环境,让测试人员进行压测。为什么需要JMH​ 在了解JMH之前...

2021-10-03 11:51:00 304

原创 20210828每周分享(第二期)-中英文对照翻译插件、笔记软件

1.资讯集中​ 发现个非常好用的资讯集中网站,每天早上到公司后,都会打开看看。不用把时间浪费在刷各种APP上,每天稍微了解下时事就行。​ 网址:http://make.mk/2.中英文对照翻译插件​ 前段时间由于工作上的需求,学习了下大数据相关的技术。最后发现最好的资料不是什么《XXX权威指南》,而是官网文档。特别是各种框架、中间件(我一般叫作实用技术),学习这些东西最好的方式就是看官方...

2021-08-28 17:06:00 450

原创 20210801每周分享(第一期):有道云笔记导出、思维导图、互联网学历

没错,这是第一期。突发奇想,专门开一个分类,记录每周的收获、见闻、好用的软件、有用的资源等。写每周分享的目的:第一点是可以记录自己每周的收获,当一个公开的周志;第二点是想撑一撑博客的数量。自从秋招结束后,很少写博客了。一是不想再写一些学习笔记,效率低浪费时间不说,关键是也没人看。正经人谁看不知名的博客学习新知识啊。倒不是说,学习笔记不重要,只是换了种方式,后面会说。二是想写一些有干货、有内容、...

2021-08-01 09:43:00 1382

原创 简单了解下为什么会乱码,以及怎么恢复

计算机是如何存储字符的?​ 大学都学过计算机相关的基础知识,计算机只能计算二进制数据,因为二进制表示起来最方便。计算机电子元器件表示两个状态很简单,比如高压和低压,对应的就是1和0。如果设计出10种状态,那么计算机的设计会相当复杂。​ 计算机想存储我们现实世界的字符,也就是我们常用的汉子或者字母。最简单的方法就是把每个字符都对应一个数字,数字都能转为二进制,这样相当于计算机间接的存储了字符。...

2021-07-31 17:47:00 991

原创 超贴心的,手把手教你写爬虫

目录网络编程urllib库urllib.request.urlopen函数urllib.request.Request类urllib.error异常处理模块requests库用爬虫下载小说爬取京东商品信息在人生苦短我用Python,本文助你快速入门这篇文章中,学习了Python的语法知识。现在我们就拿Python做个爬虫玩玩,如果中途个别API忘了可以回头看看,别看我,我没忘!(逃...

2021-01-14 21:35:00 2429

原创 人生苦短我用Python,本文助你快速入门

文章目录前言Python基础注释变量数据类型浮点型复数类型字符串布尔类型类型转换输入与输出运算符算术运算符比较运算符赋值运算符逻辑运算符if、while、for容器列表元组字典集合函数函数的定义缺省参数命名参数不定长参数匿名函数闭包和装饰器包和模块包模块面向对象类和对象构造方法访问权限继承异常处理捕获异常抛出异常文件操作读写文件文件管理操作JSON正则表达式单字符匹配数量表示边界表示转义字符匹配分组操作函数友情提示:本文针对的是非编程零基础的朋友,可以帮助我们快速了解Python语法,接着就可以快乐的投

2021-01-13 18:23:12 703

原创 拨开Dubbo最后一层面纱,服务调用过程源码解析!

目录0.服务的调用1.发送请求2.请求编码3.请求的解码4.调用具体服务5.返回调用结果6.接收调用结果Dubbo SPI源码解析①Dubbo服务暴露源码解析②Dubbo服务引用源码解析③​ 经过前面三章的分析,了解了Dubbo的基础:Dubbo SPI,了解了Provider的服务暴露和Consumer的服务引用。最后我们需要学习一下服务完整的调用过程。Dubbo服务调用过程...

2020-12-27 11:48:00 174

原创 Dubbo服务引用源码解析

​ 上一章分析了服务暴露的源码,这一章继续分析服务引用的源码。在Dubbo中有两种引用方式:第一种是服务直连,第二种是基于注册中心进行引用。服务直连一般用在测试的场景下,线上更多的是基于注册中心的方式。​ 服务的引用分为饿汉式和懒汉式,饿汉即调用ReferenceBean的afterPropertiesSet方法时引用;懒汉即ReferenceBean对应的服务被注入到其他类时引用,也...

2020-12-27 11:39:00 275

原创 Dubbo服务是怎么暴露的?看源码就知道了

目录0.配置解析1.开始export2.组装URL3.服务暴露疑问解析​ 先放一张官网的服务暴露时序图,对我们梳理源码有很大的帮助。注:不论是暴露还是导出或者是其他翻译,都是描述export的,只是翻译不同。0.配置解析​ 在Spring的配置文件中,Dubbo指明了DubboNamespaceHandler类作为标签解析。​ 与服务相关的显然就是service,找到对应的Se...

2020-12-26 14:10:00 262

原创 程序员必须掌握的Linux命令

目录man:帮助命令echo:输出date:时间reboot:重启poweroff:关闭系统wget:下载ps:查看进程状态top:任务管理器pidof:查询某个指定进程的PID值kill:终止某个进程killall:终止某个服务的所有进程ifconfig:查看网络配置以及信息uanme:查看系统内核与版本信息uptime:查看系统负载信息free:查看内存信息who:当前登录用户的信息...

2020-09-21 18:45:00 189

原创 【计网】图解HTTP常见知识点总结

目录目录目录初识TCP/IPTCP/IP协议族4层模型初识HTTP请求和响应HTTP报文HTTP状态码HTTP报文首部其他的首部字段确保WEB安全的HTTPSHTTPS工作原理初识TCP/IP​ 了解HTTP之前我们得了解一下TCP/IP协议族。我们通常所说得TCP/IP协议族是互联网相关的各类协议族的总称,而HTTP属于它内部的一个子集。还有一种说法认为TCP/IP是指TCP和I...

2020-07-19 15:08:00 313

原创 Java反射机制详解【作用+原理+API+示例用法】

作用  反射的定义:在运行状态中,能获取任意一个类的所有方法和属性;能调用一个对象的所有方法和属性。这种动态获取类信息和动态调用对象方法和属性的功能就是Java的反射机制。  注意定义中的措辞,是所有的方法和属性,即使是私有的也能调用。所以功能是非常强大的。但在我们日常开发中很少会用到反射机制,因为正是这种强大的机制反而会破坏我们应用代码的封装性。日常中不用不代表就没用,很多框架的设...

2020-06-03 14:06:00 651 1

原创 一点点点点点算法刷题总结

  截至2020年6月2号,牛客+LeetCode,一共刷了170道左右。从3月底开始每天早上雷打不动地刷两道算法,已经成为了个习惯,即使以后上班了也会保持这个习惯,但是题量可能会降到每天一道。也许日常开发中算法用的不多,但是刷多了算法,自然而然的就养成了一个写代码非常严谨、追求简洁的心态。而且对各种数据结构和位运算的应用也越来越熟悉。  虽然很多大佬说吃透LeetCode Top1...

2020-06-02 11:38:00 614

原创 Java并发编程:线程池ThreadPoolExecutor

  多线程的程序的确能发挥多核处理器的性能。虽然与进程相比,线程轻量化了很多,但是其创建和关闭同样需要花费时间。而且线程多了以后,也会抢占内存资源。如果不对线程加以管理的话,是一个非常大的隐患。而线程池的目的就是管理线程。当你需要一个线程时,你就可以拿一个空闲线程去执行任务,当任务执行完后,线程又会归还到线程池。这样就有效的避免了重复创建、关闭线程和线程数量过多带来的问题。Java并发...

2020-05-19 20:31:00 181

原创 Java并发编程:线程和锁的使用与解析

线程的使用 新建线程  新建一个线程有两种方法:继承Thread类,然后重写run方法;实现Runnable接口,然后实现run方法。实际上Thread类也是实现的Runnable接口,再加上类只能单继承,所以推荐使用Runnable接口。示例如下:class Demo1 implements Runnable{ @Override public void ...

2020-05-18 22:09:00 164

原创 MySQL——关于索引的总结

索引的优缺点  首先说说索引的优点:最大的好处无疑就是提高查询效率。有的索引还能保证数据的唯一性,比如唯一索引。  而它的坏处也很明显:索引也是文件,我们在创建索引时,也会创建额外的文件,所以会占用一些硬盘空间。其次,索引也需要维护,我们在增加删除数据的时候,索引也需要去变化维护。当一个表的索引多了以后,资源消耗是很大的,所以必须结合实际业务再去确定给哪些列加索引。索引的结构  ...

2020-05-10 12:15:00 91

原创 常用设计模式的实现,以及Netty中的设计模式

1.观察者模式  有两个角色,观察者和被观察者。当被观察者发出消息后,注册了的观察者会收到其消息,而没有注册的观察者就不会收到。//定义观察者接口interface Observer{ //通知观察者 void notify(String message);}//定义被观察者interface Observed{ //注册观察者 void ...

2020-05-07 17:16:00 162

原创 Netty入门与实战教程

  前言:都说Netty是Java程序员必须要掌握的一项技能,带着不止要知其然还要知其所以然的目的,在慕课上找了一个学习Netty源码的教程,看了几章后着实有点懵逼。虽然用过Netty,并且在自己的个人网站上实现了聊天室的功能。但是使用的还是Netty很少一部分功能,很多组件都没涉及,很多API也似懂非懂。基础都没打牢,学习源码肯定懵逼。正好在掘金小册上找到了一个Netty入门的教程,链...

2020-04-25 14:53:00 889

原创 手动搭建I/O网络通信框架4:AIO编程模型,聊天室终极改造

第一章:手动搭建I/O网络通信框架1:Socket和ServerSocket入门实战,实现单聊第二章:手动搭建I/O网络通信框架2:BIO编程模型实现群聊第三章:手动搭建I/O网络通信框架3:NIO编程模型,升级改造聊天室  上一章讲到的NIO编程模型比较主流,非常著名的Netty就是基于NIO编程模型的。这一章说的是AIO编程模型,是异步非阻塞的。虽然同样实现的是聊天室功能,但是...

2020-04-17 16:49:00 281

原创 手动搭建I/O网络通信框架3:NIO编程模型,升级改造聊天室

第一章:手动搭建I/O网络通信框架1:Socket和ServerSocket入门实战,实现单聊第二章:手动搭建I/O网络通信框架2:BIO编程模型实现群聊第四章:手动搭建I/O网络通信框架4:AIO编程模型,聊天室终极改造  在第二章中用BIO编程模型,简单的实现了一个聊天室。但是其最大的问题在解释BIO时就已经说了:ServerSocket接收请求时(accept()方法)、...

2020-04-14 15:27:00 137

原创 手动搭建I/O网络通信框架2:BIO编程模型实现群聊

第一章:手动搭建I/O网络通信框架1:Socket和ServerSocket入门实战,实现单聊第三章:手动搭建I/O网络通信框架3:NIO编程模型,升级改造聊天室第四章:手动搭建I/O网络通信框架4:AIO编程模型,聊天室终极改造  在第一章中运用Socket和ServerSocket简单的实现了网络通信。这一章,利用BIO编程模型进行升级改造,实现群聊聊天室。  所谓BIO,就...

2020-04-11 19:40:00 129

原创 手动搭建I/O网络通信框架1:Socket和ServerSocket入门实战,实现单聊

资料:慕课网  第二章:手动搭建I/O网络通信框架2:BIO编程模型实现群聊  第三章:手动搭建I/O网络通信框架3:NIO编程模型,升级改造聊天室  第四章:手动搭建I/O网络通信框架4:AIO编程模型,聊天室终极改造  这个基础项目会作为BIO、NIO、AIO的一个前提,后面会有数篇博客会基于这个小项目利用BIO、NIO、AIO进行改造升级。  简单的说一下io,了解的直...

2020-04-10 14:48:00 219

原创 Java高效编程:总结分享

参考资料:慕课网:Java高效编程收费实战课程、博客园、CSDN、菜鸟教程以及其他文档。篇幅受限,不太想针对每个点都写篇博客,有的地方可能写的不是很详细,一笔带过了。如果你觉得那个点在项目中用得上可以另行搜索一些相关的更详细的博客或文档。1.Lambda和函数式编程  函数式编程即可以把函数当作变量、参数、返回值传递。实现的方法就是定义一个函数式接口,函数式接口即只有一个抽象方法的...

2020-03-25 19:21:00 197

原创 Redis的几种应用实战

1.分布式锁:实现:用set key value ex time nx指令实现,这个指令以及其参数是原子性的操作。释放锁用del key,释放之前先比较一下value是否与当前的value一样,原因见后面。key为锁名。value为随机数并用一个变量记录这个随机数。ex是个set指令的参数,代表time秒后该key自动删除。nx是set指令的参数,代表没有该key时才设置它的值。说明...

2020-03-20 10:05:00 210

原创 SpringBoot+Netty+WebSocket实现实时通信

这篇随笔暂时不讲原理,首先搭建起一个简单的可以实现通信的Demo。之后的一系列随笔会进行一些原理上的分享。不过在这之前大家最好了解一下Netty的线程模型和NIO编程模型,会对它的整体逻辑有所了解。更新一篇关于NIO的博客:手动搭建I/O网络通信框架3:NIO编程模型,升级改造聊天室首先创建好项目后在pom.xml引入Netty依赖<dependency> ...

2020-03-15 13:40:00 700

原创 深入理解Java虚拟机第三版,总结笔记【随时更新】

最近一直在看《深入理解Java虚拟机》第三版,无意中发现了第三版是最近才发行的,听说讲解的JDK版本升级,新增了近50%的内容。这种神书,看懂了,看进去了,真的看的很快,并没有想象中的晦涩难懂,毕竟是公认的经典,作者书面描述能力肯定了得。虽然这种书,不会让你的代码能力马上提升,但是真正的让你知其然,还知其所以然。等遇到了这方面的问题,肯定不会像无头苍蝇一样,一头雾水,起码有一定的思路。...

2020-03-10 21:46:00 295

原创 深入了解MySQL,一篇简短的总结

MySQL的基本语法这里作为MySQL部分模块的深入了解,大部分都是理论方面的笔记,不会写具体用法。具体用法会记录在下面这个随笔分类下,不过暂时还没更新完,等过段时间会更新下事务、存储过程、索引等用法,虽然都很简单,就当做个完整的笔记。https://www.cnblogs.com/lbhym/category/1493919.html一个关系型数据库的基本模块以下模块也不...

2020-02-21 11:48:00 177

原创 初识Redis,看这一篇就够了

环境的搭建和安装网上有很多教程,在这里就不再重复了。1.Redis是什么?Redis(全称:Remote Dictionary Server 远程字典服务)是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库。大家可能知道Redis是做缓存用的,它实际上也是一种数据库,可以对经常使用到的数据进行存储,也就是大家所说的缓存。官方给...

2020-02-11 14:12:00 93

原创 递归到底是怎么实现的?它的时间复杂度怎么算?

递归到底是个啥?常听见的一句话就是:自己调用自己。按照这个说法,写个简单的递归自己推导一下的确可以,但是总是有点绕,推着推着自己把自己陷进去了。递归函数运行时,实际上会进行一个压栈(思考栈的特点,先进后出,后进先出)的过程。写个简单的递归排序算法:public static void main(String[] args) { int[] arr={1,3,4...

2020-01-14 22:10:00 706

原创 SpringBoot如何使用PUT、DELETE请求方式

SpringBoot 2.2.X默认不支持put,delete等请求方式的。首先需要在配置文件中打开他们,代码如下:spring.mvc.hiddenmethod.filter.enabled=true然后在form标签里面声明method为post最后在form里面使用以下标签<input th:type="hidden" name="_method" value...

2019-12-24 08:50:00 635

原创 SpringBoot默认日志的使用方法及常用配置

SpringBoot默认采用slf4j+logback 的组合形式,但也提供对JUL、log4j2、Logback提供了默认配置。我们使用IDEA的spring初始化创建一个springboot项目后,运行一下开始方法。控制台输出的一堆如下的信息其实就是日志在配置文件中配置日志1.配置日志输出级别打开测试方法,输入以下代码。@SpringBootTestclass S...

2019-12-05 16:39:00 300

原创 SpringBoot配置文件可存放位置和加载顺序

使用IDEA创建一个spring初始化项目后。默认的配置文件在resources文件夹下。SpringBoot启动时,会扫描application.properties或application.yml文件作为默认的配置文件。扫描的位置有四种,有不同的优先级。按照优先级的高低,高优先级的配置内容会覆盖低优先级的配置内容。具体位置和优先级如下图序号所示如果你使用的是IDEA,新建...

2019-12-05 11:17:00 160

原创 SpringBoot项目在IDEA中以jar方式部署

1.在pom.xml下添加如下插件这个插件可以在项目打包成jar包后,通过java -jar运行<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> ...

2019-12-04 16:58:00 233

原创 使用IDEA创建SpringMVC项目

作为一名从.NET转Java的小渣渣,之前都是听说Java配置复杂,今天算是见识到了。甚是怀念宇宙第一IDE VS和.NET高效的开发。网上大多教程是基于Eclipse的,即使按照IDEA的教程做,第一次上手,或多或少有些问题,特意在这里做个笔记和分享。我的IDEA版本是2019.2,Tomcat是9.0,JDK是1.8,按照以下步骤操作,应该没啥问题。1.创建项目2.命名...

2019-12-02 16:01:00 245

空空如也

空空如也

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

TA关注的人

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