自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Mysql查询优化

Mysql查询优化最常见方法是索引一. 索引对于不同的MySql存储引擎,索引实现细节不同,这里不展开了。1).索引的优缺点优点: 可以在查询时避免全表扫描,加快查询速度。不仅可以加快单表查询速度,对多表查询加速更加明显缺点: 索引占物理空间,降低了大部分与写入有关的操作速度(因为写入操作要相应修改索引)2).索引的选取为用于搜索,分组,排序的列创建索引(即最佳候选索引选取列位于w...

2018-10-13 23:54:54 171

原创 leetcode: 删除链表中的冗余结点

Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.Example 1:Input: 1->2->3->3->4->4->5Output: 1->2-...

2018-10-10 11:28:10 380

原创 剑指offer:找出数组中只出现一次的两个数字

一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字。#include<unordered_map>class Solution {public://num1和num2分别保存这两个只出现一次的数字 void FindNumsAppearOnce(vector<int> data,int* num1,int *num2...

2018-10-10 10:48:19 231

转载 单链表排序

单链表排序初始化:#include <stdio.h>#include <stdlib.h>#include <stdbool.h>//节点结构struct node{ int val; struct node * next;};typedef struct node node, * list;//打印函数void pr...

2018-10-10 09:42:01 715

原创 求【1...N】的全排列

对于部分有序数组,想要寻找最大值,最简单的方法是遍历,时间复杂度为O(n),但我们可以由有序性想到利用二叉查找,比如:对于一个先升后降数组,寻找其中最大值 for example: input:1 2 3 4 5 6 6 1 output:6 input: 1 2 3 4 5 6 7 8 9 6 4 3 2 1 output: 9 这是一道面试题,现在整理如下:#include&l...

2018-09-05 23:42:57 408

原创 聊聊C++关键字const

面试的时候被问到const关键字,我只说出了几条,没说全,感觉面试官很不满意,回去就恶补了一下,现在跟大家分享一下: (1)const变量和对象一旦定义就不能改变,故必须初始化 (2)默认状况下,const对象只在文件内有效。如果想在多个文件共享const对象就必须在变量定义前加extern关键字 (3)const的引用:把引用绑定到const上就像绑定到其他对象上一样,称之为对常量的引...

2018-08-28 15:03:41 145

原创 利用队列同步器构建ReentrantLock

ReentrantLock即重入锁,支持一个线程对资源重复加锁。除此之外,该锁还支持获取锁时公平性和非公平性选择。 前面我的博客中实现的Mutex不支持重入。Synchronized关键字隐式支持重进入。 对于ReentrantLock,已经获取到锁的线程再次调用lock方法获取锁不被阻塞。 公平地获取锁就是等待时间最长地线程优先获取锁,锁的获取是顺序的。 下面是公平获取锁和非公平获取锁的...

2018-08-26 17:25:55 207

原创 利用队列同步器AbstractQueuedSynchronizer构建TwinsLock

TwinsLock在同一时刻最多支持两个线程访问,超过两个线程的访问将被阻塞,这是共享式的访问package twinslock;import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.AbstractQueuedSynchronizer;import java.util.concurrent.lock...

2018-08-26 15:23:11 254

原创 利用队列同步器构建独占锁

队列同步器是构建锁和其他同步组件的基础框架,他使用一个int型成员变量表示同步状态,通过内置FIFO队列来完成资源获取线程的排队工作。 同步器AbstractQueuedSynchonizer是一个抽象类,他的使用方式是继承,子类通过继承同步器并实现他的抽象方法来管理同步状态。 同步器中可以被重写的方法有: (1)protected boolean tryAcquire(int arg)//...

2018-08-26 00:39:17 166

转载 死锁的产生与解除

进程死锁及解决办法 一、要点提示(1) 掌握死锁的概念和产生死锁的根本原因。(2) 理解产生死锁的必要条件–以下四个条件同时具备:互斥条件、不可抢占条件、占有且申请条件、循环等待条件。(3) 记住解决死锁的一般方法,掌握死锁的预防和死锁的避免二者的基本思想。(4) 掌握死锁的预防策略中资源有序分配策略。(5) 理解进程安全序列的概念,理解死锁与安全序列的关系。(6) 了...

2018-08-24 12:08:57 7553 3

原创 构建数据库连接池

1.下面我们就使用等待超时模式构造简单数据库连接池,模拟从连接池中获取,使用和释放连接的过程,而客户端获取连接的过程被设定为等待超时模式,在1000 ms内无法获取到可用连接将会返回给客户端一个null,设定连接池大小为10,然后通过调节客户端线程数来模拟无法获取连接的场景。 2.连接池的定义: 通过构造函数初始化最大的连接上限,通过双向队列来维护连接,调用方先调用fetchConnectio...

2018-08-23 23:56:03 194

转载 Java 静态内部类

在Java世界里,经常被提到静态这个概念,static作为静态成员变量和成员函数的修饰符,意味着它为该类的所有实例所共享,也就是说当某个类的实例修改了该静态成员变量,其修改值为该类的其它所有实例所见。最近一个项目里频繁用到static修饰的内部类,再读了一下《Effective Java》才明白为什么会用static来修饰一个内部类也就是本文的中心——静态类。如果一个类要被声明为static的...

2018-08-23 19:32:50 159

原创 Kruskal算法求最小生成树(图是连通的)

Kruskal算法求图的最小生成树:Kruskal算法本质上上是贪心算法,即每次从图中选取权重最小的安全边(安全边就是加入最小生成树中不会形成回路的边)加入最小生成树(刚开始为空集)中,然后把改边从原图中剔除,继续重复前面的步骤,直到从原图中剔除所有的边或者原图中所有顶点均加入到生成树中。下面就是由一个图的邻接矩阵求其最小生成树的代码:/* * To change this licens...

2018-08-22 21:48:25 1243 1

原创 Parlindrome-Partitioning

class Solution {public: vector<vector<string>> partition(string s) { vector<vector<string>> res; vector<string> cur;

2018-08-21 21:32:39 237

原创 C++指针和引用的区别

指针和引用的区别 1.引用不可以为空,但指针可以为空。定义一个引用的时候,必须初始化; 2.引用一旦初始化后不可以再改变指向(但可以改变所指向对象的内容),而指针可以改变指向。 3.引用的大小是所指向的变量的大小,因为引用只是一个别名而已;指针是指针(地址)本身的大小,32位系统下,一般为4个字节。 4.引用比指针更安全。由于不存在空引用,并且引用一旦被初始化为指向一个对象,它就不能被改变...

2018-08-20 10:13:59 1672

转载 DNS分别在什么情况下使用UDP和TCP

DNS同时占用UDP和TCP端口53是公认的,这种单个应用协议同时使用两种传输协议的情况在TCP/IP栈也算是个另类。但很少有人知道DNS分别在什么情况下使用这两种协议。 如果用wireshark、sniffer或古老些的tcpdump抓包分析,会发现几乎所有的情况都是在使用UDP,使用TCP的情况非常罕见,神秘兮兮。其实当解析器发出一个request后,返回的response中的tc...

2018-08-17 11:28:15 2973

原创 select和epoll实现I/O复用

#include<stdio.h>#include<stdlib.h>#include <string.h>#include<unistd.h>#include<arpa/inet.h>#include

2018-08-16 22:32:18 151

原创 leetcode原题--将字符串切割为若干回文子串的最小切割次数

leetcode题目:Given a string s, partition s such that every substring of the partition is a palindrome.Return the minimum cuts needed for a palindrome partitioning of s.For example, given s =”aab”, ...

2018-08-15 10:23:17 801

原创 快速排序

源代码:import java.util.Scanner;/** * * @author liuzhenzhao */public class MyQuickSort { /** * @param args the command line arguments */ public static void QuickSort(int []A,in...

2018-08-14 17:20:24 123

转载 TCP三次握手和四次挥手

这是一个很有意思的问题~   首先,我们要知道TCP是全双工的,即客户端在给服务器端发送信息的同时,服务器端也可以给客户端发送信息。而半双工的意思是A可以给B发,B也可以给A发,但是A在给B发的时候,B不能给A发,即不同时,为半双工。 单工为只能A给B发,B不能给A发; 或者是只能B给A发,不能A给B发。  我们假设A和B是通信的双方。我理解的握手实际上就是通信,发一次信息就是进行一次握...

2018-08-12 17:26:23 126

原创 简单的UDP通信(Java实现)

一 .源代码/*服务器端*/import java.util.*;import java.net.*;import java.io.*;public class UDPServer { private final static int PORT=3000; public static void main(String[] args) { // TODO ...

2018-08-12 16:12:31 4112 1

原创 最大堆排序

package heapsort;import java.util.ArrayList;import java.util.List;import java.util.Stack;/** * * @author liuzhenzhao */class MyHeapSort{ private int heap_size; public MyHeapSort(int...

2018-08-12 16:00:35 124

原创 Java对象的序列化和反序列化

1.基本概念       把对象转换为字节序列的过程称为对象的序列化。  把字节序列恢复为对象的过程称为对象的反序列化。  对象的序列化主要有两种用途:  1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;  2) 在网络上传送对象的字节序列。2.JDK类库中序列化APIjava.io.ObjectOutputStream代表对象输出流,它的writeObject...

2018-08-11 21:09:24 117

空空如也

空空如也

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

TA关注的人

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