自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 【毕业设计】在线学习平台

页面截图: 单点登录 门户 试题 后台

2019-08-20 00:00:52 1550 9

原创 【Nginx】通过Nginx在同一台服务器上配置多个二级域名

背景:同个域名下的三个子域名各自绑定了一个项目,每个项目都在自己的tomcat里运行,而且这三个tomcat都在同一个服务器上。 www.portal.a.com www.blog.a.com www.backadmin.a.com 需求:都通过浏览器默认的80端口访问。 问题:我们知道...

2018-08-10 01:47:59 5048 3

原创 上传图片到七牛云(前端和后端)

在开发项目的时候,经常会用到上传图片的功能,如果把图片全都存放在项目路径下,会导致项目越来越臃肿,因此可以考虑把图片上传交给第三方处理,此处采用七牛云进行图片存储。 经过测试,通过七牛云获取图片确实比直接通过自己的服务器获取的速度要快得多,赶快去注册七牛云吧。 上传图片的方式有两种: 通过...

2018-08-06 14:56:09 15078 20

原创 微信小程序与Java的Servlet通信小示例

微信小程序 <!--index.wxml--> <view class=&...

2018-05-19 11:15:41 6911 11

原创 【福利】同性交友网站(github)知名项目(持续更新)

前言 没上过Github,都不敢说自己是程序猿。没事逛逛Github还是收获颇丰滴。 在这推荐下自己在网上收集并且觉得质量很不错的Github项目,其中包括文档类和代码类的,排名不分先后。 文档类 1、advanced-java 链接:advanced-java,star 41k,fork 11...

2020-03-27 14:51:24 204 0

转载 2020最新IntelliJ IDEA激活方式

1:先下载 jetbrains-agent.jar,可以存放在任意位置 下载地址:https://590m.com/file/1745990-424791967 如果用激活码激活失败,提示license key is in format,可尝试更换一个jar包: 下载地址:https://5...

2020-03-24 16:15:36 4968 2

原创 由RestTemplate引发的加班惨案

前言 今天真是美好的一天呢,股市一如往常地绿,我一如往常地坐在办公桌前敲代码。 上级交给我一个刷新历史数据的需求,一般刷新历史数据可以采用的方式有SQL脚本以及定时任务。 以往大多数时候我都是采用SQL脚本的方式,因为这次涉及接口的调用,于是打算使用后台任务来实现。 本来很日常的一个任务,没想到还...

2020-03-20 00:07:54 63 0

原创 缓存中间件与数据库的相爱相杀

前言 先更新数据库,再删除缓存 先删除缓存,再更新数据库 解决方案 大前提:使用缓存就要容忍数据不一致。能保证最终一致性即可。 设置有效期 好处:缓存超过有效期被淘汰之后,程序会从数据库获取最新的数据重新放入缓存,保持一致性。 坏处:因为缓存会失效,会引发缓存击穿、缓存雪崩等问题。 加锁...

2020-03-13 00:02:51 602 0

原创 【Spring】Bean生命周期以及应用场景(注解版)

前言 理清Spring容器管理Bean的过程有助于我们更好地根据需求制定更合理的设计方案,提升系统扩展性和执行效率。 正文 下面通过简单的示例来理清Bean在Spring容器中的生命周期。 我们从整体到细节,首先是启动容器加载Bean,这是一个整体的过程。 /** * 测试 Spring Bea...

2020-03-06 15:48:44 155 0

原创 《Java并发编程实战》学习笔记(4)

第六章:任务执行 大多数并发应用程序是围绕执行任务(task)进行管理的。所谓任务就是抽象、离散的工作单元(unit of work)。 把一个应用程序的工作(work)分离到任务中,可以简化程序的管理; 这种分离还在不同事务间划分了自然的分界线,可以方便程序在出现错误时进行恢复; 同时这种分离...

2020-03-03 17:17:50 97 0

原创 【Redis】听说Redis是单进程单线程的?

很久很久以前,在某公司的会议室里正在进行一场面试… 面试官:看到你简历上写着“熟练掌握Redis”,你说说对Redis的理解。 马D梅:Redis作为一款流行的缓存中间件,其显著的性能是由于单进程单线程的设计… 面试官:等等,你说Redis是单进程单线程的? 马D梅:这个…(我记得网上都是这么说的...

2020-03-02 23:25:56 577 0

原创 《Java并发编程实战》学习笔记(3)

第四章:组合对象 设计线程安全的类 设计线程安全类的过程应该包括下面3个基本要素: 确定对象状态是由哪些变量构成的; 确定限制状态变量的不变约束; 制定一个管理并发访问对象状态的策略。 名词解释: 先验条件(precondition):针对方法(method),它规定了在调用该方法之前必须为...

2020-02-25 16:20:54 82 0

原创 【问题总结】由于Spring事务使用不当引起的数据库死锁

现象 这次版本发完生产不久,主管就在群里通知了数据库有性能问题,产生了死锁。 这条SQL一直占用了CPU,导致系统其它服务都出现性能问题。 背景 这是一条更新人员索引日志表的SQL,这张表的作用就是用来标记哪些人员的数据发生变化。 涉及这条SQL的模块有后台任务和操作人员数据的功能。 后台任务...

2020-02-19 16:36:50 399 0

原创 《Java并发编程实战》学习笔记(2)

第三章:共享对象 可见性 除了synchronize,同步还具有另一个重要、微妙的方面:内存可见性。我们不仅希望能够避免一个线程修改其他线程正在使用的对象的状态,而且希望确保当一个线程修改了对象的状态后,其他的线程能够真正看到改变。 在一个单线程化的环境里,如果向一个变量先写入值,然后在没有写干涉...

2020-02-17 16:45:02 69 0

原创 《Java并发编程实战》学习笔记(1)

第一章 知识点: 进程是资源(CPU、内存等)分配的基本单位 线程是CPU调度和分派的基本单位 一个进程包括一个或多个线程 1、为什么应用程序需要从单线程发展为多线程? 资源利用。程序有时候需要等待外部的操作,比如输入和输出,并且在等待的时候不可能进行有价值的工作。在等待的时候,让其他的...

2020-02-12 11:47:52 63 0

转载 【Oracle】根据条件更新多个字段的值

需求 更新表中的N个字段的值 1、根据A表字段的值,更新B表字段的值 2、根据条件更新字段的值 方法 更新多个字段 -- 方法一 update a set a.province=(select province from b where b.mobile=a.mobile); update a s...

2020-01-19 17:41:17 337 0

原创 【源码】ThreadLocal与Thread的关系

这是两个很基础的类了,大多数情况下都会用到。今天在群里有人说到这个问题,我顺便就看了下源码。 这里就简单说下这两个类的关系吧。 我们知道,在多线程环境下 ThreadLocal 对每个 Thread 是隔离的,每个 Thread 都拥有自己的 ThradLocal。 从 ThreadLocal 的...

2020-01-04 17:10:25 83 0

原创 【Ajax】多次异步请求的顺序以及回调处理问题

背景 通过搜索框进行检索:触发发送检索请求的事件是keyup,也就是当按完每个键之后发送一次检索请求。 问题 在输入框输入内容,然后快速地删减,有时会发现列表显示的数据和检索的关键字并不匹配;而缓慢地操作则不存在这个问题 比如输入“我是中国人”,列表的统计数显示20W条数据;而“我”,则显示有30...

2020-01-04 15:34:45 225 0

原创 【工具】Java Decompiler:Java反编译工具

我们都知道,Java的源代码文件(.java)编译之后会生成字节码文件(.class),直接用普通的文件浏览工具打开就是一堆晦涩难懂的代码(至少对我来说是这样)。 很多时候修改完成后进行编译,我们需要确认目前程序所运行的是否为最新的代码,其中一个途径就是查看字节码文件是否包含了最新的修改。 这...

2020-01-02 20:51:24 90 0

转载 【IDEA】On 'Update' action设置

设置 On ‘Update’ action :手动触发 update 动作的时候做什么,一般选择Update classes and resources On frame deactivation :IDE 失去焦点时做什么。开发过程中IDE会频繁失焦,为避免浪费CPU资源,选择Do nothi...

2019-12-25 23:45:53 484 0

原创 【Oracle】模糊查询&按匹配度排序

select t.zh_name from psn_ins t where t.ins_id = 857 and t.zh_name like '%' || '肖锐' || '%'; select t.zh_name from ...

2019-12-17 20:47:15 315 0

转载 【Oracle】IS TABLE OF和BULK COLLECT INTO+FORALL

IS TABLE OF :指定是一个集合的表的数组类型,简单的来说就是一个可以存储一列多行的数据类型。 INDEX BY BINARY_INTEGER:指索引组织类型 BULK COLLECT :指是一个成批聚合类型,简单的来说 , 它可以存储一个多行多列存储类型,采用BULK COLLECT可以...

2019-12-12 23:09:41 58 0

转载 【Oracle】函数常用语法

变量的定义、赋值及使用 declare l_dept integer := 20; currtime date := sysdate; l_nam varchar2(20) := to_char(add_months(trunc(sysdate),-12),�...

2019-12-12 22:57:06 30 0

转载 【Oracle】存储过程基本语法

1、基本语法 CREATE OR REPLACE PROCEDURE 存储过程名(param1 in type,param2 out type)  IS  变量1 类型(值范围);  变量2 类型(值范围);    BEGIN    select count(*) into 变量1 fr...

2019-12-12 22:30:54 54 0

原创 【技术总结】使用Filter进行XSS过滤

一般来说,系统进行表单数据处理时都需要解决类似XSS攻击以及转义这样的问题,这样的问题具有普遍性,不可能在每个提交表单数据的处理中都加入重复的处理代码。通常通过 Filter 或 Interceptor 来拦截处理。 这里介绍下通过 Filter 进行XSS过滤的方法。 流程:使用Filter拦...

2019-11-18 16:41:52 814 0

转载 【Java8】默认方法

Java 8中加入默认方法主要是为了支持库设计师,让他们能够写出更容易改进的接口。这一方法很重要,因为你会在接口中遇到越来越多的默认方法,但由于真正需要编写默认方法的程序员相对较少,而且它们只是有助于程序改进,而不是用于编写任何具体的程序,我们这里还是不要啰嗦了,举个例子吧。 List<Ap...

2019-11-16 15:45:23 42 0

原创 前端通过ajax发送请求与后端通过HttpClient发送请求的区别

发送HTTP请求不外乎两种方式:前端的Ajax与后端的HttpClient。 两者的目的是一样的,就是通过HTTP请求与目标服务端进行交互。 但是这两者有什么区别呢,由我今天遇到的一个问题说起。 背景:服务器A和服务器B是在公司的局域网中,运维通过网关设置了部分接口(/inner/**)只能在局域...

2019-10-30 19:57:42 397 1

转载 【MySQL】MySQL5.7配置主从复制

参考链接: LINUX服务器MYSQL5.7配置主从复制 mysql5.7主从复制原理及基本配置 MyCat教程【mysql主从复制实现】 查看从库状态: show slave status\G; 所遇问题: 1、The slave I/O thread stops because mast...

2019-10-19 11:36:04 110 0

转载 【ZooKeeper】安装ZooKeeper

准备 CentOS7.7 ZooKeeper官网下载 安装ZooKeeper //解压 tar -zxvf zookeeper-3.4.14.tar.gz //拷贝 cp zookeeper-3.4.14 /usr/local/zookeeper -r //查看目录 cd /usr/local...

2019-10-16 22:55:21 49 0

转载 分布式数据库之读写分离

读写分离 解决方案 应用层 中间件层 Spring动态数据源 + Mybatis Plugin 实现读写分离

2019-09-01 23:17:11 302 1

转载 分布式之分布式锁

什么叫分布式锁 自行百度。。。 为什么需要分布式锁 分布式锁技术选型 文件系统 流程 从一个指定的位置判断是否存在lock.txt,不存在则创建(也就是意味着当前线程获得了锁),执行结束后删除lock.txt;存在时则创建不成功(进行循环等待,直到创建成功)。 问题 当t1创建lock.txt...

2019-08-29 23:38:54 46 0

转载 分布式事务之基础理论

什么是分布式事务 分布式事务指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。 简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。 本质上来说,分...

2019-08-25 23:01:14 78 0

转载 分布式事务之TCC

业务场景介绍 假设现在有一个电商系统,里面有一个支付订单的场景。 那对一个订单进行支付之后,我们需要做下面的步骤: 更改订单的状态为“已支付” 扣减商品库存 给会员增加积分 创建销售出库单通知仓库发货 以上业务场景对应下面的代码: public class OrderService { ...

2019-08-25 22:47:39 78 0

转载 【MySQL】对JSON数据进行查询

MySQL根据JSON字段的内容检索查询数据 使用 字段->’$.json属性’ 进行查询条件 使用json_extract函数查询,json_extract(字段,"$.json属性") 根据json数组查询,用JSON_CONTAINS(字段,JSON_OB...

2019-08-24 17:21:01 16613 0

转载 Redis(六)之问题与解决

请问大家,在使用redis的过程中有没有遇到过什么问题呢?比如缓存雪崩,缓存穿透,阻塞等。这些问题的产生原因是什么呢?又该怎么解决呢?本篇文章就说说这个。 阻塞 因为redis是单线程架构,所有的读写操作都是在一条主线程中完成的,所以一旦出现阻塞,将是致命的。 内在原因 (1)API或数据...

2019-08-19 16:16:22 39 0

转载 Java基础之创建对象的四种方式

1.使用new创建对象 使用new关键字创建对象应该是最常见的一种方式,但我们应该知道,使用new创建对象会增加耦合度。无论使用什么框架,都要减少new的使用以降低耦合度。 public class Hello { public void sayWorld() { ...

2019-08-14 16:14:43 58 1

原创 【Vue】axiox基本使用

安装依赖 npm install axios 在全局配置文件main.js引入 import axios from 'axios' // 将axios绑定到全局Vue原型上 Vue.prototype.$axios = axios 使用 this.$axios.get(&...

2019-07-29 22:49:04 224 0

原创 【Vue】引入第三方组件(Layui)

关于Vue引入第三方组件的方式有很多,但测试过很多方式都不可行。我的需求是在使用Vue脚手架搭建的项目中引入Layui这个前端框架,方式有两种,第一种是使用npm导入,第二种拷贝Layui文件夹(js和css)。关于第一种方式,我在百度上找了很多种方法,但是都出现引用组件未定义的问题。在此我记录下...

2019-07-21 23:35:42 2741 0

原创 【技术总结】从开发到生产

前言 决定企业是否具有顽强的生命力的决定性因素之一就是效率。对于互联网企业来说,一条从开发到生产的产品线就像是自己的命根子,其效率直接影响到企业是否能在市场中占有一席之地。 主线:开发->测试->生产 例子: 开发A实现(需求或BUG) 运维A部署 测试A测试 执行1 执行2 执行3...

2019-07-16 23:50:56 115 0

原创 【设计模式】观察者模式

前言 之前零零散散看了一些有关设计模式的博客,没有好好总结归纳。最近就想好好学学设计模式以及相关的应用场景,并且通过博客记录下这个过程。 这系列博客主要分为设计模式的概述、示例和总结这三个方面来学习设计模式。 概述 观察者模式,顾名思义就是观察与被观察的关系,比如你在烧开水得时时看着它开没开,你就...

2019-07-10 23:36:26 66 0

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