自定义博客皮肤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)
  • 资源 (2)
  • 收藏
  • 关注

原创 【算法】算法基础

基础评估算法重要指标时间复杂度额外空间复杂度课程class 1 简单排序选择排序:每一次拿当前数和所有数比较,最小的放在当前位置冒泡排序:拿当前数与下一个数比较,若当前数大则交换位置插入排序:拿当前数与前一个数比较,若小则交换位置,并进行下一个数判断二分查找:每次找到中间的那个数,进行比较class 2 异或运算异或:无进位相加如果不用额外变量,给两个变量交换位置int a = x, b = y;a = a ^ b;b = a ^ b;a = a ^ b;

2021-07-11 23:17:20 237 2

原创 【消息中间件JMS java message service】RocketMQ

基础内容角色nameserver注册中心。可以部署多个实现高可用。所有broker会向nameserver上报,但nameserver之间不互相通报。所有数据放在内存中(可配置成持久化,但没有必要)broker实例// 启动mq broker(向指定中心注册)./mqbroker -n localhost:9876启动的时候,会向所有的nameser注册,建立长链接,定时上报master(支持读、写消息)slave(只能读)组成queue在rocketMQ中,只存在queue,q

2021-07-03 22:42:29 304 2

原创 【消息中间件JMS java message service】RocketMQ踩坑记录

Exception in thread “main” org.apache.rocketmq.client.exception.MQClientException巨坑问题。特别坑的注意点就是:你用的rocketMQ版本,一定要和你引用的pom文件同一个版本除了看官网的FAQ:This happens when you are trying to send messages to a topic whose routing info is not available to the producer.

2021-07-03 19:37:05 410

原创 【消息中间件JMS java message service】ActiveMQ

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

2021-06-26 23:01:13 140 2

原创 【mysql】调优

监控mysql并查询在mysql5.+到8的版本,都可以用show profile;set profiling=1;-- 执行任何sql,都可以看到sql的分析show profile; -- 查看最近一条Sql的耗时show profiles ; -- 查看全部sqlshow profiles for query 2; --查看query_id为2的sql的执行耗时show profiles [type|all|cup|IPC|MEMORY|SWAPS...] for QUERY n

2021-06-15 22:52:23 76

原创 【JVM】CMS、G1

G1基本概念card table:由于在做ygc的时候,需要找到哪些对象需要回收,那就可能需要遍历全部的old区,才能找到需要回收的对象,效率低。所以jvm设置了card table.对eden区和old区,每几个对象分为一个card。如果一个card里面有一个对象的引用指向Y区,则将card设置为dirty。再次扫描只需要扫描dirty的card。在结构上,用bitmap保存。 CSet=collection set。一组可被回收的分区的集合。把需要回收的region,都集合起来,叫做colle

2021-06-13 19:06:36 80

原创 【JVM】调优

区分概念:内存泄漏 memory leak。内存被无用对象占用,不一定会移除 内存yi

2021-06-10 22:55:45 1067

原创 【jvm】垃圾回收

GC常用算法Mark-Sweep 标记清除算法相对简单 在存活对象比较多的时候效率高 扫描两遍,效率低(第一遍标记,第二遍清除) 容易产生碎片Copying 拷贝把内存一分为二,把a部分的存活对象依次移动到b部分中,再清除a的全部适用于存活对象较少的时候 只扫描一次,效率高 没有碎片 空间浪费 移动复制对象,需要调整对象引用Mark-Compact 标记压缩不会产生碎片,方便对象分配 不会产生内存减半 扫描两次 需要移动对象,效率较低JVM内存分代模型(用于分代

2021-06-08 22:56:48 346

原创 【JVM】java runtime data area. 和jvm instructions

java runtime data areapc program counter 程序计数器:存放指令位置(下标)。 虚拟机的运行:取pc中的位置,找到该位置对应的指令,执行指令,pc++ heap堆 jvm stacks ,每一个线程对应的栈,每个方法对应一个栈帧frame native methodstacks direct memory 直接内存,jvm可以直接访问操作系统的内存。nio中 提高效率,实现zero copy method area ,jvm共享,存class结构..

2021-06-06 21:59:55 135 1

原创 【JVM】对象内存布局面试题

对象在内存中的存储布局普通对象8位的对象头 markword classpointer指针指向class文件的地址。 实例数据。 按8的倍数对齐数组对象对象头 markword classpointer 数组长度 4字节 数组数据 按8的倍数对齐对象头的结构32位解释∫对象怎么定位句柄池。对象引用指向句柄池,句柄池包含2个指针,一个指向对象,一个指向.class文件 直接指针。对象引用直接指向new的对象,对象中的classpointer指向.class文

2021-06-06 18:08:48 85

原创 【JVM】JMM/ java内存模型

硬件层的并发优化基础知识数据层一致协议每个cpu有内部的高速缓存区,也有外部的高速缓存或者内存。当一个数据在外部高速缓存或者内存中,当cpu要处理数据的时候,会先查内部高速缓存,再查外部高速缓存,再查内存,将数据拿回来处理,那么多个cpu同时处理一个数据,如何保证数据一致性?在老的cpu中,会对总线加锁,这样效率很低。所以在新的cpu中,会使用各种各样的数据层一致协议,因特尔使用的MESI协议,还有各种其他协议MESI协议MESI缓存锁。内存中保存对象的4个状态,通过4个状态来保证数据一

2021-06-06 17:11:40 95 4

原创 【JVM】基础概念点

类加载过程load:把硬盘上的class文件,加载到内存中 link 校验 准备:把静态变量赋默认值 resolution:内存中对象的符号引用转换为直接应用 init:把静态变量赋初始值类加载器lib包中的基础类由classLoader加载 ext包中的类由extClassLoader加载 应用中的类由applicationClassLoader加载 还可以自定义类加载器以上按顺序加载。是属于子加载器与类加载器的关系,注意在语法上不是继承关系。classL...

2021-06-03 22:38:19 68

原创 【线程】四、disruptor

背景Disruptor是英国外汇交易公司LMAX开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题(在性能测试中发现竟然与I/O操作处于同样的数量级)。基于Disruptor开发的系统单线程能支撑每秒600万订单,2010年在QCon演讲后,获得了业界关注。2011年,企业应用软件专家Martin Fowler专门撰写长文介绍。同年它还获得了Oracle官方的Duke大奖。目前,包括Apache Storm、Camel、Log4j 2在内的很多知名项目都应用了Disruptor以获取高性能。在

2021-05-30 20:02:52 137

原创 【线程】三、线程池

Callable类似于Runable的接口,但是有返回。FutureTask实现了runable和future。所以即可以当作runable,丢到thread中运行,也可以用get()方法取到运行的返回

2021-05-26 23:08:33 81

原创 【线程】初识容器

分类collection list set queue :为多线程准备,可以阻塞的put \take map发展vector、hashtable每一个方法都自带synchronized。 基本不用了coypOnWriteList在读特别多,写特别少的时候使用该容器往List中插入的时候,需要加锁,但是此时会copy一份出来,对新的list进行添加。读的线程可以继续读原来的。等添加完成后,再将list引用修改至新list上Queueadd 添加..

2021-05-25 23:23:36 86

原创 java的四种引用:强、软、弱、虚

强引用正常的对象,都是强引用。遇到gc时不会回收软引用创建软引用对象后,当gc时且内存不够的时候,就会回收弱引用遇到gc则直接回收。一般用在ThreadLocal中,threadLocal中,threadLocalMap(每个线程都包含一个threadLocalMap)的Key类型是entry,继承于weakReference。这样当强引用对象释放掉引用,则threadlocalMap中的key也释放掉,否则容易产生内存泄漏(很难释放掉这块内存)!但是注意,key释放掉,可是v.

2021-05-24 21:54:34 62

原创 【线程】二、AQS

AQS是Lock的底层。构成AbstractQueuedSynchronizer是个抽象类,包含一个state和一个双向链表其中state是用volatile修饰,保证state的线程可见性 双向链表是线程的等待队列,采用CAS进行加入和取出操作实现不同的锁类型,对AQS中的state和链表有不同的实现。例如在reentrantLock中,state的作用是记录了偏向锁的概念。当有一个线程加锁时,state设置为1,其他线程如果看到state !=0,则加入等待队列。如果当前线

2021-05-23 22:44:14 117

原创 【线程】一、线程基础点

线程基础三种启动方式:实现Thread类,然后new 一个对象,调用start方法 实现Runable、接口,然后new Thread(new Runable()).start(),同理可用lambd表达式表示 线程池Executors public class StartThread { static class Thread1 extends Thread{ @Override public void run() { S

2021-05-17 21:47:57 68

原创 【redis】七、redis代理cluster

当采用集群模式的时候,每台客户端要访问的时候,都需要连到y轴上的所有redis,相对的,每台redis都与所有的客户端建立了连接!这么多的连接,就会对服务器的造成压力。所以可以采用代理服务器来解决该问题。所有的客户端,与代理服务器建立连接,至于具体访问哪台redis,则由代理服务器负责。代理有很多,这里主要介绍redis自带的Clusterredis-cluster在/opt/redis-6.2.1/utils/create-cluster中,有cluster集群脚本NODE.

2021-04-18 21:16:15 292

原创 【redis】六、集群:数据最终一致性、哨兵

集群根据上一篇说的afk理论,则会出现一个问题,那就是CAP原则中的问题。高可用性、高一致性、高容错性只能三选二。在redis中,redis的原则就是“快”!所以需要利用kafka来实现数据的最终一致性。当client保存一条数据到redis中时,主redis将数据存入kafka中,并且直接返回客户端保存成功。从redis会从kafka中读取数据,保存到本地。实现数据的最终一致性。主从可以在客户端中输入REPLICAOF 127.0.0.1 6379作为6379的从red

2021-04-18 20:38:24 419

原创 【redis】五、redis持久化、以及afk

redis持久化redis数据是存在于内存中的,但是当redis意外宕机,就需要恢复数据,所以有必要对Redis的数据进行持久化。持久化分为rdb 以二进制的方式保存当前redis中的所有内容。rdb会丢失数据 aof 以追加文件的方式记录所有的set操作。aof文件较大,并且会有无用操作rdb执行bgsave命令,就可以生成dump.rdb文件。注意:当执bgsave时,linux操作系统会采用fork函数,将redis持有的所有内存引用,复制一份。主线程redis仍然在接受和提供

2021-04-18 20:11:12 359

原创 【redis】四、发布订阅与事务、管道

发布与订阅发布与订阅,类似于聊天室。在一个频道内,任何人可以在里面说话,然后订阅着都可以接收到。关注推广等等功能,都可以利用该技术 SUBSCRIBE channel 订阅渠道 UNSUBSCRIBE channel 取消订阅 PUNSUBSCRIBE 通配符取消订阅 PUBLISH channel value 发布信息 PSUBSCRIBE pattern,利用通配符订阅渠道 PUBSUB pattern,根据通配符查看渠道 事务.

2021-04-18 19:36:38 80

原创 【redis】三、redis的五大类型介绍和使用

redis基本类型string list hash set sorted set在redis中,都是以key-value方式存储数据。在key中,除了保存key的字符串以外,还保存了value的type(是哪种基本类型)、实际值的类型(是数字还是字符串)。这样做的好处是,每次命令,不需要拿到value之后才能判断这个命令是否正确(例如对字符串进行了自增命令)另外在redis中维护了正反索引,所以在选取范围的时候,开始下标设置为0,结束设置为-1,就是取全部数据。结束设置为-2,就是取从开始

2021-04-15 17:32:18 156

原创 【redis】二、redis安装

redis安装步骤一、下载并解压下载链接来自于官网$ wget https://download.redis.io/releases/redis-6.2.1.tar.gz$ tar xzf redis-6.2.1.tar.gz$ cd redis-6.2.1二、编译和启动直接MAKE 进入src目录,./redis-server 就可以启动redis了。但是该总情况,比较简陋,并且没有后台运行。所以采用以下方式make make install PREFIX=/opt/r

2021-04-15 16:09:20 61

原创 【redis】一.在redis之前的epoll

了解redis必须要了解的epoll作为单线程的redis,为什么这么快,主要原因还是对epoll函数的利用。所以,有必要先了解什么是epoll。为什么redis官网也只提供linux版本的,没有提供windows版本?就是因为只有部分linux系统中有epoll函数。windows版本都是各论坛大神自己改的redis,官网不提供,因为没有了epoll就失去了“快”这个特性!了解epoll那么就要了解BIO、NIO、(AIO)。BIO/ Block IO/ 阻塞IO在socket编程中,

2021-04-13 16:20:30 163

原创 JVM虚拟机之类加载--关于接口加载的不同见解

首先是书上 或者各种资料上有这样一段话,但是个人认为有问题,接口加载应该与类加载的规则一致,即: 初始化一个类 时,会先初始化它所实现的接口解析如下: 因为接口中定义静态变量,默认 属性为public static final, 若在接口类中定义常量,则 在加载时,会 将常量存入 加载的类的运行时的数据区的方法区内,导致不会初始化接口。可以按一下步骤进行测...

2019-11-24 22:18:14 175 1

原创 dubbokeeper使用注意事项

服务并发量大时,需要对系统进行性能优化。dubbo也需要进行监控排查,采用dubbokeeper对性能进行监控。一、安装与部署1.github上直接clone代码,https://github.com/dubboclub/dubbokeeper/。2.根据readme进行安装与部署。注意: 1.存储模块的端口号(默认20884)不能被占用,否则启动日志正常但是实际...

2019-08-02 16:21:58 522

原创 js控制单元格 行 列 相同内容合并

tabObjId:table 的id cellindex :无效,可根据需要修改成有效。beginRow:从第几行开始,暂时默认传0,其他未测试。function SpanGrid(tabObjId, cellindex, beginRow) {    var colIndex = cellindex;    var rowBeginIndex = beginRow;

2017-11-16 13:52:53 2683

原创 zabbix基础·配置短信报警

脚本目录与邮件脚本目录一样,可以参考上一文章;编辑脚本文件vi sendSMS.sh内容如下:#!/bin/bashMESSAGE_UTF8=$3MOBILE_NUMBER=$1XXD="/usr/bin/xxd"CURL="/usr/bin/curl"TIMEOUT=5echo $MOBILE_NUMBERecho $MESSAGE_UTF8

2017-02-17 11:39:37 3915

原创 zabbix基础·配置邮件告警

使用sendEmai工具,发送邮件;首先安装sendEmai;下载wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz创建目录:mkdir /usr/local/bin解压tar zxf sendEmail-v1.56.tar.gz

2017-02-17 11:24:31 753

原创 zabbix基础·添加对web页面的url监控

简单来说就是在项目中增加一个接口,zabbix访问接口,测试返回值是否是200,来判断项目是否存活。代码部分自行修改。web配置如下1.“配置-》主机”,选择某台机子的“应用集”,创建应用集,2.选择“web检测”,创建web场景选择步骤:3:选择“触发器”,创建触发器;表达式点击添加,监控项选择: web.test.rspcod

2017-02-17 11:18:29 309206 1

原创 zabbix基础·监控一台服务器

此本基础为上一篇的zabbix部署完成。1、在需要监控的目标服务器上安装zabbix_agentwget  http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-agent-3.2.1-1.el7.x86_64.rpm安装:yum install zabbix-*修改配置:vi /etc/zabbi

2017-02-17 10:39:04 3226

原创 zabbix基础·cenOS7.2部署zabbix3.2

本文介绍 cenOS7.2部署zabbix3.2zabbix就不介绍了,直接上过程。首先源码包地址:http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-agent-3.2.1-1.el7.x86_64.rpmhttp://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-

2017-02-17 10:23:02 1055

原创 打jar包之后放入项目的lib下,结果无法找到entity

描述:         源码引用了外部jar,然后把源码打包成jar,放入其他项目中,结果报错Unknown entity结果试了一下,在打包的时候,把“add directory entries ”选上,这时候打包出来的Jar,就没有问题了。再结合其他人的解释,附上地址:http://blog.csdn.net/wangpeng047/article/details/

2015-08-28 16:18:23 757

原创 springmvc项目jsp页面传递参数至controller中文乱码解决方案

如果是用get传值,则:在server.xml中,把改成

2015-08-21 13:59:05 3890

android的MP3PLAY播放器

大二的期末作业。安卓的mp3play播放器 刷新页面 可以得到MP3列表 点击可以下载MP3和歌词。播放可以桌面滚动显示歌词。适合刚入门学习android的同学参考使用。

2015-07-09

C++ MFC简单计算器

大一时候用C++6.0做的一个MFC计算器 是期末作业。很简单 适合新手入门参考。

2015-07-09

空空如也

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

TA关注的人

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