- 博客(20)
- 收藏
- 关注
原创 Java并发笔记线程池
线程池 线程池的优势 降低资源消耗,通过重复利用已创建的线程降低线程创建和销毁造成的消耗 提高响应速度,当任务到达时,任务可以不需要等到线程创建就能立即执行 提高线程的可管理性,线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。但是要做到合理的利用线程池,必须对其原理了如指掌。 演示代码 public class Dem...
2019-10-08 22:08:21
192
原创 java并发笔记继续
提前完成任务之Future的使用 简单用法: public class Demo { public static void main(String[] args) { Callable<Integer> call = new Callable<Integer>() { @Override public Integer call() throws Excep...
2019-10-07 16:50:03
165
原创 线程之间的通信2
ThreadLocal原理与使用 每一个线程ThreadLocal都会为其保存一个局部变量 public class Demo { private ThreadLocal<Integer> count = new ThreadLocal<Integer>() { protected Integer initialValue() { return new Inte...
2019-10-04 20:59:04
199
原创 线程之间的通信1
线程之间可能有依赖,如一个线程需要另一个线程的结果,或线程间有数据交互,所以需要通信 下面一段代码 public class Demo { private volatile int signal; public void set(int value) { this.signal = value; } public int get() { return signal; } pub...
2019-10-02 14:00:09
158
原创 Java并发编程总结2
重入锁 比如,两个方法都是使用同一个对象锁的,一个线程可以在第一个上锁的方法中去执行第二个上锁的方法 public class Demo1 { public synchronized void a() { System.out.println("a"); b(); } public synchronized void b() { System.out.println("b"); ...
2019-09-27 21:43:07
133
原创 Java并发编程总结1
Synchronized原理与使用 内置锁,互斥锁 修饰普通方法/静态方法/代码块 用javap -verbose ***.class查看字节码指令 Synchronized字节码指令用monitorinter与monitorexit 对象头部的信息 Mark Word(锁的信息就在这里) Class Metadata Address Array Length 偏向...
2019-09-27 10:38:14
123
原创 阿里春季实习机考的一道题,分配奖金
题目大概是这样,小明和小华分奖金有独特的方法,由一个程序来决定奖金的归属,首先产生一列数组,值在0到1之间,p1,p2,…pn,首先是以p1概率小明抽到全部奖金,若没有,则小华以p2概率抽奖金,以此类推,一旦奖金分配,则程序停止,如果n次还没有分配出去,则从p1从新开始,若上轮最后一次是某人,则这轮开始是另一个人,直到100轮,若还是没有分配出去,则放弃奖金 输入N+1行,第一行是整数n,然后n行...
2019-04-13 13:40:02
398
原创 华为19春实习的一道机考题,求蜜蜂的总距离最短
简单的叙述一下题 #include<iostream> #include<string> #include<algorithm> using namespace std; class point { public: point(){} point(int m_x, int m_y) { x = m_x; y = m_y; } public: in...
2019-03-29 20:59:26
833
1
原创 华为的一道机考题,大端与小端
现定义一种字符编码,其编码格式如下: 第一个字符表示后续8个字符序(字符‘0’表示小端,字符‘1’表示大端) 后续8个字符,每个字符代表一个字节 编码解析之后字符串采用大端模式 例如编码组“012345678”,解析之后的大端字符串为“87654321”,编码组“112345678”,解析之后的大端字符串为“12345678” 一次可以连续输入很多个编码组 很简答,代码如下 #include &l...
2019-03-28 14:01:36
2146
原创 实现二叉树的前中后遍历
1.实现二叉树的前中后遍历 #include<iostream> #include<queue> using namespace std; template<class T> struct binaryTreeNode{ T element; binaryTreeNode *leftChild, *rightChild; binaryTreeNode...
2019-03-23 16:22:12
171
原创 头条实习招聘的一道机考题,分配奖品数
#include<iostream> #include<algorithm> using namespace std; void compute(int** p, int* n, int a){ int *sum = new int[a]; memset(sum, 0, sizeof(int)*a); for (int m = 0; m < a; m++){ ...
2019-03-23 16:20:39
510
原创 Leetcode290.单词模式
输出: false 示例 3: 输入: pattern = “aaaa”, str = “dog cat cat dog” 输出: false 示例 4: 输入: pattern = “abba”, str = “dog dog dog dog” 输出: false 说明: 你可以假设 pattern 只包含小写字母, str 包含了由单个空格分隔的小写字母。 以下用了map,字母作为键值与相对应...
2019-03-20 15:39:38
146
原创 任务4实现
1.实现一个基于链表法解决冲突问题的散列表 自己编了将近一天,改了又改,修了又修,发现自己的基础知识还是薄弱,最后还是失败了,无奈,先把自己编的错误的带码放上去留个纪念,有时间一定要改出来 还是得出一个重要结论,自己没那么强时最好先不要使用类模板 #include&lt;iostream&gt; #include&lt;string&gt; #include&lt;functional&gt; u...
2019-03-07 22:15:17
159
原创 任务3实现
1.归并排序 这种排序的示意图很好理解,可是到了代码实现的阶段,却很有难度,看了很久才看懂起其中的逻辑。 #include&amp;lt;iostream&amp;gt; using namespace std; void Merge(int space[], int lastspace[], int low, int mid, int high){ int i = low; int j = mid + 1;...
2019-03-05 21:37:26
184
原创 任务2实现
1.用数组实现一个栈,用了一个多小时····不过还算顺利,全部代码如下 #include&amp;amp;lt;iostream&amp;amp;gt; using namespace std; template&amp;amp;lt;typename T &amp;amp;gt; class arrayStack{ public: arrayStack(){ capacity = 5; size = 0;
2019-03-03 14:45:56
162
原创 循环链表的实现
如下全部: #include<iostream> using namespace std; class Node { public: Node *next; int data; }; class circleList{ public: circleList() { head = new Node(); head->next = head; head->...
2019-02-28 16:36:26
211
原创 单链表的实现
因为今天没有时间了,只实现了一些简单的操作,功能还不全,有待增强 1.头文件 #ifndef List #define List class Node{ public: int date; Node *next; }; class Linklist{ public: Linklist(); ~Linklist(); int getLength(); bool insertElem(in...
2019-02-28 15:59:51
157
原创 合并两个有序数组为一个
数组传入函数体变为形参退化为指针,所以在函数外求了数组的长度 #include<iostream> #include<string> using namespace std; int* mergeTwoList(int *list1,int len1, int *list2,int len2) { if (list1 == NULL || list2 == NULL) ...
2019-02-28 13:17:08
143
原创 实现任意类型可扩容数组
1.头文件array.h #define array template &lt;class T&gt; class array{ private: int length; int size; T *base; public: bool init(); bool EnsureFul(); bool add(T item); bool insert(int index, T item)...
2019-02-28 13:12:35
304
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅