- 博客(45)
- 收藏
- 关注
原创 【方案】千万级、上亿级流量的处理
问题业务急剧增长怎么处理?系统怎么支撑高并发的?如何设计一个高并发系统?高并发系统特点?面对超高的并发,首先硬件层面机器要能扛得住,其次架构设计做好微服务的拆分,代码层面各种缓存、削峰、解耦等等问题要处理好,数据库层面做好读写分离、分库分表,稳定性方面要保证有监控,熔断限流降级该有的必须要有,发生问题能及时发现处理。这样从整个系统设计方面就会有一个初步的概念。架构在互联网早期的时候,单体架构就足以支撑起日常的业务需求,大家的所有业务服务都在一个项目里,部署在一台物理机器上。所有的业务包括你的交
2020-11-13 10:10:41
315
原创 【SQL优化】高质量SQL的建议
查询 SQL 尽量不要使用 select *,而是 select 具体字段反例子:select * from employee;正例子:select id,name from employee;理由如下:只取需要的字段,节省资源、减少网络开销。select * 进行查询时,很可能就不会使用到覆盖索引了,就会造成回表查询。如果知道查询结果只有一条或者只要最大/最小一条记录,建议用 l...
2020-03-31 22:20:05
832
原创 Java8新特性——stream表达
Java 8 StreamJava 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。–Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。–Stream API可以极大提高Java程序员的生产力,让程序员写出高效率、干净、简洁的代码。–这种风格将要处理的元素集合看作一种流, 流在管道中传输,...
2020-03-20 09:21:31
229
原创 【算法】排序算法之基数排序
概念基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数。比较基数排序 vs 计数排序 vs 桶排序基数排序有两种方法:这三种排序算法都利用了桶的概念,但对桶的使用方法上有明显差异:基数排序:根据键值的每位数字来分配桶;计数排序:每个桶只存储单...
2020-01-10 09:41:42
138
原创 【算法】排序算法之桶排序
概念桶排序是计数排序的升级版。它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。为了使桶排序更加高效,我们需要做到这两点:在额外空间充足的情况下,尽量增大桶的数量;使用的映射函数能够将输入的 N 个数据均匀的分配到 K 个桶中;同时,对于桶中元素的排序,选择何种比较排序算法对于性能的影响至关重要。1、什么时候最快当输入的数据可以均匀的分配到每一个桶中。2、什么时候最...
2020-01-09 09:54:37
159
原创 【算法】排序算法之计数排序
概念计数排序的核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。图片演示Java 代码实现/** * @ClassName: Test9 * @Description: 计数排序 * @Author: wangjie * @Date: 2020/1/8 9:09 * @Phone: 123 *...
2020-01-08 09:13:49
192
原创 【算法】排序算法之堆排序
概念堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆排序可以说是一种利用堆的概念来排序的选择排序。分为两种方法:大顶堆:每个节点的值都大于或等于其子节点的值,在堆排序算法中用于升序排列;小顶堆:每个节点的值都小于或等于其子节点的值,在堆排序算法中用于降序排列;堆...
2020-01-06 10:51:54
91
原创 【算法】排序算法之快速排序
概念快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要 Ο(nlogn) 次比较。在最坏状况下则需要 Ο(n2) 次比较,但这种状况并不常见。事实上,快速排序通常明显比其他 Ο(nlogn) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。快速排序使用分治法(Divide and conquer)策略来把一个串行(list)...
2020-01-02 10:04:05
186
2
原创 【算法】排序算法之归并排序
概念归并排序(Merge sort)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。作为一种典型的分而治之思想的算法应用,归并排序的实现由两种方法:自上而下的递归(所有递归的方法都可以用迭代重写,所以就有了第 2 种方法);自下而上的迭代;引用在《数据结构与算法 JavaScript 描述》中,作者给出了自下而...
2019-12-30 10:07:59
144
原创 【算法】排序算法之希尔排序
概念希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。改进希尔排序是基于插入排序的以下两点性质而提出改进方法的:插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率;但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位;希尔排序的基本思想是:先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待...
2019-12-29 22:21:54
92
原创 【算法】排序算法之插入排序
概念插入排序的代码实现虽然没有冒泡排序和选择排序那么简单粗暴,但它的原理应该是最容易理解的了,因为只要打过扑克牌的人都应该能够秒懂。插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序和冒泡排序一样,也有一种优化算法,叫做拆半插入。算法步骤将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一...
2019-12-27 09:44:00
117
转载 【算法】排序算法之选择排序
概念选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。算法步骤首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。重复第二步,直到所有元素均排序完毕。动图演示Java 代码实...
2019-12-25 09:56:07
63
原创 【算法】排序算法之冒泡排序
概念冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。作为最简单的排序算法之一,冒泡排序给我的感觉就像 Abandon 在单词书里出现的感觉一样,每次都在第一页...
2019-12-25 09:25:07
112
原创 【算法】排序算法之前言
前言开坑算法,每节一种算法详解,首先完成排序算法部分;主要针对常见的10种排序算法的详解:分类十种常见排序算法可以分为两大类:**比较类排序:**通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。**非比较类排序:**不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序...
2019-12-24 09:22:51
115
原创 SpringBoot 事务管理 常见问题
tip:使用某开源框架SpringBoot启动器新建的Spring Boot项目中,一般都会引用spring-boot-starter或者spring-boot-starter-web,而这两个起步依赖中都已经包含了对于spring-boot-starter-jdbc或spring-boot-starter-data-jpa的依赖。当使用了这两个依赖的时候,框架会自动默认分别注入DataSo...
2019-12-20 11:10:52
430
原创 快速了解Log4J
参考:https://www.iteye.com/blog/liuzhijun-1746571Log4J的三个组件:Logger:日志记录器,负责收集处理日志记录 (如何处理日志)Appender:日志输出目的地,负责日志的输出 (输出到什么 地方)Layout:日志格式化,负责对输出的日志格式化(以什么形式展现)1、Logger:logger可以有选择的启动和禁用日志的输...
2019-12-19 20:15:18
111
原创 idea报Checks autowiring problems in a bean class.错误
Checks autowiring problems in a bean class.service需要加@service注解dao需要加@repository注解
2019-12-18 13:28:25
393
原创 DockerFlie关键字详解
简介在Docker中创建镜像最常用的方式,就是使用Dockerfile。Dockerfile是一个Docker镜像的描述文件,我们可以理解成火箭发射的A、B、C、D…的步骤。Dockerfile其内部包含了一条条的指令,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。Dockerfile一个Dockerfile的示例如下所示#基于centos镜像FROM cento...
2019-12-18 13:27:46
153
原创 redis持久化的类型,RDB及AOF简介
问:redis持久化有几种类型,区别提供2种持久化方式:1、RDB(Redis DataBase)2、AOF(Append Of File)RDB在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的snapshot快照,它恢复时将快照文件直接读到内存里AOF...
2019-11-08 00:42:13
99
原创 分布式系统中的消息队列
问题问:在分布式系统中是如何处理高并发的?由于在高并发的环境下,来不及处理用户发送的请求,则会导致请求发生阻塞,比如说,大量的insert、update之类的请求同时到达数据库,直接导致无数的行锁、表锁,甚至会导致请求堆积,从而触发太多连接错误,使用消息队列可以解决【异步通信】通过消息队列电商场景缺点消息队列的弊端:消息的不确定性解决:延迟队列、轮询技术来解决该问题即可t...
2019-11-08 00:36:29
144
原创 Java8新特性——Lambda表达式05
实体类:package com.java8.data;/** * ClassName: Person * Package: com.java8.data * * @description: * @author: 王杰Rancho * @date: 2019-11-08 10:20 */public class Person { public String name;...
2019-11-08 00:32:41
111
原创 Java8新特性——Lambda表达式04
package com.java8.syntax;import com.java8.interfaces.LambdaSingleReturnSingleParameter;/** * ClassName: Syntax3 * Package: com.java8.syntax * * @description: * @author: 王杰Rancho * @date: 201...
2019-11-08 00:17:11
99
原创 RPC原理与Dubbo框架
RPC的概念RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。通俗来讲:RPC简单理解就是在本地调用远端的程序...
2019-11-07 01:34:54
128
原创 Synchronize 关键字原理
主要用途:众所周知 Synchronize 关键字是解决并发问题常用解决方案,有以下三种使用方式:同步普通方法,锁的是当前对象。同步静态方法,锁的是当前 Class 对象。同步块,锁的是 {} 中的对象。实现原理:JVM 是通过进入、退出对象监视器( Monitor )来实现对方法、同步块的同步的。具体实现是在编译之后在同步方法调用前加入一个 monitor.enter 指令,在...
2019-11-07 01:17:56
171
原创 反射机制和工厂模式——IOC的实现原理
反射机制概念我们考虑一个场景,如果我们在程序运行时,一个对象想要检视自己所拥有的成员属性,该如何操作?再考虑另一个场景,如果我们想要在运行期获得某个类的Class信息如它的属性、构造方法、一般方法后再考虑是否创建它的对象,这种情况该怎么办呢?这就需要用到反射!我们.java文件在编译后会变成.class文件,这就像是个镜面,本身是.java,在镜中是.class,他们其实是一样的;那么同理,我...
2019-11-06 00:32:32
142
原创 【温故而知新】Spring Boot 与 Spring MVC 的区别
概念Spring 是基础,是核心;SpringMVC 是一个 MVC 框架,Javaweb 开发主流 MVC 框架就是它;SpringBoot 是一个快速整合其他框架的开发包;联系Spring 框架就像一个家族,有众多衍生产品例如 boot、security、jpa等等。但他们的基础都是Spring 的 ioc 和 aop。ioc 提供了依赖注入的容器 aop ,解决了面向横切面的编程,...
2019-11-06 00:22:24
114
原创 Java8新特性——Lambda表达式03
package com.java8.syntax;import com.java8.interfaces.*;/** * ClassName: Syntax2 * Package: com.java8.syntax * * @description: * @author: 王杰Rancho * @date: 2019-11-06 0:01 */public class S...
2019-11-06 00:19:04
81
原创 Java8新特性——Lambda表达式02
package com.java8.syntax;import com.java8.interfaces.*;/** * ClassName: Syntax1 * Package: com.java8.syntax * * @description: * @author: 王杰Rancho * @date: 2019-11-04 13:01 */public class S...
2019-11-04 23:33:19
86
原创 Java8新特性——Lambda表达式01
首先看一个栗子package com.java8;/** * ClassName: NewPoint * Package: com.java8 * * @description: * @author: 王杰Lucas * @date: 2019-11-04 10:21 */public class NewPoint { public static void main(...
2019-11-04 00:54:46
88
原创 Redis安装下载
下载地址:http://redis.io/download,下载最新稳定版本。以 2.8.17为例子,下载并安装:$ wget http://download.redis.io/releases/redis-2.8.17.tar.gz$ tar xzf redis-2.8.17.tar.gz$ cd redis-2.8.17$ makemake完后 redis-2.8.17目录下会出...
2019-11-03 20:39:47
87
原创 redis.conf或者redis.windows.conf参数配置
redis.conf 配置项说明如下:Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程daemonize no当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定pidfile /var/run/redis.pid指定Redis监听端口,默认端口为6379,作者在自己的一篇...
2019-11-03 20:37:19
1759
原创 springMVC返回json 日期时间显示相差8小时
背景:数据库中为datetime类型在实体类中需要加上才能保证日期转换类型@DateTimeFormat(pattern="yyyy-MM-dd")private Date empHiredate;即:在查询时,默认为伦敦时间,所以中国要+8小时需要在get方法中加8个小时分析:一、为什么返回json数据会相差8小时?因为json转换日期的默认时区是东零区,而北京时间是东8...
2019-11-03 20:31:30
1561
1
原创 【温故而知新】成员变量与局部变量
例题:public class Exam5 { static int s;//成员变量,类变量 int i;//成员变量,实例变量 int j;//成员变量,实例变量 { int i = 1;//局部变量 i++; j++; s++; } public void test(int j)...
2019-11-03 20:24:16
112
原创 检查Linux是否安装java、Tomcat、MySQL
linux下,查看安装软件1.linux下的javaJava -version如果出现java版本,证明java安装成功。2.linux下的tomcat2.1.检查linux是否安装tomcatrpm -qa|grep tomcat2.2.tomcat的路径一般是/usr/local/tomcat63.检查linux是否安装mysql3.1.说明usr/bin/MySQL 是...
2019-11-03 00:23:36
1578
原创 【温故而知新】Java单例模式--------懒汉式和饿汉式
1、 单例模式(Singleton Pattern)Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。1) 饿汉式:在程序启动或单件模式类被加载的时候,单件模式实例就已经被创建。范例:...
2019-11-03 00:21:04
162
原创 【温故而知新】Spring容器
1、 容器是spring框架的核心,使用IOC管理所有组件2、 Spring容器的分类2.1 Bean工厂,简单,提供基础DI:Beanfactory2.2 应用上下文:ApplicationContextBeanFactory与ApplicationContext的区别?BeanFacotry是spring中比较原始的Factory。如XMLBeanFactory就是一种典型的Bean...
2019-11-03 00:17:58
162
原创 【温故而知新】Spring框架学习
Spring框架一、特点:1、 轻量级:占用空间小,非侵入式设计……2、 依赖注入(重点):低耦合,降低组件之间耦合性 提高程序灵活性和扩展性3、 面向切面:spring将通用业务成为切面与核心业务抽离,使开发人员更专注于业务4、 容器:spring负责管理所有的组件对象的创建和生命周期5、 框架:spring提供大量基础功能,使开发人员快速开发二、spring核心概念:依赖注入(D...
2019-11-02 23:10:06
105
原创 笔记:事务管理
一:事务认识事务Transaction,它是一些列严密操作动作,要么都操作完成,要么都回滚撤销。Spring事务管理基于底层数据库本身的事务处理机制。数据库事务的基础,是掌握Spring事务管理的基础。这篇总结下Spring事务。事务具备ACID四种特性,ACID是Atomic(原子性)、Consistency(一致性)、Isolation(隔离性)和Durability(持久性)的英文缩写。...
2019-11-02 00:40:13
149
原创 eclipse环境下:maven项目中@Data的使用与lombok安装
eclipse环境下:maven项目中@Data的使用与lombok安装及使用1、到官网下载jar包2、双击下载好的lombak.jar,安装步骤如下:注意:如过安装成功但是@Data等注解无效,可能是由于你的eclipse版本是新版本,你的lombok.jar版本太旧。那么请下载最新的lombok.jar再进行安装主要的作用提高代码的简洁@Data去除一些重复的get,set方法,1、到...
2019-10-23 21:09:23
596
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人