begin

cross socket tcp客户端开发

喜你入骨 提交于 2019-11-27 10:27:45
cross socket tcp客户端开发 uses Net.SocketAPI, Net.CrossSocket.Base, Net.CrossSocket FCrossTcp: ICrossSocket; ICrossSocket说明 CROSS SOCKET的TCP服务端和客户端都是使用ICrossSocket。 接收消息事件 procedure TForm1.OnReceived(Sender: TObject; AConnection: ICrossConnection; ABuf: Pointer; ALen: Integer); begin TThread.Queue(nil, procedure begin var ms: tstream := TMemoryStream.Create; ms.Size := ALen; ms.Write(ABuf^, ALen); ms.Position := 0; var ms2: tstream := TMemoryStream.Create; tzip.UnZipStream(ms, ms2); //unzip ms.Free; ms2.Position := 0; var pack: tmsgpack := TMsgPack.Create; pack.DecodeFromStream(ms2); case pack

Django 自定义分页

给你一囗甜甜゛ 提交于 2019-11-27 10:22:22
Django 自定义分页 定一个一个类 # 说明 #1.通过传入对应的参数,自动生成html标签代码 ,并返回,前段只需接收并渲染显示即可 #2.请注意标签内的网址接口,如更改,请修改对应的值 class PageInfo: def __init__(self, cur_page, total, per_page=10, show_page=11): self.cur_page = cur_page self.per_page = per_page self.total = total self.show_page = show_page a, b = divmod(self.total, self.per_page) if b: a = a + 1 self.total_page = a #### 总页数 #### 获取起始索引 def get_start(self): start = (self.cur_page - 1) * self.per_page return start #### 获取结束索引 def get_end(self): return self.cur_page * self.per_page def get_page(self): half = (self.show_page - 1) // 2 #### taotal_page = 5 < show

Linux awk命令

拈花ヽ惹草 提交于 2019-11-27 08:27:53
awk printf 格式化输出 [root@localhost ~]# printf ‘输出类型输出格式’ 输出内容 输出类型: %ns 输出字符串。n 是数字指代输出几个字符 %ni 输出整数。n 是数字指代输出几个数字 % m.nf 输出浮点数。m 和 n 是数字,指代输出的整数位数和小数位数。如%8.2f代表共输出 8 位数,其中 2 位是小数,6 位是整数。 输出格式 \a 输出警告声音 \b 输出退格键,也就是 Backspace 键 \f 清除屏幕 \n 换行 \r 回车,也就是 Enter 键 \t 水平输出退格键,也就是 Tab 键 \v 垂直输出退格键,也就是 Tab 键 创建一个student.txt方便演示(有强迫症的可以加空格) [root@localhost ~]# vi student.txt ID Name PHP Linux MySQL Average 1 Liming 82 95 86 87.66 2 Sc 74 96 87 85.66 3 Tg 99 83 93 91.66 不指定输出格式,没有\n和\t看着挺糙 [root@localhost ~]# printf '%s' $(cat student.txt) IDNamegenderPHPLinuxMySQLAverage1LimingM82958687.662ScM74968785

Latex数学公式中的矩阵

拜拜、爱过 提交于 2019-11-27 05:05:11
目录 矩阵的括号形式 array环境 上三角矩阵 分块矩阵 行内矩阵 矩阵的括号形式 使用 matrix 、 pmatrix 、 bmatrix 、 Bmatrix 、 vmatrix 或者 Vmatrix 环境: $$ \begin{gathered} \begin{matrix} 0 & 1 \\ 1 & 0 \end{matrix} \quad \begin{pmatrix} 0 & -i \\ i & 0 \end{pmatrix} \quad \begin{bmatrix} 0 & -1 \\ 1 & 0 \end{bmatrix} \quad \begin{Bmatrix} 1 & 0 \\ 0 & -1 \end{Bmatrix} \quad \begin{vmatrix} a & b \\ c & d \end{vmatrix} \quad \begin{Vmatrix} i & 0 \\ 0 & -i \end{Vmatrix} \end{gathered} $$ \[ \begin{gathered} \begin{matrix} 0 & 1 \\ 1 & 0 \end{matrix} \quad \begin{pmatrix} 0 & -i \\ i & 0 \end{pmatrix} \quad \begin{bmatrix} 0 & -1 \\ 1 & 0

delphi 多线程3

痴心易碎 提交于 2019-11-27 05:03:45
多线程程序设计  我们知道,win95或winNT都是“多线程”的操作系统,在DELPHI 2.0中,我们可以充分利用这一特性,编写出“多线程”的应用程序。   对以往在DOS或16位windows下写程序的人来说,“多线程”仍然是陌生的,但如同以前我们从DOS下的单任务过渡到windows3.1下的多任务,如今我们又必须过渡到“多线程”领域,毕竟计算机时代是在不断发展的。不过,幸运的是,在DELPHI2.0下进行多线程程序设计并不需要我们去学习庞大的WIN32API函数,我们可以利用DELPHI下标准的多线程类TThread来完成我们的工作。   TThread是一个abstract(抽象)类,也就是说,并不需要根据TThread来声明变量(而且根据TThread声明的变量也是完全无用),我们要做的是把TThread作为基类,用继承的形式来生成子类。实际上,根据TThread来写多线程应用程序是非常容易的。   下面就是一个基本的继承TThread生成的多线程类。   QuerThrd.Pas   unitQuerThrd;   interface   uses   Classes,DBTables;   type   TQueryThreadΚclass(TThread)   private   fQuery:tQuery;   protected  

牛客 可见山峰对数量

六眼飞鱼酱① 提交于 2019-11-27 05:02:56
题目链接: https://www.nowcoder.com/practice/80d076bcea594b86ba55b913de4c069d?tpId=101&tqId=33170&tPage=1&rp=1&ru=/ta/programmer-code-interview-guide&qru=/ta/programmer-code-interview-guide/question-ranking 题目大意   略。 分析   当 N = 1 时,答案为 0。   当 N = 2 时,答案为 1。   当 N 大于等于 3 时,对于每座既不是第一高也不是第二高的山,这座山再左右两边能分别找到最近比它高的山,如果我们只让矮的山去找大的山,那么每座山的贡献就为 2 对(其余包含这座山的可见山峰对将由比当前山矮的山找到),那么对于每座既不是第一高也不是第二高的山,它们的总贡献为 2 * (N - 2),再加上第一高的山和第二高的山组成的一对,总共答案就是 2 * N - 3 对。 代码如下 1 #include <bits/stdc++.h> 2 using namespace std; 3 4 #define INIT() ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); 5 #define Rep(i,n) for (int i

delphi 文件夹操作

半世苍凉 提交于 2019-11-27 04:57:29
文件的拖放和打开拖拽 user shellapi type TForm1 = class(TForm) ListView1: TListView; procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } procedure AppMessage(var Msg: TMsg; var Handled: Boolean);///////消息处理函数 end; procedure TForm1.FormCreate(Sender: TObject); begin //设置需要处理文件WM_DROPFILES拖放消息 DragAcceptFiles(ListView1.Handle, TRUE); //设置AppMessage过程来捕获所有消息 Application.OnMessage := AppMessage; end; procedure TForm1.AppMessage(var Msg: TMsg; var Handled: Boolean); var nFiles, I: Integer; Filename: string; ListItem: TListItem; begin // // 注意!所有消息都将通过这里! //

<c:forEach>标签的使用 JSTL

蹲街弑〆低调 提交于 2019-11-27 04:16:02
转自: http://blog.sina.com.cn/s/blog_638adf340100gp3z.html <c:forEach items= "unitList" var= "element" varStatus= "status" > <c:out value= "Index: ${status.index}. Count: ${status.count}" /> </c:forEach> would produce: Index: 0 Count: 1 Index: 1 Count: 2 Index: 2 Count: 3 在 JSP 的开发中,迭代是经常要使用到的操作。例如,逐行的显示查询的结果等。在早期的 JSP 中,通常使用 Scriptlets 来实现 Iterator 或者 Enumeration 对象的迭代输出。现在,通过 JSTL 的迭代标签可以在很大的程度上简化迭代操作。 JSTL所支持的迭代标签有两个,分别是<c:forEach>和<c:forTokens>。在这里介绍的是<c:forEach>标签。 简单点说,<c:forEach>标签的作用就是迭代输出标签内部的内容。它既可以进行固定次数的迭代输出,也可以依据集合中对象的个数来决定迭代的次数。 <c:forEach>标签的语法定义如下所示。 <c:forEach var="name" items=

贪心算法 区间问题

坚强是说给别人听的谎言 提交于 2019-11-27 03:30:41
1. 单区间调度问题 问题定义:存在单一资源,有一组以时间区间形式表示的资源请求reqs={req-1, req-2, …, req-n},第i个请求希望占用资源一段时间来完成某些任务,这段时间开始于begin(i)终止于end(i)。如果两个请求req-i和req-j在时间区间上没有重叠,则说这两个请求是相容的,求出这组请求的最大相容子集(最优子集)。举个例子:有一间多媒体课室,某一个周末有多个社团想要申请这间课室去举办社团活动,每个社团都有一个对应的申请时间段,比如周六上午8:00-10:00。求出这间课室在这个周末最多能满足几个社团的需求。 解决方案:贪心算法,优先选择最早结束的需求,确保资源尽可能早地被释放,把留下来满足其他需求的时间最大化。具体伪代码如下所示,算法结束后集合A中会保留所有相容请求,A的大小即是最大相容数量。 初始化R是所有需求的集合, A 为空集 对R中的需求Ri,根据结束时间从早到晚排序 for Ri in R, do if Ri与 A 中的请求相容 A = A 并Ri endIf endFor return A 上述伪代码的C++实现如下 #include <iostream> #include <algorithm> #include <vector> using namespace std ; const int MAX_SIZE = 100 ;

HGOI20190812 题解

吃可爱长大的小学妹 提交于 2019-11-27 03:08:34
  Task 1 辩论 有N 个参加辩论的候选人,每个人对这两个议题都有明确的态度,支持或反对。 作为组织者,小D 认真研究了每个候选人,并给每个人评估了一个非负的活跃度, 他想让活跃度之和尽可能大。 选出的候选人必须满足以下两个条件: 1. 至少有一半的人支持议题1。 2. 至少有一半的人支持议题2。 小D 想知道,在满足以上两个条件的情况下,活跃度之和最大是多少。 对于$ 100\%$ 的数据,$ N \leq 4 \times 10^5,0 ≤ Ai ≤ 5 \times 10^3 $ Sol : 首先$11$的全部都可以选,然后将$01$ 和 $10$排序,依次选取,把一组最大的$10$和$10$当做$11$处理, 剩余的情况就是$10$或$01$ $00$,这样子显然会让一个数逐渐的趋向于小于Sum/2,所以这个时候直接就挑权值大的数找即可。   复杂度是$O(n \ log_2 \ n)$ # include<bits/stdc++.h> # define int long long using namespace std; vector<int>a1,a2,a3,a4,tmp; int n; signed main() { scanf("%lld",&n); for (int i=1;i<=n;i++) { int op,v; scanf("%lld%lld",&op