
Java
文章平均质量分 56
boxyuan
这个作者很懒,什么都没留下…
展开
-
对象创建过程
对象创建过程:判断有没有加载对象 分配内存空间。分配方式:指针碰撞,指针列表。遇到线程安全问题怎么办?CAS+失败重试,TLAB(本地线程分配缓冲) 初始化零值 设置对象头 执行init方法(属性赋值)Java对象布局对象头:对象自身的运行时数据( MarkWord )32位占4个字节,64位占8个字节:对象哈希码,GC分代年龄,是否偏向锁,锁标志位 Class Pointer类型指针: 数组长度实例数据 对象对齐填充(对象寻址最优的方式)指针压缩禁止指针压缩(默认开启):原创 2022-04-26 16:52:32 · 230 阅读 · 0 评论 -
Java类加载机制与JVM虚拟机内存模型
JVM虚拟机内存模型每个线程私有的区域:虚拟机栈,本地方法栈,程序计数器(PC寄存器) 程序计数器:程序正在运行或马上要运行代码的内存位置。内存位置:JVM汇编里每一行前面的数字 本地方法栈的本地方法:用c/c++实现的dll文件 一个user对象,方法区存放的是地址,堆区存放值 虚拟机栈里的局部变量表(slot槽,类似数组),存放程序里的局部变量 操作数栈:程序在运行过程中操作数(变量对应的值)做运算操作的一块临时中转存放空间 虚拟机栈:每一个方法从调用开始至执行完成的过程,都对应着一个栈原创 2022-04-25 18:14:53 · 321 阅读 · 1 评论 -
进程与线程
进程与线程进程是系统分配资源的基本单位,线程是调度cpu的基本单位,一个进程至少包含一个执行线程,线程寄生在进程之中。每个线程都有一个程序计数器(记录要执行的下一条指令),一组寄存器(保存当前线程的的工作变量),堆栈(记录执行历史,其中每一帧保存了一个已经调用但未返回的过程)线程分为两类用户级线程(ULT),cpu权限级别ring3普通用户可操作 内核级线程(KLT),cpu权限级别ring0才可操作用户空间划分内核空间,KLT系统核心跑在内核空间,ri...原创 2022-04-20 18:07:28 · 785 阅读 · 0 评论 -
ConcurrentHashMap
ConcurrentHashMap分段锁,大哈希表套小哈希表,减少竞争冲突 put操作时上锁,每次put时强制tryLock()加锁 Segment extends ReentrantLock(可重入锁,可以手动加锁和解锁),每个segment占一把锁原创 2022-04-20 11:57:22 · 235 阅读 · 0 评论 -
HashMap在JDK1.7和1.8里的区别是什么
HashMapget和put的时间复杂度为O(1) 为了解决hash冲突,HashMap引入了链表 计算数组下标并不是用取模,而是用位运算 hashcode&(length-1),位运算效率>取模,因为位运算是最接近于机器所能识别的运算 hashmap默认扩容因子0.75,最大容量2的30次方,初始容量2的4次方即16 默认初始容量16,如果自定义初始容量必须是2的指数幂,如果不是,则强行转换为大于这个数的2的最小指数幂。 为什么要转换成2的指数幂?减少哈希碰撞,为了.原创 2022-04-16 21:46:26 · 671 阅读 · 0 评论 -
jdk1.8和1.7主要区别
jdk1.8和1.7主要区别原创 2022-04-13 15:36:41 · 1944 阅读 · 0 评论 -
HashMap 和 HashTable的区别?
HashMap 和 HashTable的区别原创 2022-04-12 18:15:39 · 971 阅读 · 0 评论 -
用action执行方法
用dom4j解析xml标签,并将标签属性与文本内容添加进集合,创建方法,传入action查找对应的id,从何获取类路径与方法,利用反射执行方法FrameUtil.javapublic class FrameUtil { List list = new ArrayList(); public static void main(String[] args) throws Exce原创 2017-09-18 18:12:02 · 579 阅读 · 0 评论 -
线程安全问题(使用同步代码块)
class SaleTicket extends Thread { static int num = 50;// 票数,静态共享变量 static Object o = new Object();// 同步对象 public SaleTicket(String name) { // 获取名字 super(name); } // 重写run方法 public void run原创 2017-09-26 20:50:26 · 353 阅读 · 0 评论 -
线程安全问题(使用同步函数)
class SaleTicket2 extends Thread { static int num = 5000;// 票数,静态共享变量 static Object o = new Object();// 同步对象 public SaleTicket2(String name) { // 获取名字 super(name); } // 重写run方法 // 同步函数 pu原创 2017-09-26 22:52:10 · 293 阅读 · 1 评论 -
生产者与消费者问题
//产品类class Product { String name; double price; boolean flag = false;// 产品是否生产完毕的标识,默认情况是没有生产完成。}// 生产者class Producer extends Thread { Product p;// 产品 public Producer(Product p) { super()原创 2017-09-27 19:08:14 · 306 阅读 · 0 评论 -
用字符流读取文件的几种方法
public class Demo2 { public static void main(String[] args) { //fileReader1();//创建字符数组,将文件字符流读入数组,用for each循环进行遍历输出 //fileReader2();//读取文件字符流挨个获取输出 //fileReader3();//创建字符数组把字符读进数组,获取长度添加进字符串缓冲区原创 2017-09-11 18:38:14 · 2164 阅读 · 0 评论 -
线程的停止
//线程停止/*线程的停止: 1. 停止一个线程 我们一般都会通过一个变量去控制的。 2. 如果需要停止一个处于等待状态下的线程,那么我们需要通过变量配合notify方法或者interrupt()来使用。*/public class ThreadDemo5 extends Thread { boolean flag = true; public ThreadDemo5(String原创 2017-09-27 20:22:09 · 285 阅读 · 0 评论 -
守护线程
//只剩下一个线程,守护线程也消失//守护线程:有一个线程随主程序存在而存在,随主程序消失而消失public class ThreadDemo extends Thread { private String name; public ThreadDemo(String name) { super(); this.name = name; } public void run(原创 2017-09-27 21:07:34 · 258 阅读 · 0 评论 -
线程插入
public class ThreadJoin { public static void main(String[] args) { Mum m = new Mum(); m.start(); }}class Mum extends Thread { public void run() { System.out.println("洗菜"); System.out.pri原创 2017-09-27 21:15:15 · 381 阅读 · 0 评论 -
字符输出流,转换流,对象输入/输出流
private static void objectInputStream() { // TODO Auto-generated method stub try { FileInputStream fis=new FileInputStream("c:\\hello.txt"); ObjectInputStream ois=new ObjectInputStream(fis);原创 2017-09-11 19:21:54 · 395 阅读 · 0 评论 -
字节数组流,文件流,数据流,转换流
public class Demo011 { public static void main(String[] args) { Demo011 de = new Demo011(); de.byteArrayInputStream();// 字节数组输入流 de.fileInputStream();// 文件输入流 de.fileInputStream2();// 文件输入流,读原创 2017-09-11 20:41:34 · 4825 阅读 · 0 评论 -
反射获取类属性和方法的调用
package io.stream;import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.lang.reflect.Modifier;public class ReflectTest { public static原创 2017-09-12 11:05:37 · 260 阅读 · 0 评论 -
获取数据自动插入列
//获取数据自动插入列public class getAutoIncrement { private Connection conn; private PreparedStatement ps; private ResultSet rs; public static void main(String[] args) throws SQLException { getAutoIncr原创 2017-10-07 09:46:08 · 334 阅读 · 0 评论 -
Jdbc通用连接类
public class DbUtil2 { private static String url = null; private static String user = null; private static String password = null; private static String driverClass = null; static { try { Pr原创 2017-09-30 23:31:25 · 357 阅读 · 0 评论 -
DBCP与C3P0
public class MyDbcp { private Connection conn; private PreparedStatement ps; private ResultSet rs; public static void main(String[] args) { MyDbcp dbcp = new MyDbcp(); dbcp.testDbcp(); dbcp原创 2017-10-10 16:57:37 · 336 阅读 · 0 评论 -
计算三个班同学的总成绩,并升序排列
private static void countScore() { int[] sum = new int[3]; Scanner sc = new Scanner(System.in); int score; for (int i = 0; i < 3; i++) { System.out.println("请输入" + (i + 1) + "班的人数:"); i原创 2017-08-13 09:44:35 · 1414 阅读 · 0 评论 -
使用dom4j解析xml标签,将标签属性与文本内容添加进集合
studentInfo.xml 崔卫兵 PC学院 62354666 男,1982年生,硕士,现就读于北京邮电大学 张洪泽 PC学院 62358888 男,1987年生,硕士,现就读于中国农业大学 映射Student..javapublic class Student { private String id; private原创 2017-09-18 18:06:34 · 1791 阅读 · 0 评论 -
迭代器练习
public class IterableTest { public static void main(String[] args) { //test(); //test2();//list特有的迭代器ListIterator,可以在迭代过程中添加元素 test3();//添加指定元素 //test4();//替换指定元素 } private static void tes原创 2017-09-01 09:37:42 · 288 阅读 · 0 评论 -
DbUtil和Result接口
public class DbUtil { /*private Connection conn; private Statement sta;*/ private static String url="jdbc:mysql://localhost:3306/"; private static String user="root"; private static String passwo原创 2017-08-23 20:06:41 · 455 阅读 · 0 评论 -
在一个字符串中找到第一个只出现一次的字符
(恒生)在一个只出现一次的字符。如输入abaccdeff,则输出bpublic class StrFindFir2 { public static void main(String[] args) { char ch = test(); System.out.println(ch); } private static char test() { /原创 2017-08-23 16:34:30 · 247 阅读 · 0 评论 -
单例模式
恶汉式:public class SingleEHan { private static SingleEHan slh = new SingleEHan(); private SingleEHan() { } public static SingleEHan getSingEHan() { System.out.println("单例模式:饿汉式"); return slh原创 2017-08-23 15:22:56 · 202 阅读 · 0 评论 -
银行管理系统(控制台版),数据库用mysql
AdminServie.javapackage service;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.原创 2017-08-26 14:22:48 · 4207 阅读 · 1 评论 -
银行系统1.0
package bankSystem1_0;import java.util.Scanner;public class BankSys { public static void main(String[] args) { test(); } private static void test() { // TODO Auto-generated method stub S原创 2017-08-14 11:55:39 · 342 阅读 · 0 评论 -
Java编程题练习(一)
import java.util.Scanner;public class PrintTag2 { public static void main(String[] args) { int[][] num = new int[][] { { 245, 2, 490 }, { 570, 1, 570 }, { 320, 1, 320 } }; String[] name =原创 2017-08-11 20:36:44 · 335 阅读 · 0 评论 -
Java编程题练习(二)
private static void test1() { // TODO Auto-generated method stub String flag = null; do { Scanner sc = new Scanner(System.in); System.out.println("输入课程代号:"); int num = sc.nextInt();原创 2017-08-11 20:43:38 · 252 阅读 · 0 评论 -
人机猜拳
computer.javapublic class Computer { String name; int score; public int showFirst() { int num = (int) Math.random() * 3 + 1; switch (num) { case 1: System.out.println("电脑出拳:剪刀"); bre原创 2017-08-17 15:17:24 · 453 阅读 · 0 评论 -
用户注册,判断字符串个数,计算周数
用户注册package www.hpe.com.test;import java.util.Scanner;public class UserRegist { public static void main(String[] args) { UserRegist userRegist = new UserRegist(); Scanner sc = new Scanner(S原创 2017-08-16 11:22:31 · 252 阅读 · 0 评论 -
有一个分数序列2/1+3/2+5/3+8/5+13/8+…求出这个数列前20项的和
有一个分数序列2/1+3/2+5/3+8/5+13/8+…求出这个数列前20项的和public class FenShuXuLie { public static void main(String[] args) { test(); } private static void test() { // TODO Auto-generated method stub doub原创 2017-08-27 21:08:04 · 3762 阅读 · 0 评论 -
操作jdbc利用集合和反射对数据表中的记录进行遍历
private static List test8(String tabname, String clname) throws Exception { Class cl = Class.forName(clname); Connection conn = getConnection(); String sql = "select *from " + tabname; Lis原创 2017-09-13 15:50:28 · 339 阅读 · 0 评论 -
请编写一个函数jsValue(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k个素数存入数组xx传回
请编写一个函数jsValue(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k个素数存入数组xx传回。例如:若输入17 5, 则应输出:19, 23, 29, 31,37.(素数:只能被1和自身整除的正整数)public class SuShu9 { /* * (群硕)9. 请编写一个函数jsValue(int m,int k,int xx[]),该函原创 2017-08-31 19:45:54 · 4390 阅读 · 0 评论 -
封装jdbc的crud操作
//封装crud操作public class BaseDao { private final static String driver = "oracle.jdbc.driver.OracleDriver"; private final static String url = "jdbc:oracle:thin:localhost:1521:orcl"; private final sta原创 2017-09-25 20:13:12 · 908 阅读 · 0 评论 -
jdbc处理事务
public class BankDao extends BaseDao { public static void main(String[] args) throws SQLException { BankDao bd = new BankDao(); bd.zz(); } private void zz() throws SQLException { // TODO Aut原创 2017-09-25 20:09:17 · 646 阅读 · 0 评论 -
验证从标准输入获得的信用卡号是否校验通过, 校验通过,则输出”成功“,校验未通过则输出”失败“
(群硕)6. 编写一个程序,验证从标准输入获得的信用卡号是否校验通过, 校验通过,则输出”成功“,校验未通过则输出”失败“。该校验过程如下:(1)从卡号最后一位数字开始,逆向将奇数位(l,3,5等等)相加。 (2)从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数, 则将其减去9),再求和。 (3)将奇数位总和加上偶数位总和,结果应该可以被10整除。 例如,卡号是543211原创 2017-08-30 19:43:23 · 2446 阅读 · 0 评论 -
利用jdbc对数据表进行分页,操作存储过程(有参与无参,返回游标),函数等
select * from deptselect * from (select e.empno,e.ename,rownum r from (select empno,ename from emp order by empno) e where rownum>=20)where r<=30--无返回值的存储过程create or replace procedure proc_ins_dept原创 2017-09-07 21:04:02 · 530 阅读 · 0 评论