自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Dunk.Wan

写出最优美流畅的代码!

  • 博客(297)
  • 收藏
  • 关注

原创 23种经典设计模式之代理模式

23种经典设计模式之代理模式代理模式是什么?首先我们来看一下代理模式中有哪些角色,我们开看下这张简单的图可以看到,在代理模式中主要有客户端、代理类、目标类这3个角色,它们的含义如下:客户端:就是用来发起调用请求的,没啥好说的目标类:特定行为的实现类,真正“干活”的角色代理类:对外代理目标类所有的功能,在目标类功能的基础上会做一些额外的工作,通过在代理类内部持有目标对象引用实现那么代理模式是怎么来玩的呢?其实很简单,就和上边那张图一样,开始的时候客户端会来调用代理类的方法,由于在代理类内

2022-04-27 23:17:20 1037

原创 数据库压测(sysbench)及服务器和MySQL数据库监控(Prometheus + Grafana)

数据库压测(sysbench)及服务器和MySQL数据库监控(Prometheus + Grafana)服务器系统IP部署软件CentOS 5.7192.168.157.137MySQL,node_exporter,mysqld_exporterCentOS 5.7192.168.157.141Grafana + PrometheusCentOS 5.7 安装MySQL 5.7https://blog.csdn.net/li1325169021/article/

2022-04-18 14:00:23 692

原创 JVM知识整理

2022-04-11 15:21:02 303

原创 23种经典设计模式之建造者模式

建造者模式为什么需要建造者模式?在平时的开发中,创建一个对象最常用的方式是,使用 new 关键字调用类的构造函数来完成。我的问题是,什么情况下这种方式就不适用了,就需要采用建造者模式来创建对象呢?你可以先思考一下,下面我通过一个例子来带你看一下。假设有这样一道设计面试题:我们需要定义一个资源池配置类 ResourcePoolConfig。这里的资源池,你可以简单理解为线程池、连接池、对象池等。在这个资源池配置类中,有以下几个成员变量,也就是可配置项。现在,请你编写代码实现这个 ResourcePoolC

2022-03-15 16:45:46 143

原创 23种经典设计模式之工厂模式

工厂模式一般情况下,工厂模式可细分为:简单工厂、工厂方法、抽象工厂简单工厂场景1:解析不同后缀的配置根据配置文件的后缀(json、xml、yaml、properties),选择不同的解析器(JsonRuleConfigParser、XmlRuleConfigParser……),将存储在文件中的配置解析成内存对象 RuleConfig。public class RuleConfigSource { public RuleConfig load(String ruleConfigFilePath)

2022-03-15 14:55:07 103

原创 23种经典设计模式之单例模式

单例模式为什么要使用单例?单例设计模式:一个类只允许创建一个对象(或者实例)对象实例需求为唯一性如何实现一个单例?实现单例需要关注点:构造函数私有化,这样才能防止外部通过new进行实例化考虑对象创建时的线程安全问题考虑是否支持延迟加载考虑 getInstance() 性能是否高(是否加锁)实现方式1. 饿汉式public class Singleton { private static final Singleton instance = new Singleton();

2022-03-15 13:39:57 395

原创 快速改善代码质量的20条编程规范

快速改善代码质量的20条编程规范主要分为三大块:命名和注释 (Naming and Comments)命名(Naming)命名多长最合适?命名长度有两种极端:1. 单词全名命名法 2. 熟知单词缩写命名法优点:更加准确直观达意缺点:在代码长度有限制的情况下,就会经常出现一条语句被分割成两行的情况,这其实会影响代码可读性优点:简洁明了缺点:不够达意对于作用域比较小的,推荐使用相对短的命名,比如一些函数内的临时变量。对于像类名这种作用域比较大的,推荐使用长的命名方式。命

2022-03-01 10:39:56 325

原创 分布式锁解决方案

分布式锁解决方案分布式理论分布式的 CAP 理论告诉我们:任何一个分布式系统都无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance),最多只能同时满足两项。目前很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题。基于 CAP理论,很多系统在设计之初就要对这三者做出取舍。在互联网领域的绝大多数的场景中,都需要牺牲强一致性来换取系统的高可用性,系统往往只需要保证最终一致性。分布式场

2022-02-18 17:38:55 1599 1

原创 Hadoop 集群搭建实战

Hadoop 集群搭建实战环境准备:1. VMware 搭建三台CentOS 7.8主机2. 静态IP,关闭防火墙,修改主机名,配置免密登录,集群时间同步3. 在/opt目录下创建文件夹 mkdir -p /opt/apps/software --软件安装包存放目录 mkdir -p /opt/apps/servers --软件安装目录4. Hadoop下载地址: https://archive.apache.org/dist/hadoop/common/hadoop-2.9.2

2021-12-31 17:57:02 893

原创 一条SQL语句的查询(SELECT)或更新(UPDATE/DELETE/INSERT)流程(MySQL)

一条SQL查询语句的执行流程分析连接器负责跟客户端建立连接、获取权限、维持和管理连接(mysql -hhost−Phost -Phost−Pport -u$user -p)查询缓存分析器对SQL语句进行词法分析和语法分析优化器是在表里面有多个索引的时候,决定使用哪个索引;或者在一个语句有多表关联(join)的时候,决定各个表的连接顺序执行器执行流程:调用存储引擎接口取这个表的第一行,判断条件字段是不是所查询的值,如果不是则跳过,如果是则将这行存在结果集中;调用引擎接口

2021-12-29 16:07:28 2047

原创 MySQL中两个重要的日志(redolog和binlog)

MySQL里redolog和binlog的重要性redolog和binlog的区别:redo log 是 InnoDB 引擎特有的;binlog 是 MySQL 的 Server 层实现的,所有引擎都可以使用。redo log 是物理日志,记录的是“在某个数据页上做了什么修改”;binlog 是逻辑日志,记录的是这个语句的原始逻辑,比如“给 ID=2 这一行的 c 字段加 1 ”。redo log 是循环写的,空间固定会用完;binlog 是可以追加写入的。“追加写”是指 binlog

2021-12-05 00:22:19 368

原创 Kafka集群搭建实战

Kafka集群搭建实战集群结构:集群环境信息:192.168.157.130192.168.157.131192.168.157.129Zookeeper集群搭建三台机器上均安装JDK(这里采用压缩包的安装方式jdk-8u301-linux-x64.tar.gz)xxx:~#tar -zxvf jdk-8u301-linux-x64.tar.gz # 解压文件xxx:~#mv jdk1.8.0_301 /opt # 移动文件至 /opt目录下 xx

2021-08-25 13:56:56 108

原创 Redis高可用方案

Redis高可用方案主从复制Redis支持主从复制功能,可以通过执行slaveof(Redis5以后改成replicaof)或者在配置文件中设置slaveof(Redis5以后改成replicaof)来开启复制功能。(一主一从)(一主多从)(传递复制)主对外从对内,主可写从不可写主挂了,从不可为主实战:在一台主机上实现伪主从复制主Redis配置:无需特别配置从Redis配置:修改从服务器上的redis.conf 文件slave(从节点配置):# 1. 修改端口号port

2021-07-29 13:00:04 58

原创 MySQL读写分离实战

MySQL读写分离实战读写分离引入时机大多数互联网业务中,往往读多写少,这时候数据库的读会首先成为数据库的瓶颈。如果我们已经优化了SQL,但是读依旧还是瓶颈时,这时就可以选择“读写分离”架构了。读写分离首先需要将数据库分为主从库,一个主库用于写数据,多个从库完成读数据的操作,主从库之间通过主从复制机制进行数据的同步,如图所示。在应用中可以在从库追加多个索引来优化查询,主库这些索引可以不加,用于提升写效率。读写分离架构也能够消除读写锁冲突从而提升数据库的读写性能。使用读写分离架构需要注意:主从

2021-07-10 19:57:41 168

原创 MySQL主从复制原理与实战

MySQL主从复制适用场景MySQL主从模式是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。MySQL 默认采用异步复制方式,这样从节点不用一直访问主服务器来更新自己的数据,从节点可以复制主数据库 中的所有数据库,或者特定的数据库,或者特定的表。mysql主从复制用途:实时灾备,用于故障切换(高可用)读写分离,提供查询服务(读扩展)数据备份,避免影响业务(高可用)主从部署必要条件:从库服务器能连通主库主库开启binlog日志(设置log-b

2021-07-09 13:29:05 494 3

原创 Eureka Server 启动流程

启动过程分为如下两个主要部分:

2021-05-04 21:25:56 123

原创 Spring Cloud Eureka实例获取版本号无效

Spring Cloud Eureka自定义实例显示格式eureka: client: service-url: defaultZone: http://lagoucloudeurekaservera:8761/eureka/, http://lagoucloudeurekaserverb:8762/eureka/ instance: prefer-ip-address: true instance-id: ${spring.cloud.client.ip-a

2021-04-29 13:04:37 343

原创 Dubbo消费者端启动异常分析

Dubbo消费者端启动异常分析提供者端启动正常服务器上提供者端dubbo启动默认使用内网IP消费者端启动异常解决方案:1.使用ifconfig命令找到本机IP(如果是云服务器则应该为内网IP地址),hostname命令得出本机主机名称2.将提供者端的服务器中的/etc/hosts文件中的主机名称与本机IP(如果是云服务器时,此处应当为公网IP地址)进行映射...

2021-04-16 13:03:34 600

原创 Git简易教程

Git简易教程将暂存区中文件恢复为和HEAD一样git reset HEAD 将暂存区中所有文件恢复为和HEAD一样git reset HEAD -- [filename]将暂存区中名字为filename的文件恢复为和HEAD一样比较暂存区和HEAD所含文件差异git diff --cached比较工作区和暂存区所含文件差异git diff默认比较暂存区和工作区的文件的区别git diff -- [filename] 比较工作区和暂存区中名字为filename的文件的内容的区别

2021-02-21 22:05:41 73

原创 HashMap源码分析

HashMap源码分析HashMap初始的默认大小是16, 其内部存储结构包含一个Node类型的数组,Node类型存储着键值对,数组中每一个位置被当成一个桶,一个桶存放一个链表。HashMap使用拉链法来解决冲突,同一个链表中存放哈希值和散列桶取模运算结果相同的Node。 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16 /** * Basic hash bin node, used for most

2020-09-21 15:59:22 87

原创 ArrayList源码分析

ArrayList源码分析添加元素添加元素时使用ensureCapacityInternal()方法来保证容量足够,如果容量不足时,需要进行grow()方法进行扩容操作,并且扩容后的大小为原来大小的1.5倍。因此,在指定数组大小时,应该最好在创建ArrayList对象时就指定大概的容量大小,避免过多的扩容操作。/** * Appends the specified element to the end of this list. * * @param e element to be a

2020-09-21 09:43:19 146

原创 排序算法

排序算法冒泡排序(Bubble Sort)package Sort;public class BubbleSort { public static void main(String[] args) { int[] nums = new int[]{3,44,38,5,47,15,36,26,27,2,46,4,19,50,48}; bubbleSort(nums); for (int n : nums) System.o

2020-09-18 10:14:30 109

原创 百度AI人脸识别接口应用实例

百度AI人脸识别接口应用实例pom 文件<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion&

2020-09-15 15:23:16 856

原创 移除数组中重复元素

移除数组中重复元素/* at most Kth elements* code template*/int removeDuplicates(vector<int>& nums, int k) { int i = 0; for (int n : nums) if (i < k || n > nums[i-k]) nums[i++] = n; return i;}

2020-09-04 08:35:33 76

原创 Programming Assignments: Implementing a Reliable Transport Protocol

Programming Assignments: Implementing a Reliable Transport Protocol本编程作业内容来自Computer Networking A Top-Down Approach 7th Edition总结思维导图如下:ABP(alternating-bit protocol)version#include <stdio.h>#include <stdlib.h>#include <string.h>

2020-08-30 23:14:47 2774 1

原创 递归

递归[509] Fibonacci Numberclass Solution { public int fib(int N) { //return recursiveHelper(N); return iterativeHelper(N); //return iterativeHelper2(N); } private int recursiveHelper(int n) { // terminator

2020-08-30 08:46:25 75

原创 二叉树的建立

二叉树的建立层序法/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public static TreeNode createBinaryTree(Integer[] nums) { Tree

2020-08-30 08:42:17 68

原创 二叉树的遍历

二叉树的遍历前序遍历递归版本/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, T

2020-08-19 23:12:57 67

原创 表单

表单Input(输入框)<!-- input --> <h2>Input</h2> <p>input 元素:</p> <input v-model.lazy="message" placeholder="编辑我......"> <p>消息是:{{ message }}</p> <p>textarea 元素:</p> <textarea v-mo

2020-07-29 11:15:15 95

原创 Android网络编程实践之移动终端通信

ServerMainActivity.java// MainActivity.javapackage com.example.server;import androidx.annotation.NonNull;import androidx.appcompat.app.AppCompatActivity;import android.annotation.SuppressLint;import android.content.ComponentName;import android.c

2020-06-11 09:33:58 167

原创 Linux下df命令简单实现

过程总结在项目文件下查找关于Android设备上显示内存使用情况的源代码(比如:~\src\com\android\settings)将源代码导入Source Insight中进行查看,找到内存显示的代码片段分析如何进行内存容量的计算将其Android代码翻译为C代码即可相关代码命令实现代码// showstorage.c#include <stdio.h>#include <stdlib.h>#include <mntent.h>

2020-05-26 22:13:11 1048

原创 Android学习之Activity

Android学习之ActivitySimlpe Example:Java 代码// MainActivity.javapackage com.example.activitytest1;import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;import android.os.Bundle;import android.util.Log;import android.view.Vi

2020-05-24 15:08:13 181

原创 CSAPP中相关编译错误解决方案

错误:…/src/csapp.o: relocation R_X86_64_32 against `.rodata.str1.1’ can not be used when making a PIE object; recompile with -fPIC如下图解决办法:由图可知,位于./src下的csapp.o文件需要加上-fPIC选项进行重新编译。如上加上编译选项后,执行编译即可。...

2020-04-27 00:21:54 496

原创 Wireshark Lab 2 : HTTP

本实验内容来自 Computer Networking: A Top-Down Approach, 7th ed中的wireshark实验,如需要深入了解配套wireshark实验的所有内容请访问http://gaia.cs.umass.edu/kurose_ross/“Tell me and I forget. Show me and I remember. Involve me and...

2020-04-26 20:48:18 6142

原创 Socket Programming Assignment 1:Web服务器

SocketProgrammingAssignment 1:Web服务器本套接字编程作业内容来自Computer Networking A Top-Down Approach 7th Edition中的每章末尾的编程作业,如需要详细了解请访问<https://github.com/moranzcw/Computer-Networking-A-Top-Down-Approach-NOTES...

2020-04-25 19:31:12 1109

原创 Wireshark Lab 1 : Introduction

Wireshark Lab 1本实验内容来自 Computer Networking: A Top-Down Approach, 7th ed中的wireshark实验,如需要深入了解配套wireshark实验的所有内容请访问http://gaia.cs.umass.edu/kurose_ross/1. 获取并运行wireshark软件wireshark官网获取wireshark软件。...

2020-04-22 22:33:47 1203

转载 关于字符编码,你所需要知道的

本文转载自:https://www.cnblogs.com/KevinYang/archive/2010/06/18/1760597.html  字符编码的问题看似很小,经常被技术人员忽视,但是很容易导致一些莫名其妙的问题。这里总结了一下字符编码的一些普及性的知识,希望对大家有所帮助。还是得从ASCII码说起 说到字符编码,不得不说ASCII码的简史。计...

2020-04-21 16:54:44 234

原创 C51单片机之点亮LED灯

文章目录C51单片机之点亮LED灯1. 了解普通发光二极管的参数,掌握限流电阻的计算方法。2. 理解单片机最小系统,单片机外围电路,Flash,RAM 和 SFR 这些概念。3. 了解 Keil 的基本用法和单片机编程流程,能够独立完成编程下载等基本操作。3.1 编写单片机程序所需用到的软件是`Keil`,以下则是阐述新建单片机程序的步骤。3.2 程序下载过程如下,注意不同厂商的单片机对应的下载软...

2020-04-05 12:42:44 6405

原创 缓冲IO之使用注意事项

本文来自个人博客:https://dunkwan.cn文章目录Flushing a Stream(冲洗流)Obtainning the Associated File Descriptor(获取关联的文件描述符)Flushing a Stream(冲洗流)标准I/O库提供了一个接口,可以将用户缓冲区写入内核,并且保证写到流中的所有数据都通过write调用被刷新。fflush函数提供了这个...

2020-03-16 15:52:21 122

原创 网络IPC

本文来自个人博客:https://dunkwan.cn文章目录字节序`socket`函数`connect`函数`bind`函数`listen`函数发送数据函数接收数据函数字节序​ 同一台主机上进程间通信是不需要考虑字节序问题的,但是在网络上的不同主机上进程进行通信时,则要考虑字节序问题。​ 字节序是一个处理器架构特性,用于指示像整数这样的大数据类型内部的字节如何排序。当处理器架构支持...

2020-03-11 00:59:07 224

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除