首页
学习
活动
专区
工具
TVP
发布

EffectiveCoding

专栏作者
113
文章
97154
阅读量
28
订阅数
JVM Advanced JIT Compiler Options
JIT相关编译选项 Advanced JIT Compiler Options -XX:+AggressiveOpts 最核心的应该是加快编译,在JDK 6之后就默认启用的,启用一些诸如编译优化、偏向锁、并行化老年代收集策略。通常是不用管的,默认的优化策略,添加此参数的原因是为工程提供一个优化技术选择的空间。 -XX:AllocateInstancePrefetchLines=lines 在实例分配指针之前设置要预取的行数。默认情况下,要预取的行数设置为1。- xx:AllocateInstancePrefetchLines = 1只有Java HotSpot服务器VM支持这个选项。
邹志全
2020-02-25
1.3K0
JVM 参数列表
这一篇说一下JVM 参数相关,首先JVM参数中包含着么几类 标准参数(Standard)、非标准参数(Non-Standard)、高级运行时选项、JIT相关编译高级选项、适用性高级选项、GC相关高级参数、不建议使用的参数(可能会被弃用) 后续会对每个系列的参数还有使用技巧进行详细的剖析,这一篇仅仅是个引导。 但是这个系列,对于不感兴趣的同学可能会无聊至极。不过掌握一些技巧还是蛮有趣的。 懂原理,才能更好的使用嘛~ 其中 标准参数:开头直接为参数名、 非标准参数: -X 开头 高级选项:-XX:
邹志全
2020-02-25
6560
JVM 《七 JVM 角度看对象》
作为一个Java 程序员,天天与我们交互的除了逻辑就是对象了,我们可以自己new一个,也可以注入一个,得到对象的方法儿有很多。
邹志全
2020-02-25
3960
JVM 《五 JVM 类加载机制&Tomcat 类加载方式解析》
所谓类加载机制也就是Java 虚拟机从磁盘装载 .class 文件或者网络中二进制字节流并且加载Java类的方式或者过程。
邹志全
2020-02-25
6630
JVM 《四 JVM 中的String》
String 这样的量,在我们的认知中是比较特别的。 其中String 是个对象,然后String也可以是个普通的字面量。在每代JDK中对String 的处理也是不同的,本篇的篇幅不大,仅仅觉着String有意思,所以拿出来说。 先说几个常见的问题 比如String tempStr=“123”+“456”; 这句话在编译的过程中就已经是一个字符串了,俗称的编译优化??? String字面量跟String 对象的存放位置是不同的,一个是在堆上,一个在常量池。 所以有时候会产生这样的情况:String abc=“123”;String acb=“123”;String bca=“123”;……取到的是一个对象,但是当我们去new 一个对象时必定是产生一个对象的而不是先检查常量池。 除此之外还有一个方法叫做intern 这个是一个native方法,作用很简单,检查常量池中是否有该字符串量,若没有向常量池中复制一份。 JDK API文档中对intern()方法的描述是: 返回字符串对象的规范化表示形式。 一个初始为空的字符串池,它由类 String 私有地维护。 当调用 intern 方法时,如果池已经包含一个等于此 String 对象的字符串(用 equals(Object) 方法确定),则返回池中的字符串。否则,将此 String 对象添加到池中,并返回此 String 对象的引用。 它遵循以下规则:对于任意两个字符串 s 和 t,当且仅当 s.equals(t) 为 true 时,s.intern() == t.intern() 才为 true。 所有字面值字符串和字符串赋值常量表达式都使用 intern 方法进行操作。 然后来回说这个常量池,感觉这么说太抽象了,其实说白了就是一个方便查找的存放常量的池子,结构类似于HashMap。 这一个很简洁,就这么多~ 其实跟JVM 并没什么关系,就是想说说 // todo 合并Java 版中的String
邹志全
2020-02-25
4670
JVM 《一 JVM 中的垃圾回收》
当我们了解其中的内存之后,我们可能会有一点想法,我们的对象、相关类信息是存放在Java堆、方法区之中的。那我们的程序正在不断的new 对象、不断的loading Class。那么我们的JVM为什么没炸了(OOM),即使数量不会多到炸,但是我们不用的那些对象难道一直要仍在内存中?
邹志全
2020-02-25
4220
JVM《 零  JVM 相关简介&内存模型》
提起Java,我们首先想到的是Java 语言。其实Java 是包括Java 语言、Java虚拟机规范两部分的。Java 不赘述,要说的是JVM, 即 Java 虚拟机。
邹志全
2020-02-25
3990
Java String &StringUtils
1、首先String 是一个final类(不能被继承,可以理解为最终的,防止继承使用),里面维护了一个字节数组。 我们经常使用String 一般都是 String str1 = "2333”; 这种的叫做字面量,还有一种是String str2 = new String(“2333”); 然后还有配合Builder 及 Buffer使用的。 这些方式存在什么差异呢:可以试着去运行这个例子
邹志全
2019-10-13
4230
关于java 中的main函数
我们刚开始写java 程序最常见的除了System.out.println( );之外应该就是 public static void main( String arg[ ] ){ …… }了。 我们通常称之为主函数或者main函数。公共和静态就不用说了,这是java程序的一个入口,而String args [ ]里面是一些命令参数。
邹志全
2019-10-08
1.7K0
线程和进程
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.
邹志全
2019-08-31
6440
高并发下的限流策略
限流策略通常是用来在高qps下进行流量限制的,常见的方式有计数器、令牌桶、漏桶。在这次活动中我负责的模块是控制的对下游的流量,我们可以让那些请求选择丢弃、等待或者降级这些限流算法可以自行实现也可以利用现有的限流工具,比如说Guava的令牌桶,具体看场景需求吧,下面来看一下这几种限流策略,再说说我写的限流方式。
邹志全
2019-07-31
1.6K0
Redis string之SDS源码分析2
上一篇我们看了Redis里面关于新旧版本对于sds的不同的结构体实现,接下来看看sds.c中关于redis动态字符串的具体操作。
邹志全
2019-07-31
3250
Redis的事件模型(ae epoll实现方式)
上一篇我们说到了文件描述符及常见的polling机制,下面来看看ae中对于epoll的封装实现。
邹志全
2019-07-31
1.3K0
Java Concurrent AQS原理&源码概要(Java 10)
开始说AQS之前,继续说上一篇没说完的建议,相对于看一些不知道时效性的blog,说实话,理解一个知识点最简便的方式就是看论文及源码实现了,解决一个问题最好的方式就是看官方文档及源码,没有什么答案是在源码里找不到的,对着blog排查问题只会导致抱着一个黑盒子在原地踏步,偶尔运气好时间短过去了,运气不好,花很长时间不说,下次问题稍微变动一下就又不会了。切身体会,关于Concurrent的论文,The java.util.concurrent Synchronizer Framewor,大家如果有需要可以私信。
邹志全
2019-07-31
6670
Java Concurrent Executor
在说Executor前, 先来看一下线程创建的几种方式: 1、继承Thread类创建线程 2、 实现Runable接口创建线程 3、使用Callable和Future 创建线程 4、使用Executor线程池 这几种方式是存在一定程度上的差异,首先Thread则是最原始的,创建线程执行对应的业务代码,Runable是完成了一个任务的的执行,然后Callable和Runable类似,但是提供了Future来实现了一种回调方式。这三种方式总体来说是比较原始的,线程无法复用,线程及任务管理复杂。而Executor 了为了解决这些类似的问题而实现的。
邹志全
2019-07-31
4500
Go 并发实战--限流算法
高并发系统为了服务的可用性面对高流量及qps高峰时通常有三种常见的应对措施:缓存、降级和限流。这一篇我们来看一下限流及go相应的实现。 限流算法通常有这么几种:计数器、令牌痛、漏桶,这几个算法的优缺点在这里就不多说了,网上有大量的文章介绍这几个算法,大家也可以借鉴我限流算法的那篇文章。 这里就这几种算法的思想借助go的API来实现一下:
邹志全
2019-07-31
1K0
Go 语言基础--反射 浅析
反射是众多编程语言中的一个非常实用的功能,毫不意外go 也是对于反射提供了友好的支持,反射官方描述是一种能够自描述、自控制的应用。go 中的反射就是在运行时动态调用实例的方法和属性,并且在reflect包中对于反射做了集中的实现。常见反射场景比如说rpc调用,Java是基于反射实现的,go也是如此。
邹志全
2019-07-31
4120
Kafka 之压缩算法&Hash算法
Kafka 支持的压缩算法还挺多的,这一篇来站在Kafka的角度看一下压缩算法。就当前情况来说,支持GZIP、Snappy、LZ4 这三种压缩算法。具体是通过compression.type 来开启消息压缩并且设定具体的压缩算法。
邹志全
2019-07-31
1.9K0
如何让别人看不懂你的代码
先道歉,最近忙着发paper(也可能是季后赛的事儿),又一不小心拖更一个月,实在抱歉。 良好的代码风格,是一个合格程序员最起码的素质。 我们经常听说,如何让自己代码更加清晰易懂,如何写出干净漂亮的代码。 合格的变量命名规范,简明的注释,整齐的缩进等等一堆描述,但是这种东西看起来实在是尴尬,枯燥不容易接受。那么换个角度,如何让别人看不懂你的代码,如何让你的代码只有你能维护,可能更容易理解吧~
邹志全
2019-07-31
1.9K0
Go 内存管理 -- 内存分配 一
go作为一个比较新晚(新)的语言,自然借鉴前辈们的优点,比如说语言本身负责内存管理、对协程和高并发的高优支持、简单高效的语法等。本篇及后续的几篇要讲的就是还没提到的比较复杂的内存管理。 学习内存管理(分配&回收)前,如果有JVM的内存管理的基础,会变得非常简单,如果是第一次接触内存管理,在看完Go的内存管理后可以去看看JVM的,对比着学习比较容易理解。 go的内存管理思路是基于google 的tcmalloc(thread-caching-malloc)实现的,常见的内存分配器还有ptmalloc、jemalloc,但是tcmalloc的性能更高,尤其是高并发场景下。
邹志全
2019-07-31
1.3K0
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档