自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(89)
  • 问答 (1)
  • 收藏
  • 关注

原创 SpringBoot+Vue搭建前后端分离的轻博客

之前用SpringBoot+Thymeleaf写了个人博客,这次又来炒冷饭,用新的技术来重构个人博客,并把它变成开放式的,目前水平有限,欢迎大家一起讨论提建议为啥叫它轻博客,这是临时想的名字,因为目前它的功能没有那么多,很简单的一些功能,为了不太Low就取个比较清新的叫法,之前是想叫VBlog,但是后面发现有大佬已经写了个叫VBlog的了,还是别跟人家重名好了。。。本次使用的技术有:前端...

2020-03-02 00:01:07 2501 8

原创 SpringBoot搭建个人博客

前言一直觉得有个自己的博客是件很酷的事情,而且在搭建的过程能够提升的自己的编程能力,所以趁着暑假的时候完成了这个目标,前前后后花了半个月的时间吧,目前还是最简易的版本,后面会持续更新本次所用到的技术和框架SpringBootMysqlMybatisThymeleafSpringSecurityPageHelperDruidredis页面与展示使用的是:AmazeUI后台...

2019-09-16 07:07:06 10344 19

原创 Netty源码解析-启动服务

netty源码解析-启动服务Netty的源码可以从GitHub中下载Netty,然后用IDEA打开编译,源码解析从源码提供的example中的EchoServer例子入手,全程使用IDEA的debug模式进行源码跟踪Netty启动服务流程创建NioEventLoopGroup和Selector现在的Netty一般都使用主从Reactor的模式,NioEventLoopGroup可以当作成一个线程组,里面的元素是NioEventLoop,NioEventLoopGroup在初始化的时候,会根据设置

2022-04-17 11:14:27 658

原创 DIM-基于Electron,Netty和SpringBoot的分布式IM

theme: cyanosisDIM-基于Electron,Netty和SpringBoot的分布式IM先说下背景,因为作者最近在学Netty,想着把学到的运用一下,所以就有了这个项目项目介绍DIM的D指的是distributed,界面用的是Electron+Vue2搭建(为什么不是Vue3,因为主要方向还是后端,没有去研究Vue3,后续打算学个React,用React再写一个),后端使用的是SpringBoot,Netty作为通信框架,Kafka作为不同服务器之间转发消息的桥梁,Zookee.

2022-04-12 22:33:34 3131 1

原创 浅谈Java-Nio

浅谈Java-NioNio于jdk1.4引入,不同于Bio,Nio(No-Blocking)意为非阻塞IO,Nio是基于通道的,面向缓冲的io。其非阻塞和多路复用的特性使其能够支持高负载,高并发的网络应用netty,mina等底层都是使用的Nio阻塞和非阻塞我会用几段Nio的代码来展示下阻塞和非阻塞的区别阻塞服务端:public class Bserver { public static void main(String[] args) throws IOException {

2022-01-31 13:08:59 885 1

原创 python实现截图自动生成符合markdown的链接

python实现截图自动生成符合markdown的链接,同时将链接设置到剪贴板中,只需在markdown中ctrl+v就可插入图片

2022-01-24 00:16:46 1989 3

原创 Electron+Nodejs+SpringBoot+Socket构建IM

之前写的个人项目都是博客之类的,这次打算写一个新的东西,加上本身对网络编程不太熟悉,所以就打算写一个IM软件,在此过程中,来学习一下网络编程Lchat本次的项目取名为Lchat,没有什么具体含义。所用到的技术Electron: 因为之前写的项目都是网页版的,这次想弄点不一样的,在一次逛知乎的过程中发现了Electron,去简单了解了下,它使用 JavaScript,HTML 和 CSS 构建跨平台的桌面应用程序,总的来说就是它可以把网页变成桌面程序,还可以使用NodeJS,当时看到这个就觉得挺.

2021-10-08 20:54:57 1024

原创 Linux高性能服务器编程-TCP/IP协议族

TCP/IP协议族最近在学习Linux高性能服务器编程一书,会通过博客的形式来慢慢记录学习过程​ TCP/IP协议族是一个四层协议,自下而上分别是:数据链路层,网络层,传输层,应用层,每一层通过若干协议完成不同的功能,上层实现下层提供的服务。数据链路层​ 数据链路层实现了网卡接口的网络驱动程序来处理数据在物理媒介上的传输,不同的物理网络具有不同的电气特性,网络驱动程序隐藏了这些细节,为上层协议提供了统一的接口。​ 数据链路层使用物理地址寻址一台机器,因此使用物理链路层前必须将IP地址转换

2021-09-20 11:19:56 127

原创 Java并发编程的基础

本文部分源自《Java并发编程的艺术》线程和线程状态Java中通过实现Runnable接口来实现线程,Java中Thread类也是如此public interface Runnable { public abstract void run();}-----class Thread implements Runnable { ..... }Java线程的生命周期有六种状态,分别是NEW(新建),RUNNABLE(运行中),BLOCKED(阻塞),WAITING(等待),TIME.

2021-06-05 14:53:37 181 1

原创 Java线程池以及线程池监控(II)

本文部分来源自Java线程池实现原理及其在美团业务中的实践上一篇说到了execute的执行过程,接下来讲一讲线程创建的过程,即addWorker(Runnable firstTask, boolean core) private boolean addWorker(Runnable firstTask, boolean core) { retry: for (;;) { int c = ctl.get(); int .

2021-05-30 14:53:29 329 2

原创 Java线程池以及线程池监控(I)

本文部分来源自Java线程池实现原理及其在美团业务中的实践线程池是什么线程池(Thread Pool)是一种基于池化思想管理线程的工具,经常出现在多线程服务器中,如MySQL。线程过多会带来额外的开销,其中包括创建销毁线程的开销、调度线程的开销等等,同时也降低了计算机的整体性能。线程池维护多个线程,等待监督管理者分配可并发执行的任务。这种做法,一方面避免了处理任务时创建销毁线程开销的代价,另一方面避免了线程数量膨胀导致的过分调度问题,保证了对内核的充分利用。当然,使用线程池可以带来一系列好处:.

2021-05-29 00:32:54 1668

原创 Java并发-volatile和synchronized

Java并发-volatile和synchronized学习自Java并发编程的艺术和深入理解Java虚拟机volatile定义:volatile是轻量级的synchronized,被volatile修饰的变量被修改时能够被其他线程及时发现更新,确保所有线程看到这个变量是一致的。但是volatile只能确保可见性不能保证互斥性实现原理:有volatile修饰的变量在写操作的时候会多出一条Lock前缀的汇编代码,该代码有两个作用将当前处理器缓存行的数据写回到系统内存使其他CPU缓存

2021-05-09 18:54:07 218 3

原创 SpringBoot使用AOP,内部方法失效的问题

SpringBoot使用AOP,内部方法失效的问题最近在使用AOP的时候,发现一个问题,普通的方法AOP就能够有用,而内部调用的方法AOP就会失效,下面重现下问题AOP切面:@Aspect@Componentpublic class AuthorityAspect { @Pointcut("execution(* authority.service.AuthorityService.getExecutableSql(..))") private void pointCut() {

2021-03-08 17:45:53 1486 1

原创 Python学习(一)

python3.9学习自从零开始学Python运算符python中 or 相当于Java中的 ’ || ',and 相当于Java中的 ’ && 'isOr = 1 == 3 or 2 != 3 # TrueisAnd = 1 > 2 and 2 < 3 # Falsenot运算符的后面会跟上一个布尔值,它的作用是得到与该布尔值相反的值isNot = not 1 == 2 # Truepython 中 ‘//’ 表示整除分支结构​ Python中没

2021-01-24 12:29:54 378

原创 SpringBoot过滤器获取POST请求的JSON参数

​ 项目中需要将每个请求的路径和请求参数以及响应结果,都记录在日志中,这样在出现问题时可以快速定位是哪里出现了问题。想到了使用过滤器来实现这个功能,当请求来到过滤器时,会有一个Request参数,通过该参数就能获取到请求路径和请求参数,以及相关内容parameterMap = httpRequest.getParameterMap();String requestMethod = httpRequest.getMethod();String remoteAddr = httpRequest.getR

2020-12-19 14:36:16 9051 4

原创 SpringBoot+Shiro接入LDAP

背景:最近在把公司之前的项目架构升级到SpringBoot,同时因为之前项目需要为每个人到开一个账号有点麻烦,所以这次升级的时候加入了LDAP,让公司的人通过OA账号就能登录,同时保留原有的登录,让没有OA账号的能够走自己的登录关于LDAP可以去看我写的LDAP的博客,里面简单的介绍了什么是LDAP,Shiro的话可以去网上看看教程,后期可能会写一篇教程。Shiro的登录流程shiro的登录流程简单来说有三步:根据usernam和password生成UsernamePasswordToken.

2020-10-24 10:51:27 1413 2

原创 Cookie,Session和JWT

Cookie,Session和JWT​ HTTP是无状态的协议,每次客户端和服务端会话完成时,服务端不会保存任何会话信息:每个请求都是完全独立的,服务端无法确认当前访问者的身份信息,因此也无法知道上一次的请求发送者和这一次的发送者是不是同一个人。所以服务器与浏览器为了进行会话跟踪(知道是谁在访问我),就必须主动的去维护一个状态,这个状态用于告知服务端前后两个请求是否来自同一浏览器。而这个状态需要通过 cookie 或者 session 去实现。CookieCookie是存储在客户端的一小块数据,也就

2020-10-19 15:46:22 1013

原创 LDAP

LDAP概述LDAP,轻量级目录访问协议,LDAP是一个协议,比如OpenLDAP,微软的AD等产品就是根据LDAP访问数据。​ 目录是一个为查询、浏览和搜索而优化的数据库,它呈树状结构组织数据,就好象Linux/Unix系统中的文件目录一样。目录数据库和关系数据库不同,它有优异的读性能,但写性能差,并且没有事务处理、回滚等复杂功能,不适于存储修改频繁的数据。所以目录天生是用来查询的。LDAP是开放的Internet标准,支持跨平台的Internet协议,在业界中得到广泛认可的,并且市场上或者开源

2020-10-17 09:36:46 265

原创 SpringBoot+RabbitMQ实现消息队列发邮件

在我的之前写的轻博客中,当用户注册时需要发送一封邮件到用户注册的邮箱来激活账号,因为是同步方法,所以响应很慢,得等到邮件发送成功才有响应,所以打算使用RabbiMQ来异步发送邮件,提高响应速度本次是简单使用RabbitMQ作个简单的发送邮件Demo,告诉大家基本的使用方法首先使用IDEA创建两个模块email-producer模拟注册功能,接收用户注册的邮箱地址,把邮箱地址存入到消息队列中,email-consumer模拟发送邮件功能,当消息队列有消息时,消费消息,根据消息中的邮箱地址发送邮件

2020-07-10 16:05:31 3145 4

转载 Java泛型中的PECS原则

本文转载自飞翔的猫咪今天在写代码的时候使用到了这样一个方法签名:public void foo(Map<String, String> map);在写这个参数的时候正好在想一些关于泛型的东西,于是:public void foo(Map<? extends String, ? extends String> map);这两种写法有什么区别呢?记得以前和同学讨论过这个问题,但后来没有记下来,渐渐又淡忘了。今天又去翻了好多资料,总算找到一些可以参考的,赶紧记在这里方便以后温故知新啦。好

2020-07-05 15:44:12 422

转载 sql 四大排名函数---(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介

1.ROW_NUMBER()定义:ROW_NUMBER()函数作用就是将select查询到的数据进行排序,每一条数据加一个序号,他不能用做于学生成绩的排名,一般多用于分页查询, 比如查询前10个 查询10-100个学生。实例:1.1对学生成绩排序 这里number就是每个学生的序号 根据studentSc...

2020-06-27 17:25:26 644

原创 V部落-微信小程序版博客

是之前SpringBoot+Vue搭建前后端分离的轻博客,配套的微信小程序,目前只能够实现文章的阅读,评论点赞,搜索和登录,更多功能后续在以后的微服务版本再添加小程序界面首页标签页详情页评论页搜索页个人中心源码在GitHub,vblog-miniprogram文件夹中...

2020-06-23 20:21:54 1503

转载 (转)Spring的循环依赖以及解决办法

(一)Spring IOC容器—对象循环依赖什么是循环依赖? what?(1)循环依赖–>循环引用。—>即2个或以上bean 互相持有对方,最终形成闭环。eg:A依赖B,B依赖C,C又依赖A。【注意:这里不是函数的循环调用【是个死循环,除非有终结条件】,是对象相互依赖关系】Spring中循环依赖的场景?where?①:构造器的循环依赖。【这个Spring解决不了...

2020-03-08 21:21:31 138

原创 阿里云ESC安装ES

我的服务器配置是centos7+2G下载安装ESES下载地址选择Linux的下载下载后把压缩文件传输到服务器上,我用的是xftp然后选个地方解压ES,我的地址是存放地址:/usr/local/software/elasticsearch解压命令:tar -zxvf elasticsearch-6.4.3.tar.gz解压好后是这样接下来是修改ES的配置,让其能被外网访...

2020-03-02 16:46:05 1415

原创 线程池的使用

线程池的创建(I)我们可以通过ThreadPoolExecutor创建一个线程池 public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, ...

2020-01-12 16:36:06 174

原创 线程池的原理

为什么用线程池线程池顾名思义,就是一堆线程在一个池子里线程池是运用场景最多的并发框架,使用好线程池有如下几个好处降低资源的消耗: 我们都知道线程的创建是耗时和耗资源的,通过使用线程池来重复利用已经创建的线程来降低创建和销毁造成的消耗提高响应速度: 当任务到达时,任务可以不需要等到线程创建完就能直接执行便于管理: 使用线程池可以进行统一分配,调优和监控线程池的原理线程池的流程图...

2020-01-08 17:10:48 113

原创 Java8-Stream

Java8-Stream在Java8中新增了一个Stream流来对集合和数组进行处理,Stream流通过声明式的方式既Lambda来操作集合和数组,Stram把数据源当作流,流在管道中传输,在管道中可以进行一系列的操作如过滤,排序,收集等,称之为中间操作。最后处理中间操作得到的结果,称之为最终操作StreamStream不会存储元素数据源不会被改变:产生新流并不会改变原来的数据源内部...

2019-12-15 20:14:13 142

原创 Java浅拷贝和深拷贝的区别和实现

前言写这篇博客的缘由是之前在做网易的笔试的时候,简答题问了浅拷贝和深拷贝的区别和在Java的实现,因为之前都没了解过深,浅拷贝所以白白丢分,所以今天就查阅了资料,好好整理下深,浅拷贝的区别深拷贝和浅拷贝浅拷贝: 浅拷贝指的是把原对象的所有属性都拷贝到新对象上去,如果字段是值类型的,那么对该字段执行复制;如果该字段是引用类型的话,则复制引用但不复制引用的对象。因此,原始对象及其新对象引用同一个...

2019-09-23 16:38:02 806 2

原创 Linux(CentOS7) 安装mysql和jdk

安装MySQL首先在Mysql中找到对应的版本点击下载,复制下载链接登录Linux,创建个文件夹,执行如下命令wget https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm查看是否下载成功,博主是放在了MySQL文件夹,有如下安装包说明下载成功安装rpmrpm -ivh mysql80-commu...

2019-08-02 15:57:39 315

原创 springboot-使用editor.md及使用阿里云OSS作图床

该博客是为了后面搭建博客做的前期准备使用阿里云OSS作图床在使用markdown写博客的时候,通常都需要放图片,而markdown需要图片的地址,网络图片还好说,但是本地图片就不太好办了,因此我们可以使用阿里云的OSS来作为我们的图床,把图片上传到阿里云的OSS,然后返回图片的URL用作地址步骤:1.注册阿里云,购买OSS阿里云OSS2.创建工程导入相应的依赖 &lt...

2019-07-10 16:57:27 703 2

原创 springmvc-异常处理器以及拦截器

异常处理器springmvc异常处理dao、service、controller都可能出现异常,当出现异常都通过throws Exception向上抛出,最后由SpringMVC前端控制器交由异常处理器进行异常处理,SpringMVC提供全局异常处理器(一个系统只有一个异常处理器)进行统一异常处理。自定义异常类public class MyException extends Except...

2019-06-24 14:56:53 1996

原创 springmvc-文件上传

文件上传的几点前提表单的enctype取值必须是:multipart/form-datamethod属性值必须是Post提供一个文件选择域:所需的jar包 <!--fileupload--> <dependency> <groupId>commons-fileupload</groupId> &lt...

2019-06-22 14:58:12 117

原创 springmvc-工作流程及环境搭建

springmvc工作流程客户端发送请求到DispatcherServlet前端控制器DispatcherServlet前端控制器收到请求调用处理器映射器HandlerMapping处理器映射器HandlerMapping找到具体的Handler返回给DispatcherServlet前端控制器DispatcherServlet前端控制器调用处理器适配器HandlerAdapter处...

2019-06-22 14:09:13 160

原创 spring学习-JdbcTemplate简单操作和事务控制

JdbcTemplateJdbcTemplate是spring对JDBC操作的进一步封装,下面就通过简单的CRUD来了解JdbcTemplate如何操作,连接池直接用的spring内置的连接池DriverManagerDataSource首先配置JdbcTemplate和数据源 <bean id="jdbcTemplate" class="org.springframework....

2019-06-18 19:45:22 6570

原创 spring学习-AOP

spring学习-IoC和DIspring学习-注解的使用AOPAOP为Aspect Oriented Programming的缩写,也就是我们所说的面向切面编程,AOP通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术,AOP是OOP的延续我个人认为AOP就是可以在不改变方法源码的基础上通过动态代理的方式对方法进行增强,也就是说,它可以在运行到你希望改变的方法时,把增强的方法...

2019-06-17 23:14:59 200 1

原创 spring学习-注解的使用

从 Spring 2.5 开始就可以使用注解来配置依赖注入。使用注解的方式使我们无需在XML中配置一个Bean引用,更加简单和方便。但注解配置默认情况下在Spring中是关闭的,我们需要在配置文件中开启他,使用在之前的bean约束中加入xmlns:context<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http:/...

2019-06-16 14:48:37 290 3

原创 JavaWeb-旅游网-点击收藏

JavaWeb-旅游网-注册和登录JavaWeb-旅游网-导航条和分页展示JavaWeb-旅游网-详情展示JavaWeb-旅游网-线路搜索功能: 用户登录后,在线路详情页面中,可以点击收藏进行收藏,如果用户没有登录,则会跳转到登录页面,如果已经收藏过了就不可再收藏加载详情页面的时候,前端会发送ajax判断该用户在该线路是否已经收藏,如果已经收藏就按钮置为不可点击的状态 $(fu...

2019-06-15 15:42:54 1218 1

原创 JavaWeb-旅游网-详情展示

JavaWeb-旅游网-注册和登录JavaWeb-旅游网-导航条和分页展示JavaWeb-旅游网-线路搜索功能: 当用户点击查看详情时,可以查看到详细的线路信息当点击详情时,会跳转到对应的详情页面,请求路径带有该线路的rid,后台根据此rid查询数据并响应给前端详情页面有三部分,线路的详细信息,商家信息,图片展示,把这三部分信息,全都封装再Route类中再响应给前端进行解析展示...

2019-06-13 15:51:36 1090 2

原创 JavaWeb-旅游网-线路搜索

JavaWeb-旅游网-注册和登录JavaWeb-旅游网-注册和登录功能: 用户在框搜索输入想去的地址,页面显示对应地址的旅游线路可以采用模糊查询完成该功能,后台接收到cid和rname后,对数据库进行模糊查询,随后把数据封装成json格式响应个前端,前端解析数据并展示。在上一个分页的展示数据的基础上进行拓展,加入rname参数,在获取rnam参数时需要对其解码,否则拿到的是乱码 ...

2019-06-13 14:30:14 1275

原创 Mybatis

之前就学了mybatis,但是没有做笔记所以有些东西过了一段时间就记不清了,所以重新过了一遍mybatis基础的知识并记录,该博客不适合初学mybatis的朋友Mybatis环境搭建pom.xml<dependencies> <dependency> <groupId>org.mybatis</groupId> ...

2019-06-13 09:34:14 132

空空如也

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

TA关注的人

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