自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Angus的博客

有梦为马, 游历天涯

  • 博客(141)
  • 资源 (2)
  • 收藏
  • 关注

原创 Java并发编程实战

并发理论基础可见性、原子性和有序性问题:并发编程Bug的源头

2020-02-21 16:55:24 581

原创 Docker 命令汇总

Docker安装与启动安装yum -y install docker.io启动服务systemctl start docker设置自动运行systemctl enable docker获取并使用镜像执行镜像docker run ubuntu history如果镜像不存在,则从DockerHub中抓取,再执行后面的命令。镜像中执行docker run -i -t ubuntu-i:新容器中指定一个终端-t:允许对容器内的终端进行交互操作处理更新当前镜像 update退出镜

2021-12-08 17:24:34 1138

原创 Elasticsearch之_reindex

由于elasticsearch索引创建之后分片个数、mapping定义等都不支持修改,只能通过重建索引来完成,所以这里需要用到API_reindex第一步:创建一个新的索引new_index,mapping按自己的需求去定义即可,包含节点、副本、分词器、mapping字段定义PUT /new_index{ "settings": { "number_of_shards": 3, "number_of_replicas": 2, "analysis": {

2021-01-05 16:22:39 2120

原创 Elasticsearch之X-Pack套件-APM

什么是APM使用 Elastic APM 可扩展到应用程序指标。准确查看您的应用程序把时间都花在了哪里,然后您便可快速修复问题并对您推送的代码拥有十足信心。安装 & 启动历史版本下载:https://www.elastic.co/cn/downloads/past-releases/下载curl -L -O https://artifacts.elastic.co/downloads/apm-server/apm-server-7.1.0-linux-x86_64.tar.gz解压到指

2020-11-24 19:08:18 431

原创 ElasticSearch之监控工具-cerebro

下载 & 解压下载:wget https://github.com/lmenezes/cerebro/releases/download/v0.8.3/cerebro-0.8.3.zip解压:unzip cerebro-0.8.3.zip启动默认配置启动> ./cerebro-0.8.3/bin/cerebro设置ES集群地址启动vi cerebro-0.8.3/bin/cerebro/conf/application.confhosts = [ #{ # host

2020-11-23 14:57:44 3883 5

原创 Elasticsearch之数据安全

ES安全问题分析ES在默认安装后不提供任何形式的安全防护将elasticsearch.yml文件中的server.host配置成0.0.0.0, 公网用户可以任意访问数据安全性的基本要求身份认证:鉴定用户是否合法用户鉴权:指定用户才能访问,细粒度到索引传输加密日志审计免费方案设置Nginx反向代理安装免费的Security插件Search Guard - https://search-guard.comReadOnly REST - https://github.com/s

2020-11-20 15:15:23 1554 1

原创 Elasticsearch之Hot&Warm架构与ShardFiltering

什么是Hot & Warm ArchitectureHot Nodes用于数据的写入,Indexing对CPU和IO有较高要求,所以要满足:①较高CPU ② 存储新能好Warm Nodes用于保存只读的索引,通常需要大容量的磁盘

2020-11-19 15:08:44 174

原创 Elasticsearch之集群部署方式

Elasticsearch之集群部署方式节点节点类型配置参数默认值描述Master eligiblenode.mastertrue负责集群状态管理,节点的创建Data Nodenode.datatrue负责数据存储及处理客户端请求Ingest Nodenode.ingesttrue负责数据处理Coordination Only Node无设置上面三个参数全部为false当系统有大量的复杂查询及聚合查询时,增加Coordinating节点可

2020-11-19 14:41:22 423

原创 Linux SSH免密码登陆

需求:在一台服务器上完成所有项目的部署例如:有服务器A(192.168.0.1)、B(192.168.0.2),分别部署不同的应用,但是来回切换服务器较麻烦,就可以用ssh命令在A服务器上完成两台服务器的部署工作了步骤:在服务器A创建公钥-私钥对ssh-keygen -t rsa -f ~/.ssh/id_rsa -C "注释"注意: 密钥的文件名称必须是id_xxx, 这里的xx...

2020-03-05 14:13:37 174

原创 用“等待-通知”机制优化循环等待

前言在上篇已经了解到,破坏占用且等待条件时如果两个锁不满足同时获取的条件下,就用死循环的方式来循环等待。while(!actr.apply(this, target)) ;如果apply操作耗时非常短,并发量冲突不大的情况下,是可以这样做的。但是在现在并发量大,耗时时间长的情况下就不适用了,因为可能需要循环上万次才能获取到锁,太消耗CPU了。为了解决上面循环等待消耗CPU的问题,最好的...

2020-02-27 18:43:49 478

原创 一不小心就死锁了,怎么办?

前言在上篇中的银行转账的例子中, 用Account.class作为互斥锁,虽然能保证并发问题,但是用户A、B、C、D,A转B,B转C是串行的,这是由于用锁Account.class将转账操作串行化了,性能就会很低,在现实生活中这两个转账操作是可以并行处理的,所以需要提升性能。向现实世界要答案例如古代,所有的记账都是在账本上操作的,A和B各自有两个账本,A转账给B,需要账员同时看A和B的账本都...

2020-02-24 16:07:23 467

原创 互斥锁:如何用一把锁保护多个资源?

前言在上篇中提到,受保护资源和锁之间合理的关联关系应该是N:1的关系,也就是说一把锁可以用来保护多个资源,但是不能用多把锁来保护一个资源。当我们要保护多个资源时,首先要区分这些资源是否存在关联关系。保护没有关联关系的多个资源例如:账户中转账操作、修改密码操作,可以通过分配不同的锁来解决并发问题。class Account { // 锁:保护账户余额 private final O...

2020-02-23 21:42:43 586

原创 互斥锁:解决原子性问题

前言什么是原子性?一个或多个操作在CPU执行的过程中不被中断的特性称为原子性。如何解决原子性问题?原子性的问题根源是线程切换,如果能够禁用线程切换就能解决问题。而操作系统做线程切换是依赖CPU中断的,所以禁止CPU发生中断就能够禁止线程切换.在早期单核时代禁用CPU中断是可行的,但并不是适合多核场景。例如‘在32位的CPU上执行long型变量的读写操作,由于long是64位的,在32位C...

2020-02-21 16:56:52 788 1

原创 Java内存模型:看Java如何解决可见性和有序性问题

前言从上篇文中引出了可见性、原子性和一致性是并发编程的Bug之源,这三者在编程领域是一个共性问题,所有的编程语言都会遇到,Java语言在诞生之初就支持多线程,自然也有针对这三者的技术方案,而且在编程语言领域处于领先地位。如何解决其中的可见性和有序性——Java的内存模型什么是Java的内存模型?由上篇文章知道,可见性是由于缓存导致的,有序性是由于编译优化导致的。那我们可以通过禁用缓存和编译...

2020-02-19 23:11:47 212

原创 可见性、原子性和有序性问题:并发编程Bug的源头

并发编程幕后的故事随着设备的不断迭代,相应的速度也变得更快。但是在发展的过程中有一个矛盾一直存在,即三者的速度差异。快慢关系:CPU > 内存 > I/O,程序整体的性能取决于最慢的操作,即读写I/O设备,所以单方面的提升CPU性能是无效的。为了合理利用CPU的高性能,平衡三者的速度差异,计算机体系结构、操作系统、编译程序做出了贡献,体现为:CPU增加了缓存,平衡与内存的速度...

2020-02-19 17:59:23 296

原创 唯一索引和普通索引的选择

唯一索引和普通索引性能分析查询过程执行语句:select id from T where k = 5k上建立索引,这个查询语句在索引树上查找的过程,先是通过B+树从根结点开始,按层搜索到叶子结点。对于普通索引:查找到满足条件的第一个记录后,需要查找下一个记录,直到碰到第一个不满足k=5条件的索引对于唯一索引:查找到满足条件的第一个记录后,就会停止继续检查普通索引和唯一索引的性能...

2019-12-12 15:31:04 244 1

原创 与面向过程编程对比

什么是面向过程编程与面向过程编程语言?面向过程编程与面向对象编程一样也是一种编程范式或编程风格。它以过程(方法、函数、操作)作为组织代码的基本单元,以数据与方法分离为最主要的特点。面向过程风格是一种流程化的编程风格,通过拼接一组顺序执行的方法来操作数据完成一项功能。面向过程编程语言首先是一种编程语言。它最大的特点是不支持类和对象两个语法概念,不支持丰富的面向对象特性(比如:封装/继承/多态),...

2019-12-02 13:17:34 204

原创 链表(下)

如何轻松写出正确的链表代码?技巧一:理解指针或引用的含义将某个变量赋值给指针,实际上就是将这个变量的地址赋值给指针,或者反过来说,指针中存储了这个变量的内存地址,指向了这个变量,通过指针就可以找到这个变量。栗子1: p->next=qp结点中next的指针存储了q的内存地址。栗子2: p->next=p->next->nextp的next指针存储了p的下下一个结...

2019-11-14 16:40:01 235

原创 POI导出word

jar包:<!-- 模版引擎用到的jar包 --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version&am

2019-11-14 14:06:06 464

原创 封装、抽象、继承、多态四大特性

封装(Encapsulation)封装也叫作信息隐藏或者数据访问保护。类通过暴露有限的访问接口,授权外部仅能通过类提供的方式来访问内部信息或者数据。它需要编程语言提供权限访问控制语法来支持,例如 Java 中的 private、protected、public 关键字。封装的意义是什么?它能解决什么编程问题?一方面是保护数据不被随意修改,提高代码的可维护性;另一方面是仅暴露有限的必要接口,提...

2019-11-14 11:45:44 342

原创 面向对象分析、面向对象设计、面向对象编程、面向对象编程语言的基本概念

什么是面向对象编程和面向对象编程语言?面向对象编程的英文缩写是 OOP,全称是 Object Oriented Programming面向对象编程语言的英文缩写是 OOPL,全称是 Object Oriented Programming Language面向对象编程面向对象编程是一种编程范式或编程风格。它以类和对象最为组织代码的基本单元,并将封装、抽象、继承、多态四个特性作为代码设计和实现...

2019-11-14 11:09:41 1699

原创 链表(上)

什么是链表链表是指将一组零散的内存块串联在一起,我们把内存块称之为结点,每个链表的结点除了存储数据外还要记录链上的上一个或下一个结点的地址。我们把记录下个结点地址的叫做后继指针next,把上个结点称为前驱指针prev。相比数组,链表是一种稍微复杂一点儿的数据结构。链表的分类链表的种类非常多,最常见的有三种链表结构,分表为:单向链表、双向链表和循环链表单链表顾名思义就是指链表上只有一个...

2019-11-13 18:29:12 225

原创 数组

什么是数组(Array)?是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。数组是如何实现随机访问的?线性表数据像排成一条线一样的数据结构,每个线性表上的数据最多只有前和后两个方向。数组、链表、队列、栈都是线性表结构。与线性表相对立,即数据不在一条线上的数据结构, 每个非线性表上的数据之间并不是简单的前后关系。二叉树、堆、图等都是非线性表结构。连续的...

2019-11-13 13:19:15 220

原创 数据结构与算法书单

趣味入门书籍《大话数据结构》《算法图解》面试必刷的宝典《剑指 offer》《编程珠玑》《编程之美》针对特定编程语言的书籍《数据结构与算法分析 :C 语言描述》《数据结构与算法分析:C++ 描述》《数据结构与算法分析:Java 语言描述》《数据结构与算法 JavaScript 描述》《数据结构与算法:Python 语言描述》经典大部头《算法导论》《算法》殿堂级经典...

2019-11-13 11:18:05 208

原创 时间复杂度分析(下)

最好、最坏情况时间复杂度// n表示数组array的长度int find(int[] array, int n, int x) { int i = 0; int pos = -1; for (; i < n; ++i) { if (array[i] == x) pos = i; } return pos;}时间复杂度为:O(n)优化代码:// n...

2019-11-13 11:01:04 184

原创 时间复杂度分析(上)

为什么会有时间复杂度分析?数据结构和算法解决的就是‘快’和‘省’的问题,即如何让代码跑的更快,更省存储空间。大 O 复杂度表示法算法的执行效率,粗略地讲,就是算法代码执行的时间只关注循环执行次数最多的一段代码大 O 这种复杂度表示方法只是表示一种变化趋势,我们通常会忽略掉公式中的常量、低阶、系数,只需要记录一个最大阶的量级就可以了。所以在分析一个算法、一段代码的时间复杂度的时候,也只关...

2019-11-12 20:19:32 3706

原创 基本概念与知识点

什么是数据结构? 什么是算法?广义:数据结构指一组数据的存储结构;算法指操作数据的一组方法狭义:著名的数据结构和算法,例如队列、栈、堆、二分查找、动态规划数据结构和算法是相辅相成的,数据结构是为算法服务的,算法要作用在特定的数据结构之上复杂度分析数据结构和算法解决的是如何更省、更快地存储和处理数据的问题,因此,我们就需要一个考量效率和资源消耗的方法,这就是复杂度分析方法数据结构与算...

2019-11-12 15:49:59 282

原创 OAuth2.0的典型模式

授权码简化模式密码模式客户端模式刷新令牌

2019-11-07 14:25:36 113

原创 Docker之Registry

Registry 实战搜索镜像docker search 镜像名Angus@JianguodeiMac  ~/docker/d2  docker search whalesayNAME DESCRIPTION STARS O...

2019-11-06 17:09:04 176

转载 MySQL sql语句获取当前日期|时间|时间戳

1.1 获得当前日期+时间(date + time)函数:now()mysql> select now();+———————+| now() |+———————+| 2013-04-08 20:56:19 |+———————+除了 now() 函数能获得当前的日期时间外,MySQL 中还有下面的函数:current_timestamp(),current_timestamp...

2019-10-11 13:58:57 2023

原创 00-JVM指令手册

栈和局部变量操作将常量压入栈的指令aconst_null 将null对象引用压入栈iconst_m1 将int类型常量-1压入栈iconst_0 将int类型常量0压入栈iconst_1 将int类型常量1压入操作数栈iconst_2 将int类型常量2压入栈iconst_3 将int类型常量3压入栈iconst_4 将int类型常量4压入栈iconst_5 将int类型常量5压...

2019-10-09 17:43:17 117

原创 项目初始化Git命令行

Git全局设置git config --global user.name "your_name"git config --global user.email "your_email"创建一个新的版本库git clone https://git.code.tencent.com/njread/njread-bus-spring-cloud.gitcd njread-bus-spring...

2019-09-27 10:27:53 292

转载 watchbog 和其他挖矿病毒的通用删除思路

服务器前前后后中过两次毒,都是挖矿病毒第一次是因为redis的漏洞,第二次是因为jenkins的漏洞。top 可以看到病毒程序占用大量CPU。处理思路都大同小异。1,关掉病毒远程服务器访问权限iptables -A INPUT -s pastebin.com -j DROPiptables -A OUTPUT -d pastebin.com -j DROPcrontab -l 查看所有定时...

2019-09-10 18:37:16 216

原创 文档的基本操作

文档的CRUDCreate document自动生成_idPOST users/_doc{ "user":"Mike", "post_date":"2019-08-28T14:12:12", "message":"hello"}指定_idPUT users/_doc/1?op_type=create{ "user":"Angus", "post_da...

2019-08-29 15:34:01 168

原创 ElasticSearch的基本概念

DocumentES是面向文档的,文档是可搜索数据的最小单元。类似关系型数据库的一条记录文档会被序列化成JSON格式保存在ES中每个文档都有一个Unique ID,可以自己指定,也可以由ES自动生成文档的元数据元数据:用于标注文档的相关信息{ "_index":"movies", "_type":"_doc", "_id":"1", "_score"...

2019-08-29 13:33:39 145

原创 Error starting userland proxy: Bind for 0.0.0.0:9000 failed: port is already allocated

启动 docker-compose up 事报错错误如下:> docker-compose upkibana7 is up-to-datees7_01 is up-to-datees7_02 is up-to-dateStarting cerebro ... errorERROR: for cerebro Cannot start service cerebro: driv...

2019-08-27 15:12:07 3424

原创 Logstash下载与安装

https://www.elastic.co/cn/products/logstash下载地址:https://www.elastic.co/cn/downloads/logstashMacOS二进制文件下载:点此下载⚠️注意!请下载与ElasticSearch相同的版本下载最 MovieLens 最小测试数据集:传送门编写logstash配置文件:input { file...

2019-08-23 11:49:16 6744

原创 Docker容器中运行ElasticSearch、Kibana和Cerebro

新建 docker-compose.ymlversion: '2.2'services: cerebro: image: lmenezes/cerebro:0.8.3 container_name: cerebro ports: - "9000:9000" command: - -Dhosts.0.host=http://elasti...

2019-08-22 14:27:07 1151

原创 Kibana下载和安装

下载地址:https://www.elastic.co/cn/downloads/kibanaMacOS二进制文件下载:链接

2019-08-22 13:38:12 17230 1

原创 ElasticSearch安装部署

ES由Java语言开发,7.0版本之前需要提前安装好JDK,配置$JAVA_HOME,而7.0之后内置JDK下载地址:https://www.elastic.co/cn/downloads/elasticsearchMacOS二进制文件下载:链接解压:> tar -zxvf elasticsearch-7.1.0...> cd elasticsearch-7.1.0...

2019-08-22 12:55:30 192

Springboot项目Netty服务并自定义Gson配置类解析数据包

Springboot项目中使用 Netty 作为服务端,接收并处理其他平台发送的 Json数据包,处理拆包、粘包及数据包中时间类型是 long 类型需转成 Date的情况。

2018-12-14

SpringMVC.pdf

2017-03-08

空空如也

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

TA关注的人

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