5G通信的风口虽然经过近3年的洗礼,热度稍减,但不可否认的是,全球5G网络的部署正在持续快速推进,而我国更是部署了占据全球70%左右的5G基站。 图1 “5G+工业互联网”企业融合组网 干通信这行的朋友一定不会对数字信号处理陌生,当然在我们从事该行业前,都是经过比如《数字电路》、《模拟电路》、《信号与系统》、《数字通信原理》、《数字信号处理》 本文仅仅针对5G NR中的基带算法部分,做一个简单梳理。 对于5G通信系统, 站在基站侧的角度,那么下行方向的整个处理过程,从gNB MAC到终端UE MAC,可以用图2来说明。 图4 5G NR基站架构部署场景 话说回来,通信发射机的设计,在业界来看,不是主要挑战,核心算法也没几个,当然难点也是有的。各种控制信道、广播信道和数据信道揉在一起,就足够玩一年半载了。 图10 火星探测器天问一号环绕器与火星合影 虽然本篇文章在讲通信算法的套路,并从FPGA工程师的角度来简述闲扯,但其实背后始基于这样的动因: 逻辑实现和算法设计不分家,千万不要设定自己能力的边界,在术业有专攻的基础上
source[i]; } } /******************************************************* * 名称:获取报文MAC值 * 功能:报文MAC算法 sprintf( (char *)Bbuf, "%02X%02X%02X%02X%02X%02X%02X%02X", val[0],val[1],val[2],val[3],val[4],val[5] sprintf( (char *)Bbuf, "%02X%02X%02X%02X%02X%02X%02X%02X", Abuf[0],Abuf[1],Abuf[2],Abuf[3],Abuf[4],Abuf[5] 位密钥结果放入mac_buf } /******************************************************* * 名称:获取报文MAC值 * 功能:报文MAC算法 * 入口: * *buf ,要计算的数据缓冲区;buf_size,计算数据的长度 * *key ,密钥(8B) * 出口:mac_buf,计算出来的MAC值(8B) ansi x9.9 MAC算法
UIWebView)WKScriptMessageHandler(只适用于WKWebView,iOS8+)Bridge第三方框架(适用于UIWebView和WKWebView)1. url拦截url拦截是在H5请求一个地址后 ,客户端拦截住这个地址,对地址进行解析处理H5中调用iOS方法代码:弹出登录弹窗(拦截url)iOS中拦截到url代码:- (BOOL)webView - (void)login{ [self.delegate login]; }@end// H5加载完成 (app方法名).postMessage() H5代码<body> <input type="button" name="" value="登录" onclick="login()"><script type JavaScriptInterfaceH5端代码<body> <input type="button" name="" value="登录" onclick="login()"><script type
前言 为了提高开发效率,开发人员往往会使用原生app里面嵌套前端h5页面的快速开发方式,这就要涉及到h5和原生的相互调用,互相传递数据,接下来就实践项目中的交互方式做一个简单的记录分享,废话不多说,直接上正文 u.indexOf('MicroMessenger') > -1, //是否微信 (2015-01-22新增) qq: u.match(/\sQQ/i) == " qq" //是否QQ }; 通信原理之先了解 h5向ios客户端发送消息; 在ios中,并没有现成的api让js去调用native的方法,但是UIWebView与WKWebView能够拦截h5内发起的所有网络请求。 ,因此我们不需要直接通过schema协议来通信,只需要使用浏览器postMessage、onMessage来传递消息即可,类似于iframe,而真正的通信过程RN已经帮我们做了。 }); 前端jsBridge的封装 在了解了js与客户端底层的通信原理后,我们可以将IOS、安卓统一封装成jsBridge提供给业务层开发调用。
今天看到一张图片,对当前5G来说很形象,分享一下。 图片的标题就是5G Networks - Coming soon? 这个图片对于5G NSA来说非常形象,毕竟NSA就是借用4G网络挂了个5G基站,套壳上市。 不过作为从业者来说,现在的5G对于终端手机用户没看到什么有用的或者革命性的场景。打游戏、看视频直播、语音视频电话依然是4G就可以满足的场景,再加个WIFI,更是没什么5G的用武之地。 5G真正的用武之地是工业自动化,比如码头装卸自动化,铺设光纤使用有线的时候,光纤磨损维护更换成本都是很高的,那么对于码头这个地方铺设5G,使用无线传输,然后再自建一套核心网就近完成数据计算就很有应用场景了 至于5G,别当回事儿。 ----
—— 琉璃康康 5G的强大,一个是速度的提升,一个是诸多场景的切分,不像2/3/4G里的大杂烩(GW还是可以通过APN区分的,4G的DECOR/eDECOR也实现了MME的业务分离),5G可以通过切片的定义将不同的业务分发到指定的网络设备中进行处理 关于它的来源大概两类:一个是通过LTE获取,另外一个就是上次接入5G时候的Allowed NSSAI或者Configured NSSAI的汇总。 问题:怎么通过LTE获取? 这个就要说到4-5G互操作了,比如将来要做4G到5G的IWK流程,那么就要求UE在4G附着的时候申请相应的5G资源,所以对于一个5G手机(选择了NR/LTE)+5G Sim卡在只有LTE覆盖的下发起LTE 所以对于一个5G手机是可以通过LTE拿到5G的切片信息的,那么这个就会作为5G注册时候的Requested NSSAI发给AMF。
简介 MD5消息摘要算法(MD5 Message-Digest Algorithm),是一种被广泛使用的加密算法。 该算法讲任意的输入处理之后,输出一个128位的数据指纹,理论上这个信息指纹是独一无二的,因此我们可以通过验证文件传输前后的MD5值是否一致来验证文件信息是否被篡改。 生成MD5的过程 MD5是以512位分组来处理输入的信息,每一个分组被划分为16个32位子分组,经过一系列处理之后,算法的输出变成了4个32位分组,将这4个分组组合,即得到一个128位的散列值,即MD5
文章目录 BFS算法框架 框架代码 简单题:二叉树的最小高度 拔高题:解开密码锁的最少次数 一波优化:双向BFS BFS算法框架 BFS算法和DFS算法属于图论算法的范畴,DFS在前面回溯中,可以去看一下 BFS算法用于寻找两点之间的最短路径。 碧如说:寻找树的最小高度(迭代法)、走迷宫、导航等问题。 这些问题看起来都会比较抽象,去做也是很抽象。 与其说算法框架难写,倒不如说是把实际问题转化为算法问题来的要难。 还记得我在图论算法那篇里面有讲过:学习图论算法,最难的是要有用图论算法的意识。等下看了例题就知道了。 int BFS(Node start,Node target){ /* 这是一个BFS算法的代码框架 return:返回从start到target的最短步数 start:起始点 target 好,关键的一步来了,怎么将这个暴力算法往图论算法的方向去引呢。 再看一下上面这个暴力算法,不难看出来,这就是一个节点下面拖八个子节点的八叉树,又是求最短距离,BFS。
md5算法 不可逆的:原文--》密文、用系统的API可以实现; 123456 ---密文 1987 ----密文; 算法步骤: 1、用每个byte去和11111111做与运算并且得到的是int类型的值 throws NoSuchAlgorithmException { 2 3 MessageDigest digest = MessageDigest.getInstance("md5" ); 4 5 String password = "123456"; 9 byte [] result = digest.digest(password.getBytes 37 System.out.println(buffer); 38 39 } 会抛出没有事先准备的算法异常NoSuchAlgorithmException; 4、网站验证算法是否正确 (www.cmd5.com)、加密再加密再演示 5、密码加盐,即byte相与的数不上标准的oxff,我们进行修改为oxfff或其他的 6、银行密码保存是进行了15~30次重复加密,破解非常复杂,不用担心安全性
简介 MD5消息摘要算法(MD5 Message-Digest Algorithm),是一种被广泛使用的加密算法。 该算法讲任意的输入处理之后,输出一个128位的数据指纹,理论上这个信息指纹是独一无二的,因此我们可以通过验证文件传输前后的MD5值是否一致来验证文件信息是否被篡改。 生成MD5的过程 MD5是以512位分组来处理输入的信息,每一个分组被划分为16个32位子分组,经过一系列处理之后,算法的输出变成了4个32位分组,将这4个分组组合,即得到一个128位的散列值,即MD5
H5拥有跨平台的优势,却存在性能上的问题正好可以用搭建原生壳承载H5代码的方式去解决。 如何理解这种方式,就好像说Android原生代码封装外壳,内部包含H5代码作为核心内容。 更细节一点,我们把引导页、登录页、首页等等与业务关联打不并且与用户交互较多的页面用原生去写,而业务页面,逻辑代码由H5处理,将他们结合就形成了混合开发的由原生壳承载的H5APP。 同时我们需要在钉钉、微信小程序等等平台搭建,可以直接复用我们已有的H5代码。 而这样的搭建方式比纯H5搭建的APP的优势在于因为有原生壳的存在,可以自由的使用原生API。保证了交互上的流畅性。 如何实现原生与H5的通信呢? 而参数code则是我们的指令内容,data为通信时的传参。 接下来是原生这边处理。首先我们拦截url。这里笔者还处理由于Http攻击导致H5页面出现广告的问题。我们主要是第一个if。
第二轮比较:从第一个元素开始,对列表中前N-1个元素之间进行两两比较,使第二大的数字沉到最后 以此类推,N-1轮后,排序完毕 冒泡排序算法的实现 list = [77, 42, 35, 10, 22, 101, 5] for i in range(len(list) - 1): for j in range(len(list) - 1 - i): if list[j] > list ,就说明已经排好序了 # 改进 list = [77, 42, 35, 10, 22, 101, 5] for i in range(len(list) - 1): flag = True 算法主要时间消耗是比较的次数 冒泡算法共需比较N-1轮,总共比较次数为(N-1)+(N-2)+...+2+1=N(N-1)/2次 冒泡排序执行交换的次数不确定 冒泡排序是一种执行效率很低的排序算法 0x03 if a[j] > a[i]: a[j], a[i] = a[i], a[j] list = [77, 42, 35, 10, 22, 101, 5]
默认值是5,优先级大的分配的时间片会大于优先级低,所以频繁阻塞线程可以设置高优先级,而占用cpu比较长的线程(计算线程)可以设置较低的优先级。但是在有的操作系统会无视对线程有限制。 1536140160461.png 线程通信 通知等待机制 首先我们需要了解一下wait()与notify方法 wait() 调用该方法的线程会进入WAITING状态,只有等待另外线程通知或者被中断才能返回 /** * @author yukong * @date 2018/9/5 * @description 线程池接口,抽象出来,定义规范 */ public interface ThreadPool 获取正在等待执行的任务数量 * @return */ int getJobCount(); } 然后编写一个实现类 /** * @author yukong * @date 2018/9/5 MAX_WORKER_NUMBERS = 10; /** * 线程池默认数 */ private static final int DEFAULT_WORKER_NUMBERS = 5;
5G的概念已经炒很久了,而且从全民感受度来看比4G的时候要普及不少,不管是通信行业的从业者,还是其他行业的工作人员,即便是街道办事处的大爷大妈们,你问一下知道5G否,都能回答:当然知道。 这个依赖于国家在5G上渐趋领先地位,打破了之前几代通信系统一直被欧美国家领先的传统,然后就是最近这两年华为被美国制裁,孟晚舟女士依然扣留加拿大,然后备胎转正、芯片自研等等诸多事件,导致了全民皆5G。 从我本人作为一个通信从业人员来说,5G确实是快字为先,毕竟要一代更比一代强,这会导致很多的产业升级。 但是如果引入5G呢,架设5G天线,然后设备通过无线接入通信网络,5G的速度快、低时延等等优势,可以迅速替代光纤宽带,从而降低成本。 Guided Vehicle)自动导引运输车,等等都可以私人订制网络,比如号称全自动的京东供货中心,完全可以打造一个自己的5G通信网络,造船厂也可以拥有自己独立的通信网络,不过这些依然需要通过运营商铺设维护
SOCKS分为SOCKS 4和SOCKS 5两种类型: SOCKS 4只支持TCP协议;SOCKS5不仅支持TCP/UDP协议,还支持各种身份验证机制等,其标准端口为1080.SOCKS能够与目标内网计算机进行通信 用户通过访问服务端的frps,由frp负责根据请求的端口或其他信息将请求路由到对应的内网机器,从而实现通信。 } user = your_name # 决定第⼀次登录失败时是否退出程序,否则继续重新登录到 frps # 默认为 true login_fail_exit = true # ⽤于连接到服务器的通信协议 //这个是额外加的,用于创建一个socks5的通道,可以给其他主机连接 type = tcp remote_port = 6000 plugin = socks5 注意这里windows 7的frpc配置和其他不一样的点,这里多了一条 plugin = socks5 这一条很关键,后面我会说为什么 ?
Feign是声明式的Web服务客户端。它使编写Web服务客户端更加容易。要使用Feign,请创建一个接口并添加注解。它支持可插拔的注解,包括Feign注解和JAX-RS(Java API for RESTful Web Services)注解。
回溯算法 1 回溯算法的理论基础 1.1 问题的解空间 1.2 回溯法的基本思想 1.3 子集树与排列树 2 装载问题 3 0-1背包问题 4 图的m着色问题 [5 n皇后问题](https://blog.csdn.net 遍历子集树的任何算法,其计算时间复杂度都是Ω(2n)。 算法6.3(1) 装载问题回溯算法的数据结构 算法6.3(2) 装载问题回溯算法的实现 算法6.3(3) 剩余集装箱的重量r初始化 3 0-1背包问题 给定一个物品集合s={1,2,3 算法6.5(1) 图的m着色问题回溯算法的数据结构 算法6.5(2) 图的m着色问题回溯算法的实现 //形参t是回溯的深度,从1开始 void BackTrack(int t ) { int BackTrack(int t)的时间复杂度是: 5 n皇后问题 6 旅行商问题 7 流水作业调度问题 8 子集和问题 9 ZOJ1145-Dreisam Equations 10 ZOJ1157
package cn.com.test; /* 传入参数: 一个字节数组 * 传出参数: 字节数组的MD5结果字符集 */ public class MD5 { public static String getMD5 (byte[] source){ String s = null; //用来将字节转换成十六进制表示的字符 char hexDigits[] = {'0' ,'1', '2' , '3', '4' ,'5' ,'6', '7','8','9','a','b','c','d','e','f'}; try { java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5"); md.update(source); //MD5 的计算结果是一个128位的长整数 ,'@','#'}; System.out.println(MD5.getMD5(byarr)); } }
我们之前学习了冒泡排序算法,我们知道,在冒泡排序过程中,只对相邻的两个元素进行比较,因此每次交换两个相邻的元素时只能消除一个逆序。 而这就是本篇文章讲述的另一种基本排序算法——快速排序算法。 ---- 快速排序的算法思想 通过一次元素的交换消除多个逆序,以提高排序的效率。 Sample Input 5 2 4 1 3 5 Sample Output 3 题意:有N(N为奇数)头奶牛产奶,求这N头奶牛产奶的中位数。 总述 快速排序算法是一种效率较高的排序算法,它是在冒泡排序的基础之上的进行改进得来的。你学会了吗ヾ(◍°∇°◍)ノ゙