第1章:并发编程线程基础
第1章:并发编程线程基础 wait() 如果调用wait()方法的线程没有实现获取该对象的监视器锁,则调用wait()方法时线程会抛出IllegalMonitorStateException异常。 一个线程获取一个共享变量的监视器锁的方法 执行synchronized同步代码块时,使用该共享变量作为参数: synchronized(共享变量) { //do someth...
第1章:并发编程线程基础 wait() 如果调用wait()方法的线程没有实现获取该对象的监视器锁,则调用wait()方法时线程会抛出IllegalMonitorStateException异常。 一个线程获取一个共享变量的监视器锁的方法 执行synchronized同步代码块时,使用该共享变量作为参数: synchronized(共享变量) { //do someth...
可能是最全的命名规范,建议收藏,文末抽奖福利。 合格的程序员不仅仅是让代码跑起来,而是要做到代码整洁,只满足为了能让编译器通过编译,机器能跑就行而写代码的程序会算不上开发者,码农都不算。 好的命名能体现出代码的特征,含义或者是用途,让阅读者可以根据名称的含义快速厘清程序的脉络。 本篇分享如下代码命名套路来提高我们代码命名: 勿模糊,准确达意 避免误导 做有意义的区分 ...
艿艿:虽然 Lock 也翻译成锁,但是和上面的 「Java 锁」 分开,它更多强调的是 synchronized 和 volatile 关键字带来的重量级和轻量级锁。而 Lock 是 Java 锁接口,提供了更多灵活的功能。 Lock Java AQS java.util.concurrent.locks.AbstractQueuedSynchronizer 抽象类,简称 AQS ...
idea使用git
JVM线上监控工具 如果想要查看java进程中线程堆栈的信息,可以选择jstack命令 如果要查看对内存,可以使用jmap导出并使用jhat来进行分析,包括查看类的加载信息,GC算法,对象的使用情况等. 可以使用jstat来对JVM进行统计监测,包括查看各个区内存和GC的情况,还可以使用hprof查看CPU使用率,统计堆内存使用情况, 1.jps进程监控工具 jps是用于查看有权访...
集合遍历的时候删除元素的方法 在看阿里巴巴java开发手册时,有一条建议是这样的。 【强制】不要在foreach循环里进行元素的remove/add操作。remove元素请使用Iterator方式,如果并发操作,需要对Iterator对象加锁。 反例: ArrayList<Integer> list = new ArrayList<>();list.add(1...
Git 本地仓库与远程仓库连接 添加远程库 git remote add origin git@github.com:你的用户名/仓库名.git 生成SSH Key: ssh-keygen -t rsa -C “注册邮箱@example.com”(注意:ssh-keygen中间没有空格) 使用默认设置一路回车 会在c盘中生成.ssh 文件夹,打开id_rsa.pub,复制该文...
Git 安装 Git官网地址:http://git-scm.com/downloads 下载对应各个平台的安装包 安装完成后,可运行Git bash 进入Git命令行 查看配置: git config –list 可以查看相关配置信息 可以看到用户信息: 若想要修改用户名邮箱等信息 git config –global user.name “new user.name”...
Git 使用 git是目前流行的分布式版本管理系统。它拥有两套版本库,本地库和远程库,在不进行合并和删除之类的操作时这两套版本库互不影响。也因此其近乎所有的操作都是本地执行,所以在断网的情况下任然可以提交代码,切换分支。git又使用了SHA-1哈希算法确保了在文件传输时变得不完整、磁盘损坏导致数据丢失时能立即察觉到。 git的基本工作流程: git clone: 将远程的Ma...
JVM内置调优工具 jdk自带有很多命令来优化应用 Jmap 用来查看内存信息,实例个数以及占用内存大小 jmap -histo 14660 > ./log.txt 打开log.txt,文件内容如下: num::序号 instances:实例数量 bytes:占用空间大小 class name:类名称,[C表示char[],[S表示short[],[I...