天眼三大功能:传感器(对流量解析还原,发现网络攻击和web攻击能力) 沙箱(发现恶意样本投递能力) 分析平台(存储历史流量,分析威胁和溯源能力) 天眼威胁感知: 警告类型:APT攻击 威胁级别:高危 攻击结果:失陷 攻击次数:3 天眼搜索:源IP sip 目的IP dip 地理信息:境内还是境外 搜索示例:(sip:"192.168.1.1")OR(dip:"192.168.1.1") 天眼类别: 威胁感知调查分析 场景化分析日志检索 例子:search sip:"10.1.1.1/8" |tcp 100 dip资产报表安全服务 系统管理天眼语法: 天眼分析: web攻击分析思路: web攻击:查看请求包 与 响应包(有没有报红,有没有攻击成功)查看告警详情(查看请求头、请求体内容,定位到告警攻击动作的payload)分析攻击动作是什么(读取文件、打印输出内容、写入文件和尝试下载文件,执行函数或命令 XSS XXE webshell等)分析响应(分析告警响应头,响应体,网络行为是否有动作预期的结果)僵木蠕毒类告警分析思路: 爆破和踩点行为分析: 登录爆破类:单个IP,使用多个用户名和密码组合进行登录尝试,导致短时间内大量登录失败目录和资源爆破:短时间内访问大量url,触发大量404手段:1.找到爆破行为IP,阻断爆破行为 2.找到攻击成功的IP 3.分析攻击IP的操作,编写事件报告ftp爆破: 日志检索使用天眼语法搜索爆破IP:normal_ret:failed AND proto:ftp判断爆破成功行为:normal_ret:success AND proto:ftp AND sip:(攻击ip1 OR 攻击ip2)ssh爆破: 日志检索使用天眼语法搜索爆破IP:normal_ret:failed AND proto:ssh判断爆破成功行为:normal_ret:success AND proto:ssh AND sip(攻击ip1 OR 攻击ip2)数据库爆破: normal_ret:failed AND proto:(oracle OR mysql OR mssql OR postgresql)normal_ret:success AND proto:(oracle OR mysql OR mssql OR postgresql) AND sip:(攻击IP1 OR 攻击IP2)远程桌面爆破: normal_ret:failed AND proto:rdpnormal_ret:success AND proto:rdp AND sip:(攻击IP1 OR 攻击IP2)web登录入口爆破: 对弱口令就行分析:uri:爆破路径 AND sip:攻击ip,查找爆破的流量日志目录和资源猜解: 根据域名和攻击ip进行分析:host:域名 AND sip:攻击IP,查询攻击IP的访问记录是否触发大量404响应 天眼失陷事件处理: 发现webshell和主机木马: 确认创建时间、功能分析等,查看访问日志,攻击行为记录等,通知主机所属人对发现的webshell文件或木马进行排查处置对webshell攻击路径进行溯源溯源分析: 纵向溯源:定位时间:webshell首次访问前5-10分钟,网站受到什么攻击。uri:"
最近看到不少人都在询问,为啥pycharm下运行没问题,代码一放到终端下运行就报ModuleNotFoundError: No module named ‘****’ 错误。其实这是个很基础的设置问题,可能也是过于基础,很多人并没有那么关注,以致于出错时总是先责怪pycharm。下面我们就说简单梳理一下。
工作目录(working directory) 首先,这里先介绍一个概念。工作目录,所有计算机语言在运行时都会有一个本地磁盘工作主目录(工作空间),python也不例外。和大多数语言一样,代码的运行入口所在的py文件所属的目录被默认为项目的运行工作目录,在运行过程中,调用不同的代码模块或不同的包时,涉及路径问题,皆以工作主目录为基础。
具体的工作目录可以通过执行:os.getcwd()方法打印输出。
下面我们用一个简单的例子测试一下:
创建一个hello_dir的工程。工程下分别创建package1,package2这两个包,并创建名为main.py的代码文件。package1包创建名为code1.py的代码文件,package2包下创建名为code2.py的代码文件。 项目结构如下:
code1.py的代码内容:
#!/usr/bin/env python # -*- coding: utf-8 -*- import os print("code1:",os.getcwd()) code2.py的代码内容:
#!/usr/bin/env python # -*- coding: utf-8 -*- import os print("code2:",os.getcwd()) main.py的代码内容:
from package1 import code1 from package2 import code2 pycharm上直接运行main.py文件(不要疑惑代码只有两个from import也能运行),打印结果如下:
和预期结果是一致的,两个不同的包目录下打印出来的当前工作目录都是相同的,都是运行入口代码main.py所有的目录:E:\codes\hello_dir。
下面我换种玩法,换一个运行入口。把code1.py代码修改为如下:
#!/usr/bin/env python # -*- coding: utf-8 -*- import os from package2 import code2 #导入code2可以在加载code2时运行里面的方法 print("code1:",os.getcwd()) 在pycharm上运行code1.py,结果如下:
从打印内容可以看到,当前工作主目录为E:\codes\hello_dir\package1,也就是说运行过程中调用到code2.py时,code2.py也是和code1.py一样在同一个主工作目录E:\codes\hello_dir\package1下运行的。
所以说,项目的工作目录决定于程序运行的入口代码文件所在的目录。
import模块或包 还是上面的代码,没做任何改变,换种运行方式,电脑上打开cmd,切换到目录E:\codes\hello_dir\package1,执行命令:python code1.py,结果如下:
1.1数据与统计学 统计学的含义,数据及其分类和来源
1.1.1 什么是统计学 收集数据
数据分析
描述统计:利用图表,计算简单统计量推断统计:根据样本判断总体(参数估计和假设检验) 1.1.2 变量与数据 变量
数据
变量的观测结果就是数据变量的基本分类
1.1.3 数据的来源 总体
样本
样本量
概率抽样
简单随机抽样分层抽样系统抽样整群抽样 1.2 R语言的初步使用 1.2.1 R软件的下载、安装与更新 install.packages("installr") #先安装包“installr” library(installr) #加载包 updateR() #更新 1.2.2 对象赋值与运行 sum(x) #计算对象x总和 mean(x) #计算对象x平均数 barplot(x) #绘制对象x条形图 1.2.3 编写代码脚本 R代码最好是在脚本文件中编写
R控制台->文件->新建程序脚本命令,弹出R编辑器
编写完成后,选中输入的代码右键“运行当前行或所选代码”
1.2.4 查看帮助文档 help(sum) #弹出sum函数具体说明 ?plotmath #效果与上同 help(package="stats") #state包具体说明 var #直接输入函数名,看该函数源代码 1.2.5 包的安装与加载 显示已安装包的名称
#显示已安装包的名称 .packages(all.available=TRUE) 安装 加载 卸载 解除 包
install.packages("car")#安装包car install.packages(c("car","vcd")#同时安装几个包 library(car)#加载包car require(car)#效果与上同 remove.packages("vcd")#从R中彻底删除vcd包 detach("vcd")#解除(非删除)加载到R界面中的vcd包 本书例题习题用到的所有包
背景: 有时,需要使用.bat文件来运行一个.exe程序(一般是控制台应用程序),可以点击bat文件运行C#写的控制台应用程序。
示例: 【1】Test.exe程序 和 click.bat文件 放在一个文件夹下:
bat文件内容如下:
【2】当Test.exe程序 和 click.bat文件 不在一个文件夹下:
bat文件内容如下:
试了一下手,大受打击!!
题目一:
多多君最近在研究某种数字组合:
定义为:每个数字的十进制表示中(0~9),每个数位各不相同且各个数位之和等于N。
满足条件的数字可能很多,找到其中的最小值即可。
多多君还有很多研究课题,于是多多君找到了你--未来的计算机科学家寻求帮助。
#include<bits/stdc++.h> using namespace std; int ans = 987654321; int flag[9]={0}; void trans(int m, int sum, int n){ if(sum == n){ if(ans > m ) ans = m; return ; } if(sum > n || m > ans){ return ; } for(int i = 9; i>0; i--){ if(flag[i] == 0){ flag[i] = 1; trans(m*10+i, sum +i, n); flag[i] = 0; } } return ; } int main(){ int n; cin >> n; if(0 <= n && n <= 9) cout << n << endl; else{ trans(0, 0, n); if(ans == 987654321)cout << -1 << endl; else cout << ans << endl; } return 0; } 题目不难,自己的问题主要在两个方面(不该错)
文章目录 案例一 滑动样式案例二 滑动样式案例三 动态样式案例四 普通样式案例五 滑动样式案例六 普通样式具体怎么获取呢? 案例一 滑动样式 login.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Login</title> <link rel="stylesheet" href="default.css"> </head> <body> <div class="page"> <div class="panel"> <div class="panel_visible"> <!--注册表单--> <div class="panel_content"> <h1 class="panel_title"> Sign Up </h1> <form class="form"> <label class="form_label" for="username">Username</label> <input class="form_input" type="text" id="username" name="username"> <label class="form_label" for="password">Password</label> <input class="form_input " type="password" id="password" name="password"> <label class="form_label" for="truename">True Name</label> <input class="form_input" type="text" id="truename" name="fullname"> <button class="form_btn" type="button" value="
对输入的字符串进行排序后输出
打开以下链接可以查看正确的代码
#include "bits/stdc++.h" using namespace std; int main() { vector<string> s; string str; while(getline(cin, str)) { stringstream ss(str); while(getline(ss, str, ',')) { s.emplace_back(str); } sort(s.begin(), s.end()); for(int i=0;i<s.size();i++) { cout<<s[i]; if(i<s.size()-1) cout<<","; } cout<<endl; s.clear(); } return 0; }
题目来源:https://leetcode-cn.com/problems/longest-palindromic-substring/
大致题意:
给一个字符串,求出其最长的回文子串
思路 可以直接使用动态规划,使用一个 n*n 的二维数组 dp[i][j] 表示 i - j 的子串是否是回文串
动态规划 使用 dp[i][j] 表示 i-j 的子串是否为回文串,那么
若 i 位字符与 j 位字符不相等,显然不为回文串,dp[i][j] 为 false若 i 位字符与 j 位字符相等,若此时子串长度小于等于 3,则子串一定为回文串;否则 dp[i][j] 的值即为 dp[i+1][j-1] 的值 算法过程为:
使用 n*n 的二维布尔数组 dp[i][j] 表示 i - j 的子串是否是回文串,并存下目前的最长回文子串,初始时,dp[i][i] 为 true从长度 2 遍历到长度 n每次遍历,都遍历当前长度的所有子串,判断是否为回文串。遍历过程中,更新最长回文串 具体看代码:
public String longestPalindrome(String s) { int max = 1; // 最长回文子串的长度 int begin = 0; // 最长回文子串的起始位置 int n = s.
文章目录 一、***基础。1.***中路由器的角色。2.MPLS ***。(1)如何解决不同site连接到同一个PE后,私网路由冲突问题?(2)如何在不同的PE之间传递路由信息?(3)RD在规划时需要注意什么?(4)如何将ipv4的私网路由转化成***v4的路由?(5)当PE收到***v4路由后,如何将这些***v4路由自动的注入到本地***-instance的BGP表中?(6)RT的特点?(7)RT的组网规划?(8)转发问题,当PE从网络侧收到私网的业务报文时,如何判断使用本地哪个***-instance的路由表执行私网报文转发呢? 二、BGP/MPLS IP ***基本原理。1.私网标签分配。2.私网路由交叉。3.公网隧道迭代。4.私网路由的选择规则。5.BGP/MPLS IP ***的路由发布。6.BGP/MPLS IP ***的报文转发。 三、跨域***。1. Option A。2.Option B。3.Option C1。4.Option C2。 四、BGP/MPLS IP ***基本组网。1.Intranet ***。2.Extranet ***。3.Hub and Spoke。 一、***基础。 1.***中路由器的角色。 CE(Custom Edge):直接与服务提供商相连的用户设备。PE(Provider Edge Router):指骨干网上的边缘路由器,与CE相连,主要负责***业务的接入。P (Provider Router):指骨干网上的核心路由器,主要完成路由和快速转发功能。 2.MPLS ***。 (1)如何解决不同site连接到同一个PE后,私网路由冲突问题? 通过在PE上使用***-instance (vrf),隔离不同site的私网路由。***-instance的组成:
独立的路由表。独立的地址空间(即冲突路由可以隔离)。一组独立的路由协议(IBGP除外)。一组绑定到该实例的接口。 (2)如何在不同的PE之间传递路由信息? 通过PE之间建立MP-BGP的邻居关系。将***-instance中的ipv4私网路由,转换为***v4路由,MP-BGP传递这些***v4路由。***v4路由就是添加了RD参数的ipv4路由。 IPv4地址族格式***v4地址族格式192.168.1.0100:1 192.168.1.0 PE接收到不同***v4实例的路由,通过RD来判断这些***v4是否来自同一个***-instance。 (3)RD在规划时需要注意什么? 在PE上本地***-instance的RD要唯一。不同PE上每个***-instance RD可以全局唯一。同一个***中的所有***-instance的RD可以相同,不同***的***-instance的RD不能相同。同一个***指的可以互相通信的***-instance或者是site。RD只能解决区分不同***v4的路由,但无法解决***中ipv4路由冲突的问题。 (4)如何将ipv4的私网路由转化成***v4的路由? PE可以直接将***-instance中学到的EBGP路由直接转化***v4路由。将***-instacne中IGP路由引入到该***-instance的BGP表中,然后自动转化为***v4路由。 (5)当PE收到***v4路由后,如何将这些***v4路由自动的注入到本地***-instance的BGP表中? 通过RT来实现,***v4路由的注入。路由目标,本质是BGP协议的团体属性,在***v4中称为RT。 (6)RT的特点? RT分为:export-rt和import-rt。每个***-instance可以配置多个ERT和IRT。ERT发送***v4路由时携带。IRT接收***v4路由后,根据***v4路由携带的ERT做匹配,如果匹配则接收该***v4路由,并自动引入路由到匹配的***-instance的BGP表中。 (7)RT的组网规划? 由于每个RT Export Target与import Target都可以配置多个属性,所以可以实现非常灵活的***访问控制。如下:
(8)转发问题,当PE从网络侧收到私网的业务报文时,如何判断使用本地哪个***-instance的路由表执行私网报文转发呢? 在PE传递***v4路由时,由MP-BGP协议为本地的所有***v4路由分配一个本地唯一的私网标签。将私网标签和***v4路由以及ERT,next-hop传递给PE邻居。 私网标签:用于PE从网络侧收到私网报文,根据私网标签判断该报文用本地的哪个***-instance路由表执行转发,MP-BGP产生。公网标签:用在私网报文在公网的LSP中进行转发,LDP协议负责生成,即为BGP路由的下一跳创建LSP即可。 二、BGP/MPLS IP ***基本原理。 1.私网标签分配。 在BGP/MPLS IP ***中,PE通过MP-BGP发布私网路由给骨干网的其他相关的PE前,需要为私网路由分配MPLS标签(私网标签)。当数据包在骨干网传输时,携带私网标签。PE上分配私网标签的方法有如下两种:
基于路由的MPLS标签分配:为***路由表的每一条路由分配一个标签。这种方式的缺点是:当路由数量比较多时,设备入标签映射表ILM(Incoming Label Map)需要维护的表项也会增多,从而提高了对设备容量的要求。基于***实例的MPLS标签分配:为整个***实例分配一个标签,该***实例里的所有路由都共享一个标签。使用这种分配方法的好处是节约了标签。 2.
类型范围unsigned int0~4294967295int-2147483648~2147483647unsigned long0~4294967295long-2147483648~2147483647unsigned long long0 ~ 18446744073709551615long long-9223372036854775808~9223372036854775807__int64-9223372036854775808~9223372036854775807
下载地址:
https://downloads.citrix.com/20485/CitrixStoreFront-x64.exe?gda=exp=1647316056acl=/*hmac=e1d93b68fe499e2bfc52c5d45967fe872c2ff24d424652c321c60e642076ee49
需要Windows Server来安装。
需要下载:Citrix Virtual Apps and Desktops
https://www.citrix.com/zh-cn/downloads/citrix-virtual-apps-and-desktops/product-software/citrix-virtual-apps-and-desktops-1912ltsr-cu4-all-editions.html
https://downloads.citrix.com/19993/Citrix_Virtual_Apps_and_Desktops_7_1912_4000.iso?gda=exp=1647500294acl=/*hmac=d626c304710748f1266085e3cae7ecf9c9a69dfc15b6f85d4779be6a05fa3bc1
文章目录 考试详情一点建议公共基础知识(10分)着重点资源视频教程文档练习题 考试详情 一、选择题 40分
二、程序填空题 18分
三、程序修改题 18分
四、程序设计题 24分
考试时间:120分钟
一点建议 多练习题目,多思考,多总结
易错点是基础部分,请务必打好基础!
越早备考越好,最好有两个月的备考时间;
分清主次,在分值高的地方花更多的时间;
多刷题,特别是操作题;
把做错或者不会的题收藏起来,方便复习;
冲刺阶段争取一天至少做一套全真模拟题;
操作题最好都运行一遍(放心不会扣分的),特别是最后一道一定要运行;
按要求做题,不要乱改做题范围外的东西;
考试时不要慌,C语言考试时间都是充足的。
公共基础知识(10分) 牢固、清晰地掌握基本知识和理论
考试的重点是实际应用和操作,但其前提条件是对基本知识点的掌握。
在复习过程中要注意总结,特别是对一些关系复杂的知识点。
注意一些相关答题技巧,尤其是改错题目。
着重点 1、结构体
2、文件
3、位运算
4、基本数据结构与算法
5、程序设计基础
6、软件工程基础
7、数据库设计基础
8、大量的刷题
资源 计算机等级考试二级公共基础教程
https://pan.baidu.com/s/1DoTpR1xENrZvRT6Bj9LASQ
提取码:0ryh
二级C语言程序设计模拟软件
https://pan.baidu.com/s/1OSjF0668v22OS-bC1H24FA 提取码:life
视频教程 未来教育计算机二级C语言题库视频
计算机全国等级考试二级c语言教程
文档 位运算小结
关于位运算看这个就够了
计算机二级公共基础知识整理(完整版)
2017计算机二级公共基础知识完整
2018年全国计算机等级考试C语言二级公共基础复习资料
练习题 2019年计算机二级公共基础知识模拟试题
全国计算机二级考试公共基础知识题库365题及答案
C语言二级模拟
2019年3月计算机二Access考试操作模拟试题汇总
2019年3月计算机二级C语言考试冲刺练习汇总
2017年计算机二级《C语言》考前冲刺必做试题及答案1 2017年计算机二级《C语言》考前冲刺必做试题及答案2 2017年计算机二级《C语言》考前冲刺必做试题及答案3 2017年计算机二级《C语言》考前冲刺必做试题及答案4
2017年计算机二级《C语言》考前冲刺必做试题及答案5
2017年计算机二级《C语言》考前冲刺必做试题及答案6
2017年计算机二级《C语言》考前冲刺必做试题及答案7
2017年计算机二级《C语言》考前冲刺必做试题及答案8
2017年计算机二级《C语言》考前冲刺必做试题及答案9
2017年计算机二级《C语言》考前冲刺必做试题及答案10
FS核心模块(fileSystem) 在Nodejs中有一个文件系统,对计算机中的文件进行增删改查操作。
在nodejs中我们提供了一个模块,叫做fs模块系统,专门用于操作文件系统。
在nodejs中这个模块是可以直接使用的。
使用 引入文件系统 const fs = require('fs'); 读取文件 fs.readFile(path, options ,(error, data) => {});
此方法用于读取文件,传入三个参数,
第一个参数是文件路径+文件名,相较于自身文件来说
第二个参数是可配置项
第三个参数是回调函数,用于处理文件读取的结果操作,回调接收两个参数,一个是失败到的结果,一个是成功的结果
fs.readFile('../text/demo.txt', (error, data) => { if(error){ console.log('读取失败'); return; } console.log('读取成功\n', data); }); // 读取成功 //<Buffer 2b 20 e8 bf 99 e6 98 af e4 b8 80 e6 ae b5 e8 a2 ab e8 af bb e5 8f 96 e7 9a 84 e6 96 87 e4 bb b6> 注意 在读取成功时,返回的是buffer对象保存的一段16进制的值。可以使用toString()来转成字符串。
方案一 主要有三个步骤:
打开settings找到Version ControlCommit Dialog
方案二 默认情况下的git提交会出现执行代码分析的提示框。
提交之前会弹出下面这个框。
把"Perform code analysis" 和 “Check TODO” 复选框前面的勾去掉就好了.
YOLOv1 YOLOv1是单阶段目标检测方法,不需要像Faster RCNN这种两阶段目标检测方法一样,需要生成先验框。Yolo算法采用一个单独的CNN模型实现end-to-end的目标检测。
整个YOLO目标检测pipeline如上图所示:首先将输入图片resize到448x448,然后送入CNN网络,最后处理网络预测结果得到检测的目标。相比R-CNN系列算法,其是一个统一的框架,其速度更快,而且Yolo的训练过程也是end-to-end的。
具体来说,YOLO将全图划分为 S × S S×S S×S的格子, 每个格子负责对落入其中的目标进行检测,一次性预测所有格子所含目标的边界框、置信度、以及所有类别概率向量。
论文思想
将一幅图像分成SxS个网格,如果某个object的中心落在这个网格中,则这个网络就负责预测这个object每个网格要预测B个bounding box,每个bounding box,除了要预测位置之外,还要附带预测一个confidence值。每个网格还要预测c个类别的分数 网格单元(Grid Cell)
YOLO将目标检测问题作为回归问题。会将输入图像分成 S × S S \times S S×S的网格(cell),如果一个物体的中心点落入到一个cell中,那么该cell就要负责预测该物体,一个格子只能预测一个物体,会生成两个预测框。
对于每个网格单元cell:
YOLOv1会预测两个边界框每个边界框包含5个元素: ( x , y , w , h ) (x,y,w,h) (x,y,w,h) 和 边界框的置信度得分(box confidence score)只负责预测一个目标预测 C C C 个条件概率类别(conditional class probabilities) 为了评估PASCAL VOC,YOLO V1使用 7×7 的网格(S×S),每个单元格回归2个边界框 和 20个条件类别概率。条件类别概率 (conditional class probability) 是检测到的目标属于特定类别的概率(每个单元对每个类别有一个概率)。
最终的预测特征由边框的位置、边框的置信度得分以及类别概率组成,这三者的含义如下:
边框位置:对每一个边框需要预测其中心坐标及宽、高这4个量, 两个边框共计8个预测值 边界框宽度w和高度h用图像宽度和高度归一化。因此 x , y , w , h x, y, w, h x,y,w,h 都在0和1之间。 x x x 和 y y y 是相应单元格的偏移量。 置信度得分(box confidence score) c :框包含一个目标的可能性(objectness)以及边界框的准确程度。类似于Faster RCNN 中是前景还是背景。由于有两个边框,因此会存在两个置信度预测值。类别概率:由于PASCAL VOC数据集一共有20个物体类别,因此这里预测的是边框属于哪一个类别。 一个cell预测的两个边界框共用一个类别预测, 在训练时会选取与标签IoU更大的一个边框负责回归该真实物体框,在测试时会选取置信度更高的一个边框,另一个会被舍弃,因此整张图最多检测出49个物体。
很多人,对国产软件还是存在偏见的吧。
提起国产软件,我们的固有印象便是弹窗、全家桶之流,不仅惹人生厌,还拖慢电脑的运行速度,用一个词来形容,那叫——举步维艰!
不过,我想说的是,也并不是所有的国产软件都这样,流氓软件固然有,但国产良心之作,也不在少数。
比如,今天笔者要说的,三款珍藏已久的国产高质量软件,既靠谱又实用,而且还是纯绿色,可以免费使用的。
Dism++ 众所周知,Windows系统使用久了,电脑运行速度就会降下来。
这时候,如果你再不优化清理系统的话,只会加速电脑的报废进程,而你自己呢,还将深受电脑卡顿的荼毒。
Dismm++
所以,选择一款合适的Windows系统优化清理软件,真的很有必要。
个人认为,CCleaner和Dismm++这两款软件,都是不错的选择,不过,笔者更倾向于使用Dismm++。
Dismm++是一款集启动项管理、系统优化、系统清理、驱动管理等功能于一身的优化软件。
在它这里,除了可以做常规事项,比如文件管理、系统更新、系统修复维护等功能外,你还可以将目光转移到,它最大的亮点“系统热备份热还原”上面来,既简单又高效。
Eversheet Eversheet是一款由原金山WPS研发团队技术骨干,倾力打造的国产无代码开发平台。
作为无代码开发领域的领头羊,Eversheet可以说是一站式解决各种业务需求的软件平台先驱。
Eversheet
不管你是有自主开发SRM、MES、ERP、WMS等各种个性化企业核心业务应用的需求,还是深度复杂场景应用的业务需求,在Eversheet这里,都可以被快速响应。
你只需要花上1-2周的时间,拖拉拽,画表格,就能开发出可配置权限流程,并能解决实际问题的个性化管理软件,并且,当你的业务需求发生变更时,还能根据具体情况进行二次开发,既简单又方便。
财务管理驾驶舱
它不仅是真正意义上的免代码开发神器,而且解决起业务问题来,也是一抓一个准,并不会像其他同类平台那样,在跟你玩“过家家”。
采购入库、生产入库、库存调拨、组合生产、BOM管理、来料加工、工程施工、设备管理、物贸跟单、统计查询、多表关联、多人协同、消息推送、OpenAPI、H5.....等等,常用的业务功能,对于Eversheet来讲,简直就是信手拈来。
就算是深度集成企业微信、数控机床、PDA、SAP、金蝶、微商城这些国内外主流信息系统,也是丝毫不带虚的。
像华为、恒逸石化、许继电气、中国电信、中铁、中冶等知名企业,都在抢着用它!
销售管理驾驶舱
值得一提的是,5并发以内,Eversheet还是可以免费使用的。
iSlide iSlide是一款非常实用的PPT插件。
iSlide
先说重点,它是提供免费主题模板的,支持PPT一键更换段落、字体和色彩,提供各种精美图片和矢量图,可根据文字递进关系,选择相应的PPT页面模板样式,生成可视化的智能图表,以及高级亮眼的动态效果图。
另外,它还支持个性化主题预览,支持逻辑内容具象化等实际应用功能,比方说,列表、目录、循环、梳理、项目数量等等,iSlide不仅支持这些细粒度的设置和预览,还提供相应的样式供你选择。
如果你经常与PPT打交道,那iSlide你绝对不容错过!
小结 磨刀,不误砍柴功。
一款好用的高质量软件,确实能够让你事半功倍,空出更多的时间,做自己喜欢做的事情。
以上三款国产优质软件,拥有了它们,可以让你的效率“蹭蹭上涨”,电脑好用数倍不止!
文|Mondy
前言 目录
共享内存的数据结构共享内存函数命令行查看共享内存实验:server与client通信注意点 System V, 曾经也被称为 AT&T System V,是Unix操作系统众多版本中的一支
System V引入了三种高级进程间的通信机制:消息队列、共享内寸和信号量
共享内存是最快速的进程间通信方式,原因在于进行通信的进程pcb的地址空间的共享区同时映射到了一块物理内存上,通过虚拟地址直接找到访问上面的数据;这些进程间数据传递不再涉及到内核的系统接口的调用
在申请了共享内存,进程1、进程2分别挂接对应的共享内存到自己的地址空间,可以正常通信了
而基于管道的进程间通信,则需要调用read、write等系统接口。写端将数据先写入到内核的文件缓冲区,读端从缓冲区进行读取,这些操作都是要调用系统接口的。
换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据。
1.共享内存的数据结构 struct shmid_ds { struct ipc_perm shm_perm; /* operation perms */ int shm_segsz; /* size of segment (bytes) */ __kernel_time_t shm_atime; /* last attach time */ __kernel_time_t shm_dtime; /* last detach time */ __kernel_time_t shm_ctime; /* last change time */ __kernel_ipc_pid_t shm_cpid; /* pid of creator */ __kernel_ipc_pid_t shm_lpid; /* pid of last operator */ unsigned short shm_nattch; /* no.
经常分不清,整理下
df主要是检查文件系统磁盘占用情况,所以这里可以看到文件系统
du主要是检查磁盘空间占用情况,统计目录或者文件大小的,和ll功能有相同之处。
fdisk一般用来磁盘分区,也可以用来查看磁盘分区情况。
这里可以看到/dev/sdb和/dev/sda两个磁盘,/dev/sdb1和/dev/sda1是其中的分区。
但是在df命令中看不到/dev/sda,因为/dev/sda上面没有跑文件系统,如果想看所有的磁盘分区需要用这个命令。
lsblk命令用于列出所有可用块设备的信息,而且还能显示他们之间的依赖关系,这个命令很好用,因为可以让电脑上的磁盘和分区信息很清晰。
这四个命令在装系统的时候使用很频繁,所以需要区分场景,结合使用。
接到任务需要做漏扫,但是客户要求提供固定IP报备,公司出口IP都是做nat地址池,是随机的。所以想到了使用VPS做正向代理转发的方式。以下介绍两种在linux上的代理工具的配置方法。
1.tinyproxy。 Tinyproxy 是一个面向 POSIX 系统开发的轻量级的开源 HTTP/HTTPS 代理守护进程,其从底层开始进行设计,保证了在高速的同时体积依然很小。
#安装 yum -y install tinyproxy #编辑配置文件 vim etc/tinyproxy/tinyproxy.conf #设置端口 Port 5200 #注释掉所有Allow关键字 #Allow 192.168.0.0/16 #Allow 172.16.0.0/12 #Allow 10.0.0.0/8 #开启服务 service tinyproxy start #查看服务状态 service tinyproxy status #停止服务 service tinyproxy stop #重启服务 service tinyproxy restart 另外,记得在VPS安全组中放行相应的端口。但是tinyproxy只能代理http和https的流量,其他协议的代理无法代理。
2.ss5安装和配置。 采用socks协议的代理服务器就是SOCKS服务器,是一种通用的代理服务器。Socks 不要求应用程序遵循特定的操作系统平台,Socks 代理与应用层代理、 HTTP 层代理不同,Socks 代理只是简单地传递数据包,而不必关心是何种应用协议(比如FTP、HTTP和NNTP请求)。所以,Socks代理比其他应用层代理要快得多。
#下载 wget https://nchc.dl.sourceforge.net/project/ss5/ss5/3.8.9-8/ss5-3.8.9-8.tar.gz #解压安装文件 tar xzf ss5-3.8.9-8.tar.gz cd ss5-3.8.9 #安装相关依赖 yum -y install gcc gcc-c++ automake make pam-devel openldap-devel cyrus-sasl-devel #检查配置 .
目录
vue2和vue3的vue-route
vuex
vuex模块化
微信小程序的授权登录
小程序版:
nui版:
父子组件传值
宏任务与微任务
async和awite优化promise
深拷贝
面向对象与面向过程的本质的区别
vue 中v-if 和 vi-for为什么不能一起使用
电商中spu和sku?
一、什么是SPU?
二、什么是SKU?
v-html和v-text
xss攻击原理
arguments
vue生命周期中created和mounted有什么区别?
找出数组中出现最多的数字
消元法
水平居中 行内元素
块级元素
方案一:(分宽度定不定两种情况)
找出数组中的重复数据
上传,修改头像的使用
Vue-router路由中的导航守卫和拦截器(Axios)之间的区别
VueRouter-router 与 route 区别
手写简易的ajax请求
递归
vue路由跳转的几种方式
Js 添加、复制、移除、移动、创建和查找节点
1、document.createDocumentFragment() //创建一个 DOM 片段
document.createDocumentFragment()
2、document.createElement() //创建一个具体的元素
3、createTextNode() //创建一个文本节点
二、)添加、移除、替换、插入
2、removeChild() //移除
三)查找
什么是闭包?闭包的优缺点
es6的新增特性
class与class继承
async await
Git
http和https的区别
三次握手和四次挥手
使用基于token的登录流程
Get和post的区别
web安全及防护
html和XML-
This的指向
箭头函数与普通函数的区别
localStorage、sessionStorage 和 Cookie 区别及用法