自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ChoiBin

No pain,no gain

  • 博客(62)
  • 收藏
  • 关注

原创 缓存和数据库双写的策略

缓存和数据库双写的策略1、先更新数据库后更新缓存先更新数据库,后更新缓存,存在的问题在于有些业务需求中缓存的值不是简单的从数据库读取后就能存放进去的,有时需要进行一些业务的计算后,才将最终的结果存放缓存。况且针对写多读少的场景,如果更新10次数据库,就要更新缓存10次,但是在一定的时间内就只读1次,这样就会产生大量的冷数据,影响性能。因此,不推荐使用这种。2、先更新缓存后更新数据库类似情况1,不推荐使用。3、先删缓存后更新数据库单线程下先删除缓存后...

2020-08-05 22:35:26 948

原创 Java中的枚举

在实习过程中,公司项目上用到枚举来表示请求处理的状态,返回结果,而自己以前也只是有简单的做过几个Demo,没有经常使用,所以当时使用的时候也是比较生疏。因此想找时间把这个枚举系统的复习整理一遍,方便以后查阅。一、定义枚举类型是指一组固定的常量组成合法的类型。Java中由关键字enum来定义一个枚举类型。public enum Season { SPRING(1,"春天"), ...

2020-01-10 19:53:19 184

原创 算法之字符串

1、验证回文串给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。本题中,我们将空字符串定义为有效的回文串。解题思路:一开始先建立两个指针,left 和 right , 让它们分别从字符的开头和结尾处开始遍历整个字符串。如果遇到非字母数字的字符就跳过,继续往下找,直到找到下一个字母数字或者结束遍历,如果遇到大写字母,就将其转为小写。当左右指针...

2019-04-08 11:29:30 357

转载 (转)宜立方商城架构总结

宜立方商城架构分布式+SOA什么是分布式?将一个完整的系统按照功能点拆成若干个相互独立的子系统,每一个子系统可称之为一个节点,每一个节点都可以单独配置多台服务器(集群),各个子系统之间相互进行通信,进行协调合作,共同完成整个系统的业务流程,这就是分布式。什么是集群?多台服务器做同一件事,这就是集群。集群和分布式的区别?(狭义理解)答: 集群就是一个工...

2019-03-18 09:35:39 224

原创 Redis主从复制

一、主从复制是什么行话:也就是我们所说的主从复制,主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主。二、主从复制的作用读写分离、容灾恢复三、如何使用3.1、配从(库)不配主(库)命令:slaveof 主库IP 主库端口注意:每次与master断开之后,都需要重新连接,除非你配置进redis.conf文...

2019-03-16 16:32:40 115

原创 Redis的事务与发布订阅

一、Redis事务1、什么是redis事务可以一次执行多个命令,本质是一组命令的集合。一个事务中的所有命令都会序列化,按顺序地串行化执行而不会被其他命令插入,不许加塞。2、redis事务的作用redis的事务中,有一个队列,在这个队列中,会一次性、顺序性、排他性的执行一系列命令。3、redis中常用的命令3.1、MULTI标记一个事务块的开始,如:3.2、EXE...

2019-03-15 21:01:02 103

原创 项目开发之相对路径与绝对路径的问题

一、绝对路径不可以改变的路径。比如我想去广州市天河区某某个小区23栋501号的话,我的地址将会是广东省广州市天河区某某小区23栋501号,这个地址是不会改变的,除非是发生拆迁或者其他事故。通过这个地址就可以找我。二、绝对路径的分类本地绝对路径:增加盘符的路径。如:e:/test/test.html网络绝对路径:增加协议、ip地址、端口号的路径。如:http://localhost:...

2019-03-11 14:36:13 857

原创 设计模式之工厂模式

工厂模式目录工厂模式一、从一个披萨店开始1.1、原先的设计1.2、建立一个简单披萨工厂二、简单工厂的定义2.1、简单工厂2.2、基于简单工厂设计的类图2.3、具体代码实现三、加盟披萨店3.1、加盟店的设计3.2、具体代码的实现3.3、声明一个工厂方法四、认识工厂方法模式4.1、工厂方法模式的定义4.2、一个依赖性比较强的披萨店4....

2019-01-22 11:00:09 122

原创 设计模式之装饰者模式

装饰者模式目录装饰者模式一、从星巴兹咖啡开始二、基于装饰者模式的改造2.1、装饰者模式中的设计原则2.2、认识装饰者模式2.3、用装饰者模式进行改造三、真实世界的装饰者:JAVA I/O一、从星巴兹咖啡开始原始星巴兹咖啡类的设计如下所示:这样的设计,会导致“类爆炸”,如果牛奶价格的上涨或者新增一种焦糖调料风味时会导致维护上的困难第二次的设计:...

2019-01-20 14:39:43 220

原创 设计模式之观察者模式

观察者模式目录观察者模式一、从一个气象监测应用开始1.1、一个错误的示范1.2、这样设计的问题二、基于观察者模式的改造2.1、什么是观察者模式2.2、基于观察者模式的改进三、Java中内置的观察者模式3.1、Java内置的观察者模式3.2、如何使用内置的观察者模式3.3、基于JAVA内置观察者模式的气象站改造一、从一个气象监测应用开始某个公司...

2019-01-18 12:05:11 151

原创 设计模式之策略模式

 策略模式目录策略模式一、从简单的模拟鸭子应用开始二、改进版的鸭子应用三、采用策略模式改进后的鸭子应用3.1 策略模式中包含的设计原则3.2 具体的方法四、总结一、从简单的模拟鸭子应用开始Joe上班的公司做了一套模拟鸭子的游戏:SimUDuck。游戏中的各种鸭子一边游泳戏水,一边呱呱叫。此系统内部设计使用了标准的OO技术,设计了一个鸭子超累,并且让各种鸭...

2019-01-17 15:32:29 387

原创 注解 annotation基础语法

什么是注解?Annotation是从JDK5.0开始引入的新技术。Annotation的作用:  - 不是程序本身,可以对程序作出解释。  - 可以被其他程序(比如编译器)等读取。(注解信息处理流程,是注解和注释的重大区别。如果没有注解信息处理流程,则注解毫无意义)Annotation的格式:  -可以是“@注释名”在代码存在的,还可以添加一些参数值,例如:@Suppres...

2018-12-05 21:47:24 187

原创 JAVA内部类(成员内部类、局部内部类、匿名内部类、静态内部类)

    在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。广泛意义上的内部类一般来说包括这四种:成员内部类、局部内部类、匿名内部类和静态内部类。下面就先来了解一下这四种内部类的用法。  1.成员内部类  成员内部类是最普通的内部类,它的定义为位于另一个类的内部,形如下面的形式: 1 2 3 4 5 6 ...

2018-11-11 11:04:53 101

原创 线程中callable原理(堵塞)

首先看一段代码package com.choi.java.thread;import java.util.Random;import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.FutureTask;public ...

2018-11-07 15:57:16 2039

原创 ArrayList为什么是线程不安全的?

概要介绍 首先说一下什么是线程不安全:线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据。 如图,List接口下面有两个实现,一个是ArrayList,另外一个是vector。 从源码的角...

2018-11-06 20:32:27 256

转载 jvm学习之类加载过程详解

我们都知道一个java程序运行要经过编译和执行,但是这太概括了,中间还有很多步骤,今天来说说类加载学完类加载之后,java运行过程就可以分为  编译  》 类加载  》  执行类加载主要是由jvm虚拟机负责的,过程非常复杂,类加载分三步  加载   》  连接  》初始化,(这里的加载和本文标题的类加载是不同的,标题的类加载包含了完整的三个步骤)下面详细说说每一步的过程1、加载:这个很...

2018-11-06 09:41:25 269

转载 Java的对象头和对象组成详解

Java对象保存在内存中时,由以下三部分组成:1,对象头2,实例数据3,对齐填充字节一,对象头 java的对象头由以下三部分组成:1,Mark Word2,指向类的指针3,数组长度(只有数组对象才有) 1,Mark WordMark Word记录了对象和锁有关的信息,当这个对象被synchronized关键字当成同步锁时,围绕这个锁的一系列操作都和Mar...

2018-10-31 21:32:13 257

原创 用Ajax实现异步校验用户名是否存在

一、案例分析1.<input name="username">失去焦点时,使用$.post()将用户名以ajax的方式发送给服务器2.服务器获取用户名后,并通过用户名查询用户,如果用户存在,返回不可用提示;如果用户名可用,返回可用提示3.根据服务器响应的json数据,控制提示信息的显示和提交的按钮是否可用二、搭建环境步骤1:创建项目,导入页面步骤2:导入...

2018-10-27 14:15:47 1561

原创 Ajax及Json数据类型格式

一、Ajax概述1.1、什么是同步,什么是异步同步现象:客户端发送请求到服务器端,当服务器返回响应之前,客户端都处于等待卡死状态异步现象:客户端发送请求到服务器端,无论服务器是否返回响应,客户端都可以随意做其他事情,不会被卡死1.2、Ajax的运行原理页面发起请求,会将请求发送给浏览器内核中的Ajax引擎,Ajax引擎会提交请求到服务器端,在这段时间里,客户端可以任意进行任意操...

2018-10-27 13:48:16 347

原创 (宜立方商城)电商项目中如何搭建solr集群

一、什么是solrcloundSolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud。当一个系统的索引数据量少的时候是不需要使用SolrCloud的,当索引量很大,搜索请求并发很高,这时需要使用SolrCloud来满足这些需求。SolrCloud是基于Solr和Zookeeper的分布式搜索方案,它的主...

2018-10-26 20:05:55 312

转载 排序算法三:直接插入排序

要点直接插入排序是一种最简单的插入排序。插入排序:每一趟将一个待排序的记录,按照其关键字的大小插入到有序队列的合适位置里,知道全部插入完成。 在讲解直接插入排序之前,先让我们脑补一下我们打牌的过程。先拿一张5在手里,再摸到一张4,比5小,插到5前面,摸到一张6,嗯,比5大,插到5后面,摸到一张8,比6大,插到6后面,。。。最后一看,我靠,凑到全是同花顺,这下牛逼...

2018-09-22 17:20:45 312

转载 排序算法二:冒泡排序

要点冒泡排序是一种交换排序。什么是交换排序呢?交换排序:两两比较待排序的关键字,并交换不满足次序要求的那对数,直到整个表都满足次序要求为止。算法思想它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端,故名...

2018-09-22 17:19:18 258

转载 排序算法一:快速排序

快速排序是一种交换排序。快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分:分割点左边都是比它小的数,右边都是比它大的数。然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。详细的图解往往比大堆的文字更有说明力,所以直接上图: 上图中,演示了快速排序的处理...

2018-09-22 17:17:21 194

转载 AOP的好处

我将从最基础的原始代码–>使用设计模式(装饰器模式与代理)–>使用AOP三个层次来讲解一下我们使用AOP的好处,希望这篇文章可以对大家有益。原始代码的写法既然要通过代码来演示,那必须要有例子,这里我的例子为:有一个接口Dao有insert、delete、update三个方法,在insert与update被调用的前后,打印调用前的毫秒数与调用后的毫秒数首先定义一个Dao接...

2018-09-13 19:54:05 2457

转载 IOC 的理解与解释

IOC 是什么?Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。如何理解好Ioc呢?理解好Ioc的关键是要明确“谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了”,那我们来深入分析一下: ●谁控制谁,控制什么:传统Jav...

2018-09-13 19:46:27 146

原创 jdbc学习10_DAO接口的实现类。(通过DBUtils实现)

package com.atguigu.jdbc; import java.sql.Connection;import java.sql.SQLException;import java.util.List; import org.apache.commons.dbutils.QueryRunner;import org.apache.commons.dbutils.handlers...

2018-08-09 15:51:13 387

原创 jdbc学习9_DAO接口

package com.atguigu.jdbc; import java.sql.Connection;import java.sql.SQLException;import java.util.List; /** * 访问数据的 DAO 接口.  * 里边定义好访问数据表的各种方法 * @param T: DAO 处理的实体类的类型.  */public interfac...

2018-08-09 15:50:14 128

原创 jdbc学习8_DBUtils使用

package com.atguigu.jdbc; import java.sql.Connection;import java.sql.Date;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;import java.ut...

2018-08-09 15:49:18 103

原创 jdbc学习7_DBCP和C3P0数据库连接池的使用(非配置文件和配置文件)

package com.atguigu.jdbc; import java.beans.PropertyVetoException;import java.io.InputStream;import java.sql.Connection;import java.sql.Date;import java.sql.PreparedStatement;import java.sql.SQ...

2018-08-09 15:48:26 151

原创 jdbc学习6_批量处理sql语句

        @Test    public void testBatch(){        Connection connection = null;        PreparedStatement preparedStatement = null;        String sql = null;                try {            conn...

2018-08-09 15:47:25 138

原创 jdbc学习5_事务和事务的隔离级别

package com.atguigu.jdbc; import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException; import org.junit.Test; public class TransactionT...

2018-08-09 15:46:20 89

原创 jdbc学习4_DAO

package com.atguigu.jdbc; import java.lang.reflect.InvocationTargetException;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.ResultSetMetaD...

2018-08-09 15:45:22 83

原创 jdbc学习3_JDBCTools

package com.atguigu.jdbc; import java.io.IOException;import java.io.InputStream;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.Result...

2018-08-09 15:44:18 193

原创 jdbc学习2_statement 和prepareStatement

一、    @Test    public void testPreparedStatement() {        Connection connection = null;        PreparedStatement preparedStatement = null;         try {            connection = JDBCTools.get...

2018-08-09 15:42:58 75

原创 jdbc学习1_数据库的连接

/**     * DriverManager 是驱动的管理类.      * 1). 可以通过重载的 getConnection() 方法获取数据库连接. 较为方便     * 2). 可以同时管理多个驱动程序: 若注册了多个数据库连接, 则调用 getConnection()     * 方法时传入的参数不同, 即返回不同的数据库连接。      * @throws Exceptio...

2018-08-09 15:40:09 80

转载 javaweb学习14_简单标签概述(背景、使用一个标签、标签库的API、simple tag接口、创建一个自定标签的步骤及简单应用)

1.背景  1)自定义标签可以降低 jsp 开发的复杂度和维护量,从 html 角度来说,可以使 html 不用去过多的关注那些比较复杂的商业逻辑(业务逻辑);  2)利用自定义标签,可以软件开发人员和页面设计人员合理分工:页面设计人员可以把精力集中在使用标签(HTML,XML或者JSP)创建网站上,而软件开发人员则可以将精力集中在实现底层功能上面,如国际化等,    从而提高了工程生...

2018-08-01 17:15:12 206

转载 javaweb学习13_EL中的运算符号(算术运算符、关系运算符、逻辑运算符、empty运算符、条件运算符、括号运算符)

算术运算符,关系运算符,逻辑运算符,empty运算符,条件运算符,括号运算符 1.算术运算(5个)      2.关系运算符(6个)   注意在使用 EL 关系运算符时,不能够写成:  ${param.password1} = = ${param.password2}或者  ${ ${param.password1 } = = ${ para...

2018-08-01 17:12:52 535

转载 javaweb学习12_EL中的11个隐含对象详解

1. EL 本身也有自己的隐含对象。EL 隐含对象总共有 11 个                              2. 分类  1)与范围有关的隐含对象:applicationScope  sessionScope   requestScope  pageScope  2)与输入有关的隐含对象:param  paramValues  3)其他隐含对象:coo...

2018-08-01 17:10:46 1434

转载 javaweb学习11_EL表达式(简介、运算符、自动类型转换、保留字、隐含对象)

1.EL 简介  1)EL 全名为 Expression  Language,它原本是 JSTL  1.0 为方便存取数据所自定义的语言  2)语法:EL 语法很简单,它最大的特点就是使用上很方便:${sessionScope.user.sex}。所有 EL 都是以  ${  为起始、以}  为结尾的。  3).与[ ] 运算符:EL 提供. 和[ ] 两种运算符来存取数据  例子...

2018-08-01 17:09:17 2216

转载 javaweb学习10_java bean概述 及在jsp中的使用原理

1.Java Bean  介绍  1)用作JavaBean的类必须具有一个公共的、无参数的构造方法,用于反射。  2)JavaBean的属性与普通Java类的属性的概念不一样,JavaBean的属性是以方法定义的形式出现的;  3)用于对属性赋值的方法称为属性修改器或setter方法,用于读取属性值的方法称为属性访问器或getter方法;  4)属性修改器必须以小写的set 前缀开...

2018-08-01 17:07:28 263

空空如也

空空如也

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

TA关注的人

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