- 博客(85)
- 资源 (6)
- 收藏
- 关注
转载 Redis为什么是单线程、及高并发快的3大原因详解
Redis的高并发和快速原因1.redis是基于内存的,内存的读写速度非常快;2.redis是单线程的,省去了很多上下文切换线程的时间;3.redis使用多路复用技术,可以处理并发的连接。非阻塞IO 内部实现采用epoll,采用了epoll+自己实现的简单的事件框架。epoll中的读、写、关闭、连接都转化成了事件,然后利用epoll的多路复用特性,绝不在io上浪费一点时间。为什么Redis是单线程的1.官方答案因为Redis是基于内存的操作,CPU不是Redis的瓶颈,Redis
2021-01-29 19:28:07
510
原创 程序猿一次逆风翻盘的机会(第二期)
背景:某一天,老板突发奇想,想要做一款有趣又好玩的答题游戏,给你两天时间完成,但是希望你能理解公司因为疫情经营也不太景气,所以要求技术人员必须能够做到以最少的资源达到最好的性能,游戏是答题闯关游戏,选项呢是多选项,做好了,咱们就单车换摩托,做不好咱们就法制节目见,为了养家糊口,苦逼程序员就接下需求开干了于是程序员开始提炼老板的需求要点:①答案是多选项的②要求节省资源首先需要设计好多选项的存储模型,该如何设计呢,看看第二个要求,也没啥选择了,那就从压榨数据库上着手吧,既然节省资..
2020-11-24 10:23:47
342
2
原创 漫谈mysql架构(第一期)
1、mysql逻辑架构第一层:比如连接处理、授权认证、安全等等 职责,针对用户端的网关第二层:核心服务功能,包括 查询解析、 分析、 优化、 缓存以及所有的内置函数(例如, 日期、 时间、 数学和加密函数) , 所有跨存储引擎的功能都在这一层实现:存储过程、 触发器、 视图等第三层:存储引擎 , 数据的存储和提取2、优化与执行在第二层服务器层面,mysql会用用户提交的sql进行解析,创建 解析树,优化,选择合适的索引,过程如下:a.SQL : 编写过程: select .
2020-11-23 18:44:25
300
原创 solor的学习
关于solor的目录结构solr-4.10.3 |bin :存放solr的命令,一帮为了演示solr的功能,运行在jetty中,嵌入式服务器 |dist :所有编译以后的jar包,war包的存放 |contrib:扩展工具类 |example:运行实例 |solr:solr的home ...
2020-11-15 23:51:00
268
原创 redis数据结构与对象到底长什么样?
写在前面前方高能!前方高能!前方高能!文章较长,可能需要花费您两个小时的时间,请做好心理准备,但是一旦你准备看下去,我相信您一定会有收获,不枉此行,let’s go!!!一、简单动态字符串说明:Redis没有直接使用C语言传统的字符串表示(以空字符结尾的字符数组, 以下简称C字符串) , 而是自己构建了一种名为简单动态字符串(simple dynamic string, SDS) 的抽象类型, 并将SDS用作Redis的默认字符串表示。SDS的定义代码 stru...
2020-11-15 12:25:07
218
原创 谁说集群的本地缓存不能清除的?
背景在项目开发中,用户端会遇到需要实时更新配置数据的需求,如果配置数据在单库中配置,当用户端访问量较大,单库压力也会很大,此时会引入本地缓存来环节数据库服务器的压力。在集群环境中,当运营在B端更新数据库配置数据,由于用户端缓存还未失效,因此用户即使不断刷新也不能及时更新出最新的数据,用户体验总会存在一点不如人意的缺陷。这里介绍一种使用redis发布订阅能力+本地缓存Caffeine实现实时更新本地缓存的方案。整个过程分成两个阶段:初始同步本地缓存建议设置成不过期,那么可以达到脱..
2020-11-14 11:32:42
425
原创 快速迭代业务背景下:设计模式混编的一次尝试
一、业务背景在现有集团业务中,快速迭代已经是家常便饭了,立项需求,评估排期,进入开发,提前进入测试。作为项目任何一个环节的小伙伴应该都有体会,快速反应快速迭代已经成为常态。如果假如你参与的是一个稳定服务的中台项目,那么还好一些能够持续的思考优化项目。如果只是一种活动性质的项目,这次做完下次业务就完全不一样了加上时间短任务重,导致没有那么多时间去做设计,设计模式的作用在这种类型的项目中作用就被削弱了。设计模式的使用比较常见是中间件、技术框架中。因为设计模式的主要能力是解耦,所以在中间件和技术框架中便发挥
2020-11-13 13:21:43
372
原创 arthas为什么那么无敌?
背景从入职到现在在日常开发中,以及项目上线后遇到挺多问题,例如1、线上出现mq失败率很高的异常 2、bug本地根本无法复现,线上又没有任何异常 3、load 利用率高 4、在压测阶段接口耗时较长 5、遇到发版代码总是不起效果 6、本地启动没有出现包冲突异常,运行的时候出现类冲突异常 等等稀奇古怪,逼到怀疑人生的灵异事件,这个时候想,如果不加日志不改代码不重新发版,又能够做到线上debug的效果,同时能看到数据流转,执行时长等信息,那该是多么爽的一件事,踩了挺多的坑,发现了一个工具arthas,ok,以上
2020-11-12 15:56:34
522
2
转载 LVS 简介及使用
IPVS三种机制:VS/NAT,VS/TUN,VS/DR一.LVS是什么?LVS的英文全称是LinuxVirtualServer,即Linux虚拟服务器。它是我们国家的章文嵩博士的一个开源项目。在linux内存2.6中,它已经成为内核的一部分,在此之前的内核版本则需要重新编译内核。二.LVS能干什么?LVS主要用于多服务器的负载均衡。它工作在网络层,可以实现高性能,高...
2019-07-27 17:28:23
289
转载 VPC是什么,VPC详解
https://blog.youkuaiyun.com/zzq900503/article/details/80252184
2019-07-27 14:13:46
4850
转载 读时模式VS写时模式
读时模式VS写时模式在传统数据库里,表的模式是在数据加载时强制确定的。如果在加载时发现数据不符合模式,则被拒绝加载数据。因为数据是在写入数据库是对照模式进行检查,因此这一设计有时被称为“写时模式”(schema on write)。在另外一方面,Hive对数据的验证并在不加载数据时进行,而在查询时进行。这称为“读时模式”(schema on read)。用户需要在这两种方法之间权衡。读...
2019-07-26 15:30:20
673
2
转载 结构化、半结构化和非结构化数据
在实际应用中,我们会遇到各式各样的数据库如nosql非关系数据库(memcached,redis,mangodb),RDBMS关系数据库(oracle,mysql等),还有一些其它的数据库如hbase,在这些数据库中,又会出现结构化数据,非结构化数据,半结构化数据,下面列出各种数据类型:结构化数据结构化的数据是指可以使用关系型数据库表示和存储,表现为二维形式的数据。一般特点是:数据以行为单...
2019-07-26 15:16:38
1838
转载 sleep()和wait()方法与对象锁、锁池、等待池
一道Java的题目:关于sleep()和wait(),以下描述错误的一项是: - A sleep是线程类(Thread)的方法,wait是Object类的方法; - B sleep不释放对象锁,wait放弃对象锁 - C sleep暂停线程、但监控状态仍然保持,结束后会自动恢复 - D wait后进入等待锁定池,只有针对此对象发出notify方法后获得对象锁进入运行状态1.关于对象锁...
2018-12-06 19:19:35
502
转载 关于聚簇索引和非聚簇索引的总结
非聚簇索引 以myisam为例,一个数据表table中,它是有table.frm、table.myd以及table.myi组成。table.myd记录了数据,table.myi记录了索引的数据。在用到索引时,先到table.myi(索引树)中进行查找,取到数据所在table.myd的行位置,拿到数据。所以myisam引擎的索引文件和数据文件是独立分开的,则称之为非聚簇索引。my...
2018-12-06 18:01:52
438
转载 一致性哈希算法原理
一致性Hash算法背景 一致性哈希算法在1997年由麻省理工学院的Karger等人在解决分布式Cache中提出的,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简单哈希算法带来的问题,使得DHT可以在P2P环境中真正得到应用。 但现在一致性hash算法在分布式系统中也得到了广泛应用,研究过memcached缓存数据库的人...
2018-12-05 20:43:47
120
原创 对称加密与非对称加密
(一)对称加密(Symmetric Cryptography)对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key)。对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中。对称加密通常使用的是相对较小的密钥,一般小于256 bit。因为密钥越大,加密越强,但加密与解密的过程越慢。如果...
2018-12-05 16:59:55
168
原创 http学习笔记
一、了解 Web 及网络基础①TCP/IP 的分层管理TCP/IP 协议族各层的作用如下。应用层16应用层决定了向用户提供应用服务时通信的活动。TCP/IP 协议族内预存了各类通用的应用服务。比如,FTP(FileTransfer Protocol,文件传输协议)和 DNS(Domain Name System,域名系统)服务就是其中两类。HTTP 协议也处于该层。...
2018-12-05 15:47:19
342
原创 轻松理解MYSQL MVCC 实现机制
参考博客:https://blog.youkuaiyun.com/whoamiyang/article/details/51901888
2018-12-02 19:28:23
221
原创 springmvc中关于封装类型传输的问题
1.对于从前台往后台传值,例如long,int,double,date,用实体接收报错的解决办法①如果穿数值型的,一律把字符串改成数值类型Number(value),②如果是日期date类型的,在后台进行转换new Date(value);③或者在后台进行处理解决办法:使用@InitBinder注解(1)需要自定义一个基础Controller,完成对日期转换的注册:...
2018-12-02 19:28:16
695
原创 rabbitmq学习笔记
一、rabbitmq服务器的安装rabbitmq是使用erlang语言编写的①rabbitmq的默认安装位置:/usr/lib/rabbitmq/lib/rabbitmq_server-3.4.1一、rabbitmq服务器的安装rabbitmq是使用erlang语言编写的①rabbitmq的默认安装位置:/usr/lib/rabbitmq/lib/rabbitmq_server...
2018-12-01 15:25:46
978
原创 多线程编程核心技术
一、多线程基础知识①、进程和线程的区别线程:线程是进程当中独立运行的子任务。②、java.exe、javaw.exe和javaws.exe javaw.exe主要用于启动基于GUI的应用程序。 java.exe执行应用日志再在控制台显示输出与错误信息。 javaws.exe是用来启动通过web来描述的项目,我们需要一个jnlp文件,来描述...
2018-12-01 15:12:05
3757
原创 zookeeper的应用学习笔记
zookeeper--------------- 动物园管理员。 开源框架,用于分布式协同。 集中式服务,配置信息、命名服务、分布式同步、分组。 架构简单、API解决了分布式环境下复杂的协同配置。 安装zk(本地模式,单机版)-------------- 1.下载 zookeeper-3.4.10.tar.g...
2018-12-01 14:58:42
329
原创 zookeeper的学习笔记
一、简介①主从示例说明(1)主节点失效主节点失效时,我们需要有一个备份主节点(backup master)。当主要主节点(primary master)崩溃时,备份主节点接管主要主节点的角色,进行故障转移,然而,这并不是简单开始处理进入主节点的请求。新的主要主节点需要能够恢复到旧的主要主节点崩溃时的状态。对于主节点状态的可恢复性,我们不能依靠从已经崩溃的主节点来获取这些信息...
2018-12-01 14:58:00
295
原创 关于FtpClient.listFiles()总是返回null的问题
问题:文件中有文件,但是调用FtpClient.listFiles(path);方法总是报错解决办法:在读取文件之前加上ftpClient.enterLocalPassiveMode();这句话 /** * 判断ftp服务器文件是否存在 * @param path * @return * @throws IOException ...
2018-12-01 14:55:49
2374
原创 redis的学习笔记
一、mysql存储性能方面瓶颈及演变 ①单机mysql ②Memcached(缓存)+MySQL+垂直拆分 ③Mysql主从读写分离 ④分表分库+水平拆分+mysql集群 ⑤MySQL的扩展性瓶颈 MySQL数据库也经常存储一些大...
2018-12-01 14:51:53
406
原创 tomcat自动拉取代码并打包启动脚本
#!/bin/bashecho "关闭tomcat"/data/ecms/tomcat_ecms/bin/shutdown.sh cd /data/ecms/ecmscode/ecmsecho "git pull"git pullcd /data/ecms/ecmscode/ecmsecho "mvn package"mvn clean package...
2018-12-01 13:47:14
395
原创 jvm的学习
一、jvm的位置JVM是运行在操作系统之上的,它与硬件没有直接的交互二、jvmt体系结构①程序计数器(1)程序计数器是一块较小的内存空间,是当前线程所执行的字节码的行号指示器,字节码解释器工作时是通过改变这个计数器的值来选取下一条需要执行的字节码(包括分支、循环、跳转、异常处理、线程恢复)(2)java虚拟机多线程是通过线程轮流切换分配处理器执行时间,为了多线程切换后能...
2018-12-01 13:38:14
1327
原创 HashMap的默认容量为何为16?为何是2的整数倍?
一直知道hashMap的结构,但是初始容量是16,16是2的指数幂,但为什么呢?首先解决了解介个基础知识点①关于java中的取模和取整 JAVA中对于整型数a,b来说,取模运算是:1.求 整数商: c = a/b;2.计算模: a%b= a - c*b.例如: ...
2018-12-01 13:04:34
1554
2
原创 常见的异常类Exception
Java中常见的异常类型 先详细说明几个常见的异常 1. java.lang.nullpointerexception 这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者是不存在的对象,这个错误经常出现在创建图片,调用数组这些操作中,比如图片未经初始化,或者图片创建时的路径错误等等。对数组操作中出现空指针,很多情况下是一...
2018-11-30 11:38:15
9482
原创 NIO的学习
jvava nio的概念 non blocking io ,java非阻塞读写方式,NIO支持面向缓冲区的,基于通道的iO的操作。NIO将以更加高效的方式进行文件的读写操作。一、NIO和IO的区别①传统的io是面向流的单向输入输出 ②nio是面向缓冲区(火车)和通道(铁路) 缓存区是一个装货和卸货的火车,所以可以双向流动使用,是非阻...
2018-11-30 11:35:44
186
原创 extjs的学习笔记
一.extjs的官网:http://extjs.org.cn/二.产品目录介绍一.extjs的官网:http://extjs.org.cn/二.产品目录介绍三.在项目中使用应用语言local文件,resources样式文件,核心的js文件引入:<link type="text/css" rel="stylesheet" href="extjs/resourc...
2018-11-30 11:32:28
3146
原创 extjs项目积累
①extjs的字符串工具方法1、ellipsis(String value,Number length)----截取字符串 [javascript] view plain copy1. Ext.onReady(function (){ 2. var v="这是一个测试4567878974"; 3. Ext.MessageBox.al...
2018-11-30 11:15:51
285
原创 mysql高级优化学习
一、mysql的架构 ①mysql的优势主要体现在存储引擎的架构上,插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取想分离。这种架构可以根据业务的需求和实际需求选择合适的 存储引擎。②架构介绍详细 二、mysql存储引擎介绍①查看存储引擎的命令 ②MyISAM和InnoDB对比阿里使用的是:pe...
2018-11-30 11:14:54
1083
原创 mysql批量插入
批量插入public void addCompensateDetail(final Compensate compensate, final List<ChannelPaymentVoForsearch> channelPaymentVoList) { logger.info("-----------【增加赔付金明细Dao开始】------------------...
2018-11-30 10:24:33
338
原创 mysql主从复制
1、在阿里云服务器中修改my.cnf文件(一般在/etc/my.cnf) 代码如下 复制代码 [mysqld] log-bin=mysql-bin //[必须]启用二进制日志 server-id=1 //[必须]服务器唯一ID,默认是1,一般取IP最后一段 binlog-do-d...
2018-11-30 10:23:51
169
原创 查看mysql进程并杀掉mysql进程
第一种: SHOW PROCESSLIST;1执行上述命令,可以看到下图: 然后找到对应的ID: KILL 41515;1就OK了.第二种: 需要借助工具,Navicat. 工具->服务器监控->MySQL打开之后就可以看到下图: 然后还是找到对应的ID : KILL 42736;...
2018-11-30 10:21:57
16246
原创 创建pom工程
1.2.Group Id 就是组织名Artifact Id 打成jar包以后的名字3.修改pom文件 <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocat...
2018-11-30 10:18:28
1590
原创 设计模式之动态代理
用动态代理要解决的问题:当我们想测试别人给出的jar包中的一个方法的运行时间,而我们没有源码,无法修改代码(如果有源码可以在方法前得到系统时间,在方法后得到系统时间,两个值相减就能实际),怎么可以得到运行时间? 聚合的概念:在一个类中调用另一个类①写一个静态代理(静态代理是针对一个或几个方法时是比较方便的,对于几百个或上千个的话,就不方便了,因为要写几百个或上千个静态代...
2018-11-30 10:16:05
169
原创 struts2的学习笔记
1.struts.xml中的内容<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC" -//Apache Software Foundation//DTD Struts Configuration 2.0//EN""http://struts.apache.org/dtds/struts-2.0.d...
2018-11-29 15:12:28
474
JavaEE开发的颠覆者 Spring Boot实战(文字版和影印版).zip
2019-06-19
ohdsjkf dsf
2013-10-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人