- 博客(109)
- 收藏
- 关注
原创 记一次获取access_token为空引发的生产问题 -1000
项目开发中微信渠道为了获取用户地理位置(经纬度)需要调用微信JSAPI,在参数的获取过程中需要后端服务器请求获取access_token,在生产上报出了空指针,也就是未获取到access_token,我们看下获取access_token接口说明。接口调用请求说明https请求方式:GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET.
2022-03-31 15:48:15 4657
原创 vmware设置虚拟机静态ip
直接上教程 之前从未成功过注意点:子网ip和网关一定和vmware网关一致1、首先讲虚拟机的网络连接模式修改为NAT模式2、查看 虚拟机的网络信息(子网ip,子网掩码,网关IP)入口 编辑->虚拟网络编辑器->NAT设置 记录下子网IP,网关IP和子网掩码3、在centos7中 使用命令vi /etc/sysconfig/network-scripts/ifcfg-ens33BOOTPROTO=staticONBOOT=yesIPADDR=192.168...
2021-12-20 15:23:05 1674
原创 数据库表联查出现的笛卡尔积
一、笛卡尔积定义笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尓积(Cartesian product),又称直积,表示为X*Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员 。假设集合A={a, b},集合B={0, 1, 2},则两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}。二、笛卡尔积出现的原因比如我们有两张表user和schoolSELECT a.user_id, b.sc.
2021-09-17 16:31:20 4558
原创 使用lua解决减库存问题-活动报名
本人在项目中看到了同事代码,要实现得业务是:活动报名(人数限制,先到先得,每个人可以帮人家报名),为了提高速度将剩余得报名人数放入redis中,再某个时间将redis中的剩余报名人数同步到数据库,报名成功,减掉该用户报名人次,在代码得review时,看到了使用redis实现了分布式锁来防止报名超出限制(这种redis是实现的分布式锁是存在问题的),看代码锁实现。private String getRedisLock(int tryTime, String key) { String value
2021-04-20 11:05:04 479 1
原创 文件上传org.springframwork.web.HttpMediaTypeNotSupportedException:content type ‘utipart/form-data‘ not .
问题:实现图片上传时出现了org.springframwork.web.HttpMediaTypeNotSupportedException:content type 'utipart/form-data' not support的异常原因:接口层使用@RequestBody,前端使用表单的方式提交的图片,@RequestBody只能接受Json格式的字符串,因此出现了该异常。解决方案:方案1.如果接口层的@RequestBody是非必须的,那么可以直接去掉该注解,前端依然使用Formdata提
2021-01-29 09:17:30 602
转载 拼接原生js onclick方法传值
https://blog.csdn.net/qq_25958497/article/details/86621651
2020-11-09 18:36:58 331
原创 List.clear和List==null
今天在看公司的源码时,有一段代码类似以下代码,根据条件匹配。public void test() { List<Map<String, Object>> listMap1 = new ArrayList<>(); List<Map<String, Object>> listMap2 = new ArrayList<>(); for (Map map1: listMap1
2020-08-25 10:51:38 1039 1
转载 hadoop安装配置教程
https://blog.csdn.net/weixin_44198965/article/details/89603788
2020-08-03 14:56:33 154
转载 手写ioc
目录概述1.Component注解定义2.Reject注解定义3.User对象定义4.UserService实现5.UserController实现6.IocContext io...
2020-04-01 11:19:58 212
原创 removeAll引发得java.lang.UnsupportedOperationException异常
异常:java.lang.UnsupportedOperationException at java.util.AbstractList.remove(AbstractList.java:161) at java.util.AbstractList$Itr.remove(AbstractList.java:374) at java.util.AbstractCollection.rem...
2020-03-11 15:21:46 3681
原创 Java设计模式之模板模式
模板模式一、模板模式简介在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。抽象类中定义算法的骨架,骨架中的具体算法由子类实现。三、实现实例以开发为例,程序员需要编码、测试、调试等过程。不管是java开发程序员还是c++程序员都需要经过这...
2020-01-09 16:37:40 268
原创 线上cpu 100%排查过程
线上cpu 100%排查过程目录线上cpu 100%排查过程一、模拟死循环二、排查1. 使用top命令,查看进程情况。2. 使用 top -Hp pid 查看某进程的线程情况3. 使用jvm指令 jstack -l pid 查看虚拟机当前时刻的堆栈快照。四.排查代码一、模拟死循环首先模拟一个死循环,然后调用该接口。@RestControllerp...
2019-11-28 17:20:05 359
原创 线程死锁以及死锁解决的方法
线程死锁以及死锁解决的方法目录线程死锁以及死锁解决的方法一、什么是死锁二、死锁产生的条件三、代码演示1. 死锁产生2.调整加锁顺序避免死锁产生3. 加锁时限避免死锁产生一、什么是死锁死锁是在两个以及两个以上线程在执行的过程中,由于资源竞争而出现的一种阻塞现象,如果没有外力作用,将会持续下去。二、死锁产生的条件互斥条件:每个锁资源一次只能有...
2019-11-27 16:21:36 907
转载 RabbitMQ事务和Confirm发送方消息确认——深入解读
RabbitMQ事务和Confirm发送方消息确认——深入解读RabbitMQ系列文章RabbitMQ在Ubuntu上的环境搭建深入了解RabbitMQ工作原理及简单使用RabbitMQ交换器Exchange介绍与实践RabbitMQ事务和Confirm发送方消息确认——深入解读使用Docker部署RabbitMQ集群你不知道的RabbitMQ集群架构全解引言根据前...
2019-11-13 15:25:32 224
原创 rabbitmq的常用的五种队列
目录rabbitmq有六种队列简单队列work模式发布订阅模式路由模式(routing模式)topic模式rabbitmq有六种队列简单队列、work模式、发布订阅模式、routing模式、topics模式、RPC模式。简单队列一对一的队列。生产者P生产消息放入队列(这里不是简单地直接放入队列中),消费者C消费消息,消费者和生产者是一种一对一的关...
2019-11-12 17:19:17 3847 2
原创 com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known serve
异常:com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known servercom.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refuse...
2019-11-11 16:21:55 293
原创 Can't update table 'aa' in stored function/trigger because it is already used by statement which inv
今天在使用触发器时,我是想在插入一条记录后更新改插入表中的某一条记录,触发器写好之后,当我插入一条数据时,数据库报错:[Err] 1442 - Can't update table 'aa' in stored function/trigger because it is already used by statement which invoked this stored function/...
2019-10-29 16:38:11 4646
原创 spring的五种自动装配方式
当Spring装配Bean属性时,有时候非常明确,就是需要将某个Bean的引用装配给指定属性。先写两个类public class UserServcie { private UserDao userDao; public UserServcie(UserDao userDao){} public void setUserDao(UserDao userDao)...
2019-10-23 17:33:44 1295
原创 spring的四种注入方式
四大注入方式:setter注入、构造器注入、工厂注入,注解注入。一、setter方法注入:利用类的Setter方法将组件注入,以下例子就是利用public void setUserDao(UserDao userDao){this.userDao = userDao;} 注入,直接上代码。public class UserDao {}public class UserServci...
2019-10-23 16:43:58 2139
原创 java 常见程序分析题
1.package readpro;public class Man extends Person { public Man(){ System.out.println("Man 初始化"); } { System.out.println("Man 普通代码块"); } static{ System.out.println("static Man"); ...
2019-10-10 11:06:03 2677
转载 已知IP地址,如何计算其子网掩码,默认网关地址,网络地址等。
原文地址https://blog.csdn.net/here962464/article/details/78940056首先要铺垫一些基础知识,整个互联网就是一个单一的、抽象的网络。IP地址就是给互联网上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的 32 位的标识符。注意,每个IP地址都是独一无二的,就像人的身份证号码一样。 而IP地址又分为A类、B类、C类、D类和...
2019-10-08 12:40:14 5379
转载 String类 问题
String str1 = “abc”; System.out.println(str1 == “abc”);步骤: 1) 栈中开辟一块空间存放引用str1, 2) String池中开辟一块空间,存放String常量”abc”, 3) 引用str1指向池中String常量”abc”, 4) str1所指代的地址即常量”abc”所在地址,...
2019-08-07 14:35:48 164
原创 mybatis的一级缓存和事务
Mybatis 默认开启一级缓存,其一级缓存是SqlSession级别的,sqlSession级别的缓存,意味着伴随着sqlSession的生死。一级缓存的作用:当使用同一个sqlSession对数据库做相同的查询时,第一次查询的结果会放入缓存,在缓存中是以Map的形式存放的,当后面相同的查询到来时就会去缓存中取数据,而不再查询数据库。注意:这里的后面相同的查询到来时就会去缓存中取数据是有...
2019-08-07 09:51:08 1632 2
原创 springcloud框架-Ribbon实现负载均衡
一、什么是Ribbon?Ribbon是Netflix公司提供的负载均衡器,属于客户端的负载均衡,为Ribbon配置服务提供者的列表,Ribbon就会根据负载均衡的算法,通过改变http的行为,来达到负载均衡的效果。二、Eureka配合Ribbon1、使用Eureka配合Ribbon好处当Ribbon配合Eureka使用时,Eureka是一个服务的注册中心,有服务的注册列表,Ribb...
2019-08-05 18:10:02 200
原创 Mysql数据库存储引擎及索引的数据结构
Mysql的Mysam存储引擎和Innodb存储引擎的索引的数据结构都是B+树结构。一、什么是B+树结构?B+树结构是一种多路查找树的结构,该数据结构有以下特点:根节点至少有两个子结点。 非根节点至少有m/2个关键字和子结点,至多有m个关键字和子结点。 非叶子结点不保存数据,只保存关键字,只起到索引的作用。 非叶子结点的关键字全部存在于叶子结点。 叶子结点存储所有关键字和数据,...
2019-08-05 10:02:32 2059
原创 输入一个正整数字符串 输出他的二进制字符串不能使用 Integer.toBinaryString()方法
两个放的思想都是每次将最低位拿出,只是对最低位的处理上不同第一个 将每一位组合成十进制的数,顺序就是正整数二进制的顺序。第二个 将每一个最低位变为字符进行拼接,会导致高位变为低位,所以最后进行一个字符串的逆转,即可得到结果。看代码:public class Test { /** * 输出正整数字符串 输出二进制字符串 * @param line * @retur...
2019-07-11 11:00:38 866
原创 Java的浅克隆和深克隆
浅克隆:对于对象的基本数据类型的变量,将值复制一份传递给新对象,是两份数据,对于引用类型变量,会将引用值也就是对象的地址复制一份传递给新对象,是同一份数据。深克隆:对于基本数据类型的变量,将值复制一份传递给新对象,是两份数据,引用类型会将引用的对象复制一份,然后将新的对象地址传递给新对象。浅拷贝:直接上代码:根据地址可知引用类型并未复制,仍然是同一个对象。public class...
2019-07-08 19:35:08 165
原创 两个有序数组的合并 新数组也有序
题目:有两个有序数组a和b,将它们合并成数组c,需要c也是有序数组。具体思路:将新建一个长度为a和b长度之和的数组,将较长的数组复制到新数组,将较短的数组每个元素插入到指定位置(用到插入排序算法)。时间复杂度O(n^2)public class ArrayMerge { /** * 思路:插入排序 * 1.将长数组复制到一个两个数组之长之和的数组 * 2.将短...
2019-06-04 20:39:44 1240
原创 剑指offer 二维数组的查找
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。package demo;public class Test { public static void main(String[] args) { int[][] arrys = {{1,2,3,4,...
2019-06-04 09:15:35 210
原创 剑指offer 数组中重复数字
题目一描述:在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3。代码加思路:import java.util.Arrays;import java.util.HashS...
2019-06-03 20:50:17 282
原创 Java虚拟机之对象的创建、内存布局和访问定位
一、对象的创建在Java运行的过程无时无刻都有对象的创建,也存在的对象的销毁或者回收。一个对象创建的过程:当虚拟机遇到new指令时,首先要查看要创建的对象所属的类有没有被加载过,如果未被加载,就先去加载类,在类加载检验通过后,就开始为新生的对象分配内存空间,你可能会问对象还在创建中为啥就分配内存空间了呢? 其实在类的记载过程中,该类的实例对象所需的内存空间就已经确定了。内存空间分配...
2019-05-20 20:46:00 230
转载 Java并发编程:volatile关键字解析 超详细
请查看https://www.cnblogs.com/dolphin0520/p/3920373.html
2019-05-19 19:03:24 179
转载 synchronized四种锁状态的升级
一、背景在 Java 语言中,使用 Synchronized 是能够实现线程同步的,即加锁。并且实现的是悲观锁,在操作同步资源的时候直接先加锁。加锁可以使一段代码在同一时间只有一个线程可以访问,在增加安全性的同时,牺牲掉的是程序的执行性能,所以为了在一定程度上减少获得锁和释放锁带来的性能消耗,在 jdk6 之后便引入了“偏向锁”和“轻量级锁”,所以总共有4种锁状态,级别由低到高依次为:无锁状态、偏...
2019-05-15 19:59:34 2158
原创 mysql数据库索引 HASH和B树
什么是索引?索引是一种特殊的数据结构,可以用来查询数据库表中特定的记录。他由数据库中的一列或者多列组成,可以提高数据库的查询速度。我们先看一下如果没有索引的情况下数据库是怎么查询数据的?例如查询select * from usr where name = '张三';当执行这句sql语句的的时候,数据库会逐行遍历整张表,对于每一行都会比较name是否等于张三,因为是要查询所有姓...
2019-05-12 17:54:00 1101
原创 阿里云面试总结
从阿里云的面试问题感觉他对数据库的要求比较高学习到就是收获!!!!!!!!!!!!!!简单面试流程:自我介绍 项目介绍 项目开始往外扩展知识点扩展开始使用mysql数据库是吧?对 那你说一下。。。。。。。。。。。。。。。。。。。怎么创建一个表?create table 表名{字段1 类型,字段2 类型}在建表的时候还要考虑表与表之间的关系,主键外键,三大范式等...
2019-05-08 18:04:05 6007
原创 java面试题整理
一、Java 基础1.JDK 和 JRE 有什么区别?JRE(Java Runtime environment),Java运行环境,包含了Java虚拟机和核心类库。JDK(Java Development Kit),Java开发工具包。包含了jre,一些工具(javac/javap)和基本类库。2.== 和 equals 的区别是什么?==做值比较,当比较的是基本数据类型,直接...
2019-05-04 19:46:55 440 1
转载 缓存穿透、缓存击穿、缓存雪崩区别和解决方案
一、缓存处理流程 前台请求,后台先从缓存中取数据,取到直接返回结果,取不到时从数据库中取,数据库取到更新缓存,并返回结果,数据库也没取到,那直接返回空结果。 二、缓存穿透&n...
2019-04-21 17:03:56 276 1
转载 为什么说Redis是单线程的以及Redis为什么这么快!
一、前言近乎所有与Java相关的面试都会问到缓存的问题,基础一点的会问到什么是“二八定律”、什么是“热数据和冷数据”,复杂一点的会问到缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题,这些看似不常见的概念,都与我们的缓存服务器相关,一般常用的缓存服务器有Redis、Memcach...
2019-04-21 12:58:49 289
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人