`
文章列表
    在mongo db 中增加、删除、修改文档有好多方法,这里简单记录一下我所知道的一些方法。   前置条件:         1、创建study数据库  use study;         2、创建persons集合,当第一次向persons集合中插入数据时,如果集合不存在会自动创建。当然也可以使用命令 db.createCollection("persons",{可以带一些参数,也可以不带})         3、db.persons.find({}) 可以查询persons集合中所有的文档。   一、增加文档        ① 增加单个文档,使 ...
    在项目开发的过程中,有时我们有这样的需求,需要去调用别的系统中的数据,那么这个时候系统中就存在多个数据源了,那么我们如何来解决程序在运行的过程中到底是使用的那个数据源呢?     假设我们系统中存在2个数据源 mysql 和 oracle. 系统中存在 2个方法  methodA 和 methodB ,其中methodA是是需要去调用mysql、methodB是需要使用到oracle,那么在我们调用methodA或methodB时是如何知道使用的是mysql还是oracle呢? 我的做法是  使用Spring 的 动态数据源路由来解决这个问题。   需求: 系统中要显示一些图表 ...
    在这篇文章中主要记录一下在Java中如何使用 java 代码生成jwt token,主要是使用jjwt来生成和验证jwt,关于什么是JWT,以及JWT可以干什么不做详解。     jwt的格式: base64(header).base64(payload).加密算法(base64(header)+“.”+base64(payload),"私钥") 在Java中使用JWT   一、引入jjwt的jar包   <dependency> <groupId>io.jsonwebtoken</groupId> ...
      最近在了解第三方登录的内容,尝试对接了一下QQ登录,此次记录一下如何实现QQ登录的过程,在这个例子中是和spring secuirty整合的,不整合spring secuirty也是一样的。   需求: 整合QQ登录 步骤:      1、在QQ互联上注册开发者身份      2、开发者身份审核通过后,创建一个自己的应用,此时需要记录如下三个信息           |- APP ID           |- APP Key           |- 回调地址: 这个地址是你自己网站的回调地址,即QQ登录成功后,QQ会重定向到这个地址上             ...
     在程序的执行过程中,有时有这么一种需求,需要动态的更新某些角色的权限或某些人对应的权限,当前在线的用户拥有这个角色或拥有这个权限时,在不退出系统的情况下,需要动态的改变的他所拥有的权限。   需求:张三 登录了系统拥有 ROLE_ADMIN,和ROLE_USER 的权限,但是ROLE_ADMIN的权限太强了,不应该给张三,后台管理人员应该可以取消张三的ROLE_ADMIN的权限,那么在张三还在线且没有退出系统的情况下应该不可以继续访问ROLE_ADMIN的权限的资源。   解决思路:     1、监听系统中所有的在线用户,需要监听session的创建和销毁事件     ...
   spring security为我们的系统提供了方便的认证和授权操作。在系统中完成认证和授权后,一般页面页面上大多数是ajax和后台进行操作,那么这个时候可能就会面临session超时,ajax去访问后台的操作。或用户ajax匿名去访问一个受限的操作,此时应该如何进行处理。    面对以上可能发生的2中情况,我们可能希望进行统一的处理,将此次ajax请求导向登录界面。 1. 当用户session超时后,使用ajax进行访问 可以知道是SessionManagementFilter中的InvalidSessionStrategy进行处理的 2. 当用户是匿名用户访问,且s ...
      在我们开发的过程中,可能有这么一种情况,在java中需要取调用js方法完成一些事情。那么什么时候可能出现这种情况呢。比如我们使用爬虫模拟登录别的网站,但有些网站前台使用js对密码进行了加密处理,那么就需 ...
    在我们的日常开发中,有时候需要从一个json字符串中获取一个值,或者从一段json字符串中获取到某些值,如果先使用Gson或Jackson转换成java对象在获取值,有些时候是很麻烦的,那么有没有一种根据表达式提取json中的数据的方式呢,就像使用xpath语法操作xml文件一样,答案是有的,jsonPath就是这样的一个在java中操作json的简单工具。    jsonPath的在github上的网址如下:https://github.com/json-path/JsonPath 一、json-path中的操作符  二、json-path中可以使用的函数   三、过滤操作 ...
     在上一篇博客(netty入门实现简单的echo程序)中,我们知道了如何使用netty发送一个简单的消息,但是这远远是不够的。在这篇博客中,我们来使用netty发送一个java bean对象的消息,但是要发送对象类型的消息,必然要将java对象进行序列化,在java中序列化框架有很多中,此处我们使用protostuff来进行序列化,不了解protostuff的可以先看一下这篇博客(protostuff序列化)了解一下简单的用法。 需求:     客户端在连接上服务器端时,向服务器发送100个Person对象。     服务器端接收到消息后在控制台上打印即可。     消息发送 ...
    在java中,序列化是经常需要使用的,比如对象在网络中传输,那么就必须要序列化后进行传输。而java自带的序列化使用起来虽然方便,但是它序列化后占的体积大,而且不能跨语言,因此在涉及到序列化的时候必然要找到一款高效的序列化框架。在网上查找了一下,发现protostuff使用方便,而且性能比较高,本篇博客简单记录一下ptotostuff如何实现一个序列化和反序列化。 一、需求        1、有一个用户类(Person)和一个地址类(Address),一个人有多个地址        2、person中有部分字段不需要序列化              |-  使用transie ...
   最近项目中使用了spring boot搭建项目,使用spring security管理项目中的权限,使用freemarker作为视图层。为了将权限控制到按钮上,因此考虑直接使用spring security的标签实现,但是在整合的过程中,没有整合出来,突然想到freemark ...
    定时任务一般是项目中都需要用到的,可以用于定时处理一些特殊的任务。 在spirngboot中使用定时任务变的特别简单,只需要在启动类上增加一个@EnableScheduling注解即可。默认情况下,如果什么都不进行配置,就会导致一个问题,系统中所有的定时任务都是使用的一个线程去执行的,也就是说,如果如果同一个时刻有2个定时任务需要执行,那么只可能有一个定时任务在执行,如果要解决这个问题可以定义一个自定的任务调度线程池即可。 解决方案: 上面这个图是从 org.springframework.scheduling.annotation.EnableScheduling 这个注解类 ...
     最近看以往在程序中编写的代码,发现有一个功能是使用socket通讯来实现的,而那个时候使用的是基于bio的阻塞io来实现的,最近在看netty,发现可以使用netty来使用nio的方式来实现,此博客记录一下netty学习的一个过程,此处实现一个简单的服务器和客户端之间的通讯。 实现要求:     1、服务器端监听9090端口     2、客户端连上服务端时,向服务端发送10条消息     3、使用netty自带的解码器解决tcp的粘包问题,避免接收到的数据是不完整的。(不了解tcp粘包的可以百度一下)   实现:(代码的注释大致都写在了服务端这个类上)   一、引入n ...
     最近遇到这么一个需求,程序中有一个功能需要发送短信,当满足某些条件后,如果上一步的短信还没有发送出去,那么应该取消这个短信的发送。在翻阅java的api后,发现java中有一个延时队列可以解决这个问题。 实现思路: 1、需要延时发送消息的实体类实现 Delayed 接口,在getDelay方法中,返回这个对象还有多上时间需要执行。 2、将短信类加入到延时队列DelayQueye中 实现效果:     将短信Sms加入到队列中,到了invokedTime后从队列中直接取出执行。     主线程中启动一个子线程,打印当前时间,查看队列中的数据执行的时机是否正确。     d ...
    在一个系统中,权限的拦截是很常见的事情,通常情况下我们都是基于url进行拦截。那么在spring security中应该怎么配置呢。 大致步骤如下: 1、用户登录成功后我们需要拿到用户所拥有的权限,并保存到当前的认证对象中。      |- SecurityUserDetailServiceImpl#loadUserByUsername(String) 在根据用户名获取到用户后,一起查询出用户拥有的权限  2、当用户访问某一个url时,我们需要判断当前访问的url所需要的权限当前认证的用户是否拥有。     |- 系统加载时需要加载出  所有的资源(url)与之对应的权限 ...
Global site tag (gtag.js) - Google Analytics