Object类

特点 是Java中唯一一个没有父类的类 java中所有的类不是object类的直接子类,就是其间接子类 定义在object类中的所有方法,在任何类中都可以直接调用,而不需要声明object类的对象。 是java中所有类的超类(基类 ,父类) object类中只有无参构造 方法 常用方法 public boolean equals(object obj) public boolean equals(Object obj) { return (this == obj); } 指示其他某个对象是否与此对象“相等”。 (ps:==判断是否引用地址相同) 2. public String tostring() 返回对象的字符串表示形式。 3. public int hashCode() 返回此对象的一个哈希码值。 不常用方法 protected Object clone() 创建并返回此对象的一个副本。 protected void finalize() 当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。子类重写 finalize 方法,以配置系统资源或执行其他清除。 public final Class<?> getClass() 返回此 Object 的运行时类。 public final void notify() 唤醒在此对象监视器上等待的单个线程。 public final void notifyAll() 唤醒在此对象监视器上等待的所有线程。 public final void wait() 在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待。 public final void wait(long timeout) 在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者超过指定的时间量前,导致当前线程等待。 public final void wait(long timeout,int nanos) 在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量前,导致当前线程等待。

July 18, 2019 · 1 min · zhangxiaofeng05

数据库隔离级别和传播行为

事务五个隔离级别 DEFAULT 使用数据库设置的隔离级别 ( 默认 ) ,由 DBA 默认的设置来决定隔离级别 . READ_UNCOMMITTED 会出现脏读、不可重复读、幻读 ( 隔离级别最低,并发性能高 ) READ_COMMITTED 会出现不可重复读、幻读问题(锁定正在读取的行) REPEATABLE_READ 会出幻读(锁定所读取的所有行) SERIALIZABLE 保证所有的情况不会发生(锁表) spring中七个事务传播行为 在TransactionDefinition接口中定义了七个事务传播行为。 PROPAGATION_REQUIRED(默认的spring事务传播级别) 如果存在一个事务,则支持当前事务。如果没有事务则开启一个新的事务。 PROPAGATION_SUPPORTS 如果存在一个事务,支持当前事务。如果没有事务,则非事务的执行。但是对于事务同步的事务管理器,PROPAGATION_SUPPORTS与不使用事务有少许不同。 PROPAGATION_MANDATORY 如果已经存在一个事务,支持当前事务。如果没有一个活动的事务,则抛出异常。 PROPAGATION_REQUIRES_NEW 总是开启一个新的事务。如果一个事务已经存在,则将这个存在的事务挂起。 PROPAGATION_NOT_SUPPORTED 总是非事务地执行,并挂起任何存在的事务。 PROPAGATION_NEVER 总是非事务地执行,如果存在一个活动事务,则抛出异常 PROPAGATION_NESTED 如果一个活动的事务存在,则运行在一个嵌套的事务中. 如果没有活动事务, 则按TransactionDefinition.PROPAGATION_REQUIRED 属性执行

July 18, 2019 · 1 min · zhangxiaofeng05

悲观锁和乐观锁

悲观锁和乐观锁:处理的是同一张表的同一行记录 悲观锁 如果使用了(加了一个行锁),如果事务没有被释放,就会造成其他事务处于等待。 使用数据库提供的锁机制实现悲观锁。 如果数据库不支持设置的锁机制,JPA会使用该数据库提供的合适的锁机制来完成,而不会报错。 使用entityManage.find(class,id,LockModeType);加悲观锁,相当于发送SELECT … FOR UPDATE 使用entityManage.lock(object,LockModeType);加悲观锁,相当于发送SELECT id FROM … FOR UPDATE 乐观锁(性能好) 添加一个私有字段version,不由程序员维护,由JPA自己维护 @Version private long version;

July 17, 2019 · 1 min · zhangxiaofeng05

什么是面向接口编程

面向接口编程 要正确地使用Java语言进行面向对象的编程,从而提高程序的复用性,增加程序的可维护性、可扩展性,就必须是面向接口的编程。面向接口的编程就意味着:开发系统时,主体构架使用接口,接口构成系统的骨架。这样就可以通过更换实现接口的类来更换系统的实现。 示例 public interface Person { public void show(); } public class Man implements Person{ @Override public void show() { System.out.println("Man...的show方法执行了。。。。"); } } public class Woman implements Person{ @Override public void show() { System.out.println("Woman...中的show方法执行了。。。。"); } } public class MainTest { public void show(Person person) { person.show(); } public static void main(String[] args) { Person man = new Man();//选择Persion,而不是Man man = new Man(); Person woman = new Woman();//选择Persion,而不是Woman woman = new Woman(); man.show(); woman.show(); System.out.println("-----------------"); MainTest test = new MainTest(); test.show(man); test.show(woman); System.out.println(man instanceof Woman); System.out.println(man instanceof Person); System.out.println(woman instanceof Person); } } 执行结果: ...

July 15, 2019 · 1 min · zhangxiaofeng05

linux安装QQ

首先要感谢deepin,QQ很早就停止linux版的更新了,deepin团队在移植上的力度还是比较大的。以后有机会的话,还会再装deepin的。 也要感谢wszqkzqk,做了整理。 解决方案 GitHub:https://github.com/wszqkzqk/deepin-wine-ubuntu 你也可以看作者的README,但是我没看,作者写的比较精简,有些具体的没看懂怎么操作!!原谅我是个萌新。 第一步:安装deepin-wine环境 上https://github.com/wszqkzqk/deepin-wine-ubuntu页面下载zip包(或用git方式克隆),解压到本地文件夹 在中国推荐用下面的地址,速度更快: (git clone https://gitee.com/wszqkzqk/deepin-wine-for-ubuntu.git) 在文件夹中打开终端,输入sudo sh ./install.sh一键安装。 第2步,安装相关应用容器 在http://mirrors.aliyun.com/deepin/pool/non-free/d/中下载想要的容器,点击deb安装即可。 (建议在终端下使用dpkg -i安装容器,否则容易误报依赖错误) 第3步,关于托盘 安装TopIconPlus的gnome-shell扩展,命令:sudo apt-get install gnome-shell-extension-top-icons-plus gnome-tweaks,然后用r命令重启gnome-shell(Alt+F2,输入r),最后用gnome-tweaks开启这个扩展。 参考 https://www.lulinux.com/archives/1319 https://github.com/wszqkzqk/deepin-wine-ubuntu

April 30, 2019 · 1 min · zhangxiaofeng05

使用SwitchyOmega

这个插件这是一个工具,常见代理有shadowsocks、Goflyway switchyomega的获取 代码在GitHub上维护:https://github.com/FelisCatus/SwitchyOmega switchyomega的配置 配置auto switch 规则列表地址:https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt 代理设置 参考:https://github.com/Alvin9999/new-pac

April 28, 2019 · 1 min · zhangxiaofeng05

vim基础配置

注意:推荐参考:https://github.com/zhangxiaofeng05/dotfiles 我的配置 系统的vim的配置文件在 /etc/vim/vimrc 当前用户的vim配置文件 ~/.vimrc " --------------zhangxiaofeng---------------- " 显示行号 或者 set number set nu " 语法高亮,自动识别代码,使用多种颜色显示 syntax on " 不与vi兼容,采用vim自己的操作命令 set nocompatible " 不支持鼠标,如果想支持把-去掉 set mouse-=a " 使用utf-8编码 set encoding=utf-8 " 高亮度搜寻 set hlsearch " 输入搜索模式时,每输入一个字符,就自动跳到第一个匹配的结果 set incsearch " 设置主题 " colorscheme molokai colorscheme desert " 高亮显示当前行/列 set cursorline set cursorcolumn " 修改行/列线的外观 " highlight CursorLine cterm=NONE ctermbg=black ctermfg=green guibg=NONE guifg=NONE highlight CursorColumn cterm=NONE ctermbg=black ctermfg=green guibg=NONE guifg=NONE " 按下回车键后,下一行的缩进会自动跟上一行的缩进保持一致 set autoindent " 按下 Tab 键时,Vim 显示的空格数 set tabstop=4 " 在文本上按下>> <<等缩进,每一级的字符数 set shiftwidth=4 " 光标遇到括号,自动高亮对应的括号 set showmatch

August 25, 2018 · 1 min · zhangxiaofeng05

安装jdk

Linux 下载 官网:https://www.oracle.com/technetwork/java/javase/downloads/index.html 配置环境 解压到/opt sudo tar -zxf jdk-8u211-linux-x64.tar.gz -C /opt/ 修改/etc/profile文件 sudo vi /etc/profile 把下面的添加到文件的末尾 export JAVA_HOME=/opt/jdk1.8.0_211 export JRE_HOME=/opt/jdk1.8.0_211/jre export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH 使修改后的文件生效 source /etc/profile Windows 下载 官网:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 安装 我选择默认安装 C:\Program Files\Java\jdk1.8.0_211 C:\Program Files\Java\jre1.8.0_211 配置环境 新建系统变量JAVA_HOME 变量名:JAVA_HOME 变量值:C:\Program Files\Java\jdk1.8.0_211 新建系统变量CLASSPATH 变量名:CLASSPATH 变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar 在系统变量Path中添加 %JAVA_HOME%\bin %JAVA_HOME%\jre\bin 测试是否成功 java -version java javac

August 23, 2018 · 1 min · zhangxiaofeng05

终端使用socks5代理

安装proxychains 简单粗暴的方式: $ sudo apt-get install proxychains 如果想要使用最新版,也可以自己手动编译源码 # 安装 git clone https://github.com/rofl0r/proxychains-ng.git ./configure --prefix=/usr --sysconfdir=/etc make sudo make install sudo make install-config 配置 在安装完成之后,一般在 /etc/proxychains.conf 处会有默认配置文件,编辑该文件 sudo vim /etc/proxychains.conf 然后在文件末修改成自己设置的shadowsocks设置的端口,如下 socks5 127.0.0.1 1080 验证 $ curl ip.gs 这个显示的ip是没有被代理的 $ proxychains curl ip.gs 这个就是你的代理了 在配置完 proxychains 之后,在终端如果任何命令无法连接成功时,在其前加上 proxychains 就可以走代理方式来执行该命令。 shell函数(unix&linux) 如果系统不支持proxychains,可以考虑设置函数。 # .zshrc function proxy_on() { export http_proxy=http://127.0.0.1:1080 export https_proxy=$http_proxy echo -e "终端代理已开启。" } function proxy_off(){ unset http_proxy https_proxy echo -e "终端代理已关闭。" } 参考 终端使用 sock5 代理 终端 terminal socks5 shadowsocks 代理 proxy 终端使用代理加速的正确方式(Shadowsocks)

August 16, 2018 · 1 min · zhangxiaofeng05