/images/avatar.png

破解最新版navicat

  1. 参考注册机

https://www.lanzous.com/i9o3eej

原文:https://www.jianshu.com/p/aa3c00b87bec

  1. 下载Navicat注册机然后自行下载最新版navicat
  2. 确保已关闭Navicat Premium。无需断网,无需将注册机放到Navicat Premium安装目录下。以管理员身份运行此注册机;
  3. 打开注册机后, Patch勾选Backup、Host和Navicat v12,然后点击Patch按钮:

自启动docker并安装自启动镜像MySQL8

因为在10月15号换了新工作,入职了半月左右,这半月时间一直在搞前端的ts和angular,再加上在忙着自考,后端的代码一直没有碰,正好这周在家时间就圆一下我的好奇心去搞一搞docker,顺便把我的服务器利用一下做一个MySQL在上面,后期会上点项目上去;

以后服务器就安装一个Docker就行了

  1. 本次采用的是Centos7.5版本的Linux系统,镜像是阿里云下载的DVD版本;(因为Docker需要内核3版本以上的Linux); https://yakax.oss-cn-hangzhou.aliyuncs.com/blog/2018-11-5/1.png
  2. 执行一键安装脚本

序列化的作用

序列化的作用

  1. 序列化

有的时候我们想要把一个Java对象变成字节流的形式以便存储在文件或者网络传输:比如序列化成json格式通过http发送出去。

  1. 反序列化

有的时候我们想要从一个字节流中恢复一个Java对象。:比如在网络中接受到一个json格式字符串,把它转化为某个对象。

谈谈Java多线程与高并发

目前我接触的多线程编程基本上都是基于java.util.concurrent 这个包下的开发的,下面就以这个包来分析Java的多线程与高并发

分析面试题

  1. 在java中wait和sleep方法的不同?

最大的不同是在等待时wait会释放锁,而sleep一直持有锁。Wait通常被用于线程间交互,sleep通常被用于暂停执行。

  1. 创建多线程的三种方法

1.继承Thread() 2.实现Runnable()接口 3.实现Callable接口

  1. 继承Thread与实现Runnable区别

类可能只要求可执行即可,因此继承整个Thread类的开销过大

  1. Runnable和Callable的区别

Runnable接口中的run()方法的返回值是void;而Callable接口中的call()方法是有返回值的,和Future/FutureTask配合可以用来获取异步执行的结果。

  1. notify作用

1.notify:唤醒一个正在wait当前对象锁的线程,并让它拿到对象锁 2.notifyAll:唤醒所有正在wait前对象锁的线程 3.在调用wait,notify,notifyall的时候当前线程必须获得这个对象的锁。

  1. 线程的5种状态 https://yakax.oss-cn-hangzhou.aliyuncs.com/blog/2018-11-5/8.png

关于类型转换与运算问题

一个经典的类型转换问题

高位转低位需要强制转换,低位转高位是自动转换,表达式两侧的转换规则是向左边的类型看齐

  1. short s1=1;s1=s1+1;

s1+1值是自动转换int类型,而是s1是short类型 所以会提示你转为short类型,s1= (short) (s1+1)就正确了。

  1. short s1=1;s1=+=1; 这个为什么不报错

因为java语言规范中关于复合赋值的解释是这样的:e1+=e2实际上是e1=(T1)(e1+e2),这里的T1的数据类型。所以不会报错。

理解java反射

Java 反射是可以让我们在运行时获取类的方法、属性、父类、接口等类的内部信息的机制

为什么用反射

假如你写了一段代码:Object o=new Object(); 运行了起来!扔给jvm去跑,跑完就over了,jvm关闭,你的程序也停止了; 想想上面的程序对象是自己new的,程序相当于写死了给jvm去跑。假如一个服务器上突然遇到某个请求哦要用到某个类,哎呀但没加载进jvm,是不是要停下来自己写段代码,new一下,哦启动一下服务器,(脑残)! 反射是什么呢?当我们的程序在运行时,需要动态的加载一些类这些类可能之前用不到所以不用加载到jvm,而是在运行时根据需要才加载,这样的好处对于服务器来说不言而喻。

反射是框架的灵魂