- 博客(90)
- 收藏
- 关注
原创 重写异常的fillInStackTrace方法避免回溯堆栈
1.定义一个异常类public class MyException extends Throwable { public MyException(String message) { super(message); }}2.抛出这个异常 @RequestMapping("exception") public String exception() throws MyException { System.out.println("exception");
2021-08-28 16:55:31
1868
原创 Nginx负载均衡失效
1.配置 upstream test_api_backend { server 192.168.0.1:8080; server 192.168.0.2:8080; server 192.168.0.3:8080; session_sticky cookie=test_web_route; }2.现象负载均衡失效,通过域名访问后请求总是打到同一台机器。3.原因使用了session_st
2021-08-01 21:09:41
2077
原创 java火焰图的生成
采集工具:async-profiler(为什么不用perf?因为它采集的数据生成svg老是报错,太菜,不会解决) 绘图工具:FlameGraph1.async-profilergit clone https://github.com/jvm-profiling-tools/async-profilercd async-profilermake执行以下命令进行数据的采集-d代表采集时间,单位为秒${pid}为需要采集的进程id其他参数可以执行./profiler.sh看帮助./p
2021-07-28 19:11:56
1143
原创 Guava中EventBus,事件发布订阅使用
引入依赖 <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>30.1.1-jre</version> </dependency>
2021-06-17 16:57:54
1267
3
原创 git revert 之后还想要提交该分支的代码怎么办
方法:revert这次revert开发分支:version主分支:master过程如下:提交merge request 合并version到master 由于某些原因,这部分代码暂时无需合并到master,因此revert这次mr 现在又想重新提交version分支的代码,但是却提示无改动,因为revert是在之前的基础上生成了一个回滚的提交记录 git pull 拉取远程最新的master代码,切换到version分支,merge master的代码 找到上次reve.
2020-08-06 15:48:23
4585
原创 mac 安装eclipse mat java内存分析工具
此版本为独立版,无需安装eclipse1. 进入官网下载软件https://www.eclipse.org/mat/如果下载较慢,可以切换镜像2. 下载后解压,直接打开软件提示报错查看该日志文件,提示该目录无法写入,可以使用-data参数java.lang.IllegalStateException: The platform metadata area could not be written解决办法:收到建立工作目录,并修改软件包内容中的In...
2020-07-01 16:42:20
2909
2
原创 使用lombok,参数名称第二个字母大写导致参数接收不到
import lombok.Data;@Datapublic class TestDTO { private Integer pId;}如上代码所示,在这个DTO中,传递如下参数,但是后端无法接收{ "pId":1}原因:使用lombok的@Data注解后,生成的get/set方法如下// 参数名的首字母和第二个字母都变成了大写getPId();...
2020-05-02 19:16:23
7615
2
原创 get请求,把一个url当做参数,进行url重定向的一些坑
场景http://www.domain.com/redirect.action?url=xxx发送给用户的是上面的链接,用户点击后跳到redirect.action里进行一些处理,然后重定向到url坑1url为http://www.real.com?name=zhangsan&age=40实际链接http://www.domain.com/redirect.act...
2019-09-10 17:38:00
7592
原创 记录一次数据库回滚操作
回滚工具git地址https://github.com/danfengcao/binlog2sql过程:执行sql,update xxx set a = 1 ........执行卧槽,忘了加条件咦咦咦,之前用Navicat打开了这张表,数据还在。。。。刷新,卧槽,我为什么要刷新gg要被开除了赶紧百度,mysql没有事务怎么回滚binlog2sql------前提...
2019-03-22 16:07:02
4361
原创 mysql主从复制配置
参考https://blog.youkuaiyun.com/deeplearnings/article/details/78398526两个mysql版本最好相同,或者前面的版本相同,如5.7.x MASTERvim /etc/my.cnf# 添加如下配置,如提示这个文件只读,把权限改成777,改完后再改回664,要不然mysql无法启动[mysqld]log-bin=mysql...
2019-02-15 15:32:03
1092
原创 canal 监控mysql数据更新
官方的quickStarthttps://github.com/alibaba/canal/wiki/QuickStart本文参考https://blog.youkuaiyun.com/hackerwin7/article/details/37923607过程1.打开mysql的binlog-在mysql的my.cnf文件里[mysqld]log-bin=mysql-bin #添加...
2019-02-14 15:55:57
3208
原创 redis 主从复制,哨兵模式 sentinel, 集群模式Redis Cluster
本文配置文件部分,进行了引用https://www.cnblogs.com/zxtceq/p/7676911.htmlhttps://blog.youkuaiyun.com/u010648555/article/details/79430105https://www.cnblogs.com/yuanermen/p/5717885.html一个pc运行多个redis只需复制一份配置文件...
2019-02-12 16:05:42
1209
原创 微信公众号-自动回复
git代码https://github.com/1065712890/wxwx官方文档https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421135319在公众号后台-开发-基本配置,进行如下配置1.服务器地址是微信会将接收到的用户消息发送到你的这个地址2.令牌是用来验证消息的确来自微信服务器,在你的代码...
2019-02-10 18:00:06
1847
原创 java8 lambda stream
目录 为什么要使用lambda和streamlambda表达式基本语法练习四大核心函数式接口方法引用与构造器引用创建StreamStream筛选与切片Stream映射Stream排序Stream查找与匹配Stream归约与收集 Stream练习为什么要使用lambda和streampackage lambda;import org....
2018-12-03 16:03:58
1211
原创 Java NIO Demo
Buffer相关操作, position limit capacity markpackage nio;import org.junit.Test;import java.nio.ByteBuffer;/** * @program: netty_hello * @description: test buffer * @author: dengbin * @create: ...
2018-11-23 16:10:15
980
转载 JDK动态代理和CGLIB代理
参考 https://www.cnblogs.com/MOBIN/p/5597215.html通过实现接口实现通过动态代理,给普通的对象生成代理对象,对其中的方法进行前置和后置的处理 例如spring的事务使用动态代理的五大步骤 1.通过实现InvocationHandler接口来自定义自己的InvocationHandler;2.通过Proxy.getProxy...
2018-08-28 12:16:12
1049
原创 Java并发编程(二)
CountDownLatch 解释一下这张图 新建一个coundDownLatch,值为3 线程A调用coundDownLatch的await方法,线程将被阻塞 线程1执行的实现调用coundDownLatch.countDown方法,则coundDownLatch的值减一,变成2 知道coundDownLatch的值为0,线程A恢复运行public class CountD...
2018-08-09 11:06:00
867
原创 Java并发编程(一)
等待更新package cn.dengbin97.concurrency;import java.util.concurrent.CountDownLatch;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Sem...
2018-08-05 12:55:29
927
原创 Java 类加载机制,双亲委派模型和实现自己的类加载器
类加载可以看这个博客 http://www.importnew.com/25295.html双亲委派模型启动类加载器(Bootstrap ClassLoader):负责加载 JAVA_HOME\lib 目录中的,或通过-Xbootclasspath参数指定路径中的,且被虚拟机认可(按文件名识别,如rt.jar)的类。扩展类加载器(Extension ClassLoader):...
2018-08-03 11:12:56
1099
原创 MySql锁机制
锁的分类 按操作分:读锁/写锁 按粒度分:表锁/行锁表锁偏向MyISAM存储引擎,开销小,加锁快,无死锁,锁定粒度大,发生冲突概率高,并发度低读锁//建表mysql&amp;amp;gt; create table mylock( -&amp;amp;gt; id int not null primary key auto_increment, -&amp;amp;gt; name varchar...
2018-08-02 22:48:05
956
原创 MySql查询截取分析
小表驱动大表 总结 子查询为小表时用in,因为此时是子查询驱动主查询 子查询为大表时用exists,因为此时是主查询驱动子查询
2018-08-02 16:24:13
1320
转载 Java 常见异常类
转载自 https://blog.youkuaiyun.com/liu_jian140126/article/details/50517001受检查的异常 ,需显式处理java.lang.ClassNotFoundException(类加载异常) Class.forName(&quot;myclass&quot;);java.lang.IllegalArgumentException(方法参数错误)...
2018-08-01 17:14:48
1518
原创 MySQL索引
索引(index)是帮助MySQL高效获取数据的数据结构 索引的目的在于提高查询效率,可以类比字典 可以理解为:排好序的快速查找数据结构优势 1.类似大学图书馆建立书目索引,提高数据检索的效率,降低数据库的IO成本 2.通过索引列对数据进行排序,降低数据排序的成本,降低了CPU的消耗劣势 1.实际上索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录,所以索引列也是要...
2018-07-29 16:46:15
961
原创 MySql引擎
MySql服务层主要用于定义一些与存储引擎无关的东西,因为底层的存储引擎可能不同,所以不能依赖具体的存储引擎存储引擎针对表而不是针对库,也就是一个数据库里的表存储引擎可以不同,但是这样不推荐。MyISAMMyISAM存储引擎表由MYD(数据文件)和MYI(索引文件)组成特性:1. 并发性和锁级别 使用表级锁,也就是会对整张表进行加锁,进行读的时候加共...
2018-07-27 10:43:28
1464
原创 一些java程序员的知识点
进程阻塞的原因不包括A时间片切换 B等待I/O C进程sleep D等待解锁A,A发生后,进程为就绪态,不是阻塞最佳适应算法最佳适应算法是指从全部空闲区中找出能满足作业要求的、且大小最小的空闲分区的一种计算方法,这种方法能使碎片尽量小。 空闲分区从小到大排序,从小的开始查找PreparedStatement与Statement1.PreparedStat...
2018-07-19 20:08:50
1499
原创 java线程,线程池
线程状态 NEW 状态是指线程刚创建, 尚未启动 RUNNABLE 状态是线程正在正常运行中, 当然可能会有某种耗时计算/IO等待的操作/CPU时间片切换等, 这个状态下发生的等待一般是其他系统资源, 而不是锁, Sleep等 BLOCKED 这个状态下, 是在多个线程有同步操作的场景, 比如正在等待另一个线程的synchronized 块的执行释放, 或...
2018-07-08 13:49:36
989
原创 tcp三次握手,四次挥手,ssl握手协议
三次握手 图中ack为ackbit,也就是ack标志位 (1)客户端发送连接请求,synbit为1,并且初始化一个随机序列号(客户端为SYN_SENT状态) (2)服务端收到请求,同意请求,分配空间,返回synack段给客户端,其中synbit为1,ackbit为1,acknum为客户端初始序列号+1,同时产生一个自己的初始序列号(服务端为SYN_RCVD状态) (3)客户端收到后发送...
2018-06-30 10:55:13
3251
原创 深信服科技2019年校园招聘 移动应用开发 一面
1、spring, aop, ioc2、springmvc前端控制器,怎样找到对应的处理处理器 设计这个查找模块。。答的map 怎样用别的方式快速查找。。包括查找带有正则匹配的3、一个公交站在1分钟内有车经过概率是p,问3分钟内有车经过概率4、http的格式、http缓存机制、怎么禁用缓存 Cache-Control Cache-C...
2018-06-23 16:46:34
1265
原创 深信服科技2019年校园招聘研发试题
1、#include <stdio.h>int main(){ char *str1 = "abcd\n"; char str2[10] = "abcd\n"; char str3[][10] = {"abcd\n",""}; char *str4[] = {"abcd\n",""}; printf("
2018-06-21 22:18:08
6330
4
原创 37互娱,2019秋招提前批,Java服务端二面
1、项目 2、学校有哪些课程,平时怎么学习 3、java多线程 4、java集合类,currentmap 5、java虚拟机 6、垃圾回收 7、io和nio没有什么具体的问题,给个主题,然后自己说…....
2018-06-21 21:56:28
1377
原创 37互娱,2019秋招提前批,Java服务端一面
1、netty的了解 2、说一下java里的一些数据结构 3、hashmap默认容量,arraylist默认容量,hashmap怎么解决冲突 4、tcp,udp,滑动窗口 5、mysql存储过程 6、进程和线程的区别 7、设计模式 8、掌握哪些技术,能在做游戏时有哪些应用 9、项目,遇到的问题,怎么解决。...
2018-06-19 19:47:00
1195
原创 37互娱,2019秋招提前批,Java
1、以下哪个是原子操作 A、x = 10 B、y = x C、x++ D、x = x + 1 前三个都至少需要先读取,再操作,非原子操作。而D的话,直接赋值。“原子操作(atomic operation)是不需要synchronized”,这是Java多线程编程的老生常谈了。所谓原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有任何 contex...
2018-06-07 20:46:46
1516
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人