- 博客(30)
- 收藏
- 关注

原创 2020杭电计算机考研感想
2020杭电计算机考研感想初试 本科是普通二本电子专业,因为本科期间做过几个比赛,拿过几个奖所以考研前一直对自己很有信心,非211不读,不是985往后考虑。但是!我从3月份开始准备的,随着学习越来越发现考研其实和自己平时比赛实践不一样,考研初试考的是基础知识,而且越好的学校给统考的名额越少,好学校二战三战的大有人在,后来考研目标一直很难确定最后选择了杭电。虽然说杭电只是一所四非,但是杭电的计算机却异常的火爆,实力也很强,竞争不比中流211小,但是有什么办法,哪有能躺着上的好学校? 从3月初,我开始
2020-05-19 08:32:44
2330
2
转载 Lock的用法
转载自 https://www.cnblogs.com/aishangJava/p/6555291.html8.1 synchronized 的局限性 与 Lock 的优点如果一个代码块被synchronized关键字修饰,当一个线程获取了对应的锁,并执行该代码块时,其他线程便只能一直等待直至占有锁的线程释放锁。事实上,占有锁的线程释放锁一般会是以下三种情况之一:占有锁的线程执行完了该代...
2019-01-09 18:45:00
5612
2
原创 c++实现整型和字节数组间的转化
整型转换到字节数组在网络传输中经常需要将整型数字转换成字节数组,然后将字节数组发送到客户端,在c++,int是4个字节,long是8个字节。废话不说,代码如下(byte类型是uchar):int32_t bytesto_int4(byte *bytes){ //turn bytes array to integer int32_t num = bytes[0] &...
2019-01-09 14:54:40
7320
2
原创 利用管道进行线程通信
7.1 管道流在Java的JDK中提供了4个类来使线程间可以进行通信PipedInputStreamPipedOutputStreamPipedReaderPipedWriter7.2 使用案例write类public class writer { public void writeData(PipedOutputStream out) { tr...
2019-01-07 22:52:57
268
原创 wait和notify
6.1 wait/notify的机制6.1.1 wait方法方法wait()的作用是使当前执行代码的线程进行等待,wait()方法是Object类的方法,该方法用来将当前线程置入"预执行队列"中,并且在wait()所在的代码处停止执行,直到接到通知或被中断为止.在调用wait()方法之前,线程必须获得该对象的对象级别锁,即只能在同步方法或同步块中调用wait()方法,执行完wait方法后,当...
2019-01-07 22:52:38
298
原创 volatile和内存模型
5.1 并发的三大特性5.1.1 原子性(Atomicity):Java中,对基本数据类型的读取和赋值操作是原子性操作,所谓原子性操作就是指这些操作是不可中断的,要做一定做完,要么就没有执行。 比如:i = 2; //原子操作j = i; //非原子操作 1.取i的值,2.赋值给ji++; //非原子操作 1.i自增,2.将i写入内存i = i + 1; ...
2019-01-07 15:05:39
535
原创 synchronized关键字
4.1 synchronized的作用关键字synchronized取得的锁是对象锁,而不是把一段代码或方法当作锁,哪个线程先执行带synchronized的方法,哪个线程就有该方法所属对象的锁LOCK,其他线程只能等待。(但是可以调用非synchronized方法)4.2 synchronized的可重入性可重入锁的概念:自己可以再次获取自己的内部锁,比如说有一条线程获得了某个对...
2019-01-07 15:05:18
153
1
原创 守护线程和非守护线程
3.1 介绍Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程)守护线程与普通线程的唯一区别是:当JVM中所有的线程都是守护线程的时候,JVM就可以退出了;如果还有一个或以上的非守护线程则不会退出。(以上是针对正常退出,调用System.exit则必定会退出)所以setDeamon(true)的唯一意义就是告诉JVM不需要等待它退出,让JVM喜欢...
2019-01-07 15:04:58
908
原创 Java多线程api介绍
2.1 currentThread()方法currentThread()方法可返回代码段正在被哪个线程调用的信息public class run { public static void main(String[] args) { System.out.println(Thread.currentThread().getName()); }}注意,T...
2019-01-07 15:04:37
672
原创 多线程使用方法
1.1 使用多线程的方法1.1.1 继承Thread类通过继承thread类,并且重载run方法public class test extends Thread { @Override public void run() { for (int i=0;i<10;i++) System.out.println("runni...
2019-01-07 14:59:49
344
原创 epoll基础用法
8.1 epoll和select在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在linux/posix_types.h头文件有这样...
2019-01-07 14:58:24
156
原创 基本UDP套接字编程
7.1 概述TCP和UDP网络编程存在一些本质的差异,主要是由于传输层的差别:UDP是无连接的不可靠的数据报协议,而TCP是面向连接的字节流协议。下图是典型的UDP客户端和服务器之间的通信流程。客户不与服务器建立连接,而是只管使用sendto函数。服务器不接受来自客户的连接,而是只管调用recvfrom函数,等待某个客户的数据到达。7.2 recvfrom和sendto函数这两个函数类似...
2019-01-07 14:57:59
367
原创 getsockname和getpeername函数
6.1 函数的运用场景在两台计算机上建立一个网络连接,需要五个要素:本机地址 本机端口 协议类型 远端端口 远端地址.那么如何从一个建立好的连接上获取这些信息呢.就需要用到getsockname 和 getpeername 这两个函数.但前提是要在建立好的连接上.作为客户端,要在正确调用connect()之后,才能使用这两个函数作为服务端,要在正确调用accept()之后,才能使用这两个...
2019-01-07 14:57:30
571
1
原创 fork函数
5.1 fork函数fork函数是unix唯一的进程创建方法#include "unistd.h"pid_t fork(void); /*在子进程中为0,在父进程中为子进程的ID,若出错则为-1*/fork在子进程返回0而不是父进程的进程ID的原因是:任何子进程只有一个父进程,而且子进程总是可以通过调用getppid取得父进程的进程ID。相反,父进程可以...
2019-01-06 19:12:20
677
原创 基本TCP套接字编程
4.1 概述在这个篇章里面主要讲解编写一个完整的TCP客户/服务器程序所需要的基本套接字函数。这些API包括socket、connect、bind、listen和accept。4.2 socket 函数为了执行网络I/O,一个进程必须做的第一件事情就是调用socket函数,指定期望的通信协议类型(使用IPv4的TCP、使用IPv6的UDP、Unix域字节流协议等)。#include "sy...
2019-01-06 19:11:56
1279
7
原创 地址转换函数
3.1 老版本的转换函数inet_aton、inet_aton、inet_ntoa在点分十进制(如206.168.112.96)与它长度为32位的网络字节序二进制值间转换IPv4地址#include "arpa/inet.h"int inet_aton(const char *strptr,struct in_addr *addrptr); ...
2019-01-06 19:11:33
636
1
原创 主机字节序和网络字节序
2.1 字节序当我们与同一台计算机的进程进行通信时,一般不用考虑字节序。什么是字节序——字节序是一个处理器架构特性,用于指示像整数这样的大数据类型内部的字节如何排序。考虑一个16位整数,它由2个字节组成。内存中存储这两个字节有2种方法:一种是将低序字节存储在起始地址,这称为小 端字节序;另一种方法 是将高 字节序存储在起始地址,这称为大端字节序。2.2 主机字节序这两种字节序之间没有标准...
2019-01-06 19:11:13
1568
2
原创 套接字地址结构
1.1 POSIX数据类型数据类型说明头文件int8_tuint8_tint16_tuint16_tint32_tuint32_t带符号的8位整数无符号的8位整数带符号的16位整数无符号的16位整数带符号的32位整数无符号的32位整数&lt;sys/types.h&gt;sa_family_tsocklen_t套接字地址结构的地址族套接字地址结构的长度,一般为u...
2019-01-06 19:09:05
971
5
转载 快速排序
快速排序 快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列基本步骤1.三数取中 在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。在此...
2019-01-06 19:04:58
146
转载 归并排序
归并排序 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。分而治之合并相邻有序子序列 再来看看治阶段,我们需要将两个已经有序的子序列合并成一个有序序列,比如上图中的...
2019-01-06 19:04:37
107
转载 堆排序
堆排序 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。 堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。如下图:同时,我们对堆中的结点按层进行编号,将这种逻辑结构映射到数组中...
2019-01-06 19:03:43
88
原创 希尔排序
希尔排序基本思想 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。(插入排序的优化算法) 希尔排序在数组中采用跳跃式分组的策略,通过某个增量将数组元素划分为若干组,然后分组进行插入排序,随后逐步缩小增量,继续按组进行插入排序操作,直至增量为1。希尔排序通过这种策略使得整个...
2019-01-06 19:03:15
305
原创 简单排序算法
冒泡排序基本思想冒泡排序是一种交换排序,它的基本思想是:两两比较相领的关键字,如果反序则交换,直到没有反序为止.代码实现void BubbleSort(vector<int> *list){ bool flag = true; for (int i = 0; i < list->size() && flag == true; i+...
2019-01-06 19:02:33
80
原创 C++赫夫曼树的原理和实现
赫夫曼树的定义基本概念(1)节点之间的路径:一个结点到另一个结点,所经过节点的结点序列。(2)结点之间的路径长度:结点之间路径上的分支数(边),如汽车到下一站的路径长度为1。(3)树的路径长度:从根结点到每个叶子结点的路径长度之和。(4)带权路径: 路径上加上的实际意义。如汽车到下一站的距离我们叫做权值(5)树的带权路经长度:每个叶子结点到根的路径长度*权值 之和,记作...
2018-08-31 14:43:19
850
原创 ubunto16和nginx安装edusoho教程
sudo apt-get install software-properties-common python-software-propertiessudo LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/phpsudo apt-get updatesudo apt-get install php-pear php7.1-cli php7.1-common php7.1-curl \ php7.1-dev php7.1-fpm php7.1-json
2018-07-11 12:12:50
1159
原创 cocos2dx中使用replaceScene切换场景后资源奔溃问题
前段时间做了个有两个场景的小游戏时遇到了问题,如果我用replaceScene切换场景到了第二个场景时点击图片资源时程序会崩溃,然而如果我用pushScene来切换场景就没事。但是pushScene只是把原来的场景压入栈并不是很好的解决方法,切换场景最佳的方法还是replaceScene。那么我使用replaceScene发生的资源奔溃到底是哪里错了呢? 经过一段时间的不断尝试总算...
2018-05-23 14:18:35
924
原创 cocos2dx 3.16两类回调函数传参问题的解决方法
在我们使用cocos2dx创建菜单或者按钮时会利用回调函数给按钮绑定事件,那么如果我们希望在点击时给事件传入参数呢?一.CC_CALLBACK传参问题(1)CC_CALLBACK_的区别#define CC_CALLBACK_0(__selector__,__target__, ...) std::bind(&__selector__,__target__, ##__VA_AR...
2018-05-15 22:20:29
1098
原创 Mac 下cocos2dx 出现Undefined symbols for architecture x86_64 解决方法
今天学习cocos2dx编译遇到了Undefined symbols for architecture x86_64这个问题,于是百度好久,总算解决了,解决方案如下:方案一:双击点击project进入项目的target,找到build Settings,将其中的Architectures->Build Active Architechture Only 改为no.方案二:如果上述方法无法解
2018-01-16 13:16:34
1284
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人