prism

密码技术整理

僤鯓⒐⒋嵵緔 提交于 2020-04-14 09:51:11
【今日推荐】:为什么一到面试就懵逼!>>> 基本概念 密码学分为 密码编码学 和 密码分析学 密码编码学目的是寻求保证信息的 保密性、完整性、真实性和不可否认性 密码分析学目的是研究加密信息的破译和信息伪造的方法 现代密码系统分为两类: 对称密码系统 和 非对称(公钥)密码系统 对称密码系统加密和解密使用同一个密钥。常见算法有DES、AES、RC4等 非对称密码系统加密和解密密钥不同。 常见算法有RSA、椭圆曲线算法 对称密码 古典密码 (1). 单表替代密码:将英文字母向后推移k位 (2). 多表替代密码 (3). 置换密码:将明文中的字母重新排列,字母本身不变 分组密码 (1) DES算法 (2) AES算法 序列密码 (1) RC4 公钥密码 RSA算法 基于大树分解问题 ELGamal算法 椭圆曲线算法 To be continued 点赞 收藏 分享 文章举报 minose 发布了124 篇原创文章 · 获赞 32 · 访问量 7万+ 私信 关注 来源: oschina 链接: https://my.oschina.net/u/4312062/blog/3234050

C语言库自带的函数bsearch函数的使用示例

久未见 提交于 2020-04-14 08:47:01
【今日推荐】:为什么一到面试就懵逼!>>> bsearch 使用二分查找,查找一个被排序过的数组 依赖头文件 #include <stdlib.h> void * bsearch ( const void * key , const void * base , size_t nmemb , size_t size , int ( * compar ) ( const void * , const void * ) ) ; 描述 key : 指向要查找的元素 base : 指向被查找的数组 nmemb : 被查找数组的大小 size : 被查找数组元素的大小 int ( *compar ) ( const void *, const void * ) : 比对的函数 RETURN VALUE 查找到了就返回对应的元素,查找不到就返回 NULL ┌──────────┬───────────────┬─────────┐ │Interface │ Attribute │ Value │ ├──────────┼───────────────┼─────────┤ │bsearch() │ Thread safety │ MT-Safe │ └──────────┴───────────────┴─────────┘ 使用示例: # include <stdio.h> # include

vue cli3 热更新 保存时自动刷新页面内容 + 分离环境变量.env package.json配置

二次信任 提交于 2020-04-14 01:47:50
【今日推荐】:为什么一到面试就懵逼!>>> 前几天ts+vue3.0+view-design撸了一个项目,然后总感觉哪里不对劲,今天终于醒悟了原来是热更新没开 在vue.config.js中配置以下选项 const IS_PRO = [ 'production' , 'test' ] . includes ( process . env . NODE_ENV ) ; css : { // 是否使用css分离插件 ExtractTextPlugin extract : IS_PRO , // 开启 CSS source maps 打包时不生成.map文件? sourceMap : false , // css预设器配置项 loaderOptions : { } , // 为所有的 CSS 及其预处理文件开启 CSS Modules。 // 这个选项不会影响 `*.vue` 文件。 requireModuleExtension : true } , 上文中用到了process.env环境变量,那么这里在安利一个知识点吧 package.json "scripts" : { "serve" : "vue-cli-service serve" , "build" : "vue-cli-service build" , "build:dev" : "vue-cli-service build

[golang基础] golang开发思想(future模式)

删除回忆录丶 提交于 2020-04-13 21:50:11
【今日推荐】:为什么一到面试就懵逼!>>> 前言: 最近在学习golang,golang并发支持比较好,goroutine+channel这个思想,大大提高了并行效率。既然golang有这个特性,我在做一些多个子调用的时候完全可以使用channel来将串行调用更改为异步调用,大大提高运行效率。所以今天就来学习一下future模式。 1. 什么是future模式 我们经常在编程的时候,经常会在一个函数里面调用多个子调用的情况,这些子调用相互之间没有依赖,如果串行调用,会耗时很长,这时就可以使用future模式来进行开发。 基本原理: 使用chan作为函数参数 启动goroutine调用函数 通过chan传入参数 做其他可以并行处理的事情 通过chan异步获取结果 2. futrue好处? future 最大的好处是将函数的同步调用转换为异步调用,适用于一个交易需要多个子调用且这些子调用没有依赖的场景。 工作流程图如下: 3. 样例 这里模拟查询数据库的操作,使用futurem模式进行开发 package main import ( "fmt" "time" ) //future 模式 /** * 1. 使用chan作为函数参数 * 2. 启动goroutine调用函数 * 3. 通过chan传入参数 * 4. 做其他可以并行处理的事情 * 5. 通过chan异步获取结果 */

Lodash源码解析-------chunk函数

馋奶兔 提交于 2020-04-13 21:49:30
【今日推荐】:为什么一到面试就懵逼!>>> 基本思想 没有看过chunk函数的内部实现,根据官方文档给出的功能自己编写实现。 chunk函数接受两个参数,第一参数为array类型,第二个参数为number类型,其作用的是:将数组(array)拆分成多个 size 长度的区块,并将这些区块组成一个新数组。 如果array 无法被分割成全部等长的区块,那么最后剩余的元素将组成一个区块。例子如下: _ . chunk ( [ 'a' , 'b' , 'c' , 'd' ] , 2 ) ; // => [['a', 'b'], ['c', 'd']] _ . chunk ( [ 'a' , 'b' , 'c' , 'd' ] , 3 ) ; // => [['a', 'b', 'c'], ['d']] 这里我没有遍历整个数组,这样是没有必要的,利用Aarry类型的slice函数进行优化: 首先要判断传入函数的参数类型,如果不是array或者第二参数不是number要抛出异常 记录每个分割的临时数组的长度,用数组的整个长度余上要分割的数量 看这个余数是否为0,如果不为0,做除法后要加1,这是因为我们前面要尽可能添加多的元素 这里有个坑的点,我们最后part的值要娶一个整数,然后除法运算符默认返回IEEE754浮点数,例如:5/3返回的是1.666666667这种

java Atomic类使用

本秂侑毒 提交于 2020-04-13 21:44:39
【今日推荐】:为什么一到面试就懵逼!>>> JUC包中除了锁,还提供了原子操作类来实现线程对临界资源的互斥访问。 Atomic包中提供了多种类型的原子操作类: 它们都是CAS(compareAndSwap)来实现原子性。 1.原子基本类型 用于原子更新基本类型,包括以下三类: AtomicBoolean:原子更新布尔类型 AtomicInteger:原子更新整数类型 AtomicLong:原子更新长整数类型 AtomicInteger 常用方法: int incrementAndGet():将当前值加1并返回新值。 int decrementAndGet():将当前值减1并返回新值 int updateAndGet(IntUnaryOperator updateFunction):将当前值原子执行用户自定义的操作后并返回新值。(updateFunction是用户自定义操作) public class AtomicIntegerTest { public static void main ( String [ ] args ) { AtomicInteger integer = new AtomicInteger ( 0 ) ; //递增 System . out . println ( "递增后的值: " + integer . incrementAndGet ( ) ) ; /

synchronized 使用方法

断了今生、忘了曾经 提交于 2020-04-13 21:44:14
【今日推荐】:为什么一到面试就懵逼!>>> 概述 在java中synchronized是一个非常重要的关键字,它主要用来控制线程同步的,在多线程环境下能实现临界区资源的互斥访问。 synchronized关键字最主要有以下3种应用方式,下面分别介绍 修饰实例方法,作用于当前实例加锁,进入同步代码前要获得当前实例的锁。 修饰静态方法,作用于当前类对象加锁,进入同步代码前要获得当前类对象的锁。 修饰代码块,指定加锁对象,对给定对象加锁,进入同步代码库前要获得给定对象的锁。 修饰代码块,加锁对象为对象,则该类的所有的对象共享同一把锁。 1. 修饰实例方法 class SafeAdd implements Runnable { public static int num = 0 ; public synchronized void add ( ) { num ++ ; } @Override public void run ( ) { for ( int i = 0 ; i < 10000 ; ++ i ) { add ( ) ; } } } public class SyncMethod { public static void main ( String [ ] args ) throws InterruptedException { SafeAdd safeAdd = new

Leetcode: NO.887 鸡蛋掉落

末鹿安然 提交于 2020-04-13 20:24:01
【今日推荐】:为什么一到面试就懵逼!>>> 题目 题目链接:https://leetcode-cn.com/problems/super-egg-drop 你将获得 K 个鸡蛋,并可以使用一栋从 1 到 N 共有 N 层楼的建筑。 每个蛋的功能都是一样的,如果一个蛋碎了,你就不能再把它掉下去。 你知道存在楼层 F ,满足 0 <= F <= N 任何从高于 F 的楼层落下的鸡蛋都会碎,从 F 楼层或比它低的楼层落下的鸡蛋都不会破。 每次移动,你可以取一个鸡蛋(如果你有完整的鸡蛋)并把它从任一楼层 X 扔下(满足 1 <= X <= N)。 你的目标是确切地知道 F 的值是多少。 无论 F 的初始值如何,你确定 F 的值的最小移动次数是多少? 示例 1 : 输入:K = 1 , N = 2 输出: 2 解释: 鸡蛋从 1 楼掉落。如果它碎了,我们肯定知道 F = 0 。 否则,鸡蛋从 2 楼掉落。如果它碎了,我们肯定知道 F = 1 。 如果它没碎,那么我们肯定知道 F = 2 。 因此,在最坏的情况下我们需要移动 2 次以确定 F 是多少。 示例 2 : 输入:K = 2 , N = 6 输出: 3 示例 3 : 输入:K = 3 , N = 14 输出: 4 提示: 1 <= K <= 100 1 <= N <= 10000 解题记录 可以使用动态规划求解

【seafile】之 预览电子发票PDF显示不全问题

心不动则不痛 提交于 2020-04-13 19:43:26
【今日推荐】:为什么一到面试就懵逼!>>> 文章目录 一、问题来源 二、解决 三、题外话 近期在处理网盘和在线文件相关问题,面对的事比较多且杂,记录下。 问题: seafile 自身预览PDF文件,部分不显示 图片显示如下: 一、问题来源 seafile 版本:7.0.5 原因: 原文件 pdf ,字体没有嵌入,所以需要本系统的字体渲染 seafile 使用 pdf.min.js ,而把对应 map 集成了。 解决这个问题,关键点在 seafile 的 pdf.js 二、解决 用 seafile 预览“有问题的” pdf ,且在浏览器里打开开发控制台 会发现,缺少对应 map 文件,如图: 解决步骤: 创建目录 /media/js/pdf/web/cmaps/ ,将 Adobe-GB1-UCS2.bcmap , UniGB-UCS2-H.bcmap 这两个文件放在这个目录下面 文件可以在 github 里下载:https://github.com/mozilla/pdf.js/blob/master/external/bcmaps/UniGB-UCS2-H.bcmap $ root@3e1c6f87e1aa:/opt/seafile/seafile-server-latest/seahub/media/js/pdf/web/cmaps # ls Adobe-GB1-UCS2

Flink的DataSource三部曲之三:自定义

安稳与你 提交于 2020-04-13 18:24:54
【今日推荐】:为什么一到面试就懵逼!>>> 本文是《Flink的DataSource三部曲》的终篇,前面都是在学习Flink已有的数据源功能,但如果这些不能满足需要,就要自定义数据源(例如从数据库获取数据),也就是今天实战的内容,如下图红框所示: ### Flink的DataSource三部曲文章链接 《Flink的DataSource三部曲之一:直接API》 《Flink的DataSource三部曲之二:内置connector》 《Flink的DataSource三部曲之三:自定义》 环境和版本 本次实战的环境和版本如下: JDK:1.8.0_211 Flink:1.9.2 Maven:3.6.0 操作系统:macOS Catalina 10.15.3 (MacBook Pro 13-inch, 2018) IDEA:2018.3.5 (Ultimate Edition) 在服务器上搭建Flink服务 前面两章的程序都是在IDEA上运行的,本章需要通过Flink的web ui观察运行结果,因此要单独部署Flink服务,我这里是在CentOS环境通过docker-compose部署的,以下是docker-compose.yml的内容,用于参考: version : "2.1" services : jobmanager : image : flink : 1.9.2 - scala