自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 资源 (1)
  • 收藏
  • 关注

原创 二级缓存设计思路

二级缓存

2023-07-25 23:11:32 170

原创 A/BTest设计方案

场景:需要比较开卡活动的引流效率,有三种方案A、B、C。A为原始方案/公认最优方案,B为方案1,C为方案2。流量分配比例为:4:3:3,同时投放上线,从而选择效果最优方案。痛点:ABTest 页面,保持一个入口链接 同一个用户多次进入应看到同一个页面 避免重复开发,有配置后台让运营产品可配置,包括流量分配,查看实验效果等 分流逻辑属于跨业务的公共逻辑,应单独抽象方案:渠道参数:A:0、1、2、3B:4、5、6C:7、8、9前端编写拉新页面,将渠道参数和uid等开卡信息

2021-10-12 12:43:22 525

原创 Elasticsearch概念理解及工作使用总结

使用命令启动bin/elasticsearchbin/elasticsearch -Ehttp.port=8200 -Epath.data=node2 指定端口号 制定data2bin/elasticsearch -Ehttp.port=7200 -Epath.data=node3 指定端口号 制定data3查看集群http://localhost:9200/_cat/nodes?v查看集群详情http://localhost:9200/_cluster/statselasticsearc

2021-10-12 12:36:17 372

原创 springboot架构中间件理解

中间件DUBBORPC和http区别RPC要求适合同环境的远程调用,http不用关注实现,只需遵循rest规范结构:business业务逻辑层、RPC配置层(负载均衡、集群容错、代理)、remoting 网络传输层启动原理:1、provider和consumer连接到注册中心register做注册,订阅服务2、register根据配置的订阅关系,把provider提供的信息给consumer,同时consumer本地缓存信息3、consumer根据负载均衡策略选择一台provider,

2021-10-07 11:34:21 1476

原创 JDK源码解析(3)——String

一、类的定义public final class String implements java.io.Serializable, Comparable<String>, CharSequence与其他几种类不同的是,String实现了CharSequence 接口,表示是一个有序字符的可读集合。二、类的属性与Integer类似,Boolean的私有属性是boolean。1、私有属性//String的值一旦创建就无法更改,String的值就被保存在了char数组里了,j

2021-05-26 15:49:03 187 1

原创 开发工具(1)-git常用命令速记

虽然我们现在都通过idea等开发工具中自带的git功能,带难免遇到面试时,面试官冷不丁问你 git 或 linux 的冷门命令,答不上来尴尬不说,工资还会被压,所以熟记常用命令是必须的。一、git常用命令速查表二、常见git命令git branch 查看本地所有分支git status 查看当前状态git commit 提交git branch -a 查看所有的分支git branch -r 查看远程所有分支git commit -am "init" 提交并且加注释git ...

2021-04-29 16:47:16 153

原创 JDK源码解析(5)——Short、Long、Double、Float

一、Short1、shortcache的初始值在-128 —— 127,不同于Integer,shortcache不可调整大小。decode//decode方法将字符串解码为Short,//此方法接受十进制字符串,十六进制字符串(用0x\0X#标识),八进制字符串(用0标识),//但是解码后的值必须在[-32768,32767]这一区间内,否则抛出NumberFormatException异常。public static Short decode(String nm) throws Nu

2021-04-27 14:38:15 226

原创 JDK源码解析(4)——Byte、Character

一、ByteByte与Integer基本大同小异,也会在加载时生成-128到127的初始值,所以不多赘述。二、CharacterCharacter会在加载时生成127+1的初始值,所以不多赘述。isValidCodePoint// 判断指定的代码点是否为从 0x0000 到 0x10FFFF 范围之内的有效 Unicode 代码点值。public static boolean isValidCodePoint(int codePoint) { // Optimized for.

2021-04-26 11:47:20 265

原创 JDK源码解析(2)——Boolean

Boolean是8大基础数据类型中比较简洁的一个数据类型,下面我们深入了解一下。一、类的定义通过类的定义,我们可以看到Boolean不能被继承。由于继承了Comparable接口,所以Boolean类被自然排序,我们可以调用compareTo方法来和Boolean类型的对象进行比较。public final class Boolean implements java.io.Serializable, Comparable<Boolean>二、类的属性与Integer类似,B

2021-04-26 11:09:59 128

原创 JDK源码解析(1)——Integer

Integer是我们日常开发中最常用的数据类型,下面我们深入了解一下。一、类的定义通过类的定义,我们可以看到Integer不能被继承。由于继承了Comparable接口,所以Integer类被自然排序,我们可以调用compareTo方法来和Integer类型的对象进行比较。public final class Integer extends Number implements Comparable<Integer>二、类的属性1、私有属性//保存的int值priva

2021-04-25 18:52:35 256

原创 JavaGC调优(2)——GC实战

上篇文章主要分析了一下JVM和GC算法等理论,这篇主要就是实战。GC的目标1.1、GC优化是必要的吗事实上GC优化对Java基础服务来说在有些场合是可以省去的,但前提是这些正在运行的Java系统,必须包含以下参数或行为:内存大小已经通过-Xms和-Xmx参数指定过 运行在server模式下(使用-server参数) 系统中没有残留超时日志之类的错误日志我们GC优化的最主要的目的:减少Full GC的执行时间 将进入老年代的对象数量降到最低1.2、GC调优调的是什...

2021-04-05 16:38:11 172

原创 JavaGC调优(1)——GC算法和垃圾回收

本章简要介绍GC的算法和垃圾回收器,下一章节再详细讲解GC算法的实现一、简介垃圾收集器都专注于两件事情:(1)查找所有存活对象(2)抛弃其他的部分,即死对象,不再使用的对象1.1、标记可达对象(Marking Reachable Objects)标记可达对象,就是存活的对象。有以下四种特定元素被指定为“GC根元素(Garbage Collection Roots)”。GC遍历(traverses)内存中整体的对象关系图(object graph),从GC根元素开始扫描,到直接引用,以及其..

2021-04-05 16:06:29 281

原创 《深入理解java虚拟机》

一、走近Java在本章中,我们将学习java虚拟机。二、Java内存区域与内存溢出异常Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。程序计数器程序计数器(Program Counter Register)是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。字节码解释器工作时就是

2021-04-05 12:42:22 213

原创 Java组件(3)——Listener的原理和应用

JavaWeb的三大组件分别是: Servlet 程序、Listener 监听器、Filter 过滤器,我们这篇文章探索Listener底层原理,和使用场景。一、简介监听器用于监听Web应用中某些对象的创建、销毁、增加,修改,删除等动作的发生,然后作出相应的响应处理。Java事件监听器是由事件类和监听接口组成,自定义一个事件前,必须提供一个事件的监听接口以及一个事件类。JAVA中监听接口是继承java.util.EventListener的类,事件类继承java.util.EventObject的类

2021-04-05 04:43:31 748

原创 Java组件(1)——Servlet

一、简介Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。Servlet 架构二、Servlet生命周期Servlet 生命周期可被定义为从创建直到毁灭的整个过程。实例化:在第一次访问或启动tomcat时,tomcat会调用此无参构造方法实例化.

2021-04-05 04:30:37 227

原创 Java组件(2)——Filter的原理和应用

JavaWeb的三大组件分别是: Servlet 程序、Listener 监听器、Filter 过滤器,我们就以三篇文章来一一探索其底层原理,和使用场景。一、简介Filter的基本功能是对Servlet容器调用Servlet(JSP)的过程进行拦截,从而在Servlet处理请求前和Servlet响应请求后实现一些特殊的功能。它的作用主要分两点:拦截请求,过滤响应。针对这两点作用,我们衍生了很多使用场景:过滤关键字、鉴权、拦截资源 日记操作、事务管理、限流二、原理...

2021-04-05 01:25:08 352 2

原创 NoSQL数据库——Redis的经典问题(4)

关联文章NoSQL数据库——简介(1)NoSQL数据库——Redis(2)NoSQL数据库——Redis缓存(3)这篇主要讲redis的7大经典问题一、缓存失效缓存失效就是我们查redis时,找不到数据,这时就只能去DB中找,最后重新写入到缓存,并返回。当我们查询时,能直接在redis中找到,就是命中缓存,所以如何避免缓存批量失效,穿透到 DB,导致的服务器压力倍增呢。缓存失效又有几种情况:1、大面积的缓存key失效失效时间设为base+random,使redis的失

2021-04-04 01:35:15 246 1

原创 NoSQL数据库——Redis缓存(3)

上篇我们讲了非关系型数据库的简介,有兴趣的朋友可以点击链接:NoSQL数据库——简介(1)NoSQL数据库——Redis(2)这篇我们讲讲redis的缓存机制一、持久化机制我们知道redis是一个内存数据库,数据保存在内存中,也容易发生丢失。在了解redis的缓存机制之前,我们先来看看,redis如何确保数据不会丢失。只有我们将数据存储在计算机的内存中时,才能确保数据被写入到磁盘中。而如何确保数据在存储之前,redis不会挂、数据不会丢呢,我们分步来看。不同的节点之间,如何备份、传输

2021-04-03 23:43:10 247

原创 NoSQL数据库——Redis(2)

上篇我们讲了非关系型数据库的简介,有兴趣的朋友可以点击链接:NoSQL数据库——简介(1)这篇我们就详细说说redis是什么。一、Redis简介REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库。Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的

2021-04-03 18:17:56 169

原创 NoSQL数据库——简介(1)

导读:本文主讲讲NoSQL,非关系型数据库的概念和主流NoSQL的对比概念:NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL"。前面的文章讲过,例如MySQL等关系型数据库遵循ACID规则,那什么是非关系型的数据库呢?NoSQL,指的是非关系型的数据库,是对不同于传统的关系型数据库的数据库管理系统的统称。随着互联网的发展,我们的业务对与“读”和“写”的频率差距越来越大,由此诞生了便于迅速查询的非关系型的数据库。CAP定理(CAP theorem)指出,对于一个分布式

2021-04-03 16:43:36 190

原创 MySQL数据库——分库分表和扩容(3)

导读:本文主要介绍数据库的分库分表、中间件和扩容问题MySQL数据库——索引及SQL优化(1)MySQL数据库—事务和锁(2)一、数据库拆分为什么要拆分数据库MySQL等关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。优化索引,优化SQL等方法已经在前文写过了,这里不在赘述。此时就要考虑对其进行切分了,切分的目的就在于减少数据库的负担,缩短查询时间

2021-04-02 22:11:41 724

原创 MySQL数据库—事务和锁(2)

上篇文章我大概讲到了数据库的索引相关知识,有兴趣的朋友可以看看:数据库索引原理及SQL优化这篇会讲讲数据库的锁,有不对的地方欢迎指正。一、锁锁是网络数据库中的一个非常重要的概念,当多个用户同时对数据库并发操作时,会带来数据不一致的问题,所以,锁主要用于多用户环境下保证数据库完整性和一致性。而数据库锁要解决的问题就是:处理并发MySQL数据库由于其自身架构的特点,存在多种数据存储引擎,每种存储引擎所针对的应用场景特点都不太一样,为了满足各自特定应用场景的需求,每种存储引擎的锁定机制都是为各

2021-04-02 19:35:01 134

原创 MySQL数据库——索引及SQL优化(1)

MySql作为天天与我们打交道的朋友,详细探索他的底层原理,对我们日常的开发工作很有帮助。本文从Mysql数据结构开始,逐步分析他的原理和工作中优化使用。

2021-04-02 17:13:08 325

原创 Java的主流加密方式——简介

本文主要为目前的主流加密算法做个简介,每章会详细讲讲每个算法的实现,抛砖引玉,希望有不同看法的朋友积极留言。

2021-03-31 18:52:43 2334 1

原创 阿里云ARMS解决慢SQL导致任务无法重启问题

1、现象执行近100W条Elastic-job任务时,扫描代执行任务耗时5.5秒,数据库socketTimeout设置5S超时,导致超时异常,从而退出任务。2、排查利用阿里云ARMS监控应用1、安装Java探针 开通ARMS,并创建应用。 下载Java探针包并解压。 在Java应用启动脚本中增加-javaagent:/{user.workspace}/ArmsAgent/arms-bootstrap-1.7.0-SNAPSHOT.jar-Darms.licenseK

2021-02-24 14:56:26 366

原创 如何用三行代码搞定leetcode-125.验证回文串

如何用三行代码搞定leetcode-125.验证回文串由于总是写业务,基础都忘得干干净净了,所以先以写业务的思维去刷leetCode。当然,时间和空间肯定惨不忍睹,后面慢慢优化。先看看,leetCode125.验证回文串的需求prd:需要花点时间理解的就是回文串的定义是什么。“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。(摘自百度百科)题目还帮我们简化了难度,去除了符号、中文等干扰项,那么就简单了。只要我们将能够正序和倒序的字符串比较

2020-12-10 14:10:01 81

原创 记录工作中遇到的序列化与反序列化问题

一、背景知识:1、序列化的作用:序列化是一种对象持久化的手段。普遍应用在网络传输、RMI等场景中。如果,我们需要将People对象的属性(name,age,gender),写入到Txt、Excel等文档,或者传递给其他模块使用,那么我们需要用到序列化和反序列化。2、序列化的使用:如果需要标识某对象为可序列化,仅需要继承Serializable接口,同时必须生成序列化UIDserialVersionUID。例如3、使用注意:《阿里巴巴Java开发手册》中有以下强制规定:如..

2020-08-14 18:41:52 251

黑苹果MacOS驱动更新检测工具Kext_Updater_v3.4.8

kext updater 是一款可以更新kext驱动的软件,会检查黑苹果目前的驱动版本。将需要升级的驱动下载到桌面,方便替换。最新版更新工具,加入了大量最新驱动,修复以往bug,提升性能。

2020-05-25

空空如也

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

TA关注的人

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