- 博客(33)
- 收藏
- 关注
原创 Spring事务
一.事务管理在系统开发中是不可缺少的一部分,Spring提供了很好事务管理机制,主要分为编程式事务和声明式事务两种.编程式事务:是指在代码中手动的管理管理事务的提交,回滚等操作,代码入侵性比较强.try { //TODO something transactionManager.commit(status);} catch (Exception e) { transactionManager.rollback(status); throw new Invoice
2021-11-10 16:03:00
76
原创 MYSQL解析json字符串
1.数据库存储数据[{"key":"禁口食材","value":"葱,香菜"},{"key":"用户病症","value":"低血糖"}]2.读出JSON数组中的所有KEYSELECT JSON_EXTRACT(user_features,'$[*].key')FROM customer_infoWHERE customer_id = '35523232'3.读出JS...
2019-12-18 20:48:08
817
原创 JAVA设计模式
一、单例模式的定义与特点单例(Singleton)模式的定义:指一个类只有一个实例,且该类能自行创建这个实例的一种模式。例如。Windows中只能打开一个任务管理器,这样可以避免因打开多个任务管理器窗口而造成内存资源的浪费,或出现各个窗口显示内容的不一致等错误。在计算机系统中,还有Windows的回收站,操作系统中的文件系统,多线程中的线程池、显卡的驱动程序对象、打印机的后台处理服务,应用...
2019-12-12 15:46:59
134
原创 RocketMQ学习心得
RocketMQ是阿里开源的分布式消息中间件,基于高可用分布式集群技术,提供消息订阅和发布、消息轨迹查询以及定时(延时)消息、资源统计,监控报警等一系列消息云服务,是企业级互联网架构的核心产品。为分布式应用系统提供异步解耦、削峰填谷的能力,同时具备海量消息堆积、高吞吐、可靠重试等互联网应用所需要的特性。跟其它中间件相比,RocketMQ的特点是纯JAVA实现;集群和HA实现相对简单;在发生宕机和其...
2019-12-10 15:43:25
199
原创 获取IP地址工具类
/** * 获取当前网络ip * * @return */ public static String getIp() { HttpServletRequest request = ServletUtils.getRequest(); String ipAddress = request.getHeader("...
2019-12-06 09:52:06
132
原创 Redis持久化,RDB和AOF是什么?
一、RDB是什么?RDB持久化是把当前进程数据生成快照保存到硬盘的过程,触发RDB持久化过程分为手动触发和自动触发。触发机制:手动触发分别对应为save和bgsave命令save命令:阻塞当前Redis服务器,直到RDB过程完成为止,对于内存比较多的实例会造成时间阻塞。线上环境不建议使用。bgsave命令:Redis进程执行fork操作创建子进程,RDB持久化过程由子进程负责,完成...
2019-11-27 15:57:24
1716
1
原创 Redis面试题
一、Redis存储数据类型?1)、String 字符串类型是Redis最基本的数据类型,它能够存储任何形式的字符串,可以存储用户的信息,JSON化的对象甚至是一张图片。字符串类型是其他四种类型的基础,其他数据类型从某种角度来说只是组织字符串的形式不同,一个字符串类型的键允许存储的最大数据容量是512MB。赋值命令:SET key value如果key已经持有其他值,set...
2019-11-26 17:06:28
120
1
原创 JVM中对象的创建过程
为新生对象分配内存:内存的分配方式:指针碰撞:假设Java堆中内存是绝对规整的,所有用过的内存放在一边,空闲的内存在另一边,中间放着一个指针作为分界的指示器,那么当分配内存时仅需移动指针即可。空闲列表:维护一个列表,记录那些内存可用,分配时找出一块足够大的空间进行划分,并更新列表记录。选择:分配方式的选择依赖于内存大小是否规整,内存大小的规整,依赖于垃圾收集器是否带有压缩整理功能。...
2019-11-22 14:58:15
108
原创 JVM内存区域如何划分
PS:(1)非线程共享区域的生命周期与所属线程相同,而线程共享区域与JAVA程序运行生命周期相同,GC只发生在线程共享的区域。(2)程序计数器无内存溢出异常,其他四个区域会抛出OutofMemoryError异常。1)程序计数器 程序计数器的功能类似于计算机组成原理中的PC寄存器,用于存放下一条指令所在单元的地址,当执行一条指令时,首先需要根据PC中存放的指令地址,将指令由内...
2019-11-22 10:55:31
157
原创 java面试总结
一、java基础1.java中的几种基本数据类型是什么,各自占用多少字节?java分为两种数据类型:1.基本数据类型2.引用数据类型,如,类,接口,数组基本数据类型:8种1)byte 1个字节,-128~1272)short 2个字节,-32768~327673)int 4个字节4)long 8个字节5)float 4个字节6)double 8个字节7)char 2个...
2019-11-21 10:58:29
84
原创 悲观锁 & 乐观锁
悲观锁:总是假设最坏的情况,每次去拿数据的时候认为somebody会修改,所以每次在拿数据的时候都会上锁,传统的关系型数据库里就用到了很多的这种锁机制,如行锁,表锁,读锁和写锁等,都是在操作之前先上锁;Java中Synchronized和ReetranLock等独占锁就是悲观锁实现的。悲观锁的实现方式:悲观锁的实现是依赖于数据库提供的锁机制,流程如下:1、修改记录前,对记录加上排它锁(...
2019-11-18 15:30:43
114
原创 学习JAVA 字符流和字节流区别
基础知识:字节:是计算机中存储数据的单元,一个8位的二进制数,是一个很具体的存储空间字符:是人们使用的记号,抽象意义上的一个符号,比如1,2,3,.# 。英文和数字占一个字节,中文占一个字符,也就是两个字节一、JAVA IO流概念 流(stream)的概念源于UNIX中管道(pipe)的概念,在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写...
2019-11-13 14:17:56
165
原创 JAVA解析APK包
JAVA解析APK包,获取APP版本名称,版本号,包名,已经是否是调试模式1.添加依赖 <!-- https://mvnrepository.com/artifact/net.dongliu/apk-parser --> <dependency> <groupId>net.dongliu</g...
2019-11-12 15:41:12
740
原创 MyBatis批量插入,删除数据
批量插入前对<foreach>标签里的属性进行详细介绍item:循环体中的具体对象,支持属性的点路径访问,如item.age,item.info,item.details;在list和数组中是其中的对象,在map中是value,该参数为必选。collection:要做foreach对象,作为入参时,List<?>对象默认用list代替作为键,数组对象有Array代替...
2019-11-06 15:11:13
263
原创 cookie设置
1.写入cookie HttpServletResponse response = ServletUtils.getResponse(); // 将token设置到cookie 返回 Cookie cookie = new Cookie(Constants.HEADER_ACCESS_TOKEN_KEY, tokenVo.getT...
2019-11-01 17:27:14
466
原创 自定义注解
@Target({ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface PermissionCheck { //自定义角色值,如果是多个角色,用逗号分割。 String role();}1.元注解:@Target@Retention@Document@...
2019-10-31 15:56:57
84
原创 实现自定义权限控制(Springboot+拦截器+注解)
1、定义权限常量 Constants.javapublic class Constants { public static final String FRANCHISEE_TYPE_MAIN = "MAIN"; public static final String FRANCHISEE_TYPE_ADMIN = "ADMIN";}2、定义权限的注解Permissi...
2019-10-31 15:40:02
696
原创 MySQL统计一个字段的多个值对应的数据
SELECT ugi.goods_id, SUM(case when smgs.`status` = 0 then 1 else 0 end) rent_count, SUM(case when smgs.`status` = 1 then 1 else 0 end) renting_count, SUM(case when smgs.`status` = 2 then 1 else 0...
2019-10-30 15:54:57
2668
原创 MyBatis返回树形结构数据
<!--父方法返结果集--> <resultMap id="ServiceMachineResultMap" type="com.zhishoubao.rms.pojo.vo.ServiceMachineLaneInfoVo"> <result column="lane_id" property="laneId" jdbcType="INTEGER" /...
2019-10-29 16:08:22
767
原创 MySQL时间函数
1.NOW();获取当前日期和时间的函数2.CURDATE();获取当前日期3.获取当前时间4.DATE:获取日期时间或者日期的日期部分,DATE(date);date参数是合法的日期表达式5.EXTRACT(unit FROM date);date参数是合法的日期表达式unit参数可以是下列的值:MICROSECOND、SECOND、MINUTE、HOUR、D...
2019-10-28 17:50:53
204
原创 日期工具类
public class DateUtils { private static final String DEFAULT_DATE_FMT = "yyyy-MM-dd HH:mm:ss"; /** * 得到当前时间戳, 秒 * * @return */ public static Long nowTimeStamp() { ...
2019-10-25 15:56:46
105
原创 MySql优化
一、常见优化规则1、表连接数1)连接的表越多,性能越差2)可能的话,将连接拆分成若干个过程逐一查询3)优先执行可显著减少数据量的连接,既降低复杂度,也能够 容易按照预期执行4)如果不避免多表连接,很可能是设计缺陷5)外链接效果差,因为必须对左右表进行表扫描6)尽量使用inner join查询2、尽量使用临时表如果不可避免,可以考虑使用临时表或表变量存放中间结果...
2019-10-23 15:58:51
99
原创 Spring 详解
一、什么是Spring?1、概念:Spring是一个控制反转IOC和AOP的开发框架和平台。是一个主流的Java Web开发框架,该框架是一个轻量级的应用框架,具有很高的凝聚力和吸引力。2、优点:1)方便解耦,简化开发Spring就是一个大工厂,可以将所有对象的创建和依赖关系的维护交给Spring管理。2)方便集成各种优秀框架Spring不排斥各种优秀的开源框架,其内部提供...
2019-10-23 10:14:31
133
原创 WebSocket概念及工作原理
一、WebSocket是什么?webSocket是HTML5新增的协议,它的目的是在浏览器和服务器之间建立一个不受限的双向通信的通道,比如说,服务器可以在任意时刻发送消息给浏览器。WebSocket同样是HTML5规范的组成部分之一,用一句话概括就是:客户端向WebSocket服务器通知(notify)一个带有所有接收者ID的事件(event),服务器接收后立即通知所有活跃的(active...
2019-10-21 15:10:31
1069
原创 Spring MVC拦截器
1、什么是浏览器?拦截器是指通过统一拦截从浏览器发往服务器的请求来完成功能的增强。使用场景:解决请求的共性问题(如,乱码问题,权限认证问题)2、拦截器的基本工作原理1)编写拦截器类实现HandlerIntercepor接口2)将拦截器注册进SpringMVC框架中3)配置拦截器的拦截规则3、拦截器的方法介绍1)preHandle方法,在请求被处理之前进行调用2)...
2019-10-19 17:55:18
126
原创 ConcurrentHashMap原理-面试总结
面试题:1、HashMap的线程安全吗?有哪些替代方案HashMap不安全,HashMap的初始容量是16,当长度超出12(16的3/4)时,Map需要扩容,每次扩容之后大小都是之前的两倍。扩容时,需要将容器中的元素重新计算一遍,并且创建一个更长的新的数组,将元素复制进这个新数组。这个步骤很消耗性能,所以,在初始化map的时候,尽可能地按照需要指定其长度,尽量减少resize的次数,这...
2019-10-19 14:34:49
1034
原创 ThreadLocal小白菜的蜕变
ThreadLocal是什么?有啥用?怎么用?????????一、ThreadLocal理解1、ThreadLocal又名线程局部变量,是Java中一种较为特殊的线程绑定机制,可以为每一个使用该变量的线程都提供一个变量值的副本,并且每一个线程都可以独立地改变自己的副本,而不会与其他线程的副本发生冲突。2、如果某个变量要被某个线程独享,那么我们就可以通过ThreadLocal来实现本地存...
2019-10-18 15:59:02
168
原创 java中的多线程-学习成果标记
这篇文章主要是自己在学习多线程相关知识的时候,在搜索和对比中整理的笔记,方便后期查看。如果有重复,那不是抄袭,是借鉴奥多线程的概念1、进程:进程是操作系统中进行保护和资源分配的基本单位,操作系统分配资源以继承为基本单位。每个进程都有独立的代码和数据空间(进程上下文,也叫堆内存),一个进程包含1-N个线程。堆内存在操作系统对进程进行初始化的时候分配,运行过程中也可以向系统申请额外的内存空间,但...
2019-10-16 16:31:06
168
原创 接口和抽象类区别和联系(面试必备)
抽象类概念:抽象类不能创建实例,它只能作为父类被继承。抽象类是从多个具体类中抽象出来的父类,它具有更高层次的抽象。从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为其子类的模板,从而避免了子类的随意性。特点:抽象类无法被实例化(因为它不是具体的类,但是有构造方法) 抽象类有构造方法,是给子类创建对象的 抽象类中可以定义抽象方法(在方法的修饰列表中添加abstract关键字,...
2019-10-15 10:34:12
139
原创 SpringBoot+Maven(多模块项目,可打jar部署测试)
工程结构一、创建Maven多模块项目先建立外层父工程 File →new →project 选择Spring Initializr Next下一步到以下页面接下来,把src整个删掉,父工程不需要,因为父工程你就当它只有一个外壳就完了接下来创建子模块工程上右键 → new → Module选择Spring Initaializr...
2019-10-14 08:53:43
89
原创 Spring boot加载不到DataSource
***************************APPLICATION FAILED TO START***************************Description:Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could ...
2019-10-14 08:53:04
829
原创 SpringBoot整合OSS对象存储
step 1配置文件:##aliyun对象存储oss配置aliyun.oss.access-key-id=访问阿里云API的密钥 在Access Key管理 里配置,最好配置个子账户的授权OSS所有权限即可。aliyun.oss.access-key-secret=访问阿里云API的密钥 在Access Key管理 里配置,最好配置个子账户的授权OSS所有权限即可。aliy...
2019-10-14 08:52:32
212
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人