破解最新版navicat
- 参考注册机
https://www.lanzous.com/i9o3eej
原文:https://www.jianshu.com/p/aa3c00b87bec
- 下载Navicat注册机然后自行下载最新版navicat
- 确保已关闭Navicat Premium。无需断网,无需将注册机放到Navicat Premium安装目录下。以管理员身份运行此注册机;
- 打开注册机后, Patch勾选Backup、Host和Navicat v12,然后点击Patch按钮:
https://www.lanzous.com/i9o3eej
原文:https://www.jianshu.com/p/aa3c00b87bec
因为在10月15号换了新工作,入职了半月左右,这半月时间一直在搞前端的ts和angular,再加上在忙着自考,后端的代码一直没有碰,正好这周在家时间就圆一下我的好奇心去搞一搞docker,顺便把我的服务器利用一下做一个MySQL在上面,后期会上点项目上去;
有的时候我们想要把一个Java对象变成字节流的形式以便存储在文件或者网络传输:比如序列化成json格式通过http发送出去。
有的时候我们想要从一个字节流中恢复一个Java对象。:比如在网络中接受到一个json格式字符串,把它转化为某个对象。
最大的不同是在等待时wait会释放锁,而sleep一直持有锁。Wait通常被用于线程间交互,sleep通常被用于暂停执行。
1.继承Thread() 2.实现Runnable()接口 3.实现Callable接口
类可能只要求可执行即可,因此继承整个Thread类的开销过大
Runnable接口中的run()方法的返回值是void;而Callable接口中的call()方法是有返回值的,和Future/FutureTask配合可以用来获取异步执行的结果。
1.notify:唤醒一个正在wait当前对象锁的线程,并让它拿到对象锁 2.notifyAll:唤醒所有正在wait前对象锁的线程 3.在调用wait,notify,notifyall的时候当前线程必须获得这个对象的锁。
一个经典的类型转换问题
高位转低位需要强制转换,低位转高位是自动转换,表达式两侧的转换规则是向左边的类型看齐
s1+1值是自动转换int类型,而是s1是short类型 所以会提示你转为short类型,s1= (short) (s1+1)就正确了。
因为java语言规范中关于复合赋值的解释是这样的:e1+=e2实际上是e1=(T1)(e1+e2),这里的T1的数据类型。所以不会报错。
Java 反射是可以让我们在运行时获取类的方法、属性、父类、接口等类的内部信息的机制
假如你写了一段代码:Object o=new Object(); 运行了起来!扔给jvm去跑,跑完就over了,jvm关闭,你的程序也停止了; 想想上面的程序对象是自己new的,程序相当于写死了给jvm去跑。假如一个服务器上突然遇到某个请求哦要用到某个类,哎呀但没加载进jvm,是不是要停下来自己写段代码,new一下,哦启动一下服务器,(脑残)! 反射是什么呢?当我们的程序在运行时,需要动态的加载一些类这些类可能之前用不到所以不用加载到jvm,而是在运行时根据需要才加载,这样的好处对于服务器来说不言而喻。
反射是框架的灵魂