个人博客


人必须忠于自己乔伊不能违背自己的本性,带着杀戮活下去很艰难,这条路没有退路,是对是错你都得背负,直至一生。现在快回去找你妈妈,告诉她一切都好,山谷里再也不会有枪声了

Linux IO模式及 select、poll、epoll详解

同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的。所以先限定一下本文的上下文。

Linux IO模式及 select、poll、epoll详解 同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的。所以先限定一下本文的上下文。 本文讨论的背景是Linux环境下的network IO。 一...

认识TCP端口与socket

TCP服务器端口数,最大连接数以及MaxUserPort的关系辨真

关于TCP服务器最大并发连接数有一种误解就是“因为端口号上限为65535,所以TCP服务器理论上的可承载的最大并发连接数也是65535”。 先说结论:对于TCP服务端进程来说,他可以同时连接的客户端数量并不受限于可用端口号。并发连接数受限于linux可打开文件数,这个数是...

MySql Sql优化原则

MySql Sql优化原则

1、应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。 2、对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 3、应尽量避免在 where 子句中对字段进行 n...

数据库事务和锁

什么是事务(Transaction)? 是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化...

架构学习计划

不管是开发、测试、运维,每个技术人员心里都有一个成为技术大牛的梦,毕竟“梦想总是要有的,万一实现了呢”!正是对技术梦的追求,促使我们不断地努力和提升自己。

不管是开发、测试、运维,每个技术人员心里都有一个成为技术大牛的梦,毕竟“梦想总是要有的,万一实现了呢”!正是对技术梦的追求,促使我们不断地努力和提升自己。 然而“梦想是美好的,现实却是残酷的”,很多同学在实际工作后就会发现,梦想是成为大牛,但做的事情看起来跟大牛都不沾边,...

架构设计的发展变化史

目前国内盛行分布式与微服务结构设计,大小公司、电商、物联网等行业都是紧随这些概念在开展项目开发和运营,据我日前和一些架构师朋友讨论过程中发现不但大多公司没有把整体的方案落地,有些架构师甚至都不知道为什么采用这一系列的服务就开始了开发工作,这对软件行业来说是非常危险的。

目前国内盛行分布式与微服务结构设计,大小公司、电商、物联网等行业都是紧随这些概念在开展项目开发和运营,据我日前和一些架构师朋友讨论过程中发现不但大多公司没有把整体的方案落地,有些架构师甚至都不知道为什么采用这一系列的服务就开始了开发工作,这对软件行业来说是非常危险的。 谈...

Redis高可用-哨兵模式

在同一主机上部署redis主从哨兵模式 一、Redis主从配置 端口:7000~7003,一主三从: 7000(主) port 7000 bind 127.0.0.1 daemonize yes pidfile "./pid/redis_7000.pid" appen...

深入了解Redis内存模型及优化

Redis 是目前最火爆的内存数据库之一,通过在内存中读写数据,大大提高了读写速度,可以说 Redis 是实现网站高并发不可或缺的一部分。

一、Redis内存统计 工欲善其事必先利其器,在说明Redis内存之前首先说明如何统计Redis使用内存的情况。 在客户端通过redis-cli连接服务器后(后面如无特殊说明,客户端一律使用redis-cli),通过info命令可以查看内存使用情况: info memor...

Redis持久化策略

Redis是一种高级key-value数据库。它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富。有字符串,链表,集 合和有序集合。

1、前言 Redis是一种高级key-value数据库。它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富。有字符串,链表,集 合和有序集合。支持在服务器端计算集合的并,交和补集(difference)等,还支持多种排序功能。所以Redis也可以被看成...

Redis集群

本文主要介绍redis在不同模式下的部署方式,并且对几种模式进行了一些简单的对比。

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 本文主要介绍redis在不同模式下的部署方式,并且对几种模式进行了一些简单的对比。 下表列出了当前使用较多的redis部署方式: 通过上表比较可知:如果需要完整...

分布式事务及解决方案

分布式事务是企业集成中的一个技术难点,也是每一个分布式系统架构中都会涉及到的一个东西,特别是在微服务架构中,几乎可以说是无法避免,本文就分布式事务来简单聊一下。

前言 分布式事务是企业集成中的一个技术难点,也是每一个分布式系统架构中都会涉及到的一个东西,特别是在微服务架构中,几乎可以说是无法避免,本文就分布式事务来简单聊一下。 数据库事务 在说分布式事务之前,我们先从数据库事务说起。 数据库事务可能大家都很熟悉,在开发过程中也会...

Spring的ApplicationEvent的使用

Spring 3.0中提供了很多类似*Aware的类,其中ApplicationContextAware接口可以实现我们在初始化bean的时候给bean注入ApplicationConxt(Spring上下文对象)对象。

Spring 3.0中提供了很多类似*Aware的类,其中ApplicationContextAware接口可以实现我们在初始化bean的时候给bean注入ApplicationConxt(Spring上下文对象)对象。ApplicationContextAware接口提供...

定位java进程中最消耗cpu线程,并定位问题代码

系统cpu使用率过高,java进程占用单核cpu一直保持在100%上下,原因排除

场景 系统cpu使用率过高,java进程占用单核cpu一直保持在100%上下 问题排查 1. top命令查看系统资源使用情 可以看到进程ID:33026的java进程占用cpu最多,基本霸占了一个cpu核心。 2. 继续top查看一下33026这个进程的子进程...

java读取资源文件,路径定位

java读取资源文件,路径定位

public class Loader { public static void main(String[] args) throws IOException { String path = Thread.currentThread().getContextClas...

protocol buffer在java中的使用

protocol buffer在java中的使用

protocol buffer与其他几项序列化方案对比 windows安装protocol buffer编译器protoc 编译器下载地址: https://github.com/google/protobuf/releases 1. 下载protoc-x....

Linux常用shell命令汇总

Linux常用shell命令汇总

系统 #查看系统版本 cat /etc/issue #查看操作系统版本 head -n 1 /etc/issue # 查看内核 cat /proc/version # 查看内核/操作系统/CPU信息 uname -a # 查看CPU信息 cat /pro...

java 解释器与JIT编译器

但是如今的HotSpot VM中不仅内置有解释器,还内置有先进的JIT(Just In Time Compiler)编译器,在Java虚拟机运行时,解释器和即时编译器能够相互协作,各自取长补短

早在Java1.0版本的时候,Sun公司发布了一款名为Sun Classic VM的Java虚拟机,它同时也是世界上第一款商用Java虚拟机,在当时这款虚拟机内部只提供解释器,用今天的眼光来看待必然是效率低下的,因为如果Java虚拟机只能够在运行时对代码采用逐行解释执行,程...

Protocol Buffer介绍

在计算机操作系统中,轻量级进程(LWP)是一种实现多任务的方法

该系列Blog的内容主体主要源自于Protocol Buffer的官方文档,而代码示例则抽取于当前正在开发的一个公司内部项目的Demo。这样做的目的主要在于不仅可以保持Google文档的良好风格和系统性,同时再结合一些比较实用和通用的用例,这样就更加便于公司内部的培训,以及...

Spring-Boot整合jsp

虽然Spring-Boot整合jsp是个简单的事,但自己确实踩了几下坑,记下来吧!总觉得spring的东西用熟了顺手,初期不熟时项目部署起来都各种心酸。

spring-boot官方不推荐使用jsp,自己项目中也没用到,但作为学习,还是想尝试下用spring-boot整合jsp,中间踩了很多坑,还是记录下吧。 配置pom.xml文件 <dependencyManagement> <depen...

通过Spring-Boot构建web工程

使用 Spring Boot ,你不需要提供相关依赖的版本,Spring Boot 会自动对其进行管理。当你进行系统升级的时候,只需要修改Spring Boot 的版本号就行了,Spring Boot 会自动对其他的依赖进行升级。当然,你也可以根据具体的需要,指定依赖版本来覆盖Spring Boot 的推荐的依赖版本。

系统构建 为了便于依赖管理,官方建议我们使用Maven或者Gradle,以便进行依赖管理。当然,Spring Boot 也支持其他系统构建方式(如Ant)。 使用 Spring Boot ,你不需要提供相关依赖的版本,Spring Boot 会自动对其进行管理。当你进行...

Linux轻量级进程

在计算机操作系统中,轻量级进程(LWP)是一种实现多任务的方法

  在计算机操作系统中,轻量级进程(LWP)是一种实现多任务的方法。与普通进程相比,LWP与其他进程共享所有(或大部分)它的逻辑地址空间和系统资源;与线程相比,LWP有它自己的进程标识符,优先级,状态,以及栈和局部存储区,并和其他进程有着父子关系;这是和类Unix操作系统的...

Linux用户及用户组管理

无论是出于 Linux 本身的多用户多任务分时操作系统的性质,还是出于系统安全的考虑, Linux 用户和用户组都是这个系统最重要的几块拼图之一。无论是日常使用,还是作为服务器来应用 Linux ,创建合适的用户、组别,赋予相应的权限,是基本的使用技巧。

概述 Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。 用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件...

OutOfMemoryError详解

我们都知道JVM的内存管理是自动化的,Java语言的程序指针也不需要开发人员手工释放, JVM的GC会自动的进行回收,但是,如果编程不当,JVM仍然会发生内存泄露,导致Java程 序产生了OutOfMemoryError(OOM)错误。

我们都知道JVM的内存管理是自动化的,Java语言的程序指针也不需要开发人员手工释放,JVM的GC会自动的进行回收,但是,如果编程不当,JVM仍然会发生内存泄露,导致Java程序产生了OutOfMemoryError(OOM)错误。 产生OutOfMemoryError错...

Mysql授权远程登录

报错:1130-host … is not allowed to connect to this MySql server

报错:1130-host … is not allowed to connect to this MySql server 解决方法: 1. 改表法 可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后...