GaHingZ 发布的文章

Windows 下快捷启动应用的小技巧


测试: Win7 其实Win 10就有这个功能

桌面应用太多,找半天?

1.D盘下创建path目录 2.然后将D:/path加入path环境变量 3.把要用的快捷启动拉进该目录,要用的时候就win+r 运行输入快捷启动名

一般快捷启动名就弄短的好记的就ok了


Java IO


Java IO

java.io.File类用于表示文件(目录)

File类只用于表示文件(目录)的信息(名称、大小等),不能用于文件内容的访问

File file = new File("F:\\临时文档\\958032738");//填入相对或绝对地址
//判断文件(夹)是否存在
if(!file.exists())
    file.mkdir(); //创建文件夹
else
    file.delete();//删除文件夹
//是否是一个目录  如果是目录返回true,如果不是目录or目录不存在返回的是false
System.out.println(file.isDirectory());
//是否是一个文件 如果是文件返回true,如果不是文件or文件不存在返回的是false
System.out.println(file.isFile());
//new file 的构造方式
File file2 = new File("e:\\javaio\\日记1.txt");
File file3 = new File("e:\\javaio","日记1.txt");
if(!file2.exists())
    try {
        file2.createNewFile();//创建文件
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
else 
    file2.delete();//删除文件
         //常用的File对象的API
System.out.println(file);//file.toString()的内容 F:\临时文档\958032738
System.out.println(file.getAbsolutePath());//绝对地址 F:\临时文档\958032738
System.out.println(file.getName());//文件(夹)名   958032738
System.out.println(file.getParent());//父文件夹 toString F:\临时文档
System.out.println(file.getParentFile().getAbsolutePath());//F:\临时文档
//列出该目录下的所有文件(夹) 返回的是文件(夹)的名字数组(非路径)
String filenames[] = file.list();
for(String filename:filenames)
    System.out.println(filename);

目录文件遍历


《垃圾收集》学习笔记_


第一章 简介

内存分配3种方式

静态分配:

局限 每个数据结构的大小必须在编译时可知 过程不能递归,因为对于过程的每个活动(过程体的一次执行),局部名字在内存中共享相同位置(这时一般用的是栈分配) 无法动态创建数据结构 优点 效率高,不需要在程序执行时创建和销毁栈帧 编译器知道所有数据的内存位置,可直接访问存储位置 内存需求预知,不会发生OOM

栈分配:

特点 可递归调用 栈分配的局部值,无法从过程体的一次执行保存到过程体的下一次执行(这时一般用的是静态分配) 被调用者的生命周期<=它的调用者 只有大小能在编译时确定的对象,才能作为过程的结果返回

堆分配

动态大小的对象可作为过程结果返回 数据结构大小不固定 允许把一个过程作为另一个过程的结果返回


Integer 源码方法学习_


求 32位无符号整数 前导0个数

注意使用场景,一般会用该方法的前导0个数不会少

汇编中逻辑右移可直接用指令 SHR reg/men ,n 即物理上 a>>2 比 (a>>1)>>1 快

首先想到的肯定是循环遍历

public static int numberOfLeadingZerosByLoop(int i){
        if(i==0)return 32;
        int n=0;
        while(i>>31==0){
            n++;
            i<<=1;
        }
        return n;
    }

实现简单,但平均时间略高


动手写一个并发缓存框架 历程


首先给上我们的耗时任务,和简单web框架搭建

提供一个0-20的数字,计算前n项和,为了不使得计算太快 每加一次 sleep

package com.france.servlet;

import java.io.IOException;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class TaskServlet implements Servlet{

    @Override
    public void service(ServletRequest req, ServletResponse resp)
            throws ServletException, IOException {
        // TODO Auto-generated method stub
            try {
                int num=Integer.valueOf(req.getParameter("num"));
                if(num<=0)throw new Exception("数字<=0");
                if(num>=20)throw new Exception("数字>=20");
                int sum=calculateSumWithSleep(num,500);
                System.out.println("计算得到的结果是:"+sum);
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    }
    private int calculateSumWithSleep(int num,long ms){
        int sum=0;
        for(int i=0;i<=num;i++){
            sum+=i;
            try {
                Thread.sleep(ms);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return sum;
    }

    @Override
    public void destroy() {
        // TODO Auto-generated method stub

    }

    @Override
    public ServletConfig getServletConfig() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public String getServletInfo() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public void init(ServletConfig arg0) throws ServletException {
        // TODO Auto-generated method stub

    }

}