自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 资源 (3)
  • 收藏
  • 关注

原创 spring事务为何会失效?

最近在开发时,因为业务场景对数据库操作时,涉及多张表,多张表又要求一致性,就加了spring事务的@Transactional注解,spring事务是基于aop实现,耦合度低,这里主要讲下@Transactional注解的使用注意。spring事务注意事项因为@Transactional注解有很多不生效的场景,所以在自测时,需要验证异常,在代码中手动制造异常(int i= 1/0),观察是否生效;要对整个方法应用事务,而不能是某几行代码,因为aop拦截的是方法;入口的方法需要publ.

2021-01-08 14:57:43 1121 1

转载 Spring Ioc控制反转到底是什么?

在知乎上看到一个对SpringIoc控制反转的非常优秀的解读,转一下~ioc的思想最核心的地方在于,资源不由使用资源的双方管理,而由不使用资源的第三方管理,这可以带来很多好处。第一,资源集中管理,实现资源的可配置和易管理。第二,降低了使用资源双方的依赖程度,也就是我们说的耦合度。也就是说,甲方要达成某种目的不需要直接依赖乙方,它只需要达到的目的告诉第三方机构就可以了,比如甲方需要一双袜子,而乙方它卖一双袜子,它要把袜子卖出去,并不需要自己去直接找到一个卖家来完成袜子的卖出。它也只需要找第三方,告诉别人

2020-12-07 16:31:27 275

原创 设计模式回顾之最佳实践

前言:最近打算系统的学习一遍spring并且深入源码看一下,spring核心ioc和aop源码中大量使用工厂模式、代理模式、单例模式等设计模式,所以在正式学习前,先简单的复习下常见的设计模式和在jdk中的应用场景以及我对他们的一些新感悟,接下来就开始进入Best practices的世界吧~设计模式就是在特定环境下,对特定问题的惯用解决之道,是许多前人总结出来的设计精华,使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性,所以我更愿意称他为最佳实践-Best pract.

2020-12-06 22:53:05 345

原创 SecureRandom产生随机数采坑记录

前言:最近上线时遇到一个很诡异的问题,这个问题在测试环境和pr环境都没问题,但是在生产环境必现,排查配置、代码是否一致等原因后,最终通过cat生成的traceId和研读代码,花费了两个小时,定位到问题是由于SecureRandom产生随机数系统熵池中数量不足,阻塞了当前线程。记录一下这个踩坑经验,希望大家规避掉类似的使用~情境描述以及随机算法介绍系统中经常有获取随机数的场景,我们通常new一个Random对象,通过random.nextInt(size)来获取一个随机数。通过jdk8中对Random类的

2020-11-08 17:05:42 4116 7

原创 代码优化之策略模式

前言:最近刚完成一个专项的代码codeing,今天花了一下午把代码优化了下,总结了一些优化时用到的思想和方法,后续也会继续补充好的代码习惯和最佳范式策略模式自我介绍策略这个词应该怎么理解,打个比方说,我们出门的时候会选择不同的出行方式,比如骑自行车、坐公交、坐火车、坐飞机、坐火箭等等,这些出行方式,每一种都是一个策略。再比如我们去逛商场,商场现在正在搞活动,有打折的、有满减的、有返利的等等,其实不管商场如何进行促销,说到底都是一些算法,这些算法本身只是一种策略,并且这些算法是随时都可能互相替换的,比如

2020-11-01 21:48:57 412

原创 mybatis配置文件解析过程分析

MyBati简介MyBatis 是一种半自动化的 Java 持久层框架(persistenceframework),其通过注解或 XML的方式将对象和 SQL 关联起来。之所以说它是半自动的,是因为和 Hibernate 等一些可自动生成 SQL 的 ORM(ObjectRelationalMapping)框架相比,使用 MyBatis 需要用户自行维护 SQL。维护 SQL 的工作比较繁琐,但也有好处。比如我们可控制 SQL 逻辑,可对其进行优化,以提高效率。mbatis-plus是mybatis的增

2020-09-13 19:42:50 158

原创 ConcurrentHashMap1.8源码初读

前言:最近在看《java并发编程的艺术》这本书上看到了juc包下的并发容器concurrentHashMap的实现,基于segment+数组+链表的锁分段技术,在看jdk1.8源码时,发现虽然segment对象还存在,但是已没有该对象的引用,在jdk1.8之后已放弃segment+数组+链表的锁分段技术,而采用cas算法+synchronized+(数组+链表+红黑树)实现,我猜想应该和jdk1.8中优化了synchronized关键字有关吧~jdk1.7和jdk1.8在实现上的异同jdk1.7:se

2020-08-23 18:10:17 240

原创 Cron范式每日凌晨一点执行

最近开发中遇到需要定时执行的任务,使用xxl-job创建任务,创建任务,定时执行,在描述任务时,使用cron表达式来描述任务执行间隔,常用比如:每天凌晨一点执行,每月最后一天执行等,下面记录一些常用的表达式。表达式:秒 分 时 日 月 周 年(可选)。 字段名 允许的值 允许的特殊字符 秒 0-59

2020-08-10 11:23:19 124341 10

原创 java并发包之AQS实现以及锁的应用

第三次打开了《java并发编程的艺术》这本书,希望通过这八月份的学习,能对以AQS为基础的java并发包有更深刻的理解和应用,本篇文章主要梳理了AQS底层实现以及重入锁、读写锁的特性。AQS的底层实际上是由变量同步状态和双向同步队列组合实现,所以本篇文章需要先了解双向队列的数据结构哦~知识梳理源码浅谈独占式添加尾节点 /** * Creates and enqueues node for current thread and given mode. * * @pa

2020-08-09 20:04:13 131

原创 微服务架构搭建-SpringCloud(二)

todo 之前做了哪一步,一的连接今天做哪一部整合Hystrix做熔断和回退,使用zuul做路由的转发和过滤,使用apollo做配置中心。在之前的文章中 link.Hystrix 服务熔断与降级Hystrix 是 Netflix 针对微服务分布式系统采用的熔断保护中间件,相当于电路中的保险丝。什么是服务熔断和服务降级呢?服务熔断是当下游的服务因为某种原因突然变得不可用或响应过慢时,上游服务为了保证自己服务的可用性和稳定性,不再继续调用目标服务,直接返回,快速释放资源。服务降级是从整个系统的负荷

2020-08-02 22:43:45 168

转载 java过滤微信昵称emoji表情

注:核心代码为转载最近在开发中遇到要过滤掉微信名称中的表情,再入库的功能;在找了多篇实现验证后,发现排名在前的文章们竟然有bug,最终找到以下实现,验证后符合要求,特此记录一下。import java.util.regex.Matcher;import java.util.regex.Pattern; /** * 过滤emoji表情与非emoji表情 * @author hsw * */public class EmojiFilter {/** * 检测是否有emoji字符

2020-08-01 19:29:00 831

原创 数据处理方式总结

本周在工作中处理了很多数据,比如查找联系方式相同的客户、查找宁波地区客户询价情况、多个库联系方式相同的关联起来等,在工作中学到很多数据处理的小技巧,总结一下,之后学到的也会补充进来~我总结了处理数据的四个点:SQL处理脚本处理(python/java)excel处理VSCode文本处理SQL处理SQL大家都会写,在这里介绍几个sql的函数和特性。1.group_concat()函数将group by产生的同一个分组中的值连接起来,返回一个字符串结果。语法:group_concat( [

2020-07-26 23:53:27 5224 5

原创 微服务架构搭建-SpringCloud(一)

微服务微服务架构是单体应用的演进,由于互联网行业高速发展,应运而生的一种架构体系,它具有独立解耦、高可用、扩展性强、易部署等好处,搭配敏捷开发,使得产品的开发上线效率得到很大的提升。微服务在带来一系列好处的同时,也带来了架构的复杂性。应用微服务化之后,会遇到服务发现、服务配置管理、服务授权验证统一在哪里做等问题,下面是一张典型的微服务架构图。该文使用spring cloud来搭建一个简单的微服务架构。spring cloud是什么?Spring Cloud 就是用于构建微服务开发和治理的框架集合,它

2020-07-19 15:56:32 516

原创 springboot整合mybatis

spring boot创建web项目1.使用idea新建spring boot项目,选择spring Initalizr,通常选择默认https://start.spring.io/构建2.填写jdk版本、包名等信息,这里使用Maven管理项目3.勾选常用的依赖,创建web项目,常用的spring web、thymeleaf(SpringBoot页面展示)、数据库等4.填写项目名称,至此项目构建完成hello web项目新建后的项目目录结构如下,DemoApplication是项目的启动

2020-07-19 14:35:51 132

原创 设计模式简析

设计模式讲几个设计模式,哪些地方用到了,为什么要用?单例一个类只有一个实例对象饿汉模式:类加载的时候就把对象创建完毕了,线程安全,但是会消耗内存懒汉模式:调用get方法时实例才被创建,但在多线程的情况下没办法保证单例双重检查锁机制:使用两次检查判断实例是否为空,同时第二次检查前加锁,但是编译器会对new对象这个操作进行优化执行,先把地址赋值,再初始化对象,所以要在单例对象上加vol...

2019-03-25 11:24:58 157

原创 如何优化数据库

数据库优化Mysql优化?如何优化一条慢SQL语句?会引发的慢查询,大体有三种可能1.索引没有设计好2.SQL语句没写好3.MySQL优化器选错了索引在索引的选择上,可以使用覆盖索引来减少回表,索引建的过多,会占用空间,所以可以使用联合索引,减少索引的创建,在对一些字符串字段建立索引时,为了节约空间以及减少分页,可以创建前缀索引。导致查询慢,还可能是语句没写好,在使用order by时...

2019-03-25 11:23:35 194

原创 java虚拟机扫盲文

java虚拟机JVM内存区域程序计数器:线程私有,当前线程所执行的字节码的行号指示器虚拟机栈:线程私有,每个方法在执行时都会创建一个栈帧,存储局部变量表等信息,如果线程请求的栈深度大于虚拟机所允许的深度,就会抛出StackOverflowErro(while(true)count++;)本地方法栈:线程私有java堆:线程共享,存放对象实例,是内存中最大的一块,也是垃圾回收的主要区域方...

2019-03-25 11:21:09 154

原创 并发编程面试题汇总

并发编程Thread.currentThread()方法来获取系统当前正在执行的一条线程,多线程:怎么实现线程安全,各个实现方法有什么区别,volatile关键字的使用,可重入锁的理解,Synchronized是不是可重入锁?https://www.cnblogs.com/baizhanshi/p/7211802.htmlReenTrantLock的字面意思就是再进入的锁,其实synchr...

2019-03-25 11:19:14 870

原创 数据结构与算法常见面试题

数据结构与算法找到单链表的三等分点,如果单链表是有环的呢 ?用快慢指针,一个走一步,一个走三步。如果有环,先判断环在哪,找最后一个节点,然后用之前的无环的做法从10万个数中找最小的10个,时间复杂度分析(最小堆,考虑内存)?我们首先取10万个元素中的前10个元素来建立由10个元素组成的最小堆。这样堆顶元素便是当前已知元素的第10大的数;然后依次读取剩下的99990个元素,若读取的元素比堆顶...

2019-03-25 11:15:53 834

原创 java集合与底层实现(下)

Map集合将键映射到值得对象,一个映射不能包含重复的键,每个键只能映射到一个值,map集合存储元素是成对出现的。map集合的数据结构针对键有效,跟值无关。常用子类(HashMap、linkedHashMap、TreeMap、ConcurrentHashMap)map涉及数据结构散列图链表和数组要获取某个元素,就要访问所有的元素,直到找到为止,散列图不在意元素的顺序,能够快速的查找元素的数...

2019-03-12 21:14:09 230

原创 java集合与底层实现(中)

集合 List特点:有序(存储顺序和取出顺序一致),可重复ArrayLIst 数据结构是数组,线程不安全LinkedList 数据结构是链表,线程不安全(双向链表方便实现往前遍历)Vector 数据结构是数组,线程安全copyOnWriteList 并发容器,线程安全(COW设计模式)ArrayList解析ArrayList底层为一个数组,内部有扩容的概念,初始容量为10...

2019-03-12 21:00:55 256

原创 java集合与底层实现(上)

集合的集成体系老大collection常用方法添加:add(Object obj) ,addAll(collection c)删除:clear() ,remove(Object obj), removeAll(collection c)判断:contains(Object obj) ,containsAll(collection c) ,isEmpty()获取:iterator():...

2019-03-12 20:41:39 405

原创 并发与线程之美

背景:cpu、内存、I/O设备不断迭代,但是在快速发展过程中,有一个核心矛盾一直存在,就是三者的速度差异,为了提高计算机性能,合理利用cpu,做出了以下方案:cpu增加了缓存,均衡与内存的速度差异操作系统增加了进程、线程,以分时复用cpu编译程序优化了指令执行效率,使缓存更加合理的利用出现的问题:但是这也是并发程序异常的根源之处缓存导致了可见性问题(一个线程对共享变量的修改,另...

2019-03-12 20:01:08 220

原创 java工程师必备能力

和前端联调沟通能力json、get,post,http,restemplate、跨域get和post的区别json分为数组和对象(jsonArray和jsonObject),他们与java对象的之间的转化http请求(头和体)@requestBody、@requestParam注解,httpclient的运用restemplate——-springboot相互调用独立建项目,设计数...

2019-03-04 17:42:18 227

java中的锁.xmind

AQS实现方法: 1.同步器的主要使用方式是继承,子类通过继承同步器并实现他的抽象方法来管理同步状态(CAS线程安全操作) 2.子类通常定义为自定义同步组件的静态内部类 3.同步器是面向锁的实现者,他简化了锁的实现方式,屏蔽了同步状态管理、线程排队、等待和唤醒等底层操作 4.同步器的设计是基于设计模式为:模板方法模式 AQS实现细节: 1.同步器依赖内部的同步队列-FIFO双向队列来完成同步状态的管理 。。。。。。

2020-08-10

导出数据库命令

mysql导出数据库命令

2018-12-13

liunx导出数据库脚本

linux导出数据库脚本,里面介绍了如何在linux环境下导出数据库

2018-08-28

空空如也

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

TA关注的人

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