自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(110)
  • 收藏
  • 关注

原创 letcode刷题 第二高工资

最近工作时候,发现自己sql写的真是很垃圾 所以 上letcode刷题去了解题思路https://leetcode-cn.com/problems/second-highest-salary/首先 这个题我不会,然后我就去 评论区找了答案 ,开始反向解析初始思路:select Salary as SecondHighestSalary from Employee order by Salary desc limit 1 offset 1然后我就发现,过不了 Salary 均为 200 还

2021-12-06 16:37:42 140

原创 MySQL常用存储引擎对比

选择合适的存储引擎  在开发中,我们经常使用的存储引擎 myisam / innodb/ memory  MyISAM存储引擎  如果表对事务要求不高,同时是以查询和添加为主的,  我们考虑使用myisam存储引擎. 比如 bbs 中的   发帖表,回复表.  INNODB存储引擎:  对事务要求高,保存的数据都是重要数据,  我们建议使用INNODB,比如订单表,账号表...

2019-08-10 14:28:14 225

原创 HTTPS以及SSL的底层原理

文中首先解释了加密解密的一些基础知识和概念,然后通过一个加密通信过程的例子说明了加密算法的作用,以及数字证书的出现所起的作用。接着对数字证书做一个详细的解释,并讨论一下windows中数字证书的管理,最后演示使用makecert生成数字证书。如果发现文中有错误的地方,或者有什么地方说得不够清楚,欢迎指出!1、基础知识这部分内容主要解释一些概念和术语,最好是先理解这部分内容。1.1、公钥密码体...

2019-08-10 13:12:51 1979

转载 对面向对象 的理解

转载文章:里面修改、添加了一些自己的观点:在我理解,面向对象是向现实世界模型的自然延伸,这是一种“万物皆对象”的编程思想。在现实生活中的任何物体都可以归为一类事物,而每一个个体都是一类事物的实例。面向对象的编程是以对象为中心,以消息为驱动,所以程序=对象+消息。面向对象有三大特性,封装、继承和多态。封装就是将一类事物的属性和行为抽象成一个类,并且让内部操作对外部不可见,使其属性私有化,行为公...

2019-08-05 20:29:44 204

原创 基于WebSocket编程的网络聊天室

1.项目简介: 基于Socket编程的网络聊天室2.功能描述:可以实施多个用户的注册,群发和私聊:3.具体实现流程:客户端实现流程:1.客户端的功能可以进一步细化为:对外发送信息:接受其他客户端的信息:由于发送和接受的功能应该是独立的,所以使用两个线程来分别实现:1.发送线程:内部主要实现原理是通过获取sokcet输出流,通过输出流发送信息2.如果有Bye字样则关闭Sock...

2019-07-30 16:08:20 556

原创 单例模式-DoubleCheck

1.单例模式理解:是为了满足一些场景,一个对象只能创建一个实例对象的场景。流程:1.构造方法私有化,2.声明对象 位静态3.类方法返回实例化后的对象。2.将单例模式分为两类 懒汉式和饿汉式:懒汉式:特点在定义Singleton是就newpublic class Singleton{ private static Singleton singleton=new Singleton...

2019-07-29 19:10:12 4604 3

转载 IP详解

IP详解

2019-07-26 22:44:53 122

原创 看谁跑的快—性能测试框架

1.项目简介:描述一个程序的好坏可以很好的帮助我们去优化程序,提高代码水平。在比较有相同功能的方法时,我们通常会在特定的负载下,看系统的响应时间和表现。所以以基于JMH基准测试框架为灵感,编写了一款简单的测试框架“看谁跑的快”2.项目灵感在学习String和StringBuffer的时候,String使用“+”号连接字符串效率比StringBuffer的apppend()的效率要低很多。嗯...

2019-07-21 18:58:38 210

原创 JavaSE 自定义注解

JavaSE 自定义注解1.什么是注解:​ 注解就是一些特殊的接口​ (百度百科)从JDK5开始,Java增加对元数据的支持,也就是注解,注解与注释是有一定区别的,可以把注解理解为代码里的特殊标记,这些标记可以在编译,类加载,运行时被读取,并执行相应的处理。通过注解开发人员可以在不改变原有代码和逻辑的情况下在源代码中嵌入补充信息。2.常见的注解​ @Override用来标记有几成关系的类...

2019-07-20 20:53:11 171

原创 链表

链表接口public interface LinkedList<E>{ void addFirst(E e); void add(int index,E e); void removeFirst(); void remove(int index); void remove(E e); boolean contains(E e); ...

2019-07-06 11:20:46 128

原创 JavaWeb—Servlet

JavaWeb—Servlet静态资源和动态资源服务器上有两种资源:静态资源:用户每次访问结果都是一样的资源叫做静态资源 (html、Css、JavaScript)动态资源:用户每次访问结构都是不一样的资源(jsp、PHP)每次服务器再给浏览器响应的时候:动态资源必须要先转换成静态资源才可以发送先说一下Servlet配置:1.可以通过web—WEB-INF----web.xml文件中...

2019-07-05 20:31:44 119

原创 JavaWeb —Dom解析

JavaWeb —Dom解析dom解析:介绍Xml文件的特点:1.标签必须成对出现 ,但是命名空间除外<‘stu : dent’><’/stu : dent’>2.不可以用数字开头,但是可以用字母、下划线开头,标签中不能出现空格 。3.只能有一个根标签作用:1.作为web工程的资源配置文件2.作为小型数据库头: <’?xml version=“1....

2019-07-04 22:14:48 366

原创 Java—JVM

#Java—JVM1.虚拟机的概念:在软件上模拟具有完全硬件功能的、运行在完全隔离的环境中的计算机系统。常见的虚拟机 VMware、JVM、Virtual Box等JVM和VMware、Virtural Box的区别a.VMWare和Virtual Box是通过软件模拟物理CPU的指令集,物理系统中会有很多的寄存器。b.JVM是通过软件模拟Java字节码的指令集,JVM中只是主要保留了...

2019-06-17 22:38:37 79

原创 树的遍历迭代方法

树的遍历迭代方法前序遍历迭代方法private void preOrder1(Node root){ if (root==null){ return; } //首先创建一个栈 Stack<Node> stack=new Stack<>(); stack.push(root);//将更节点入栈 while(!...

2019-06-17 22:20:03 1830 2

原创 数据结构—二叉搜索树

#数据结构—二叉搜索树1.什么是树:一种非线性的数据结构一个结点只有一个父节点,零个或多个子节点;除了父节点以外每个结点只有一个父节点,并且兄弟结点不相:结点的度:每个结点所拥有子树的数目;兄弟结点:有相同父节点的结点;树的度:最大度结点,的度叫做树的度;树的深度:根到叶子节点的所连的边的数目,数的高度:树的深度反过来;树的层数:树的深度+1;2.二叉树:除了叶子节点以外,每...

2019-06-17 22:12:54 225

原创 栈和队列

栈和队列栈:先进后出 LIFO(Last In First Out)只允许在一段插入和删除数据。栈顶:允许在一段插入和删除数据的一段;语言:koltin顺序栈:入栈:push()出栈:pop()返回栈顶元素:peek()​栈接口public interface Stack<T> { boolean push(T data); T pop(); ...

2019-06-17 22:02:07 91

原创 juc包下的关于并发四大工具类

juc包下关于并发的四大工具类##CountDownLatch—闭锁使用CountDownLatch可以实现类似多线程下计数器的功能。构造器:1.参数count为计数器2.调用await()方法时,线程被挂起,它会等待直到count值为0才继续执行​ 重载:public boolean await(long await ,TimeUnit unit)throw InterruptedE...

2019-05-27 16:57:48 1134

原创 Java—Executor线程池

Java—Executor线程池什么是线程池?将若干线程放在一起,同一进行管理,调度,和监控(线程池就相当于 包工头)为什么要有线程池?线程池有如下的优点:1.降低资源消耗:重复利用已有的线程,减少了不断创建销毁线程的资源消耗2.提高响应速度:在任务到达时,不需要等待线程的创建就可以直接执行任务3.便于管理:使用线程池可以统一进行线程的分配、调度管理线程池构造方法的几个参数几个参数...

2019-05-15 09:53:31 142

原创 Java—fail—fast的机制

Java—类集 fail—fast的机制以ArrayList来举例:在进行迭代器输出时,要有以下的几个步骤;1.调用ArrayList的iterator()方法,获取Iterator接口对象;2.在输出时进行iterator.hasNext()判断该集合是否有下一个元素,并且进行iterator.next()进行输出我们知道,像ArrayList,LinkedList,HashSet,T...

2019-05-15 08:43:29 102

原创 Java—Map原码分析

Map接口是保存一元偶对象的最大接口:**区别:**TreeMap和HashMap(都是有序的Map集合):LinkedHashMap是HashMap的子类,有序Map,序指的是插入顺序,元素的添加顺序;而TreeMap有序Map,序指的是Comparator或Compareable常用方法?put和get3.Map集合遍历Map—>Set?Set接口与Map接口的关系:S...

2019-05-06 22:46:24 98

原创 深浅拷贝

深浅拷贝1、Cloneable :CloneNotSupportedException2、只有子类实现了Cloneable接口后才可以使用Object类提供的clone方法,否则会抛CloneNotSupportedExceptionprotected native Object clone() throws CloneNotSupportedException·想要让对象具有拷贝功能,...

2019-05-04 22:51:43 94

原创 Java—多线程9 Condition的生产消费者模式

Java—多线程9 Condition的生产消费者模式LockSupport工具类与内建锁阻塞的区别:内建锁进入Block状态LockSupport.park()进入wait状态唤醒:内建锁由JVM随机挑选一个线程唤醒LockSupport.unpark(Thread thread)唤醒指定线程##死锁死锁产生原因:对共享资源的上锁成环代码产生死锁。死锁解决算法:银行家算法...

2019-04-29 22:46:11 87

原创 Java—多线程9 Condition的await和signal机制

Java—多线程9 Condition的await和signal机制##两种机制等待队列的对比1.Object的wait和notify是与内建锁(对象监视器)搭配使用,完成线程的等待与通知机制。本地方法实现。2.Condition的await、signal是与Lock体系配合实现线程的等待与通知,Java语言层面的实现,具有更高的控制与扩展性Condition机制有一下三个独有特性:1...

2019-04-29 22:44:41 239

原创 Java—多线程8—ReentranReadWriteLock可重入读写锁

Java—多线程8 ReentranReadWriteLock可重入读写锁读写者模型读写锁允许同一时刻被多个读线程访问,但在写线程访问时,所有的读线程以及其他写线程均会被阻塞。写锁是一个独占锁:读锁!= 无锁:如果 读锁==无锁,当有写线程时,读线程不会停止。如果 读锁!=写锁 当有写线程访问时,读线程会被停止写锁—独占锁1.写锁的获取: protected final boo...

2019-04-29 22:44:05 179

原创 Java—Map原码分析

Map接口是保存一元偶对象的最大接口:**区别:**TreeMap和HashMap(都是有序的Map集合):LinkedHashMap是HashMap的子类,有序Map,序指的是插入顺序,元素的添加顺序;而TreeMap有序Map,序指的是Comparator或Compareable常用方法?put和get3.Map集合遍历Map—>Set?Set接口与Map接口的关系:S...

2019-04-29 22:40:14 152

原创 Java—多线程9 Condition的生产消费者模式

Java—多线程9 Condition的生产消费者模式LockSupport工具类与内建锁阻塞的区别:内建锁进入Block状态LockSupport.park()进入wait状态唤醒:内建锁由JVM随机挑选一个线程唤醒LockSupport.unpark(Thread thread)唤醒指定线程##死锁死锁产生原因:对共享资源的上锁成环代码产生死锁。死锁解决算法:银行家算法...

2019-04-29 13:52:09 86

原创 Java—多线程9 Condition的await和signal机制

Java—多线程9 Condition的await和signal机制##两种机制等待队列的对比1.Object的wait和notify是与内建锁(对象监视器)搭配使用,完成线程的等待与通知机制。本地方法实现。2.Condition的await、signal是与Lock体系配合实现线程的等待与通知,Java语言层面的实现,具有更高的控制与扩展性Condition机制有一下三个独有特性:1...

2019-04-29 13:51:39 347

原创 Java—类集2

Java—类集2Map接口下有四个具体子类HashMap、TreeMap(可以排序),HashTable,ConcurrentHashMap常用方法方法解释public V put(K key,V value)插入元素public V get(Object key)取出对应的valuepublic Set keySet()取得所有key信息pub...

2019-04-28 22:35:56 63

原创 Java—类集1

Java—类集11.什么是类集?类集是为了解决数组长度固定的问题而产生的,其本质就是一个用动态的对象数组实现的框架—Java类集框架。可以说累计就是动态数组。类集下有两个核心接口:1.Collections 2.Map;##Collections1.Collection下有几个核心方法:方法内容public boolean add(E e)向集合中添加元...

2019-04-28 22:34:22 96

原创 Java—IO—2

Java—I/O—21.打印流2.系统输入输出3.序列化4.trainsent##1.打印流1.打印流解决的问题:不管是字节流还是字符流只可以输出字节和字符,如果需要输出别的类型就要进行类型转换在进行类型转换时,比如一个 int—>byte 先要将int转换成String 再转换成byte,如果要输出多个时,就要不停的进行转换,所以打印流就是简化了这个转换的过程...

2019-04-28 22:31:38 66

原创 Java—IO—1

Java—I/O—11.File2.输入输出流和转换流3.内存流4.编码方式1.FileFile是一个普通类,在java.io包下,表示的是可进行流操作的文件终端对象File的构造方法有几个重载:1.可以传入URI;2.可以传入String(路径名)有几个常用方法:方法解释public boolean exists()文件是否存在public b...

2019-04-28 22:31:00 90

原创 java-反射单级VO操作

java-反射单级VO操作主要用于一次可以设置多个属性值;例如我们现在定义一个Person类,里面有姓名和年龄属性;如果我们调用set来设置属性,要设置两次,如果人数增多并且属性值不是两个就要多次调用set方法;例子class Emp{ private String name; private String dept; public String getName...

2019-04-25 23:09:11 192 1

原创 Java-反射

Java-反射##1.什么反射:先看正向操作,先有类,再根据类产生类的实例化对象;反射就是根据得到类的Class对象,在更加Class对象实例化类任何类的都有一个描述自己的Class类,记录他的构造方法,普通方法,属性等2.取得类的Class对象1.Object类里面的getClass()public final native Class<?> getClass();...

2019-04-25 23:07:46 63

原创 Java—多线程8 ReentranReadWriteLock可重入读写锁

Java—多线程8 ReentranReadWriteLock可重入读写锁读写者模型读写锁允许同一时刻被多个读线程访问,但在写线程访问时,所有的读线程以及其他写线程均会被阻塞。写锁是一个独占锁:读锁!= 无锁:如果 读锁==无锁,当有写线程时,读线程不会停止。如果 读锁!=写锁 当有写线程访问时,读线程会被停止写锁—独占锁1.写锁的获取: protected final boo...

2019-04-21 22:43:51 245

原创 Java——多线程7 独占式锁的获取

Java——多线程7 独占式锁的获取可中断式获取锁public final void acquireInterruptibly(int arg) throws InterruptedException { //如果当前线程处于中断状态,抛出一个异常,方法退出 if (Thread.interrupted()) throw...

2019-04-21 22:43:19 249

原创 Java—多线程7 Lock2---深入理解AQS

#Java—多线程7 Lock2—深入理解AQS##独占锁的获取非公平锁1.模板方法aquire(int arg)public final void acquire(int arg) { //调用tryAcquire再次尝试获取锁,如果成功直接退出 //如果失败,首先调用addWaiter将钱财封装成结点入同步队列, if (!tryAcquire(arg) &am...

2019-04-21 22:42:07 148

原创 Java—多线程7 Lock

Java—多线程7 Lock1首先synchronize(this){}是自动加解锁JDK1.5后新增了一个guc开发包 java.util.concurrent.locks,体统了与内建锁不同的实现多线程线程共享访问机制。失去了内建锁隐式的加锁与解锁过程。增加了可中断的获取锁,以及超时获取锁以及共享锁等内建锁不具备的特性。##lock锁的标准使用形式1.显示的上锁和解锁过程Lock l...

2019-04-21 22:40:56 455

原创 Java—多线程7—生产者和消费者模型2

Java—多线程5—生产者和消费者模型单生产者,单消费者class Goods { private int count; private String goodName; /** * 生产商品 */public synchronized void producer(String goodName) throws InterruptedException { ...

2019-04-19 23:57:35 74

原创 Java—多线程6 生产和消费者模型1

Java—多线程 生产和消费者模型##生产者消费者模型生产者和消费者不直接通信 而是通过一个阻塞队列通信wait()方法使得当前线程立刻停止运行,处于等待状态,并将当前状态置入锁对象的等待队列中,直到被通知(notify())或中断为止。使用条件:只能在同步方法或者同步代码块中使用,必须是内建锁。wait()调用后立刻释放对象锁。1.一直等,直到被唤醒或者中断。public fin...

2019-04-19 23:56:05 113

原创 Java—5 内建锁优化

Java—6 内建锁优化所谓内建锁的优化就是优化线程的等待时间##CAS机制1.CAS:全称 Compare And Swap 比较交换机制CAS是一种乐观锁机制:悲观锁:在任意时刻都有线程竞争锁,获取锁成功的线程会阻塞获取锁失败的线程成功获取锁。乐观锁(lock):假设所有线程访问共享资源均不会发生冲突,既然不会发生冲突,就不会阻塞其他线程。不会阻塞线程CAS(无锁操作):有...

2019-04-19 23:54:47 95

空空如也

空空如也

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

TA关注的人

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