ARTS-2018.12.12 LeetCode26 - OAuth2.0工作流程图

ARTS-2018.12.12

  • Algorithm

LeetCode 26: Remove Duplicates from Sorted Array
Given a sorted array nums, remove the duplicates in-place such that each element appear only once and return the new length.

Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory.

描述:使用原地算法返回一个有序数组的不重复元素个数,并将他们按顺序排在前面,举例:

Given nums = [0,0,1,1,1,2,2,3,3,4],返回:5,最终数组前5位为:[0,1,2,3,4]

我的答案:

public int  removeDuplicates(int[] nums){
        int length = nums.length;
        if (length ==0) return length;

        int i=0;
        int j=1;
        while (j <= length - 1) {
            if (nums[i] == nums[j]) {
                j++;
            }else {
                nums[i + 1] = nums[j];
                i++;
                j++;
            }
        }
        return ++i;
    }

思路就是2个指针i,j,遇到相同的元素,j往后移动,否则把后面的元素拿到 i+1位,同时 i 向后移动一位。以下是标准答案。

public int removeDuplicates(int[] nums) {
    if (nums.length == 0) return 0;
    int i = 0;
    for (int j = 1; j < nums.length; j++) {
        if (nums[j] != nums[i]) {
            i++;
            nums[i] = nums[j];
        }
    }
    return i + 1;
}
  • Review

How OAuth 2.0 works and how to choose the right flow

作者:Lorenzo Spyna

学习了一下OAuth 2.0 的认证流程,这篇文章很不错,流程图很清晰,OAuth 2.0的4种认证流程做了清晰说明和区别,并给了要使用OAuth 2.0 的技术选型参考。贴一下流程图:

  1. Authorization Code Grant

Authorization Code Grant

  1. Implicit Grant

  1. Client Credential Grant

  1. Password Grant

4种验证模式的技术选择要求:
在这里插入图片描述
Which to choose ?
在这里插入图片描述

  • Tip

最近在学习Spring Security学习到一个非常有用的技巧:

@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    public void configure(WebSecurity web) throws Exception {
        web.debug(true);
    }
}

在配置类中打开debug 模式,整个 Spring Security Filter的流程就都会打印出来,非常方便理解整个过程如何进行的,举个例子:

Request received for GET '/login':

org.apache.catalina.connector.RequestFacade@6bd6b5fa

servletPath:/login
pathInfo:null
headers: 
host: localhost:8080
connection: keep-alive
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36
accept: image/webp,image/apng,image/*,*/*;q=0.8
referer: http://localhost:8080/
accept-encoding: gzip, deflate, br
accept-language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7

Security filter chain: [
  WebAsyncManagerIntegrationFilter
  SecurityContextPersistenceFilter
  HeaderWriterFilter
  LogoutFilter
  IpAuthenticationProcessingFilter
  UsernamePasswordAuthenticationFilter
  RequestCacheAwareFilter
  SecurityContextHolderAwareRequestFilter
  AnonymousAuthenticationFilter
  SessionManagementFilter
  ExceptionTranslationFilter
  FilterSecurityInterceptor
]
************************************************************

  • Share

这段时间每天都加班到很晚,除了项目很急之外都是一些很琐碎的事,很多时候是因为开发前没有理清总体的思路,导致在开发的过程中经常因为细节问题推倒重来,我想这也许就是差距吧,努力提高自己的整体思维能力吧,在动手之前多画画流程图,类图,也许更能提高效率。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章