自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

转载 记一次Redis实现点赞、取消点赞工作任务

本文基于 SpringCloud, 用户发起点赞、取消点赞后先存入 Redis 中,再每隔两小时从 Redis 读取点赞数据写入数据库中做持久化存储。点赞功能在很多系统中都有,但别看功能小,想要做好需要考虑的东西还挺多的。点赞、取消点赞是高频次的操作,若每次都读写数据库,大量的操作会影响数据库性能,所以需要做缓存。至于多久从 Redis 取一次数据存到数据库中,根据项目的实际情况定吧,我是暂时设了两个小时。项目需求需要查看都谁点赞了,所以要存储每个点赞的点赞人、被点赞人,不能简单的做计数。文章分四

2021-02-01 14:14:53 198

原创 常用程序命名规范

为什么需要重视命名?好的命名即是注释,别人一看到你的命名就知道你的变量、方法或者类是做什么的! 好的命名对于其他人(包括你自己)理解你的代码有着很大的帮助!简单举个例子说明一下命名的重要性。《Clean Code》这本书明确指出:好的代码本身就是注释,我们要尽量规范和美化自己的代码来减少不必要的注释。若编程语言足够有表达力,就不需要注释,尽量通过代码来阐述。举个例子:去掉下面复杂的注释,只需要创建一个与注释所言同一事物的函数即可// check to see if the employe

2020-12-29 17:37:04 276

原创 Java开发面试学习总结

一、Java 基础知识1、Object 类相关方法getClass获取当前运行时对象的 Class 对象。hashCode返回对象的 hash 码。clone拷贝当前对象, 必须实现 Cloneable 接口。浅拷贝对基本类型进行值拷贝,对引用类型拷贝引用;深拷贝对基本类型进行值拷贝,对引用类型对象不但拷贝对象的引用还拷贝对象的相关属性和方法。两者不同在于深拷贝创建了一个新的对象。equals通过内存地址比较两个对象是否相等,String 类重写了这个方法使用值来比较是否相等。toStr

2020-12-17 10:20:49 380

原创 如何使用工厂模式让自己的代码更加优雅

⼯⼚模式⼜称⼯⼚⽅法模式,是⼀种创建型设计模式,其在⽗类中提供⼀个创建对象的⽅法, 允许⼦类决定实例化对象的类型。 这种设计模式也是 Java 开发中最常⻅的⼀种模式,它的主要意图是定义⼀个创建对象的接⼝,让其⼦类⾃⼰决定实例化哪⼀个⼯⼚类,⼯⼚模式使其创建过程延迟到⼦类进⾏。 简单说就是为了提供代码结构的扩展性,屏蔽每⼀个功能类中的具体实现逻辑。让外部可以更加简单的只是知道调⽤即可,同时,这也是去掉众多 if else 的⽅式。当然这可能也有⼀些缺点,⽐如需要实现的类⾮常多,如何去维护,怎样减低开发成本。

2020-11-10 16:29:02 353

原创 try catch finally,try里有return,finally还执行么?

不管有木有出现异常,finally块中代码都会执行;当try和catch中有return时,finally仍然会执行;finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是 在finally执行前确定的;finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。即finally代码块必然..

2020-10-15 14:43:05 762 1

原创 不安全的反序列化Json漏洞

解决这种不安全的序列化Json漏洞有什么思路吗?

2020-07-24 16:43:35 1666 3

转载 HashMap相关知识点解析

一般的面试题对于HashMap,我们再熟悉不过了,日常开发最常用的Java集合类就是它了,而且面试的时候对于HashMap知识点基本是必问的,就拿我之前的面试经历来看,问的最多的无非是这么几个:1、HashMap的底层存储结构是怎样的啊?2、线程安全吗?为什么不安全?3、1.7和1.8版本的HashMap有什么区别?1.7的有什么隐患,什么原因导致的?4、hashcode是唯一的吗?插入元素的时候怎么比较的?5、跟HashTable,ConcurrentHashMap有什么区别?对于这些问题,

2020-07-06 14:46:28 202

原创 MySQL优化

1.概述对于mysql的优化是一个综合性的技术,sql的优化只是其中的一种,其中主要包括表的设计合理化(符合3大范式)。添加索引(index) [普通索引、主键索引、唯一索引unique、全文索引]。分表技术(水平分割、垂直分割)。读写[写: update/delete/add]分离。2.合理设计表在表的设计中一定条件下要满足三范式,表的范式,是首先符合第一范式, 才能满足第二范式 , 进一步满足第三范式。第一范式: 即表的列的具有原子性,不可再分解,即列的信息,不能分解, 只有数据库是关系

2020-06-24 11:04:24 102

转载 设计模式——观察者模式

一、什么是观察者模式观察者一般可以看做是第三者,比如在学校上自习的时候,大家肯定都有过交头接耳、各种玩耍的经历,这时总会有一个“放风”的小伙伴,当老师即将出现时及时“通知”大家老师来了。再比如,拍卖会的时候,大家相互叫价,拍卖师会观察最高标价,然后通知给其它竞价者竞价,这就是一个观察者模式。对于观察者模式而言,肯定有观察者和被观察者之分。比如在一个目录下建立一个文件,这时系统会通知目录管理器增加目录,并通知磁盘减少空间,在这里,文件就是观察者,目录管理器和磁盘就是被观察者。观察者模式(Observer

2020-06-08 15:22:23 120

转载 有符号整型的数据范围为什么负数比正数多一个

在JAVA中,有符号整型(long,int,short,byte)类型能表示的数据范围总是负数个数比正数要多一个,为什么?以最简单(位数最短)的byte举例System.out.println(Byte.BYTES);//输出1System.out.println(Byte.SIZE);//输出8System.out.println(Byte.MAX_VALUE);//输出127System.out.println(Byte.MIN_VALUE);//输出-128按照通常直觉,正负数不是对称的

2020-06-08 11:36:59 4859 1

原创 JVM—类加载过程及双亲委派原则

类加载过程加载——验证——准备——解析——初始化——使用——回收其中验证,准备,解析合称链接1. 加载加载通过类的完全限定名,查找此类字节码文件,利用字节码文件创建Class对象.2. 验证验证确保Class文件符合当前虚拟机的要求,不会危害到虚拟机自身安全.3. 准备准备进行内存分配,为static修饰的类变量分配内存,并设置初始值(0或null).不包含final修饰的静态变量, 因为final变量在编译时分配.4. 解析解析将常量池中的符号引用替换为直接引用的过程.直接引用为直接指向目

2020-06-05 17:39:37 202

原创 理清数据库设计

本文参考于如何进行数据库设计,侵删1. 需求分析数据库需求的作用点:数据是什么数据有哪些属性数据和属性各自的特点有哪些搞清楚一些问题实体与实体之间的关系(如1对1,1对多,多对多)实体所包含的属性有哪些哪些属性或属性的组合可以唯一标识一个实体2. 逻辑设计使用ER图进行数据库逻辑建模逻辑设计是做什么的将需求转为数据库的逻辑模型通过ER图的形式对逻辑模型进行展示同所选用的具体的DBMS系统无关3. 物理设计根据数据库自身的特点把逻辑设计转换为物理设计(涉及到选用哪

2020-06-01 10:59:38 607

转载 解决数据冗余,插入,删除与更新异常——数据依赖与规范化

转载自解决数据冗余,插入,删除更新异常——数据依赖与规范化在对数据库进行一些操作的时候我们可能会遇到以下的一些问题:数据冗余(想修改一个属性,就要更新多行数据)插入异常(想要插入数据,结构因为表设计的问题,导致不能成功插入)删除异常(只想删除其中的某些数据 ,结果把不该删的也删了)更新异常(想更新一条数据,结果工作量大,还容易出错)其实这就是因为有数据依赖的原因,因为彼此之间有一些依赖关系,所以导致我们的操作总是牵涉颇多,处理不干净数据依赖的几个重要函数依赖:1. 完全函数依赖比如在

2020-05-29 17:47:08 3954

转载 RabbitMQ必须了解的概念

本文转载自RabbitMq入门以及使用教程一、简介MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。其中较为成熟的MQ产品有IBM WEBSPHERE MQ等等…二、

2020-05-28 11:27:07 234

原创 java面试题及答案(练习使用)

1、servlet执行流程客户端发出http请求,web服务器将请求转发到servlet容器,servlet容器解析url并根据web.xml找到相对应的servlet,并将request、response对象传递给找到的servlet,servlet根据request就可以知道是谁发出的请求,请求信息及其他信息,当servlet处理完业务逻辑后会将信息放入到response并响应到客户端。...

2019-09-11 17:16:55 240

原创 eclipse Add JRE

在为导入的新项目创建JRE时,误设置了Default VM arguments,在使用TOMCAT启动该项目时会报错:找不到或无法加载主类*****,在remove该JRE后重新创建时不再设置该参数,即能启动该项目。该参数的详细设定看查阅VM arguments。...

2019-07-21 13:02:50 912

原创 SQL Modify varchar2 to clob

由于数据库设计阶段设计不严谨的原因,没有选择适合存储大量文本信息的clob类型,后期更改varchar2类型为clob类型。VARCHAR2 字段类型,oracle sql varchar2的最大支持长度为4000 Byte,而CLOB为字符型大型对象(Character Large Object),与字符集相关,适于存贮大量文本型的数据,最大长度为4G Byte。1.Varchar2 t...

2019-07-19 11:53:40 238

原创 Mybatis一对多及多对多映射查询

1、数据库准备工作--删除表drop table SelectiveInfo;drop table StudentInfo;drop table ClassInfo;drop table TeacherInfo;drop table CourseInfo;drop table DepartmentInfo;--创建部门表create table DepartmentInfo(...

2019-07-17 20:12:53 1058

转载 【转】varStatus属性介绍及使用

学习过程中遇到varStatus的使用问题,该篇文章较为详细地解析该属性,故转载。varStatus是<c:forEach>jstl循环标签的一个属性,varStatus属性。就拿varStatus=“status”来说,事实上定义了一个status名的对象作为varStatus的绑定值。该绑定值也就是status封装了当前遍历的状态,比如,可以从该对象上查看是遍历到了第几个元素...

2019-07-16 22:27:41 972

原创 SpringMVC注解开发的准备工作

JAR包

2019-07-13 16:38:05 125

原创 实现严格单例模式

Singleton单例模式单例模式public class SingletonHungry { private static final SingletonHungry singleton=new SingletonHungry(); private SingletonHungry() { } public static SingletonHungry ...

2019-07-06 19:02:14 140

空空如也

空空如也

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

TA关注的人

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