Java
文章平均质量分 89
HANXIUHUI
Java iOS
展开
-
笔记 —— for、Iterator、ListIterator
定义一个集合:ArrayList<String> list = new ArrayList<>();list.add("a");list.add("b");list.add("v");list.add(&quo原创 2019-01-17 10:50:06 · 112 阅读 · 0 评论 -
Java 多线程(二)—— Synchronized
前言synchronized是Java中的关键字,是一种同步锁。它修饰的对象有以下几种:修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象;修饰一个方法,被修饰的方法称为同步方法,其作用的范围是整个方法,作用的对象是调用这个方法的对象;修改一个静态的方法,其作用的范围是整个静态方法,作用的对象是这个类的所有对象;修改一个...转载 2019-01-30 10:23:33 · 179 阅读 · 0 评论 -
Mac 安装 jd-gui
打开终端,使用 brew安装,命令如下:brew cask install jd-gui如图:原创 2019-02-16 10:48:49 · 199 阅读 · 0 评论 -
Java 单例设计模式
一、概念单例模式:确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问。单例类只能有一个实例。单例类必须自己创建自己的唯一实例。单例类必须给所有其他对象提供这一实例。二、优缺点优点:在内存里只有一个实例,减少了内存的开销;避免对资源的多重占用;数据共享缺点:没有接口,不能继承,与单一职责原则冲突;滥用单例将带来一些负面问题,如为了节省资源...转载 2019-01-30 16:32:17 · 85 阅读 · 0 评论 -
Java 多线程(三)—— 线程间通信
知识点:myThread.join():使当前线程阻塞,当 myThread 线程执行结束后,阻塞的线程再继续;object.wait():使当前线程阻塞,前提是必须先获得锁,一般配合synchronized 关键字使用。object.notify():随机唤醒一个等待(对象的)单个线程;如果有多个线程等待一个对象,这个方法只会唤醒其中一个线程,选择哪个线程取决于操作系统对多线程管理的实...原创 2019-01-31 14:14:02 · 191 阅读 · 0 评论 -
Java 多线程(四)—— 线程杂记
线程的生命周期:新建 创建线程就绪 线程对象已经启动,但是还没有获取到CPU的执行权运行 获取到了CPU的执行权阻塞 没有CPU的执行权,回到就绪状态死亡 代码运行完毕,线程死亡...原创 2019-02-12 15:24:29 · 106 阅读 · 0 评论 -
笔记 —— 自定义注解
格式:元注解public @interface 注解名称本质:注解本质上就是一个接口,该接口继承Annotation接口反编译:public interface MyAnno extends java.lang.annotation.Annotation {}属性:接口的抽象方法,称为注解属性要求:属性的返回值类型有下列取值基本数据类型String枚举...原创 2019-02-20 09:37:13 · 115 阅读 · 0 评论 -
笔记 —— 反射
* 框架:半成品的软件。可以在框架的基础上进行软件开发,简化编码* 概念:将类的各个组成部分封装为其他对象,这就是反射机制。 * 好处 1. 可以在程序的**运行过程中**去操作这些对象 2. 可以解耦,来提高程序的可扩展性* Class对象功能: * 获取功能: 1. 获取成员变量 * Field[] getField():获取所有public修饰的成员变量 * ...原创 2019-02-20 15:06:58 · 95 阅读 · 0 评论 -
会话 —— Session
目录1. 概念2. 基本操作3. 实现原理4. 生命周期5. 特点6. 其他1. 概念服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象中。2. 基本操作1. 获取HttpSessionHttpSession session = request.getSession();2. 使用HttpSessionvoid setAttribute(Stri...原创 2019-03-19 20:12:09 · 198 阅读 · 0 评论 -
HttpServletResponse
一、响应消息服务器端发送给客户端的数据二、响应消息组成部分响应行:组成部分:协议和版本 响应状态码 状态码描述响应状态码:服务端通知客户端本次请求和响应的状态。都是3位数字状态码的类别2. 1xx:信息性状态码。接收的请求正在处理(服务器接收客户端消息,但是接受未完成,询问客户端是否仍有数据要发送。)。3. 2xx:成功状态码。请求正常处理完毕。4. 3xx:重定向状态...原创 2019-03-19 08:18:00 · 157 阅读 · 0 评论 -
验证码的简单实现
1、创建CheckCodeServlet类,生成验证码@WebServlet("/checkcode")public class Demo6_CheckCode extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws Serv...原创 2019-03-19 08:21:08 · 282 阅读 · 0 评论 -
Java动态代理-Proxy
https://www.cnblogs.com/techyc/p/3455950.htmlhttp://www.importnew.com/29359.html参考工程 08_case/10_proxy/Filter&Listener.md原创 2019-03-26 09:35:27 · 212 阅读 · 0 评论 -
使用动态代理,抽取Service公共代码
原业务层代码:AccountServiceImpl_OLD.javapublic class AccountServiceImpl_OLD implements AccountService { private AccountDao accountDao; private TransactionManager transactionManager; // 实现se...原创 2019-04-12 11:44:09 · 979 阅读 · 0 评论 -
Java 多线程(一)—— 守护线程
Java的线程分为两种:User Thread(用户线程)、DaemonThread(守护线程)。只要当前JVM实例中尚存任何一个非守护线程没有结束,守护线程就全部工作;只有当最后一个非守护线程结束是,守护线程随着JVM一同结束工作,Daemon作用是为其他线程提供便利服务,守护线程最典型的应用就是GC(垃圾回收器),他就是一个很称职的守护者。 Thread t1 = new Thread()...原创 2019-01-29 17:23:29 · 100 阅读 · 0 评论 -
约瑟夫环
约瑟夫环运作如下:1、一群人围在一起坐成 [2] 环状(如:N)2、从某个编号开始报数(如:K)3、数到某个数(如:M)的时候,此人出列,下一个人重新报数4、一直循环,直到所有人出列 ,约瑟夫环结束数数,数是3的倍数,则移除该数: public static int getNum(int num) { // 创建集合,存储 1 到 num 的对象 ...原创 2019-01-29 10:59:30 · 3498 阅读 · 0 评论 -
笔记 —— BufferedInputStream & BufferedOutputStream、FileInputStream & FileOutputStream
一、BufferedInputStream、BufferedOutputStreamBufferedInputStreamBufferedInputStream 内置了一个缓冲区(数组);BufferedInputStream 会一次性从文件中读取8192个字节,存在缓冲区,返回给程序一个(图中 临时变量b);程序再次读取时,就不用找文件,直接从缓冲区中获取;直到缓冲区中的所有的都被...原创 2019-01-23 18:56:46 · 382 阅读 · 0 评论 -
笔记 —— FileOutputStream
小需求:将键盘录入的数据拷贝到当前项目下的 pop.text 文件中,键盘录入数据当遇到 quit 时就退出步骤:1、创建键盘录入对象2、创建输出流对象,关联 pop.text 文件3、定义无限循环4、遇到 quit 退出循环5、如果不 quit,将内容写出6、关闭流实现System.out.println("请输入数据:"); // 1、创建键盘录入对象...原创 2019-01-24 14:45:06 · 233 阅读 · 0 评论 -
笔记 —— BufferedReader、BufferedWriter
目录FileWriter什么情况下使用字符流?通过项目默认的码表一次读取一个字符字符流是否可以拷贝非纯文本的文件自定义字符数组拷贝整行读取实现整行读取和写出把文本文档上的每行文本反转FileWriter底层有 2kb 的缓冲区(字符是先写入到内存中的)。如果不关流,就会将内容写到缓冲区中,文件为空;关流之后,才会缓冲区的流写入到文件中。什么情况下使用字符流?字...原创 2019-01-25 11:24:58 · 219 阅读 · 1 评论 -
笔记 —— 获取一个文本上每个字符出现的次数
获取一个文本上每个字符出现的次数,将结果写在times.txt中步骤:创建带缓冲的输入流对象创建双列集合 TreeMap把读取的字符存储在双列集合中关闭输入流创建带缓冲的输出流对象把双列集合的内容写到times.txt关闭输出流try { // 1、创建带缓冲的输入流对象 BufferedReader br = new Bu...原创 2019-01-25 14:57:07 · 295 阅读 · 0 评论 -
Integer 面试题
1、Integer num3 = new Integer(10);Integer num4 = new Integer(10);System.out.println(num3.equals(num4)); // trueSystem.out.println(num3 == num4); // falseInteger 重写了 Object 类的 equals 方法,Integer 比...原创 2019-01-15 15:01:20 · 1211 阅读 · 0 评论 -
不用加减乘除做加法
题目写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。思路首先看十进制是如何做的: 5+7=12,三步走第一步:相加各位的值,不算进位,得到2。第二步:计算进位值,得到10. 如果这一步的进位值为0,那么第一步得到的值就是最终结果。第三步:重复上述两步,只是相加的值变成上述两步的得到的结果2和10,得到12。 同样我们可以用三步走的方式计算二进制值...原创 2019-01-22 09:10:05 · 79 阅读 · 0 评论 -
笔记 —— SequenceInputStream
SequenceInputStream 序列流序列流应用场景:将多个文件整合到一个文件中整合2个文件 try { FileInputStream fis3 = new FileInputStream("a.txt"); FileInputStream fis4 = new FileInputStream("b.txt"); ...原创 2019-01-27 12:43:50 · 392 阅读 · 0 评论 -
笔记 —— ByteArrayOutputStream
内存输出流:ByteArrayOutputStream此类实现了一个输出流,其中的数据被写入一个 byte 数组。缓冲区会随着数据的不断写入而自动增长。可使用 toByteArray() 和 toString() 获取数据。两个构造函数1、ByteArrayOutputStream(); 创建新的字节数组输出流,字节数组指定大小是32。2、ByteArrayOutputStream(i...原创 2019-01-27 14:51:23 · 5948 阅读 · 0 评论 -
笔记 —— ObjectOutputStream & ObjectInputStream
序列化,对象输出流 ObjectOutputStream反序列化,对象输入流:ObjectInputStream前言1、需要序列化和反序列化的类须实现接口 Serializable,否则抛出异常NotSerializableException;2、若反序列化时类的 serialVersionUID 与序列化时不同,则抛出异常 InvalidClassException;并且 local ...原创 2019-01-28 10:45:23 · 107 阅读 · 0 评论 -
笔记 —— DataInputStream & DataOutputStream
数据输入流:DataInputStream数据输出流:DataOutputStream首先,我们不能使用 FileOutputStream 写入一个超过255的int值。因为 FileOutputStream 中直接写入一个 int 类型,会截取其低 8 位,丢弃其高 24 位。此时使用 FileInputStream 读取出的值,也许并不是我们期望的值!我们可以使用数据输入流和输出流实现写...原创 2019-01-28 11:56:04 · 193 阅读 · 1 评论 -
笔记 —— Properties
概念1、Properties 继承于 Hashtable,表示一个持久的属性集.属性列表中每个键及其对应值都是一个字符串。2、Properties 类被许多 Java 类使用。例如,在获取环境变量时它就作为System.getProperties() 方法的返回值。应用 // 配置文件名相对路径,在当前项目下 String configName = "config.pro...原创 2019-01-28 15:28:52 · 197 阅读 · 0 评论 -
笔记 —— File
需求:从键盘接受一个文件夹路径,统计文件夹的大小File 是不能直接获取文件夹大小的;获取文件夹大小必须遍历文件夹内所有文件,累加计算/* * 获取文件夹路径 * */ public static File getDir() { // 1、创建键盘录入对象 Scanner scanner = new Scanner(System.in...原创 2019-01-28 16:43:42 · 118 阅读 · 0 评论 -
斐波那契数列
斐波那契数列(Fibonacci sequence)指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)1、使用递归实现 /* * @num 第几个数 * @return 返回斐波那契数列的第 num 数 ...原创 2019-01-29 10:24:51 · 795 阅读 · 0 评论