8月份工作内容回顾总结

5 篇文章 0 订阅

8月份因为没有被安排具体的项目,就是个打下手的。导致我八月份其实比较闲。工作内容就是写了个测试工具。但是其实很快就写好。然后对系统进行测试(其实我是开发岗啊)
然后大部分知识点都是自己再看书。但是没有应用的,影映像不够深刻。很多东西很快就忘记了。同样的,没有应用可以把知识点研究的更深入些。不像应用的时候,就只关注浅浅的表面。

1. 动态代理

代理的目的是为了增强方法。同时为了避免直接访问方法。
动态代理有两种方式:CGLIB和JDK
前者不需要实现某个接口。但是本质是继承,需要被代理的方法不能被final修饰。后者需要实现某一个接口
写法都是固定的。重要的理解代理的思想。考虑好做什么
CGLIB方式:

/**
 * @Author: wbdengtt
 * @Date: 2020/8/6 17:54
 */
//测试类
public class ProxyTest {
    public static void main(String[] args) {
        Enhancer enhancer = new Enhancer();
        enhancer.setSuperclass(CaiXuKun.class);
        enhancer.setCallback(new MyMethodInterceptor());

        CaiXuKun caiXuKun = (CaiXuKun) enhancer.create();
        caiXuKun.dance();
        caiXuKun.sing();
    }
}
// 增强
class MyMethodInterceptor implements MethodInterceptor {
    @Override
    public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {
        System.out.println("我是经济人,收钱的");
        return methodProxy.invokeSuper(o, objects);
    }
}
// 被代理的类
class CaiXuKun {
    /**
     * 唱歌
     * @return 返回结果
     */
    public String sing() {
        System.out.println("这是在唱歌");
        return null;
    }
    /**
     * 跳舞
     * @return 返回结果
     */
    public String dance() {
        System.out.println("这是在打篮球");
        return null;
    }
}

JDK

/**
 * @Author: wbdengtt
 * @Date: 2020/8/6 17:20
 */
 // 测试类
public class ProxyTest {
    public static void main(String[] args) {
        Star liuDeHua = new LiuDeHua();
        StarFactory starFactory = new StarFactory();
        System.out.println("代理前:");
        liuDeHua.dance();
        liuDeHua.sing();
        System.out.println("代理后:");
        Star starProxy = (Star)starFactory.getProxy(liuDeHua);
        starProxy.dance();
        starProxy.sing();

        Star cxkProxy = (Star) starFactory.getProxy(new CaiXuKun());
        cxkProxy.sing();
        cxkProxy.dance();

    }
}
// 代理工厂
class StarFactory implements InvocationHandler {
    private Object target;

    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        System.out.println("经纪人收钱");
        return method.invoke(target,args);
    }

    /**
     * 获取代理对象
     * @param target
     * @return
     */
    public Object getProxy(Object target) {
        this.target = target;
        return Proxy.newProxyInstance(target.getClass().getClassLoader(),target.getClass().getInterfaces(),this);
    }
}

// 声明接口
interface Star {
    /**
     * 唱歌
     * @return 返回结果
     */
    String sing();
    /**
     * 跳舞
     * @return 返回结果
     */
    String dance();
}
// 接口实现类。也是被代理的类
class LiuDeHua implements Star{
    /**
     * 唱歌
     * @return 返回结果
     */
    @Override
    public String sing() {
        System.out.println("这是:刘德华正在唱《请给我一杯忘情水》");
        return "唱完";
    }

    /**
     * 跳舞
     * @return 返回结果
     */
    @Override
    public String dance() {
        System.out.println("这是:刘德华正在跳《开心的马骝》");
        return "跳完";
    }
}
2. spring-boot-starter-actuator 监控

这个可以看到当前服务器的一些状态。但是这个我后面发现并不使用。因为仅可以看到点,而无法看到一个连续的状态。不如其他的监控平台好用。例如pinpiont,就能看到一个时间段相关的信息
稍微介绍下:
使用需要导包:

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

在属性文件application.properties声明启用

# 监控actuator 配置
# 默认只有health和info,下面的配置是开启所有节点的监控配置
management.endpoints.web.exposure.include=*

再通过访问
http://localhost:9001/actuator
能够访问各种服务器信息

3. pinpoint

pinpoint是我司使用的监控平台。相对于actuator好用很多。能够看到一段时间机器的数据变化。对应找出生产环境的瓶颈用处很大
客户端使用方式

pinpoint是什么?
一款监控工具,,,,,,

pinpoint客户端配置:
	1. 下载pinpoint包:https://static.centanet.com/pinpoint/pinpoint-agent-2.0.3.tar.gz
	2. 解压出文件夹pinpoint-agent-2.0.3
	3. 修改pinpoint-agent-2.0.3\profiles\release下pinpoint-env.config配置文件
		a. (这个配置文件有3个地方:一个是上面那个,还有两个分别在pinpoint-agent-2.0.3\pinpoint.config   和pinpoint-agent-2.0.3\profiles\local\pinpoint-env.config) 其实只改变release下面的配置就可以用了。
		b. 修改内容: 1. 
			i. profiler.transport.grpc.collector.ip=10.69.1.126    ##这个是pinpiont服务器的IP
			ii. profiler.collector.ip=10.69.1.126
			iii. profiler.sampling.rate=1                         ## 1代表100%捕捉请求 20 代表5%捕捉请求
	4. 修改程序启动命令:-javaagent:D:\pinpoint-agent-2.0.3\pinpoint-bootstrap-2.0.3.jar -Dpinpoint.agentId=10.104.10.48 -Dpinpoint.applicationName=news_dtt   ## 【Dpinpoint.agentId是一个唯一的id,应该可以随便取,我用的是我本机IP。Dpinpoint.applicationName是接入服务器的名字。路径根据自己及其进行修改 到时候怎么再服务器找到 这句话加到idea -Edit Configurations 配置的Environment-VM options里面】
	5. 结束

查看效果:这个ip是服务器的地址
进入pinpiont服务端网址,http://10.69.1.126:8079/main/ 找到自己的应用就能看到效果了
4. 对多线程获取远程结果进行了优化

之前虽然也是用了多线程,暗示线程里面干的事情太多了。导致我后序想修改功能得改很多代码。后面进行的优化。线程仅做获取接口内容。其他的任何处理交给其他地方做。
这样设计符合单一职责原则。每个方法只负责处理一件事

5. SpringBoot的启动类

(最近SpringBoot用的比较多,我都忘记很多Spring的配置了。SpringBoot用的还是比较爽的)

package com.deng.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @Author: wbdengtt
 * @Date: 2020/8/11 9:21
 */
@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}
6. 《Spring揭秘》阅读

一回想,我已经不记得这本书讲了什么。,,,,,,

7. 《高效能人士的七个习惯》阅读
  • 积极主动 : 主动去做一切事情。动用主观能力
  • 以终为始:以结果为导向,先想着结果为什么。认可会成功,或者说有验收机制
  • 要事第一: 重要的不紧急优先于紧急不重要
  • 双赢思维
  • 知彼解己
  • 统合综效
  • 不断更新

从依赖走向独立—从独立走向互赖

8. MyBatis相关知识点阅读

https://download.csdn.net/download/m0_37628958/12787947

9. JVM
10. 利用二级缓存对生产环境进行优化
<!--开启二级缓存-->
    <!--缓存 采用先进先出的方式,每120S刷新一次,最多存储256个引用,缓存只读 -->
    <cache eviction="FIFO" flushInterval="120000" size="256" readOnly="true"/>
11. MySQL执行计划,权限分配

https://blog.csdn.net/m0_37628958/article/details/108239941
https://blog.csdn.net/m0_37628958/article/details/108236328

12. windows下Redis的安装

https://blog.csdn.net/m0_37628958/article/details/108017262

13. Redis作为二级缓存使用

yml属性文件配置

# Redis配置
  redis:
    host: 127.0.0.1
    port: 6379

导包

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-cache</artifactId>
        </dependency>

使用方式:在service层的方法上添加@Cacheable(value = "userinfo")
这就是最简单的使用的。比想象中简单很多

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值