Linn's Blog

  • 首页

  • 标签

  • 分类

  • 归档

  • 搜索

实现HTTPS通讯(TcpServer与SslStream)

发表于 2019-06-29 | 分类于 学习笔记 , 开发语言 , C# | 评论数:

基于https协议的TcpServer

发表于 2019-03-12 | 评论数:

雪花算法

发表于 2019-03-12 | 评论数:

RESTful接口版本管理

发表于 2019-03-12 | 更新于 2019-03-23 | 分类于 工作笔记 , Java Web , Spring Boot | 评论数:

REST简介

REST,全称是Representational State Transfer,译为表现层状态转化。REST并不是一个标准,而是一种软件架构风格。

在REST风格下,客户端通过url访问网络上的一个资源,通过HTTP动词请求服务端对资源进行操作。

接口版本

服务端接口是会不断变化更新的,一个好的设计,是提供不同版本的接口,而不是在一个接口上进行修改。部署时,服务端包含不同版本的接口,客户端可以依旧使用老版本的接口,也可以随服务端升级到新版本。当所有客户端都升级到新版本时,服务端可以考虑移除旧版本的接口。

在REST风格下,我们可以通过对接口增加版本号的概念,去区分不同版本的接口。版本号有两种表现形式,一种是包含在url中,一种是包含在HTTP头中。例如:

url
1
2
3
http://somewhere.com/xxx/v1/user

Accept: application/json; version=v1

Spring Boot starter源码

接口版本管理源码

实现思路

Spring Boot提供了starter的标准,starter完成自动配置,开发者只需要引用starter,就可以实现功能。我们可以通过开发一个api-version-spring-boot-starter,帮助应用快速实现接口版本管理。

Spring Boot对于自定义starter提出的指导有以下几点:

  1. 项目包含两个模块,一个是autoconfigure,一个是starter
  2. autoconfigure模块包含自动配置相关的代码,和一个清单文件,清单文件中包含自动加载bean的class名
  3. starter需引用autoconfigure模块和其他必要的依赖

因此,我们定义了两个模块,一个是autoconfigure,一个是starter,在autoconfigure中完成接口版本管理的功能和自动配置,实现在url中标明版本号。

阅读全文 »

虚拟机VirtualBox环境下Ubuntu存储扩容

发表于 2019-03-12 | 更新于 2019-03-23 | 分类于 学习笔记 , Linux , Ubuntu | 评论数:

之前我为虚拟机分配的存储太小了,鼓捣了半天终于明白怎么扩容了,下面记录一下。

确认VirtualBox中配置的存储类型

我配置的是动态分配存储,以下经验也许只试用于动态分配存储。

阅读全文 »

Log4j2内存占用高解决方案

发表于 2019-01-12 | 更新于 2019-01-16 | 分类于 学习笔记 , 开发框架 , Log4j , Log4j2 | 评论数:

Log4j2异步日志回顾

之前,我们在应用中使用Log4j2的异步日志,获得了很好的表现。

内存占用过高

我们在生产环境使用了kubernetes技术,在应用部署到k8s后,监控了一段时间,发现每天都有内存溢出的现象。而当应用心跳地址多次无法访问后,k8s自动帮我们重启了应用,但是重启并不能从根本上解决问题。

在某一次,容器内存占用很高时,我们将内存使用情况dump下来,使用IBM的工具分析了一下,发现是Log4j2的某个类所使用的ConcurrentHashMap集合很大,占用内存很高,这时终于发现了问题原因。

阅读全文 »

guacamole插件开发

发表于 2018-11-16 | 更新于 2019-03-12 | 分类于 学习笔记 , 开发框架 , Guacamole | 评论数:

Guacamole手册:Guacamole手册

Guacamole是什么?

  1. Apache Guacamole是一个无客户端的远程桌面网关。
  2. 它支持VNC,RDP和SSH等标准协议。
  3. 我们称之为无客户端,因为不需要插件或客户端软件。
  4. 感谢HTML5,一旦Guacamole安装在服务器上,您访问桌面所需的只是一个Web浏览器。

为什么要用Guacamole?

  1. 随时随地访问PC
  2. 保持桌面在云端
  3. 免费、开源
  4. 建立在文档齐全的API之上
  5. 商业支持
GuacamoleApache Guacamole
阅读全文 »

Log4j2异步日志

发表于 2018-11-16 | 更新于 2019-01-16 | 分类于 学习笔记 , 开发框架 , Log4j , Log4j2 | 评论数:

Log4j 2的异步日志详细介绍:Async Loggers

Apache Log4j 2是对Log4j的升级,它比其前身Log4j 1.x提供了重大改进,并提供了Logback中可用的许多改进,同时修复了Logback架构中的一些固有问题。

Log4jApache Log4j 2

Log4j 2基于LMAX Disruptor库,实现了一个高性能的异步记录器。在多线程场景中,异步记录器的吞吐量比Log4j 1.x和Logback高18倍,延迟低。

阅读全文 »

Spring Security动态配置

发表于 2018-11-08 | 更新于 2019-01-16 | 分类于 学习笔记 , 开发框架 , Spring , Spring Security | 评论数:

我们在开发Web应用时,通常希望保护某些资源(页面或数据),对这些资源做安全控制,比如:未登录的用户访问资源时,自动跳转至登录页面;拥有管理员身份的用户,可以访问某些管理界面。

本文介绍一种基于Spring Security的动态配置权限的方法,使用的是JavaConfig的方式。

Spring Security是一个功能强大且可高度自定义的身份验证和访问控制框架。具有以下特性:

  1. 对身份验证和授权的全面和可扩展的支持
  2. 防止会话固定,点击劫持,跨站点请求伪造等攻击
  3. Servlet API集成
  4. 可选与Spring Web MVC集成
  5. 还有很多啊..
SpringSpring Security
阅读全文 »

Maven个性化打包说明

发表于 2018-07-17 | 更新于 2019-01-16 | 分类于 学习笔记 , 开发语言 , 工具使用 | 评论数:

以实际项目为例,介绍maven打包插件的使用,实现个性化打包。

工程目录结构

miapp项目分为两个模块

yd-miapp模块为web项目

java代码部分

其中,function目录下,存在不同中心的组件代码

静态资源部分

其中,views目录下,存在不同中心的静态资源

目前war包目录结构

目前war包中包含了全部的组件代码和静态资源,与工程目录结构类似。

独立打包

war包目录结构

比如,我们打包的是城市代码为00031400。独立打包时,只包含00031400城市的组件和静态资源。

注意,00000000和99999999是特殊的城市代码,d00000000存放的是公共资源,d99999999存放的是模板资源。

阅读全文 »
12…4
Linn

Linn

32 日志
22 分类
33 标签
Creative Commons
© 2020 Linn
由 Hexo 强力驱动 v3.7.1
|
主题 – NexT.Pisces v7.0.1
|
0%