拥有Java标签的文章
Java

Effective Java (并发)

六十六、同步访问共享的可变数据:在Java中很多时候都是通过synchronized关键字来实现共享对象之间的同步的。事实上,对象同步并不仅限于当多个线程操作同一可变对象时,仍然能够保证该共享对象的状态始终保持一致。与此同时,他还可以保证进入同步方法或者同步代码块的每个线程,都看到由同一个锁保护的之前所有的修改效果。Java的语言规范保证了读写一个变量是原子的,除非这个变量的类型为long或double。换句话说,读取一个非long或double类型的变量

系统 2019-08-29 22:02:40 1261

Java

java笔记-工厂模式

一、引子话说十年前,有一个爆发户,他家有三辆汽车(Benz(奔驰)、Bmw(宝马)、Audi(奥迪)看来这人比较爱国,没有日本车),还雇了司机为他开车。不过,爆发户坐车时总是这样:上Benz车后跟司机说"开奔驰车!",坐上Bmw后他说"开宝马车!",坐上Audi后他说"开奥迪车!"。你一定说:这人有病!直接说开车不就行了?!而当把这个爆发户的行为放到我们程序语言中来,我们发现C语言一直是通过这种方式来坐车的!幸运的是,这种有病的现象在OO语言中可以避免了。

系统 2019-08-12 09:30:02 1261

Java

JRockit检测Tomcat内存溢出JAVA内存泄漏问题

公司的一个JAVA应用系统上线以来,基本每1天OutOfMemoryError:PermGenspace一次。JAVA堆上限1个G,出现了好多次,想到JRockit可以分析内存泄漏的问题:1.JRockit简介Jrockit是Bea开发的符合JAVA虚拟机规范的虚拟机+虚拟机监控软件。虚拟机:JrockitRealTime监控软件:JrockitMissionControlJrockitRealTime与SUN的JDK是完全兼容的,也就是说以前在SUN的虚

系统 2019-08-12 01:33:54 1261

Java

Java和Python的算法数据结构面试问题

有很多计算机科学专业毕业生和程序员在Uber和Netflix等公司申请编程,编码和软件开发职位。亚马逊,微软和谷歌等大型组织;和Infosys或Luxsoft等基于服务的公司。但是,当你申请这些公司的工作时,他们中的许多人都不知道会有什么样的编程面试问题。在本文中,我将分享一些常见问题的算法和数据结构面试问题,这些问题来自不同层次经验的程序员,从刚从大学毕业的人到具有一到两年经验的程序员。编码访谈主要包括数据结构和基于算法的问题以及一些逻辑问题,例如“如何

系统 2019-09-27 17:54:21 1260

Java

人工智能最火编程语言 Python大战Java!

开发者到底应该学习哪种编程语言才能获得机器学习或数据科学这类工作呢?这是一个非常重要的问题。我们在许多论坛上都有讨论过。现在,我可以提供我自己的答案并解释原因,但我们先看一些数据。毕竟,这是机器学习者和数据科学家应该做的事情:看数据,而不是看观点。话不多说,上数据。我搜索了与“机器学习”和“数据科学”一起使用的技能,搜索选项包括编程语言Java、C、C++和JavaScript。然后还包括了Python和R,因为我们知道它在机器学习和数据科学方面很受欢迎,

系统 2019-09-27 17:53:25 1260

Java

从Python程序中访问Java类的简单示例

fromjniusimportautoclass>>>Stack=autoclass('java.util.Stack')>>>stack=Stack()>>>stack.push('hello')>>>stack.push('world')>>>stack.pop()'world'>>>stack.pop()'hello'上面的代码中,我们使用autoclass函数,创建了一个类型代理,对应着Java中java.util.Stack类的所有方法和字段属性

系统 2019-09-27 17:49:06 1260

Java

java 第七课 变量

¯变量的分类注意变量名的命名规则:从语法角度看,是一个合法的标识符;从程序可读性角度看,是多个有意义的单词组合而成,其中第一个单词首字母小写,后面每个单词首字母大写。成员变量:在类范围里定义的变量。µ类变量:定义时使用static修饰的成员变量ü它从这个类的准备阶段起开始存在,直到系统完全销毁这个类时消亡---与类共存亡。ü访问类变量:类名.类变量名µ实例变量:定义时不使用static修饰的成员变量ü它从这个类的实例被创建开始起存在,直到系统完全销毁这个实

系统 2019-08-29 23:04:32 1260

Java

Java NIO(四)Scatter/Gather

JavaNIO开始支持scatter/gather,scatter/gather用于描述从Channel中读取或者写入到Channel的操作。分散(scatter)从Channel中读取是指在读操作时将读取的数据写入多个buffer中。因此,Channel将从Channel中读取的数据“分散(scatter)”到多个Buffer中。聚集(gather)写入Channel是指在写操作时将多个buffer的数据写入同一个Channel,因此,Channel将多

系统 2019-08-29 23:00:18 1260

Java

java调用系统命令

简单的静态函数SysCmd.java:importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;publicclassSysCmd{publicstaticStringautoExec(StringcmdLine)throwsIOException,InterruptedException{if(System.getProperty("os.

系统 2019-08-29 22:37:37 1260

Java

计算器制作JAVA版(第二步,表达式结构检查)

这个问题一个特点--麻烦!如何检查结构呢,结构错误是因为不符合我们的目标要求。在这里我们需要一个格式正确的表达式序列,那么我们就得视具体情况而作出判断。在这里可是涉及一个巨大的数学思想的!!!其实比较简单,就是我们高中数学里面最常用到的”分类讨论“。如果你有一个缜密的思路,在这里是非常好的,我这里的分析估计疏漏了大量的情况,希望大家能够一起补充,共同进步。首先是比较简单的一部分,括号数量以及对应情况是否正确。那么到底什么是正确的对应呢?类似于这种的()表达

系统 2019-08-29 22:17:21 1260

Java

jetty6 嵌入到 javaproject中

Jetty是一个开源的servlet容器,它为基于Java的web内容,例如JSP和servlet提供运行环境。Jetty以其高效、小巧、可嵌入式等优点深得人心,尤其是启动速度Tomcat6简直望尘莫及。Jetty作为可选的servlet容器只是一个额外的功能,而它真正出名是因为它是作为一个可以嵌入到其他的Java代码中的servlet容器而设计的。这就是说,开发小组将Jetty作为一组Jar文件提供出来,因此你可以在你自己的代码中将servlet容器实例

系统 2019-08-29 22:10:54 1260

Java

java之 22天 GUI 图形界面编程(二)

模拟window开打文件importjava.awt.Button;importjava.awt.Dialog;importjava.awt.FlowLayout;importjava.awt.Frame;importjava.awt.Label;importjava.awt.TextArea;importjava.awt.TextField;importjava.awt.event.ActionEvent;importjava.awt.event.Act

系统 2019-08-29 22:08:41 1260

Java

Java多线程-volatile的原理与技巧

volatile,用更低的代价替代同步为什么使用volatile比同步代价更低?同步的代价,主要由其覆盖范围决定,如果可以降低同步的覆盖范围,则可以大幅提升程序性能.而volatile的覆盖范围仅仅变量级别的.因此它的同步代价很低.volatile原理是什么?volatile的语义,其实是告诉处理器,不要将我放入工作内存,请直接在主存操作我.(工作内存详见java内存模型)因此,当多核或多线程在访问该变量时,都将直接操作主存,这从本质上,做到了变量共享.v

系统 2019-08-29 22:02:41 1260

Java

利用shell自动化打包java工程

Java代码#!/bin/bash#wuzhong@taobao.com#打包工程用usage(){echo'build.sh-s(svnup)-x(antx.properties)-m(mvncleanpackage)-a(doall)kjava/wtm]'exit1}#usageNEED_MVN=1whilegetopts"sxma:"options;docase$optionsins)echo"svnup"HAS_OPT=1NEED_SVN=1;;x

系统 2019-08-29 22:02:15 1260

Java

java之4天 数组排序,查找.进制转换

1.数组的定义格式1.元素类型[]数组名=new元素类型[元素个数或者数组长度];int[]arr=newint[5];//推荐intarrs[]=newint[5];2.静态初始化方式不能写长度int[]arrs=newint[]{3,1,4,5,6,2};int[]arrs={3,1,4,5,6,2};//好像是在jdk5.0后才能使用3.boolean类型的数组默认值为false数组的操作publicstaticvoidmain(String[]ar

系统 2019-08-29 22:00:03 1260