Deep seek学习日记1
Deepseek最强大的就是它的深度思考,并且展现了它的思考过程。
五种可使用Deep seek的方式(应该不限于这五种,后续嵌入deepseek的应该更多,多了解一点因为官网容易崩~~):
1.deep seek官网
2.硅基流动siliconflow
3.秘塔(深度思考)
4.sider
5.chatbox
今天学了deepseek做几个小游戏,很有意思。官网和硅基流动都无法直接运行代码,sider和秘塔有“运行”按钮。对deepseek进行简单的提问“做一个消消乐小游戏”或“做一个贪吃蛇小游戏”,deepseek会展示深度思考的过程,然后给出代码。为了使得游戏设计更有意思(好上手玩),比如贪吃蛇游戏,要求“进一步改进代码,呈现UI界面,包含“开始”按钮”、“结束”按钮、“上下左右”按钮、以及能够统计分数”。
silicon flow中嵌入deepseek写消消乐小游戏(要求生成UI界面)
import pygame
import random# 游戏常量配置
WIDTH, HEIGHT = 400, 450
BLOCK_SIZE = 40
GAP = 2
ROWS = 8
COLS = 8
COLORS = [(255, 0, 0), # 红(0, 255, 0), # 绿(0, 0, 255), # 蓝(255, 255, 0), # 黄(255, 165, 0)] # 橙def create_board():"""创建初始游戏面板"""return [[random.randint(0, len(COLORS)-1) for _ in range(COLS)] for _ in range(ROWS)]def find_matches(board):"""查找所有可消除的方块"""matches = set()# 横向检查for row in range(ROWS):for col in range(COLS - 2):if board[row][col] == board[row][col+1] == board[row][col+2]:matches.update([(row, col), (row, col+1), (row, col+2)])# 纵向检查for col in range(COLS):for row in range(ROWS - 2):if board[row][col] == board[row+1][col] == board[row+2][col]:matches.update([(row, col), (row+1, col), (row+2, col)])return matchesdef drop_blocks(board):"""处理方块下落和新方块生成"""for col in range(COLS):# 收集该列有效方块column = [board[row][col] for row in range(ROWS) if board[row][col] != -1]# 生成新列(补充新方块)new_column = [-1]*(ROWS - len(column)) + column# 更新游戏面板for row in range(ROWS):board[row][col] = new_column[row] if new_column[row] != -1 else random.randint(0, len(COLORS)-1)def draw_board(screen, board, score):"""绘制游戏界面"""screen.fill((30, 30, 30))# 绘制得分font = pygame.font.SysFont(None, 36)text = font.render(f'Score: {score}', True, (255, 255, 255))screen.blit(text, (10, HEIGHT-40))# 绘制方块for row in range(ROWS):for col in range(COLS):color_idx = board[row][col]if color_idx == -1:continuex = col * (BLOCK_SIZE + GAP)y = row * (BLOCK_SIZE + GAP)pygame.draw.rect(screen, COLORS[color_idx], (x, y, BLOCK_SIZE, BLOCK_SIZE))def main():pygame.init()screen = pygame.display.set_mode((WIDTH, HEIGHT))pygame.display.set_caption("消消乐")clock = pygame.time.Clock()board = create_board()selected = Nonescore = 0running = Truewhile running:draw_board(screen, board, score)pygame.display.flip()clock.tick(30)for event in pygame.event.get():if event.type == pygame.QUIT:running = Falseif event.type == pygame.MOUSEBUTTONDOWN:x, y = pygame.mouse.get_pos()col = x // (BLOCK_SIZE + GAP)row = y // (BLOCK_SIZE + GAP)if 0 <= row < ROWS and 0 <= col < COLS:if selected is None:selected = (row, col)else:# 判断是否相邻row1, col1 = selectedif (abs(row - row1) == 1 and col == col1) or (abs(col - col1) == 1 and row == row1):# 交换方块board[row][col], board[row1][col1] = board[row1][col1], board[row][col]# 检查消除matches = find_matches(board)if not matches:# 无效交换,换回来board[row][col], board[row1][col1] = board[row1][col1], board[row][col]else:# 处理连续消除while matches:# 移除匹配方块for (r, c) in matches:board[r][c] = -1score += len(matches)# 方块下落和新方块生成drop_blocks(board)# 检查新的消除matches = find_matches(board)selected = Noneelse:selected = None # 取消选择pygame.quit()if __name__ == "__main__":main()
deepseek官网写消消乐小游戏
import os
import random
from collections import dequeclass PuzzleGame:def __init__(self, size=8):self.size = sizeself.board = []self.score = 0self.colors = ['★', '◆', '●', '▲', '♠', '♦'] # 不同符号表示颜色self.directions = [(0, 1), (1, 0), (0, -1), (-1, 0)] # 移动方向def create_board(self):"""初始化游戏棋盘"""self.board = [[random.choice(self.colors) for _ in range(self.size)] for _ in range(self.size)]# 确保初始棋盘没有现成匹配while self.find_matches():self.board = [[random.choice(self.colors) for _ in range(self.size)] for _ in range(self.size)]def print_board(self):"""打印游戏界面"""os.system('cls' if os.name == 'nt' else 'clear')print(f"当前分数: {self.score}\n")print(" " + " ".join(str(i) for i in range(self.size)))for i, row in enumerate(self.board):print(f"{i} |" + " ".join(row) + "|")def get_swap(self):"""获取用户输入的交换位置"""while True:try:coords = input("\n输入交换坐标 (格式:x1 y1 x2 y2): ").split()if len(coords) != 4:raise ValueErrorx1, y1, x2, y2 = map(int, coords)if self.is_valid_swap(x1, y1, x2, y2):return (x1, y1), (x2, y2)print("无效交换!必须相邻且坐标有效")except (ValueError, IndexError):print("输入格式错误,示例:2 3 2 4")def is_valid_swap(self, x1, y1, x2, y2):"""验证是否为相邻交换"""if not (0 <= x1 < self.size and 0 <= y1 < self.size):return Falseif not (0 <= x2 < self.size and 0 <= y2 < self.size):return Falsereturn abs(x1 - x2) + abs(y1 - y2) == 1 # 曼哈顿距离为1def swap_tiles(self, pos1, pos2):"""交换两个格子"""(x1, y1), (x2, y2) = pos1, pos2self.board[x1][y1], self.board[x2][y2] = self.board[x2][y2], self.board[x1][y1]# 如果没有产生消除,则交换回来if not self.find_matches():self.board[x1][y1], self.board[x2][y2] = self.board[x2][y2], self.board[x1][y1]return Falsereturn Truedef find_matches(self):"""查找所有可消除项"""matches = []# 横向检测for i in range(self.size):j = 0while j < self.size - 2:if self.board[i][j] == self.board[i][j+1] == self.board[i][j+2] != ' ':start = jwhile j < self.size and self.board[i][start] == self.board[i][j]:j += 1if j - start >= 3:matches.extend([(i, col) for col in range(start, j)])else:j += 1# 纵向检测for j in range(self.size):i = 0while i < self.size - 2:if self.board[i][j] == self.board[i+1][j] == self.board[i+2][j] != ' ':start = iwhile i < self.size and self.board[start][j] == self.board[i][j]:i += 1if i - start >= 3:matches.extend([(row, j) for row in range(start, i)])else:i += 1return list(set(matches)) # 去重def remove_matches(self, matches):"""消除匹配项并计分"""for x, y in matches:self.board[x][y] = ' 'self.score += len(matches) * 10 # 每个消除项10分def drop_tiles(self):"""下落填充空位"""for j in range(self.size):column = [self.board[i][j] for i in range(self.size) if self.board[i][j] != ' ']column = [' '] * (self.size - len(column)) + columnfor i in range(self.size):self.board[i][j] = column[i]def refill_board(self):"""补充新的元素"""for i in range(self.size):for j in range(self.size):if self.board[i][j] == ' ':self.board[i][j] = random.choice(self.colors)def has_possible_moves(self):"""检测是否还有可能的移动"""for i in range(self.size):for j in range(self.size):for dx, dy in self.directions:ni, nj = i + dx, j + dyif 0 <= ni < self.size and 0 <= nj < self.size:# 尝试交换self.board[i][j], self.board[ni][nj] = self.board[ni][nj], self.board[i][j]if self.find_matches():self.board[i][j], self.board[ni][nj] = self.board[ni][nj], self.board[i][j]return Trueself.board[i][j], self.board[ni][nj] = self.board[ni][nj], self.board[i][j]return Falsedef play(self):"""主游戏循环"""self.create_board()while True:self.print_board()if not self.has_possible_moves():print("\n游戏结束!无更多可移动步骤")breakpos1, pos2 = self.get_swap()if self.swap_tiles(pos1, pos2):while True:matches = self.find_matches()if not matches:breakself.remove_matches(matches)self.drop_tiles()self.refill_board()self.print_board()if __name__ == "__main__":game = PuzzleGame()game.play()
|
silicon flow中嵌入deepseek写贪吃蛇小游戏(要求生成UI界面)
import tkinter as tk
from tkinter import messagebox
import randomclass SnakeGameUI:def __init__(self, master):self.master = masterself.master.title("贪吃蛇游戏")# 游戏配置self.cell_size = 20self.width = 30 # 格子数量self.height = 30self.speed = 500 # 游戏速度(ms)# 游戏状态self.snake = [(self.width//2, self.height//2)]self.direction = (0, 1)self.food = self.generate_food()self.score = 0self.game_over = False# 创建界面self.create_widgets()self.bind_keys()self.start_game()def create_widgets(self):"""创建界面组件"""# 游戏画布self.canvas = tk.Canvas(self.master,width=self.width*self.cell_size,height=self.height*self.cell_size,bg='black')self.canvas.grid(row=0, column=0, columnspan=3)# 控制面板self.btn_up = tk.Button(self.master, text="↑", command=lambda: self.change_direction((0, -1)))self.btn_left = tk.Button(self.master, text="←", command=lambda: self.change_direction((-1, 0)))self.btn_right = tk.Button(self.master, text="→", command=lambda: self.change_direction((1, 0)))self.btn_down = tk.Button(self.master, text="↓", command=lambda: self.change_direction((0, 1)))self.btn_up.grid(row=1, column=1, sticky="ew")self.btn_left.grid(row=2, column=0, sticky="ew")self.btn_right.grid(row=2, column=2, sticky="ew")self.btn_down.grid(row=2, column=1, sticky="ew")# 分数标签self.lbl_score = tk.Label(self.master, text=f"得分: {self.score}", font=('Arial', 14))self.lbl_score.grid(row=3, column=0, columnspan=3)def bind_keys(self):"""绑定键盘事件"""self.master.bind('<Up>', lambda e: self.change_direction((-1, 0)))self.master.bind('<Down>', lambda e: self.change_direction((1, 0)))self.master.bind('<Left>', lambda e: self.change_direction((0, -1)))self.master.bind('<Right>', lambda e: self.change_direction((0, 1)))def generate_food(self):"""生成食物位置"""while True:x = random.randint(0, self.width-1)y = random.randint(0, self.height-1)if (x, y) not in self.snake:return (x, y)def change_direction(self, new_dir):"""改变移动方向"""# 禁止直接反向移动if (new_dir[0] != -self.direction[0] or new_dir[1] != -self.direction[1]):self.direction = new_dirdef draw(self):"""绘制游戏元素"""self.canvas.delete("all")# 绘制蛇for i, (x, y) in enumerate(self.snake):color = 'lime' if i == 0 else 'green'self.canvas.create_rectangle(x*self.cell_size, y*self.cell_size,(x+1)*self.cell_size, (y+1)*self.cell_size,fill=color, outline='black')# 绘制食物fx, fy = self.foodself.canvas.create_oval(fx*self.cell_size, fy*self.cell_size,(fx+1)*self.cell_size, (fy+1)*self.cell_size,fill='red', outline='darkred')# 更新分数self.lbl_score.config(text=f"得分: {self.score}")def move(self):"""处理移动逻辑"""if self.game_over:return# 计算新头部位置head_x, head_y = self.snake[0]dx, dy = self.directionnew_head = (head_x + dx, head_y + dy)# 碰撞检测if (new_head in self.snake or new_head[0] < 0 or new_head[0] >= self.width ornew_head[1] < 0 or new_head[1] >= self.height):self.game_over = Truemessagebox.showinfo("游戏结束", f"游戏结束!得分: {self.score}")self.master.destroy()returnself.snake.insert(0, new_head)# 吃食物检测if new_head == self.food:self.score += 10self.food = self.generate_food()else:self.snake.pop()self.draw()self.master.after(self.speed, self.move)def start_game(self):"""开始游戏循环"""self.draw()self.master.after(self.speed, self.move)if __name__ == "__main__":root = tk.Tk()game = SnakeGameUI(root)root.mainloop()
用deep seek官网写贪吃蛇小游戏(要求生成UI界面)
import tkinter as tk
from tkinter import messagebox
import random
import json
import osclass SnakeGame:def __init__(self, master):self.master = masterself.master.title("贪吃蛇游戏")# 游戏配置self.cell_size = 25self.width = 20self.height = 20self.speed = 500self.score = 0self.high_score = 0# 游戏状态self.snake = []self.direction = (0, 1)self.food = Noneself.game_active = False# 初始化界面self.create_widgets()self.load_high_score()self.reset_game()def create_widgets(self):"""创建游戏界面"""# 控制面板control_frame = tk.Frame(self.master)control_frame.pack(pady=10)# 游戏控制按钮self.btn_start = tk.Button(control_frame, text="开始游戏", command=self.start_game, width=10)self.btn_stop = tk.Button(control_frame, text="结束游戏", command=self.stop_game, state=tk.DISABLED, width=10)self.btn_start.pack(side=tk.LEFT, padx=5)self.btn_stop.pack(side=tk.LEFT, padx=5)# 方向控制按钮dir_frame = tk.Frame(self.master)dir_frame.pack(pady=5)self.btn_up = tk.Button(dir_frame, text="↑", command=lambda: self.change_direction((-1, 0)))self.btn_left = tk.Button(dir_frame, text="←", command=lambda: self.change_direction((0, -1)))self.btn_right = tk.Button(dir_frame, text="→", command=lambda: self.change_direction((0, 1)))self.btn_down = tk.Button(dir_frame, text="↓", command=lambda: self.change_direction((1, 0)))self.btn_up.grid(row=0, column=1, padx=3)self.btn_left.grid(row=1, column=0, padx=3)self.btn_right.grid(row=1, column=2, padx=3)self.btn_down.grid(row=1, column=1, padx=3)# 游戏画布self.canvas = tk.Canvas(self.master,width=self.width*self.cell_size,height=self.height*self.cell_size,bg="#2E2E2E")self.canvas.pack(pady=10)# 分数显示score_frame = tk.Frame(self.master)score_frame.pack()self.lbl_score = tk.Label(score_frame, text=f"当前得分: {self.score} 最高得分: {self.high_score}",font=("微软雅黑", 12))self.lbl_score.pack()def load_high_score(self):"""加载历史最高分"""if os.path.exists("snake_highscore.json"):try:with open("snake_highscore.json", "r") as f:data = json.load(f)self.high_score = data.get("high_score", 0)except:passdef save_high_score(self):"""保存最高分"""with open("snake_highscore.json", "w") as f:json.dump({"high_score": self.high_score}, f)def reset_game(self):"""重置游戏状态"""self.snake = [(self.width//2, self.height//2)]self.direction = (0, 1)self.food = self.generate_food()self.score = 0self.update_score()def generate_food(self):"""生成食物"""while True:x = random.randint(0, self.width-1)y = random.randint(0, self.height-1)if (x, y) not in self.snake:return (x, y)def change_direction(self, new_dir):"""改变方向"""if self.game_active and (new_dir[0] != -self.direction[0] or new_dir[1] != -self.direction[1]):self.direction = new_dirdef draw(self):"""绘制游戏元素"""self.canvas.delete("all")# 绘制蛇for i, (x, y) in enumerate(self.snake):color = "#4CAF50" if i == 0 else "#8BC34A"self.canvas.create_rectangle(x*self.cell_size, y*self.cell_size,(x+1)*self.cell_size, (y+1)*self.cell_size,fill=color, outline="#2E7D32")# 绘制食物fx, fy = self.foodself.canvas.create_oval(fx*self.cell_size+2, fy*self.cell_size+2,(fx+1)*self.cell_size-2, (fy+1)*self.cell_size-2,fill="#FF5252", outline="#D32F2F")def update_score(self):"""更新分数显示"""self.lbl_score.config(text=f"当前得分: {self.score} 最高得分: {self.high_score}")def move(self):"""移动蛇"""if not self.game_active:return# 计算新头部位置head_x, head_y = self.snake[0]dx, dy = self.directionnew_head = (head_x + dx, head_y + dy)# 碰撞检测if (new_head in self.snake or not (0 <= new_head[0] < self.width) ornot (0 <= new_head[1] < self.height)):self.game_over()returnself.snake.insert(0, new_head)# 吃食物if new_head == self.food:self.score += 10if self.score > self.high_score:self.high_score = self.scoreself.save_high_score()self.food = self.generate_food()self.update_score()else:self.snake.pop()self.draw()self.master.after(self.speed, self.move)def start_game(self):"""开始游戏"""if not self.game_active:self.reset_game()self.game_active = Trueself.btn_start.config(state=tk.DISABLED)self.btn_stop.config(state=tk.NORMAL)self.move()def stop_game(self):"""结束游戏"""if self.game_active:self.game_active = Falseself.btn_start.config(state=tk.NORMAL)self.btn_stop.config(state=tk.DISABLED)messagebox.showinfo("游戏结束", f"游戏已结束!本次得分: {self.score}")def game_over(self):"""游戏结束处理"""self.game_active = Falseself.btn_start.config(state=tk.NORMAL)self.btn_stop.config(state=tk.DISABLED)messagebox.showinfo("游戏结束",f"游戏失败!最终得分: {self.score}\n历史最高分: {self.high_score}")self.draw()if __name__ == "__main__":root = tk.Tk()game = SnakeGame(root)root.mainloop()
今天就记录到这里。
`
相关文章:

Deep seek学习日记1
Deepseek最强大的就是它的深度思考,并且展现了它的思考过程。 五种可使用Deep seek的方式(应该不限于这五种,后续嵌入deepseek的应该更多,多了解一点因为官网容易崩~~): 1.deep seek官网 2.硅基流动silicon…...
乐理笔记(持续更新)
单音与音程 单音:由一个音组成。 音程:由两个音组成,表示两个音之间的音高距离。 如何数音程: 单音程:9 - X,性质相反。例如,9度音程减去某个数,性质会相反。 复音程:…...

【动态路由】系统Web URL资源整合系列(后端技术实现)【nodejs实现】
需求说明 软件功能需求:反向代理功能(描述:apollo、eureka控、apisix、sentinel、普米、kibana、timetask、grafana、hbase、skywalking-ui、pinpoint、cmak界面、kafka-map、nacos、gateway、elasticsearch、 oa-portal 业务应用等多个web资…...
PHP高效、轻量级表格数据处理库 OpenSpout ,很好用
OpenSpout 是一个高效、轻量级的 PHP 库,用于处理电子表格文件(如 Excel 和 CSV)。它支持读取和写入大型文件,且内存占用低。本文将详细介绍如何安装和使用 OpenSpout。 目录 安装 基本使用 高级功能 参考文档 安装 OpenSp…...
2010年上半年软件设计师考试上午真题的知识点整理(附真题及答案解析)
以下是2010年上半年软件设计师考试上午真题的知识点分类整理,涉及定义的详细解释,供背诵记忆。 1. 计算机组成原理 CPU与存储器的访问。 Cache的作用: 提高CPU访问主存数据的速度,减少访问延迟。存储器的层次结构: 包括寄存器、Cache、主存和…...
EventSource的使用
什么是EventSource EventSource 是一个用于服务器推送事件(Server-Sent Events, SSE)的接口,它允许服务器推送实时更新到浏览器。与 WebSocket 不同,SSE 是单向的(服务器到客户端),适用于更新频…...
【第12章:深度学习与伦理、隐私—12.3 深度学习模型的透明性与可解释性提升策略】
凌晨三点的ICU病房,AI辅助诊断系统将一位患者的肺炎误判为普通感冒——当主治医生要求查看诊断依据时,系统只能给出冷冰冰的概率数值。这场惊心动魄的误诊事件,掀开了深度学习可解释性危机的冰山一角。 一、模型透明的"第一性原理" 1.1 可解释性的三维度量 
java八股文-mysql
1. 索引 1.1 什么是索引 索引(index)是帮助Mysql高效获取数据的数据结构(有序).提高数据的检索效率,降低数据库的IO成本(不需要全表扫描).通过索引列对数据进行排序,降低数据排序成本,降低了CPU的消耗. 1.2 mysql索引使用的B树? 1. 没有使用二叉树,最坏情况o&…...

Cherno C++ P55 宏
这篇文章我们讲一下C当中的宏。其实接触过大型项目的朋友可能都被诡异的宏折磨过。 宏是在预处理当中,通过文本替换的方式来实现一些操作,这样可以不用反复的输入代码,帮助我们实现自动化。至于预处理的过程,其实就是文本编辑&am…...
MybatisMybatisPllus公共字段填充与配置逻辑删除
Mybatis/MybatisPllus公共字段填充与配置逻辑删除 在开发过程中,很多时候需要处理一些公共字段,例如:创建时间、修改时间、状态字段等。这些字段通常会在插入或更新数据时进行填充,以便记录数据的变化和状态。同时,逻…...

VS Code User和System版区别【推荐使用System版本】and VSCode+Keil协同开发之Keil Assistant
VS Code User和System版区别 Chapter1 VS Code User和System版区别1. 对于安装而言2. 结束语 Chapter2 VS Code 安装、配置教程及插件推荐插件: Chapter3 VSCodeKeil协同开发之Keil Assistant1. 效果展示2. Keil Assistant简介3. Keil Assistant功能特性4. 部署步骤…...
MongoDB:listDatabases failed : not master and slaveOk=false
个人博客地址:MongoDB:listDatabases failed : not master and slaveOkfalse | 一张假钞的真实世界 异常描述 如果在MongoDB的SECONDARY上查询数据时会报如下错误信息: > show databases; 2018-09-20T17:40:55.3770800 E QUERY [thread…...

Python的那些事第二十二篇:基于 Python 的 Django 框架在 Web 开发中的应用研究
基于 Python 的 Django 框架在 Web 开发中的应用研究 摘要 Django 是一个基于 Python 的高级 Web 框架,以其开发效率高、安全性和可扩展性强等特点被广泛应用于现代 Web 开发。本文首先介绍了 Django 的基本架构和核心特性,然后通过一个实际的 Web 开发项目案例,展示了 Dj…...
【ISO 14229-1:2023 UDS诊断(会话控制0x10服务)测试用例CAPL代码全解析④】
ISO 14229-1:2023 UDS诊断【会话控制0x10服务】_TestCase04 作者:车端域控测试工程师 更新日期:2025年02月15日 关键词:UDS诊断、0x10服务、诊断会话控制、ECU测试、ISO 14229-1:2023 TC10-004测试用例 用例ID测试场景验证要点参考条款预期…...

图论入门算法:拓扑排序(C++)
上文中我们了解了图的遍历(DFS/BFS), 本节我们来学习拓扑排序. 在图论中, 拓扑排序(Topological Sorting)是对一个有向无环图(Directed Acyclic Graph, DAG)的所有顶点进行排序的一种算法, 使得如果存在一条从顶点 u 到顶点 v 的有向边 (u, v) , 那么在排序后的序列中, u 一定…...
【CXX】2 CXX blobstore客户端说明
本示例演示了一个调用blobstore服务的C客户端的Rust应用程序。事实上,我们会看到两个方向的调用:Rust到C以及C到Rust。对于您自己的用例,您可能只需要其中一个方向。 示例中涉及的所有代码都显示在此页面上,但它也以可运行的形式提…...

HTTP相关面试题
HTTP/1.1、HTTP/2、HTTP/3 演变 HTTP/1.1 相比 HTTP/1.0 提高了什么性能? HTTP/1.1 相⽐ HTTP/1.0 性能上的改进: 使⽤长连接的⽅式改善了 HTTP/1.0 短连接造成的性能开销。⽀持管道(pipeline)网络传输,只要第⼀个请…...
关于XML映射器的基本问题
前言 XML 映射器是 MyBatis 中用于定义 SQL 语句及其与 Java 对象映射关系的 XML 文件。它通过 XML 配置将数据库操作与 Java 代码分离,使 SQL 语句更易维护和管理。 主要作用 定义 SQL 语句:在 XML 中编写 SQL 查询、插入、更新和删除操作。 映射结果…...

【MyBatis】预编译SQL与即时SQL
目录 1. 以基本类型参数为例测试#{ }与${ }传递参数的区别 1.1 参数为Integer类型 1.2 参数为String类型 2. 使用#{ }传参存在的问题 2.1 参数为排序方式 2.2 模糊查询 3. 使用${ }传参存在的问题 3.1 SQL注入 3.2 对比#{ } 与 ${ }在SQL注入方面存在的问题 3.3 预编译…...

手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...

【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...

3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险
C#入门系列【类的基本概念】:开启编程世界的奇妙冒险 嘿,各位编程小白探险家!欢迎来到 C# 的奇幻大陆!今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类!别害怕,跟着我,保准让你轻松搞…...