- 博客(95)
- 资源 (2)
- 收藏
- 关注
原创 Volatile和CAS
文章目录1、错误的双重检查锁加锁双重检查锁volatilevolatile什么是重排序volatile禁止重排序volatile写时volatile读时synchronized优化前优化后偏向锁:轻量级锁:CAS在代码规范中,有一条规范是“static 和 synchronized不应双重检查锁”1、错误的双重检查锁先回顾一下单例模式,单例模式是指:一个类有且仅有一个实例,并且自行实例化向整个系统提供。单例模式通常分为饿汉式和懒汉式。饿汉式:饿汉式在类创建的同时就已经创建好一个静态的对象供系统使用
2022-08-08 20:30:18
463
原创 深入浅出Java泛型
泛型泛型初印象 说起泛型,第一感觉是,这个东西我记得老师讲过,但我不记得老师讲了啥。再认真思索一下,好像是有个<T>, <?>,但它们是什么含义,怎么使用,全然不知。 当我提起泛型时,被问了下面几个问题。什么是泛型?泛型,即**“参数化类型”**。参数对我们而言很熟悉:定义方法时需要形参,调用方法时传递实参。通常我们使用的参数类型是具体的,而“参数化类型”就是将具体的参数类型也定义为参数的形式,使用时传入具体的类型。我的代码里会用到泛型吗?泛型虽然听上去不是很
2022-04-20 20:34:36
2400
2
转载 注册中心Eureka和ZooKeeper
文章目录简介对比ZookeeperEureka总结简介Eureka本身是Netflix开源的一款提供服务注册和发现的产品,并且提供了相应的Java封装。在它的实现中,节点之间相互平等,部分注册中心的节点挂掉也不会对集群造成影响,即使集群只剩一个节点存活,也可以正常提供发现服务。哪怕是所有的服务注册节点都挂了,Eureka Clients(客户端)上也会缓存服务调用的信息。这就保证了我们微服务之间的互相调用足够健壮。Zookeeper主要为大型分布式计算提供开源的分布式配置服务、同步服务和命名注册。曾经
2021-08-05 17:22:44
332
原创 Apollo配置中心(Springboot接入)
apolloapollo是一个分布式配置中心(其实也是一个微服务项目)。原理就是把配置文件中的key,value的值存到Apollo中,然后项目启动的时候从Apollo中读取1、为什么使用apollo在我们开发分布式微服务项目的时候,那些配置一旦变更,就需要重启服务,这样非常不友好。因此我们考虑动态更改配置文件当中的配置,所以把那些配置全部存放在apollo当中,这样就能达到动态的效果,并且不用重启服务。2、主要功能能够集中式管理不同环境(environment)、不同集群(clus
2021-08-05 15:56:43
5876
原创 使用@Autowired出现Field injection is not recommended
文章目录使用@Autowired的时候代码出现警告:@Autowire注入的对象可能为null使用@Autowired的时候代码出现警告:原因是Spring不推荐使用基于字段的依赖注入可以改成基于构造函数的依赖注入,idea能够自动生成,注入的类多的话会导致构造函数的参数过多(是一个信号,表明依赖项过多)也可以使用@Resource,只是没有警告区分一下@Autowired和@Resource两个注解的区别:(1)、@Autowired默认按照byType方式进行bean匹配,@Resour
2021-08-04 18:11:17
3575
原创 POM文件浅析
POMhttps://blog.youkuaiyun.com/zhou373986278/article/details/82763839https://www.cnblogs.com/east7/p/13363328.html?utm_source=tuicool
2021-07-29 14:55:54
760
原创 COM in Wine(2)——基本代码分析
提前声明!!!!!声明:本文以及后续相关博客只是总结,大部分内容都是翻译MSDN、Wine官网、《Inside OLE2》以及《COM原理与应用》中的内容,也参考了很多网络上的博客和论文,但时间久远,无法一一列出(鞠躬)ps:本篇博客是很基本很基本的代码分析,是很久之前写的,一开始是为了简单理解相关内容(可能有不对的地方),更具体的代码调用分析(也许)会在后续博客中给出文章目录COM库与类厂的交互列集和散集过程列集过程散集过程类型库Typelib的生成Typelib的加载Typelib相关接口C.
2021-04-20 15:30:27
934
原创 COM in Wine(1)——COM基本概念
毕设搞了一段时间的COM,不总结一下蛮可惜的提前声明!!!!!声明:本文以及后续相关博客只是总结,大部分内容都是翻译MSDN、《Inside OLE2》以及《COM原理与应用》中的内容,也参考了很多网络上的博客和论文,但时间久远,无法一一列出(鞠躬)文章目录1.COM概述2.COM基本概念(1)COM对象及接口(2)类厂(Class Factory)(3)COM库与类厂交互(4)进程内/进程外组件进程内组件进程外组件(5)套间(Apartment)(6)代理(Proxy)和存根(Stub)(7)列.
2021-04-20 14:10:22
719
原创 将Chrome浏览器背景设置为护眼色(眼睛护航/darkReader插件)
因为要天天对着电脑,浏览器页面白的刺眼……于是想给浏览器也设置一下护眼色,记录一下方法插件下载搜索了一下,眼睛护航和darkReader这两个插件时好评很多的,能科学上网的可以直接在谷歌商店下载插件,我是不能的,找了一下下载链接提取码:sbqb点击这里嗷插件安装因为dark reader只有黑色,我想要使用绿色,所以就安装了眼睛护航,方法如下(用这个方法安装了一下dark reader,也是ok的):下载后是一个压缩包,解压得到一个crx文件:有两种安装方法,点击查看教程:拖动安.
2020-11-27 17:19:31
11669
2
原创 知网下载pdf(再也不想用CAJViewer啦!!!)
用CAJViewer真的是……怎么用怎么难受,但知网上很多文章只有caj格式,记录一下下载pdf格式的方法进入知网谁能想到大学毕业两年了,还能用学号登录学校的图书馆呢……1、进入学校图书馆2、用自己的学号和密码登录进去,之后点击数据库3、这里就可以选择数据库了,我选的是中国知网4、选择方式三即可进入,可以在右上角看到学校身份下载pdf进入知网后很多文章只有caj格式可以下载,但是英文版是有pdf格式的1、把鼠标移到上面版本处,就会出现ENGLISH的选项,点击即可进入.
2020-10-26 20:50:00
6369
1
原创 二叉树任意两个节点间的最大距离(Java,LeetCode 543二叉树的直径 递归)
文章目录题目示例代码题目给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点示例给定二叉树: 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。注意:两结点之间的路径长度是以它们之间边的数目表示。代码思路:使用递归的方法,用一个全局变量max保存最大距离(一开始没写出来是因为把自己绕进
2020-09-27 19:15:18
3445
原创 MySQL——索引
MySQL索引文章目录MySQL索引索引简介为什么使用索引优缺点索引分类普通索引唯一索引主键索引组合索引全文索引索引实现原理Hash索引B+树索引B树和B+树为什么不使用二叉查找树B树B+树聚集索引和非聚集索引非聚集索引聚集索引参考链接索引简介索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。通俗地讲,索引用于快速找出在某个列中有一特定值的行,不使用索引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行,表越大,查询数据所花费的时间就越多,如果表中
2020-09-24 21:37:35
339
原创 TCP和UDP区别详解
文章目录OSI和TCP/IP模型OSI和TCP/IP模型 OSI七层网络模型 TCP/IP四层概念模型 对应网络协议 应用层(Application) 应用层 HTTP、TFTP, FTP, NFS, WAIS、SMTP 表示层(Presentation) Telnet, Rlogin, SNMP, Gopher 会话层(Session) SMTP, DNS 传输层(Transport) 传输层 TCP, UDP 网络层(Network) 网络层 IP, ICMP, A
2020-09-24 21:21:07
3115
2
原创 LeetCode 1547:切棍子的最小成本
文章目录题目示例示例1示例2代码题目有一根长度为 n 个单位的木棍,棍上从 0 到 n 标记了若干位置。例如,长度为 6 的棍子可以标记如下:给你一个整数数组 cuts ,其中 cuts[i] 表示你需要将棍子切开的位置。你可以按顺序完成切割,也可以根据需要更改切割的顺序。每次切割的成本都是当前要切割的棍子的长度,切棍子的总成本是历次切割成本的总和。对棍子进行切割将会把一根木棍分成两根较小的木棍(这两根木棍的长度和就是切割前木棍的长度)。请参阅第一个示例以获得更直观的解释。返回切棍子的 最小
2020-09-23 20:48:10
692
原创 MySQL——一条语句的执行流程和原理
文章目录一条语句执行流程与原理分析执行流程原理分析1.客户端/服务端建立连接2.客户端/服务端通信协议2.查询缓存3.语法解析和预处理(做什么)4.查询优化(怎么做)5.查询执行引擎6.返回结果一条语句执行流程与原理分析执行流程客户端向MySQL服务器发送一条查询请求服务器首先先检查查询缓存,如果命中缓存,则立刻返回存储在缓存中的结果。否则进入下一阶段服务器进行SQL解析、预处理、再由优化器生成对应的执行计划MySQL根据执行计划,调用存储引擎的API来执行查询将结果返回
2020-09-22 20:21:01
919
3
原创 单链表中环的问题
文章目录1.是否存在环2.环的长度今天被问了单链表中环的问题,答得一团糟,所以复习还是很重要的1.是否存在环如果单链表中存在环的话,遍历链表会陷入死循环,一般会使用双指针的方法来进行判断。思路:使用双指针对链表进行遍历,快指针fast和慢指针slow,fast每次走两步,slow每次走一步如果在遍历过程中,fast遍历到了null,说明没有环如果fast和slow指向同一个节点,说明存在环while (fast.next != null && fast.nex
2020-09-17 21:21:48
202
原创 MySQL——基本操作和基础知识
文章目录MySQL基本操作1. 数据库基本操作2. 数据库表基本操作创建数据库表Innodb和MyISAM的区别修改删除数据表3. 数据库字段基本操作4. 数据基本操作插入、更新、删除数据drop、truncate和delete的异同查询数据单表查询多表查询SQL逻辑查询语句执行顺序5. 补充基础知识数据类型约束条件常用函数索引事务管理MySQL基本操作1. 数据库基本操作查看和选择数据库查看所有数据库SHOW DATABASES;使用指定数据库USE database_name;
2020-09-17 10:10:03
182
原创 剑指offer:正则表达式匹配(回溯,动态规划)
题目:请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配答案:解法一:直接回溯法,代码如下:import java.util.*;...
2020-09-14 20:34:21
123
原创 String类的isEmpty()、null和“”的区别
文章目录demo代码:运行结果:结论:总结:String类的isEmpty()、null和“”都有空的含义,但三者是不同的。demo代码:为了更清晰的看三者的区别,可以写一个demo,如下:要注意如果string为null,不能对其调用isEmpty方法和equals方法,会报错:package Tests;/** * @author zhangjie * @date 2020/9/13 */public class StringEmptyDemo { public
2020-09-13 20:58:05
2689
原创 剑指offer:矩阵中的路径(dfs,回溯)
题目:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后,路径不能再次进入...
2020-09-07 21:25:02
130
原创 幂等性和雪花算法
文章目录幂等性什么是幂等性幂等常用思路1.MVCC2.去重表3.TOKEN机制雪花算法算法原理算法实现幂等性数据库设计的时候除了自增id之外,通常我们会加一个code字段,来保证幂等性。什么是幂等性幂等性原本是数学上的概念,即使公式:f(x)=f(f(x)) 能够成立的数学性质。用在编程领域,则意为对同一个系统,使用同样的条件,一次请求和重复的多次请求对系统资源的影响是一致的。例如:在某平台支付订单的时候,因为网络或者其它原因会发生重复支付的情况,这时候,要阻止扣款两次情况的出现。
2020-09-06 10:57:53
960
原创 剑指offer:顺时针打印矩阵(leetcode 54 螺旋矩阵)
题目:给定一个包含m x n个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例1:输入:[[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例2:输入:[ [1, 2, 3, 4], [5, 6, 7, 8], [9,10,11,12]]...
2020-09-05 15:27:28
243
原创 Mybatis sql模糊查询(先排序后去重)和时间范围查询
模糊查询模糊查询本身用like关键字即可:SELECT DISTINCT field_nameFROM table_nameWHERE field_name LIKE "%"#{fieldName,jdbcType=VARCHAR}"%"这里要注意"%"的使用,如果不加的话,mybatis会解析错误另外,jdbcType=BIGINT的模糊查询存在问题一般模糊查询都需要去重,会用到distinct关键字,但我们的需求又希望能输出按某个字段排序的前几个,比如:按时间倒序的前五个,这个时候s
2020-07-16 12:18:39
1708
3
原创 Windows上spy++的安装和使用
Spy++简介Microsoft Spy++是一个非常好的查看Windows操作系统的窗口、消息、进程、线程信息的工具,简单易用,功能强大。它可以显示系统对象(包括进程、线程和窗口)之间关系的图形树,搜索指定的窗口、线程、进程或消息, 查看选定的窗口、线程、进程或消息的属性等等。因此,在 spy++ 的帮助下,我们进行程序调试将容易得多。Spy++安装参考链接:Spy++ —— 窗口、消息查看分析利器下载地址注:如果已经安装了VC++或者VS,应该就已经附带安装了spy++,我没有安装这两
2020-07-10 23:08:48
37941
3
原创 常用git、maven命令
git提交代码git statusgit add .git commit -m ""//修改commit信息git commit --amendgit fetchgit merge origin/branch-namegit pushgit push origin branch-namegit commit --amend用法详解分支操作//切换分支git checkout branch-namegit fetchgit merge origin/branch-name/
2020-07-08 10:29:24
233
原创 wine中WINEDEBUG命令
trace:WINEDEBUG=trace+crypt wine xxx &>WINEDEBUG=trace+ole wine ole32_test.exe.so clipboard.c > result/result.txtrelayWINEDEBUG=+relay wine npp.exe &> relay.log
2020-06-10 22:16:24
1839
1
原创 Linux 常用命令
(记录下自己用到的linux命令,免得每次都得搜……虽然用的也不多,但确实也记不住)挂载共享文件夹sudo mount -t vboxsf ubuntuShare /mnt/share复制文件到共享文件夹sudo cp myfie.txt /mnt/share删除文本文件中包含特定字符串的行(以hello字符串为例)sed -i '/hello/d' myfile.txt参数-i表示直接修改文件,不加的话,直接输出将文件中包含特定字符串的行存入一个新文件(以hello
2020-06-01 14:22:14
170
原创 Spring AOP
文章目录AOP简介AOP和OOPAOP相关概念通过注解配置AOP5种通知类型切点表达式例子通过XML配置AOP通过动态代理配置AOPAOP简介AOP(Aspect Oriented Programming)称为面向切面编程,在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等待。简单说就是,在不改变原有的逻辑的基础上,增加一些额外的功能。AOP和OOPAOP可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善。OOP引入封装、继承
2020-05-19 21:26:34
225
原创 反射和代理(静态代理和动态代理)
反射Java的反射机制其实就是通过反射,可以在运行期间获取、检测和调用对象的属性和方法。用一句话来概括反射就是加载一个运行时才知道的类以及它的完整内部结构。Java反射机制剖析Java-反射和动态代理静态代理和动态代理...
2020-05-19 11:51:49
799
原创 Idea中将Java程序导成exe,在没有装JVM的机器上运行
文章目录一、将Java程序导成jar包二、将jar包转为exe文件一、将Java程序导成jar包点击File—>Project Structure,点击Artifacts,Add一个JAR进入下图页面后,选择程序的Main Class为了要把程序所依赖的jar包全部包含进去,选择“copy to the output……”,注意下面要选择MANIFEST文件的存储位置,要新建一个文件夹一下,我直接在src下面新建了一个resource文件夹,点击OK对“output
2020-05-13 15:21:05
3511
7
原创 计算二叉树任意两个节点之间的最短路径长度(Java)
题目计算二叉树任意两个节点之间的最短路径长度例如:在这个二叉树中,计算节点7和节点3的最短路径长度输出4(7—4—2—1—3)思路先找出两个节点的最近公共祖先(在上面的例子中,节点7和节点3的最近公共祖先就是节点1)分别求出两个节点到最近公共祖先的路径长度(节点7到节点1的长度为3,节点3到节点1的长度为1)求出两个节点的路径长度(3+1=4)代码package Tests;import java.util.LinkedList;/** * @author zj
2020-05-12 21:37:23
5829
原创 Java内部类浅析
文章目录内部类1.成员内部类2.静态内部类3.局部内部类4.匿名内部类看到自己去年转载的一篇关于内部类的文章,把自己看出好多疑问……不如重新跟着学习一下……内部类内部类,顾名思义,就是在一个类的内部定义的类。优点:内部类与外部类可以方便的访问彼此的私有域(包括私有方法、私有属性)内部类是另外一种封装,对外部的其他类隐藏方便编写事件驱动程序和线程代码可以实现多重继承Java的类是单继承的,只能有一个父类。每个内部类都能独立的继承一个类,而外部类的继承,对于内部类没有影响。接口只是解决
2020-05-09 14:39:13
150
原创 idea中出现 cannot resolve method getParameter("java lang....")问题
问题把人家eclipse的代码导入idea之后,出现了 cannot resolve method getParameter(“java lang…”)的问题,大概如下:解决先参考了干货!解决IDEA中项目出现cannot resolve method ‘XXXXX(java.lang.String)’问题,然而并没有解决问题然后参考了关于idea中出现 cannot resolve m...
2020-05-06 17:17:22
1594
原创 数据库事务隔离级别及原理
文章目录什么是事务事务的四大特性(ACID)并发事务带来的问题事务隔离级别什么是事务事务是逻辑上的一组操作,要么都执行,要么都不执行。事务最经典也经常被拿出来说例子就是转账了。假如小明要给小红转账1000元,这个转账会涉及到两个关键操作就是:将小明的余额减少1000元,将小红的余额增加1000元。万一在这两个操作之间突然出现错误比如银行系统崩溃,导致小明余额减少而小红的余额没有增加,这样就...
2020-05-05 20:28:39
208
原创 JVM——垃圾回收
前面介绍了Java运行时内存的各个区域。对于程序计数器、虚拟机栈、本地方法栈这三个部分而言,其生命周期与相关线程有关,随线程而生,随线程而灭。并且这三个区域的内存分配与回收具有确定性,因为当方法结束或者线程结束时,内存就自然跟着线程回收了。因此,JVM内存分配和回收关注的是Java堆与方法区这两个区域。个人感觉:方法区中涉及的是类的卸载,而Java堆中是对象的回收。所以JVM内存分配...
2020-05-03 17:06:05
263
原创 JVM——类的加载过程
文章目录类的生命周期类加载过程加载类加载器双亲委派模型双亲委派模型的好处自定义类加载器验证准备解析初始化初始化时机不会导致类的初始化卸载类的生命周期一个类的完整生命周期如下:加载、验证、准备、初始化和卸载这5个阶段的顺序是确定的,类的加载过程必须按照这种顺序进行,而解析阶段则不一定,可能在初始化阶段后在开始,因为java支持运行时绑定。类加载过程Class 文件需要加载到虚拟机中之...
2020-05-01 19:33:11
301
转载 JVM——Java运行时数据区域
文章目录运行时数据区域1.程序计数器2.Java虚拟机栈扩展:那么方法/函数如何调用?3.本地方法栈4.堆5.方法区方法区和永久代的关系方法区大小为什么要将永久代 (PermGen) 替换为元空间 (MetaSpace) 呢?6.运行时常量池7.直接内存运行时数据区域Java 虚拟机在执行 Java 程序的过程中会把它管理的内存划分成若干个不同的数据区域。JDK1.8和之前的版本略有不同,下...
2020-05-01 13:22:43
214
原创 WebOffice安装教程Hello World!(win10 IE打开控件问题)
老师让看这个……虽然不知道要干啥文章目录WebOffice安装教程环境WebOffice控件下载与注册第一个WebOffice程序:Hello World!1.生成两个html文档2.设计启动页(index.html)3.设计WebOffice控件加载页(edit.html)4.修改编码WebOffice安装教程环境操作系统版本:win10Office版本:Microsoft Offic...
2020-04-29 15:48:23
9017
原创 悲观锁(Synchronized)和乐观锁(CAS)
文章目录悲观锁和乐观锁SynchronizedSynchronized使用Synchronized底层原理Java1.6对Synchronized的优化synchronized的等待唤醒机制CASCAS使用CAS底层原理CAS的缺陷1.ABA问题2.循环开销过大3.只能保证一个共享变量的原子操作concurrent包的实现悲观锁和乐观锁悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人...
2020-04-29 13:43:35
2771
Inside OLE 2nd Edition.rar
2020-07-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人