- 博客(15)
- 收藏
- 关注
原创 安装skywalking
下载elasticsearch 镜像docker pull elasticsearch:7.5.1创建指定存储数据的目录mkdir -p /data/elasticsearchchmod -R 777 /data/elasticsearchchown -R nobody:nobody /data/elasticsearch启动elasticsearchdocker run -d --name=es7 --restart=always -p 9200:9200 -p 9300:9.
2021-11-11 10:51:23 1493
原创 Java - JVM类加载
类加载过程加载加载的过程主要完成三件事 1. 加载二进制文件 [根据类的全限定类名,加载二进制字节流. 2. 将二进制所代表的静态存储结构转成java 运行时方法区的数据结构[将二进制字节流所代表的静态存储结构转成方法区的运行时数据结构] 3. 在内存中生成一个代表这个类的 java.lang.Class 对象,作为方法区这个类的各种数据访问的入口验证1. 验证文件格式是否正确。2. 类的元数据是否正确 [语法验证]3. 字节码验证 [语义验证]4. 符号引用验证准备1. 为类
2021-11-03 20:33:29 117
原创 JUC - Lock的基本使用与原理
重入锁仅限于当前线程,可重新反复进入的锁,不需要重新获取锁ReentrantLockSynchronized主要是为了解决死锁的方法package com.jacdong.test;public class SynchronizedTest { public synchronized void demo() { System.out.println("demo"); demo2(); } public void demo2() { synchronized (t
2021-10-27 22:30:03 373
原创 [基础] Java 线程相关知识
线程创建的几种方式继承Thread实现Runable 接口实现Callable 接口利用线程池生成这几中生成方式的差异继承thread 和实现runable 接口,都是无返回值的线程实现方式,Callable 是有明确返回值的后面两种可以有返回值,通过Callable接口,就要实现call方法,这个方法的返回值是Object,所以返回的结果可以放在Object对象中案例继承Threadpackage test.thread;public class ThreadImpl
2021-10-27 09:01:57 123
原创 设计模式 - 命令模式
前言命令模式是从界面设计中提取出来的一种分离耦合,提高重用的方法。(注意只是从页面设计中提取出来的一种分离耦合,不代表只能在页面是使用的设计)定义将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。解决的问题在设计界面时,同样的菜单控件,在不同的应用环境中的功能是完全不同的;而菜单选项的某个功能可能和鼠标右键的某个功能完全一致。理解*客户发出请求给请求者,请求者下发命令,这个命令是给某个具体的接受者里执行的。*请求者(command
2021-10-27 08:20:25 119
原创 设计模式 - 动态代理
为什么会有动态代理呢在静态代理模式中,每一个需要被代理的对象都要有一个代理类与之对应,这样的话,会形成类爆炸。于是我们想到了一种统一的方式,在类的运行期间动态的生成代理类,来完成相对应的工作。格式:interface Subject{ public void buyHouse();}public class RealSubject{ poblic void buyHouse(){ System.out.println("buy house");}} public Class Subj
2021-10-26 13:34:50 109
原创 设计模式 - 建造者模式
概念:将一个复杂对象的构建与他的表示分离,使得同样的创建过程,可以创建不同的表示。为什么要这样做:案例:“白龙马蹄朝西,伏着唐三藏,跟着三徒弟,西天取经不容易,一行就是几万里”,此时,我们自己是导演,我们需要自己来给唐三藏配置徒弟。解决方案:我的理解:与工厂模式有什么区别:可以理解为工厂是生产产品,而建造早死创建产品,利用工厂来获得的,肯定是加工过后的产品,而创建者,却是在拿部件组建产品解耦过程和部件试用场景:1.对象的构造过程允许对象有不同的表示。2.创建复杂对象的算法独立于该对象的
2021-10-26 13:26:20 116
原创 架构--响应时间--网站的高性能
1.性能测试方法性能测试–增加网站并发数,查看系统是否可以达到预期的处理能力 负载测试–继续增加并发,查看系统最大的负载能力,此时系统的并发能力是增加的。 压力测试–在系统能够承受的最大负载下,继续增加并发请求,知道系统崩溃的临界点。 稳定测试–模拟真实情况下的请求,查看系统的稳定性。2.web前端性能优化 减少http 请求–尽量将小文件合并成一个大的请求(如一次加载多个css 文件,可以将
2021-10-26 11:33:40 667
原创 架构--高可用性
1.高可用性度量网站不可用时间 = 故障修复时间 - 故障报告时间网站年可用性指标 = (1- 网站不可用时间/年度总时间)*100%2解决方案数据和服务的备份冗余以及失效转移3.应用层 a.利用负载均衡实现无状态服务的失效转移(应用服务本身是不涉及状态的) b.利用集群session 实现有状态的失效转移(记录相关访问上下文的信息) i.session 复制(缺点:集群规模庞大的时候,
2021-10-26 11:33:01 1236
原创 架构-网站的伸缩性
分层分割集群 应用服务 http 重定向 DNS 域名解析重定向 IP负载重定向 反向代理重定向 数据存储服务 mysql 备份,
2021-10-26 11:32:26 568
原创 架构--系统的可扩展性
1.利用分布式消息队列降低系统间的耦合度 a.事件驱动式编程 b.分布式消息队列 MQ,redis2.利用分布式服务提高系统可复用度 a.webservice b.reset api3.分布式服务框架 dubbo4.可扩展的数据结构 a.nosql5.关于事件驱动式编程的讲解
2021-10-26 11:31:35 1210
原创 大型网站核心的架构要素
1.性能 优化网站性能的手段有很多,从用户浏览器到数据库,影响用户请求的所有环节都可以进行性能优化。a.浏览器端浏览器缓存 (对于一个网站而言,CSS,javascript等静态文件的更改频率较低,而这些资源又是每次请求都需要的资源,如果将这些文件缓存在浏览器端,将很好的提升性能。可以通过设置Cache-control和expires属性
2021-10-26 11:29:34 123
原创 大型网站架构模式
1.什么是模式每一个模式描述了一个在我们周围不断重复发生的问题及解决该问题的方案核心,这样你就可以一次次的重复使用该方案,而不必做重发的工作。2.分层 系统层次分割,横面切割。如,应用层,服务层,数据库层。对于具体的系统功能,可以进行层次的细分,如应用层就可以划分,视图展现层,和业务处理层。服务层可以划分数据接口输入层,和数据接口输出层,等等。 层次之间不可以跨层访问也不可以逆级访问。3.分割 系统纵向功能切分,将功能
2021-10-26 11:27:02 914
原创 Mybatis -- 自定义持久化框架 (一)
1. 传统的JDBC 有哪些问题硬编码通过配置文件来设置数据库连接相关属性 sqlmapconfig.xml通过配置文件来保存sql 语句 mapper.xml重复连接资源通过线程池来解决,数据库连接的重复连接属性过多时赋值困难通过反射来对数据库字段与java 对象的映射2. 自定义持久层需要做什么工作读取配置文件1.通过Resource.getResourceAsStream(File).2.通过dom4j 解析配置文件。sqlsessionFactoryBu
2021-10-26 11:13:06 180
原创 Java 利用JavaCPP 调用算法
配置liunx 环境系统配置so 文件存放路径[root@arch2 ~]# cat /etc/ld.so.conf.d/so.conf /opt/app/tools/so/从新调用ldconfig 命令ldconfig配置java 项目配置pom 文件<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http:/
2021-10-26 11:01:38 887 7
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人