自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

KHOST的博客

记录自己的学习历程,大部分来自转载,如有侵权联系删除.......

  • 博客(61)
  • 资源 (3)
  • 收藏
  • 关注

原创 Linux shell 逻辑运算符、逻辑表达式详解

shell的逻辑运算符 涉及有以下几种类型,因此只要适当选择,可以解决我们很多复杂的判断,达到事半功倍效果。一、逻辑运算符1、逻辑卷标表示意思1)关于档案与目录的侦测逻辑卷标-f 常用!侦测『档案』是否存在 eg: if [ -f filename ]-d 常用!侦测『目录』是否存在-b 侦测是否为一个『 block 档案』-c 侦测是否为一个『 character 档...

2019-02-28 13:38:01 607

原创 软件开发中的开源协议详解!

开源不等于免费!为了加速我们的开发,我们会使用开源的软件和源码; 为避免商业风险,需要在使用时了解第三方如软件协议,版本,和已知CVE风险等;本文旨在从开源软件再发布过程使用权限的角度入手,总结各个常见开源协议的异同,方便理解。大部分人都希望作品能够被多数人分享查阅。这样不仅提高自己业界的知名度,同时也方便了需要的人为开源做出了贡献。但是代码一旦被贴出来,任何人都可以看到并获取,之后发生的事情...

2019-02-28 13:35:43 606

转载 数据库之分库分表-垂直?水平?

一、数据库瓶颈不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Service来看就是,可用数据库连接少甚至无连接可用。接下来就可以想象了吧(并发量、吞吐量、崩溃)。1、IO瓶颈第一种:磁盘读IO瓶颈,热点数据太多,数据库缓存放不下,每次查询时会产生大量的IO,降低查询速度 -> 分库和垂直分表。第二种:网...

2019-02-28 13:33:49 765

原创 日期工具类,让日期转化不再烦恼

想必程序员在开发过程中,遇到日期转化肯定避免不了的。它让人爱恨不已,而有些又记不住,每次遇到都得问度娘。我最近在开发过程中亦是如此。为了让自己更好的记忆,方便以后遇到日期类型转化相关开发。因此,自己作了适当的整理,编写了一个日期工具类,包括获得今天日期、昨天日期、明天日期、日期和字符串之间转化等相关转化。希望这个日期工具类,也能提高你对日期转化的开发效率。日期工具类:DateT...

2019-02-28 13:24:17 248

原创 Spring Boot 最核心的 25 个注解

Spring Boot 最核心的 25 个注解1、@SpringBootApplication这是 Spring Boot 最最最核心的注解,用在 Spring Boot 主类上,标识这是一个 Spring Boot 应用,用来开启 Spring Boot 的各项能力。其实这个注解就是@SpringBootConfiguration、@EnableAutoConfiguration、...

2019-02-28 13:23:40 291 1

原创 mybatis半自动化解耦

在JAVA发展过程中,涌现出一系列的ORM框架,JPA,Hibernate,Mybatis和Spring jdbc,本系列,将来研究Mybatis。通过研究mybatis源码,可将mybatis的大致架构总结为下图: 根据Mybatis源码,将其抽象为三层:基础支持层,核心处理层和接口层 基础支持层包括:数据源、事务管理、日志、类型转换、缓存、Bind、解析器等 ...

2019-02-28 13:22:31 388

原创 阿里云Redis开发规范

、键值设计1. key名设计 (1)【建议】: 可读性和可管理性 以业务名(或数据库名)为前缀(防止key冲突),用冒号分隔,比如业务名:表名:id 1. ugc:video:1 (2)【建议】:简洁性 保证语义的前提下,控制key的长度,当key较多时,内存占用也不容忽视,例如: user:{uid}:friends:messages:{mid}...

2019-02-28 13:16:22 165

原创 在 Ubuntu 上为用户授予和移除 sudo 权限

如你所知,用户可以在 Ubuntu 系统上使用 sudo 权限执行任何管理任务。在 Linux 机器上创建新用户时,他们无法执行任何管理任务,直到你将其加入sudo组的成员。在这个简短的教程中,我们将介绍如何将普通用户添加到sudo组以及移除给定的权限,使其成为普通用户。在 Linux 上向普通用户授予 sudo 权限通常,我们使用adduser命令创建新用户,如下所示。...

2019-02-28 13:15:36 1891

原创 SOA和微服务架构的区别

微服务架构强调的第一个重点就是业务系统需要彻底的组件化和服务化,原有的单个业务系统会拆分为多个可以独立开发,设计,运行和运维的小应用。这些小应用之间通过服务完成交互和集成。每个小应用从前端web ui,到控制层,逻辑层,数据库访问,数据库都完全是独立的一套。在这里我们不用组件而用小应用这个词更加合适,每个小应用除了完成自身本身的业务功能外,重点就是还需要消费外部其它应用暴露的服务,同时自身也将自身...

2019-02-24 18:10:25 224

原创 Apache-Commons家族的八兄弟(下)

Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动。篇幅很长所以拆分为两篇。 组件 功能介绍 Utility classes 包括一些静态方法来执行常用任务 Input  InputStream 和 Reader 实现 ...

2019-02-22 18:59:22 460

转载 探索HTTP传输中gzip压缩的秘密

我们给某人发送邮件时,我们在传输之前把自己的文件压缩一下,接收方收到文件后再去解压获取文件。这中操作对于我们来说都已经司空见惯。我们压缩文件的目的就是为了把传输文件的体积减小,加快传输速度。我们在 http 传输中开启 gZip的目的也是如此,但是一般文章介绍 gZip 时候总是结合一些服务端配置(nginx)或者构建工具插件(webpack)来说,列出一大堆配置让人看的云里雾里,以至于到最后还没...

2019-02-22 18:59:16 1106

原创 MySQL两千万数据的大表优化解决过程,提供三种解决方案

问题概述使用阿里云rds for MySQL数据库(就是MySQL5.6版本),有个用户上网记录表6个月的数据量近2000万,保留最近一年的数据量达到4000万,查询速度极慢,日常卡死。严重影响业务。问题前提:老系统,当时设计系统的人大概是大学没毕业,表设计和sql语句写的不仅仅是垃圾,简直无法直视。原开发人员都已离职,到我来维护,这就是传说中的维护不了就跑路,然后我就是掉坑的那个!!!...

2019-02-22 18:59:05 999 1

原创 ava并发编程73道面试题及答案

1、在java中守护线程和本地线程区别?java中的线程分为两种:守护线程(Daemon)和用户线程(User)。任何线程都可以设置为守护线程和用户线程,通过方法Thread.setDaemon(bool on);true则把该线程设置为守护线程,反之则为用户线程。Thread.setDaemon()必须在Thread.start()之前调用,否则运行时会抛出异常。两者的区别: 唯一...

2019-02-21 19:04:52 603

原创 MySQL索引优化分析

为什么你写的sql查询慢?为什么你建的索引常失效?通过本章内容,你将学会MySQL性能下降的原因,索引的简介,索引创建的原则,explain命令的使用,以及explain输出字段的意义。助你了解索引,分析索引,使用索引,从而写出更高性能的sql语句。还在等啥子?案例分析我们先简单了解一下非关系型数据库和关系型数据库的区别。MongoDB是NoSQL中的一种。NoSQL的全称是Not o...

2019-02-21 18:59:39 214

转载 接口 API 设计神器

给大家推荐一款接口 API 设计神器,传说中的,牛逼哄洪的 Swagger,它到底是什么?今天为大家揭开谜底!Swagger是什么?官网:https://swagger.io/Swagger 如官网所示,它是最好的 API 构建工具。它是一个围绕 OpenAPI 规范构建的开源工具,它可以帮助我们设计、构建、记录和使用 REST API 接口。Swagger 包含的主要...

2019-02-21 18:54:13 629

原创 消息中间件企业级应用

众所周知,消息中间件是大型分布式系统中不可或缺的重要组件。它使用简单,却解决了不少难题,比如异步处理,系统藕合,流量削锋,分布式事务管理等。实现了一个高性能,高可用,高扩展的系统。本章通过介绍消息中间件的应用场景,消息中间件的传输模式,ActiveMQ快速入门 三个方面来对消息中间件进行入门介绍。还在等什么,赶快来学习吧! 说明:消息中间件非常强大,值得我们认真去学习和使用。完整代码请异...

2019-02-21 18:52:21 262

原创 浅析java内存模型--JMM(Java Memory Model)

在并发编程中,多个线程之间采取什么机制进行通信(信息交换),什么机制进行数据的同步?  在Java语言中,采用的是共享内存模型来实现多线程之间的信息交换和数据同步的。  线程之间通过共享程序公共的状态,通过读-写内存中公共状态的方式来进行隐式的通信。同步指的是程序在控制多个线程之间执行程序的相对顺序的机制,在共享内存模型中,同步是显式的,程序员必须显式指定某个方法/代码块需要在多线程之间互...

2019-02-21 18:49:43 187

转载 resultMap解析完是这样(mybatis源码)

在 select 语句中查询得到的是一张二维表, 水平方向上看是一个个字段, 垂直方向上看是一条条记录。作为面向对象的语言, Java 中的的对象是根据类定义创建的。 类之间的引用关系可以认为是嵌套的关系。在 mybatis 中, resultMap 节点定义了结果集和结果对象(JavaBean)之间的映射规则。本文主要讲解的是 resultMap 的解析。两个基础类在阅读本文之前...

2019-02-21 18:45:53 564

转载 鸟瞰 Java 中的并发框架

1. 为什么要写这篇文章 几年前 NoSQL 开始流行的时候,像其他团队一样,我们的团队也热衷于令人兴奋的新东西,并且计划替换一个应用程序的数据库。 但是,当深入实现细节时,我们想起了一位智者曾经说过的话:“细节决定成败”。最终我们意识到 NoSQL 不是解决所有问题的银弹,而 NoSQL vs RDMS 的答案是:“视情况而定”。  类似地,去年RxJava 和 Spring R...

2019-02-21 18:41:32 299

原创 架构师必须掌握的七大知识点!

不想当将军的兵不是好兵,就程序猿不想当架构师就不是好的程序员! Java架构师主要需要做哪些工作呢? 1、负责设计和搭建软件系统架构(平台、数据库、接口和应用架构等),解决开发中各种系统架构问题。2、优化现有系统的性能,解决软件系统平台关键技术问题攻关、核心功能模块设计、核心代码开发。3、在项目需求不断细化的工程中校正整体的架构设计,以及详细模块拆分设计。4、营造技术学...

2019-02-21 18:38:03 9305 1

原创 几个面试官常问的Shell脚本编写

注意事项 1)开头加解释器:#!/bin/bash 2)语法缩进,使用四个空格;多加注释说明。 3)命名建议规则:变量名大写、局部变量小写,函数名小写,名字体现出实际作用。 4)默认变量是全局的,在函数中变量local指定为局部变量,避免污染其他作用域。 5)有两个命令能帮助我调试脚本:set -e 遇到执行非0时退出脚本,set-x 打印执行过程。  ...

2019-02-21 18:35:52 1109

原创 Redis 快速入门

谈到Redis,大家应该都不陌生。它是用c语言开发的一个高性能键值数据库,主要用于缓存领域。本章通过: Redis的安装 Redis的五大数据类型 Redis的Java客户端 Redis与Spring 的整合 来让读者对它有一个初步的了解。下一章再通过介绍配置文件来搭建Redis的主从模式和集群模式(配置大于编程,先从简单的编程入手)。效果图:...

2019-02-21 18:32:23 178

原创 Java中的volatile

内存可见性  volatile是Java提供的一种轻量级的同步机制,在并发编程中,它也扮演着比较重要的角色。同synchronized相比(synchronized通常称为重量级锁),volatile更轻量级,相比使用synchronized所带来的庞大开销,倘若能恰当的合理的使用volatile,自然是美事一桩。  为了能比较清晰彻底的理解volatile,我们一步一步来分析。首先来看看...

2019-02-19 10:32:23 129

原创 高并发编程知识体系

1.问题 什么是线程的交互方式? 如何区分线程的同步/异步,阻塞/非阻塞? 什么是线程安全,如何做到线程安全? 如何区分并发模型? 何谓响应式编程? 操作系统如何调度多线程? 2.关键词同步,异步,阻塞,非阻塞,并行,并发,临界区,竞争条件,指令重排,锁,amdahl,gustafson3.全文概要上一篇我们介绍分布式系统的知...

2019-02-19 10:31:11 215

原创 秒杀系统必须考虑的 3 个技术问题!

1、并发队列的选择Java的并发包提供了三个常用的并发队列实现,分别是:ArrayBlockingQueue、ConcurrentLinkedQueue 和 LinkedBlockingQueue 。ArrayBlockingQueue是初始容量固定的阻塞队列,我们可以用来作为数据库模块成功竞拍的队列,比如有10个商品,那么我们就设定一个10大小的数组队列。ConcurrentLink...

2019-02-19 10:23:58 1543 1

原创 MyBatis动态SQL

MyBatis 令人喜欢的一大特性就是动态 SQL。 在使用 JDBC 的过程中, 根据条件进行 SQL 的拼接是很麻烦且很容易出错的。 MyBatis 动态 SQL 的出现, 解决了这个麻烦。MyBatis通过 OGNL 来进行动态 SQL 的使用的。目前, 动态 SQL 支持以下几种标签:1 数据准备为了后面的演示, 创建了一个 Maven 项目 mybatis-dynamic...

2019-02-19 10:21:57 418

原创 深入学习MySQL事务:ACID特性的实现原理

事务是MySQL等关系型数据库区别于NoSQL的重要方面,是保证数据一致性的重要手段。本文将首先介绍MySQL事务相关的基础概念,然后介绍事务的ACID特性,并分析其实现原理。 MySQL博大精深,文章疏漏之处在所难免,欢迎批评指正。一、基础概念 事务(Transaction)是访问和更新数据库的程序执行单元;事务中可能包含一个或多个sql语句,这些语句要么都执行,要么都不执行...

2019-02-18 15:17:22 264

原创 网络安全 数据库 MySQL 安全规范

在生产中,安全是相当重要,毕竟你的核心数据都在里面,MySQL因为其开源的流行性,大量个人,企业,政府单位采用,但是,很多部署的时候采用都是默认的配置,这就导致了安全的相对欠缺,你需要针对你的安全有所加强。总的来说,数据库一般划分为生产库,压测库,准生产库,测试库,开发库。下面部分主要说的是生产库,但其他库也适用。1 mysql_secure_installation这是数据库基础的安...

2019-02-18 15:10:29 1235

原创 利用策略模式优化过多 if else 代码

前言本次来一点实际开发中会用到的小技巧。比如平时大家是否都会写类似这样的代码:  if(a){    //dosomething }else if(b){    //doshomething }else if(c){    //doshomething } else{    ////doshomething...

2019-02-18 15:09:48 381

原创 ArrayList源码分析&手写ArrayList

注:本文所有方法和示例基于jdk1.8简介ArrayList是我们开发中非常常用的数据存储容器之一,其底层是数组实现的,我们可以在集合中存储任意类型的数据,ArrayList是线程不安全的,非常适合用于对元素进行查找,效率非常高。线程安全性对ArrayList的操作一般分为两个步骤,改变位置(size)和操作元素(e)。所以这个过程在多线程的环境下是不能保证具有原子性的,因此A...

2019-02-18 15:06:58 758

原创 Springboot-Redis分布式锁

随着现在分布式架构越来越盛行,在很多场景下需要使用到分布式锁。分布式锁的实现有很多种,比如基于数据库、 zookeeper 等,本文主要介绍使用 Redis 做分布式锁的方式,并封装成spring boot starter,方便使用一. Redis 分布式锁的实现以及存在的问题锁是针对某个资源,保证其访问的互斥性,在实际使用当中,这个资源一般是一个字符串。使用 Redis 实现锁,主要...

2019-02-18 15:05:03 1205 1

转载 分布式架构知识体系

1.问题 何为分布式何为微服务? 为什么需要分布式? 分布式核心理论基础,节点、网络、时间、顺序,一致性? 分布式是系统有哪些设计模式? 分布式有哪些类型? 如何实现分布式? 2.关键词节点,时间,一致性,CAP,ACID,BASE,P2P,机器伸缩,网络变更,负载均衡,限流,鉴权,服务发现,服务编排,降级,熔断,幂等,分库分表,分片...

2019-02-18 15:04:16 189

转载 有参考价值:中小型团队架构落地实践18篇,含案例、代码

来源:InfoQ技术社区公众号作者|张辉清    编辑|小智社区里不是缺少架构图,而是缺少确实可参考的架构落地实践。大公司的架构看上去总是不明觉厉,但真要借鉴时却往往无从下手。也许,中小型研发团队的架构实践才是可供复制的?本文是张辉清专栏——《中小研发团队架构实践》的开篇之作,本系列将有 18 篇诚意之作,以飨读者。1写在前面中小型研发团队很多,而社区在中小型研发团队架构实践方...

2019-02-18 14:58:25 372

原创 LinkedList源码分析

注:本文所有方法和示例基于jdk1.8概述LinkedList是一种可以在任何位置进行高效地插入和移除操作的有序序列,它是基于双向链表实现的,是线程不安全的,允许元素为null的双向链表。源码分析1. 变量/** * 集合元素数量 **/transient int size = 0;/** * 指向第一个节点的指针 * Invariant: (first...

2019-02-18 14:53:30 176

原创 设计一个良好的接口

在设计接口时,有很多因素要考虑,如接口的业务定位,接口的安全性,接口的可扩展性、接口的稳定性、接口的跨域性、接口的协议规则、接口的路径规则、接口单一原则、接口过滤和接口组合等诸多因素,本篇文章将简要分析这些因素。一 规范性建议1.职责原则在设计接口时,必须明确接口的职责,即接口类型,接口应解决什么业务问题等2.单一性原则在明确接口职责的条件下,尽量做到接口单一,即一个接口只做一...

2019-02-15 18:53:04 291

原创 spring面试题和答案

Spring 概述1. 什么是spring?Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。2. 使用Spring框架的好处是什么?轻量:Spring 是轻量的,基本的版本大约2MB。控制...

2019-02-15 13:38:56 195

转载 安全工具系列 -- 信息收集

信息收集概述信息收集一般都是渗透测试前期用来收集,为了测试目标网站,不得不进行各种信息收集。信息收集要根据不同目标进行不同方向收集,工具部分会在下节课程进行讲解,根据个人渗透测试经验总结文章。本文只是抛砖引玉,希望可以给大家一个好的思路。如果文章中有环境搭建部分,靶场后续会在公众号中发布。视频在关注公众号以后,回复我要视频,管理员会在最快时间进行回复。首先公开上一节中一张图,开始今天主题讲...

2019-02-15 11:47:18 1498 2

原创 Spring Cloud Zuul路由动态配置

目录 Zuul配置 在mysql中创建路由信息表 定义CustomRouteLocator类 增加CustomZuulConfig类,主要是为了配置CustomRouteLocator RefreshRouteService类,用于实现数据库路由信息的刷新 当然也要提供RefreshController,提供从浏览器访问的刷新功能 ...

2019-02-15 11:46:25 1111 3

原创 分布式系统事务一致性

一 分布式系统特点现今互联网界,分布式系统和微服务架构盛行。业界著名的CAP理论也告诉我们,在设计和实现一个分布式系统时,需要将数据一致性、系统可用性和分区容忍性放在一起考虑。1、CAP理论在分布式系统中,一致性(Consistency)、可用性(Availability)和分区容忍性(Partition Tolerance)3 个要素最多只能同时满足两个,不可兼得。其中,分区容忍性又...

2019-02-15 11:44:12 469 2

原创 重构代码

狗屎一样的代码如何重构?重构不止是代码整理,它提供了一种高效且受控的代码整理技术。(一)重构原则1、何谓重构对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。另一种解释是:使用一系列重构手法,在不改变软件可观察行为的前提下,调整其结构。2、为何重构改进软件设计:如果没有重构,程序的设计会逐渐变质,重构很像是在整理代码,你所做...

2019-02-15 11:40:39 1222

winSCPPortable交互

十分好用的文件上传下载工具,在与自己的服务器交互的时候可以用这个软件进行文件互传,不管时win下的还是Linux下的都十分方便

2018-07-03

pdf阅读器_福昕

东西好用,体积小巧,使用方便,插座简单,打开快速.........................................................

2018-07-03

FSCapture.rar

可以截图录屏取色,像素尺,体积小巧功能强大携带方便........

2018-07-03

空空如也

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

TA关注的人

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