- 博客(60)
- 收藏
- 关注
原创 ant初体验
ant是一个可以编译、测试、部署代码的工具。编译方法:1.cmd打开命令行,然后cd到项目文件夹,使用ant compile 命令编译代码2.编译完代码要打包到tomcat中去,进入tomcat中的conf文件夹,然后修改BOOT.XML文件,使其对应到编译文件的Webapp上。3.启动tomcat,完事。...
2020-11-25 17:06:24
305
原创 优化SQL的几种方式
优化的目的:1、尽量保证索引能正确使用。2、尽量避免全局搜索。3、索引不是越多越好。方式:1、对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引2、应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: 这种是不合适的select id from t where num i...
2019-09-21 21:19:05
210
原创 CAS(Compare and Swap)
CAS中文意思是:比较并替换,CAS需要有3个操作数:内存地址V,旧的预期值A,即将要更新的目标值B。CAS执行指令时:当且仅当内存地址的值与预期值A相等时,才将内存地址V的值修改为B,否则什么都不做,整个比较并替换的操作是一个原子性操作。缺点:1、循环时间长,开销大(如果CAS失败,会一直尝试,如果长时间不成功,会给CPU带来很大开销)2、只有一个共享变量进行原子操作3、ABA问题。...
2019-09-16 11:26:44
126
原创 线程的实现以及四种线程池
java线程实现方式:1、继承thread类2、实现runnable接口3、实现callable接口4、线程池线程池类别:线程池接口是:ExecutorService
2019-09-15 15:35:57
109
原创 垃圾收集器
1、CMS收集器CMS收集器是一种以获取最短回收停顿时间为目标的收集器。基于“标记清除算法”实现。其运作方式如下:1、初始标记2、并发标记3、重新标记4、并发清除初始标记仅仅只是标记一下GC Roots能直接关联到的对象,并发标记阶段就是根据初始标记进行GC Roots Tracing找出要清除对象,而重新标记阶段则是为了修正并发标记期间因用户程序继续运作而导致标记产生表动的那一部分对...
2019-09-15 12:12:47
116
原创 jvm内存区域
jvm内存简单划分:堆、栈、方法区堆:老年代、新生代栈:本地方法栈,虚拟机栈方法区详细划分:jvm内存区域分为线程私有区域【程序计数器、虚拟机栈、本地方法区】、线程共享区域【java堆、方法区】、直接内存程序计数器:唯一一个无OOM的区域,记录当前字节码指令的地址。虚拟机栈:描述java方法执行的内存模型。存放了各种基本数据类型,对象引用,returnaddress类型。基本类型:...
2019-09-12 14:59:40
145
原创 浅谈负载均衡
负载均衡是高可用网络基础架构的一个关键组成部分,有了负载均衡,我们通常将我们的应用服务器部署多台,然后通过负载均衡将用户请求分发到不同的服务器中提高网站,数据库,服务器的性能和可靠性。负载均衡如何选择要转发的服务器?1、确保所选择后端服务器是正常工作的,能给用户请求做出响应。2、根据预先设置的负载均衡算法从健康服务器池中进行选择。负载均衡算法?1、最小连接:优先选择连接数最少2、散列:...
2019-09-12 10:49:25
142
原创 数据库索引及最左匹配原则
mysql索引类型包括:1、普通索引(index)最基础索引,无任何限制创建方式:create index indexname on mytable(username(length));2、唯一索引(unique index)唯一索引的要求就是索引列的值唯一,但可以为空值。3、主键索引(primary index)一般是主键的索引。4、全文索引(fulltext)快速定位特定数...
2019-09-10 21:06:53
1218
原创 内存泄露问题
什么是内存泄露当一个对象不在使用,本该被回收,但是由于其他正在使用的对象持有他的引用使得其不能被回收,这就是本该被回收的对象不能被回收而停留在堆内存中造成的内存浪费,也就是内存泄露。内存泄露会带来的问题泄露的内存太多会导致程序的内存不够用,从而导致内存溢出。常见的内存泄露1、单例模式,如果单例模式持有某些不再使用使用的对象的引用,由于单例模式的特点就是和应用一样的生命周期,这会造成该对象...
2019-09-10 18:18:07
132
原创 jvm垃圾回收
首先确定哪些是垃圾1、引用计数法:引用和对象是关联的,调用一个对象时必须引用他,如果一个对象引用数为0,则说明这个对象是可回收的。2、可达性分析:通过一系列gc roots对象作为起点搜索,如果gc roots和一个对象之间没有可达路径,则该对象不可达,不可达对象经过两次标记之后就会被回收。GC算法:1、标记清除法:先标记所有需要回收的垃圾,然后回收。2、复制算法:将内存容量分为...
2019-09-09 10:48:12
103
原创 堆排序和查找第k个数
完全二叉树完全二叉树有个特性:左边子节点位置 = 当前父节点的两倍 + 1,右边子节点位置 = 当前父节点的两倍 + 2堆排序是将数据看成是完全二叉树、根据完全二叉树的特性来进行排序的一种算法其中:最大堆要求其根节点大于等于叶子结点最小堆要求其根节点小于等于叶子节点所以处于最大堆的根节点一定是这个堆中最大的元素,最小堆的根节点一定是这个堆中最小的元素。...
2019-09-04 20:58:13
366
原创 redis详解
什么是redis持久化?redis有哪几种持久化方式?,优缺点是什么?持久化就是把内存数据写到磁盘中去。redis提供了两种持久化方式 ,RDB(默认使用)和AOFRDB redis database核心函数,rdbSave和rdbLoad,分别存数据和从磁盘读取数据。AOF : append only file每当执行服务器(定时)任务或者函数时flushAppendOnlyFi...
2019-09-04 16:51:45
206
原创 Hashmap如何实现线程安全
方法1:使用hashtable方法2:使用java.util.concurrent.concurentHashMap方法3:使用java.util.collections.synchronizedMap()方法包装 HashMap object,得到线程安全的Map,并在此Map上进行操作。介绍HashTable:hashtable底层是数组+链表的形式,其中的get、put方法等都是用s...
2019-09-03 20:18:46
6101
原创 动态规划变种题型
题目描述你打开了美了么外卖,选择了一家店,你手里有一张满X元减10元的券,店里总共有n种菜,第i种菜一份需要A_i元,因为你不想吃太多份同一种菜,所以每种菜你最多只能点一份,现在问你最少需要选择多少元的商品才能使用这张券。输入描述:第一行两个正整数n和X,分别表示菜品数量和券的最低使用价格。(1≤n≤100, 1≤X≤10000) 接下来一行n个整数,第i个整数表示第i种菜品的价格。(1≤A...
2019-09-03 16:16:16
370
原创 数据库面试题
分表场景下的业务主键如何设计?业务主键和数据库主键区分下数据库主键是表的id,业务主键,比如内容表一般设计为contentId。一般公司的业务主键都是单独设计的,生成业务主键id一般都有一个单独模块来生成业务主键id。...
2019-09-02 15:24:15
119
原创 Maven依赖包有冲突怎么办
maven冲突实际上就是需要的maven版本和实际导入的版本不一致导致的。方法:使用maven helper查看依赖冲突。(maven helper是一个插件)
2019-09-02 15:15:44
137
原创 redis的数据类型和应用场景
数据类型:String、list、set、hash、Sorted set应用场景:String类型是最基本的key—value存储形式,value其实可以是string,也可以是数值类型,常用来做计数器这类自增自荐的功能,可用于b站粉丝数、关注数等功能。也可以用在分布式session,用户的登录信息缓存在redis中。...
2019-09-02 15:11:33
85
原创 抽象工厂模式和工厂方法模式
抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态,指的是当有多个抽象角色时使用的一种设计模式,即通过接口和实现类。在不必指定具体产品的情况下,创建多个产品族产品对象。依据的是里式替换原则。即抽象工厂模式的接口会有不同的实现类实例:定义两个类public class User{}为类创建接口public interface IUser{ void Insert(Us...
2019-08-29 20:46:46
292
原创 Spring数据访问
1、spring通过什么方式如何访问Hibernate?在spring中有两种方式访问hibernate:控制反转 hibernate template和callback继承 HibernateDaoSipport提供一个AOP拦截器。
2019-08-29 17:05:41
157
原创 springmvc
1、什么是springmvc框架?spring配备构建web应用的全功能mvc框架,spring可以很便捷的和其他mvc框架集成。2、DispatcherServletspring的MVC框架是一个围绕DispatcherServlet来设计的,这个servlet会把请求发给各个处理器,并支持可配置的处理器映射、视图渲染、本地化、时区与主题渲染等,还支持文件上传(用来处理并响应所有HTTP请...
2019-08-29 16:56:42
77
原创 Spring面向切面编程(AOP)
1、什么是AOP?面向切面编程是一种编程技术,允许程序模块化横向切割关注点。如日志和事务管理。2、aspect切面?类是对物体特征的抽象,切面是对横切关注点的抽象。(横切关注点:对哪些方法进行拦截,拦截后怎么处理,这些关注点称之为横切关注点)切面通常由带有@aspect注解的类实现。3、关注点和横切关注点的区别?横切关注点是一个关。关注点是应用中一个模块的行为,一个关注点可能会被定...
2019-08-29 16:25:01
97
原创 spring框架面试题整理
1、使用Spring框架的好处是什么(特点)?轻量:spring是轻量级的控制反转(IOC):通过控制反转实现松散耦合,通过容器控制bean,而不是自己创建和控制bean。面向切面编程(AOP):把应用业务逻辑和系统服务分开。容器:spring包含并管理应用中对象的生命周期和配置。mvc框架:是web框架的一个很好的替代品。事务管理:Spring 提供一个持续的事务管理接口异常处理:...
2019-08-29 16:03:35
101
原创 linux常用指令
参考find:查找ls:展示文件夹内容 (ls:a 展示全部文件夹内容)cd:切换目录,cd ./path切换到当前目录的path目录tree:显示树型层级目录结构cp:复制文件rm:删除文件mv:移动文件pwd:查看文件完成路径tar:解压缩包kill:命令用于终止进程...
2019-08-28 11:04:45
99
原创 设计模式六大原则
1、单一原则:尽量做到一个类只负责一个功能。2、里氏替换原则:子类可以扩展父类的功能,但不能修改父类的功能。3、依赖倒置原则:面向接口编程。4、接口隔离:建立单一接口,即接口设计应使其功能尽量简单,不出现一个接口满足几个功能,使得接口很臃肿。5、迪米特原则:最少知道原则,尽量降低类与类之间的耦合,一个对象和其他对象应该尽量少了解。6、开闭原则:用抽象构建架构,用实现扩展原则。...
2019-08-24 16:20:06
106
原创 单例模式
单例模式的特点:1、单例类只能有一个实例2、单例类必须自己实例化这个实例3、单例类必须把这个类提供给所有对象懒汉式单例创建方式非线程安全,并发情况下会出问题,原因:java反射机制是能够实例化构造方法为private的类public class singleton(){ //private单例类构造方法 private singleton(){}; private stati...
2019-08-24 11:34:12
80
原创 数据库ACID四个原则和事物的隔离以及脏读,不可重复读,幻读的理解
ACID:Atomic(原子性)、Consistent(一致性)、Isolated(独立性)、Durable(持久性)事物的原子性:一个事物要么全部执行要么不执行,即一个事物不能执行到一半然后停止。比如取钱机,不可能扣了钱却不出钱。所以这两部要不不完成要么一起完成。事物的一致性:事物的一致性是指数据的变化并不改变数据的一致,a+b=10,a变化则b也变化。事物的独立性:两个以上的事物不能出...
2019-08-23 20:12:07
378
原创 创建链表
import java.io.BufferedReader;import java.io.InputStreamReader;import java.math.BigDecimal;import java.util.ArrayList;import java.util.Arrays;class ListNode { int val; ListNode next; ...
2019-08-13 10:52:50
139
原创 回溯算法模板
try(int i)3: {4: if(i>n)5: 输出结果;6: else7: {8: for(j = 下界; j <= 上界; j=j+1) // 枚举i所有可能的路径9: {10: if(fun(j)) // 满足限界函数和约束条件11: {...
2019-08-12 15:16:31
1188
原创 面试题:
进程间的通讯方式?管道消息队列信号量共享内存线程同步方式?(同步:按预定的先后次序进行运行)1、互斥对象:只有拥有互斥对象的线程才有访问公共资源的权限。因为互斥对象只有一个,所以能保证公共资源不会同时被多个线程同时访问。当前拥有互斥对象的线程处理完任务后必须将线程交出,以便其他线程访问该资源。2、事件对象:通过通知操作的方式来保持线程的同步,还可以方便实现对多个线程的优先级比较的操作...
2019-08-10 21:36:37
155
翻译 http和https的主要区别
**http和https的主要区别:**1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进...
2019-08-07 16:22:46
479
翻译 Mysql乐观锁与悲观锁
乐观锁:总是认为不会产生并发问题,每次去取数据的时候总是认为不会有其他线程对数据修改,所以没有上锁。但是在更新时会判断其他线程之前是否更改过数据,一般使用版本号机制或者CAS操作实现。例如:每次更新时update在条件后再附加一个时间为条件:1update user_info set password='somelog' where username='somelog' and time...
2019-08-07 15:30:11
99
原创 请求从web端到服务端的过程
利用DNS协议进行域名解析—>建立TCP协议三次握手协议—>客户端发出访问网站相应页面请求(http协议请求报文)—> 服务端发出相应访问页面的请求信息(发出http)—>断开tcp协议四次挥手过程。...
2019-08-06 20:48:07
417
翻译 HashMap底层原理与结构
1、HashMap是一个用来存储KEY-VALUE键值对的集合,每一个键值对也叫做Entry,这些键值对分散存储在一个数组中,这个数组就是HashMap的主干。HashMap数组的每一个元素的初始值都是NULL。2、HashMap使用的最常见的方法是get和put。当调用PUT方法时,比如调用HashMap.put(“apple”,0),插入一个key为apple的元素。这时我们需要调用ha...
2019-08-06 15:52:55
133
翻译 访问一个网站的全过程
1、域名解析成ip地址2、与目的主机进行TCP连接(三次握手);3、发送与收取数据(浏览器与目的主机开始HTTP访问过程);4、与目的主机断开TCP连接(四次挥手);域名解析成ip地址通过dns服务器完成。域名解析使用的是UDP协议。(user datagram protocol)与目的主机进行TCP连接三次握手:Transmission Control Protocol 传输控...
2019-07-31 16:48:30
2034
翻译 计算机网络5层结构
物理层1、基本术语:数据(data):运行消息的实体。信号(signal):数据的电磁或者电气表现。或者:信号是适合在传输介质上传输的对象。码元(code):在使用时间域(或简称为时域)的波形来表示数字信号时,代表不同离散数值的基本波形。单工(simplex):只能有单方向的通信而没有反方向的交互。半双工(half duplex):通信的双方都可以发送消息,但不能双方同时发送...
2019-07-30 22:09:48
615
转载 计算机网络概述
结点:网络中的结点可以是计算器,集线器,交换机,路由器等。网络结点就是网络单元,他是计算机网络中的各种数据处理设备,数据通信控制设备以及数据终端设备。网络结点可分为转结点和访问结点,支持网络连接性能的称为转结点,它通过通信线路来链接和传递信息,访问结点是信息交换的源节点和目标结点,它起到信源和信宿的作用,例如终端、主计算机。链路:从一个结点到另一个结点的一段物理线路,中间没有任何其他交点。...
2019-07-29 11:28:24
190
转载 0-1背包问题--动态规划
问题描述:一个背包的总容量为V,现在有N类物品,第i类物品的重量为weight[i],价值为value[i]那么往该背包里装东西,怎样装才能使得最终包内物品的总价值最大。该方法使用dp[i][j]来存储中间最大值。dp[i][j]表示前i件物品装入容量为j的背包所得的总价值最大值。求动态规划dp[i][j]的状态转移方程。当出现第i件物品时:1、若w[i]>v,这种情况下该i件物...
2019-07-27 14:18:08
396
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人