首页 文章 精选 留言 我的

精选列表

搜索[模板引擎],共10012篇文章
优秀的个人博客,低调大师

python的Socket网络编程 使用模板

相关说明 本文给出的是TCP协议的Socket编程。 其中用了一个dbmanager数据库操作模块,这个模块是我自己定义的,可以在我的另一个文章中找到这个模块的分享。python操作mysql数据库的精美实用模块 服务段完整代码 【如下代码,完全复制,直接运行,即可使用】 import socket import threading import json from tools import dbmanager #这个模块是我自定义的,可以在我的另一个文章中找到这个模块的分享 ################################### ####服务器参数 #################################### HOST = '0.0.0.0' #ip 0.0.0.0 表示本机所有ip地址 PORT = 9905 #端口号 Max_Listen =10 #最大监听数 BUFSIZ = 1024 #每次接收数据长度 ENDMARK = "messageover" #信息结束标记 #################################### ####业务处理函数 #################################### def searchuser(sock, dict_data): the_searchstring = dict_data['par'] #########构造sql语句 sqlstring0 = "SELECT * FROM hr_user WHERE id>0 " if the_searchstring != None and the_searchstring != "": sqlstring0 = sqlstring0 + " AND (username LIKE '%" + the_searchstring + "%')" ########执行数据库查询 data0 = dbmanager.executeSelectAllback(sqlstring0) if data0 == False: message = {'action': 'Error_SqlConnet'} sock.sendall(json.dumps(message).encode("utf-8")) ####发送数据给客户端 return if data0 != None: message = {'action': 'SearchUser_Success'} message['data'] = data0 sock.sendall(json.dumps(message).encode("utf-8")) ####发送数据给客户端 return #################################### ####线程处理函数 #################################### def readRequest(sock, addr): print('Accept new connection from %s:%s...' % addr) allresponse = "" while True: ########接收数据 data = sock.recv(BUFSIZ).decode('utf-8') if len(data): allresponse = allresponse + data if ENDMARK not in allresponse: continue if allresponse == "": break ########处理数据 allresponse =allresponse[:-len(ENDMARK)] dict_data = json.loads(allresponse) action = dict_data['action'] if action == "SearchUser": searchuser(sock, dict_data) #业务处理 break elif action == "SearchCompany": break #业务处理 else: break ########关闭连接 sock.close() print('Connection from %s:%s closed.' % addr) #################################### #程序入口 #################################### if __name__ == "__main__": #####创建一个socket the_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # AF_INET指定使用IPv4协议 #SOCK_STREAM指定使用面向流的TCP协议 #####绑定端口 the_socket.bind((HOST, PORT)) #####监听端口 the_socket.listen(Max_Listen) print('Waiting for connection...') while True: # 接受一个新连接 sock, addr = the_socket.accept() # 创建新线程来处理TCP连接 the_thread = threading.Thread(target=readRequest, args=(sock, addr)) the_thread.start() #################################### 客户端完整代码 【如下代码,完全复制,直接运行,即可使用】 import socket import json ############################################################################################# ####参数 ############################################################################################# HOST = '127.0.0.1' PORT = 9905 BUFSIZ = 1024 ENDMARK = "messageover" ############################################################################################# #######请求处理函数 ############################################################################################# def issueRequest(action, par): # 创建一个socket the_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 建立连接: try: the_socket.connect((HOST, PORT)) except: print("服务器连接失败!") return ############################# try: ########发送数据: message = {} message['action'] = action message['par'] = par last_message = json.dumps(message) + ENDMARK # son.dumps()将 Python 对象编码成 JSON 字符串 print(message) the_socket.sendall(last_message.encode("utf-8")) ########接收数据 allresponse = "" while True: response = the_socket.recv(BUFSIZ).decode('utf-8') if len(response): allresponse = allresponse + response continue if allresponse == "": break #######处理数据 dict_data = json.loads(allresponse) # json.loads()将已编码的 JSON 字符串解码为 Python 对象 action = dict_data['action'] if action == "SearchUser_Success": data0 = dict_data['data'] print(data0) break elif action == "Error_SqlConnet": print("数据查询失败!") break else: break except: print("服务器连接异常,数据查询失败!") finally: #######关闭连接 the_socket.close() #################################### #程序入口 #################################### if __name__ == "__main__": the_searchstring ="张三" issueRequest("SearchUser", the_searchstring) 本文如有帮助,敬请留言鼓励。 本文如有错误,敬请留言改进。

优秀的个人博客,低调大师

pyqt5的runJavaScript 使用模板

runJavaScript 的说明 QWebEnginePage 有一个 runJavaScript 方法,支持回调函数。 使用方法1 只运行JavaScript,没有回调 def run_js(self): js_string = ''' alert("hello,world!"); ''' self.webview.page().runJavaScript(js_string) 使用方法2 运行JavaScript,并存在回调 def run_js2(self): js_string = ''' function myFunction() { return document.body.scrollWidth; } myFunction(); ''' self.webview.page().runJavaScript(js_string , self.js_callback) # 回调函数 def js_callback(self,result): print(result) QMessageBox.information(self, "提示", str(result)) 完整代码,如下所示。 【如下代码,完全复制,直接运行,即可使用】 import sys from PyQt5.QtWidgets import * from PyQt5.QtCore import * from PyQt5.QtWebEngineWidgets import QWebEngineView ################################################ #######创建主窗口 ################################################ class MainWindow(QMainWindow): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.setWindowTitle('My Browser') self.showMaximized() #####放入WebEngineView self.webview = WebEngineView() self.webview.load(QUrl("https://www.baidu.com")) self.setCentralWidget(self.webview) #####web页面加载完毕,调用函数 self.webview.page().loadFinished.connect(self.run_js) self.webview.page().loadFinished.connect(self.run_js2) ########运行js脚本,没有回调######## def run_js(self): js_string = ''' alert("hello,world!"); ''' self.webview.page().runJavaScript(js_string) ########运行js脚本,有回调######## def run_js2(self): js_string = ''' function myFunction() { return document.body.scrollWidth; } myFunction(); ''' self.webview.page().runJavaScript(js_string , self.js_callback) # 回调函数 def js_callback(self,result): print(result) QMessageBox.information(self, "提示", str(result)) ################################################ #######创建浏览器 ################################################ class WebEngineView(QWebEngineView): windowList = [] # 重写createwindow() def createWindow(self, QWebEnginePage_WebWindowType): new_webview = WebEngineView() new_window = MainWindow() new_window.setCentralWidget(new_webview) #new_window.show() self.windowList.append(new_window) #注:没有这句会崩溃 return new_webview ################################################ #######程序入门 ################################################ if __name__ == "__main__": app = QApplication(sys.argv) w = MainWindow() w.show() sys.exit(app.exec_()) 本文如有帮助,敬请留言鼓励。 本文如有错误,敬请留言改进。

优秀的个人博客,低调大师

11.C++(标准模板库,详细)

(创建于2018/1/2) #ifndef _ITERATOR_DEBUG_LEVEL #define _ITERATOR_DEBUG_LEVEL 0 #else #undef _ITERATOR_DEBUG_LEVEL #define _ITERATOR_DEBUG_LEVEL 0 #endif #include <iostream> #include <string> #include <algorithm> //算法 using namespace std; //STL standard template libary 标准模(mu)板库 C++一部分,编译器自带 //Android NDK支持 //java.lang java.util包中API,java的一部分 //string初始化 void main() { //string由c字符串衍生过来的 string s1 = "craig david"; string s2("7 days"); string s3 = s2; string s4(10,'a'); cout << s4 << endl; system("pause"); } //string遍历 void main() { string s1 = "craig david"; // ^ //1 数组方式 for (int i = 0; i < s1.length(); i++) { cout << s1[i] << endl; } //2 迭代器指针 for (string::iterator it = s1.begin(); it != s1.end(); it++) { cout << *it << " "; } cout << endl; //3 at函数(charAt) // 可能会抛出异常 try { for (int i = 0; i < s1.length() + 3; i++) { cout << s1.at(i) << " "; } } catch (...) { cout << "异常" << endl; } system("pause"); } //string字符串->c字符串转换 void main() { //string -> char* string s1 = "walking away"; const char* c = s1.c_str(); printf("%s\n",c); // string s2 = c; //string->char[] //从string中赋值字符到char[] char arr[50] = {0}; s1.copy(arr,4,0); cout << arr << endl; system("pause"); } //字符串拼接 void main() { string s1 = "alan"; string s2 = "jackson"; //1. string s3 = s1 + s2; string s4 = " pray"; //2. s3.append(s4); cout << s3 << endl; system("pause"); } //字符串查找替换 void main() { string s1 = "apple google apple iphone"; //从0开始查找"google"的位置 int idx = s1.find("google", 0); cout << idx << endl; //统计apple出现的次数 int idx_app = s1.find("apple",0); //npos大于任何有效下标的值 int num = 0; //npos: 如果作为一个返回值(return value)表示没有找到匹配项 while (idx_app != string::npos) { num++; cout << "找到的索引:" << idx_app << endl; idx_app+=5; idx_app = s1.find("apple", idx_app); } cout << num << endl; system("pause"); } void main() { string s1 = "apple google apple iphone"; //0-5(不包含5)替换为jobs s1.replace(0, 5, "jobs"); cout << s1 << endl; //所有apple替换为jobs int idx = s1.find("apple", 0); while (idx != string::npos) { s1.replace(idx, 5, "jobs"); idx += 5; idx = s1.find("apple", idx); } cout << s1 << endl; system("pause"); } //删除(截取)和插入 void main() { string s1 = "apple google apple iphone"; //删除a,找到a所在的指针 string::iterator it = find(s1.begin(),s1.end(),'g'); //只能删除一个字符 s1.erase(it); //开头末尾插入字符串 s1.insert(0, "macos"); s1.insert(s1.length(), " facebook"); cout << s1 << endl; system("pause"); } //java StringBuffer才可变 //String 不可变 //大小写转换 void main() { string s1 = "JASON"; //原始字符串的起始地址,原始字符串的结束地址, 目标字符串的起始地址, 函数名称 transform(s1.begin(), s1.end()-1,s1.begin(), tolower); cout << s1 << endl; transform(s1.begin(), s1.end() - 1, s1.begin(), toupper); cout << s1 << endl; system("pause"); } //----------------------------------------- //容器 //Vector //初始化 #include <vector> void printVector(vector<int> &v) { //通过数组的方式遍历 for (int i = 0; i < v.size(); i++) { cout << v[i] << endl; } } void main() { //1. vector<int> v1; v1.push_back(20); v1.push_back(40); v1.push_back(15); v1.push_back(7); //2. vector<int> v2 = v1; //3.部分复制 vector<int> v3(v1.begin(),v1.begin()+2); printVector(v3); system("pause"); } //添加 删除 void main() { //添加到结尾 vector<int> v1; v1.push_back(20); v1.push_back(40); v1.push_back(15); v1.push_back(7); //访问头部 v1.front() = 11; //访问尾部 v1.back() = 90; //删除结尾的元素 //v1.pop_back(); while (v1.size() > 0) { cout << "末尾的元素:" << v1.back() << endl; v1.pop_back(); } printVector(v1); system("pause"); } //数组的方式 void main() { vector<int> v1; v1.push_back(20); v1.push_back(40); v1.push_back(15); v1.push_back(7); v1[2] = v1[2] +10; //容器等价于动态数组 vector<int> v2(10); for (int i = 0; i < v2.size(); i++) { v2[i] = i + 1; } printVector(v2); system("pause"); } //迭代器遍历 //迭代器的种类(正向,反向迭代器) void main() { vector<int> v1; v1.push_back(20); v1.push_back(40); v1.push_back(15); v1.push_back(7); //正向 for (vector<int>::iterator it = v1.begin(); it < v1.end(); it++) { cout << *it << endl; } cout << "-----------------" << endl; //反向迭代 for (vector<int>::reverse_iterator it = v1.rbegin(); it < v1.rend(); it++) { cout << *it << endl; } system("pause"); } //删除 void main() { vector<int> v1(10); for (int i = 0; i < v1.size(); i++) { v1[i] = i + 1; } //删除指定位置 vector<int>::iterator it = v1.begin(); it += 3; v1.erase(it); //distance(v1.begin(), it); //删除区间 v1.erase(v1.begin(), v1.begin() + 3); for (vector<int>::iterator it = v1.begin(); it < v1.end(); it++) { if (*it == 5) { printf("%x\n", it); vector<int>::iterator tmp = v1.erase(it); //注意以后开发中编译器版本问题 printf("%x,%x\n",it,tmp); } } //插入 v1.insert(v1.begin() + 2, 100); v1.insert(v1.end() - 1, 200); printVector(v1); system("pause"); } //双向队列 #include <deque> void printDeque(deque<int>& q) { for (int i = 0; i < q.size(); i++) { cout << q[i] << endl; } } void main() { deque<int> d1; //添加到尾部 d1.push_back(2); d1.push_back(10); //添加到头部 d1.push_front(-90); d1.push_front(-30); //printDeque(d1); //cout << d1.front() << endl; //cout << d1.back() << endl; //两个方向弹出 //d1.pop_back(); //d1.pop_front(); printDeque(d1); //查找第一个-90元素索引位置,无需遍历 deque<int>::iterator it = find(d1.begin(),d1.end(),-90); if (it != d1.end()) { int idx = distance(d1.begin(), it); cout << "索引位置为:" << idx << endl; } system("pause"); } //数据结构 算法 分离 //Collections.shuff sort

优秀的个人博客,低调大师

MongoDB 安全 checklist 及最优配置模板

云数据库 MongoDB 版 基于飞天分布式系统和高性能存储,提供三节点副本集的高可用架构,容灾切换,故障迁移完全透明化。并提供专业的数据库在线扩容、备份回滚、性能优化等解决方案。 了解更多 最近 MongoDB “赎金事件”闹得沸沸扬扬,不少公网上裸奔的 MongoDB 中招,有兴趣的同学可以看下耗子叔写的从 MONGODB “赎金事件” 看安全问题,中招的主要原因还是因为用户的安全意识比较薄弱,部署的 MongoDB 完全没有任何安全防护,可以通过公网访问,并且没有开启鉴权。 MongoDB 官方文档在安全方面做了很多总结,出了一个MongoDB Security Checklist,但从这次中招的规模来看,大部分用户并没有认真看过这个文档,这次事件也刚好是一个数据库安全科普的好机会,希望所有的数据库用户都要重视自己的数据安全。 Mon

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册