- 博客(69)
- 收藏
- 关注
原创 JVM调优命令
jps:显示系统内所有的jvm进程 jps -q :只输出进程ID jps -m:输出jvm进程启动时传递给main函数的参数 jps -l:输出主类的全名,如果执行的是jar包,则输出jar路径 jps -v:输出jvm进程启动时jvm的参数jstat:用于监视虚拟机各种运行状态信息,可以显示jvm进程中的类转载、垃圾回收,JIT编译等...
2019-09-16 14:59:44 187
转载 缓存穿透、缓存击穿、雪崩
缓存穿透是指 缓存 和 数据库 中都没有的数据,而用户不断发起请求,如发起为id为“-1”的数据或id为特别大不存在的数据。这时的用户很可能是攻击者,攻击会导致数据库压力过大。解决方案:采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被 这个bitmap拦截掉,从而避免了对底层存储系统的查询压力 缓存空值,key-value对写为key-nul...
2019-09-14 23:38:40 199
原创 原子类AtomicInteger
public class AtomicInteger extends Number implements java.io.Serializable { private static final long serialVersionUID = 6214790243416807050L; private static final Unsafe unsafe = Unsafe...
2019-09-14 00:13:46 170
转载 java异常
总体上我们根据Javac对异常的处理要求,将异常类分为2类。非检查异常(unckecked exception):Error 和 RuntimeException 以及他们的子类。javac在编译时,不会提示和发现这样的异常,不要求在程序处理这些异常。所以如果愿意,我们可以编写代码处理(使用try...catch...finally)这样的异常,也可以不处理。对于这些异常,我们应该修正代码...
2019-08-22 23:00:16 147
转载 Synchronized和ReentrantLock的区别
可重入性:两者都是同一个线程每进入一次,锁的计数器都自增1,要等到锁的计数器下降为0时才能释放锁。锁的实现:Synchronized是依赖于JVM实现的,类似于操作系统来控制实现。ReenTrantLock是JDK实现的,源码可见。性能的区别:在Synchronized优化以前,synchronized的性能是比ReenTrantLock差很多的,但是自从Syn...
2019-08-16 12:11:59 159
原创 hikari参数
参数 描述 构造器默认值 默认配置validate之后的值 validate重置 maximumPoolSize 池中最大连接数,包括闲置和使用中的连接 -1 10 如果maxPoolSize小于1,则会被重置。当minIdle<=0被重置为DEFAULT_POOL_SIZE则为10;如果minIdle>0则重置为minId...
2019-08-09 10:07:03 1222
转载 数据库
目录一、索引1. B+Tree 索引2. 哈希索引3. 全文索引4. 空间数据索引索引的利弊二、存储引擎InnoDBMyISAM比较三、切分水平切分垂直切分Sharding 策略四、复制主从复制复制的优点五、事务ACID六、并发一致性问题七、锁分类八、隔离级别级别九、多版本并发控制(MVCC)...
2019-08-07 09:50:34 278
原创 LRU实现
用双端链表实现,将每次最新插入或者最新访问的节点移动到链表的尾部。当容量满的时候,直接移除首节点就可以了。同时要注意一些边界情况-----链表只有一个节点。import java.util.HashMap;public class LRU { public static class Node<K, V> { private K key; private V v...
2019-08-07 09:46:22 177
原创 输入一个网址,发生了什么
浏览器解析DNS对应的 IP 地址 浏览器根据解析得到的IP地址向 web 服务器发送一个 HTTP 请求(ARP(IP----物理地址),路由选择协议,建立连接TCP,发送请求) 服务器收到请求并进行处理 服务器返回一个响应 浏览器对该响应进行解码,渲染显示。有哪些方法途径可以获取IP地址呢?第一个是我们的浏览器。浏览器会将我们近一段时间访问的主机名及对应的IP地址进行缓...
2019-08-07 09:43:23 158
原创 注解
1、@Autowired:依赖主入(DI),不用new,按类型装配2、@Resource:按名称装配,若没有指定name,那么就按照类型来注入。config:3、@Configuration:配置类4、@ConfigurationProperties:通过prefix属性指定配置前缀,通过location指定配置文件路径dao:5、@Reponsitory(实现类):...
2019-08-01 17:21:27 135
原创 要了命的索引
1、聚集索引:叶子节点(数据页)存放整张表的行数据,一张表只能有一个聚集索引,按照每张表的主键构造一棵B+树,如果没有定义主键,InnoDB会试着使用唯一的非空索引来代替。如果没有这种索引,InnoDB就会定义隐藏的主键然后在上面进行聚集。2、非聚集索引(辅助索引):叶子节点存放的是键值以及指向数据页的偏移量,需要进行二次查询聚集索引和非聚集索引的区别:叶节点存放的信息不同;聚集索引只有一...
2019-07-31 18:17:21 132
原创 HashMap源码
hash(Object key)int类型4个字节,32位,将h右移动16位。再异或运算。即 高16位与低16位进行异或,每一位都充分参与运算,这样得到的值更加散列。 static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()) ...
2019-07-29 11:29:32 115
原创 Java8------接口
一、接口的默认方法情况1:正常使用public interface A{ default void func() { System.out.println("A's"); } static void staticFunc() { System.out.println("staticFunc"); }}public class B impl...
2019-07-13 16:17:29 185
原创 Java多线程交替打印实现
public class test { int i = 1; public static void main(String[] args) { test obj = new test(); // 使用匿名内部类的形式 Runnable runnable = new Runnable() { @Override public void run() { wh...
2019-07-12 22:16:57 4644 1
原创 简单工厂、工厂模式、抽象工厂
简单工厂接口IUser:public interface IUser { public void add(); public void remove();}SqLiteUser类:public class SqLiteUser implements IUser { @Override public void add() { System.out.prin...
2019-07-09 15:53:31 159
原创 单例模式的实现
单例模式指的是在应用整个生命周期内只能存在一个实例实现单例模式一、饿汉式以空间换时间的方式 在定义类的静态私有变量同时进行实例化优点:线程安全;获取实例速度快缺点:类加载即初始化实例,内存浪费public class Singleton { private static Singleton instance=new Singleton(); private...
2019-07-08 17:00:51 178
原创 进程和线程的区别
为什么引入进程?为了使程序能并发执行,且为了对并发执行的程序加以描述,所以引入进程,提高资源利用率和系统吞吐率。为什么引入线程?为了减少进程切换和创建的开销,提高执行效率和节省资源 。区别目的不同:进程是为了更好的使多道程序并发执行,以提高系统的资源利用率和系统吞吐量。线程引入的目的是为了减少在程序并发执过程中时空开销,提高系统的并发性能。 资源:进程是系统进行资源分配的单位,线...
2019-06-27 22:25:36 129
转载 线程的生命周期
生命周期的五种状态1、新建(new Thread)当创建Thread类的一个实例(对象)时,此线程进入新建状态(未被启动)。例如:Thread t1=new Thread();2、就绪(runnable)线程已经被启动,正在等待被分配给CPU时间片,也就是说此时线程正在就绪队列中排队等候得到CPU资源。例如:t1.start();3、运行(running)线程获得CPU资...
2019-06-27 21:51:15 122
转载 垃圾收集器
7种不同分代的收集器:Serial、ParNew、Parallel Scavenge、Serial Old、Parallel Old、CMS、G1;所处区域,则表明其是属于新生代收集器还是老年代收集器:新生代收集器:Serial、ParNew、Parallel Scavenge;老年代收集器:Serial Old、Parallel Ol...
2019-06-27 00:43:12 139
原创 查找及排序算法归纳
查找算法1、二分查找/** * 二分查找 * @param arr * @param key * @return */ private static int BinSearch(int[] arr,int key) { int low=0; int high=arr.length-1; int mid=(low+high)/2; whil...
2019-06-26 16:12:32 342
转载 隐式(Synchronized)锁和显式(java.util.Lock)锁
为了控制多个线程按照正确的顺序来访问共享数据,Java提供了提供了两种锁方案1.隐式锁(Synchronized) 这一种就是比较大家熟悉的synchronized关键字,因为Java中每个对象都实现了lock的功能,所以synchronized正是利用了这一特性,来控制并发访问.使用synchronized关键字可以保证使用同一个锁的方法或代码块在不同的线程里执行时是原子的即不可分割的(...
2019-06-20 16:12:30 441
转载 Thread的join()方法
join简介join()方法是Thread类中的一个方法,该方法的定义是等待该线程终止。其实就是join()方法将挂起调用线程的执行,直到被调用的对象完成它的执行。这段话难理解,后面我会用实例做讲解。join实例现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行?这个问题是网上很热门的面试题目(这里除了用join之外还有很多其他方法能够实现,只是使用j...
2019-06-19 16:44:32 688
转载 数据库左连接、右连接、内连接、全连接笔记
准备表A:-- auto-generated definitionCREATE TABLE table_a( PK INT(10) NOT NULL PRIMARY KEY, Value VARCHAR(25) NULL) COMMENT '表A';表B:-- auto-generated definitionCREATE TABLE...
2019-06-11 17:18:56 444
转载 sleep、wait、run、start
sleep和wait的区别1、这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类。sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用了b的sleep方法,实际上还是a去睡觉,要让b线程睡觉要在b的代码中调用sleep。2、最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。...
2019-06-05 10:31:28 324
转载 hashCode()和equals()
一、hashCode()和equals()是什么?hashCode()方法和equals()方法的作用其实一样,在Java里都是用来对比两个对象是否相等一致。二、hashCode()和equals()的区别下边从两个角度介绍了他们的区别:一个是性能,一个是可靠性。他们之间的主要区别也基本体现在这里。1、equals()既然已经能实现对比的功能了,为什么还要hashCode()呢?...
2019-04-09 22:29:29 256
原创 JAVA并发
第二章自旋锁-原理跟互斥锁一样,一个执行单元要想访问被自旋锁保护的共享资源,必须先得到锁,在访问完共享资源后,必须释放锁。如果在获取自旋锁时,没有任何执行单元保持该锁,那么将立即得到锁;如果在获取自旋锁时锁已经有保持者,那么获取锁操作将自旋在那里,直到该自旋锁的保持者释放了锁。由此我们可以看出,自旋锁是一种比较低级的保护数据结构或代码片段的原始方式,这种锁可能存在两个问题:1、死锁。试...
2019-04-09 09:33:05 144
原创 设计模式原则
单一职责原则(Single Responsibility Principle)里氏替换原则(Liskov Substitution Principle):只要父类出现的地方子类就可以出现,而且替换成子类页不会产生任何错误,反之,则不行。java 使用extends实现继承,采用单一继承规则。//士兵开枪依赖倒置原则(Dependence Inversion Principle):高层...
2019-04-09 09:28:30 94
转载 AOP面向切面编程、IOC控制反转/DI依赖注入
首先控制反转和面向切面编程是spring的核心机制,由于控制反转不好理解,因此有人提出依赖注入的概念,其实依赖注入是控制反转的一种方式,但现在大家默认控制反转等同于依赖注入一.控制反转:控制反转是指spring容器通过依赖注入的方式使得创建依赖对象的控制权由对象转移到spring容器。举个例子:我们有一个明星,要举办演唱会,在他唱歌之前有记者要采访他,通常我们的做法是创建一个明星类,...
2019-04-09 09:23:02 481
原创 PAT20181209 甲级 7-2&&7-3
7-2Decode Registration Card of PAT分数16/25部分答案正确三种情况分别考虑,用list存储,再用Collections 进行相关排序。import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.uti...
2018-12-10 19:54:21 182 1
原创 商品销售
Description商店销售某一商品,每天公布统一的折扣(discount)。同时允许销售人员在销售时灵活掌握售价(price),在此基础上,一次购10件以上者,还可以享受9.8折优惠。现已知当天m个销货员销售情况为 销货员号(num) 销货件数(quantity) 销货单价(price) 101
2014-04-07 11:19:11 741
原创 矩形类定义
Description定义一个矩形类,数据成员包括左下角和右上角坐标,定义的成员函数包括必要的构造函数、输入坐标的函数,以及计算并输出矩形面积的函数。要求使用提示中给出的测试函数并不得改动。Input四个数,分别表示矩形左下角和右上角顶点的坐标,如输入3.7 0.4 6.5 4.9,代表左下角坐标为(3.7, 0.4),右上角坐标为(6.5, 4.9)。Output输出一共有3
2014-04-07 11:18:25 2240
原创 处理成绩
Description小平帮老师处理期末成绩时遇到了问题。他需要计算每个同学的平均成绩,并判断他们是否通过了期末考试不及格成绩(期末包括Chinese,Math,English三门课程。Input输入学号,并输入三个个科目成绩,三个科目名称分别用Chinese,Math,English来表示Output输出学号,并输出与学号对应的平均成绩,和挂科科目(全过输出一个pass)
2014-04-07 11:17:12 737
原创 C++类实现最大数的输出
Description判断整数的大小,输入n个数,找出最大的数并输出。Input有多组测试实例,输入n,并输入n个数。Output输出的最大的数,每个输出结果占一行。Sample Input101 2 3 4 5 6 7 8 9 10Sample Output10#include using namespace std;class Q{p
2014-04-02 22:58:45 866
原创 对象数组求最大值
Description建立一个对象数组,内放n(Inputn和n个学生的学号、成绩Output成绩最高者的学号和成绩Sample Input5101 78.5102 85.5103 98.5104 100.0105 95.5Sample Output104 100.00#include #include using namespa
2014-04-02 22:58:09 873
原创 对象数组输入与输出
Description建立一个对象数组,内放n(nInputn和n个学生的学号、成绩Output奇数学生的数据Sample Input5101 78.5102 85.5103 98.5104 100.0105 95.5Sample Output101 78.50103 98.50105 95.50HINT主函数已给定如下,提交
2014-04-02 22:57:36 932
原创 长方柱类【C++ 类定义】
#include using namespace std;class Bulk{public: void set_value();int get_volume(); int get_area(); //此处声明需要的成员函数private: double lengh; double width; double height;};/
2014-04-02 22:55:55 519
原创 删除相同元素(线性表)
Description(线性表)在一个递增有序的线性表中,有数值相同的元素存在。若存储方式为单链表,设计算法去掉数值相同的元素,使表中不再有重复的元素。Input输入长度:6输入数据:2 3 4 5 5 7Output2 3 4 5 7Sample Input68 9 10 11 22 22Sample Output8 9 10 11 22#incl
2014-04-02 22:51:41 759
原创 节点插入(线性表)
Description有一个有序单链表(从小到大排序),表头指针为head,编写一个函数向该单链表中插入一个元素为x的结点,使插入后该链表仍然有序。 Input输入长度n:5输入数据:1 6 8 9 10输入插入数据:7Output输出:1 6 7 8 9 10Sample Input41 2 3 46Sample Output1 2 3 4
2014-04-02 22:50:48 976
原创 删除线性表节点(线性表)
Description已知长度为n的线性表A采用顺序存储结构,请写一时间复杂度为0(n)、空间复杂度为0(1)的算法,该算法删除线性表中所有值为item的数据元素。(O(1)表示算法的辅助空间为常量)。Input输入 n:6输入数据:1 2 3 4 5 6输入 item:5Output输出:1 2 3 4 6Sample Input101 2 3 4 5 6
2014-04-02 22:49:09 537
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人