- 博客(54)
- 收藏
- 关注
原创 数据库实体类属性:基本类型和包装类型的应用场景
【int和Integer的区别】int是java提供的8种原始类型之一,java为每个原始类型提供了封装类,Integer是int的封装类。int默认值是0,而Integer默认值是null;int和Integer(无论是否new)比较,都为true, 因为会把Integer自动拆箱为int再去比;Integer是引用类型,用==比较两个对象,其实比较的是它们的内存地址,所以不同的Integer对象肯定是不同的;应用场景integer的场景1.Integer默认值是null,可以区分未赋值和值为
2022-02-23 00:51:50 454
转载 保证对外接口安全性的措施
前言最近有个项目需要对外提供一个接口,提供公网域名进行访问,而且接口和交易订单有关,所以安全性很重要;这里整理了一下常用的一些安全措施以及具体如何去实现。安全措施个人觉得安全措施大体来看主要在两个方面:一方面就是如何保证数据在传输过程中的安全性;另一个方面是数据已经到达服务器端,服务器端如何识别数据,如何不被攻击;下面具体看看都有哪些安全措施。1.数据加密我们知道数据在传输过程中是很容易被抓包的,如果直接传输比如通过http协议,那么用户传输的数据可以被任何人获取;所以必须对数据加密,常见的做法对关键字段加
2021-12-13 19:57:13 3767
原创 redis安装以及配置
windows1. redis-x64-3.2.100解压版下载,以及注册到win服务2. redis修改密码注意:命令行修改时临时修改,重启后密码失效;改配置文件时永久有效3.redis desktop manager keys error:scan commands not support原因:0.9版本太高,换成 redis-desktop-manager-0.8.8.384...
2021-12-06 18:30:24 305
原创 ide使用技巧
0. 温馨提示:0.1 b站视频讲解传送门0.2 功能快捷键查询(下文中凡是小括号标注了功能的都可以按照此方法进行查询)可通过 ctrl + shift + A 调出 action查询框(功能快捷键查询框),进行查询。比如:想要知道 recent files的快捷键,直接在action搜索框输入“recent files”就可以看到快捷键1 .关于跳转1.1 recent files(功能):适合在多文件目录中筛选出最近访问过的文件2. 精准搜索2.1 类:输入类名快速查找类navigat
2021-12-04 21:07:56 652
原创 纯净pc系统缺失补丁等问题
1.msvcp140.dll缺失传送门实测有效:去官网下载对应的补丁补充:如果缺失很多种dll,可考虑使用drectx修复,或者360(但是用这两个工具没能完全修复,2015-19的补丁安装失败)
2021-12-04 14:55:15 392
转载 容器、宿主机、tomcat、项目日志时间不同步
在Docker容器运行后,可能会发现容器时间与宿主机时间不一致,一般会差8个小时。这样会造成在容器中运行的web程序打出的日志时间与实际时间不一致,如果web程序中有定时任务也会造成影响等,需要对宿主机和容器进行时间同步。 一、查看宿主机和容器时间 #宿主机时间:[root@localhost ~]# date2017年 10月 26日 星期四 10:04:07 CST #容器时间[root@753f...
2021-12-02 14:59:37 380
原创 ide中设置类和方法注释模板
一、首先我们来设置IDEA中类的模板:(IDEA中在创建类时会自动给添加注释) 1、File-->settings-->Editor-->File and Code Templates-->Files 我们选择Class文件(当然你要设置接口的还也可以选择Interface文件) 2、Class模板内容/** *@ClassName ${NAME} *@Description TODO *@Authot ${USER} *@Date ${DATE} ${TIME}
2021-07-29 11:46:15 727
转载 springboot集成redis
今天,日月在这里教大家如何使用springBoot集成redis,说实话比较简单,网上也有大把的教程。先套用一下网上的简介。 定义 REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。 Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 它通常被称为数据结构服务器,因为值(value)可以是 字符串(String
2021-07-28 18:26:16 110
原创 docker安装redis踩坑
按照此博客操作后出现问题:踩坑1:docker ps 查不到容器,docker ps -a 显示容器status :exited填坑1:通过docker logs myredis(reids容器别名)发现redis.conf注释部分有问题,修改redis.conf后source(立即生效命令),出现:bash *** command not found填坑2:按照此博客修改全局环境变量文件/etc/profile,sourcel立即生效;填坑3:通过下面创建并启动redis容器的命令中加粗部分的内
2021-06-29 14:46:35 380
转载 分布式事务解决方案
1 CAP 定理1.1 概念CAP 理论在分布式系统中一致性:分布式环境下多个节点的数据是否强一致可用性:分布式服务能一直保证可用状态。当用户发出一个请求后,服务能在有限时间内返回结果分区容忍性:特指对网络分区的容忍性对于共享数据系统,最多只能同时拥有CAP其中的两个,没法三者兼顾。任两者的组合都有其适用场景真实系统应当是ACID与BASE的混合体不同类型的业务可以也应当区别对待其中,分区容忍性又是不可或缺的。结论:分布式系统中,最重要的是满足业务需求,而不...
2020-12-29 01:57:37 115
转载 java命名规范(阿里开发手册)
感谢作者李艳鹏的授权发布,原文链接地址:http://www.jianshu.com/p/bc8fed863eca。 最近,阿里巴巴发布了《阿里巴巴Java开发手册》,总结了阿里人多年一线实战中积累的研发流程规范,这些流程规范在一定程度上能够保证最终的项目交付质量,通过限制开发人员的编程风格、实现方式来避免研发人员在实践中容易犯的错误,同样的问题大家使用同样的模式解决,便于后期维护和扩展,确保最终在大规模协...
2020-12-04 19:54:12 1040
转载 详解数据库三大范式、BCNF范式
文章目录 什么是”范式(NF)”1. 第一范式(1NF)2. 第二范式(2NF)2.1 函数依赖2.1.1完全函数依赖2.1.2 部分函数依赖 2.2 码2.3 非主属性 3. 第三范式(3NF)4. 小结4.1 三大范式总结 4.2 完全&部分函数依赖 4.3 表设计规范(范式的选择) 什么是”范式(NF)” 按照教材中的定义,范式是“符合某一种级别的关系模式的集合,表示一个关系内部各属性之间的联系的合理化程度”。很晦涩吧?实际上你可以把它粗略地理解为一张数据表的.
2020-11-21 16:34:05 10635
转载 drop、truncate、delete详细区别
概述一、delete 1、delete是DML,执行delete操作时,每次从表中删除一行,并且同时将该行的的删除操作记录在redo和undo表空间中以便进行回滚(rollback)和重做操作,但要注意表空间要足够大,需要手动提交(commit)操作才能生效,可以通过rollback撤消操作。 2、delete可根据条件删除表中满足条件的数据,如果不指定where子句,那么删除表中所有记录。 3、delete语句不影响表所占用的extent,高水线(high watermark)保持原位置
2020-11-20 23:47:40 1145
原创 sql日期格式化(Y&y等字母格式的区别)
常用格式描述%Y年,4 位,如:2017%y年,2 位,如:17%M月名,如:July%m月名,数字,00-12%D带有英文前缀的月中的天:2nd%d月的天,数值(00-31)%H小时 (00-23)%h小时 (01-12) ...
2020-11-19 23:22:26 829
转载 sql别名问题(mysql和Oracle有区别)&& sql执行顺序
一、sql执行顺序 from join on where group by(开始使用select中的别名,后面的语句中都可以使用) avg,sum.... having select distinct order bylimit 从这个顺序中我们不难发现,所有的 查询语句都是从from开始执行的,在执行过程中,每个步骤都会为下一个步骤生成一个虚拟表,这个虚拟表将作为下一个执行步骤的输入。&.
2020-11-19 22:57:36 508
转载 【JUC】什么是ABA问题?
前言从AtomicInteger引出下面的问题CAS -> Unsafe -> CAS底层思想 -> ABA -> 原子引用更新 -> 如何规避ABA问题ABA问题是什么一句话概括就是:狸猫换太子假设现在有两个线程,分别是T1 和 T2,然后T1执行某个操作的时间为10秒,T2执行某个时间的操作是2秒,最开始AB两个线程,分别从主内存中获取A值,但是因为B的执行速度更快,他先把A的值改成B,然后在修改成A,然后执行完毕,T1线程在10秒后,执行完毕,判断内存中的值
2020-10-29 15:51:29 1212
转载 【JUC】什么是CAS?
前言CAS的全称是Compare-And-Swap,它是CPU并发原语它的功能是判断内存某个位置的值是否为预期值,如果是则更改为新的值,这个过程是原子的CAS并发原语体现在Java语言中就是sun.misc.Unsafe类的各个方法。调用UnSafe类中的CAS方法,JVM会帮我们实现出CAS汇编指令,这是一种完全依赖于硬件的功能,通过它实现了原子操作,再次强调,由于CAS是一种系统原语,原语属于操作系统用于范畴,是由若干条指令组成,用于完成某个功能的一个过程,并且原语的执行必须是连续的,在执行过程中
2020-10-29 15:45:42 230
转载 【JUC】Volatile的应用:Volatile控制懒汉单例并发问题(与synchronized比较)
单例模式(懒汉)单线程下的单例模式代码/** * SingletonDemo(单例模式) */public class SingletonDemo { private static SingletonDemo instance = null; private SingletonDemo () { System.out.println(Thread.currentThread().getName() + "\t 我是构造方法SingletonDemo");
2020-10-29 15:36:12 174
转载 【JUC】Volatile为什么不保证原子性
前言(关于可见性)通过前面对JMM的介绍,我们知道,各个线程对主内存中共享变量的操作都是各个线程各自拷贝到自己的工作内存进行操作后在写回到主内存中的。这就可能存在一个线程AAA修改了共享变量X的值,但是还未写入主内存时,另外一个线程BBB又对主内存中同一共享变量X进行操作,但此时A线程工作内存中共享变量X对线程B来说是不可见,这种工作内存与主内存同步延迟现象就造成了可见性问题。原子性不可分割,完整性,也就是说某个线程正在做某个具体业务时,中间不可以被加塞或者被分割,需要具体完成,要么同时成功,要么同
2020-10-29 15:25:59 190
转载 【JUC】Volatile和JMM内存模型的可见性
谈谈对Volatile的理解Volatile在日常的单线程环境是应用不到的 Volatile是Java虚拟机提供的轻量级的同步机制(三大特性) 保证可见性 不保证原子性 禁止指令重排 JMM是什么JMM是Java内存模型,也就是Java Memory Model,简称JMM,本身是一种抽象的概念,实际上并不存在,它描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式JMM.
2020-10-29 15:11:59 120
转载 【JUC】Volatile禁止指令重排
计算机在执行程序时,为了提高性能,编译器和处理器常常会对指令重排,一般分为以下三种:源代码 -> 编译器优化的重排 -> 指令并行的重排 -> 内存系统的重排 -> 最终执行指令单线程环境里面确保最终执行结果和代码顺序的结果一致处理器在进行重排序时,必须要考虑指令之间的数据依赖性多线程环境中线程交替执行,由于编译器优化重排的存在,两个线程中使用的变量能否保证一致性是无法确定的,结果无法预测。指令重排 - example 1public void mySort() {.
2020-10-29 15:04:03 179
转载 spring cloud和dubbo的区别
最近一段时间不论互联网还是传统行业,凡是涉及信息技术范畴的圈子几乎都在讨论 微服务架构 。近期也看到各大技术社区开始组织一些沙龙和论坛来分享spring Cloud的相关实施经验,这对于最近正在整理Spring Cloud相关套件内容与实例应用的我而言,还是有不少激励的。 目前,Spring Cloud在国内的知名度并不高,在前阵子的求职过程中,与一些互联网公司...
2020-09-22 17:08:58 153
转载 SpringMVC和Struts2中并发访问的线程安全问题
SpringMVC和Struts2的区别SpringMVC是基于方法的拦截,Struts2是基于类的拦截。Struts2每处理一个请求,就会实例化一个Action对象,所有不会有线程安全的问题。SpringMVC的controller默认是singleton的。单例的好处:1.不用每次创建controller2.减少创建对象的时间和垃圾收集的时间。意味着每一个请求,系统都会用原有实例去处理,这样会导致多线程调用时,它里面的实例变量就不是线程安全的了。然而大多数情况我们根本不需要考虑线程安全
2020-09-17 00:50:03 222
原创 编程式事务和声明式事务
一、区别 编程式事务:通过编程的方式管理事务,灵活性比较强,但是难维护; 声明式事务:将业务代码和事务管理分离,你只需用注解和XML配置来管理事务; 通俗点来说:声明是事务就是通过注解即配置的方式进行事务的管理,编程式事务就是自己在业务逻辑种编写代码来管理事务
2020-09-16 15:59:18 523
原创 Spring中Bean显式装配和自动装配
何为装配向bean中注入依赖项的过程即为装配,Spring中的装配大体有两种类型,一种就是显示的指定依赖项,另一种是通过一些规则自动的注入依赖项。具体的讲,显示指定依赖项是直接指定依赖项的名称,非常明显和确定,所以称之为显示装配。而根据规则自动注入依赖项,是指由Spring容器自动的将符合指定类型或指定名称的依赖项注入到bean的属性中,这种装配称为自动装配。显而易见的是,由于自动装配无须显示指定依赖项,所以更加的简单快速,目前应用的也是越来越多。由于装配非常的重要,涵盖的内容也是Spring的核心
2020-09-16 11:27:33 860 1
原创 Redis是单线程还是多线程?
不同版本的Redis是不同的,在Redis4.0之前,Redis是单线程运行的,但是在Redis4.0的时候,已经开始支持多线程了,比如后台删除等功能。注:Redis在4.0之前使用单线程的模式的原因:官方解释:由于Redis是基于内存的操作,因此CPU并不是Redis的瓶颈。 Redis的瓶颈很可能是机器内存或网络带宽的大小。 既然单线程易于实现并且CPU不会成为瓶颈,那采用单线程解决方案是合乎逻辑的了;详细原因:不需要各种锁的性能消耗Redis的数据结构并非全都是简单的键值(Key-
2020-09-12 01:05:32 252
原创 缓存技术redis和map的比较
具体比较Redis 可以实现分布式的缓存,Map 属于本地缓存,只能存在创建它的程序里Redis 的缓存可以持久化,Map 是内存对象,程序一重启数据就没了Redis 缓存有过期机制,Map 本身无此功能Redis 可以处理每秒百万级的并发,是专业的缓存服务,Map 只是一个普通的对象Redis 可以用几十 G 内存来做缓存,Map 不行,一般 JVM 也就分几个 G 数据就够大了Redis 有丰富的 API,Map 就简单太多了关于本地缓存和分布式缓存 
2020-09-12 00:41:17 2959 1
原创 数据库聚簇索引和非聚簇索引
聚簇索引:将数据存储与索引放到了一块,索引结构的叶子节点保存了行数据 非聚簇索引:将数据与索引分开存储,索引结构的叶子节点指向了数据对应的位置 在innodb中,在聚簇索引之上创建的索引称之为辅助索引,非聚簇索引都是辅助索引,像复合索引、前缀索引、唯一索引。辅助索引叶子节点存储的不再是行的物理位置,而是主键值,辅助索引访问数据总是需要二次查找。 InnoDB使用的是聚簇索引,将主键组织到一棵B+树中,而行数据就储存在叶子节点上,若使用"where id = 14"这样的条件查
2020-09-11 15:06:08 177
转载 SQL优化-explain SQL执行计划与Type级别详解
Type级别详解 system>const>eq_ref>ref>range>inex>ALL 越往左边,性能越高,比如system就比ALL类型性能要高出许多,其中system、const只是理想类型,基本达不到; 我们自己实际能优化到ref>range这两个类型,就是你自己写SQL,如果你没优化基本上就是ALL,如果你优化了,那就尽量达到ref>range这两个级别; 这里我强调一下,左边基本达不到! 所以,要对type优化的前提是,你需要有索引,
2020-09-11 11:32:19 4118 1
原创 sql优化:Union和Union All的区别
区别Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;Union All:对两个结果集进行并集操作,包括重复行,不进行排序;效率比较如果可以确认合并的两个结果集中不包含重复的数据的话,UNION ALL 要比UNION快很多:UNION先取出两个表的结果,再用排序空间进行排序删除重复的记录,最后返回结果集,如果表数据量大的话可能会导致用磁盘进行排序。而UNION ALL只是简单的将两个结果合并后就返回,不进行排序。...
2020-09-11 11:22:39 256
转载 char、varchar、varchar2、nvarchar的区别
一、概述 1.char char是定长的,也就是当你输入的字符小于你指定的数目时,char(8),你输入的字符小于8时,它会再后面补空值。当你输入的字符大于指定的数时,它会截取超出的字符。 2.varchar(n) 长度为 n 个字节的可变长...
2020-09-11 10:48:03 547
转载 对mysql乐观锁、悲观锁、共享锁、排它锁、行锁、表锁的理解
记得在上大学那会开始,在大学的课堂上,常常会听到老师讲什么共享锁,排它锁各种锁的词汇,以前仅仅听过一次就没有管了,并没有进行深入的研究最近,在各种群里,又看见了什么乐观锁、悲观锁什么鬼的感觉很高级的词汇,于是乎今天对这几个概念进行学习,揭开它神秘的面纱,缕缕思路记录下我对这几个概念的想法实验环境:mysql5.6存储引擎:innoDB我们在操作数据库的时候,可能会由于并发问...
2020-09-10 17:38:43 208
原创 distinct用法及其优化
在使用MySQL时,有时需要查询出某个字段不重复的记录,这时可以使用mysql提供的distinct这个关键字来过滤重复的记录,但是实际中我们往往用distinct来返回不重复字段的条数(count(distinct id)),其原因是distinct只能返回他的目标字段,而无法返回其他字段,例如有如下表user :select distinct name from user用distinct来返回不重复的用户名,结果为:这样只把不重复的用户名查询出来了,但是用户的id,并没有被查询出来;
2020-08-06 01:41:17 4016 2
转载 Java中Math.round()的取整规则
- 原题:Math.round(11.5) 等于多少?Math.round(-11.5)等于多少? - 答案 : Math.round(11.5)的返回值是12,Math.round(-11.5)的返回值是-11。Math.round() 四舍五入的原理是在参数上加0.5然后进行下取整。- 从文档中分析其原理:round方法: static long round(double a) 此方法返回的参数最接近的long. static int round(float a) 此方法返..
2020-08-04 17:17:11 393
转载 详解java的四舍五入与保留位
四舍五入是我们小学的数学问题,这个问题对于我们程序猿来说就类似于1到10的加减乘除那么简单了。在讲解之间我们先看如下一个经典的案例:public static void main(String[] args) { System.out.println("12.5的四舍五入值:" + Math.round(12...
2020-08-04 16:59:27 354
原创 mybatis中#和$比较、sql注入
案例:delete from tab_user where uid = #{uid,jdbcType=INTEGER}sql解析分析:上述案例中使用的是#{},sql在解析的时候会加上 " " ,当成字符串来解析 : uid= " uid ";如果用${},传入数据直接显示在生成的sql中,如上述案例,用uid = ${uid,jdbcType=INTEGER},那么sql在解析的时候值为uid = uid,执行时会报错;具体区别: #{}:使用预编译的方式将参数设置到sql语句当中
2020-07-31 21:30:33 324
转载 解决stackOverflow打开慢的问题
stackOverflow打开慢并不是stackoverflow被墙,而是因为stackoverflow用了google的api,而Google在天朝是用不了的,所以才导致像stackoverflow这类网站,出现样式错乱,不能注册,不能登录,打开特别慢,甚至打不开。所以,某神将Google 的 CDN 替换成国内中科大的。具体地址:https://github.com/justjavac/ReplaceGoogleCDN(亲册有效)另外,对于chrome内核的浏览器(如搜狗浏览器)可以直接访问https
2020-07-27 17:14:53 1129
转载 OSI七层模型基础知识及各层常见应用
OSI七层模型基础知识及各层常见应用 目录二、 OSI基础知识三、 OSI的七层结构四、 OSI分层的优点五、 OSI模型与TCP/IP模型的比较六、OSI七层模式简单通俗理解 模型把网络通信的工作分为7层。1至4层被认为是低层,这些层与数据移动密切相关。5至7...
2020-07-23 15:54:38 742
转载 TortoiseSVN打分支、合并分支、切换分支操作
SVN几个重要文件夹说明: 我们一般习惯性在创建repository仓库后,再在刚才创建的仓库里面再创建trunk、branches、tags这三个文件夹,而不是直接将项目提交到仓库的根目录下(虽然直接将项目分享到仓库的root根目录下也是可以的,...
2020-07-20 16:04:31 324
转载 缓存和数据库双写一致性
首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作。但是在更新缓存方面,对于更新完数据库,是更新缓存呢,还是删除缓存。又或者是先删除缓存,再更新数据库,其实大家存在很大的争议。目前没有一篇全面的博客,对这几种方案进行解析。于是...
2020-07-14 01:36:26 170
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人