5 Kellan_Song

尚未进行身份认证

就是一名为生活而艰苦拼搏的程序员。

等级
TA的排名 10w+

MySQL的读写分离

场景当网站或者APP用户达到一定数量,后端服务的请求越来越多;当出现高并发请求时,为了提升API请求访问时长,一般会将数据库做读写分离(一般的网站和APP,都是读操作远大于写操作),一个主数据库挂着多个从数据库,主数据库只用作写操作;读操作放在多个从数据库中执行。常遇问题如何实现数据库的读写分离?MySQL主从复制的原理是什么?如何解决MySQL主从复制的延时问题?数据库配置...

2019-09-12 11:24:19

数据库常用的隔离级别

数据库常用的隔离级别四大特性任何支持事务的数据库,都必然具备四大特性ACID:原子性(Atomicity):说的是一个事物内所有操作共同组成一个原子包,要么全部成功,要么全部失败。这是最基本的特性,保证了因为一些其他因素导致数据库异常,或者宕机。一致性(Consistency):在基于原子性的前提下,保证双方数据的一致性;因为原子性保证的只是双方的操作是一致的,但在操作存在事务与时延;一...

2019-09-06 13:32:54

Java集合与Map的实现原理

集合关系图Collection集合共有的父类接口,包含集合的共性方法:add、remove、Iterator、contains、clear…迭代器Iterator它的作用是将各种不同集合的“判断”与“取出”操作封装成一个对象。每种集合都可以使用迭代器Iterator的hasNext/next/remove来判断和取出集合中的对象。List元素是有序的,并且可以重复;该集合有索引。...

2019-09-02 11:04:46

JAVA基础笔试题

Java经常遇见的笔试题8个基本类型及其占用字节(1字节=8位)类型占用字节byte1short2int4long8float4double8char2boolean1abstract与interface的区别:两者都是抽象类,都不能实例化;interface更多的强调功能的实现;而abstr...

2019-08-20 19:24:16

FastDFS学习(三)—— SpringBoot集成FastDFS

相关依赖<!--https://mvnrepository.com/artifact/net.oschina.zcx7878/fastdfs-client-java--><dependency><groupId>net.oschina.zcx7878</groupId><artifactId>fastdfs-cli...

2019-08-06 15:57:53

FastDFS学习(二)—— 安装与配置

下载与安装下载安装libfastcommon简介:libfastcommon是一款开源的C基础库,她是从FastDFS项目中剥离出来的C基础库。这个库非常简单稳定。函数包括:字符串,记录器,链,散列,套接字,ini文件读取器,base64编码/解码,url编码/解码,快速定时器,skiplist,对象池等详细信息请看c头文件。//下载wgethttps://github.com/h...

2019-08-06 15:53:32

FastDFS学习(一)—— 简介

简介概述分布式文件系统:Distributedfilesystem,DFS,又叫做网络文件系统:NetworkFileSystem。一种允许文件通过网络在多台主机上分享的文件系统,可让多机器上的多用户分享文件和存储空间。FastDFS是用c语言编写的一款开源的分布式文件系统,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,功能包括:文件存储、文件同步、文件...

2019-08-06 15:45:44

Spring Boot中拦截器中使用@Value无效

场景在使用SpringBoot框架时,很经常会使用到拦截器。可是,有时候我们会遇到在拦截器使用@Value注解来获取配置文件中的配置参数获取失败,一直都是为null的情况。以往以往的配置如下:/***添加拦截器配置*@authorKellan_Song*@createTime2018年3月27日*/@ConfigurationpublicclassInt...

2019-08-01 09:48:11

MyBatis中使用PageHelper分页工具

MyBatis中使用PageHelper分页工具场景使用MyBatis进行数据库查询,当数据量大时,一般都需要分页查询;这时可以自己手写sql语句,传入当前页pageNum和每页数量pageSize,自己封装ResultMap。但这样做非常麻烦,特别是开发需求多的时候,这样的操作显然有点累赘。这时候就可以使用一个非常好用的MyBatis分页工具PageHelper。环境本次示例使用的...

2019-07-31 15:22:01

MyBatis逆向工程generatorConfig.xml配置文件

MyBatis逆向工程generatorConfig.xml配置文件直接上代码<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEgeneratorConfigurationPUBLIC"-//mybatis.org//DTDMyBatisGeneratorConfiguration1.0//EN"...

2019-07-31 10:44:02

macOS 10.14 系统下 安装Parallels Desktop闪退解决方式

许多系统版本是macOSMojave10.14以上的小伙伴就头疼了,因为ParallelsDesktop14.1.1版本在该系统版本上无法正常打开安装,会闪退,那么就不能用了吗?别着急,下面佐佐就告诉大家该软件在新系统下的安装方法。ParallelsDesktop下载链接:https://xclient.info/s/parallels-desktop.html1打开终端...

2019-06-22 14:53:39

Java多线程学习:CyclicBarrier(栅栏)

简介:可以在某处设定一个await事件,该事件就相当于一个栅栏一样拦截住线程,直到所有参与的线程汇集后才打开栅栏让所有线程继续往下执行;应用实例:publicclassCyclicBarrierTest{//自定义工作线程privatestaticclassWorkerextendsThread{privateCyclicBarriercyc...

2019-05-25 16:55:17

Java多线程学习:CountDownLatch(闭锁)

介绍:CountDownLatch这个类是在Java1.5时引入的,其作用是允许一个线程等待其他线程完成各自的工作后执行;例如:主线程执行到某处,并发生成3个子线程,这时主线程希望3个子线程都完成的情况下才往下执行,就需要使用CountDownLatch这个类了。原理:通过一个计数器来实现,这个计数器的初始化为线程的数量,当一个线程执行完之后,计数器-1,直到等于0时,表示所有线程执行完成...

2019-05-25 16:53:01

Java多线程学习:常用概念

MESI协议MESI协议保证了每个缓存中使用的共享变成的副本是一致的。它的核心思想是:当CPU写入数据时,如果发现操作的变量是共享变量,即在其他CPU中也存在该变量的副本,会发出信号通知其他CPU将该变量的缓存行值为无效状态,因此当其他CPU需要读取这个变量时,发现自己缓存中缓存的该变量是无效的,那么它就会从内存中重新读取最新的数据。核心概念并发编程中的三个核心概念:原子性,可见性,有序性...

2019-05-25 16:46:32

当Java服务出现CPU占用过大时,如何定位问题?

问题:在运行Java服务时,时常与遇到CPU过大,程序卡死的情况;以下方式可以通过JVM排查定位发生错误的代码:Linux环境:1、top命令,查询占用cpu过大的服务ID(pid)2、ps-mp{pid}-oTHREAD,tid,time|sort-rn查询服务中各线程占用情况,获取线程tid3、printf“%x\n”tid将线程ID转成16进制4...

2019-04-26 16:09:56

Java多线程学习:子线程中无法使用Spring的依赖注入

在实现Java多线程的时候,发现使用@Autowired或者@Resource依赖注入的类都会报空指针异常(NullPointerException)。原因:spring的声明周期,在工程启动时,并不会检测到线程类中的bean对其进行管理和注入;解决方法:1、手动管理privateUserDaouserDao=newUserDaoImpl();如果是使用这种方式,缺点是每一...

2019-04-20 17:17:21

使用AOP实现API访问日志

前言在项目开发过程中,我们经过会遇到各种各样的问题,我们会尽可能地做很多记录,以便事后对错误进行复查。一些通常的手段就是使用Log文件保存每天的后台请求日志。为了方便排查和做到可视化操作,楼主今日通过学习SpringAOP后,引用AOP实现记录每次API访问日志。该日志主要记录每次访问API成功的请求,配合错误日志拦截器SystemExceptionHandler,就可以对每一次请求做日志管...

2019-04-04 18:03:21

MQTT学习(三):EMQ消息代理

官方简介:官方文档EMQX(Erlang/Enterprise/ElasticMQTTBroker)是基于Erlang/OTP平台开发的开源物联网MQTT消息服务器。Erlang/OTP是出色的软实时(Soft-Realtime)、低延时(Low-Latency)、分布式(Distributed)的语言平台。MQTT是轻量的(Lightweight)、发布订阅模式(Pu...

2019-03-29 13:43:26

MQTT学习(二):mosquitto消息代理

介绍mosquitto是一款实现了消息推送协议MQTTv3.1的开源消息代理软件,提供轻量级的,支持可发布/可订阅的的消息推送模式,使设备对设备之间的短消息通信变得简单,比如现在应用广泛的低功耗传感器,手机、嵌入式计算机、微型控制器等移动设备。一个典型的应用案例就是AndyStanford-ClarkMosquitto(MQTT协议创始人之一)在家中实现的远程监控和自动化。并在Og...

2019-03-27 15:43:34

MQTT学习(一):介绍

背景:随着时代的发展,物联网(InternetofThings,IoT)这个词出现的频率越来越高。以往互联网的请求/回答(Request/Response)的沟通模式,已经不再适合物与物之间(MachinetoMachine,M2M)的大规模沟通机制;取而代之的是发布/订阅(Publish/Subscribe)模式。这就是轻量级、可扩展的MQTT(MessageQueuingTel...

2019-03-26 19:51:00

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。