Java
Java9K
Java技术专家,欢迎交流
展开
-
hashCode的生成
hashCode 方法的定义在jdk api中 关于hashCode有如下说明: 1234567891011121314151617 Returns a hash code value for the object.This method is supported for the benefit of hash tables such as those provided by HashMap.The general c...原创 2020-05-16 21:25:08 · 1365 阅读 · 0 评论 -
LSTM和循环网络基础教程
https://deeplearning4j.org/cn/lstmhttps://www.zhihu.com/question/40942637/answer/136248839https://nd4j.org/backend.html原创 2020-05-15 19:38:56 · 271 阅读 · 0 评论 -
synchronized 关键字
synchronized 关键字实现原理在java1.6中对synchronized进行了一系列优化,在之前的版本中,lock性能远比synchronized关键字好,测试数据这里不放了。重点关注下实现原理。先说几个概念:普通同步方法,锁当前实例(相当于synchronize(this))。 静态同步方法,锁当前类的class对象。(任何该class的实例全都会阻塞) synchronized(object)锁object对象。当一个线程访问同步代码块时,它首先是需要得到锁才能执行同步原创 2020-05-12 17:18:13 · 262 阅读 · 0 评论 -
Java阻塞队列的原理分析
Java阻塞队列的原理分析先看看BlockingQueue接口的文档说明:add:添加元素到队列里,添加成功返回true,由于容量满了添加失败会抛出IllegalStateException异常; offer:添加元素到队列里,添加成功返回true,添加失败返回false; put:添加元素到队列里,如果容量满了会阻塞直到容量不满; poll:删除队列头部元素,如果队列为空,返回null。否则返回元素; remove:基于对象找到对应的元素,并删除。删除成功返回true,否则返回false;原创 2020-05-12 17:13:24 · 190 阅读 · 0 评论 -
Java阻塞队列的原理分析
Java阻塞队列的原理分析先看看BlockingQueue接口的文档说明:add:添加元素到队列里,添加成功返回true,由于容量满了添加失败会抛出IllegalStateException异常; offer:添加元素到队列里,添加成功返回true,添加失败返回false; put:添加元素到队列里,如果容量满了会阻塞直到容量不满; poll:删除队列头部元素,如果队列为空,返回null。否则返回元素; remove:基于对象找到对应的元素,并删除。删除成功返回true,否则返回false;原创 2020-05-12 17:00:49 · 289 阅读 · 0 评论 -
JAVA - AQS源码解读
JAVA - AQS源码解读前言AQS全称AbstractQueuedSynchronizer。是Lock、CountDownLatch、Semaphore(信号量)的基础。这个AQS我在大约一年多以前看过一次,但是当时水平有限,根本没看懂什么意思,最后对于AQS的理解都是来自于网上的博文,可以说是吃人家嚼过的。。这次重读源码还是收获颇丰。Node看一下Node的结构: 1 2 3 4 5 6 7 8 .原创 2020-05-12 16:56:46 · 177 阅读 · 0 评论 -
JVM源码分析 – 偏向锁
JVM源码分析 – 偏向锁前言JAVA在内部提供了许多种锁,在虚拟机内部,又会根据虚拟机配置和场景来使用不同种类的锁,比如偏向、轻量级以及重量级等等,这篇文章根据1.8的源码,来看一下JAVA内部实现的锁。提前说明,笔者并非专业的C++开发人员,只了解一些基本的语法,只能通过方法命名、注释来大体了解一下代码的执行过程以及效果。我们从字节码开始,我们使用synchronized(Object)包裹代码块的时候,字节码中会用如下方式包裹: 1 2 3 .原创 2020-05-12 16:49:09 · 870 阅读 · 0 评论 -
netty in action读书笔记
关于netty的内存管理:netty在4.1.x版本默认使用的allocator是PooledByteBufAllocator,在分配ByteBuf的时候,引入了新的alloc机制——jemalloc,netty内部自己按照jemalloc的机制,实现了一个java版的(这个有待考证,目前我翻了一下源码,好像是java实现的,没有调用native的部分)关于Channel.write和ChannelHandlerContext.write:ChannelHandlerContext的write方原创 2020-05-10 16:37:32 · 174 阅读 · 0 评论 -
ICU4J介绍
ICU (International Components for Unicode)是为软件应用提供Unicode和全球化支持的一套成熟、广泛使用的C/C++和Java类库集,可在所有平台的C/C++和Java软件上获得一致的结果。ICU首先是由Taligent公司开发的,Taligent公司被合并为IBM公司全球化认证中心的Unicode研究组后,ICU由IBM和开源组织合作继续开发。开始ICU只有Java平台的版本,后来这个平台下的ICU类被吸纳入SUN公司开发的JDK1.1,并在JDK以后的版本中不断原创 2020-05-10 16:34:35 · 7376 阅读 · 0 评论 -
记一次Disruptor排坑
Abstract我们在项目中使用了Disruptor作为事件总线,实现的业务是:用户消费完成成就,完成八个成就之后自动获得第九个成就——获得前面八个成就。这个项目不是我参与的,当时我自己封装的高性能事件总线(Electrons)已经完全能胜任上述功能,但是由于小伙伴当时对我的这个组件没有特别研究,仍然感觉我的这个就是顺序执行前面几个监听器,就没有用。这个项目在测试环境中一直没有问题,原因我分析一下有下:并发量太小,RingBuffer的队列的size太小都完全足够。 测试环境中代码不稳定,原创 2020-05-09 17:35:28 · 3339 阅读 · 5 评论 -
ElasticSearch资料
时间序列数据库的秘密(1)—— 介绍时间序列数据库的秘密(2)——索引时间序列数据库的秘密(3)——加载和分布式计算用SQL查询Elasticsearchhttps://github.com/taowen/es-monitor【01】把 Elasticsearch 当数据库使:表结构定义【02】把 Elasticsearch 当数据库使:过滤和排序【03】把 Elasticsearch...原创 2020-05-04 17:52:00 · 144 阅读 · 0 评论 -
elasticsearch-cn-out-of-box
https://github.com/hangxin1940/elasticsearch-cn-out-of-box/为elasticsearch集成一些实用插件以及配置的开箱即用的版本。Dockerfile docker-elasticsearch-cndocker pull hangxin1940/docker-elasticsearch-cn:v2.1.1elastic...原创 2020-05-04 17:50:51 · 136 阅读 · 0 评论 -
时间序列数据库的秘密(1)—— 介绍
什么是时间序列数据?最简单的定义就是数据格式里包含timestamp字段的数据。比如股票市场的价格,环境中的温度,主机的CPU使用率等。但是又有什么数据是不包含timestamp的呢?几乎所有的数据都可以打上一个timestamp字段。时间序列数据更重要的一个属性是如何去查询它。在查询的时候,对于时间序列我们总是会带上一个时间范围去过滤数据。同时查询的结果里也总是会包含timestamp字段。...原创 2020-05-04 17:42:00 · 250 阅读 · 0 评论 -
Helios Decompiler
https://github.com/helios-decompiler/HeliosHelios is an all-in-one Java reverse engineering tool. It features integration with the latest up-to-date decompilers.https://github.com/...原创 2020-05-03 18:08:14 · 181 阅读 · 0 评论 -
Java反编译器剖析(上)
反编译器(或者解码器),简而言之,就是将目标程序码反转成源代码。但是其中的过程却比较复杂,也很有意思——Java源码是结构化的,字节码却不是。而且,转换不是一一对应的:两段完全不同的Java程序也可能生成完全相同的字节码,有时需要一些试探才能更加接近源码。(一段简短的)字节码教程为了更好的理解反编译器如何工作,现在有必要理解一下字节码基础。如果你对此非常熟悉,可以略过此处直接跳到下一部分。...转载 2020-05-02 18:36:13 · 285 阅读 · 0 评论 -
Java Deobfuscator
https://javadeobfuscator.com/https://github.com/CalebFenton/simplifyGeneric Android DeobfuscatorSimplify uses a virtual machine to understand what an app does. Then, it applies optimizations to ...原创 2020-05-02 18:32:47 · 698 阅读 · 0 评论 -
Smalidea无源码调试 android 应用
smalidea是一款 IntelliJ IDEA/Android Studio的 smali 插件已有功能语法高亮/错误提示 字节码级别调试 断点 单步调试 寄存器查看 本地窗口 java 语法支持,debug 模式下同样支持 支持跳转,方便追踪变量/函数/类.(Xref也支持) 查找用法 重命名 从 java 代码引用 smali 类 错误反馈.....原创 2020-05-02 18:21:03 · 245 阅读 · 0 评论 -
关于Retargetable Decompiler
riusksk推荐了一个在线反编译网站,decompiler.fit.vutbr.cz,介绍说支持MIPS、PowerPC、ARM、x86等等。拿一个MSB MIPS的binary上去试了试,呃,备忘吧。说不定有人用得上,自求多福。http://www.showmycode.com/ 各种各样的反编译器。...原创 2020-05-02 18:18:53 · 516 阅读 · 1 评论 -
美化二维码
二维码内容长度不作控制 大多数互联网技术使用到二维码生成,都是使用开源的包生成,输入字符信息,即可生成一张包含此字符信息的黑白二维码图片: 上面有两个二维码图片,扫码结果都是访问到同个页面,但是大多数使用二维码的地方,都是生成第一种样式,WC里的广告就是直接的例子: 很明显,第一种二维码点阵非常复杂,在某种复杂的环境下,如扫码角度大、...原创 2020-05-02 16:50:50 · 3636 阅读 · 1 评论 -
QR码使用总结
QR码(学名为快速响应矩阵码;Quick Response Code)是二维码的一种,相应的ISO国际标准ISO/IEC 18004,现在互联网上的二维码一般都是QR码。本文主要总结生成QR码(模式2)遇到的几个问题,生成使用开源条码库ZXing。QR码尺寸问题问题描述:运营同学需要23px*23px的QR码(不包括边缘留白),一定能实现么?背景知识:QR码共有40种版本,每个版本都有...原创 2020-05-02 16:49:06 · 5552 阅读 · 0 评论 -
二维码生成细节和原理
二维码又称QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型:比如:字符,数字,日文,中文等等。这两天学习了一下二维码图片生成的相关细节,觉得这个玩意就是一个密码算法,在此写一这篇文章 ,揭露一下。供好学的人一同学习之。关于QR Code Specification,可参看这...原创 2020-05-02 16:43:01 · 1299 阅读 · 0 评论 -
Netbeans6.9.1的模块列表
NetBeans的模块列表Netbeans6.9.1的源代码分析。1. ant.browsertaskWeb Browser Ant Task任务, 添加Ant任务<nbbrowser>, 目的是打开浏览器。定义一个Ant任务,<nbbrowser>,目的是打开一个URL,有用的运行一些测试和显示html结果。2. ant.debuggerAnt调试...原创 2020-05-02 16:29:46 · 1751 阅读 · 0 评论 -
NetBeans的JPDA调试功能
要使用一个JPDA调试功能:D:\JEBProject\release>java -jar -Xrunjdwp:transport=dt_socket,server=y,address=8700 jebv7.jarListening for transport dt_socket at address: 8700JEB v1.5.201403100 (full) is ...原创 2020-05-02 16:24:55 · 531 阅读 · 0 评论 -
ObjectwebASM研究-CodeGenerator
ASM就是一个Generator产生器。http://budairenqin.iteye.com/blog/1771141 Java字节码框架asm快速入门一般情况下,Class文件是通过javac编译器产生的,然后通过类加载器加载到虚拟机内,再通过执行引擎去执行。现在我们可以通过ASM的API直接生成符合Java虚拟机规范的Class字节流,这样,ASM做的事情一定程度...原创 2020-05-02 16:02:25 · 1059 阅读 · 0 评论 -
Android的一些开源库
android6.0动态权限https://github.com/SpikeKing/wcl-permission-demoPorting Android DownloadProvider:https://github.com/yxl/DownloadProviderThis project ports the DownloadProvider of Android 2.3.7. I...原创 2020-05-01 16:04:01 · 194 阅读 · 0 评论 -
RxJava初探
RxJava 是来自于Netflix的Reactive Extension的java版实现。Reactive Extenstion所要解决的一个问题是对多个异步任务的组合,依赖所带来的编码复杂性的问题,我们先从一个例子看起:异步任务的依赖假设我们的程序需要从五个micro-service获取数据,这些micro-services之间存在依赖关系,我们来看一下第一版实现:note: ...原创 2020-05-01 15:57:47 · 220 阅读 · 0 评论 -
RxJava的基础教程
创建一个Observable对象很简单,直接调用Observable.create即可.Observable<String> myObservable = Observable.create( new Observable.OnSubscribe<String>() { public void call(Subscriber<? super...原创 2020-05-01 15:56:19 · 206 阅读 · 0 评论 -
Netflix继续开源,更多猴子进入视野
在众多开发者眼中,Netflix以它的“猴子”闻名于世,在过去的一年里,他们陆续开源了众多基础设施。近期,Netflix又举办了一次活动,宣布了2013年的开源计划,同时对一些已经开源的项目做了简单的介绍。截止2012年底,Netflix已经开源了15个基础设施的代码,涉及AWS上的自动伸缩及控制面板、高性能Java日志框架、Cassandra及ZooKeeper扩展等诸多方面的内容。今年,他...原创 2020-05-01 15:54:48 · 323 阅读 · 1 评论 -
JNA技术
JNA来自https://github.com/java-native-access/jna已经编译好的为https://maven.java.net/content/repositories/releases/net/java/dev/jna/jna/4.2.1/jna-4.2.1.jar我们以jna-4.2.1的版本为例进行研究alphamaskdemo: 一个简单演示Window...原创 2020-05-01 15:49:08 · 735 阅读 · 0 评论 -
Proguard的Optimizations
Proguard的Optimization可以通过开关-dontoptimize来进行设置。通过-optimizations可以设置详细的优化规则。!表示exclude。"code/simplification/variable,code/simplification/arithmetic"仅仅做SimplificationVariable和Simplificat...原创 2020-05-01 10:55:37 · 1398 阅读 · 0 评论 -
Proguard的增量混淆和applymapping
Proguard怎么实现增量混淆,我们查看proguard的选项:-applymappingfilenameSpecifies to reuse the given name mapping that was printed out in a previous obfuscation run of ProGuard. Classes and class members that are ...原创 2020-05-01 10:51:29 · 1974 阅读 · 0 评论