自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 redis架构设计: redis-server的启动(硬核分析)

逐行的分析reids-server启动的源码

2023-06-08 23:28:32 1536 1

原创 windows环境使用clion搭建redis5.0 redis6.0的源码阅读环境

无脑在windows环境下使用clion 搭建redis5.0,redis6.0的源码阅读环境!

2023-06-02 22:56:14 1078 2

原创 基于两台机器无脑搭建redis集群

本文基于两台虚拟机而搭建一个三主三从的redis集群当然按照这个思路为每台机器都搞一个redis 然后搭建集群也肯定行已亲测前置先下载好redis-4.0.1.tar.gzruby-2.3.4.tar.gz安装步骤(1)将redis-4.0.1.tar.gz包上传到一台机器上去,/usr/local目录下,解压缩,重命名为redis(2)安装redis需要的一些依赖:yum ...

2020-02-07 02:43:28 993 1

原创 关于分布式事务的一次分享

2020-01-29 18:34:55 443 2

原创 中缀表达式转换为后缀表达式

一、为什么要用后缀表达式求值将中缀表达式转换成等价的后缀表达式后,求值时,不需要再考虑运算符的优先级,只需从左到右扫描一遍后缀表达式即可二、后缀表达式求值后缀表达式也叫做逆波兰表达式,其求值过程可以用栈来辅助存储。假定待求值的表达式为1 2 3 + 4 * + 5 -它具有如下的几个步骤(1)遍历表达式 遇到的数字首先放入栈中,此时栈如下所示(2)接着读到了+ 号,则弹出了3和2 ...

2019-07-08 17:31:58 11525 4

原创 mysql 动态统计某时间内登陆次数

最近公司里做遇到了一点麻烦的事情,需要根据时间动态的查询每日每月的二维码扫描量以及优惠卷使用量。我想着,这不跟动态统计某时间内登陆次数之类的业务场景这种需求大致上是一样的吗,接下来我就用如标题所示的业务场景解决这个问题。创建用户登录记录表,假定用户每登录一次向此表存入一条数据CREATE TABLE `user_login_record` ( `id` VARCHAR(16) NOT N...

2019-07-03 18:21:19 4169 13

原创 java 字符串路径集合转换成带有层次结构的JSON

最近做业务遇到了一点麻烦,我调用某文件服务器的API返回所有文件的路径大致是如下的字符串:achievement/image/b97fa1c05ed1e34e02285f4b05ad227e.pngachievement/image/c162db7921d20ff35f0308af2c859c90.pngchannel/image/9471461ad403aa40b1ae636fc65...

2018-08-18 11:20:40 2550 2

原创 在Spring boot 中获取spring上下文的工具类

/** * 从Spring上下文取出Bean工具类 * * @author ZhuPengWei * @date 2018/6/27 18:04 */public class SpringApplicationContextUtil { private static ApplicationContext applicationContext = null; publ...

2018-08-14 20:22:47 5770

原创 机器学习之K近邻算法 kNN(2)

1.knn算法的超参数问题""" 超参数 :运行机器学习算法之前需要指定的参数 模型参数:算法过程中学习的参数 kNN算法没有模型参数 kNN算法中的k是典型的超参数 寻找最好的k"""from sklearn import datasetsfrom sklearn.model_selection import train_test_sp..

2018-08-12 11:16:02 531

原创 机器学习之K近邻算法 kNN(1)

可以说kNN是机器学习中非常特殊的没有模型的算法,为了和其他算法统一,可以认为新联数据集就是模型本身1. kNN算法基本实现import numpy as npimport matplotlib.pyplot as pltfrom math import sqrtfrom collections import Counter# 特征集合raw_data_x = [[3....

2018-08-12 11:14:44 307

原创 SpringBoot Quartz 总结(动态任务,Corn表达式)

我就直接粘贴代码了,后台包括了jar包的引入,任务管理类(可以动态的创建任务,删除任务,暂停任务等等),解决Quartz不能引入bean的问题,SpringBoot初始化启动Quartz等等. 关于创建Job类是写一个类实现Job接口并且实现Job中的execute方法.这个可以网上去搜我就不粘贴了.前台涉及到了填写Corn表达式,由于Corn表达式即使相对于后台人员来说也是相当复杂的,更别说...

2018-06-22 20:25:15 2108 1

原创 Spring Data Jpa 复杂查询总结 (多表关联 以及 自定义分页 )

只是做一个总结所以就不多说废话了 实体类@Entity@Table(name = "t_hotel")@Datapublic class THotel { @Id private int id; private String name; private String address; /** * 城市id */ p...

2018-05-13 12:42:06 66394 10

原创 Spring Data Jpa多表查询返回自定义实体

比如来看一下这样的一条SQL语句,这是一个三张表的多表查询,显然在JPA中用一个实体类是接受不了这些参数的select t1.id as chapterId ,t1.name as chapterName ,t2.id as unitId,t2.name as unitName ,t3.id as lessonId,t3.name as lessonNamefrom t_c...

2018-05-13 03:16:43 16553 25

原创 Ubantu下安装docker以及运行第一个tomcat镜像

1.在本地上安装VMware 2.在VMware上安装ubantu虚拟机 3.安装docker 4.搭建java应用1.在本地上安装VMware百度搜索VMware 点击普通下载打开的时候会提示需要破解 激活密钥 VMware 2017 v14.x 永久许可证激活密钥 FF31K-AHZD1-H8ETZ-8WWEZ-WUUVA CV7T2-6WY5Q-48EW...

2018-04-16 21:55:04 529

原创 本地navicat连接MySQL5.7报错1042

记录下这个问题,网上找了好久也找不到。我将自己本地电脑上装的MySQL5.5升级到了5.7,然后发现navicat怎么连接也连接不上了,报错是1042,找原因也找不到。 但是MySQL自带的MySQL Workbench以及cmd都显示连接是成功的。并且在windows电脑上显示MySQL的服务也是启动的 最终发现的的原因是 登陆为网络服务,解决办法是改为登陆为本地服务就好了...

2018-03-10 21:33:43 1474

原创 微服务架构

本来总结了一些,但是下面的这两篇博客真的是非常的不错 我就不写出来了 微服务实战(一):微服务架构的优势与不足 微服务架构

2018-03-09 00:58:10 386

原创 使用gradle初始化构建SpringBoot项目

https://start.spring.io/ 构建项目 点击generate Project将初始源代码下载下来 放入工作空间之中 解压后复制一份重命名为hworldeclipse版本 4.7+在eclispe中配置gradle引入gradle项目 点击finish就行了需要注意的是jdk需要是1.8+导入成功后适当对包名以及类名做出一定的修改...

2018-03-08 10:43:15 1853

原创 Spring Security基于JWT实现SSO单点登录

SSO :同一个帐号在同一个公司不同系统上登陆 使用SpringSecurity实现类似于SSO登陆系统是十分简单的 下面我就搭建一个DEMO 首先来看看目录的结构 其中sso-demo是父工程项目 sso-client 、sso-client2分别对应2个资源服务器,sso-server是认证服务器 引入的pom文件 sso-demo<?xml version="...

2018-03-02 17:59:28 29434 20

原创 实现标准的Spring Security OAuth服务提供商

oauth官网 application.properties# 自定义认证服务器idsecurity.oauth2.client.client-id= zhupengweisecurity.oauth2.client.clientSecret=zhupengwei/** * 自定义用户逻辑 * Created by ZhuPengWei on 2017/11/27...

2018-03-01 15:47:16 548 3

原创 Spring Security 记住我功能原理以及实现

用户名登陆的案例 实现“记住我” 功能 在用户登陆一次以后,系统会记住用户一段时间,在这段时间,用户不用反复登陆就可以使用我们的系统。记住我功能的基本原理 用户发送请求到UsernamePasswordAuthenticationFilter,当用户认证成功以后,会调一个RemeberMeService这样一个服务。这个服务里面有一个TokenRepository,会生成一个Toke...

2018-02-28 07:48:09 7047 1

原创 4、常用设计模式之组合模式

组合模式:将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象 和组合对象的使用具有一致性。 Component:组合中的对象声明接口,在适当的情况下,实现所有类共有接口的默认行为。 声明一个接口用于访问和管理Component的子部件。/** * 组合中对象声明接口 * Created by ZhuPengWei on 2018/1/29. */p

2018-01-30 00:16:16 193

原创 3、大话设计模式之抽象工厂模式详解

1、最基本的数据访问程序用‘新增用户’和‘得到用户为例’用户类,假设只有ID和Name两个字段/** * 用户类 * Created by ZhuPengWei on 2018/1/26. */public class User { private int id; private String name; public int getId() {

2018-01-26 23:19:56 318

原创 2、设计模式之建造者模式

建造者模式(Builder)结构图 Builder是为创建一个Product对象的各个部分指定的抽象接口 Director:指挥者,是构建一个使用Builder接口的对象 ConcreteBuilder:具体建造者,实现Builder接口,构造和装配各个部件 Product:具体产品什么时候需要使用建造者模式呢? 它主要是用于创建一些复杂的对象,这些对象内部构建间的建造顺序通

2018-01-26 11:43:21 161

原创 1、代码无错就是优?简单工厂模式

面试题: 请使用JAVA面向对象语言实现一个计算器控制台程序 我们来看下面一段代码:/** * 请使用JAVA面向对象语言实现一个计算器控制台程序 * Created by ZhuPengWei on 2018/1/24. */public class OriginalCode { public static void main(String[] args) {

2018-01-25 13:57:23 299

原创 Spring Security 实现图片验证码登陆(二)

重构图形验证码接口 验证码基本参数可配置 验证码拦截的接口可配置 验证码的生成逻辑图形验证码基本参数配置/** * application.properties配置 * Created by ZhuPengWei on 2017/11/28. */@ConfigurationProperties(prefix = "spring.security") //读

2018-01-22 23:55:47 1864 1

原创 Spring Security 实现图片验证码登陆(一)

生成图形验证码 根据随机数生成图片 将随机数存到session中 在将生成的图片写到接口的响应中在收到服务请求之后 根据随机数生成图片 ,然后把随机数存入到session中,在提交表单的时候从session中把随机数拿出来,和用户填写的验证码做一个比对/** * 封装验证码信息 * Created by ZhuPengWei on 2017/12/1. */public

2018-01-22 22:06:20 2721 3

原创 使用 Spring Security个性化登陆流程

1 、自定义登陆页面自定义登陆页面 @Overrideprotected void configure(HttpSecurity http) throws Exception { http.formLogin() //表单登陆 .loginPage("/index_standard.html") // 自定义登陆页面 .and()

2018-01-22 00:24:43 1534

原创 请求转发和重定向的区别

1、重定向N次,响应N+1次,路径会改变;请求转发N次响应1次,路径不会变 2、重定向效率比较低,因为严重依赖网络环境;请求转发效率比较高,因为不依赖网络环境 3、重定向使用的是response对象,使用客户端路径;请求转发使用request对象,使用服务端路径 4、重定向可以跳转本项目或外网资源;请求转发只能跳本项目内部资源 5、重定向不可以访问web-info下的资源;请求转发可以访问

2018-01-19 12:27:29 311

原创 SpringSecurity自定义用户认证逻辑(二)

根据上一节的配置,默认在服务开启的时候会被要求自动的进行表单登陆。用到的用户名只能是一个固定的用户名user,它的密码是每次启动的时候服务器自动生成的。最常见的场景是我们的用户是从数据库中获取的。 处理用户信息获取逻辑/** * 自定义用户逻辑 * Created by ZhuPengWei on 2017/11/27. */@Componentpublic class MyUserDe

2017-12-23 11:05:03 3654

原创 SpringSecurity的基本原理(一)

SpringSecurity基本原理 SpringSecurity 最核心的东西 其实是一个过滤器链,一组Filter 所有发送的请求都会经过Filter链,同样响应也会经过Filter链,在系统启动的时候springboot会自动的把他们配置进去(Springboot只是一种框架,只是方便了使用,其核心还是一样的)UsernamePasswordAuthticationFilter 表单登陆

2017-12-20 21:10:57 7795 1

原创 Java事务管理工具类

package com.thit.timdm.helper;import java.sql.Connection;import java.sql.SQLException;/** * 事务管理 工具类 * 确保遵循原子性、一致性、隔离性和持续性,使数据能够正确地提交到数据库中 * * @author ZhuPengWei * @date 2017年10月14日 */public c

2017-12-02 16:19:59 803

原创 使用切片拦截REST服务(五)

上一节所述的拦截器虽然可以拿到 请求 响应 以及它真正处理的方法 对象,但是它也有一些问题,它的问题就是它没法拿到拦截方法的值,拿到的只是方法的声明Handler 如果我们除了想要记录请求的类以及方法之外 还有这个方法的参数是什么,我们就要用到第三个拦截 就是切片切片(Aspect)就是Spring 核心功能的AOP 切入点( 注解 ) 1.在哪些方法上起作用2.在什么时候起作用也就是增强

2017-12-02 16:14:05 338

原创 使用Filter和Interceptor拦截REST服务(四)

在某些情况下,我们需要对REST API 做一些统一的处理 ,最常用的场景是我希望记录所有的REST API 处理的时间 ,那么如何的来实现这种需求呢?就需要用到这种RESTful API的拦截 过滤器( Filter ) 拦截器( Interceptor) 切片( Aspect)记录所有服务的处理时间/** * 记录所有服务处理的时间 * Created by ZhuPengWei on

2017-12-02 15:47:03 3067 1

原创 RESTful 用户创建请求、SpringMvc的Valid注解(三)

处理创建请求 @RequestBody 映射请求体到java 方法的参数 @Valid注解和BindingResult验证请求参数的合法性并处理校验结果1.用户创建请求测试用例import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;import static org.springfr

2017-11-25 21:08:12 1594

原创 使用SpringMvc 开发 RESTful API 用户详情请求、JsonView注解使用(二)

@PathVariable 映射url片段到java方法的参数 在url声明中使用正则表达式 @JsonView控制json输出内容1.获取用户详情测试用例 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;import static org.springframework

2017-11-25 20:46:09 459

原创 什么是RESTful服务?(一)

1.原有服务调用方式查询 /user/query?username=tom详情 /user/getInfo?id=1创建 /user/create?name=tom&age=15&sex=boy修改 /user/create?id=1&name=simeng删除 /user/delete?id=1可见传统请求使用URL描述行为2.RESTful服务调用方式查询 /user?name=tom

2017-11-25 20:20:39 550

原创 js深度复制代码实现

/** * 深度复制json对象的方法 */var cloneObj = function(obj){ // 中间变量 var str; // 返回的新对象 var newobj = obj.constructor === Array ? [] : {}; if(typeof obj !== 'object'){ return;

2017-11-19 15:57:49 301

转载 js数组方法大全(转载)

JavaScript中创建数组有两种方式(一)使用 Array 构造函数:var arr1 = new Array(); //创建一个空数组var arr2 = new Array(20); // 创建一个包含20项的数组var arr3 = new Array("lily","lucy","Tom"); // 创建一个包含3个字符串的数组(二)使用数组字面量表示法:var arr4 = [];

2017-11-19 15:28:02 547

原创 单点登陆解决方案以及代码分析与实现

1.什么是单点登陆 同一家公司不同应用使用同一套登陆系统叫做单点登陆系统2.单点登陆的引出 比如QQ号可以登陆很多游戏,而且这些游戏都是腾讯公司的,所以不再开发新的登陆模块,QQ就可以登陆多个应用.在写的过程中,我们注重用户体验,考虑用户体验的时候我们的用户名和密码的判断都是很精准的。没有用户名或者密码字样的出现。3.代码实现/*** 登陆* @param username 帐号

2017-11-07 23:02:24 257

原创 ActiveMQ解决分布式事务方案以及代码实现(二)

本文主要补全(一)未写出的类以及方法activemq与spring 的整合①消息发送方<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org

2017-11-02 00:42:57 3967

空空如也

空空如也

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

TA关注的人

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