中都

生活不会因为你弱而偏爱你!越努力,越幸运!

一个简单的聊天室系统

这是一个没有用数据库的只用网络和多线程实现的基于控制台输入输出的聊天室系统,不过我想加了数据库的思路也应该差不多吧,在这里,服务端的作用就是将一个客户端发送的数据转给其他客户端看,还有就是注意私聊的处理的就行了; import java.io.BufferedReader; import java...

2019-05-19 15:59:01

阅读数 15

评论数 2

多线程(十一)—— 死锁

死锁 死锁是指两个或者两个以上的线程在执行过程中,由于竞争资源而造成的阻塞问题,若无外力作用下,他们将无法推进下去。此时系统处于死锁状态 死锁产生原因: 1、因竞争资源产生死锁 2、进程顺序推进不当发生死锁 出现死锁的必要条件: 1、互斥条件:资源每次只能是一个线程使用-》资源 2、请求与保持条件...

2019-04-27 23:08:03

阅读数 49

评论数 0

多线程(十)—— ConcurrentHashMap源码解析

ConcurrentHashMap的特点:线程安全 ConcurrentHashMap底层数据结构:数组+数组+链表 通过什么保证线程安全? 重入锁 Hashtable和ConcurrentHashMap线程安全保证机制是否一样? 不一样 Hashtable锁整张表 ...

2019-04-25 15:52:30

阅读数 231

评论数 0

多线程(五)—— 原子更新操作类

原子类(jdk1.5操出现的)提供原子操作,主要分为以下四类: 原子更新基本类型 原子更新数组 原子更新抽象类型 原子更新字段 1、原子更新操作类 AtomicInteger(int)、AtomicLong(long)、AtomicBoolean(boolean); 他们提供的方法基本一致: ...

2019-04-22 00:07:28

阅读数 34

评论数 0

设计模式——适配器模式

定义:将一个类的接口转换为客户希望的另一个类的接口,适配器模式使得原本由于接口不兼容的那些类可以一起工作;它主要是实现接口转换; 这个模式也很简单,你笔记本上的那个拖在外面的黑盒子就是个适配器,一般你在中国能用,在日本也能用,虽然两个国家的的电源电压不同,中国是 220V,日本是 110V,但是...

2019-03-17 11:45:31

阅读数 63

评论数 0

数字化婚姻匹配问题——优化版(1000组数据3~4分钟)

/** * @ClassName Sex 性别 * @Description * @Author lzq * @Date 2019/2/24 16:31 * @Version 1.0 **/ public class Sex { public static fi...

2019-02-27 03:39:21

阅读数 147

评论数 0

1~n整数中1出现的次数

资料

2019-01-30 17:49:07

阅读数 53

评论数 0

数字序列中某一位的数字

/** * 得到第index位数主方法 * @param index * @return */ public static int get_number(int index) { if(index < 0) { ...

2019-01-30 16:46:54

阅读数 62

评论数 0

n个骰子的点数

思路: 一个骰子有6个面,点数分别是1,2,3,4,5,6,那么n个骰子的最小点数和为n,最大点数和为6n; 1、当只有一枚骰子时,它只有6种结果,即和为1,2,3,4,5,6这6种,抛一次骰子时每种结果都只可能会出现1次; 2、当有n枚骰子时,抛一次时的最小点数和为n,最大点数和为6n,其他的点...

2019-01-30 12:18:10

阅读数 69

评论数 0

构建乘积数组

import java.util.Arrays; /** * @ClassName TestDemo66 * @Description 面66 * @Author lzq * @Date 2019/1/29 13:17 * @Version 1.0 **/ public class ...

2019-01-29 13:41:34

阅读数 47

评论数 0

树中两个节点的最低公共祖先

以下几个方法中会用到的方法和类: class BinaryTreeNode { int data; BinaryTreeNode left; BinaryTreeNode right; BinaryTreeNode parent; public Binar...

2019-01-29 13:01:38

阅读数 36

评论数 0

队列的最大值

效率比较高的做法: 使用双向队列(,队列中只存放当前元素的下标,设新来的元素为k,如果前面的元素比k小,直接把前面的删除(因为不可能成为后面窗口的最大值),如果前面的元素比k大,判断是否还在窗口范围内,不在则移除 ①先判断当前队列是否为空,如果不空而且当前元素比队列中尾端的元素大,将队列元素的...

2019-01-27 17:56:43

阅读数 154

评论数 0

判断一棵树是不是平衡二叉树

引用两种方法都要求树的深度,所以首先,求树的深度的方法如下: / * 求树的深度 * @param root * @return */ public static int TreeDepth(BinaryTreeNode root...

2019-01-27 14:22:29

阅读数 74

评论数 0

把字符串转化成整数

/** * @ClassName TestDemo67 * @Description 面67 * @Author lzq * @Date 2019/1/24 15:58 * @Version 1.0 **/ public class TestDemo67 { /...

2019-01-26 11:50:41

阅读数 65

评论数 0

数组中的逆序对

题目: 在数组中的两个数字如果前面的数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。 例如在数组{7, 5, 6, 4}中,一共存在5个逆序对,分别是(7,6)、(7,5)、(7,4)、(6、4)和(5,4)。 解决方法: 用递归排序思想: ...

2019-01-24 11:25:28

阅读数 34

评论数 0

第一个只出现一次的字符

题目一:字符串中只出现一次的字符,在字符串中找到第一个只出现一次的字符,如输入"abaccdeff",则输出“b”; /** * 面50 * @param str * @return */...

2019-01-23 16:25:14

阅读数 58

评论数 0

把数组排成最小的数

题目: 输入一个正整数数组,把数组里面的数字拼接起来排成一个数,打印能拼接出的所以数字的最小的一个,例如,输入数组{3,32,321},则打印出这三个数字能拼成的最小数字321323; /** * @ClassName TestDemo45 * @Description 面45 *...

2019-01-22 11:02:18

阅读数 37

评论数 0

数据流中的中位数

题目:如何找到一个数据流中的中位数?如果从数据流中读取到奇数个数值,那么中位数就是所有数值排序之后位于中间的数值,如果从数据流中读取到偶数个数值,那么中位数就是排序之后位于中间两个数的平均值; 最好的时间复杂度解决思路: 使数据在容器中已经排序,并且让容器左边的数据比右边的小,这样中位数就...

2019-01-22 09:29:17

阅读数 38

评论数 0

不能用排序、求一个数组第k大的数字、时间复杂度为O(nlog₂k)

思想: 既然不能用排序还要求数组第k大的数字,时间复杂度为O(nlog₂k),那么我们可以用快速排序的思想,因为快速排序每次都会确定待排序数组的一个基准在数组中合适的位置,那么只要我们得到一个基准的排序后位置下标等于k-1,那么这个位置的数字就是我们要找的这个数字; public class ...

2019-01-14 21:44:15

阅读数 97

评论数 0

字符串的全排列和组合

字符串的全排列 /** * @ClassName TestDemo37 * @Description 面38 全排列 * @Author lzq * @Date 2019/1/5 20:54 * @Version 1.0 **/ public class TestDem...

2019-01-06 01:53:29

阅读数 72

评论数 0

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