- 博客(39)
- 资源 (3)
- 收藏
- 关注
原创 面试题整理
获取注册到ioc容器的类全路径名称。竞争锁的线程不多,持有锁的时间也不长时,如果直接阻塞没有竞争到锁的线程,cpu需要从用户态转到内核态,开销过大。偏向锁不会主动释放,下一个线程访问时,先查看上一个线程是否存活,没有存活,则将对象重置为无锁。初始化模块,配置source,配置是否为web应用,创建初始化构造器,创建应用监听器,配置main方法所在的类。如果是两次握手,客户端报文在网络中拥堵了,就会重复发送,服务器接受到报文就建立连接并发送数据,客户端发现是历史连接再去终止连接时,服务器资源已经被浪费了。
2022-09-08 15:06:35
1057
1
原创 容器化+RPC中的网络问题
事情的起因是这样的,最近项目提测,测试告诉我说主要流程有超时问题,提测被打回了,于是我看了下日志,发现都是远程调动其他服务超时(服务发现方式),确认了被调用的服务是可以正常响应的之后,发现被调用的服务和注册中心都是通过docker部署,而我提测的项目是直接部署在物理机上的,猜测可能是网络问题,于是先让测试把我提测的项目也容器化,之后调用不再超时。问题解决了,然而其中的原理还是一头雾水,docker局域网,服务发现,服务网关,这其中到底是问什么导致网络不通呢。网上查阅了一些资料,梳理一下这个问题...
2021-09-04 13:17:45
594
1
原创 基于消息中间件的分布式系统生产消费的一些问题
1. comsumer收到消息处理失败可以进行重试(会导致消费端一直卡在那儿,无法处理后面的消息),或者根据业务需要进行一定次数的重试(可能会导致超时)2. 如果出现大量失败,说明可能是消息有问题或者消费端服务出现问题,可以对消息做一个校验,如果发现消息本身有问题就直接丢弃,否则可以将消息暂存3. 批量拉取消息,如果其中部分失败怎么办?看业务需要,可以重试(注意保证消费端的幂等性),可以暂存或丢弃4. 发送端可以将本地事务和发送消息作为一个整体事务,消息发送失败则对本地事务回滚。为了避免消息实际已经发
2020-09-18 17:30:10
612
原创 kafka消费者配置
1.auto.offset.reset消费策略:最早/最新设置为earliest时从最早的数据开始消费,设置为latest时消费最新的数据。前提是该消费者组尚未生成offset,若已经记录有offset则无论如何设置,均从offset记录位置开始消费。2.session.timeout.ms一次消费到提交offset的时间...
2020-05-27 17:52:48
904
原创 单元测试中PowerMokito的一些使用
测试类需加注解模拟静态方法:PowerMockito.mockStatic(JsonUtil.class);PowerMockito.when(JsonUtil.parseJson(null)).thenReturn(dicWord);被测方法中new的对象可以这样模拟(被模拟类需加到@PrepareForTest注解后面):PowerMockito.whenNew(...
2020-01-13 17:39:09
405
原创 lucene分词部分源码阅读-分词流程
分词入口:子类调用 Analyzer.totkenStream(String fieldName,Read read)。构建分词器,读入待分词文本。子类中实现createComponents方法将需要的Tokenizer,及Filter传入TokenStreamComponents ,TokenStreamComponents是Analyzer的内部类。返回对象为包装...
2020-01-13 15:19:33
227
转载 分布式系统关注点(15)——「水平&垂直切分」详解
没想到这篇文章写了这么长,一时半会没消化完的话,可以收藏一下先。这是「伸缩性」章节的第四篇,先给新来的小伙伴们简单回顾下前三篇的内容。做「伸缩性」最重要的就是先做好「无状态」,如此才可以随心所欲的进行横向“扩展”,而不用担心在多个副本之间切换会产生错乱。《分布式系统关注点——「无状态」详解》聊的就是这个。不过,就算做好了横向扩展,本质上还是一个“大程序”,...
2019-06-18 11:24:29
328
转载 Class类与ClassLoader
转载链接:https://blog.csdn.net/mrwanzh/article/details/827864981、对Class类的理解:Class类包含了类的信息,如构造方法、方法、属性,可用于反射。以下是所有方法2、获取Class类对象的几种方法:Test test = new Test();(1).test.getClass(); 在运行时确定,所以运行实例...
2019-06-14 14:26:14
227
原创 记一次sql优化
费了很多力,想优化的一个sql还是没优化出来Orz,但还是记录一下想办法的过程中学到的一些优化技巧和自己碰的壁。首先,我想优化的sql长这样:select * from a,o where o.type="xx" and a.aid=o.oid order by o.id limit 1900000,20000两个表连接查询,可以先利用子查询通过单表过滤条件将结果集减小后再连...
2019-06-12 16:32:13
271
原创 Spring注解
@Componet和@Bean都是注册一个Bean,@Bean需写在配置类中。当需要装配第三方库中的bean时,无法使用@Componet注解,可以使用@Bean来注册。@Order(0)标记组件加载顺序,值越小优先级越高@Conditional按条件加载被注解的类:@ConditionalOnBean(类名.class)应用中存在括号内的类时被注解的类生效 ...
2019-06-11 16:23:49
147
原创 try catch finally
try块某处发生异常,直接从异常处跳至catche,之后再是finally,再是try catch finally之后的代码。若发生未被捕获的异常,程序异常退出。
2018-12-26 10:47:07
159
原创 记录一下自己一直迷糊的synchronized关键字
synchronized关键字加在方法上,锁住的是对象,是调用这个方法的对象。当不同的线程使用同一个对象调用此方法时,才会对线程阻塞。例如:有这样一个类class Test { public synchronized void test() { //ToDo something }}当我们 Test test = new Test(),再将这个test对象传递给开...
2018-12-11 17:55:46
125
原创 理解事务隔离级别
事务控制:一组操作要么完全执行,要么完全不执行。在指定一组操作为事务时可以指定其隔离级别。事务隔离级别:不同的事务隔离级别其本质为采用了不同的加锁机制(写加X锁,读是否加S锁,读/写完成释放还是事务完成后释放等)。使用哪一种隔离级别要考虑业务需求,平衡性能问题与数据一致性问题。(隔离级别越高,阻塞越多,并发性越差,吞吐率下降)若不设置隔离级别,我们也可以通过原语操作解决数据不一致问题,但是很麻...
2018-12-10 15:55:31
254
原创 参数传递
做了个小实验,代码如下:class A{ private int x; public int getX() { return x; } public void setX(int x) { this.x = x; }}class B{ void fun(A a){ a.setX(3); ...
2018-11-26 15:57:51
146
原创 MySQL 统计一个字段中各值出现次数并按另一字段分组
表格如下图所示:需统计每个日期下win的次数与lose的次数SELECT date,SUM(CASE type WHEN "win" THEN 1 ELSE 0 END) win, SUM(CASE type WHEN "lose" THEN 1 ELSE 0 END) lose FROM test2 GROUP BY date;查询结果如下图所示:...
2018-09-17 20:21:58
3057
1
原创 BIO、NIO、AIO
BIO:同步阻塞IO,如常见的sokect编程,每连入一个客户端就new一个线程进行处理,当服务器端无法提供出足够的线程,没有分配到处理线程的请求被阻塞或被拒绝。NIO:同步非阻塞IO,只有需要进行IO操作的连接才分配处理线程进行IO.线程不断进行IO权限请求,成功后通知应用程序进行IO操作AIO:异步阻塞IO,程序发出IO请求后,由操作系统获取IO权限并进行IO操作。...
2018-09-14 19:44:04
171
原创 集合类相关
继承了Conllection接口的有:List接口,Set接口Map没有继承Conllection接口 List接口有三个实现类:LinkedList,ArrayList,VectorArrayList和Vector的区别:ArrayList是非线程安全的,效率高;Vector是基于线程安全的,效率低...
2018-07-28 16:28:19
159
原创 数据库事务和隔离级别
数据库事物是指单个逻辑工作单元的一系列操作,要么完全执行,要么完全不执行。事物隔离保证了在并发操作过程中互相干扰,同时,事物提供了从错误中恢复的方法。 事物有四个特性:原子性、一致性、隔离性、持久性。 脏读:指一个事物A读取到另一个事物B尚未提交的数据。若事物B回退,则A读取了无效数据。幻读:事物A查询记录后,事物B插入或删除了记录,事物A再次查询,发现两次查询结果不一致。...
2018-07-26 20:24:33
177
转载 TCP建立连接三次握手和释放连接四次握手
【尊重原创,转载请注明出处】http://blog.csdn.net/guyuealian/article/details/52535294 在谈及TCP建立连接和释放连接过程,先来简单认识一下TCP报文段首部格式的的几个名词(这里只是简单说明,具体请查看相关教程) 序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第...
2018-07-26 19:04:37
182
原创 java虚拟机
jvm下方是移植接口(包括适配器和java操作系统),jvm通过移植接口在具体的平台和操作系统中实现,jvm的上方是java的基本类库和扩展类库以及他们的API,利用java API编写的应用程序和小程序可以在任何java平台运行而无须考虑底层平台,就是因为jvm实现了程序与操作系统的分离,从而实现了java平台的无关性。 因此当Java程序启动的时候,就产生JVM的一个实例;当程序运...
2018-07-24 20:24:09
126
原创 冒泡、快排、归并、堆排序
排序方式 时间复杂度 空间复杂度 稳定性 平均 最坏 最好 冒泡排序 O(n^2) O(n^2) O(n) O(1) 稳定 快速排序 O(nlogn) O(n^2) O(nlogn) O(logn) 不稳定 堆排序 O(nlogn) ...
2018-07-24 20:20:57
188
原创 数据库范式
范式是设计数据库时使用的规范要求,按照范式等级递增,数据库冗余越少,消除增删改查异常。实际设计数据库时要对冗余和效率进行一个综合考虑,并不是遵循越高等级的范式就越好。 第一范式:表的每一列都不可再拆分。第二范式:非码属性必须完全依赖于候选码,所谓完全依赖即不能存在仅依赖主关键字的一部分属性。在1NF基础上消除非主属性对主码的部分函数依赖。要求每一条记录能够被唯一区分。第三范式:任何...
2018-07-22 20:09:18
266
原创 记第一次面试
感谢天津联合咨询给我面试机会,面试官非常亲切,非常nice,然而第一次面试也没有准备的我还是被问成了狗Q:servlet生命周期这个答出来了Q:servlet如何确认调用doget还是dopost方法答:客户端指定。然后吧,面试官就一直引导,可惜我一直在他想要的答案边缘,一直没有正中靶心,其实他只是想让我答httpmethodQ:谈一谈范式我??范式??过了会而我才反应过来时数据库学过的那个范式。...
2018-07-04 20:56:56
152
原创 数据库连接池的工作原理
最重要的一点就是重写connection的构造方法,使得该Connection调用close方法时并不真正的关闭,而是交还给池。这个池如果想自己模拟可以使用LinkList来维护,创建Connection加入集合,使用时从第一个开始按顺序取出,回收的Connection也是重新加入List即可。jdbc+c3p0:package com.face.sql.jsu;import java.io....
2018-06-05 20:27:29
246
原创 java垃圾回收
java有垃圾回收器负责回收无用对象占用的内存资源。但也有特殊情况:假定你的对象(并非使用new)获得了一块“特殊”的内存区域,由于垃圾回收器只知道释放那些经由new分配的内存,所以它不知道该如何释放这块“特殊”内存。此时可以在类中定义一个finalize()方法,等待垃圾回收器调用。也可以手动调用垃圾回收器。记住:对象有可能不被垃圾回收只要程序没有濒临存储空间用完
2017-12-29 17:45:47
294
原创 spring+springMVC+mybatis整合搭建crud项目日记
2017.9.26创建maven项目pom.xml文件报错:Plugin execution not covered by lifecycle configuration: org.apache.maven.plugins经百度得知要在lifecycle-mapping-metadata.xml中添加未识别的插件,然后不知道该怎么添加。10.14前段时间一直在忙和同学合作的一个
2017-10-31 19:25:33
873
原创 mybatis两表联合查询
tbl_emp包含字段:emp_id, emp_name, gender, email, d_idtbl_dept包含字段:dept_id,dept_name部分代码: emp_id, emp_name, gender, email, d_id,de
2017-10-17 19:54:54
1523
原创 getAttribute与getParameter,@ModelAtrribute
@ModelAtrribute注解的方法会在所有被@requestMapping注解的方法执行前执行request.getAttribute()方法获取的属性是从web容器中获取的,在请求处理阶段。当两个web页面为转发关系时可以使用setAttribute来传递值。而request.getParameter()方法获取从客户端传入的数据在这段代码中pageIn
2017-10-10 16:50:02
800
转载 DispatcherServlet详解
3.1、DispatcherServlet作用DispatcherServlet是前端控制器设计模式的实现,提供Spring Web MVC的集中访问点,而且负责职责的分派,而且与Spring IoC容器无缝集成,从而可以获得Spring的所有好处。 具体请参考第二章的图2-1。 DispatcherServlet主要用作职责调度工作,本身主要用于控制流程,主要职责如下:1、文件上
2017-09-29 20:25:08
348
原创 平时积累的一些java基础
1.Thread类的run方法:If this thread was constructed using a separate Runnable run object, then that Runnable object's run method is called; otherwise, this method does nothing and returns.2.一个类中的方法可以改变
2017-09-29 09:30:19
268
原创 java的反射机制
1.反射机制是什么?反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。2.反射机制的优点String className = readfromXMlConfig;//从xml 配置文件中获得字符串class c = Class
2017-07-19 09:16:04
229
原创 编码问题
跟着视频写项目,拷贝sql脚本的时候发现老师用的编码和我不一样,sql脚本在myeclipse中其中文部分就乱码了,我抱着先这样的心理就先改了myeclipse的编码。后来,果然导入数据库乱码了。看网上修改mysql的配置文件,但我用的是解压缩版,只得另寻他法。 首先,查看数据库编码: 命令:show variables like'character%';
2017-06-25 17:34:42
278
原创 html网页乱码问题
乱码有两种原因引起: 1.html源码和内容中的中文编码方式不同。使用代码编辑器则不易出现此类问题。 2.网页设置编码和数据库存储数据编码方式不同。因此在程序查询数据库并进行显示前要进行转码。 3.编辑网页时没有设置meta charset导致浏览器乱码(即浏览器不能识别网页默认编码类型)
2017-06-01 12:05:11
241
原创 引用参数
我们常常看到函数的形参带有引址符,其实那不是引址符,而是引用参数。引用参数是个什么鬼东东?引用参数是由调用部位传入实参的地址(写在留言板上)的形参。在形参表中以符号“&”开始的参数即为引用参数。如果一个形参是引用参数,调用部位将把实参的地址传递给子程序。子程序可以改变传递给引用参数的任何实参,因为子程序操作的是真正的变量,而不是它的副本。把参数声明成引用,实际上改变了缺省的按值传递
2016-08-06 20:06:09
4590
2
原创 Scanf,getchar与gets,cin
scanf一次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而scanf函数直接从输入缓冲区中读取数据。正因为scanf函数是直接从缓冲区取数据的,所以有时候当缓冲区中有残留数据时,scanf函数会直接取得这些残留数据而不会请求键盘输入,例如:Scanf(“%c”,&a);scanf(“%c”,&b);则第二个scanf读入的是换行。Scanf(“%s”,a);scanf
2016-08-05 10:01:50
300
原创 使用邻接表存图并遍历
我在写题目的时候基本上都是用邻接矩阵存图,因为方便,但有时候会发现邻接表过于浪费空间(关键是有时候直接开不了那么大的数组啊,欲哭无泪),所以我尝试了一下用邻接表,应该可以解决空间的问题。对应的题目:https://pta.patest.cn/pta/test/1011/exam/4/question/12911#include #include #include
2016-08-05 09:38:14
958
原创 KMP算法
1,关于模式串目标串的匹配过程,话不多说,先上图上图中O为目标串,f为模式串,A,B为模式串中最长的可匹配的前缀,后缀。在i之前模式串与目标串是匹配的,i为失配位置。我们知道在模式串中B之前均与A部分不匹配,而这些部分都已与目标串匹配,故A部分不可能与B部分对齐的目标串的前面部分匹配,所以我们可以直接将模式串的A部分移到与目标串中与B部分匹配的部分。(即,目标串可以从匹配失败的地方开始重新
2016-08-05 08:07:53
245
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人