自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(90)
  • 资源 (3)
  • 收藏
  • 关注

原创 java注解

java 注解,从名字上看是注释,解释。但功能却不仅仅是注释那么简单。注解(Annotation) 为我们在代码中添加信息提供了一种形式化的方法,是我们可以在稍后 某个时刻方便地使用这些数据(通过 解析注解 来使用这些数据,其中注解的解析完全依赖于反射机制),常见的作用有以下几种:1.生成文档。这是最常见的,也是java 最早提供的注解。常用的有@see @param @return 等;2.跟踪代码依赖性,实现替代配置文件功能。比较常见的是spring 2.5 开始的基于注解配置。作用就是减少配置

2021-12-28 21:25:08 156

原创 SQL索引常见问题汇总

遵循最左匹配原则参考链接:一文搞定联合索引 - 知乎

2021-12-28 20:58:39 509

原创 G1垃圾回收器

G1垃圾回收器是在Java7 update 4之后引入的一个新的垃圾回收器。G1是一个分代的,增量的,并行与并发的标记-复制垃圾回收器。它的设计目标是为了适应现在不断扩大的内存和不断增加的处理器数量,进一步降低暂停时间(pause time),同时兼顾良好的吞吐量。本质上来说,G1垃圾回收器依然是一个分代垃圾回收器。但是它与一般的回收器所不同的是,它引入了额外的概念,Region。G1垃圾回收器把堆划分成一个个大小相同的Region。在HotSpot的实现中,整个堆被划分成2048左右个Region。每

2021-11-24 23:45:07 309

原创 B/B-、B+树的区别

B树或者叫B-树:是平衡多路查找树,它每个节点包含的关键字增多了,在应用时可利用磁盘块的原理把结点大小限制在磁盘大小范围内从而优化读写速度,同时树的关键字增多后层级比原理的二叉树少量,减少了数据查找次数和复杂度。一个M阶的b树具有如下几个特征:定义任意非叶子结点最多只有M个儿子,且M>2; 根结点的儿子数为[2, M]; 除根结点以外的非叶子结点的儿子数为[M/2, M],向上取整; 非叶子结点的关键字个数=儿子数-1; 所有叶子结点位于同一层; k个关键字把节点拆成k+1段,分别指

2021-11-23 13:00:47 463

原创 sql关联查询

关联查询实质上是在多个表进行笛卡尔积的基础上通过on来进行过滤查询。1、左连接2、右连接3、内连接4、左连接-内连接5、左连接-内连接6、外连接参考链接:T-SQL基础(二)之关联查询 - 简书常见SQL关联查询_苏雪夜酒1991的博客-CSDN博客_sql 关联查询...

2021-11-23 12:16:54 4201

原创 java基础知识

1、8种基本类型:byte、short、int、long、float、double、char、boolean2、关键字:abstract/interface、extends、implements、try-catch-finally、throw/throws、synchonized/volatile、static、final、new、super、private/protected/public、package、import等3、特性:面向对象编程的语言oriented objects programm

2021-11-22 12:33:06 1753

原创 jvm垃圾回收器:7种

新生代收集器:Serial、ParNew、Parallel Scavenge;老年代收集器:Serial Old、Parallel Old、CMS;整堆收集器:G1;参考链接:Java虚拟机垃圾回收(三) 7种垃圾收集器 - chenxiangxiang - 博客园

2021-11-17 15:25:24 1871

原创 根可达性算法:是什么、怎么做、为什么

1、是什么根可达性算法是JVM中一种判断对象是否回收的算法,基本思路就是通过一系列名为”GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chain),当一个对象到GC Roots没有任何引用链相连时,则证明此对象是不可用的。2、怎么做基本思想是通过一系列称为“GC Roots”的对象作为起始点,从这些节点向下搜索,搜索所走过的路径称为引用链,当一个对象到GC Roots没有任何引用链(即GC Roots到对象不可达)时,则证明此对象

2021-11-17 15:19:21 1523

原创 votaile关键字

1.volatile关键字的两层语义  一旦一个共享变量(类的成员变量、类的静态成员变量)被volatile修饰之后,那么就具备了两层语义:  1)保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。  2)禁止进行指令重排序。2、使用volatile关键字的场景  synchronized关键字是防止多个线程同时执行一段代码,那么就会很影响程序执行效率,而volatile关键字在某些情况下性能要优于synchronized,但是要

2021-11-11 09:50:58 306

原创 android四大组件:activity、service、content provider、broadcast reciver

1、activity组件:可看作是平时玩手机时的一个界面2、service组件:Service通常位于后台运行,它一般不需要与用户交互,因此Service组件没有图形用户界面。Service组件需要继承Service基类。Service组件通常用于为其他组件提供后台服务或监控其他组件的运行状态。3、content provider组件:可实现进程间通信(1)android平台提供了Content Provider使一个应用程序的指定数据集提供给其他应用程序。其他应用可以通过ContentRe

2021-11-11 09:13:54 643

原创 android进程间通信(Inter Process Communication)方式

1、bundle机制2、文件共享机制3、Messenger方式4、AIDL方式:ndroid Interface Definition Language5、contentProvider方式6、Broadcast Receiver方式7、sorcket方式:套接字,主要用于网络之间的通信不同通信方式的区别总结:Bundle:四大组件间的进程间通信方式,简单易用,但传输的数据类型受限。 文件共享: 不适合高并发场景,并且无法做到进程间的及时通信。 Messenger:

2021-11-11 08:53:14 1734

原创 synchronized和Lock的区别

区别如下:1、来源:lock是一个接口,而synchronized是java的一个关键字,synchronized是内置的语言实现;2、异常是否释放锁:synchronized在发生异常时候会自动释放占有的锁,因此不会出现死锁;而lock发生异常时候,不会主动释放占有的锁,必须手动unlock来释放锁,可能引起死锁的发生。(所以最好将同步代码块用try catch包起来,finally中写入unlock,避免死锁的发生。)3、是否响应中断lock等待锁过程中可以用interrupt来中断等待,而

2021-11-10 17:57:56 396

原创 python中is和==的区别

在 Python 中一切都是对象,毫无例外整数也是对象,对象之间比较是否相等可以用==,也可以用is。==和is操作的区别是: Is 比较的是两个对象的id值是否相等,也就是比较俩对象是否为同一个实例对象,是否指向同一个内存地址。 == 比较的是两个对象的内容是否相等,默认会调用对象的__eq__()方法。 参考链接:Python基础:is和==的区别 - 诚意 - 博客园python的is相当于java的==

2021-11-09 23:27:39 268

原创 常见http状态码

1、200:正常2、400:bad request3、404/410:服务器端不能正确返回客户端请求的资源4、500:internal server error:服务器问题参考链接:常见的HTTP状态码 - xflonga - 博客园

2021-11-09 22:23:25 2540

原创 软件开发中的5种常用设计模式

提到设计模式,很多人都会觉得老生常谈,有些人觉得设计模式很有必要,有些人觉得设计模式没那么重要,那么我们在工作中是否应该重视设计模式呢?我们是否应该将设计模式大量应用到我们的生产过程中呢?  如果你从未听说过设计模式,我敢打赌你一定不是一个合格程序员。这就好比一个人说他自己是数学家,但是他连勾股定理都没听过,这怎么可能?1、工厂模式  这是一个最基础的设计模式,也是最常用的设计模式,这是一个我们平时一直在使用,但却不知道自己在使用的设计模式。  工厂模式故名思意就是一个加工厂...

2021-10-20 09:39:40 1248

原创 strcpy和memcpy两者的区别

区别:strcpy只能用于字符串的复制,而memcpy复制的是地址,因此数据类型不受限制。共同点:两者都是属于深拷贝,即复制时需要重新分配内存空间。参考链接:strcpy和memcpy的区别 - 疾风中的劲草 - 博客园...

2021-10-20 09:35:11 97

原创 金融量化分析介绍

简单来讲,帮助投资者进行自动化交易。具体以下功能点:1、可以帮你在几千只A股当中选择符合要求条件的股票2、选择买进、卖出、以及平仓的时机3、管理仓位风险4、不会受到个人情绪影响参考链接:金融量化分析介绍 - Sean_Yang - 博客园...

2021-10-05 20:48:25 274

原创 C++ map、set底层数据结构

数据结构:数组+链表+红黑树1. 为什么用红黑树实现?map, set底层都提供了排序功能,红黑树形式存储的键值是有序的。同时红黑树可以在O(log n)时间内做插入,查找和删除。参考链接:C++ map,set底层的红黑树实现 - Conan-Peng - 博客园...

2021-09-16 12:00:35 923

原创 JDBC编程步骤

1、载入驱动:DriverManager.registerDriver(com.mysql.jdbc.Driver);2、建立连接:Connection conn =DriverManager.getConnection(url, user, password);3、创建运行对象相较于Statement接口,PreparedStatement1接口类能够对SQL语句进行预编译,这样防止了 SQL注入 提高了安全性。举例子:PreparedStatement ps=connection....

2021-09-15 16:57:08 120

原创 static、final关键字区别

1、修饰引用:如果引用为基本数据类型,则该引用为常量,该值无法修改; 如果引用为引用数据类型,比如对象、数组,则该对象、数组本身可以修改,但指向该对象或数组的地址的引用不能修改。 如果引用时类的成员变量,则必须当场赋值,否则编译会报错。2、修饰方法:无法被重写,但是可以被继承的子类使用。3、修饰类:无法被继承。“断子绝孙”参考链接:java中的final关键字有什么作用-Java入门-PHP中文网...

2021-09-15 12:29:01 149

原创 SQL删除命令的区别

drop:删除整张表、表的结构、索引(彻底删除)。delete:删除指定某些行,配合where子句使用。支持回滚。trucate:删除表中所有行。不支持回滚。参考链接:Truncate用法详解 - MySQL技术 - 博客园...

2021-09-14 23:44:11 157

原创 java网络编程

定义:客户端与服务器端通信的一种编程规范,包括TCP、UDP等举例子:微信聊天参考链接:https://www.cnblogs.com/benxi/p/7347108.html网络编程会粘包现象,出现原因:在流传输中出现,UDP不会出现粘包,因为它有消息保护边界。1 发送端需要等缓冲区满才发送出去,造成粘包2 接收方不及时接收缓冲区的包,造成多个包接收解决办法:为了避免粘包现象,可采取以下几种措施:一是对于发送方引起的粘包现象,用户可通过编程设置来避免,TCP提供

2021-09-08 15:59:30 43

原创 Java消息队列

消息队列框架有:RabbitMQ/Kafka/ZeroMQ参考链接:https://developer.51cto.com/art/201905/597172.htm

2021-09-08 15:44:32 1069

原创 Java微服务架构:Dubbo和Spring Cloud

参考链接:https://www.cnblogs.com/xishuai/archive/2018/04/13/dubbo-and-spring-cloud.html

2021-08-28 12:33:17 60

原创 Java多线程实现

方式一:继承Thread类的方式创建一个继承于Thread类的子类 重写Thread类中的run():将此线程要执行的操作声明在run() 创建Thread的子类的对象 调用此对象的start():①启动线程 ②调用当前线程的run()方法方式二:实现Runnable接口的方式创建一个实现Runnable接口的类 实现Runnable接口中的抽象方法:run():将创建的线程要执行的操作声明在此方法中 创建Runnable接口实现类的对象 将此对象作为参数传递到Thread类的构造器中

2021-08-24 22:12:23 57

原创 Redis应用场景

特点:分布式、高并发、读写速度快redis集群典型案例:新浪微博的热搜、图片社交分享网站Pinterest(Reids维护上百亿的相关性)应用场景:1、网站计数器2、反向cache3、返回topk列表4、消息队列等等。。。。。。参考链接:https://zhuanlan.zhihu.com/p/336908533...

2021-08-24 21:55:06 71

原创 redis与Mysql的数据一致性问题及解决方案

分布式数据库的CAP原则:CAP定理又称CAP原则,指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),最多只能同时三个特性中的两个,三者不可兼得。参考链接:https://blog.csdn.net/hong10086/article/details/88627210数据一致性问题起因:读写高并发导致的1、最经典的缓存+数据库读写的模式,就是 Cache Aside Pattern。

2021-08-24 12:41:10 201

原创 ==、hashCode()、equals() 三者的区别与联系

1、==用于比较左值和右值是否相等。比较的是值(包括int等基础类型值比较、对象的地址值比较等),而不是比较对象内容。2、equals不但比较两个对象地址值是否一样,还比较两个对象内容是否相同,其中一个一样就返回true。即两个对象内容相同但是地址值不同也是返回true。判定的范围比“==”广。3、hashCode()比较的是对象地址值转换后的哈希值是否一样。即使两个对象的hashCode值一样也不能判定两个对象地址值完全相同(原因是存在哈希冲突)。因此有以下推论:1、如果两个对象equal

2021-08-18 14:50:23 256

原创 Mysql基础知识

链接:https://www.cxyxiaowu.com/16302.html

2021-08-18 13:57:30 36

原创 C++STL容器介绍

1、vector:可变数组2、list:双向链表3、队列queue:先进先出。一端进一端出deque:双端队列。双端都可进出priority_queue:优先队列4、栈stack:先进后出5、集合set:互异性、无序性multiset:set的元素互不相同,而multiset的元素可以允许相同6、字典map:一对一multimap:同理multimap的元素允许不唯一pair:一对多7、字符串string参考链接:https://www.cnb

2021-08-16 21:41:15 93

原创 Redis的高并发、持久化原理

1、基于内存,读写速度快2、非阻塞I/O技术,而是采用epoll机制的I/O多路复用技术。通过单线程来轮询描述符,将数据库的开、关、读、写都转换成了事件,减少了多线程中线程间上下文切换和竞争3、数据结构:hash表、压缩表、跳表。大幅提高数据的读取速度。参考链接:高并发:https://www.cnblogs.com/wanlei/p/10464517.html持久化:https://segmentfault.com/a/1190000015983518...

2021-08-12 11:39:54 117

原创 Java中的集合

参考链接:https://www.cnblogs.com/chenglc/p/8073049.html底层数据结构:https://blog.csdn.net/fox_bert/article/details/90272656

2021-08-11 18:24:53 52

原创 Java类、对象、实例概念区分

类是一种数据类型。类的一个实例叫做对象。其中一个类可以创建无数个对象,但是不同对象之间存在差异(比如属性和行为)。因此可以说一种类是一类对象的抽象表示,这种抽象就是共同特征的总结。比如girls是一个类,小红是一个对象、小静也是一个对象、小爱也是一个对象等等。她们之间有共同特性(如长头发(属性)、能繁衍后代(行为)等),但是她们的长相和性格肯定有所差异(属性和行为)。个人认为面向对象程序设计(包括Java、Python、C++)有四大特性:抽象、封装、继承、多态。这些特性都是相互有联系的,并不是

2021-07-28 14:29:11 1177

原创 聚簇索引、非聚簇索引区别

1、聚簇索引 InnoDB2、非聚簇索引 MyISAM两者区别:1、数据结构实现上的区别聚簇索引的叶节点就是数据节点,而非聚簇索引的叶节点仍然是索引节点,并保留一个链接指向对应数据块。在聚簇索引中,索引树的叶级页包含实际的数据:记录的索引顺序与物理顺序相同。在非聚簇索引中,叶级页指向表中的记录:记录的物理顺序与逻辑顺序没有必然的联系。2、数据库中增删改查的性能区别(1)增:聚簇索引主键的插入速度要比非聚簇索引主键的插入速度慢很多。(3)查:聚簇索引适合排序,非聚簇索引..

2021-07-25 16:10:02 818

原创 I/O多路复用:select、poll、epoll

1、什么是I/O多路复用多路网络连接复用一个io线程。2、select、poll、epoll的区别select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从内核拷贝到用户

2021-07-24 14:25:14 98

原创 kafka工作原理

1、定义Kafka是一款分布式消息发布和订阅系统,它的特点是高性能、高吞吐量。最早设计的目的是作为LinkedIn的活动流和运营数据的处理管道。这些数据主要是用来对用户做用户画像分析以及服务器性能数据的一些监控。所以kafka一开始设计的目标就是作为一个分布式、高吞吐量的消息系统,所以适合运用在大数据传输场景。2、应用场景行为跟踪、日志收集等等参考链接:https://www.jianshu.com/p/1c2596d2d235...

2021-07-24 14:04:03 46

原创 JVM调优

1、为什么需要调优?调优目标:使用较小的内存占用来获得较高的吞吐量或者较低的延迟。程序在上线前的测试或运行中有时会出现一些大大小小的JVM问题,比如cpu load过高、请求延迟、tps降低等,甚至出现内存泄漏(每次垃圾收集使用的时间越来越长,垃圾收集频率越来越高,每次垃圾收集清理掉的垃圾数据越来越少)、内存溢出导致系统崩溃,因此需要对JVM进行调优,使得程序在正常运行的前提下,获得更高的用户体验和运行效率。这里有几个比较重要的指标: 内存占用:程序正常运行需要的内存大小。 延迟

2021-07-23 20:43:21 54

原创 桶排序算法

算法过程根据待排序集合中最大元素和最小元素的差值范围和映射规则,确定申请的桶个数; 遍历待排序集合,将每一个元素移动到对应的桶中; 对每一个桶中元素进行排序,并移动到已排序集合中。步骤 3 中提到的已排序集合,和步骤 1、2 中的待排序集合是同一个集合。与计数排序不同,桶排序的步骤 2 完成之后,所有元素都处于桶中,并且对桶中元素排序后,移动元素过程中不再依赖原始集合,所以可以将桶中元素移动回原始集合即可。参考文献:https://www.jianshu.com/p/204ed43aec0

2021-07-23 17:29:41 42

原创 hashCode()和equals()区别和联系

作用一样:都是比较两个对象是否相同实现不同:hashCode()方法重写实现更加方便;equals()方法重写比较复杂参考链接:https://www.cnblogs.com/skywang12345/p/3324958.html

2021-07-23 17:07:39 32

原创 JAVA分布式概念

什么是 JAVA 分布式应用?一个大型的系统往往被分为几个子系统来做,一个子系统可以部署在一台机器的多个 JVM 上,也可以部署在多台机器上。但是每一个系统不是独立的,不是完全独立的。需要相互通信,共同实现业务功能。一句话来说:分布式就是通过计算机网络将后端工作分布到多台主机上,多个主机一起协同完成工作。参考链接:https://blog.csdn.net/qq_40147863/article/details/84350344...

2021-07-23 16:58:22 98

thinking in java

java最经典著作,只有经典才能永恒。学习java人手一本,必备丛书。

2018-11-19

数学建模经典方法

数学建模必须掌握的常规方法,掌握的话拿奖不是问题,赶紧学习吧!

2018-10-04

计算机操作系统课后习题答案(第四版)

计算机操作系统课后习题答案(第四版) 计算机操作系统课后习题答案(第四版) 计算机操作系统课后习题答案(第四版) 计算机操作系统课后习题答案(第四版) 计算机操作系统课后习题答案(第四版) 计算机操作系统课后习题答案(第四版)

2017-09-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除