3/24 设计模式之责任链设计模式 Chain Of Responsibility Pattern

类别:行为型设计模式

目的:将为了达成共同目标的一系列具有逻辑顺序的操作进行解耦

完整代码参考:https://1drv.ms/u/s!AquRvPzqx59Ri3IZYwf83oLFp6Pu?e=i6yxH7

典型场景

为一个web请求定义的一些列操作,比如

  1. 用户登陆验证
  2. 处理业务逻辑
  3. 压缩响应数据

注意以上3个操作是顺序的,需要登陆成功后再执行业务逻辑,业务逻辑生成响应数据后,才需要压缩响应数据

构造一个简单的http请求对象备用,参考:

public class HttpRequest {
    private String username;
    private String password;

    public HttpRequest(String username, String password) {
        this.username = username;
        this.password = password;
    }

    public String getUsername() {
        return username;
    }

    public String getPassword() {
        return password;
    }
}
Read more   2020/3/1 posted in  设计模式 JAVA

2/24 设计模式之访问者设计模式 Visitor Pattern

类别:行为型设计模式

目的:不改变类的定义的约束下,为类的对象应用/添加新的行为

典型场景

现存一系列对象,比如由很多html标签对象组成了一个html页面,这里拿几个html标签举例

标签 当前状态 目标状态
a <a href=“#”>link</a> 添加class=“underlinea"
p <p>this is a paragraph</p> 添加style=“font: bold"
h1 <h1>new title</h1> 添加id=“h1-highlight"

当前代码状态如下,注意需要修改的部分

Read more   2020/2/27 posted in  设计模式 JAVA

1/24 设计模式之策略设计模式 Strategy Pattern

类别:行为型设计模式

目的:把同类的代码进行单独封装、使得需要使用这部分代码的用户可以按需使用

典型场景

对用户上传的图片应用不同的压缩算法和滤镜

压缩算法:

  1. jpeg格式
  2. png格式

滤镜:

  1. blackAndWhite滤镜
  2. backgroundBlur滤镜

硬编码

public class HardCode {
    public static void main(String[] args) {
        var fileName = "test.jpg";
        var compressor = "jpeg";
        var filter = "blackAndWhite";

        handleUpload(fileName, compressor, filter);
    }

    public static void handleUpload(String fileName, String compressor, String filter)
    {
        if (compressor.equals("jpeg")) {
            System.out.println("应用jpeg压缩算法...");
        } else if (compressor.equals("png")) {
            System.out.println("应用png压缩算法...");
        }

        if (filter.equals("blackAndWhite")) {
            System.out.println("应用blackAndWhite滤镜");
        } else if (filter.equals("backgroundBlur")) {
            System.out.println("应用blackAndBlur滤镜");
        }
    }
}

模式实现

Read more   2020/2/26 posted in  设计模式 JAVA

三分钟搭建大数据sql开发平台

Read more   2019/12/31 posted in  JAVA 三分钟系列 商业智能 SQL

java微服务 k8s生产环境搭建

整理了好久,来一波干货😄🎉

准备k8s集群机器

一台k8s部署机(堡垒机) 1G以上
3台k8s master节点机器 2c4G以上
3台k8s node节点机器 2c4G以上

为以上7台机器全部分配固定ip

机器 ip
K8s-ha-master1 172.16.67.130
K8s-ha-master2 172.16.67.131
K8s-ha-master3 172.16.67.132
K8s-ha-node1 172.16.67.135
K8s-ha-node2 172.16.67.136
K8s-ha-node3 172.16.67.137
K8s-ha-deploy 172.16.67.140
安装k8s集群
Read more   2019/4/12 posted in  JAVA

性能监控

添加jprofiler监控参数

-agentpath:/Applications/JProfiler.app/Contents/Resources/app/bin/macos/libjprofilerti.jnilib=port=8849

添加perfino监控参数

-javaagent:/Applications/perfino/agent/perfino.jar=name=order-jvm

username: suxiaolin
password: 123456

限制jvm内存参数

-Xmx256m -Xms128m

image-20181208093638625-4232998

2018/5/20 posted in  JAVA

mvn 私有仓库认证配置

settings.xml

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
  <interactiveMode>true</interactiveMode>
  <offline>false</offline>
  <pluginGroups>
  </pluginGroups>
 
  <servers>
    <server>
      <id>oss</id>
      <username>suxiaolin</username>
      <password>123456</password>
    </server>
  </servers>
</settings>

mvn 私有仓库配置

<repositories>
    <repository>
        <id>oss-snapshot</id>
        <name>Nexus Snapshot Repository</name>
        <url>http://127.0.0.1:8081/repository/myrepo-SNAPSHOT/</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
        <releases>
            <enabled>false</enabled>
        </releases>
    </repository>
    <!-- 配置nexus远程仓库 -->
    <repository>
        <id>myrepo-2</id>
        <name>Nexus Snapshot Repository</name>
        <url>http://127.0.0.1:8081/repository/myrepo/</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>
2018/5/20 posted in  JAVA

名词概念

java o类 定义

这个每个公司的规范都不同大家貌似都不喜欢非常多的 O 类。

我的想法,最起码要 PO 数据持久化对象,需要避免从 Service 暴露出去。禁止在上面加存储无关的属性。

也就说,一般 PO 是 Service 到 DAO ,和 DAO 返回给 Service 。

————

既然 PO 不从 Service 暴露出去,那么就要解决 Service 出参和入参问题。一般是 DTO 入参,DTO 出餐。看过一些公司,新增了 BO 作为出餐,和 DTO 分开。

——

在然后就是 Controller 的出入参,就是按照你说的 VO 。因为 Controller 的入参可能重用度低,也可以直接用 @RequestParam 注解

2018/3/27 posted in  JAVA

java程序cpu过高查看快速解决问题

top //查看cpu占用过高的进程 获取进程id
ps -mp pid -o THREAD,tid,time // 得到cpu占用过高的线程 获取其id

or 通过命令:top -Hp 15970
printf "%x\n" pid // 会得到一个16进制字符串
jstack pid | grep [上一步得到16进制] -A 60 //定位代码问题处
2017/5/20 posted in  JAVA