- 博客(16)
- 资源 (1)
- 收藏
- 关注
转载 七张图彻底讲清楚ZooKeeper分布式锁的实现原理
目录七张图彻底讲清楚ZooKeeper分布式锁的实现原理【石杉的架构笔记】一、写在前面二、ZooKeeper分布式锁机制三、总结七张图彻底讲清楚ZooKeeper分布式锁的实现原理【石杉的架构笔记】转载信息:作者:石杉的架构笔记链接:https://juejin.im/post/5c01532ef265da61362232ed来源:掘金一、写在前面之前写过一篇文章《拜托,面试请不要再...
2019-10-04 16:42:25
311
原创 maven本地jar包打入war包
maven本地jar包打入war包1.添加依赖2.资源扫描)有时需要将本地的jar包打包到war中已实现一些功能,尝试了两种方式将本地jar包打入war包。1.添加依赖添加dependency,配置scope为system 以及jar所在的路径 <dependency> <groupId>com.sun</groupId> ...
2019-08-19 19:16:18
1013
原创 java ClassPath获取资源路径
ClassPath路径项目中很多时候会用到classpath:来获取资源路径。很多时候我们在xml中定位资源的时候,不知道如何定义。其实我们只要明白一点就很容易了:资源文件的定位只需要按打好的包的文件路径描述就没问题了。如下图所示classes 就是 ClassPath 代表的路径,所以引入资源文件的位置就可以按照相对与于classes的路径来写。如下所示:...
2019-05-06 18:46:34
1708
原创 高并发网络服务器设计
小白模式毕业入职第一家公司的入职作业就是写一个高并发的http服务器。当时的大致思路是这样:主线程创建监听端口,将监听端口放入epoll监听列表,然后epoll开始循环监听,当到来的读请求是监听端口,则接受客户端连接,并将客户端连接放入监听队;当到来的读请求来自于客户端连接时,直接开启新的线程来处理客户端发来的请求。高端模式使用过一些高并发网络通信框架之后发现,它们的实现方式大多都是这样...
2019-04-28 12:43:57
1245
原创 mvc单个请求处理线程不变
mvc单个请求处理线程不变问题疑问思考结论问题通过拦截器讲用户信息解析到threadlocal中,在后续的处理流程里面将这个用户的信息取出来疑问这个取到的用户信息一定就是现在所处理请求对应的用户信息吗,也就是说这个这个线程中途万一处理了别的请求那么thread local里面存的就是别的用户的信息了思考这种情况是不会发生的一个线程从人物队列中取出一个请求处理,那么这个请求就不会再被别...
2019-04-22 12:29:39
386
原创 @Value 注入属性值(补充)
在@Value 注入属性值(下)中发现@Value注解注释的属性是在InstantiationAwareBeanPostProcessor的postProcessPropertyValues方法注入到bean中的。但是当时并没有发现是在哪一个实现了postProcessPropertyValues接口的类中对@value注解进行了注入。今天通过学习@Autowire注解的注入时机,有了新的发现 ...
2018-08-27 19:17:54
1500
原创 @Value 注入属性值(下)
@Value 注入属性值(中)之前试验过@Value是在&amp;lt;init&amp;gt;对象实例化后,在注入属性(即调用类的set方法实现属性的初始化)前其作用的。 具体是如何起作用以及是什么时候其作用的。 下图是spring中一个bean的生命周期:&amp;lt;init&amp;gt;对象实例化即时途中的“实例化”那一步。注入属性即时图中的“设置属性值”。那么@Value的作用时间可能在...
2018-08-22 19:30:27
880
原创 @Value 注入属性值
本次实验室为了测试@Value注解是在什么时候起效的 下面是程序详情: 配置文件 study.propertiesstudy=123spring配置文件<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" ...
2018-08-16 19:59:05
6115
原创 bean 初始化<clinit><init> 初探
bean 初始化<clinit> <init> 初探java文件编译后会为每个类自动生成一个<clinit>和<init>函数。<clinit> 函数是在类第一次加载到jvm方法区的时候调用,实现对类中的一些静态变量赋值以及执行静态语句块。<init>是在对象实例初始化时候调用,对类中的一些变量赋值以及执行一些语句...
2018-08-08 20:26:13
356
原创 main函数结束后程序会怎样
本人之前一直是使用c/c++进行编程,现在转用java已经一年了,觉得这里面还是有很多使用上的不同。C/C++每个c/c++代码有一个main函数,程序启动后,会开启一个主线程执行main函数,在main函数内部我们可以开启很多的线程,如果主函数main return的话,这些在main函数里开启的线程都会结束。javajava 也是一样,想要程序运行的话也必然会有一个ma
2018-01-22 18:20:51
3278
原创 Netty channel 关闭之后收到大量处理包
现象Netty Channel.close()触发channelInactive此时 channel state isOpen=false, isActive=false, isWritable=false,此时channel不会在接收来至客户端的请求。但是此时继承于SimpleChannelInboundHandler 的handler的channelRead0还是在不断处理数
2018-01-18 18:57:26
8212
原创 网络传输Byte数组
网络传输Byte数组案例背景需要将byte数组,以Json的方式传输,Json默认会将Byte数组转化成String作为key的value。我们也可以自己将Byte数组转化为String在放入Json键值对里。在接手端再从Json中解析出Byte数组。但是项目中的问题是:传过来的Byte数组还原不了。接收端解析得到的Byte数组的长度和发送端的原始Byte数组的长度都不一样。
2018-01-17 18:26:03
11423
3
原创 Vector erase操作 core down
Vector erase操作 core down复现代码第一个坑还有坑改进代码Vector erase操作 core down复现代码for(std::vector<int>::iterator iter=uid.begin(); iter!=uid.end(); iter++) { if( *iter == temp_uid) {
2017-12-21 17:03:53
679
原创 多态
多态C语言面向对象语言C虚函数虚继承面向对象语言java多态C语言函数指针是发源于C语言的。是在C语言中实现多态的手段#include <iostream>typedef int (*calculate)(int a, int b);int add(int a, int b);int sub(int a, int b);int cal(int a, int b, calculate
2017-10-19 15:28:17
215
原创 Netty Tls实现
Netty Tls实现TLS作用TLS发展历史TLS基本原理客户端发出请求ClientHello服务器回复ServerHello客户端回应服务器最后回应证书生成Netty 代码实现服务端实现客户端代码调试观测Netty Tls实现TLS作用如果没有使用TLS的话会存在一下风险(1) 窃听风险(eavesdropping):第三方可以获知通信内容。(2) 篡改风险(tamper
2017-10-07 16:35:28
4148
原创 java socket与Netty服务器通信
java socket与Netty服务器通信 C/C++中在进行网络通信的过程中直接面对的是字节流或是字符流。java中网络通信的话面对的是缓冲区buffer。ByteBuffer是来自于java.nioByteBuf是来自于io.netty.buffer 两者相互转换自然是可以的。ByteBuf的nioBuffer()方法
2016-08-28 16:05:42
5076
基于服务器实现客户端与客户端之间会话
2011-06-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人