- 博客(36)
- 资源 (34)
- 收藏
- 关注
原创 ThinkStation P710 换显卡
ThinkStation P710换了个显卡,记录一下:ThinkStation主机无需螺丝刀开盖。侧面有开盖孔:钥匙在主机上:插入后拉起开关,盖可以滑开,即可开盖,拿下来也可以,没有其他螺丝。将一侧压着显卡的部件向上提然后扭到另一侧,显卡和主机连着的地方有两个螺丝,可以拧下来,利于拔出显卡:显卡有个尾扣,在薄的不与主机接触的那一侧底部,按着就可以向上提起显卡:装显卡的时候按着尾扣,将显卡插入槽中即可。通电测试一下,如果屏幕提示Please Pow..
2020-09-19 14:54:36 1681
原创 html建立顶部固定部分
建立顶部固定部分:<!DOCTYPE html><html lang="en"><head> <title>置顶</title> <meta charset="utf-8" name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0"/> <style> body { margin:
2020-09-18 16:06:33 1466
原创 Java 集合扩容、哈希、HashMap、ConcurrentHashMap、红黑树
Vector、HashTable线程安全ArrayList、HashMap线程不安全1.StringBuffer和StringBuilder初始化默认大小为16个字符2.HashMap初始大小默认16,加载因子为0.75,自增为2n3.HashTable初始大小默认11,加载因子为0.75,自增为2n+14.ArrayList初始大小默认10,自增为1.5n5.Vector初始大小默认10,自增为2n解决哈希冲突的方法:开放定址法、再散列函数法(再哈希法)、链地址法(拉链法)。.
2020-09-15 15:40:49 132
原创 Java十三规范简单总结
1、JDBC(java Database Connectivity,Java数据库连接):负责数据库访问。2、JNDI(Java Name and Directory Interface, Java名称与目录接口):根据名称和文件目录获取数据,如数据库连接时配置数据源,根据数据源名称,在配置文件中查找连接数据。3、EJB(Enterprise Java Bean,企业级Java Bean):将业务逻辑从客户端软件中抽取出来,封装组件中,运行在一个独立的服务器上。客户端软件通过网络调用组件提.
2020-09-15 14:16:10 175
原创 CPU结构、高速缓存、总线锁、缓存锁、缓存一致性协议、StoreBuffer、指令重排序、内存屏障
CPU结构任务管理器CPU部分右下中会展示高速缓存(L1、L2、L3):总线锁总线层面解决数据一致性问题。缓存锁解决高速缓存中数据一致性问题(简称:缓存一致性问题)。避免多核CPU的线程中,复制的主内存数据不能及时同步。一个CPU内核的高速缓存中的数据更新,会让其他CPU内存的高速缓存中相同数据的缓存失效。然后此CPU内核的高速缓存中的数据同步到主内存,其他CPU内核的高速缓存中相同数据从主内存重新复制。缓存一致性协议:MSI、MESI、MOSI...MES...
2020-09-14 08:53:25 2321 3
原创 课程学习后对教学方式优化的见解
学习了一些课程,充实自己,对前辈的教学方式有些异议,总结一些自己的想法:(1)广度遍历式教学,而非深度遍历式教学。先将知识在当前层面连接,然后再总体向下一层。(2)知识体系化,总结概念化,然后对关联知识点讲解,而非零碎地通过关键词部分一致进行分类,然后关联性讲解。...
2020-09-12 19:33:19 129 1
原创 Java volatile 示例及扩展
public class VolatileTest { private static boolean stop = false; public static void main(String[] args) { Thread thread = new Thread(() -> { System.out.println("start"); long i = 0; System.out.pr...
2020-09-12 17:18:20 112
原创 MindMaster思维导图拖动(移动)和上下、左右滚动
MindMaster思维导图拖动(移动)有两种方式:第一种是点击思维导图中心主题后按住鼠标左键拖动,如果中心主题不在视口范围内就无法拖动了,不推荐。第二种是按住鼠标右键直接拖拽,是博主推荐的操作方式。至于滚动:鼠标直接滚动是上下滚动,按住Alt再鼠标滚动是左右滚动。百度的时候没有这个答案,这里记录一下。...
2020-09-12 07:48:10 10699 1
原创 消费者、生产者、消息队列 实践一
消费者:public class Consumer implements Runnable { private Queue<String> messageQueue; public Consumer(Queue<String> messageQueue) { this.messageQueue = messageQueue; } @Override public void run() { while (
2020-09-11 17:17:09 201
原创 Java 锁分离 分段锁
例1:java.util.concurrent.LinkedBlockingQueue将队列头取出数据和队尾插入数据分离成两个锁,而不是取出数据和插入数据抢占同一个锁。锁分离可以提升性能。private final ReentrantLock takeLock = new ReentrantLock();private final ReentrantLock putLock = new ReentrantLock();例2:java.util.concurrent.ConcurrentH
2020-09-11 16:00:00 588
转载 Java 偏向锁的升级
jvm源码(biasedLocking.cpp)解析的偏向锁升级流程(忽略一些细节)。示例中:线程1当前拥有偏向锁对象,线程2是需要竞争到偏向锁。线程2来竞争锁对象; 判断当前对象头是否是偏向锁; 判断拥有偏向锁的线程1是否还存在; 线程1不存在,直接设置偏向锁标识为0(线程1执行完毕后,不会主动去释放偏向锁); 使用cas替换偏向锁线程ID为线程2,锁不升级,仍为偏向锁; 线程1仍然存在,暂停线程1; 设置锁标志位为00(变为轻量级锁),偏向锁为0; 从线程1的空闲monitor..
2020-09-11 11:14:46 331
转载 JDK、JRE、JVM的关系
JDK、JRE、JVM的关系:JDK包括JRE,JRE包括JVM。参考:https://www.cnblogs.com/java-lzx/p/11641610.html、https://www.cnblogs.com/gkmeteor/p/11749175.html
2020-09-11 10:34:31 71
原创 Java Object的wait()、notify、notifyAll()
wait()、notify、notifyAll()必须在同步代码块中,而且是对象锁,对象锁的对象是wait()、notify、notifyAll()的对象。否则报java.lang.IllegalMonitorStateException。wait()会释放锁,阻塞当前线程,当前线程进入等待队列。notify会唤醒等待队列中的一个线程,进入同步队列。唤醒哪一个线程由操作系统的多线程管理决定。notifyAll()会唤醒等待队列中所有线程,进入同步队列。同步队列中的线程进行非公平竞争获得锁。公
2020-09-11 09:59:40 242
原创 待整理知识点记录
Spring:https://www.jianshu.com/p/da6c7af9a31aJVM:https://www.jianshu.com/p/49e76079243dJava:https://www.jianshu.com/p/ba07aafda9a9Spring事务传播特性:https://www.jianshu.com/p/e8d3131ece67
2020-09-10 19:21:02 81
转载 HotSpot虚拟机中的垃圾收集器
7种垃圾收集器: 新生代收集器:Serial、ParNew、Parallel Scavenge;老生代收集器:Serial Old、Parallel Old、CMS;整堆收集器:G1;参考:https://blog.csdn.net/qq_41723615/article/details/104380000待续......
2020-09-10 19:19:29 80
转载 JVM自己的线程
线程 说明 Attach Listener Attach Listener线程是负责接收到外部的命令,而对该命令进行执行的并且吧结果返回给发送者。通常我们会用一些命令去要求jvm给我们一些反馈信息,如:java -version、jmap、jstack等等。如果该线程在jvm启动的时候没有初始化,那么,则会在用户第一次执行jvm命令时,得到启动。 Signal Dispatcher 前面我们提到第一个Attach Listener线程的职责是接收...
2020-09-10 16:15:12 231
原创 Java 锁升级(锁膨胀)、锁降级
锁升级:偏向锁、轻量级锁、重量级锁的过渡。https://blog.csdn.net/haoranhaoshi/article/details/92388612优先尝试低级锁,不能适用,就升级锁。线程获取到不被其他线程获取的监视类或对象,监视类或对象头部记录线程ID,线程退出对监视类或对象的获取时直接退出,是偏向锁。如果有其他线程来获取监视类或对象,发现头部记录的线程ID不是自己的ID(https://blog.csdn.net/haoranhaoshi/article/details/10850.
2020-09-10 11:22:13 2279
原创 Java 锁粗化、锁消除
锁粗化:JIT编译时扩大锁定区域,避免对同一个类或对象频繁加锁、释放锁。例1:public void doMethod(){ synchronized(lock){ //do 1 } synchronized(lock){ //do 2 } synchronized(lock){ //do 3 }}public void doMethod(){ synchronized(lock){
2020-09-10 10:34:25 118
转载 Java CAS
CAS是英文单词Compare And Swap的缩写,翻译过来就是比较并替换。CAS机制当中使用了3个基本操作数:内存地址V,旧的预期值A,要修改的新值B。更新一个变量的时候,只有当变量的预期值A和内存地址V当中的实际值相同时,才会将内存地址V对应的值修改为B。这样说或许有些抽象,我们来看一个例子:1.在内存地址V当中,存储着值为10的变量。image2.此时线程1想要把变量的值增加1。对线程1来说,旧的预期值A=10,要修改的新值B=11。image3.在线程1要
2020-09-10 09:19:10 433
转载 Java 对象头、监视器、synchronized
对象头HotSpot虚拟机的对象头包括两部分信息:MarkWord 第一部分MarkWord,用于存储对象自身的运行时数据,如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等,这部分数据的长度在32位和64位的虚拟机(未开启压缩指针)中分别为32bit和64bit,官方称它为“MarkWord”。 Class类型指针 对象头的另外一部分是Class类型指针,即对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是哪个类的实例. ...
2020-09-10 06:16:18 656
转载 JDBC和ODBC
JDBC(Java Data Base Connectivity,Java数据库连接):面向Java的数据库连接方式。提供执行数据库操作的Java API。ODBC(Open Data Base Connectivity,开放数据库连接):微软的面向C/C++/C#的数据库连接方式。需结合ADO(ActiveX Data Objects,一种表示数据库中数据结构和数据的对象)执行数据库操作。...
2020-09-09 19:52:27 158
转载 IDEA 单独编译类
有时对单个类进行了改动,jar包中只想替换一个class文件。可以选择单独编译一个类:IDEA中导航目录中类右键点击Recompile'类名.java',或者选中类使用快捷键Ctrl+Shift+F9进行重新编译,新生成的class文件会覆盖class输出目录下原来的class文件。...
2020-09-09 16:18:31 11519
原创 IDEA中查看类的字节码
在IDEA的class输出路径中,找到想查看的类,右键Open in Terminal,然后在命令窗口中输入javap -v 类名.class,即可查看这个类的字节码。解析: 1、版本号 major version: 49 //java版本 jdk1.6显示的是50, jdk1.5显示的是49,jdk1.4显示的是58 , 高版本能执行低版本的class文件 2、常量池Constant pool Method:方法 Field:字段 String:字符串 Asciz:
2020-09-09 09:33:52 400 1
原创 事务ACID特性;脏读、不可重复读、幻读;读未提交、读已提交、可重复读、串行化
事务具有4个特征,分别是原子性、一致性、隔离性和持久性,简称事务的ACID特性;一、原子性(atomicity)一个事务要么全部提交成功,要么全部失败回滚,不能只执行其中的一部分操作,这就是事务的原子性二、一致性(consistency)事务的执行不能破坏数据库数据的完整性和一致性,一个事务在执行之前和执行之后,数据库都必须处于一致性状态。如果数据库系统在运行过程中发生故障,有些事务尚未完成就被迫中断,这些未完成的事务对数据库所作的修改有一部分已写入物理数据库,这是数据库就处于一种不正确
2020-09-09 08:48:50 965
原创 Java和操作系统层面的线程状态、造成状态的方法、监视器锁、BLOCKED和WAITING对比
Java层面线程状态、造成状态的方法:public enum State { /** * Thread state for a thread which has not yet started. (创建线程) */ NEW, // 新建 /** * Thread state for a runnable thread. A thread in the runnable * sta
2020-09-08 13:20:58 285
原创 Mysql的MyISAM、Innodb、表锁、页锁、行锁、锁升级、MyISAM锁调度、启动选项(启动参数)和系统变量、状态变量
MyISAM存储引擎、Innodb存储引擎对比:(1)MyISAM自增ID在文件中,Innodb在内存中;(2)MyISAM不支持事务,Innodb支持事务;(3)MyISAM支持表锁,InnoDB 支持表锁和行锁,默认为行锁。表锁:开销小,加锁快;锁定粒度大,锁冲突概率高,并发度低。行锁与之相反,页锁介于表锁和行锁之间。页锁:多条记录共同加锁。粒度:颗粒大小。表锁不会死锁,行锁和页锁可能死锁。BDB存储引擎支持表锁和页锁。表级锁分读锁和写锁。加读锁时,阻塞写请求。加写锁时,阻
2020-09-07 15:33:17 149
转载 netty、undertow、webLogic、webSphere、tomcat、jetty、jboss apache、vert.x内置容器
apache:只支持静态网页。tomcat:不支持EJB。Servlet容器。jetty:以Tomcat内核为基础进行了审核和调优。netty:非Servlet容器。Spring WebFlux默认netty作Web容器。支持高并发,能抵抗DOS攻击。C写的。jboss:EJB容器,不支持Servlet。webLogic:BEA基于j2ee架构的商业中间件。webSphere:IBM商业集成软件平台。undertow:红帽的Java开发的轻量级web容器。
2020-09-05 09:43:21 740
原创 MYSQL类型
MyISAM存储引擎、Innodb存储引擎对比:(1)MyISAM自增ID在文件中,Innodb在内存中;(2)MyISAM不支持事务,Innodb支持事务;(3)MyISAM支持表锁,InnoDB 支持表锁和行锁,默认为行锁。表锁:开销小,加锁快;锁定粒度大,锁冲突概率高,并发度低。行锁与之相反,页锁介于表锁和行锁之间。页锁:多条记录共同加锁。粒度:颗粒大小。表锁不会死锁,行锁和页锁可能死锁。BDB存储引擎支持表锁和页锁。表级锁分读锁和写锁。加读锁时,阻塞写请求。加写锁时,阻
2020-09-04 13:51:46 120
转载 ORM
ORM(Object Relational Mapping,对象关系映射)Hibernate 入门简单,性能低JPAMybatis 入门适中,轻量级。Mybatis是Hibernate的简化,是Ibatis的升级。IbatisSpringJDBC 入门难,性能高ORM框架隐藏SQL,使面向SQL编程到面向对象编程。...
2020-09-03 14:54:47 84
转载 Java 对象访问方式
一、句柄(对象的唯一标识)访问方式:使用句柄访问对象,会在堆中开辟一块内存作为句柄池,句柄中储存了对象实例数据(属性值结构体)的内存地址,访问类型数据的内存地址(类信息,方法类型信息),对象实例数据一般也在heap中开辟,类型数据一般储存在方法区中。使用句柄访问的好处是句柄中储存的是稳定的对象地址,当对象被移动时候,只需要更新句柄中的对象实例部分的值即可,句柄本身不用被移动修改。二、直接指针访问方式:直接指针访问方式指reference中直接储存对象在heap中的内存地址,但对应的类型数据访问
2020-09-03 14:51:06 476
转载 @Nonnull、@Nullable、空对象模式
package org.springframework.lang;import java.lang.annotation.Documented;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;import javax.annota.
2020-09-03 13:43:37 1059
转载 函数式编程
函数式编程与面向对象编程(Object-oriented programming)和过程式编程(Procedural programming)并列的编程范式。最主要的特征是,函数是第一等公民。强调将计算过程分解成可复用的函数,典型例子就是map方法和reduce方法组合而成 MapReduce 算法。只有纯的、没有副作用的函数,才是合格的函数。面向对象的世界里我们是把事物抽象成类和对象,然后通过封装、继承和多态来演示他们之间的关系。函数式的世界里把世界抽象成事物和事物之间的关系,用这种方式实现世
2020-09-03 08:29:20 93
转载 响应式编程(反应式编程)
响应式编程(reactive programming)是一种基于数据流(data stream)和变化传递(propagation of change)的声明式(declarative)的编程范式。响应式编程会声明数据变化对应的操作逻辑(声明式),会监听数据变化(数据流);数据变化后,会执行对应的操作逻辑(变化传递)。编程范式是编程的普适性模式。响应式编程也称反应式编程。响应式编程是观察者模式的实践。RxJava、Reactor是响应式编程框架。GUI的Listener,JavaFX
2020-09-02 15:50:51 1162
转载 JCP、JSR、JSR 250
JSR是Java Specification Requests的缩写,意思是Java 规范提案。是指向JCP(Java Community Process)提出新增一个标准化技术规范的正式请求。任何人都可以提交JSR,以向Java平台增添新的API和服务。JSR已成为Java界的一个重要标准。JSR 250是Java规范请求以发展为目标注解(即,关于不属于程序本身的软件程序的信息)JavaSE和JavaEE适用于各种不同技术的平台。据设想,各种JSR将使用注释来启用陈述式编程风格。在JavaEE组件JS
2020-09-02 09:57:59 166
原创 JVM GC所有关键知识点
堆:分年轻代(新生代,Young Generation)、年老代(老生代,Old Generation)、永久代(持久代,Permanent Generation)。永久代是方法区规范的实践。JDK1.8将永久代改为了元空间(MetaSpace)。永久代在JVM中,元空间在本地内存中。新生代分Eden、From、To区,默认大小比例8:1:1。From、To区又称为Survivor区。YGC(Young GC,新生代GC)(Minor GC)触发条件:Eden区空间不足。FGC(Full GC)
2020-09-01 14:42:04 172
转载 JVM模式、JIT编译
JVM模式:Client:启动快,启动后性能不如Server,适合桌面应用。Server:启动慢,启动后性能高,适合服务器后台。热点代码:被多次调用的方法被多次执行的循环体热点探测:基于采样基于计数器计数器的种类:方法调用计数器(默认阈值在Client模式下是 1500 次,在Server模式下是 10000 次)回边计数器两个计数器的协作Java代码(源代码)、字节码/中间码、机器码/本地代码/机器指令JIT(Just In Time)编译器/即时编译器:将热点代码
2020-09-01 14:38:57 125
bandilplszcb.zip(班迪录屏)
2020-06-24
ShpAnalysis.zip(包含Java方式解析shp文件的IDEA工程和ShapeExplorer.exe)
2020-06-18
Thoughtworks 技术雷达 2019.11版
2019-12-31
VertxTcpSocket.zip
2019-07-25
dubbo-admin-2.5.10.war
2019-07-10
zookeeper-3.4.14.zip
2019-07-10
Java RPC和RMI代码实战
2019-07-02
log4j使用实战
2019-06-25
百度语音Android实践:百度语音识别和语音合成、个人兴趣项目:亚丝娜人工智能AIMaid(仅供参考语音交流技术,请勿商用)
2019-05-19
ThoughtWorks技术雷达—2019年4月发布的最新版
2019-05-17
Maven简单使用
2019-05-06
Vert.x的Http和TCP实战
2019-04-14
Mina框架实战(由浅入深,稳扎稳打)
2019-04-09
机器学习实战之决策树全面总结
2019-03-27
机器学习实战之kNN
2019-03-17
Base64Util、FileUtil、GsonUtils、HttpUtil
2019-02-26
百度语音实战
2019-02-26
SpringBoot实战
2019-02-11
Socket实战
2019-01-22
摄像、拍照、人脸识别、人脸库对比
2019-01-11
人脸对比实战项目
2019-01-10
Java摄像开源框架(文档、案例、Jar包)、个人项目工程(JavaFX)、原始实例(JavaFX)
2019-01-05
提供汉字、拼音、拼音首字母的模糊查询(匹配左侧)
2019-01-01
中国慕课大学数据采集和管理网站-前后台-Java版
2021-07-19
Java全系列个人知识笔记
2021-07-11
weather-select.zip(Java获取详细的天气数据)
2020-06-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人