自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

转载 软件工程师采用新技术的正确方式

大家好,我是飘渺。前几天跟一个团队技术负责人聊天,他说他们有个小的项目都是直接使用的SpringCloud。我问他为什么,你这不是为了技术而设计吗?小项目用个单体架构不是很方便吗?他说我就是想用一下SpringCloud,熟悉一下。我问他,那你在使用SpringCloud过程中有没有遇到一些问题,比如数据库怎么拆分?事务问题如何解决呢?怎么做的CICD?他又说我们不拆,就一个库。只不过在应用层规定了服务与服务之间只能通过接口调用,至于分布式事务嘛,暂时还没考虑。。。。。。。都说兴趣是最好的老师

2021-07-21 17:10:59 192

转载 使用 perf 解决 JDK8 小版本升级后性能下降的问题

编者按:在升级 JDK8U 的小版本后(从 8u74 升级到 8u202),遇到性能剧烈下降的问题(性能下降 13 倍)。该应用是一个非常简单的 Web 应用,且应用在 JDK 升级前后并无任何发布修复。通常来说 JDK 小版本升级都是问题修改,不影响功能和性能使用,而应用性能剧烈下降一定是 JDK 的内部 bug。对于这样明确由 JDK 引起的性能问题,该如何解决?最常见的方法是通过工具分析 JVM 执行过程,检查函数执行的情况是否发生变化,如果找到变化,则可以深入分析哪些因素引起了变化,并进一步得到根因

2021-07-12 17:04:51 167

转载 每日学习总结:运算符、分支结构、初识循环结构

1 运算符1.1 概述运算符 用于连接 表达式 的 操作数,并对操作数执行运算。在java语言中,运算符可分为5种类型:算术运算符赋值运算符关系运算符逻辑运算符位运算符根据操作数的不同,运算符又分为单目运算符、双目运算符和三目运算符。单目运算符只有一个操作数,双目运算符有两个操作数,三目运算符则有三个操作数。位运算符涉及到二进制位的运算,在java 程序中运用不是很多。1.2 运算符速查表e53cc7e8558df38df4db643889f71979.png1.3 算数运算符(

2021-07-05 14:01:38 126

转载 性能分析之CPU分析-从CPU调用高到具体代码行(C/C++)

今天在培训的过程中,也提到了分析要具体到代码的事情,如果思路方向是正确的,对java应用和C/C++应用来说,也是几个命令就可以跳到代码行了。前提是要能看得懂堆栈信息。所以一直以来我在讲课的过程中都有画过这样的一个分析思路的图。在性能分析中,如果是C/C++的应用的话,也同样是有些工具可以做得到的。今天我们来看一个简单的C代码示例,看下如何做到这几步。我在网上看到有一段示例代码,也省得自己写了。就直接拿来编译用了。下面来看一下操作。[root@7dgroup Sample6]# gcc -o test

2021-06-18 15:44:56 110

转载 信号量Semaphore一篇文章叫你明白

详细说说哪三大方法?init()用于设置计数器的初始值。down()计数器-1。若此时计数器<0,则当前线程被 阻塞。up()计数器+1。若此时计数器≤0,则唤醒 等待队列 中的一个线程,并将其从【等待队列】移除。有同学可能会认为这里的判断条件应该≥0,估计你是理解成生产者-消费者模式中的生产者了。可以反过来想,>0 意味着没有阻塞的线程,所以只有 ≤0 时才需要唤醒一个等待的线程。down()、up()应配对使用,并按序使用:先调用down(),获取锁执行处理完后,调用up(

2021-05-20 15:06:57 78

转载 2021-04-13

概述日志从最初面向人类演变到现在的面向机器发生了巨大的变化。最初的日志主要的消费者是软件工程师,他们通过读取日志来排查问题,如今,大量机器日夜处理日志数据以生成可读性的报告以此来帮助人类做出决策。在这个转变的过程中,日志采集Agent在其中扮演着重要的角色。作为一个日志采集的Agent简单来看其实就是一个将数据从源端投递到目的端的程序,通常目的端是一个具备数据订阅功能的集中存储,这么做的目的其实是为了将日志分析和日志存储解耦,同一份日志可能会有不同的消费者感兴趣,获取到日志后所处理的方式也会有所不同,通

2021-04-13 13:49:05 72

转载 PHP 8.1 新特性

PHP 8.1目前正在积极开发中,可能会在2021年11月末左右发布。我们已经了解了一些函数,更改和不赞成使用的内容,因此让我们逐一介绍它们。New features与每个版本一样,PHP 8.1添加了一些不错的新函数。请记住,该列表将在一年中增长。我还将列出尚未实现的函数,但是很有可能最终使用该语言。我将确保始终标记这些函数。用字符串键解包数组 RFCPHP 7.4 中已经允许数组拆包,但它仅适用于数字键。之前不支持字符串键的原因是因为关于如何合并数组重复项没有任何共识。 RFC通过遵循 arra

2021-04-13 13:46:36 288

转载 2021-04-13

openGauss 2.0.0 版本中(2021.03.31发布)新增了极简版软件包,相对企业版安装流程更简单快捷,更加适合高校学生或者个人功能测试的场景,该软件包中不含OM工具,采用脚本就可以实现一键式安装部署。本文通过使用极简版进行安装部署,为大家做一个示范。软件包:登录openGauss官网,选择2.0.0版本对应平台极简版安装包。包含上一版本(1.1.0版本)要求的软件依赖包,新增openEuler x86环境下需要的libnsl软件包。硬件环境: 个人开发者最低配置2核4G, 推荐配置4核8G

2021-04-13 13:44:27 415

转载 Vue起步(模板语法、循环语句)

Vue.js起步每一个Vue应用都需要通过实例化Vue来实现。 实例: <div id="demo1"> <h1>site: {{site}}</h1> <h1>url: {{url}}</h1> <h1>{{details()}}</h1></div> <script> var vm = new Vue({ el: '#demo1',

2021-04-12 14:19:53 89

转载 LiteOS内核源码分析:任务LOS_Schedule

LiteOS内核调度源代码包括调度模块的私有头文件kernel\base\include\los_sched_pri.h、C源代码文件kernel\base\sched\sched_sq\los_sched.c,这个对应单链表就绪队列。还有个`调度源代码文件kernel\base\sched\sched_mq\los_sched.c,对应多链表就绪队列。本文主要剖析对应单链表就绪队列的调度文件代码,使用多链表就绪队列的调度代码类似。调度模块汇编实现代码调度模块的汇编函数有OsStartToRun、Os

2021-04-12 14:13:04 259

转载 码云 Gitee:高并发大存储下的架构演进之路

码云 Gitee 自2013年推出以来,每年的数据量都是倍增的,截止到2021年3月份,Gitee 上已经有了600万+的开发者,超1500万的仓库,成为了国内首屈一指的研发协作平台。在数据日益增长的过程中,Gitee 的架构也是经过了数个迭代,才能支撑起目前的数据量级。我曾在不少的大会上分享过 Gitee 的架构,也和很多有类似场景的同学一起讨论过,偶然被问起有没有专门的文章来介绍 Gitee 架构的,所以难得假期有时间,将此主题整理成文,以供大家参阅。作为国内发展最快的代码托管平台,Gitee 每天数

2021-04-12 14:09:25 212

转载 分库分表?如何做到永不迁移数据和避免热点?

一、前言中大型项目中,一旦遇到数据量比较大,小伙伴应该都知道就应该对数据进行拆分了。有垂直和水平两种。垂直拆分比较简单,也就是本来一个数据库,数据量大之后,从业务角度进行拆分多个库。如下图,独立的拆分出订单库和用户库。水平拆分的概念,是同一个业务数据量大之后,进行水平拆分。上图中订单数据达到了4000万,我们也知道mysql单表存储量推荐是百万级,如果不进行处理,mysql单表数据太大,会导致性能变慢。使用方案可以参考数据进行水平拆分。把4000万数据拆分4张表或者更多。当然也可以分库,再分表;把压

2021-04-12 14:08:10 48

转载 要改掉的 10 种 TypeScript 坏习惯

在过去的几年中,TypeScript 和 JavaScript 一直在稳步发展,而我们在过去的几十年中养成的一些编程习惯也变得过时了。其中有一些习惯可能从来就没有什么意义可言。这篇文章就来谈一谈我们大家都应该改掉的 10 个习惯。接下来我们就来一个个看示例吧!请注意,每个小节中“应该怎么做”这部分只纠正了前文提到的问题,实际情况中可能还要其他需要注意的代码风味。不使用 strict 模式具体是什么意思在没有启用 strict 模式的情况下使用 tsconfig.json。{“compiler

2021-04-09 14:00:06 47

转载 浅谈Netty和Python中的事件驱动

Vue.js起步每一个Vue应用都需要通过实例化Vue来实现。 实例: <div id="demo1"> <h1>site: {{site}}</h1> <h1>url: {{url}}</h1> <h1>{{details()}}</h1></div> <script> var vm = new Vue({ el: '#demo1',

2021-04-07 15:47:49 69

转载 鸿蒙内核源码分析(fork篇) | fork是如何做到调用一次,返回两次的 ? | 百篇博客分析HarmonyOS源码 | v45.03

笔者第一次看到fork时,说是一次调用,两次返回,当时就懵圈了,多新鲜,真的很难理解.因为这足以颠覆了以往对函数的认知, 函数调用还能这么玩,父进程调用一次,父子进程各返回一次.而且只能通过返回值来判断是哪个进程的返回.所以一直有几个问题缠绕在脑海中.fork是什么? 外部如何正确使用它.为什么要用fork这种设计? fork的本质和好处是什么?怎么做到的? 调用fork()使得父子进程各返回一次,一个函数不是只能返回一次吗,怎么做到返回两次的,其中到底发生了什么?为什么pid == 0 代表了是子

2021-04-07 14:33:09 160

转载 Kotlin Vocabulary | 解构声明详解

有时候您会想要将一个包含了多个字段的对象分解,以初始化几个单独的变量。为了实现这点,您可以使用 Kotlin 的解构声明功能。继续阅读本文以了解解构的使用、Kotlin 默认提供的类型、如何在您自己的类和您无法控制但认为将会从解构中受益的类中实现解构,以及这一切的内部实现。用法解构声明允许我们使用以下方式定义本地值或变量:/* Copyright 2020 Google LLC.SPDX-License-Identifier: Apache-2.0 */fun play() {val (name

2021-04-06 16:09:41 111

转载 手把手教你写一个Vue组件发布到npm且可外链引入使用

前言我们为什么要写个组件上传到npm镜像上呢,我们肯定遇到过这样一个场景,项目中有很多地方与某个功能相似,你想到的肯定是把该功能封装成Component组件,后续方便我们调用。但是过了一段时间,你的Leader让你去开发另一个项目,结果你在哪个项目中又看见了类似的功能,你这时会怎么做? 你也可以使用Ctrl + c + v大法,拿过来上一个项目封装好的代码,但是如果需求有些变动,你得维护两套项目的代码,甚至以后更多的项目…,这时你就可以封装一个功能上传到你们公司内网的npm上(或者自己的账号上),这样每次

2021-04-06 14:33:19 148

转载 2021-04-02

前言在本文中,总结了开发过程中最为常见的几种 MySQL 抛出的异常以及如何解决,包括高版本驱动的问题、时区配置问题、SSL 连接问题等,是一篇经验总结贴,于我个人而言,这一篇足以解决目前项目中所有遇到的 MySQL 问题。同时,也希望本文能对 MySQL 数据库初学者有一定的引导入门作用。报错如下:Could not open JDBC Connection for transaction; nested exception is java.sql.SQLException: Connections

2021-04-02 14:27:39 115

转载 MySQL 数据库图形化管理界面应用种草之 Navicat Premium 如何使用

前言一、工具/原料二、安装和建立连接2.1、连接本地数据库2.2、连接远程数据库三、Navicat Premium 的“增删改查”功能操作3.1、数据库操作(基本)3.1.1、新建数据库3.1.2、删除数据库3.1.3、修改数据库3.1.4、查询数据库3.2、数据库表格操作3.2.1、新建数据库表3.2.2、删除数据库表3.2.3、修改数据表3.2.4、查询数据库表四、导入数据库(创建数据库)4.1、运行 SQL 文件4.2、数据传输五、标记连接颜色六、筛选表数据七

2021-04-02 14:24:45 614

转载 2021-03-31

Spark Thrift Server 介绍Spark Thrift Server 是Apache Spark社区基于HiveServer2实现的一个Thrift服务,旨在无缝兼容HiveServer2。它通过JDBC接口将Spark SQL的能力以纯SQL的方式提供给终端用户。这种“开箱即用”的模式可以最大化地降低用户使用Spark的障碍和成本。我们先从传统的 Spark 作业提交方式入手,谈谈 Spark Thrift Server 具备的优势。1.1 传统作业方式在没有 Spark Thri.

2021-03-31 14:45:07 116

转载 Prometheus时序数据库-数据的查询

Prometheus时序数据库-数据的查询前言在之前的博客里,笔者详细阐述了Prometheus数据的插入过程。但我们最常见的打交道的是数据的查询。Prometheus提供了强大的Promql来满足我们千变万化的查询需求。在这篇文章里面,笔者就以一个简单的Promql为例,讲述下Prometheus查询的过程。Promql一个Promql表达式可以计算为下面四种类型:瞬时向量(Instant Vector) - 一组同样时间戳的时间序列(取自不同的时间序列,例如不同机器同一时间的CPU idle)

2021-03-31 14:43:56 1927

转载 盘点Excel中的那些有趣的“bug”

xcel 1.0早在1985年正式进入市场,距今已经有36年了,虽然在推出时市面上已经有了类似软件Lotus 1-2-3,但Excel仍然凭借着其对竞品在功能上的全面超越,再加之和Windows环境的直接捆绑,直接将Excel推向了电子表格办公软件的王者的地位。但在今天这篇文章里,我们不是为了讲Excel中那些大家已经耳熟能详的功能,让我们一起来看看,即便强大如Excel也会有的一些令人费解的计算结果吧!1900年2月29日小学生都知道在我们现在使用的公历(格里高利历)中规定:年份是4的倍数,且不是1

2021-03-30 14:20:33 189

转载 [Flutter 渲染优化系列] Flutter 渲染性能问题分析

易老师写了很多篇关于 Flutter 渲染引擎的文章,讲的非常深入,我从中学到了很多,昨天很有幸的加到易老师微信,表达了一番崇敬之情,易老师人非常好,也非常谦逊。最后表达一点小小的心意,发了个红包,不管怎么说,学到了很多知识,知识是无价的,不过易老师并没有收,大家也可以到易老师到博客中看看其他文章,点赞、转发也是一种支持,后面我也会继续分享易老师的文章。正文我在Flutter vs Chromium 动画渲染的对比分析一文中对 Flutter 和 Web (Chromium) 的各种动画的理论性能优劣

2021-03-29 14:49:06 475

转载 ES数据库重建索引——Reindex(数据迁移)

应用背景:1、当你的数据量过大,而你的索引最初创建的分片数量不足,导致数据入库较慢的情况,此时需要扩大分片的数量,此时可以尝试使用Reindex。 2、当数据的mapping需要修改,但是大量的数据已经导入到索引中了,重新导入数据到新的索引太耗时;但是在ES中,一个字段的mapping在定义并且导入数据之后是不能再修改的, 所以这种情况下也可以考虑尝试使用Reindex。Reindex:ES提供了_reindex这个API。相对于我们重新导入数据肯定会快不少,实测速度大概是bulk导入数据的5-10倍

2021-03-26 16:45:10 873

转载 分享18个常用的ECMAScript 6代码片段

1.如何批量隐藏指定的元素?const hide = (…el) => […el].forEach((e) => (e.style.display = “none”));// 调用示例hide(document.querySelectorAll(“img”));2.如何检查元素是否具有指定的类?const hasClass = (el, className) => el.classList.contains(className);// 调用示例hasClass(documen

2021-03-25 15:24:49 54

转载 J. Cole 的 InnoDB 系列 - 3. InnoDB空间文件布局的基础

在数据存储模型中,通常有“空间”这个概念,在 MySQL 中被称为“表空间”,有时候在 InnoDB 中也被称为“文件空间”。一个空间可能由一个操作系统中的多个实际文件组成(例如 ibdata1, ibdata2 等等),实际上只是一个逻辑文件 - 多个文理文件被当做一个连接在一起的文件处理。InnoDB 中每个空间都被分配了一个 32 位的无符号整型空间 ID,这个 ID 被用来在不同的地方引用指向这个空间。InnoDB 总是有一个“系统空间”,他的空间 ID 是 0。系统空间用于保存 InnoDB 的

2021-03-24 17:19:05 36

转载 【HTML】905- 5个隐藏的 HTML 技巧

Web开发人员都在广泛的使用HTML。无论你使用什么框架或者选择哪个后端语言,框架在变,但是HTML始终如一。尽管被广泛使用,但还是有一些标签或者属性是大部分开发者不熟知的。虽然现在有很多的模版引擎供我们使用,但是我们还是需要尽可能的熟练掌握HTML内容,就像CSS一样。在我看来,最好尽可能使用HTML特性来实现我们的功能,而不是使用JavaScript实现相同的功能,尽管我承认编写HTML可能会是重复的和无聊的。尽管许多开发人员每天都在使用HTML,但他们并没有尝试改进自己的项目,也没有真正利用HTM

2021-03-24 15:38:15 48

转载 Volatile原理概述

前言今天和大家聊聊 volatile。一个面试频考点,感觉和 synchronized 不分伯仲。我们都知道,volatile 保证可见性与有序性,但是不保证原子性,保证原子性需要借助 synchronized 这样的锁机制。 所以我们主要围绕着这三个特点来了解 volatile。JMM在学习 volatile 之前,我们一定要了解 JMM。JMM Java 内存模型,它是一种抽象的概念并不真实存在,它描述的是一组规则或规范,通过这组规范定义了程序中各个变量的访问方式。JMM 关于同步的规定:

2021-03-23 15:28:43 41

转载 python编程 30秒高级私人定制 Response对象

读完需要9分钟速读仅需 3 分钟/ python 编程 30 秒高级私人定制 Response 对象,十倍扩展效率 /注:这篇文章很长,但我保证你看完后能进行高度自定义 Response 提神开发效率。在 fastapi 路径操作中,通常直接返回以下数据类型:dict,list,Pydantic 模型,数据库模型以及其他数据类型。fastapi 通过 jsonable_encoder 函数自动把返回数据转换为 JSON 格式,然后把 JSON 兼容的数据内容传送给 JSONResponse 对象

2021-03-19 15:40:42 201

转载 上万字详解Spark Core(好文建议收藏)

先来一个问题,也是面试中常问的:Spark为什么会流行?原因1:优秀的数据模型和丰富计算抽象Spark 产生之前,已经有MapReduce这类非常成熟的计算系统存在了,并提供了高层次的API(map/reduce),把计算运行在集群中并提供容错能力,从而实现分布式计算。虽然MapReduce提供了对数据访问和计算的抽象,但是对于数据的复用就是简单的将中间数据写到一个稳定的文件系统中(例如HDFS),所以会产生数据的复制备份,磁盘的I/O以及数据的序列化,所以在遇到需要在多个计算之间复用中间结果的操作

2021-03-18 17:49:13 58

转载 flink sql使用中的一个问题

浪尖 浪尖聊大数据最近有人问了浪尖一个flink共享datastream或者临时表会否重复计算的问题。flink sql使用中的一个问题对于 flink 的datastream ,比如上图,source 经过datastream计算之后的结果想共享给compute1和compute2计算,这样可以避免之前的逻辑重复计算,而且数据也只需拉去一次。而对于flink的sql呢?假如compute1和compute2之前是经过复杂计算的临时表,直接给下游sql计算使用会出现什么问题呢?先告诉大家答案 ,临

2021-03-15 17:11:27 259

转载 git常用命令

初始化仓库:git init#查看命令查看工作状态:git status#提交命令本地工作目录--------------->暂存区------------>本地仓库git add a.txt git commit -m “commit a.txt” (-a参数:直接提交,不提示)#删除命令暂存区删除:git rm --cached a.txt暂存区和工作目录一起删除:git rm -f a.txt#撤销操作git reset HEAD e #从本地仓库,拷贝到暂存区git

2021-03-12 16:16:26 46

转载 Percona XtraDB Cluster之流量控制

什么是流量控制?Percona XtraDB Cluster具有一种称为流控制的自调节机制。该机制有助于避免集群中最弱/最慢的成员明显落后于集群中其他成员的情况。当集群成员在写数据很慢(同时又继续从群集组通道接收写集)时,传入/接收队列的大小会增加。如果此队列超过设置的阈值(gcs.fc_limit),则该节点将发出FLOW_CONTROL消息,要求其他成员放慢或暂停处理。gcs.fc_limit此设置控制何时启用流量控制。 简而言之,如果wsrep_local_recv_queue在给定节点上超过

2021-03-11 16:27:28 115

转载 你有一份经典SQL语句大全,请注意查收!!!

SQL专栏SQL数据库基础知识汇总SQL数据库高级知识汇总一、基础部分1、创建数据库CREATE DATABASE dbname2、删除数据库DROP DATABASE dbname3、创建新表CREATE TABLE tabname(col1 type1 [not null] [primary key],col2 type2 [not null],…)根据已有的表创建新表:使用旧表创建新表create table tab_newasselectcol1,col2…f

2021-03-10 17:17:59 62

转载 Linux基础篇(12)小白如何学习Linux?权限管理之文件权限

前言小文章《其实你离成功只差3厘米》每个人的人生都渴望成功 而成功的经历往往都要经历一段熬的过程 分别只是熬的长短 更有甚者是有的人熬过去了 有的人在半路倒下了。当你千辛万苦完成了一个项目 一个人生的小目标的时候 反过头来 你会发现 其实一切不过是一场厚积薄发的过程而已。人这辈子 谁不得有那么几回被苦难教做人。那种被生活一巴掌连着一巴掌呼得满地找牙的感觉特别不好 但是你要记得:无论境况多糟糕 只要不认怂 生活就没办法撂倒你。再艰难的困境走下去就是柳暗花明关键是 你要挺住 不要停!权限管理-文

2021-03-09 17:02:31 86

空空如也

空空如也

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

TA关注的人

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