自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 收藏
  • 关注

原创 utf8和utf8mb4字符集

mysql的utf8,能支持3字节的utf8。但4字节的utf8来了,mysql的utf8无法支持,会导致截断问题。所以要把表格和列的字符集设置为utf8mb4。而mysql由于历史原因,不能修改已发布的数据库,来完美的兼容utf8。有个玩家取了个名字,名字里带柠檬的图片。在发邮件的时候,要把玩家名字拼装成json格式,存储在mysql表中。C++代码和python代码处理都是正常的,但是调用pymysql的接口,执行sql写入到mysql时。原因是这张图片是utf8的,并且占用4个字节。

2023-10-20 21:07:49 326

原创 使用mysql接口遇到点问题

game_server加入了dbstorage的代码。dbstorage实现了与mysql的交互:driver_mysql。其中调用了mysql相关的接口。所以game_server需要链接libmysql.lib。编译libmysql.lib和libmysql.dll,放入到工程中,启动game_server时,又遇到了点问题。从官网下载了mysql的源码:在用cmake构建mysql工程的时候,遇到了一些问题。报错提示中,所需要的版本。下载解压后,在cmake中填写。缺少boost库,从官网。

2023-07-30 02:46:24 487

原创 db性能优化

为什么这么写的原因有点不太确定了,回忆了下,大概是一开始是轮询模式,避免tick触发太频繁,所以每20ms判断1次。后面改为阻塞模式,没有去掉这个time.sleep(0.2)。导致执行命令时,总有20多ms的耗时。提升蛮多的,但是要注意如果在commit之前出错了,要捕获异常,在处理异常中,执行commit(),否则会出现命令未提交的现象。锁越多的代码,锁住的时间就越久。所以在实现功能的情况下,锁越少的代码越好。pymysql多次execute(),一次commit()插入战报、log的操作有点慢,

2023-06-26 13:26:28 732

原创 Stable Diffusion

正向另外,你可能会看到别人发的 Tag 里面会有一些符号?比如大小括号等等。这属于进阶用法,这里仅仅简单提及一下。以 girl 这个 Tag 作为例子。

2023-05-29 00:18:05 883

原创 excel文档操作

关闭灰色。

2023-03-27 11:02:45 161

原创 unity小知识

xlua中监听Toggle的OnValueChange事件

2022-09-18 21:35:22 1201

原创 linux多线程调试

linux多线程调试

2022-09-06 11:47:59 574

原创 LeetCode Hot100-05(中等)

5、最长回文子串给你一个字符串s, 找到s中最长的回文子串。解题思路:首先最简单的,用 暴力法 是可以解决这个问题的。假设给定的字符串s是abcdcbe,首先枚举出字符串所有的组合:a、ab、abc、abcd… …、b、bc、bcd…然后一次判断每个字符串是否是回文字符串,并且求出字符串的长度。统计所有长度,并筛选出长度最长的那个回文字符串。但是枚举所有的字符串组合,时间复杂度是 O(N^2),判断字符串是否回文字符串,时间复杂度是 O(N),所以整体时间复杂度是 O(N^3)。

2022-03-28 00:32:35 366

原创 LeetCode-Hot100-70(容易)

解题思路斐波那契数列递归 : f(n) = f(n-1) + f(n-2)n>=2循环爬楼梯假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?class Solution {public: int climbStairs(int n) { int fn2 = 0; int fn1 = 1; int fn = 0; for(int i=1.

2022-02-23 23:41:50 160

原创 LeetCode Hot100-53(容易)

解题思路53.最大子数组和给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。示例1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的 分治法 求解class Solution {public: int maxSubArray(vector.

2022-02-23 23:02:21 159

原创 LetCode Hot100-21(容易)

解题思路:递归21. 合并两个有序链表将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。ListNode* MergeList(ListNode* ld1,ListNode* ld2){ if(!ld1){return ld2;} if(!ld2){return ld1;} ListNode* pHead = nullptr; if(ld1->val > ld2->val){ pHead = ld2; pHead-&g

2022-02-23 22:32:27 171

原创 LeetCode Hot100-20(容易)

20. 有效的括号给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:1. 左括号必须用相同类型的右括号闭合。2. 左括号必须以正确的顺序闭合。解题思路栈 + unordered_map<char,char>栈:先进后出的特性,来实现左括号和右括号的闭合。unordered_map<char,char>来记录{(,)}、{[,]}、{{,}}class Solution {public:

2022-02-23 00:27:04 146

原创 C#数组排序

需要继承IComparerclass Point{ public Point(int temp){ x = temp; } public Int32 x; public override string ToString(){ return x.ToString(); }}public class PointComparer : IComparer<Point>{ public int Compare(Poin

2022-02-17 17:32:13 190

原创 python捕获特定类型的异常

import sysdef WorkFunction(): raise NameError("WorkFunction")def main(): try: WorkFunction() except Exception as e: exc_type, exc_value, exc_traceback_obj = sys.exc_info() print( "exc_type:%s" % exc_type) pri

2022-01-18 13:34:34 696

原创 LeetCode Hot100-070

70.爬楼梯假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。解题思路:很明显,斐波那契数列递归方法就不写了效率低,重复计算。n的值太大时,可能栈溢出。非递归方法,用循环+临时变量解决。class Solution {public: int climbStairs(int n) { int fn_2 = 0; int fn_1 = 1;

2021-10-27 01:57:53 109

原创 LeetCode Hot100-053

53. 最大子序和给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。解题思路:[-2,1,-3,4,-1,2,1,-5,4]f(i) [-2,1,-2,4,3,5,6,-1,4]f(i)的值只和f(i-1)和i有关系class Solution {public: int maxSubArray(vector<int>& nums) { int preMax = nums[0];

2021-10-27 01:49:59 105

原创 vs远程调试功能

菜单栏>Visual Studio 2015>Visual Studio Tools>Remote Debugger Folder>x64>msvsmon.exe双击运行msvsmon.exe工具>选项>无身份验证>勾选允许任何用户进行调试>确定到远程的vs2015工程中,点击项目game_server>属性>调试>要启动的调试器>选择:远程Windows调试器工作目录:D:\project\bin\server远程服务

2021-10-14 20:53:12 295

原创 db系统遇到的问题

1、py运行导致linux的CPU满了,在内网的时候,一台linux服务器布置了20个左右db脚本。CPU负载较高,首先排第一的是redis进程,其次排第二的是mysql进程。最后是一堆py进程。那么观察哪个py进程占用的cpu较大,检查该py脚本对应的服务器数据。发现缓存缓存数据有点异常,设置的缓存数量是2,但是最高的那个服务器缓存了130条,所以应该是哪里有bug。随后检查代码,修正bug。2、mgr和game都引用了lisstorage,show tables命令进入request队列,由于r

2021-08-26 16:36:29 886

原创 Unity塔防游戏

Unity塔防游戏第一课:制作预制体、材质第二课:制作地图第三课:制作路径第四课:摄像机第一课:制作预制体、材质Tall布局One Column Layout创建Scenes文件夹,存放MainScenes创建Material文件夹,存放各种材质创建Plane作为整个游戏的地表在Material文件夹中,创建一个Plane的材质,赋予给主场景中的Plane,调节材质颜色为金黄色土地。地面有点儿放光,调节Plane材质的属性smoothness,设置为0或者1,我选择设置为1。去掉主场景中P

2021-08-23 00:45:37 7177 4

原创 01、u3d自学课程

1,《如何使用unity开发坦克大战》:【siki学院】https://www.bilibili.com/video/av29751762?spm_id_from=333.788.b_636f6d6d656e74.222,《如何使用unity制作塔防游戏》:【siki学院】https://www.bilibili.com/video/av29784743?spm_id_from=333.788.b_636f6d6d656e74.233,《如何使用unity开发古迹探险》:【siki学院】https://

2021-08-22 01:49:00 450 1

原创 LeetCode Hot100-04

4. 寻找两个正序数组的中位数给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。解题思路:我的第一遍代码提交,实现了功能。但是看完官方题解以后,我感觉我是来捣乱的。1:不能使用std已经实现的方法。vector的insert()和sort()。class Solution {public: double findMedianSortedArrays(vector<int>& nums1, v

2021-08-20 09:21:44 183

原创 快速排序C++实现

快速排序C++实现代码C++实现代码bool QuickSort(int* array,int len,int left,int right){ if(!array){return false;} if(len<=0 || left>right || left<0 || right<0){return false;} int base = array[left]; int ldx=left,rdx=right; int chg = 0; while(ldx<r

2021-08-19 18:59:19 128

原创 git使用

这里写目录标题配置文件路径一、The requested URL returned error: 4031:remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.2、如何生成自己的token二、OpenSSL SSL_read: Connection was reset, errno 10054配置文件路径C:\Users

2021-08-18 23:37:03 176

原创 03、Unity动画状态机Animator使用

一、Animator组件先选中对应的预制体,然后按快捷键(Ctrl+6)呼出Animation窗口。这里写目录标题一、Animator组件二、Controller动画控制文件三、Animation Clip文件四、动画状态机 状态1、Entry状态2、Any状态3、Exit状态二、Controller动画控制文件三、Animation Clip文件四、动画状态机 状态1、Entry状态2、Any状态3、Exit状态...

2021-08-18 19:06:21 1431

原创 4.rapidjson的使用

// rapidjson/example/simpledom/simpledom.cpp`#include “rapidjson/document.h”#include “rapidjson/writer.h”#include “rapidjson/stringbuffer.h”#include using namespace rapidjson;int main() {// 1. 把 JSON 解析至 DOM。const char* json = “{“project”:“rapidjso

2021-08-03 09:56:37 314

原创 sql注入

select * from t_role where user="account" and password="123456"如果user是:" or 1==1 #select * from t_role where user="account" and password="123456"会变成select * from t_role where user="" or 1==1 #" and password="123456"符号#在msyql中是注释符,#后面的字符数直接被注释。相当于

2021-08-03 09:54:31 69

原创 5.clumsy工具模拟网络延迟

clumsy 模拟网络丢包延迟简介特色:下载功能使用clumsy 能在 Windows 平台下人工造成不稳定的网络状况,方便你调试应用程序在极端网络状况下的表现。简介利用封装 Winodws Filtering Platform 的WinDivert 库, clumsy 能实时的将系统接收和发出的网络数据包拦截下来,人工的造成延迟,掉包和篡改操作后再进行发送。无论你是要重现网络异常造成的程序错误,还是评估你的应用 程序在不良网络状况下的表现,clumsy 都能让你在不需要额外添加代码的情况下,在系统层

2021-07-15 18:19:08 1035 1

原创 3.战斗:技能和buff实现方案

状态是一个可叠加的数据,比如buff-1给玩家A添加了2s时长的眩晕,buff-2给玩家A添加了10s的眩晕。当buff-1的时长到了以后,此时不能直接将眩晕的状态清除掉,而是将眩晕状态的层数减1。当10s的时长到了以后,再减去眩晕的层数,此时层数为0,会清掉眩晕状态。如上图所示:玩家A释放了一个傀儡B,玩家C攻击了傀儡B,傀儡B正在攻击玩家D。p11的技能是由玩家释放的,客户端上传UseSkill的消息到服务器。技能&buff仅仅是框架,提供安装、触发、拆卸事件的功能。事件对于技能&buff是通用的。

2021-07-14 13:17:36 2655

转载 proto3和proto2的区别

转自:https://solicomo.com/network-dev/protobuf-proto3-vs-proto2.htmlproto3和proto2的区别1、在第一行非空白非注释行,必须写2、字段规则移除了 “required”,并把 “optional” 更名为 “singular”1;3、“repeated”字段默认采用 packed 编码;4、语言扩展5、移除了 default 选项;6、枚举类型的第一个字段必须为 0 ;这也是一个约定。7、移除了对分组的支持;8、旧代码在解析新增字段时,

2021-06-29 18:42:19 1242

原创 LeetCode Hot100-02

2、两数相加给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例1:解题思路:1、我用的比较粗糙的解题方法: - 直接遍历两个链表,直到两个链表为空,并且最右的节点相加,val值不超过10(超过10导致进位,需要再创建一个新节点)。/** * Definition for singly-linked

2021-06-14 17:33:08 73

原创 LeetCode Hot100-03

3、无重复字符的最长子串给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。int lengthOfLongestSubstring(string s) { int curLength = 0; int maxLength = 0; int *prePos = new int[128]; // 记录26个字母,上次出现在字符串中的idx; for(int i=0;i<128;++i) {

2021-06-10 07:40:51 116

原创 LeetCode Hot100-01(容易)

1、两数之和给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。解题思路:1、先排序1遍整数数组nums,排序用快排的话,时间复杂度是O(N*LogN)2、在排序后的数组中,用两个指针left和right分别指向数组的首部和尾部。3、判断分析nums[left] + nums[right] 和

2021-06-10 06:27:05 67

原创 牛客刷题提高排名

今天做牛客时,查看排名前面的一些代码,发现他们都在全局定义了下面代码static const auto io_sync_off = [](){ // turn off sync std::ios::sync_with_stdio(false); // untie in/out streams std::cin.tie(nullptr); return nullptr;}();这是c++11中的Lambda表达式,定义了一个静态函数io_sync_off,关于

2021-06-06 22:21:26 269

原创 6.linux下获取ip地址(C++代码)

方法一:#include <stdio.h>#include <unistd.h>#include <netdb.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>int main() { char hname[128]; struct hostent *hent; int i; gethostn

2021-05-17 11:10:55 4612

原创 YcStorageLib编码问题

encode(“utf-8”)表示将数据以utf-8格式,编码为二进制数据,decode()将二进制数据解码为字符串。以utf-8编码的二进制数据,解码也要utf-8格式,否则解析出来的数据会是乱码。二进制数据解码为json字符串,如果json字符串中包含\0,yclib库解析会提前阶段,导致数据不对。可以将二进制数据解码的json字符串,用base64编码,然后存储到redis中。api层从redis中取出base64编码的字符串,用base64解码还原为字符串。再通过rapidjson.

2020-12-18 10:00:32 77

原创 ssh连接不成功

一、问题描述原来的ssh版本是5.3,ssh -VOpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010升级以后的版本是7.4OpenSSH_7.4p1, OpenSSL 1.0.1u 22 Sep 2016升级以后服务器原来的代码都连接不上sftp,出现Algorithm negotiation fail SSH in Jenkins等问题,用python写了一个paramiko的测试程序也出现问题,可以确认是安全级别的问题二、解决办法vi /etc/s

2020-12-16 09:50:17 979

原创 3.背包问题

0-1背包问题现在有一个小偷,要从商店偷走一些物品。这些物品只能选择带走,或者不带走(要么0,要么1)。物品一共有n件,第i件商品的重量是Wi,价值是Vi。小偷的背包只能带走Wj斤的物品。求应该带走哪几样物品,使得价值最高。部分背包问题背景和上述一致,但是这次小偷可以带走物品的一部分,而不是必须带走1个完整的物品。可以理解为:0-1背包问题中:物品是金锭、银锭、铜锭。部分背包问题中:物品是金沙、银沙、铜沙。解决方案贪心算法可以求解【部分背包问题】,但是不能解决【0-1背包问题】

2020-12-07 23:44:15 387

原创 迪杰斯特拉算法(Dijkstra)

迪杰斯特拉算法图的某个顶点到另一顶点的最短路径算法为什么提出两个核心点?实际用例图的某个顶点到另一顶点的最短路径算法核心点1:顶点与顶点之间,权值不能是负数。核心点2:每次取起点到其它顶点路径权值最小的点,加入到确认列表中。如上图所示,求顶点A到顶点F的最短路径。假设有2个列表:确认列表{A}待确认列表{B、C、D、E、F}取出本次路径权值最小的点:C因为本次求出的是A点到所有点的权值,在所有点的权值中取出了最小权值点,那么就可以确认:从A点到C点的距离,最短的路径就是AC=2无法

2020-12-06 00:35:33 431

原创 使用hiredis报错LNK2005

项目的db中使用了redis+python+mysql的存储方案,在编译redis库的时候,Win32_Interop.lib与项目中原有的net.lib有编译冲突,net.lib引用了ws2_32.lib,导致tcp的几个接口bind()、accept()报重复定义的错误。解决方案 :修改了redis的源码,hiredis.lib和Win32_Interop.lib的源代码使用了网络接口的地方,都将函数重命名了一下,bind()、accept()接口全部加了后缀_redis,再导出Win32_Int.

2020-12-01 19:50:22 639

原创 redis相关知识

1、Win32_Interop.lib中的bind()、accept()与ws2_32.lib重复定义(手机拍照图片)解决方案 : 给hiredis.lib和Win32_Interop.lib的源代码修改下,bind()、accept()接口通通加了后缀_redis,再导出lib后,编译正常。2、编译出来的x64会连接不上redis,原因是redisConnect()调用了底层的tcp连接,没有全部修改有遗漏,全部修改后,再编译hiredis.lib导出后,问题解决。3、x64环境下,redi.

2020-11-19 17:14:35 195

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除