j2se
文章平均质量分 72
zhangyingchengqi
学无止境。
展开
-
面试题(四)
Statement和PreparedStatement之间的区别关系:PreparedStatement继承自Statement,都是接口 区别:PreparedStatement可以使用占位符,是预编译的,批处理比Statement效率高详解:1、PreparedStatement:表示预编译的 SQL 语句的对象。 接口:public interface PreparedStatement extends Statement之间的继承关系 SQL 语句被预编译并存储在 Prepa...原创 2021-08-08 09:42:31 · 323 阅读 · 0 评论 -
JVM中常见的线程种类
线程 所属 说明 Attach Listener JVM Attach Listener线程是负责接收到外部的命令,而对该命令进行执行的并且吧结果返回给发送者。通常我们会用一些命令去要求jvm给我们一些反馈信息,如:java -version、jmap、jstack等等。如果该线程在jvm启动的时候没有初始化,那么,则会在用户第一次执行jvm命令时,得到启动。 Signal Dispatcher JVM 前面我们提到第一...原创 2021-08-01 10:10:38 · 723 阅读 · 0 评论 -
面试题集一
1.面向对象和面向过程的区别面向过程优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。缺点:没有面向对象易维护、易复用、易扩展面向对象优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护缺点:性能比面向过程低2.Java的四个基本特性(抽象、封装、继承,多态)抽象:就是把现实生活中的某一类东西提取出来,用程原创 2021-08-01 08:52:50 · 778 阅读 · 0 评论 -
并发编程问题
并发编程的目的是为了让程序运行得更快,但并不是启动更多的线程就能让程序最大限度并发执行。因为这里涉及到上下文切换问题,死锁问题,及受限于硬件和软件的资源限制问题。1. 上下文切换 即使是单核处理器也支持多线程执行代码,CPU通过给每个线程分配CPU时间片来实现这个机制。时间片是CPU分配给各个线程的时间,因为时间片非常短,所以CPU通过不停地切换线程执行,让我们感觉多个线程是同时执行的,时间片一般是几十毫秒(ms). CPU通过时间片分配算法来循环执行任务...原创 2021-01-11 16:37:32 · 468 阅读 · 0 评论 -
Integer类的toBinaryString源码分析
jdk的Integer包装类中提供了已经封装好的进制转换函数 toBinaryString(), toOctalString(),toHexString(),下面分析一下它们的源码。//转二进制public static String toBinaryString(int i) { return toUnsignedString0(i, 1);}//转八进制public static String toOctalString(int i) { return...原创 2020-12-28 12:42:07 · 2454 阅读 · 3 评论 -
java中浮点数表示方式
java虚拟机中的浮点数分为float和double两种,分别为32位和64位.它参考了IEEE 754的规范对浮点数进行处理。下面以float为例 ,分析一下float数的表示方法.float的32位分成三个部分来表示一个浮点数:浮点数的取值计算公式为:解析: 1) 当符号位s的取值为0时,sflag为1, 当s为1时,sflag为-1. 所以有: 2)e 为指数位,用 8 位表示 3) m 为尾数值,占用空间为23位,但是根据 e 的取...原创 2020-12-27 15:38:29 · 2745 阅读 · 2 评论 -
java中整数表示方式补码
在java虚拟机规范中定义的整数类型有byte(8位),short(16位),int(32位),long(64位),它们都是有符号整数,即最高位为符号位。这些整数JVM中使用补码来表示. 那么我们首先来了解一下原码,反码和补码.1. 原码符号位+二进制值,符号位在最左边. 例如:32位的整型原码: 10的原码: 00000000 00000000 00000000 00001010 // 最左边的0表示正数-10的原码: 10000000 00000000 00000000 000..原创 2020-12-27 15:03:24 · 911 阅读 · 1 评论 -
Date的构造方法分析
Date的构造方法分析:Date有一个构造方法如下:public Date(long date) { fastTime = date; }官方文档解释: long值 为 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数运行测试代码:Date d2=new Date( 0 );System.out.println( d2 );结果为:Thu Jan 01 08:00:00 CST 1970为什么是 08:00点呢? 因为我们当原创 2020-12-20 19:53:48 · 301 阅读 · 0 评论 -
jdk源码探索 - Boolean类
jdk 8 中的Boolean 类源码分析:1. 此类为 final类,表明它不能被继承了,因为它是一个基础类, 且实现了Serializable接口和Comparable接口,表明这个类的对象可以实现序列化及比较操作.public final class Boolean implements java.io.Serializable, Comparable<Boolean>2. 它有两个有参构造方法,但没有无参构造方法:public Boolean(boolean val.原创 2020-12-16 20:48:29 · 192 阅读 · 0 评论 -
java中Runtime,Process的一些有趣用法(三)- 发出ping命令并获取结果
Process process = Runtime.getRuntime() .exec("ping www.baidu.com");BufferedReader in = new BufferedReader(new InputStreamReader(process .getInputStream(),"GBK"));String string = null;while ((string = in.readLine()) != n..原创 2020-12-14 21:26:27 · 385 阅读 · 0 评论 -
java中Runtime,Process的一些有趣用法(二) - 获取主机中安装的软件相关信息
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.UnsupportedEncodingException;import java.util.ArrayList;import java.util.List;public class Test2 { public static void main(String[] args)..原创 2020-12-14 21:16:55 · 220 阅读 · 1 评论 -
java中Runtime,Process的一些有趣用法(一) - 关机
实现关机.Runtime r = Runtime.getRuntime();r.exec("shutdown -s -t 300");//300秒后关机其实就是调用了windows系统下的命令完成的. shutdown命令的语法详情如下:C:\Users\Administrator>shutdown /?用法: shutdown [/i | /l | /s | /sg | /r | /g | /a | /p | /h | /e | /o] [/hybrid] [/soft]...原创 2020-12-14 20:43:39 · 299 阅读 · 0 评论 -
乱码问题及字符编码集(二)
接上一篇:乱码问题及字符编码集(一)下面我们用java语言对各种编码集对中文的编码和解码进行测试:1. ASCII码:String chineseStr = "哈哈";//原字符byte[] ascii = chineseStr.getBytes("ASCII"); //解码String asciiStr = new String(ascii, "ASCII");System.out.println("使用ASCII编码显示中文" + asciiStr);结果乱码了,如下:...原创 2020-10-23 17:47:54 · 585 阅读 · 0 评论 -
乱码问题及字符编码集(一)
小白在刚开始学习编程,经常会遇到一些乱码问题,导致程序无法编译,在这里,对此进行一个了解。 在聊编码集之前,我们先来了解一些名词解释: 字符集:所谓字符编码就是一个系统支持的所有抽象字符的集合,也就是说我们平常使用的文字,标点符号,图形符号等都是字符集。但计算机无法识别这些文字,只能识别二进制的数字系统,所以需要一套规则,将字符转换成为数字系统,这就是字符编码。 编码: 按照某种字符编码规则( GBK, UTF-8 等) 将字符以二进制序列形式存储在计算机中. ...原创 2020-10-23 16:37:05 · 2467 阅读 · 0 评论 -
JDK版本选择
JDK的版本更新非常快,目前已经到了JDK15了,但绝大部分人估计都还在用着jdk8. 在大版本方面,目前可以选的就是8和11了,其他都不是LTS。(至于java10,2018年9月就已经失去官方支持了),JDK12其实是一个非LTS(long time support 长期支持版)版本,而11与8一样是LTS版,意味着下个通用的版本将从8直接到11,毕竟11包含了9和10的所有新特性,因此9和10估计就直接被废弃啦。不过9、10、11、12面向开发者的新特性其实并不是很多,大部分都是一些优化、...原创 2020-10-15 17:11:32 · 3748 阅读 · 0 评论 -
巴丰投针算法的模拟
To run the Buffon needle experiment, we have to work a little harder. When you throw a die, it has to come up with one of six faces. When throwing a needle, however, there are many possible outcomes.翻译 2011-11-28 22:14:22 · 1239 阅读 · 0 评论 -
面向对象的一个例程
基本需求: 写一个学生类,输出这个学生的名字和他的地址信息。======================================第一个类,地址类,考虑到这个类是一个基础类,所以单独写出来,以便重用。package com.yc;public class Address{ private String province; private String ci原创 2015-03-09 22:17:25 · 483 阅读 · 0 评论 -
网络IO的java实现方式
我们在使用Socket进行套接字进行网络通信开发时,可以使用三种java API来完成,它们分别是: BIO, NIO和AIO. 1. BIO方式: Blocking IO,即采用了阻塞方式, 它采用一个Socket套接字需要使用一个线程来处理。 建立联接,读数据,写数据的操作时,都可能发生阻塞。 这种模式非常简单,但问题是一个线程只能处理一个Socket, 如果是Server原创 2015-03-24 15:12:54 · 1256 阅读 · 0 评论 -
线程和线程池
现在是多核的时代,面向多核编程很重要,因些基于java的并发和多线程编程很重要。 首先要提到的就是线程池,与每次需要创建线程相比,线程池可以降低创建线程的开销,这是因为线程池在线程执行结束后进行的是回收操作,而不是真正销毁线程。 我们用一个案例来说明: 使用线程的方案: int count=10000000; long startTim原创 2015-03-24 15:39:37 · 439 阅读 · 0 评论 -
事务是什么?事务的四大特性? jdbc如何做事务处理?
事务: 对数据操作的一个单个逻辑单元,这个单元有可能有多个操作,要不同时成功,要不同时失败. 四大特性: 原子性, 隔离性, 一致性, 持久性. 原生jdbc对事务的处理如下:try{ connection.setAutoCommit( false); 数据库操作... connection.commit();}catch(Ex原创 2015-08-24 22:11:52 · 3186 阅读 · 0 评论 -
数据库的事务隔离级别
数据库事务的隔离级别有4个,由低到高依次为Read uncommitted 、Read committed、Repeatable read 、Serializable ,这四个级别可以逐个解决脏读 、不可重复读 、幻读 这几类问题。√: 可能出现 ×: 不会出现脏读不可重复读幻读Read uncommitted√√转载 2015-08-24 22:15:41 · 436 阅读 · 0 评论 -
spring的propogation(传播机制)
pring的propagation,表示打算对这些方法怎么使用事务,是用还是不用. propagation有七种配置. REQUIRED:支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。 SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行。 MANDATORY:支持当前事务,如果当前没有事务,就抛出异常。 REQUIRES_NEW:新建事务,如果原创 2015-08-24 22:18:48 · 1268 阅读 · 0 评论 -
java 序列化
序列化用来将对象的状态转换成字节流,以后可以通过这些值再生成相同状态的对象!对象序列化是对象持久化的一种实现方法,它是将一个对象的属性和方法转化为一种序列化的格式以用于存储和传输,反序列化就是根据这些保存的信息重建对象的过程。声明为static和transient类型的成员数据不能被序列化。因为static代表类的状态, transient代表对象的临时数据。将对象读出或者写入流的转载 2015-10-19 10:33:09 · 522 阅读 · 0 评论 -
effective java
第1条:考虑用静态工厂方法代理构造器第2条:遇到多个构造器参数时要考虑用构造器第3条:用私有构造器或者枚举类型强化Singleton属性第4条:通过私有构造器强化不可实例化的能力第5条:避免创建不必要的对象第6条:消除过期的对象引用第7条:避免使用终结方法第8条:覆盖equals时请遵守通用约定第9条:覆盖equals时总要覆盖hashCode第10条:始终要覆转载 2015-10-19 10:20:56 · 348 阅读 · 0 评论 -
阿里云 Ubuntu 16 配置iptables防火墙
Ubuntu默认安装是没有开启任何防火墙的,为了服务器的安全,建议大家安装启用防火墙设置,这里推荐使用iptables防火墙.如果mysql启本地使用,可以不用打开3306端口. # whereis iptables #查看系统是否安装防火墙可以看到: iptables: /sbin/iptables /usr/share/iptables /usr/share原创 2017-04-26 16:43:31 · 6152 阅读 · 0 评论 -
mac下eclipse的调试按钮灰色不可用解决方案
经常出现debug模式进入后,debug的几个按钮置灰,不可用状态 , 解决方案:退出 Eclipse.打开 Eclipse 目录下的 configuration 下的 org.eclipse.osgi ( 在我的mac下为: /Applications/Eclipse.app/Contents/Eclipse/configuration/org.eclipse.osgi/), 清空这...原创 2019-01-28 20:45:49 · 1247 阅读 · 0 评论 -
DataBase MetaData----数据库元数据
在使用Hibernate时,我们都用到了反向工程技术,即可根据一个已经存在的表,自动的生成Class类及映射文件,那么java是怎么知道数据库的表的结构的呢? 这就是DataBase MetaData所起的作用. 第一个概念“元数据”: 即数据的数据. 我们来看一个案例:1. 新建一个数据库:create database metadatatest;原创 2009-11-15 20:37:00 · 1313 阅读 · 0 评论