左良 | Sean's Blog

记录轨迹


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

centos安装Nginx并配置https转发

发表于 2019-01-29 | 更新于 2019-01-30 | 分类于 技术 |

导言

通过使用nginx来部署https是一种方便的方式。本文是一个自己部署https的笔记

安装Nginx

在Centos的默认镜像中不包含nginx,我们需要添加一个EPEL (extra packages for Enterprise Linux) repository

1
sudo yum install epel-release

然后运行yum 安装

1
sudo yum install nginx

安装好之后可以通过service命令来控制nginx的启动

1
2
3
4
sudo systemctl start nginx # 启动
sudo systemctl stop nginx # 关闭
sudo systemctl restart nginx # 重启
systemctl status nginx # 检查状态

最好启动开机自启动

1
sudo systemctl enable nginx

启动之后默认挂载在80端口,https是挂载在443端口,需要检查一下防火墙是否对这些端口进行了封锁。
如果系统使用的是firewalld 请使用下列的命令

1
2
3
sudo firewall-cmd --add-service=http
sudo firewall-cmd --add-service=https
sudo firewall-cmd --runtime-to-permanent

如果是用的iptables 那就用下列的命令

1
2
sudo iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT
sudo iptables -I INPUT -p tcp -m tcp --dport 443 -j ACCEPT

然后访问对应的ip就可以看到nginx的默认页面了

创建证书

证书的申请我不讲了,有很多方法。根据实际情况看下资料就好了。

https 的证书包含一个private,public两个部分。我们分别建立两个文件夹来存放他们

/etc/ssl/certs 存放公钥的*.crt,*.pem 两种文件
/etc/ssl/private 存放公钥的*.key文件

1
2
3
4
5
sudo mkdir /etc/ssl/private
sudo chmod 700 /etc/ssl/private

sudo mkdir /etc/ssl/certs
sudo chmod 700 /etc/ssl/certs

配置nginx的Https

nginx在默认情况下是没有启动https的,所以我们需要新建一个配置文件用来描述https
我们需要再/etc/nginx/conf.d/下创建一个.conf结尾的文件,nginx在启动的时候会默认加载conf.d下以.conf结尾的配置文件。
我们创建一个ssl的配置文件

1
sudo vi /etc/nginx/conf.d/ssl.conf
阅读全文 »

NIO2笔记+搬运

发表于 2019-01-24 | 更新于 2019-02-21 | 分类于 技术 |

导言

本文是介绍 Java 7 中的 More New I/O APIs for Java (NIO.2) 的两部分文章的第二部分。 正如在 第一部分 中探索的异通道 API 一样, NIO.2 的文件系统用以前 Java 版本处理 I/O 的相关方法,填补了一些重大的空白。 依照 NIO.2 Java 规范要求(JSR 203):

Java 平台早就需要一个文件系统接口而不是 java.io.File 类。 该类不会在平台中以一贯的方式来处理文件名,它不支持高效文件属性访问,不允许复杂应用程序利用可用的文件系统特定特性(比如,符号链接), 而且,其大多数方法在出错时仅返回失败,而不会提供异常信息。
补救措施是 Java 7 试用版中的三个新的文件系统包:

  • java.nio.file
  • java.nio.file.attribute
  • java.nio.file.spi

本文重点关注这些包中最有用的类:

  • java.nio.file.Files 与 java.nio.file.FileVisitor 使得您可以在文件系统中漫步,在特定目录深度查询文件或者目录,并可对每个查询结果执行用户实现的回调方法。
  • java.nio.file.Path 与 java.nio.file.WatchService 允许 “ 注册 ” 来监视特定目录。如果在目录中发生了文件创建、修改或者删除操作,监视目录的应用程序将收到通知。
  • java.nio.attribute.*AttributeView 允许查看此前对于 Java 用户隐藏的文件和目录属性。这些属性包括文件所有者及组权限,访问控制列表(ACL),以及扩展文件属性。
    阅读全文 »

SAP BW获取数据

发表于 2019-01-22 | 更新于 2019-04-04 | 分类于 解决问题 |

使用RRW3_GET_QUERY_VIEW_DATA

导言

最近在开发一个通过sqbbw jco取数的插件,其中核心部分就是使用RRW3_GET_QUERY_VIEW_DATA 来读取query desinger中的数据
You set default variables by parameterizing the URL. The variable values are separated from each other by different indexes. The index in the parameter is indicated in the following by _I.

类型

传入参数如下

I_INFOPROVIDER “信息提供商
I_QUERY “QUERY名称
I_VIEW_ID “可有可无
I_T_PARAMETER “参数列表

I_T_PARAMETER 参数列表相应格式如下

Characteristic Value Variables

特征值变量

Parameter variables or variables for several single values are predefined as follows:
对于单值性的变量使用以下形式:

Parameter Description
VAR_NAME_I Technical name of the variables
VAR_VALUE_EXT_I Attribute value in external display Key for characteristic value in external display
阅读全文 »

Hexo设置 favicon

发表于 2019-01-21 | 分类于 解决问题 |

教程

当浏览器加载一个页面的时候,会默认从该网站的根目录下查找favicon.ico,
例如你的网站是www.xxx.com,则默认会查找`www.xxx.com/favicon.ico`文件,
但是注意,如果你的网站是在某个子目录下,例如:www.xxx.com/blog/,那浏览器还是会去这个地址www.xxx.com/favicon.ico找favicon.icon的。

推荐一个在线制作favicon的网站https://tool.lu/favicon/

将favicon图标 放到./source目录下

如果你使用的next主题还需要修改主题配置文件

1
2
3
4
5
6
7
favicon:
small: /favicon.ico
medium: /favicon.ico
apple_touch_icon: /favicon.ico
safari_pinned_tab: /favicon.ico
#android_manifest: /images/manifest.json
#ms_browserconfig: /images/browserconfig.xml

如果你的网站是放在一个子目录里面的,还需要修改网站的_config.yml的配置

1
2
3
# favicon config
## Place your favicon.ico to /source directory
favicon: /your dir/favicon.png

Nginx配置转发规则

发表于 2019-01-21 | 分类于 技术 |

nginx配置

今天工作的时候涉及到一个内网的接口隐射到外网接口的问题,正好就记录一下

location正则写法

阅读全文 »

Jpa中的一对一关系处理

发表于 2019-01-15 | 更新于 2019-01-21 | 分类于 技术 |

实体类的关系

我们已经了解了如何定义实体类和Repository:
•实体类中的标注,就是描述实体类到数据库Schema的映射,对应于DDL操作
•Repository接口中的方法,则对应于DML操作,即对数据库的增删改查
此前看到的标注都是关于Schema自身字段的信息,Schema之间还存在关系,比如外键关联。相应地,JPA@OneToOne、@ManyToOne、OneToMany和@ManyToMany几个标注提供用以定义实体类之间的关系。
首先来了解一下@OneToOne,相关概念梳理清楚了,后面几个标注也很容易理解。

基础使用

一个博客站点一般会有博客的名称、简介和背景图片等信息,这里通过BlogMetaInfo类来表示。关于(About)页面通常也需要使用这些信息,将其保存在数据库中可以进行动态配置。
那么User类和BlogMetaInfo类显然是一对一的关系,实体类的定义中需要使用@OneToOne标注。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@Entity
class BlogMetaInfo {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private long id;

private String title;
private String intro;
private String picUrl;

@OneToOne
private User user;

}

@Entity
public class User {

@Id
@GeneratedValue(strategy=GenerationType.AUTO)

// ...
}
阅读全文 »

java动态代理

发表于 2019-01-15 | 更新于 2019-01-21 | 分类于 技术 |

转载请注明作者longdick http://longdick.iteye.com

Java 序列化算法透析

Serialization (序列化)是一种将对象以一连串的字节描述的过程;反序列化 deserialization 是一种将这些字节重建成一个对象的过程。 Java 序列化 API 提供一种处理对象序列化的标准机制。在这里你能学到如何序列化一个对象,什么时候需要序列化以及 Java 序列化的算法,我们用一个实例来示范序列化以后的字节是如何描述一个对象的信息的。

序列化的必要性

Java 中,一切都是对象,在分布式环境中经常需要将 Object 从这一端网络或设备传递到另一端。这就需要有一种可以在两端传输数据的协议。 Java 序列化机制就是为了解决这个问题而产生。

如何序列化一个对象

一个对象能够序列化的前提是实现 Serializable 接口, Serializable 接口没有方法,更像是个标记。有了这个标记的 Class 就能被序列化机制处理。

阅读全文 »

mac下使用VMware Fusion打开windows下的虚拟机

发表于 2019-01-14 | 更新于 2019-01-16 | 分类于 解决问题 |

方法

将windwos下的虚拟机文件夹名称后面加一个.vmwarevm

然后可以选择导入,如果无法导入,直接双击那个文件夹就可以启动(对于不支持的)windows
Fusion 支持导入以下操作系统:

Microsoft Windows 10

Microsoft Windows 8

Microsoft Windows 7

Microsoft Windows Vista

Microsoft Windows XP Service Pack 3

Microsoft Windows XP Service Pack 2
在导入虚拟机之前,必须先关闭虚拟机。

原文:https://docs.vmware.com/cn/VMware-Fusion/8.0/com.vmware.fusion.using.doc/GUID-BAE67DAB-B948-45C0-856A-65D31DE77FD5.html

java动态代理

发表于 2019-01-14 | 更新于 2019-01-21 | 分类于 技术 |

导言


说java的动态代理之前我们得先了解一下代理模式 这种设计模式,他的特征是代理类与委托类有 同样的接口 ,代理类主要负责预处理或事后处理消息。有点类似于面向切面编程的切点。

静态代理

  1. 静态代理
    静态代理:由程序员创建或特定工具自动生成源代码,也就是在编译时就已经将接口,被代理类,代理类等确定下来。在程序运行之前,代理类的.class文件就已经生成。
  2. 静态代理简单实现

Spring Cloud 远程调用--Feign

发表于 2019-01-11 | 更新于 2019-01-21 | 分类于 技术 |

导言

Feign是一款java的Restful客户端组件,Feign使得 Java HTTP 客户端编写更方便。Feign 灵感来源于Retrofit, JAXRS-2.0和WebSocket。在之前的文章里面,有讲到java实现远程调用的几种技术,本章要讲的就是使用Feign来实现Spring cloud 的远程调用,在这之前可能需要先了解下spring cloud的服务注册,有了服务注册就可以通过Feign来实现远程调用了。

使用方法


直接就是用注解定义一个 FeignClient接口,然后调用那个接口就可以了。人家Feign Client会在底层根据你的注解,跟你指定的服务建立连接、构造请求、发起靕求、获取响应、解析响应,等等

实现原理

常用注解

Feign 默认创建了一些基于约定的注解接口
注解名称|目标接口|使用方法
@RequestLine| Method |用于给请求设定HttpMethod和UriTemplate 使用相应的@Param注释参数解析用大括号{expression}包装的表达式,值
@ParamParameter| 定义模板变量,其值将用于按名称解析相应的模板表达式。
@Headers|Method, Type|定义HeaderTemplate; UriTemplate的变种。 使用@Param注释值来解析相应的表达式。 在Type上使用时,模板将应用于每个请求。 在Method上使用时,模板仅适用于带注释的方法。
@QueryMap| Parameter| 定义名称 - 值对的映射或POJO,去映射到查询url中
@HeaderMap| Parameter| 定义名称 - 值对的映射或POJO,去映射到查询请求头中
@Body| Method| 定义一个模板,类似于UriTemplate和HeaderTemplate,它使用@Param带注释的值来解析相应的表达式。

类图结构

三层分别为:
•代理层 动态代理调用层
•转换层 方法转http请求,解码http响应
•网络层 http请求发送

参考链接:

  1. feign官网 https://github.com/OpenFeign/feign/
  2. feign 源码解析 http://techblog.ppdai.com/2018/05/14/20180514/
123
onlyxx

onlyxx

write some content

24 日志
3 分类
19 标签
GitHub
© 2019 onlyxx
主题 – NexT.Gemini