4 free_java

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 1w+

Netty (4)-内存回收和SimpleChannelInboundHandler

上一篇讲过,收发的数据都会先放入内存,并且这个内存还会是JVM以外的直接内存,所以需要我们手动去回收。

2020-06-19 15:24:59

Netty (3)-ByteBuf、池、直接内存、16进制

传统IO在收发数据时,会阻塞当前线程,一边接收数据,一边对数据进行处理,处理完一段数据再继续接收下一段,再处理。而NIO会一次性将接收的所有数据,放入内存,处理数据时只需要读取内存,而IO线程被完全释放,这就是非阻塞。而被放入内存的数据在 netty中的表现形式就是本篇要讲的ByteBuf接收数据继续延用修改第1篇的代码,以下就是一次性接收数据放入内存(ByteBuf),并且打印出来的过程...

2020-05-05 15:19:32

Netty (2)-ChannelInboundHandlerAdapter入站事件

在第1篇,我们继承ChannelInboundHandlerAdapter后,即可收到消息并处理。本篇介绍其更多的用法基本概念Channel:可以理解为一个连接,每一个客户端连到服务器,都会有一个与之对应的Channel。 ChannelHandler:用来处理Channel中的各种事件。 ChannelInboundHandlerAdapter:入站ChannelHandler,即从...

2020-01-12 12:05:50

Netty (1)-回声服务器

Netty基于java nio(非阻塞) 实现,主要用于服务端与客户端之间的socket通信,其高性能号称单机可支持百万连接。其应用场景非常广泛,如物联网、分布式、聊天程序、网络游戏等。在基于java语言的项目中,要开发socket通信,netty目前几乎处于不可替代的地位。本篇将用netty实现一个简单的回声通信。pom.xml <dependency> &lt...

2020-01-05 09:18:12

spring security 5 (11)-防止异地重复登录

本篇介绍如何实现一个用户只允许同时在一个地点登录基本配置 protected void configure(HttpSecurity http) throws Exception { http.formLogin().and() .sessionManagement() .maximumSessions(1).expiredUrl("/expired");maxi...

2019-04-21 13:01:52

spring security 5 (10)-digest摘要认证

摘要认证和基本认证一样,也是由http协议定义的,对用户使用的角度来说,它们并没有区别。但是摘要认证的安全性要高出很多,并且永远不会以明文传输密码。必须先理解基本认证基本配置spring security内置了DigestAuthenticationFilter,封装了摘要认证逻辑,不需要你去构建AuthenticationManager。但是构建UserDetailsService是必不...

2019-04-14 11:29:46

spring security 5 (9)-httpBasic基本认证

httpBasic是由http协议定义的最基础的认证方式。每次请求时,在请求头Authorization参数中附带用户/密码的base64编码,参考base64。这个方式并不安全,不适合在web项目中使用。但它是一些现代主流认证的基础,而且在spring security的oauth中,内部认证默认就是用的httpBasic。httpBasic基本配置注意,这里没有配formLogin,也...

2019-04-07 10:42:11

spring security 5 (8)-密码加密BCryptPasswordEncoder

从spring security5开始,要求必须手动配置密码加密方式,spring官方推荐使用BCrypt加密,并明确指出sha和md5都是不安全的。本篇仅介绍BCrypt的用法。BCrypt加密与验证 BCryptPasswordEncoder encoder = new BCryptPasswordEncoder(); String result = encoder.en...

2019-03-31 11:54:54

spring security 5 (7)-异常处理

spring security主要有两大异常,登录时认证失败异常401,及请求时没有权限异常403。AuthenticationException(401)登录不成功,如密码错误等可抛出BadCredentialsException,它是AuthenticationException的子类。 if (!code.equals("123")) { ...

2019-03-24 09:33:35

spring security 5 (6)-认证过滤器

上一篇实现了自定义认证,但是要想彻底自定义整个认证流程,还差一个环节,即认证过滤器,它是认证的入口。本篇仍然以验证码为例,介绍自定义认证过滤器。自定义Authentication第4篇讲过,自定义过滤器的主要作用就是生成未认证Authentication,作为入参给AuthenticationManager认证。而在第5篇,根据AuthenticationProvider的support...

2019-03-17 08:34:04

spring security 5 (5)-自定义认证

第3篇讲过,用户登录时,系统会读取用户的UserDetails对其认证,认证过程是由系统自动完成的,主要是检查用户密码。而在现实中,登录方式并不一定是检查密码,也可能是验证码或其他,此时就需要自定义认证。AuthenticationProvider自定义认证逻辑在AuthenticationProvider的authenticate方法中完成,第4篇讲过,认证的入参是一个未认证Authen...

2019-03-10 09:49:44

spring security 5 (4)-认证流程

本篇介绍登录时的认证流程,及其相关的重要概念接口等,现在只需要有一个基本概念,以后将以此为基础介绍自定义配置,到时结合本篇会更加清晰。SecurityContext用户登录时,会将用户相关信息组装成一个Authentication对象,而SecurityContext的主要作用就是保存Authentication。并且 SecurityContext会通过session来维持状态,所以登录...

2019-03-02 16:00:26

spring security 5 (3)-UserDetails用户详情

用户登录时,系统会根据用户名,从存储设备查找该用户的密码及权限等,将其组装成一个UserDetails对象。并用UserDetails中的数据对用户进行认证,决定其输入的用户名/密码是否正确。从内存认证之前两篇我使用的是预置的user用户,以下则自定义一个user用户,密码123,权限是auth。user用户登录时会根据这些信息自动构建一个UserDetails,保存在内存中。 pass...

2019-02-24 19:26:03

spring security 5 (2)-Http请求权限

用户访问网站时,只能请求其有权限的网址,而不能手动去请求其权限以外的网址。基本配置以下配置了3个url请求时各需要的角色或权限,注意,这并不代表现实业务中的角色和权限,你可以根据需要自己决定。 public void configure(HttpSecurity http) throws Exception { http .authorizeRequests() //进行...

2019-02-17 08:40:54

spring security 5 (1)-formLogin表单登录和注销

表单登录即在form表单中输入用户名/密码,提交登录,在spring security中默认配置了formLogin来实现表单登录。pom.xml <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent&l...

2019-02-10 09:16:44

web安全 (2)-base64

base64在安全领域主要用于安全文件或数据的传输及存储,如一些专业的证书、密钥、token等,它们并不遵守任何文字编码,如果你用文字工具打开看,会看到很多特殊字符(乱码)。这些乱码在网上传输的时候,可能会被多个网关接收并转发,而有的网关并不一定能识别这些乱码,从而导致你的数据被错误处理或丢失。此时就需要先将乱码转换为大家都能识别的字符,才能正常传输,这种公认的字符就是base64编码。 64...

2019-02-02 10:44:39

微信测试账号 (5)-素材管理

前面只讲了文本消息,如果要发图片或语音视频等消息,则需要先将相关文件如图片上传到微信,之后可以将其作为素材,在消息中引用它,实现图片消息。新增图片素材 @GetMapping("/addMaterial") public void addMaterial(){ String url = "https://api.weixin.qq.com/cgi-bin/material...

2019-01-26 19:08:39

centos(18)-putty/winscp实现ssh密钥登录

在第3篇,我讲过用putty/winscp输入用户名/密码,远程登录服务器,这种登录方式存在一些安全隐患。而本篇讲的密钥登录是一种安全性别更高的登录方式。关于密钥及其他本篇讲到的一些安全性知识概念,参考web安全 (1)。ssh密码登录linux远程连接是使用的ssh,和https有点类似,流程如下:1.服务器开启时默认会打开ssh服务,ssh服务会检测服务器私钥/公钥,如果不存在就自...

2019-01-20 13:24:54

微信测试账号 (4)-菜单管理

进入公众号后,最下面一排的位置可以设置菜单按钮。菜单结构这是微信官网给的一个菜单结构示例,json格式。 { "button":[ { "type":"click", "name":"今日歌曲", "key":"V1001_TODAY_MUSIC" },

2019-01-13 18:36:58

微信测试账号 (3)-微信接口权限 access_token

有许多功能,需要我们主动调用微信的接口,比如修改公众号菜单,主动给用户发消息等。此时微信会对我们的权限进行验证,这个权限就是access_token。appID和appsecret登录测试账号时有两个参数,appID是公众号的唯一标识,appsecret就是密钥。关于密钥是什么,参考web安全(1)。获取access_token用你的appID和appsecret替换以下代码x...

2019-01-06 14:54:59

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。