- 博客(1234)
- 资源 (61)
- 收藏
- 关注
原创 Thrift 调用分析
Thrift 定义文件model.thriftnamespace java com.meituan.modelstruct Request { 1: required i32 age; 2: required string name;}struct Response { 1: required i16 code; 2: ...
2020-04-05 12:01:02 689
原创 使用 thrift 遇到的一个 bug
org.apache.thrift.protocol.TProtocolException: Required field 'statusCode' was not found in serialized data! Struct: com.meituan.itc.udm.mustang.thrift.JudgeResponse$JudgeResponseStandardScheme@689774...
2020-04-03 10:31:24 2264
原创 Thrift 生成文件解析
thrift 文件namespace java com.meituan.modelstruct Pair { 1: required string key; 2: required string value; 3: required i16 test1; 4: optional i32 test2; 5: opt...
2020-04-03 10:27:54 1609
原创 thrift-TSimpleJSONProtocol
Thrift JSON 序列化实现,只写操作。JSON 的弊端就是没有类型信息,如对于一个整数,无法区分 short,int,long,double等。 @Test public void test4() throws IOException, TException { Person person = new Person(); person.setN...
2020-04-03 10:24:21 629
原创 thrift-编解码流程
Thrift protocol 层需要进行 4 次编解码操作:客户端对请求进行编码,服务端对请求进行解码服务端对响应进行编码,客户端对响应进行解码helloservice.thriftnamespace java com.meituan.serviceinclude "model.thrift"service HelloService { model.R...
2020-04-03 10:21:58 819 4
原创 thrift-TBinaryProtocol
TBinaryProtocol 工厂类。 public static class Factory implements TProtocolFactory { protected long stringLengthLimit_; protected long containerLengthLimit_; protected boolean strictRead_; ...
2020-04-03 10:14:08 772
原创 thrift-protocol
// Thrift 消息类型public final class TMessageType { public static final byte CALL = 1; // 调用远程方法,并且期待对方发送响应 public static final byte ONEWAY = 4; // 调用远程方法,不期待响应。即没有步骤3,4 public static final by...
2020-04-03 09:50:21 662
原创 IDL 生成文件
IDL 生成文件在 thrift 栈中的位置。对于如下的 thrift :namespace java com.meituan.serviceservice HelloService{ string sayHello(1:string username)}生成:// thrift 0.8.0public class HelloService { public ...
2020-04-03 09:39:58 1241
原创 java.lang.NoClassDefFoundError: javax/el/ELManager
HTTP ERROR 503Problem accessing /evolve/qixi/test. Reason: Service UnavailableCaused by:org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframewor...
2020-03-18 09:58:58 5290
原创 google authenticator
【google authenticator】使用基于时间的一次性密码(Time-based One-time Password,简称TOTP)实现。离线实现即不需要联网。https://blog.seetee.me/post/2011/google-two-step-verification/https://segmentfault.com/a/1190000016100672https...
2020-03-18 09:54:20 977
原创 git 误传二进制文件
git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -g | tail -5git rev-list --objects --all | grep 86bab29452f7bf6b2bf0afd5950a2365e178ee89git rev-list --objects --all | grep b234a94d1931...
2020-03-18 09:52:58 448
原创 Feistel 算法
学习资料:https://www.jiamisoft.com/blog/8903-feisteljiegouhundunjiamisuanfa.htmlhttps://blog.iwannarun.cn/2017/11/03/%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87%E8%87%AA%E5%A2%9EID%E7%94%9F%E6%88%90%E5%8F%AF%E...
2020-03-18 09:51:50 838
原创 java nio 学习笔记
Java NIO(New IO)是一个可以替代标准Java IO API的IO API(从Java 1.4开始),Java NIO提供了与标准IO不同的IO工作方式。Java NIO: Channels and Buffers(通道和缓冲区)标准的IO基于字节流和字符流进行操作的,而NIO是基于通道(Channel)和缓冲区(Buffer)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写...
2020-03-06 09:35:47 356
原创 thrift-transport
org.apache.thrift.transport.TTransport传输组件抽象描述。public abstract class TTransport implements Closeable { public abstract boolean isOpen(); public boolean peek() { return isOpen(); } public ab...
2020-03-05 22:52:46 1193
原创 thrift-processor
TProcessor 是服务调用组件。负责从 TProtocol 输入流读取消息,写入到 TProtocol 输出流。TProcessorpublic interface TProcessor { public boolean process(TProtocol in, TProtocol out) throws TException;}TBaseProcessorTB...
2020-03-05 22:51:55 922
原创 HashMap 分析(doing)
JDK8 中,HashMap 使用 数组+链表+红黑树来实现。getget(Object key) 的处理流程:计算 key 的 hash 值,根据 hash 值找到对应数组下标:hash & (table.length - 1)判断数组该位置处的元素(头结点)是否刚好就是我们要找的,如果不是,走第三步判断该元素类型是否是 TreeNode,如果是,用红黑树的方法进行查找;如...
2020-02-23 15:28:03 212
原创 java.net.URLClassLoader#findClass解析
jdk1.8 中 AppClassLoader 与 ExtClassLoader 都继承于 URLClassLoader。AppClassLoader 与 ExtClassLoader 没有重写 findClass 方法,URLClassLoader重写了 findClass 方法。故 findClass 都指向 URLClassLoader。protected Class<?&g...
2020-02-23 15:22:56 7448 2
原创 Java 对象占用大小
JDK8_64_HotSpot VM这个环境中的默认配置下,压缩对象指针(UseCompressedOops)和压缩类指针(UseCompressedClassPointers)都是打开的。java -XX:+PrintCommandLineFlags Test-XX:InitialHeapSize=268435456 -XX:MaxHeapSize=4294967296 -XX:+Prin...
2020-02-23 15:16:26 335
原创 JDK8 实现重试
@FunctionalInterfacepublic interface Supplier<T> { T get();}@FunctionalInterfacepublic interface Predicate<T> { boolean test(T t); default Predicate<T> and(Predic...
2020-02-23 15:11:59 516
原创 动态代理
jdkpackage com.meituan.test;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;interface Hello { void sayHello();}class HelloImpl i...
2020-02-23 15:09:21 256
原创 调试中遇到的一个 bug
ConstantPool.getStringAt()## A fatal error has been detected by the Java Runtime Environment:## SIGSEGV (0xb) at pc=0x00000001059e73f6, pid=16016, tid=0x0000000000001803## JRE version: Java(TM...
2020-02-23 15:03:04 1752
原创 sun.misc.URLClassPath 解析
作用:Java 中加载类和查找资源的路径jdk8http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/8477fd88653c/src/share/classes/sun/misc/URLClassPath.javajdk9http://hg.openjdk.java.net/jdk9/jdk9/jdk/file/9b93380c8445/src/...
2020-02-23 14:59:53 4448
原创 sun.misc.MetaIndex
作用:文件查找的快速拒绝机制public class MetaIndex { private static volatile Map<File, MetaIndex> jarMap; private String[] contents; // 是否是只包含 class 的 jar 包 private boolean isClassOnlyJar; ...
2020-02-23 14:51:46 595
原创 sun.misc.Launcher
针对 jdk1.8,jdk9 以后就没有该文件了。http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/raw-file/8477fd88653c/src/share/classes/sun/misc/Launcher.javapublic class Launcher { // 自定义通讯协议设计 private static URLStream...
2020-02-23 14:48:52 1822
原创 mac 编译 openjdk11
下载 openjdk 镜像hg clone https://hg.openjdk.java.net/jdk/jdk11/或者在 http://jdk.java.net/下载下载前置依赖brew install FreeTypebrew install Autoconf执行 configure 检查bash ./configure --with-target-bits=...
2020-02-23 14:42:54 837
原创 IO模型
你要叫滴滴打车,有以下几种做法:叫车之后,就一直在路口等着,车来了自己上去——同步、阻塞叫车之后,一边等着一边看美女,车来了自己上去——同步,非阻塞叫车之后,光顾着看美女,司机到了之后打电话给你——异步、非阻塞即是:同步就是你要自己检查车来了没有;异步就是车来了司机联系你(回调)。阻塞就是等车的时候老实等着,别干别的(被阻塞);非阻塞就是等车的时候你可以做其他事情。https:/...
2020-02-20 10:12:08 295
原创 抓包 thrift 消息
helloservice.thriftnamespace java com.meituan.serviceinclude "model.thrift"service HelloService { model.Response sayHello(1: model.Request req)}model.thriftnamespace java com.meituan.mo...
2020-02-18 23:33:26 1019
原创 Thrift0.8当接口返回类型i16/i32/i64/bool时,客户端无法捕获服务端抛出的异常
测试代码:namespace java com.meituan.serviceexception BugTestException{ 1: required i32 code; 2: required string msg;}service HelloService { i32 bugCall() throws (1: BugTestException e);...
2020-02-18 23:24:32 821 1
原创 mac 定时任务
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict> &...
2020-01-19 13:06:48 289
原创 RPC 学习笔记
RPCRPC(Remote Procedure Call) 是一种进程间通信方式。它允许程序调用另一个地址空间的过程或函数,而不用程序员显式编码这个远程调用的细节。即程序员无论是调用本地的还是远程的,本质上编写的调用代码基本相同。现有的 RPC 实现基本都是由以下五部分组成:UserUser-stubRPCRuntimeServer-stubServer这里 user 就是 cli...
2019-03-30 11:52:59 528 3
原创 windows 10 linux子系统配置
更改 apt 源lsb_release -aNo LSB modules are available.Distributor ID: UbuntuDescription: Ubuntu 18.04.1 LTSRelease: 18.04Codename: bionichttps://mirrors.tuna.tsinghua.edu.cn/help/...
2019-03-27 18:21:03 625
原创 windows nginx autoindex 中文目录/文件名乱码解决办法
src\http\modules\ngx_http_autoindex_module.c// 响应处理static ngx_int_t ngx_http_autoindex_handler(ngx_http_request_t *r){}可以看到默认是以 html 格式响应返回的文件列表。static ngx_buf_t *ngx_http_autoindex_html(ngx_ht...
2019-03-05 19:53:13 6366 2
转载 日请求量过亿,谈陌陌的Feed服务优化之路
先从产品层⾯面介绍一下Feed业务。Feed本⾝身就是一段简短文字加一张图片,带有位置信息,发布之后可以被好友和附近的人看到,通过点赞评论的方式互动。类似微博和朋友圈。陌陌上季度的MAU为6980万,Feed作为主要的社交业务,从2013年上线到现在,日请求量超过亿,总数据量超过百亿。下面是Feed系统的整体架构图:资源层主要使用Redis、MongoDB、HBase等NoSQL类型数据...
2019-02-26 15:02:07 1031
原创 微信小程序学习记录
小程序组成js 对应业务逻辑,负责交互。json 对应配置。wxml 类似于 html。wxss 类似于 xss 的样式表。app.json:小程序全局配置,包括了小程序的所有页面路径、界面表现、网络超时时间、底部 tab 等。project.config.json:小程序开发工具的全局配置。小程序生命周期...
2019-01-08 13:52:39 434
原创 java.lang.Class 解析
public final class Class&amp;amp;amp;lt;T&amp;amp;amp;gt; implements java.io.Serializable,GenericDeclaration,Type,AnnotatedElement {}
2018-11-08 12:33:47 450 1
原创 Java static变量保存在哪?
java -versionjava version &amp;amp;amp;quot;1.8.0_171&amp;amp;amp;quot;Java(TM) SE Runtime Environment (build 1.8.0_171-b11)Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)// java -XX:+UseSerialGC -XX:-UseCompre...
2018-07-28 13:28:39 26110 17
原创 String.hashCode() 31?
所谓世事洞明皆学问,在String.hashCode()中为何选择 31 作为魔数?public int hashCode() { int h = hash;//缓存该 hash if (h == 0 &amp;&amp; value.length &gt; 0)...
2018-07-03 20:41:12 915
原创 Jedis 批量插入数据
测试环境:测试:在 set 中插入 28629151 条 长度为 5 的字符串。直接插入import redis.clients.jedis.Jedis;public class GeneratorMain { private static final char[] CODE = "23456789ABCDEFGHJKMNPQRSTUVWXYZ".toCharArray...
2018-06-08 11:34:22 4663
lua-cjson-2.1.0-已编译
2018-04-16
mybatis plugin 3.21破解补丁
2017-11-13
QQWry-源码
2017-11-13
Privacy in Location-Based Applications
2017-10-17
BJUT数字图像处理作业
2017-01-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人