
Java
文章平均质量分 82
尘光掠影
摒弃洋洋洒洒、长篇大论的博客,用最简洁的代码,讲清楚最复杂的道理~
展开
-
关于HTTPS的原理及证书、验证和数据加密、解密过程解析
HTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据。转载 2022-08-17 16:47:27 · 3521 阅读 · 0 评论 -
spring-security个性化认证流程,自定义登录页面
1. 定义自己的登录页面我们需要根据自己的业务系统构建自己的登录页面以及登录成功、失败处理在spring security提供给我的登录页面中,只有用户名、密码框,而自带的登录成功页面是空白页面(可以重定向之前请求的路径中),而登录失败时也只是提示用户被锁定、过期等信息。在实际的开发中,则需要更精细力度的登录控制,记录错误的日志(错误的次数等)2. 自定义登录页面 配置登录页面的路径 在BrowserSecurityConfig类中配置登录页面的...转载 2021-11-10 14:43:51 · 848 阅读 · 0 评论 -
Spring Cloud Stream微服务消息框架
简介随着近些年微服务在国内的盛行,消息驱动被提到的越来越多。主要原因是系统被拆分成多个模块后,一个业务往往需要在多个服务间相互调用,不管是采用HTTP还是RPC都是同步的,不可避免快等慢的情况发生,系统性能上很容易遇到瓶颈。在这样的背景下,将业务中实时性要求不是特别高且非主干的部分放到消息队列中是很好的选择,达到了异步解耦的效果。目前消息队列有很多优秀的中间件,目前使用较多的主要有 RabbitMQ,Kafka,RocketMQ 等,这些中间件各有优势,有的对 A...转载 2021-11-03 18:07:49 · 614 阅读 · 0 评论 -
线程池-四种拒绝策略总结
一、线程池的拒绝策略线程池中,有三个重要的参数,决定影响了拒绝策略: corePoolSize - 核心线程数,也即最小的线程数。 workQueue - 阻塞队列 。 maximumPoolSize - 最大线程数当提交任务数大于 corePoolSize 的时候,会优先将任务放到 workQueue 阻塞队列中。当阻塞队列饱和后,会扩充线程池中线程数,直到达到 maximumPoolSize 最大线程数配置。此时,再多余的任务,则会触发线程池的拒绝策略了...转载 2021-10-27 16:20:25 · 39541 阅读 · 3 评论 -
线程池概念:ThreadPoolTaskExecutor
解释1.corePoolSize:核心线程数(同时处理的能力)2.queueCapacity:队列容量3.maxPoolSize:最大线程数;决定了当corePoolSize 以及queueCapacity 满了以后,会在线程中额外创建线程的假如corePoolSize和queueCapacity均为5,而maxPoolSize等于12.那么当线程大于12的时候(也就是corePoolSize,queueCapacity都满且额外创建了7个线程,依旧有线程过来),那么大于12的线程会走拒绝策略转载 2021-10-27 11:28:36 · 819 阅读 · 0 评论 -
Websocket协议,实时通讯原理
一、websocket与httpWebSocket是HTML5出的东西(协议),也就是说HTTP协议没有变化,或者说没关系,但HTTP是不支持持久连接的(长连接,循环连接的不算)首先HTTP有1.1和1.0之说,也就是所谓的keep-alive,把多个HTTP请求合并为一个,但是Websocket其实是一个新协议,跟HTTP协议基本没有关系,只是为了兼容现有浏览器的握手规范而已,也就是说它是HTTP协议上的一种补充可以通过这样一张图理解...转载 2021-10-18 11:20:58 · 1056 阅读 · 1 评论 -
图文漫画,简单易懂:二叉树、红黑树、B树、B+树
转发自头条号:Java全栈技术作者:channingbreeze 互联网侦察小史是一个应届生,虽然学的是电子专业,但是自己业余时间看了很多互联网与编程方面的书,一心想进BAT互联网公司。话说两个多月前,小史通过了A厂的一面,两个多月后的今天,小史终于等到了A厂的二面。简单的自我介绍后,面试官看了看小史的简历,开始发问了。【面试现场】小史:没问题,这个项目前端用的react+webpack,后端.转载 2021-07-26 18:05:55 · 506 阅读 · 0 评论 -
Idea快捷键大全(Windows)
Ctrl 快捷键 介绍 Ctrl + F 在当前文件进行文本查找(必备) Ctrl + R 在当前文件进行文本替换(必备) Ctrl + Z 撤销(必备) Ctrl + Y 删除光标所在行或删除选中的行(必备) Ctrl + X 剪切光标所在行或剪切选择内容转载 2021-04-30 10:57:39 · 474 阅读 · 0 评论 -
java流操作:Stream操作与详解
目录Stream集合流操作Stream 和 parallelStream注意事项操作元素说明实践测试实体类:TestStream集合流操作Java 8 API添加了一个新的抽象称为流 Stream ,可以让你以一种声明的方式处理数据; Stream 是一个来自 数据源 的元素队列并支持 聚合 操作,可以极大提高Java程序员的生产力,让程序员写出高效率、干净、简洁的代码;Stream 和 parallelStreamStream:串行流,单线程,线程.原创 2020-11-26 16:03:34 · 4438 阅读 · 0 评论 -
玩转SpringBoot之定时任务详解
目录序言一、静态:基于注解二、动态:基于接口三、多线程定时任务阅读正文:序言使用SpringBoot创建定时任务非常简单,目前主要有以下三种创建方式:一、基于注解(@Scheduled) 二、基于接口(SchedulingConfigurer) 前者相信大家都很熟悉,但是实际使用中我们往往想从数据库中读取指定时间来动态执行定时任务,这时候基于接口的定时任务就派上用场了。 三、基于注解设定多线程定时任务一、静态:基于注解基于注解@Scheduled默认为单线程,开启多转载 2020-06-19 15:42:06 · 404 阅读 · 0 评论 -
Netty详解:是什么?怎么用?优势在哪里?
在开始了解Netty是什么之前,我们先来回顾一下,如果我们需要实现一个客户端与服务端通信的程序,使用传统的IO编程,应该如何来实现?IO编程我们简化下场景:客户端每隔两秒发送一个带有时间戳的"hello world"给服务端,服务端收到之后打印。为了方便演示,下面例子中,服务端和客户端各一个类,把这两个类拷贝到你的IDE中,先后运行 IOServer.java 和IOClient.ja...转载 2020-04-08 09:49:26 · 1197 阅读 · 1 评论 -
浅谈JVM及原理
前言 JVM一直是java知识里面进阶阶段的重要部分,如果希望在java领域研究的更深入,则JVM则是如论如何也避开不了的话题,本系列试图通过简洁易读的方式,讲解JVM必要的知识点。运行流程 我们都知道java一直宣传的口号是:一次编译,到处运行。那么它如何实现的呢?我们看下图: java程序经过一次编译之后,将java代码编译为字节码也就是class文件,然后在不同的操...转载 2020-03-23 23:52:13 · 303 阅读 · 0 评论 -
windows版本和Linux版本的ffmpeg(4.1.3)下载和使用方法
一:ffmpeg的下载1、访问http://ffmpeg.org/,单击①或者②进入选择操作系统的页面。2、Linux版本的下载:①:首先点击小企鹅图标,出现不同的Linux系统②:根据不同的Linux点击进入不同的Linux系统下载ffmpeg③:注意:若想下载tar.bz2格式的直接点击中间的Download图标,它会自动进行下载。(也可进入http:/...转载 2019-12-02 15:08:51 · 4910 阅读 · 0 评论 -
java多线程全面详解
多线程是什么?为什么要用多线程? 介绍多线程之前要介绍线程,介绍线程则离不开进程。 首先 , 进程 :是一个正在执行中的程序,每一个进程执行都有一个执行顺序,该顺序是一个执行路径,或者叫一个控制单元; 线程:就是进程中的一个独立控制单元,线程在控制着进程的执行。一个进程中至少有一个进程。 多线程:一个进程中不只有一个线程。 为什么要用多线...转载 2019-03-08 15:35:06 · 7945 阅读 · 2 评论 -
java几种常用的安全认证机制(JWT)
1. HTTP Basic AuthHTTP Basic Auth简单点说明就是每次请求API时都提供用户的username和password,简言之,Basic Auth是配合RESTful API 使用的最简单的认证方式,只需提供用户名密码即可,但由于有把用户名密码暴露给第三方客户端的风险,在生产环境下被使用的越来越少。因此,在开发对外开放的RESTful API时,尽量避免采用HTTP B...转载 2019-03-05 16:42:18 · 12566 阅读 · 0 评论 -
Java并发编程:线程池的使用
在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务? 在Java中可以通过线程池来达到这样的...转载 2019-03-08 18:31:01 · 317 阅读 · 0 评论 -
浅谈String的堆内存和栈内存
java把内存划分为两种:一种是栈(stack)内存,一种是堆(heap)内存 在函数中定义的一些基本类型的变量和对象的引用变量都在栈内存中分配,当在一段代码块定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用 堆内存用来存放由new创建的对象和数组,在堆中分配的内存,由jvm(j...转载 2019-02-18 10:43:04 · 1312 阅读 · 0 评论 -
浅谈JAVA中的栈和堆
JAVA在程序运行时,在内存中划分5片空间进行数据的存储。分别是:寄存器; 本地方法区; 方法区; 栈; 堆;基本,栈stack和堆heap这两个概念很重要,不了解清楚,后面就不用学了。以下是这几天栈和堆的学习记录和心得。得些记录下来。以后有学到新的,会慢慢补充。 一、先说一下最基本的要点基本数据类型、局部变量都是存放在栈内存中的,用完就消失; new创建的实例化对...转载 2019-02-15 14:45:56 · 306 阅读 · 0 评论 -
前端页面使用原生js提交get或post请求表单
前言前端界面一般都可直接在html定义form表单,然后提交表单,使用jquery提交get或者post请求;然而有种需求就是在不使用jquery的前提下,用原生js提交get或post请求;实践原生js一般请求url方式:window.location.href = "url";原生js提交get或post请求表单:var url = path + '/test/te...原创 2019-04-29 19:48:17 · 7910 阅读 · 1 评论 -
Spring的Tomcat服务关闭后,Quartz进程无法正常关闭,出现内存泄露
简介spring内部整合quartz,将quartz整合到web项目里面,通过页面动态控制quartz的增加、修改、删除、查询,这种方式极大简化了对quartz定时器任务的控制; 但随之而来的是一个极为困扰的问题:当项目的服务器关闭的时候,quartz定时器任务进程依旧在运行,如果不手动去kill掉进程,这个定时任务会一直残留,导致下次再重启服务器的时候,又重复启动定时器,导致多个重复的定时...原创 2018-12-14 14:30:39 · 5130 阅读 · 2 评论 -
java项目中如何防止sql注入?
简介SQL注入就是客户端在向服务器发送请求的时候,sql命令通过表单提交或者url字符串拼接传递到后台持久层,最终达到欺骗服务器执行恶意的SQL命令;实践项目中如何防止sql注入呢,有以下三点:前端表单进行参数格式控制; 后台进行参数格式化,过滤所有涉及sql的非法字符;//参考:https://freeman983.iteye.com/blog/1153989//过滤 '...原创 2019-03-07 17:35:38 · 23391 阅读 · 4 评论 -
java后台创建get、post的http连接,同时传递参数
简介项目开发过程中,我们有时需要通过第三方提供的接口来获取第三方的数据,前端可以通过ajax去进行接口数据获取;而java后台连接接口的方式之一就是通过HttpURLConnection创建http连接,设定get和post的请求方式,同时传递参数;项目实践import java.io.BufferedReader;import java.io.IOException;imp...原创 2019-03-19 18:05:10 · 4911 阅读 · 4 评论 -
springboot解决跨域问题(CorsConfig )
简介在开发接口的过程中,最令人头疼一件事就是接口项目有跨域问题,导致前端ajax等访问受限,所以在搭建一个接口项目之前首先要解决接口的可能跨域问题;springboot作为常用的接口框架,在解决跨域方面也是非常的方便;项目实践package com.springboot.sixmonth.common.filter;import org.springframework.co...原创 2019-03-21 18:21:10 · 10413 阅读 · 0 评论 -
springboot指定访问url接口后缀:*.do或*.action
简介springboot接口url匹配后缀,例如url访问/test,匹配后缀之后,访问/test.*同样可以;项目实践package com.springboot.sixmonth.common.filter;import org.springframework.boot.web.servlet.ServletRegistrationBean;import org.sprin...原创 2019-03-21 20:08:58 · 21705 阅读 · 5 评论 -
Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
转载请注明出处:http://blog.youkuaiyun.com/anxpp/article/details/51512200,谢谢!本文会从传统的BIO到NIO再到AIO自浅至深介绍,并附上完整的代码讲解。下面代码中会使用这样一个例子:客户端发送一段算式的字符串到服务器,服务器计算后返回结果到客户端。代码的所有说明,都直接作为注释,嵌入到代码中,看代码时就能更容易理解...转载 2019-03-18 15:44:26 · 444 阅读 · 0 评论 -
JWT加密以及解密工具类(简洁版)
简介JWT,JSON WEB TOKEN,是一种用于双方之间传递安全信息的简洁的、URL安全的表述性声明规范;该工具类可快速实现jwt秘钥的加密和解密,适用于初学者快速入手;项目实践package com.sixmonth.micro.serv.page.common.jwt;import java.util.Date;import javax.crypto.Secret...原创 2019-03-22 10:31:43 · 15637 阅读 · 2 评论 -
linux服务器springboot或tomcat项目启动,进行jvm参数调优设置
简介在实验环境或生产环境中,往往一台linux服务器需要添加启动n个项目,但是项目启动占用的jvm内存默认值基本上都是很大的,800m到2G都有,这样很容易将服务器的内存吃垮,从而导致系统强制oom(内存泄露),不留任何情面; 所以,我们在部署项目的时候需要进行jvm参数的调优设置,保证内存使用的稳定性;实践1.首先执行命令:free -h,查询当前的内存占用情况,从下图可看出,内存...原创 2019-05-09 16:50:02 · 8413 阅读 · 0 评论 -
jfinal中Interceptor拦截器的使用
原文网址:http://www.cnblogs.com/lzlblogs/p/5970720.html一、拦截器是用于对action请求的拦截处理,发生在进入action方法体之前的拦截操作,这样方便了对请求实例做一些文章。 二、自定义、系统已有拦截器都需要实现Interceptor接口,这样才能被系统认为是拦截器实现类。拦截器只有一个方法(并且只有一个传入参数ActionInvoca转载 2017-05-03 10:46:14 · 9451 阅读 · 0 评论 -
Nginx使用upstream实现负载均衡
upstream模块相关说明1、upstream模块应放于nginx.conf配置的http{}标签内2、upstream模块默认算法是wrr (权重轮询 weighted round-robin)一、分配方式Nginx的upstream支持5种分配方式,下面将会详细介绍,其中前三种为Nginx原生支持的分配方式,后两种为第三方支持的分配方式。1、轮询轮询是upstream的默认...转载 2018-12-05 14:29:26 · 1571 阅读 · 0 评论 -
jfinal框架文件下载功能代码
上一篇博客我们了解了struts2框架的文件下载功能代码,我们可以从中总结到,struts2主要是通过其xml的配置来处理文件下载的,也就是将普通io流文件下载的页面响应方式的这部分代码分离出来,使用xml配置来处理,这也是struts2的特性。那么针对于jfinal框架,其在处理文件下载方面会不会有什么特殊的处理方式呢?原创 2017-05-27 11:24:36 · 4690 阅读 · 0 评论 -
Java文件上传功能代码 —— 普遍适用
通过之前的博客,基本上已经将各个框架上传文件的功能逻辑理清楚,有文件下载肯定就需要有文件上传,那么接下来会跟大家一起分享各个框架上传文件的功能代码;原创 2017-05-27 15:57:11 · 48949 阅读 · 4 评论 -
ssh框架之springmvc文件下载功能代码
上一篇文章我们了解了,通过Java的io输出流来实现普通的文件下载的功能,是广大程序员在做项目中会普遍 使用到的下载文件的方法。但是,在项目中我们都基本上是用框架在开发,所以,我们同时也需要学习每个框架的针 对性的文件下载方法,这对于使用框架开发来说,不失为更加有效的一种方法,毕竟使用框架封装好的方法有时会更 加节省时间。原创 2017-05-26 17:16:22 · 1994 阅读 · 0 评论 -
java文件下载功能代码(单文件下载、多文件批量打包下载)——普遍适用
程序员在做web等项目的时候,往往都需要添加文件上传、下载、删除的功能,有时是单文件,有时多文件批量 操作,而这些功能的代码程序员可以自己收藏起来当成工具使用,这样,程序员在进行程序设计的时候就会事半功倍 了,那么接下来的博客将会介绍各个框架的文件上传和下载功能的使用方法。原创 2017-05-26 18:07:46 · 27385 阅读 · 28 评论 -
jfinal的绝对路径和action请求路径添加文件夹名称而导致"404 not found"的问题
jfinal的绝对路径和action请求路径添加文件夹名称而导致"404 not found"的问题原创 2017-04-18 09:35:50 · 7858 阅读 · 0 评论 -
tld自定义标签之基础入门篇
一、tld说明 tld,是taglib description 的缩写,其自定义标签一般用于jsp页面,tld其作用一般是在web项目中结jstl、c标签等用于有效性判断、权限判断等方面,对前端的一些页面标签起到约束、限制的作用。 很多人只知道有这类型的标签,但不知道它有什么作用以及怎么去使用,所以,学会使用tld自定义标签对项目会有很大的帮助,下面我会以一个自写的超级原创 2017-05-03 17:32:26 · 15888 阅读 · 5 评论 -
web前端性能优化总结
原文网址:http://www.2cto.com/kf/201604/498725.html 网站的划分一般为二:前端和后台。我们可以理解成后台是用来实现网站的功能的,比如:实现用户注册,用户能够为文章发表评论等等。而前端呢?其实应该是属于功能的表现。并且影响用户访问体验的绝大部分来自前端页面。 而我们建设网站的目的是什么呢?不就是为了让目标人群来转载 2017-04-06 16:51:20 · 286 阅读 · 0 评论 -
Socket之TCP和UDP协议通信
一、定义简介: 1. TCP是一个面向连接的、可靠的协议(transmission control protocol) 专门设计用于在不可靠的因特网上提供可靠的、端到端的字节流通信的协议。它是一种面向连接的协议。TCP连接是字节流而非报文流。 2. UDP是一个无连接,不可靠的协议(user datagram protocol )原创 2017-04-06 19:02:18 · 876 阅读 · 0 评论 -
java遍历删除指定文件夹下面的相同格式或指定格式的file文件
在程序员编写代码的过程中,可能会遇到需要删除一个文件夹下的某种格式类型的所有文件,比如doc、docx、MP4、avi等格式文件。 所以,简单提供一下思路和代码,已经有好思路和代码的程序员可忽略本博客。首先,获取指定的文件夹路径,比如:"d:\\movie"。这一步需要进行判断,对此路径判断该文件是否为文件夹,如下:其次,如果判断为文件夹,则遍历文件原创 2017-04-05 18:58:09 · 4653 阅读 · 2 评论 -
Eclipse 常用快捷键
1. 【ALT+/】 此快捷键为用户编辑的好帮手,能为用户提供内容的辅助,不要为记不全方法和属性名称犯愁,当记不全类、方法和属性的名字时,多体验一下【ALT+/】快捷键带来的好处吧。 2. 【Ctrl+O】 显示类中方法和属性的大纲,能快速定位类的方法和属性,在查找Bug时非常有用。 3. 【Ctrl+/】 快速添加转载 2017-04-14 15:14:35 · 623 阅读 · 0 评论 -
Form Data 对象的使用,上传文件异步刷新
原文网址:http://www.cnblogs.com/lhb25/p/html5-formdata-tutorials.htmlXMLHttpRequest Level 2 添加了一个新的接口——FormData。利用 FormData 对象,我们可以通过 JavaScript 用一些键值对来模拟一系列表单控件,我们还可以使用 XMLHttpRequest 的 send() 方法来异转载 2017-03-17 15:52:17 · 1076 阅读 · 0 评论