自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

xyzhang的博客

面向CSDN编程

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

转载 UML类图中方法(操作)的表示格式

网上很少看到针对于类图中方法的格式进行探讨的文章,而类图本身也不是那么的死板,但是一些既定的规则、通用性的格式,使用起来还是会更加便于理解与分享。下面讲一下类图中方法的规范表示方式。同时在返回类型后面可以加上默认值(默认值添加规则同c#)可视性的符号只有四种(下图引用自IBM公司)最后面说到的特性,是对于操作内容进行的描述。以下几个实例均是正确的。

2023-04-15 19:51:33 352

转载 大数据 | Spark on K8S 在有赞的实践

随着近几年业务快速发展与迭代,大数据的成本也水涨船高,如何优化成本,建设低成本高效率的底层服务成为了有赞数据基础平台2020年的主旋律。本文主要介绍了随着云原生时代的到来,经历7年发展的有赞离线计算平台如何拥抱云原生,通过容器化改造、弹性伸缩、大数据组件的错峰混部,做到业务成倍增长的情况下成本负增长。首先介绍一下目前有赞离线计算的一些现状。万兆网卡的新集群,机器带宽不再是瓶颈。之前我们完成了一次跨云运营商(UCloud -> Qcloud)的集群迁移。

2023-01-25 15:42:32 1072

原创 大数据 | 《Riffle:Optimized Shuffle Service for Large-Scale》论文阅读

宽依赖:子task会接受来自多个父task的输出窄依赖:只依赖于一个父taskshuffle是资源密集型操作,从map任务传输到reduce任务的每个数据块都是需要经过数据序列化、磁盘和网络IO以及数据反序列化。spark框架中的task由driver分配,driver将一个job转换成DAG有向无环图,被shuffle分割成几个stage;

2023-01-24 15:44:54 1469

原创 大数据 | Spark安装及性能测试

Spark On Yarn集群模式下的安装和基本测试

2022-12-08 00:42:33 1699 1

原创 大数据 | Hadoop性能测试

测试写性能:向HDFS写5个128M的文件,其中5根据集群的规模来测试,集群同时能跑多少个map task执行日志中显示执行时间:2. 读数据测试读性能:执行日志:3. 清除测试数据4. 测试MR性能通过随机数排序来测试性能,测试流程主要分为以下几个步骤参考资料:Hadoop-之性能测试(基准测试)

2022-12-03 20:16:03 925

原创 大数据 | Hadoop、Hive、Spark的关系

通俗易懂讲解大数据中Hadoop、Hive、Spark的关系

2022-11-30 12:44:13 1510 2

原创 Go | 限流器实现

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2022-04-24 22:35:36 1880

原创 Git | 工程开发HandBook

一、rebase1.1 拉取master合并到自己分支工作中经常会出现 master 分支有新的 commit,与自己的分支存在冲突,若此时将master分支merge到自己的分支,会在git log中留下一个从master到自己分支的合并(不符合规范且分支会非常乱)那么就需要采用rebase操作将master最新的变更同步到自己的分支;具体操作:checkout master 拉到最新代码checkout 自己分支,将master rebase到本地git rebase master 将最新

2022-04-24 22:00:00 373

转载 Java | Java 8 stream的详细用法

一、概述Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用Stream API 对集合数据进行操作,就类似于使用 SQL 执行的数据库查询。也可以使用 Stream API 来并行执行操作。简而言之,Stream API 提供了一种高效且易于使用的处理数据的方式。特点:不是数据结构,不会保存数据。不会修改原来的数据源,它会将操作后的数据保存到另外一个对象中。(保留意见:毕竟peek方法可以修改流中元素)惰性

2022-04-06 20:31:26 354

转载 IaaS,PaaS,SaaS的区别

来自网易面试反问环节,面试官说他们是做PaaS,遂想起总结下这三者的区别:http://www.ruanyifeng.com/blog/2017/07/iaas-paas-saas.htmlIaaS:基础设施服务,Infrastructure-as-a-servicePaaS:平台服务,Platform-as-a-serviceSaaS:软件服务,Software-as-a-service对应软件开发,则是下面这张图。SaaS 是软件的开发、管理、部署都交给第三方,不需要关心技术问题,可.

2022-03-29 21:44:55 162

原创 Linux | Shell脚本从入门到实战

之前在工作中经常有涉及到shell脚本的使用,也有在捞日志等场景下使用,但一直感觉知识不太系统化,遂在B站上找来尚硅谷的课程恶补一下~;以下内容均来自尚硅谷视频课程笔记一、Shell脚本入门1. 脚本格式指定解析器:脚本以 #!/bin/bash 开头2. 脚本内容创建shell脚本文件[root@VM-0-3-centos LearnSource]# touch helloworld.sh[root@VM-0-3-centos LearnSource]# vi helloworld.s.

2022-03-28 20:32:09 2409

原创 Go | Go和Java区别

Go和Java作为在世界上影响巨大的两门开发语言,在语言特点和应用领域上都存在共通和相似之处。Go从2009年开源至今,在docker、K8s、企业后台等领域都取得了非凡的影响。本文以Golang的主要feature为研究对象,共分为6个章节,在学习这些特性的同时,给出其在Java中对应的实现方式,并会详细分析其中的原理和差异。

2022-03-11 22:33:33 1277

原创 Network | Socket连接建立步骤

服务端创建一个 IPv4 的 TCP 传输的 socket 的步骤:调用系统函数 socket (),创建并绑定一个 IP 地址和端口。调用系统函数 listen (),进行地址监听。此时可以通过 netstate 命令查看对应端口是否被监听。调用系统函数 accept (),从内核获取客户端的连接,如果没有客户端进行连接,则会阻塞等待。最后调用完成需要close() 连接客户端发起连接的步骤:客户端创建 socket 连接调用系统函数 connect () 发起连接请求,在该函数中指.

2022-03-09 11:05:43 4044

原创 Network | 跨域及其解决方案

一、跨域问题1. 概念在 HTML 中,<a>, <form>, <img>, <script>, <iframe>, <link> 等标签以及 Ajax 都可以指向一个资源地址当前发起请求的域和该请求指向资源所在的域不同源(协议+域名+端口号均相同,才算同域)2. 跨域的安全问题:CSRF攻击2.1 概念跨站请求伪造(Cross-site request forgery,CSRF),是攻击者通过一些技术手段欺骗用户的浏览器

2022-03-06 10:13:23 337

转载 [OS]-bit与byte的区别

在工作中遇到一些概念模糊的地方, 需要记住了bit意为“位”或“比特”,是计算机运算的基础;byte意为“字节”,是计算机文件大小的基本计算单位;说到usb2.0标准接口传输速率。许多人都将“480mbps”误解为480兆/秒。其实,这是错误的,事实上“480mbps”应为“480兆比特/秒”或“480兆位/秒”,它等于“60兆字节/秒”,大家看到差距了吧。这要从bit和byte说起:bit和byte同译为"比特",都是数据量度单位,bit=“比特”或“位”。1byte=8bits,两者换算是1:

2022-01-30 21:41:50 160

转载 [Java]-理解String拼接,+运算符重载的实际效果

引申:一个常见的String的面试题public static void main(String[] args) { // TODO Auto-generated method stub String s1 = "Hello"; String s2 = "World"; String s3 = "Hello"+"World"; String s4 = s1+s2; String s5 = "HelloWorld

2022-01-02 16:54:20 149

原创 [Network]-RESTful API设计规范

REST与技术无关,它代表的是一种软件架构风格,REST它是 Representational State Transfer的简称,中文的含义是: “表征状态转移” 或 “表现层状态转化”。它是基于HTTP、URI、XML、JSON等标准和协议,支持轻量级、跨平台、跨语言的架构设计。一. 理解为什么要使用RESTful API设计规范?在很久以前,工作时间长的同学肯定经历过使用velocity语法来编写html模板代码,也就是说我们的前端页面放在服务器端那边进行编译的,更准确的可以理解为 “前后端没.

2021-12-26 20:38:20 131

原创 [Bug]-Gorm查询数据正常,但返回结果为空的分析

问题描述go使用gorm连接数据库进行数据查询的时候,发现查询到的数据量正确,插入删除均正常但select到的数据读取到的值始终为空;// 数据struct如下type Profile struct { id string `gorm:"column:id"` name string `gorm:"column:name"` surname string `gorm:"column:surname"` gender byte `gorm:"column:gender"`

2021-12-15 20:02:04 3185 1

原创 HashMap源码分析及线程安全性

存储结构-字段// 哈希桶 用于存放链表// 第一次使用时初始化 而非在定义时初始化 长度为2^ntransient Node<K,V>[] table;// 保存缓存的entrySettransient Set<Map.Entry<K,V>> entrySet;// 当前map拥有的键值对数量transient int size;// 记录HashMap内部结构被更改的次数(如:重新Hash)用于并发异常时使用transient int modC

2021-11-09 16:36:57 277

转载 【人生经验】雷军的十年程序人生路(三)

转载自雷军博客,原文链接:失败的大学创业经历不少人想白手起家、空手套狼,在今天的商业社会里这是非常不现实的一件事情。我特别想问:你为什么不能先做能力及资源上的积累后再创业呢?如果你觉得机会难得,为什么不去试图说服更多人给资源后再创业呢?我参与创办过了金山软件、卓越网,作为天使投资人投资了不少成功的创业项目,看起来很拉风。但其实上我也有过非常惨痛的失败。创业不是件容易的事情,一定要想清楚,做好充分的准备后再出发。有的人为了养家糊口被迫去创业,有的人为了面子和虚荣盲目去创业,这样的创业注定会很坎坷!《我

2021-10-09 16:22:57 763

转载 【人生经验】雷军的十年程序人生路(二)

转载自雷军博客,原文链接:我的第一桶金《我十年的程序员生涯》系列之二:我写BITLOK的这七年1989年8月,大二暑假,我和王全国合作写了我的第一个正式作品BITLOK 加密软件,主要用来保护软件的知识产权,防止盗版的。当时,他毕业留校了,在校办的一家电脑销售公司工作,我们就是利用晚上和周末时间在他们公司的电脑上完成的产品研发。1991年我写了BITLOK第二个版本,1996年我在休假的时候写了BITLOK 3.0。后来BITLOK市场萎缩了,我就没有再开发了。在当时,BITLOK小有名气,不少知名的

2021-10-09 16:20:53 726

转载 【人生经验】雷军的十年程序人生路(一)

转载自雷军的博客,想想雷军在1996年那个互联网并不普及的年代就对程序员人生规划/工作经验就有如此深刻的认知,真不愧是程序员的最高境界。原文链接:http://blog.sina.com.cn/s/blog_4b0e23c90100b2qf.html*最近,和UCWEB同事讨论,怎么才能把我们的UCWEB做到极致。我说,“手机上的平台非常多,如果想做好,需要足够多、足够优秀的程序员。**优秀的程序员如何定义呢?首先必须热爱写程序,其次必须是一个完美主义者。*只有这样的人,才能把事情做得极致。”说着说着

2021-10-09 15:29:57 333

转载 [Go]-Go为什么快(Golang调度器GPM模型)

转自腾讯技术工程公众号 原文链接

2021-09-24 21:20:33 407

转载 [DB]-MySQL中datatime和timestamp的区别

原文链接:https://blog.csdn.net/u014696474/article/details/70568733mysql中有三种日期类型:date(年-月-日)create table test(hiredate date);datetime(日期时间类型)create table test(hiredate datetime);timestamp(邮戳类型,保存年-月-日 时-分-秒)create table test(hiredate timestamp);datetime

2021-07-27 10:04:56 199

原创 [DB]-Redis的事务和锁机制

1. Redis事务、锁机制1.1 Redis事务的定义 与MySql不同 ,Redis事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。Redis事务的主要作用就是串联多个命令防止别的命令插队。1.2 Multi、Exec、discard从输入Multi命令开始,输入的命令都会依次进入命令队列中,但不会执行,直到输入Exec后,Redis会将之前的命令队列中的命令依次执行。组队的过程中可以通过discard来放弃组

2021-07-19 15:28:53 245 1

原创 [DB]-mysql varchar字段大小写不敏感

最近在公司开发的一个字段名称一致性校验需求,测试同学反馈了一个奇怪的bug,记录下解决方案一、现象在数据库中执行查询语句SELECT * FROM a WHERE name = 'aa'SELECT * FROM a WHERE name = 'AA'SELECT * FROM a WHERE name = 'Aa'SELECT * FROM a WHERE name = 'aA'查询得到的结果都是 name = 'aa' 的字段,由于项目采用golang编写,数据库查询使用gorm,因此初

2021-07-18 15:41:31 313

原创 [Linux]-日志分析方法

Linux查看日志的命令有很多,本文介绍常见的几种方法tail查询尾部数据,用法:命令格式:tail[必要参数][选择参数][文件]-f 循环读取-q 不显示处理信息-v 显示详细的处理信息-c<数目> 显示的字节数-n<行数> 显示行数实例:# 查询日志尾部最后10行的日志tail -n 10 test.log# 查询10行后的所有日志tail -n +10 test.log# 循环实时查看最后10行记录(常用!)tail -fn 10 te.

2021-06-29 20:40:53 682

原创 [Linux]-堡垒机/跳板机作用、登陆异常处理

堡垒机=跳板机+日志监控,也叫做运维安全审计系统,它的核心功能是 4A:身份验证 Authentication账号管理 Account授权控制 Authorization安全审计 Audit堡垒机是用来控制哪些人可以登录哪些资产(事先防范和事中控制),以及录像记录登录资产后做了什么事情(事后溯源)登陆服务器的时候必须先登陆堡垒机,然后通过你自己的个人账号跳转到目标服务器,操作服务器的过程中执行的操作会被记录下来,有些堡垒机会检查输入的命令是否合规安全,若存在不符合个人权限的操作则会被直接拒绝

2021-06-28 17:36:35 1205

原创 [DB]-Redis穿透、雪崩、击穿

缓存一致性读请求,先读缓存,再读数据库写请求,先更新数据库,再写缓存每次更新数据后,需要清楚缓存缓存雪崩原理缓存中大量数据过期,且查询数据量巨大,请求都直接访问数据库,引起数据库压力过大。解决方案均匀设置过期时间:批量向Redis存数据时,把每个Key的失效时间都添加随机值(较大的固定值+较小的随机值),避免同时大面积失效。setRedis(Key,value,time + Math.random() * 10000);Redis集群部署:将热点数据均匀分布在不同的Redis

2021-06-10 17:22:58 157 1

原创 [DB]-Redis基础数据类型及数据结构

1、数据类型Redis中数据类型-《Redis In Action》数据类型可以存储的值操作STRING字符串、整数或浮点数对整个字符串或字符串其中一部分执行操作,对整数和浮点数执行自增自减LIST列表从两端压入弹出元素;对单个或多个元素进行修剪;只保留一个范围内的元素SET无序集合添加获取移出单个元素;检查元素是否存在;计算交并差集;从集合中随机获取元素HASH键值对检查键是否存在ZSET有序集合根据分值范围或成员获取元素;计算键的排名

2021-06-10 15:21:39 216

原创 布隆过滤器简介与使用

常见的一台MySql服务器的并发量为600左右redis数据类型:(9种) string、hash、list、set、zset、bitmap、hyperloglogs、geo、streams爬虫判断url是否爬取过?url地址过滤方法布隆过滤器BloomFilter本质上布隆过滤器是一种数据结构,比较巧妙的概率型数据结构(probabilistic data structure),特点是高效地插入和查询,可以用来告诉你 “某样东西一定不存在或者可能存在”。如果布隆过滤器判断存在的,可能存.

2021-04-27 22:26:21 158

转载 [Linux]-服务器CPU占用过高处理方案

一、使用top命令找出CPU占比最高的进程top命令定位异常进程如果确定是Java进程则进行下一步详细定位举个栗子:可以看出CPU占比最高的为Java进程top - 09:11:37 up 21 min, 3 users, load average: 0.54, 0.25, 0.16Tasks: 94 total, 1 running, 93 sleeping, 0 stopped, 0 zombie%Cpu(s): 3.0 us, 6.4 sy, 0.0

2021-04-24 23:24:58 2319 1

转载 [Java]-Java中double转BigDecimal的注意事项

【转载】原文链接:https://blog.csdn.net/lkforce/article/details/81564927先上结论:不要直接用double变量作为构造BigDecimal的参数。线上有这么一段Java代码逻辑:1,接口传来一个JSON串,里面有个数字:57.3。2,解析JSON并把这个数字保存在一个float变量。3,把这个float变量赋值给一个 BigDecimal对象,用的是BigDecimal的double参数的构造:new BigDecimal(double val

2021-04-22 11:39:30 398

原创 HTTPS及加密算法总结

加密算法整体可以分为:可逆加密、不可逆加密可逆加密又可以分为对称加密和非对称加密一、可逆加密1. 对称加密算法对称加密算法,又称为共享密钥加密算法。在数据加密和解密时使用的是同一个密钥,这就导致密钥管理困难的问题。常见的对称加密算法有DES, 3DES, AES128, AES192, AES256。其中AES后面的数字代表的是密钥长度。对称加密算法的安全性相对较低,比较适合内网环境中加解密。1.1 DESDES加密算法是一种分组密码,以64位为分组对数据加密,它的密钥长度是56位,加解密用.

2021-04-19 22:28:29 6047

原创 [Java学习笔记]-Java自动装箱和拆箱

之前一直没有特别关注这个问题,以为只有面试时才会用到,直到最近遇到一个大坑,遂总结相关知识,今后面试也好用到什么是自动装箱拆箱// 装箱:自动根据数值创建对应的Integer对象Integer i = 10;// 拆箱:将包装器类型转换为基本数据类型Integer n = 10;int m = i;自动装箱拆箱的实现根据反编译结果可知:装箱自动调用 Integer 的 valueOf(int) 方法拆箱自动调用 Integer 的 intValue 方法其他的包装器类型如Do.

2021-03-27 17:31:06 99

原创 [Git].gitignore忽略文件失效

官方参考:Git官方文档-记录每次更新到仓库总结.gitignore文件只会在忽略的文件还未track(即未进行add commit等操作时有效)但有时我们会忘记添加.gitignore文件,不小心把一个很大的日志文件或一堆 .a 这样的编译生成文件添加到暂存区此时我们使用--cached选项git rm --cached READMEgit rm 命令后可以列出文件或目录的名字,也可以使用glob模式git rm log/\*.log注意到星号 * 之前的反斜杠 \, 因为 Git 有

2021-03-21 10:53:14 140

原创 [bug]-VSCode终端中命令运行失败

现象:在VSCode终端中运行命令失败,但在cmd中运行正常webpack : 无法将“webpack”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。解决:以上问题由VSCode权限不足导致。右键vscode.exe进入属性菜单,将其以管理员身份运行。如果还是出现无法加载文件的情况,检查使用的默认shell如果为powershell则将其修改为cmd即可运行...

2021-02-23 15:47:35 7118 2

原创 MySQL8安装及配置教程

1. 下载MySQL安装包推荐下载zip文件进行自行配置安装,如果用安装器对日后的卸载很不友好下载地址:https://dev.mysql.com/downloads/mysql/下载完成后解压到指定文件夹中2. 配置环境将解压后的bin文件夹路径添加到系统环境变量->Path中在解压后的MySQL根文件夹下新建my.ini文件,写入基本配置信息[mysql] # 设置mysql客户端默认字符编码形式 default-character-set=utf8mb4 [mysq

2021-01-31 00:28:01 1757 4

原创 [Bug] SpringBoot整合JUnit运行测试报错

十二月 17, 2020 9:16:43 下午 org.junit.vintage.engine.descriptor.RunnerTestDescriptor warnAboutUnfilterableRunner警告: Runner org.junit.internal.runners.ErrorReportingRunner (used on class com.xyzhang.tacocloud.controller.HomeControllerTests) does not support fi

2020-12-17 21:31:32 1116 2

原创 [JavaWeb] Servlet详解

Servlet本质Servlet接口定义一套处理网络请求的规范,所有实现Servlet的类都需要实现它的五个方法,其中最主要的是两个生命周期方法init() destory(),以及一个处理请求的service(),也就是说所有实现Servlet接口的类都需要有以下三个部分:初始化时所作的工作销毁时所作的工作接收到请求做出的响应// jdk中的Servlet接口public interface Servlet { void init(ServletConfig var1) throw

2020-11-25 22:52:34 209

空空如也

空空如也

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

TA关注的人

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