zhangxingr' blog

世间文字八万个,唯有情字最杀人


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 公益

  • 搜索

OAuth2.0授权三方登录原理

发表于 2018-08-16 | 分类于 Java | 热度: ℃
字数统计: 762 | 阅读时长 ≈ 3

OAuth2.0协议基本概念


OAuth 2.0是行业标准的授权协议。OAuth 2.0取代了2006年创建的原始OAuth协议所做的工作.OAuth 2.0专注于客户端开发人员的简单性,同时为Web应用程序,桌面应用程序,移动电话和客厅设备提供特定的授权流程。该规范及其扩展正在IETF OAuth工作组内开发。


OAuth2.0协议中的授权模式


  • 授权码模式(authorization code)
  • 简化模式(implicit)
  • 密码模式(resource owner password credentials)
  • 客户端模式(client credentials)
阅读全文 »

简述线程

发表于 2018-08-08 | 分类于 线程 | 热度: ℃
字数统计: 630 | 阅读时长 ≈ 2

前言


现代软件系统中,除了进程之外,线程也是一个十分重要的概念。特别是随着CPU频率增长开始出现停滞,而开始向多核方向发展。多线程,作为实现软件并发执行的一个重要的方法,也开始具有越来越重要的地位。

什么是线程呢?


线程(Thread)是程序执行流中最小的单位,可以简单地理解为一个进程(Process)由多个线程组成,因此,也有人把线程叫做轻量级的进程。一个标准的线程由线程ID,当前指令指针,寄存器集合和堆栈组成。多个线程共享进程的内存空间和进程级的资源。

大多数软件都不至一个线程,多个线程可以互不干扰的并发执行,并共享进程的全局变量和堆的数据。

阅读全文 »

波分复用技术简介

发表于 2018-08-07 | 分类于 通信 | 热度: ℃
字数统计: 0 | 阅读时长 ≈ 1

Java实现定时任务

发表于 2018-08-06 | 分类于 Java | 热度: ℃
字数统计: 599 | 阅读时长 ≈ 3

为什么要用定时任务


项目中要在内存中实现一个数据缓存机制,然后要定期定时清理其中无效的数据,因为项目没用Spring框架不能集成Quartz(个人认为很好用的三方库),所以第一次系统的了解一下Java自带的一些函数来实现定时任务。

Java中定时任务有哪几种方式


  1. 单开一个线程一直运行,通过sleep达到定时效果

    不太好用

    阅读全文 »

关于FM功能模块及相关实现介绍

发表于 2018-07-09 | 分类于 总结 | 热度: ℃
字数统计: 486 | 阅读时长 ≈ 2

前言


本博文仅供个人总结工作,没有任何参考价值,无需多看。

项目需求


大概三周之前,leader给了我一个模块去实现,该模块主要是采集公司网管系统上的告警(alarm)以及监听告警,从而对外提供接口。

项目背景


  • 网管提供Restful接口用于身份认证(getToken)、刷新认证(refreshToken)、查询alarm list以及单个alarm的详细信息。
  • 网管通过kafka producer向kafka server中指定topic发送message,要求我们在项目中建立kafka consumer来接收指定topic的message。
阅读全文 »

Centos安装rz和sz通信套件

发表于 2018-07-06 | 分类于 Linux | 热度: ℃
字数统计: 34 | 阅读时长 ≈ 1

安装

yum安装

yum -y install lrzsz


wget安装

wget http://www.ohse.de/uwe/releases/lrzsz-0.12.20.tar.gz

使用

上传

rz


下载

sz filename

npm install的时候卡住

发表于 2018-07-06 | 分类于 NodeJs | 热度: ℃
字数统计: 10 | 阅读时长 ≈ 1

npm install -g cnpm –registry=https://registry.npm.taobao.org

Spring配置切面

发表于 2018-07-06 | 分类于 Spring | 热度: ℃
字数统计: 920 | 阅读时长 ≈ 4

配置文件

  • applicationContext.xml配置
1
2
3
4
5
6
7
8
9
10
11
12
13
<!-- 配置切面所需要的目标类型 -->
<bean id="userDao" class="dao.impl.UserDaoImpl"/>
<!-- 配置切面所需要的bean类 -->
<bean id="comboAspect" class="aop.aspect.ComboAspect"/>
<!-- 配置切面 -->
<aop:config>
<aop:pointcut id="pointCut" expression="execution(* modUser(..))" />
<aop:aspect id="comboAdvice" ref="comboAspect">
<aop:around pointcut-ref="pointCut" method="aroundIntercept"/>
<aop:after-returning pointcut-ref="pointCut" method="afterIntercept" returning="result"/>
<aop:before pointcut-ref="pointCut" method="beforeIntercept"/>
</aop:aspect>
</aop:config>
  • <aop:pointcut/>配置切入点
  • <aop:aspect/>配置切面实现类
  • expression属性配置要执行切面的方法的表达式
阅读全文 »

Java并发之阻塞队列LinkedBlockingQueue浅显了解

发表于 2018-07-03 | 分类于 Java | 热度: ℃
字数统计: 768 | 阅读时长 ≈ 3

前言


此篇博文仅供个人记录备份,了解的很浅显,没什么学习价值

最近在做一个kafka consumer的时候用到了LinkedBlockingQueue(一个常用于高并发的阻塞队列)

概念


阻塞队列与我们平常接触的普通队列(LinkedList或ArrayList等)的最大不同点,在于阻塞队列支出阻塞添加和阻塞删除方法。

  • 阻塞添加
    所谓的阻塞添加是指当阻塞队列元素已满时,队列会阻塞加入元素的线程,直队列元素不满时才重新唤醒线程执行元素加入操作。
  • 阻塞删除
    阻塞删除是指在队列元素为空时,删除队列元素的线程将被阻塞,直到队列不为空再执行删除操作(一般都会返回被删除的元素)

浅显的理解就是你在快餐店点了一份鸡排一杯果汁,然后店员(producer.put)弄好了会放在吧台叫你(consumer.take)过去拿。如果此时吧台没有东西(数据),那么你就一直在餐桌等着(consumer线程sleep);如果此时吧台已经放满了别人的快餐,那么店员就不会一直往吧台放了,他要等待其他的客户拿走吧台上的食物(producer.sleep),等吧台有空位才会继续往上面放东西。

阅读全文 »

Java类为什么要有Set和Get方法

发表于 2018-07-03 | 分类于 Java | 热度: ℃
字数统计: 1,835 | 阅读时长 ≈ 6

心中不解


之前在上家公司的时候,公司项目用了Spring框架或者SpringBoot框架,然后所有的Java Bean里面都有Set、Get方法,当然这也是大多数程序员最熟悉的。至于为什么要有Set、Get方法,我一直都不知道,记得当初问老师也只是说这都是Spring框架规定的。

来到现在的公司,没有用任何的框架,所有的Bean都要自己维护管理,我就发现有些Bean没有Set、Get方法只是简单的public来修饰成员变量。然后百度了一下,发现有位仁兄转的一篇文章的还不错(找不到原文出入了…)。

阅读全文 »
1234
zhangxingrui

zhangxingrui

Java、通信、生活

35 日志
17 分类
37 标签
GitHub
Links
  • Title
© 2019 zhangxingrui
本站访客数:
|
由 Hexo 强力驱动
|
主题 — NexT.Pisces v5.1.4