自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

王仁一的博客

每天进步一点点

  • 博客(150)
  • 资源 (4)
  • 收藏
  • 关注

转载 Java并发--Java中的CAS操作和实现原理

文章目录1.什么是CAS? 2.JAVA中的CAS操作实现原理 3.concurrent包中CAS的应用 4.小结1.什么是CAS?CAS:Compare and Swap, 翻译成比较并交换。看到这个定义,可以说是没有任何意义的一句话,但是确实最能概括CAS操作过程的一句话。CAS 操作包含三个操作数 —— 内存位置(V)、预期原值(A)和新值(B)。 如果内...

2019-11-12 20:26:41 165

原创 git 版本回退

回退命令:$ git reset --hard HEAD^ 回退到上个版本$ git reset --hard HEAD~3 回退到前3次提交之前,以此类推,回退到n次提交之前$ git reset --hard commit_id 退到/进到 指定commit的sha码强推到远程:$ git push origin HEAD --force...

2019-11-09 20:08:18 115

转载 阿里云的redis规范

一、键值设计1. key名设计(1)【建议】: 可读性和可管理性以业务名(或数据库名)为前缀(防止key冲突),用冒号分隔,比如业务名:表名:id(2)【建议】:简洁性保证语义的前提下,控制key的长度,当key较多时,内存占用也不容忽视,例如:(3)【强制】:不要包含特殊字符反例:包含空格、换行、单双引号以及其他转义字符2. value设计...

2019-10-06 17:43:24 912

原创 golang 时间方法

//获取date本周周几的日期func getDateOfWeek(date time.Time, weekday time.Weekday) (time.Time) { var offset int switch weekday { case time.Sunday: //0 offset = int(time.Sunday-date.Weekday()) + ...

2019-09-17 19:48:21 439

原创 Neo4j安装和使用

创建环境变量 NEO4J_HOME设置path bin地址:%NEO4J_HOME%/bin启动neo4j : neo4j.bat console安装为服务: neo4j install-service启动服务: neo4j start关闭服务: neo4j stop重启服务: neo4j restart查询服务状态: neo4j status默认host:...

2019-08-27 09:45:31 184

原创 golang开发流程

Golang版本及安装下载网址:https://studygolang.com/dl/golang/go1.12.5.windows-amd64.msi开发工具golandGolang语言基础教程网址:http://c.biancheng.net/view/10.htmlGolang模块教程:https://github.com/overnote/Golang.git...

2019-08-27 09:44:41 648

转载 Gin 框架 - 使用 logrus 进行日志记录

Gin 框架的日志默认只会在控制台输出,咱们利用Logrus封装一个中间件,将日志记录到文件中。这篇文章就是学习和使用Logrus。日志格式比如,我们约定日志格式为 Text,包含字段如下:请求时间、日志级别、状态码、执行时间、请求IP、请求方式、请求路由。接下来,咱们利用Logrus实现它。Logrus 使用用dep方式进行安装。在Gopkg.t...

2019-08-08 22:00:32 2069

原创 freemark判断字符串和list不为空,长度大于0

1.判断string<#if str?? && (str?length >0) > </#if>2.判断list<#if list??&&(list?size>0)></#if>注意:后面()一定要带上,表明是这个整体,不然会报错...

2019-07-23 10:18:32 3900

原创 eclipse中安装 Activiti Designer插件

一、在线安装打开Eclipse -> Help -> Install New SoftWare-> Add然后按照如下对话框输入:Name:Activiti BPMN 2.0 designerLocation:http://activiti.org/designer/update二、离线安装http://www.activiti.org/desig...

2019-07-09 17:21:17 194

原创 eclipse不显示代码错误

2019-07-02 10:22:37 8036

原创 cannot lock ref 'refs/heads/uat': unable to resolve reference 'refs/heads/uat': reference broken

使用以下方法清理本地存储库:git gc --prune=now git remote prune origin --同步本地和remote分支一致

2019-06-28 15:34:23 2824

原创 spring-hibernate-context.xml

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springfra...

2019-06-26 15:59:14 227

原创 spring-mybatis-context.xml

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springfra...

2019-06-26 15:56:47 470

转载 Spring MVC 流程解析

Spring MVC 是目前主流的Wew MVC框架之一。两个核心点:处理器映射:选择使用哪个控制器来处理请求 请求参数解析 + 返回数据解析 视图解析器:选择结果应该如何渲染以下分析基于spring 5.0.4版本源码运行原理概述首先用户发送请求,DispatcherServlet实现了Servlet接口,整个请求处理流:HttpServlet.service -...

2019-06-12 13:29:50 157

原创 go micro踩坑之路:invalid character '\'' looking for beginning of value

go micro官方文档给的实例里面Make an RPC call via the CLI. The query is sent as json.micro call go.micro.srv.example Example.Call '{"name": "John"}'在windows控制台中执行会返回:invalid character '\'' looking for b...

2019-05-30 16:08:07 20391 1

转载 java 动态代理原理

代理:设计模式代理模式是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个真实对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。通过代理层这一中间层,有效的控制对于真实委托类对象的直接访问,同时可以实现自定义的控制策略(Spring的AOP机制),设计上获得更大的灵活性。java动态代理的类和接口(jdk1.6源码)1,j...

2019-05-12 19:47:45 114

转载 Spring AOP 实现原理与 CGLIB 应用

CGLIB(Code Generation Library)详解什么是CGLIBCGLIB是一个强大的、高性能的代码生成库。其被广泛应用于AOP框架(Spring、dynaop)中,用以提供方法拦截操作。Hibernate作为一个比较受欢迎的ORM框架,同样使用CGLIB来代理单端(多对一和一对一)关联(延迟提取集合使用的另一种机制)。CGLIB作为一个开源项目,其代码托管在github,...

2019-04-25 17:00:46 438

转载 Java 动态代理机制分析及扩展

Java 动态代理机制的出现,使得 Java 开发人员不用手工编写代理类,只要简单地指定一组接口及委托类对象,便能动态地获得代理类。代理类会负责将所有的方法调用分派到委托对象上反射执行,在分派执行的过程中,开发人员还可以按需调整委托类对象及其功能,这是一套非常灵活有弹性的代理框架。通过阅读本文,读者将会对 Java 动态代理机制有更加深入的理解。本文首先从 Java 动态代理的运行机制和特点出发,...

2019-04-25 15:10:39 125

原创 hibernate 查询view值覆盖,生成重复数据

问题背景:两个表A,B,B是detail表,A一对多B,使用A的id关联,为了方便查询detail数据。正常情况:多条A数据相同但不同B数据不同。异常情况:多条数据,A数据相同,B数据也相同。问题分析:<id>设置成了不唯一字段,而Hibernate认为它是唯一的,导致了查询出的两条数据有相同的B字段的值时,Hibernate直接复用了第一条查出的数据,因为它认为第...

2019-04-24 16:47:42 373

转载 Spring Boot 2.0 利用 Spring Security 实现简单的OAuth2.0认证方式2

0.前言  经过前面一小节已经基本配置好了基于SpringBoot+SpringSecurity+OAuth2.0的环境。这一小节主要对一些写固定InMemory的User和Client进行扩展。实现动态查询用户,但为了演示方便,这里没有查询数据库。仅做Demo演示,最最关键的是,作为我个人笔记。其实代码里面有些注释,可能只有我知道为什么,有些是Debug调试时的一些测试代码。还是建议,读者自...

2019-04-18 09:32:37 1235

转载 MyBatis拦截器原理探究

MyBatis拦截器介绍MyBatis提供了一种插件(plugin)的功能,虽然叫做插件,但其实这是拦截器功能。那么拦截器拦截MyBatis中的哪些内容呢?我们进入官网看一看:MyBatis 允许你在已映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBatis 允许使用插件来拦截的方法调用包括:Executor (update, query, flushStatements...

2019-04-16 16:53:09 141

转载 spring security oauth2 password授权模式

spring-security序前面的一篇文章讲了spring security oauth2的client credentials授权模式,一般用于跟用户无关的,开放平台api认证相关的授权场景。本文主要讲一下跟用户相关的授权模式之一password模式。回顾四种模式OAuth 2.0定义了四种授权方式。授权码模式(authorization code) 简化模式(im...

2019-04-16 10:31:44 1646

转载 Spring Security OAuth2 源码分析3 - TokenServices

TokenGranter 获取 Token 的最后一步中, 调用了 tokenServices 的 createAccessToken 方法,源码如下:protected OAuth2AccessToken getAccessToken(ClientDetails client, TokenRequest tokenRequest) { return tokenServices.cr...

2019-04-15 17:19:56 1832

转载 Spring Security OAuth2 源码分析2 - TokenGranter

TokenEndPoint 获取令牌过程中, 有个这样的步骤:OAuth2AccessToken token = getTokenGranter().grant(tokenRequest.getGrantType(), tokenRequest);TokenGranter, 字面上的理解: 令牌授予者。 以下是各授权模式对应的 TokenGranter:实现类 对应的授权模式...

2019-04-15 17:19:17 3086

转载 Spring Security OAuth2 源码分析1 - TokenEndpoint

通过请求 oauth/token 来获取 token。大致为以下流程:从 principal 中获取 clientId, 进而装载 ClientDetails 。 从 parameters 中获取 clientId、scope、grantType 以组装 TokenRequest。 校验 Client 信息。 根据 grantType 设置 TokenRequest 的 scope。...

2019-04-15 17:18:21 541

转载 OAuth2.0协议入门(三):OAuth2.0授权与单点登录(SSO)的区别以及单点登录服务端从设计到实现

一 OAuth2.0授权与单点登录(SSO)的区别在前两篇文章中我介绍了OAuth2.0协议的基本概念(https://www.zifangsky.cn/1309.html)以及OAuth2.0授权服务端从设计到实现(https://www.zifangsky.cn/1313.html)。这篇文章中我将介绍OAuth2.0授权与单点登录的区别,这两个概念看似很相似,实际上却有很大区别,而很多人...

2019-03-27 14:45:25 1458

转载 OAuth2.0协议入门(二):OAuth2.0授权服务端从设计到实现

一OAuth2.0授权服务端的设计在上一篇文章中,我介绍了OAuth2.0协议的基本概念以及作为一个第三方应用在请求授权服务端的时候需要做哪些事情。通过上一篇文章中调用百度OAuth服务的例子我们可以得知,使用授权码模式完成OAuth2.0授权的过程需要以下三个步骤:client请求授权服务端,获取Authorization Code; client通过Authorization Co...

2019-03-27 14:43:23 1100

转载 OAuth2.0协议入门(一):OAuth2.0协议的基本概念以及使用授权码模式(authorization code)实现百度账号登录

一 OAuth2.0协议的基本概念(1)OAuth2.0协议OAuth协议,是一种授权协议,不涉及具体的代码,只是表示一种约定的流程和规范。OAuth协议一般用于用户决定是否把自己在某个服务商上面的资源(比如:用户基本资料、照片、视频等)授权给第三方应用访问。此外,OAuth2.0协议是OAuth协议的升级版,现在已经逐渐成为单点登录(SSO)和用户授权的标准。不知道大家有没有发现,目...

2019-03-27 14:39:37 3819

原创 Installing ERROR | Unexpected end of JSON input while parsing near '

1.删除node-modulesnpm cache clean --forcenpm installif false2.删除package.lock.json再试一下1.如果还不行,那就莫得法了

2019-03-12 15:26:34 899

转载 微服务断路器

断路器模式是微服务体系结构中广泛采用的模式之一。我们将比较使用两种不同方法实现它的优缺点: Hystrix和Istio。微服务同步通信的核心问题设想一个非常简单的微服务体系结构,包括: 一个后端服务 一个前端服务 我们假设后端和前端通过同步HTTP调用进行通信。客户端 C1 和 C2 调用 前端 获取一些信息。由于前端没有客户端所需的所有数据,因此它调用后端以获得缺...

2019-03-08 16:34:16 654

原创 MySQL中查询时间最大的一条记录

在项目中要查询用户最近登录的一条记录的 ip直接写如下 SQL: 1 SELECTip,MAX(act_time)FROMusers_loginGROUPBYlogin_id; 但是这样是取不出用户登录记录中时间最大的那个 ip , 仅仅只是查到了最大时间,和 ip 没关系找了相当多的文章,经过自己测试,发现一个比较好的方式处理这个...

2019-03-04 13:15:40 11849

转载 JVM类加载器机制与类加载过程

0、前言读完本文,你将了解到:一、为什么说Jabalpur语言是跨平台的二、Java虚拟机启动、加载类过程分析三、类加载器有哪些?其组织结构是怎样的?四、双亲加载模型的逻辑和底层代码实现是怎样的?五、类加载器与Class&lt;T&gt;  实例的关系六、线程上下文加载器一、为什么说Java语言是跨平台的?Java语言之所以说它是跨平台的、可以在当前绝大部分的操作系统...

2019-02-26 15:06:38 236

转载 《Spring设计思想》AOP设计基本原理

0、前言Spring 提供了AOP(Aspect Oriented Programming) 的支持, 那么,什么是AOP呢?本文将通过一个另外一个角度来诠释AOP的概念,帮助你更好地理解和使用Spring AOP。读完本文,你将了解到:1.    Java程序运行在JVM中的特征2.    Java程序的执行流【了解AOP、连接点(Join Point)、切入点(point cut) ...

2019-02-26 14:11:24 134

转载 Java并发编程:CountDownLatch、CyclicBarrier和 Semaphore

在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法。以下是本文目录大纲:一.CountDownLatch用法二.CyclicBarrier用法三.Semaphore用法一.CountDownLatch用法CountDownLatch类...

2019-02-22 16:52:55 114

原创 Spring @Value("${}")空值处理

 场景: Test类中有一个在application.properties配置的属性email   @Value("${email}")    private String email;如果email在配置中没有配置,应用启动时将报找不到该属性异常,导致启动失败。解决方案1:在Test类上同时加上@Component,@Lazy解决方案2:在springboot中提供了@Cond...

2019-02-21 14:58:41 4938

转载 ServletRequestListener使用

利用Spring随时随地获得Request和Session一、准备工作:在web.xml中添加  &lt;listener&gt; &lt;listener-class&gt; org.springframework.web.context.request.RequestContextListener &lt;/...

2019-02-20 15:54:13 3168

转载 BlockingQueue

在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景。认识BlockingQueue 阻塞队列,顾名思义,首先它是一个队列,而一个队列在数据结构中所起的作用大...

2019-02-20 15:50:53 170

转载 CompletionService和ExecutorCompletionService详解

1.CompletionService接口定义了一组任务管理接口:submit() - 提交任务 take() - 获取任务结果 poll() - 获取任务结果ExecutorCompletionService类是CompletionService接口的实现ExecutorCompletionService内部管理者一个已完成任务的阻塞队列 ExecutorCompletionSer...

2019-02-20 10:22:12 8999

转载 git 回滚

git logcommit b39476b9c730d312266fe9bc7f63e795f9ba856fAuthor: kiwenlau &lt;kiwenlau@126.com&gt;Date: Thu Jan 18 14:58:06 2018 +0800 3个文件commit 3821210392184432de18b596cee58ab7924e39f9...

2019-02-18 19:07:25 180

转载 ClassLoader 原理

ClassLoader 做什么的?顾名思义,它是用来加载 Class 的。它负责将 Class 的字节码形式转换成内存形式的 Class 对象。字节码可以来自于磁盘文件 *.class,也可以是 jar 包里的 *.class,也可以来自远程服务器提供的字节流,字节码的本质就是一个字节数组 []byte,它有特定的复杂的内部格式。有很多字节码加密技术就是依靠定制 ClassLoader...

2019-02-15 14:16:02 396

GNU-WIN-MAKE-3.81.rar

GNUWin32 提供的 Windows 版本,http://gnuwin32.sourceforge.net/packages/make.htm

2020-04-18

java btrace线上代码调试工具

java btrace线上代码调试工具,可以用来在不关闭线上系统的情况下动态植入调试代码

2018-08-02

jcstress 线程测试工具

java多线程测试工具,可以用来测试多线程的执行状态。

2018-08-02

空空如也

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

TA关注的人

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