Java
文章平均质量分 56
boxyuan
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
对象创建过程
对象创建过程:判断有没有加载对象 分配内存空间。分配方式:指针碰撞,指针列表。遇到线程安全问题怎么办?CAS+失败重试,TLAB(本地线程分配缓冲) 初始化零值 设置对象头 执行init方法(属性赋值)Java对象布局对象头:对象自身的运行时数据( MarkWord )32位占4个字节,64位占8个字节:对象哈希码,GC分代年龄,是否偏向锁,锁标志位 Class Pointer类型指针: 数组长度实例数据 对象对齐填充(对象寻址最优的方式)指针压缩禁止指针压缩(默认开启):原创 2022-04-26 16:52:32 · 283 阅读 · 0 评论 -
Java类加载机制与JVM虚拟机内存模型
JVM虚拟机内存模型每个线程私有的区域:虚拟机栈,本地方法栈,程序计数器(PC寄存器) 程序计数器:程序正在运行或马上要运行代码的内存位置。内存位置:JVM汇编里每一行前面的数字 本地方法栈的本地方法:用c/c++实现的dll文件 一个user对象,方法区存放的是地址,堆区存放值 虚拟机栈里的局部变量表(slot槽,类似数组),存放程序里的局部变量 操作数栈:程序在运行过程中操作数(变量对应的值)做运算操作的一块临时中转存放空间 虚拟机栈:每一个方法从调用开始至执行完成的过程,都对应着一个栈原创 2022-04-25 18:14:53 · 400 阅读 · 1 评论 -
进程与线程
进程与线程进程是系统分配资源的基本单位,线程是调度cpu的基本单位,一个进程至少包含一个执行线程,线程寄生在进程之中。每个线程都有一个程序计数器(记录要执行的下一条指令),一组寄存器(保存当前线程的的工作变量),堆栈(记录执行历史,其中每一帧保存了一个已经调用但未返回的过程)线程分为两类用户级线程(ULT),cpu权限级别ring3普通用户可操作 内核级线程(KLT),cpu权限级别ring0才可操作用户空间划分内核空间,KLT系统核心跑在内核空间,ri...原创 2022-04-20 18:07:28 · 824 阅读 · 0 评论 -
ConcurrentHashMap
ConcurrentHashMap分段锁,大哈希表套小哈希表,减少竞争冲突 put操作时上锁,每次put时强制tryLock()加锁 Segment extends ReentrantLock(可重入锁,可以手动加锁和解锁),每个segment占一把锁原创 2022-04-20 11:57:22 · 274 阅读 · 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 · 719 阅读 · 0 评论 -
jdk1.8和1.7主要区别
jdk1.8和1.7主要区别原创 2022-04-13 15:36:41 · 2028 阅读 · 0 评论 -
HashMap 和 HashTable的区别?
HashMap 和 HashTable的区别原创 2022-04-12 18:15:39 · 1012 阅读 · 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 · 1846 阅读 · 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 · 333 阅读 · 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 · 634 阅读 · 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 · 402 阅读 · 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 · 340 阅读 · 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 · 352 阅读 · 0 评论 -
用字符流读取文件的几种方法
public class Demo2 { public static void main(String[] args) { //fileReader1();//创建字符数组,将文件字符流读入数组,用for each循环进行遍历输出 //fileReader2();//读取文件字符流挨个获取输出 //fileReader3();//创建字符数组把字符读进数组,获取长度添加进字符串缓冲区原创 2017-09-11 18:38:14 · 2216 阅读 · 0 评论 -
线程的停止
//线程停止/*线程的停止: 1. 停止一个线程 我们一般都会通过一个变量去控制的。 2. 如果需要停止一个处于等待状态下的线程,那么我们需要通过变量配合notify方法或者interrupt()来使用。*/public class ThreadDemo5 extends Thread { boolean flag = true; public ThreadDemo5(String原创 2017-09-27 20:22:09 · 324 阅读 · 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 · 298 阅读 · 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 · 403 阅读 · 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 · 432 阅读 · 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 · 4873 阅读 · 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 · 308 阅读 · 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 · 375 阅读 · 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 · 404 阅读 · 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 · 392 阅读 · 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 · 3843 阅读 · 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 · 291 阅读 · 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 · 491 阅读 · 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 · 300 阅读 · 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 · 384 阅读 · 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 · 1521 阅读 · 0 评论 -
银行系统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 · 385 阅读 · 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 · 4385 阅读 · 1 评论 -
单例模式
恶汉式: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 · 250 阅读 · 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 · 287 阅读 · 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 · 493 阅读 · 0 评论 -
使用JSP做购物车一(实现)
按照上篇文章的分析来具体实现:定义所需包名来分工:功能一:显示所有图书:1、数据层:用双列集合来保存数据,用静态方法来添加数据里嵌套Book类(在实体类包domain里来创建,代码在下面)的构造方法,public class DB { private static Map map=new LinkedHashMap(); static { map.put("1",原创 2017-01-23 11:34:50 · 8383 阅读 · 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 · 391 阅读 · 0 评论 -
求子数组最大和
public class findMaxSubArySum1 { public static void main(String[] args) { findMaxSubArySum1(); } /* * (迪原)11. 求子数组的最大和 题目: 输入一个整形数组,数组里有正数和负数。 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。 * 求所有子数组的和的最大值原创 2017-09-06 11:42:52 · 339 阅读 · 0 评论 -
java字符串大小写转换
public class DaxiaoxieTrans { public static void main(String[] args) { test(); } private static void test() { // TODO Auto-generated method stub System.out.println("请输入一连串字符串:"); Scanner原创 2017-08-28 18:51:56 · 681 阅读 · 0 评论 -
请写一个方法计算s=a+aa+aaa+aaaa+aa...a,其中a取值范围是[1-9]
public class JiSuan { /* * (群硕)5. 请写一个方法计算s=a+aa+aaa+aaaa+aa...a,其中a取值范围是[1-9], * a作为这个方法的参数,s作为这个方法的返回值。例如: 假设a=1,则s=1 假设a=2,则s=2+22 * 假设a=9,则s=9+99+999+9999+99999+999999+9999999+99999999+9999原创 2017-08-28 20:08:17 · 7799 阅读 · 1 评论 -
字符串左移或右移,java实现
(群硕)8. 编写一个函数,作用是把一个char组成的字符串循环右移n个。 比如原来是"abcdefghi"如果n=2,移位后应该是"hiabcdefgh"。 (以字符串和n为入参;允许使用库函数。注意考虑程序的健壮性。)public class StrYouYi2 { /* * (群硕)8. 编写一个函数,作用是把一个char组成的字符串循环右移n个。 * 比如原来是"ab原创 2017-08-30 10:17:11 · 1264 阅读 · 0 评论
分享