分类 后端技术 下的文章

编程语言中高级特性:委托

形象的理解什么是委托 顾名思义,委托,把事情托付给他人或机构(办理)。诸如:“当事人委托律师出庭辩护”,“我能委托你办一件事吗”。总的来说就是委托方将具体的事情交给被委托方来做, 委托方不关心具体过程,只关心开始和结果。被委托方执行具体内容即可。 委托的使用会经历如下的过程 委托的声明: 定义委托内容中需要什么,达到什么样的效果。定义出庭辩护 编写委托方法: 按照定义的标准, 详细制定委托...

继续阅读 »

/bin/sh^M: bad interpreter:解决办法

/bin/sh^M: bad interpreter:解决办法 xcode编译时有时候遇到/bin/sh^M: bad interpreter:没有那个文件或目录这样的错误 可以用以下方式解决 先在控制台cd到报错的目录 vim xxx.sh # xxx.sh报错的那个文件 :set ff # 如果出现fileforma=dos那么就基本可以确定是这个问题了。 :set ff=unix # ...

继续阅读 »

记一次线上更换系统:涉及到java7 rpm deb 32位 64位

由于目标程序依赖java7,但是java7版本官方未维护了,且大多数源中都不提供7版本的了 众所周知,java7安装需要非常多的依赖,ubuntu22.04安装非常麻烦,搞了半天最终还是放弃了。 然而,目标程序只有openfire-3.10.3-1.i386.rpm集成了java7可以直接使用,但是ubuntu中无法安装32位的rpm程序。 错误:the package cannot be ...

继续阅读 »

.NET Core诊断工具及其用法

.NET CLI命令 本地和全局管理工具 诊断工具 代码分析工具 实战演练 其他工具 核心转储(core dump)是操作系统在进程收到某些信号而终止运行时,将此时进程地址空间的内容以及有关进程状态的其他信息写出的一个磁盘文件(进程内存的快照)。这种信息往往用于调试(事后调试)。 扩展阅读 官方文档: .NET CLI 概述 官方文档: 如何管理 .NET 工具 官方文档: .NET Cor...

继续阅读 »

C#网络编程系列文章(tcpserver,udpserver)

概述 Socket实现异步TCP服务器 Socket实现同步TCP服务器 TcpListener实现异步TCP服务器 TcpListener实现同步TCP服务器 Socket实现异步UDP服务器 Socket实现同步UDP服务器 UdpClient实现异步UDP服务器 UdpClient实现同步UDP服务器 C#高性能TCP服务的多种实现方式 其他常用库:DotNetty C#网络编程系列文...

继续阅读 »

JS中准确判断变量的类型

typeof判断变量类型 用以判断基本变量类型, 对于复杂数据类型基本都返回object console.log(typeof "hello"); // string console.log(typeof 123); // number console.log(typeof true); // boolean console.log(typeof {}); // object con...

继续阅读 »

python形参和实参中的特殊字符讲解

python中形参和实参的特殊字符有哪些? 参考官方文档: https://hlog.cc/docs/python/tutorial/controlflow.html#positional-or-keyword-arguments 位置参数/关键字参数 位置参数, 同其他编程语言一致, 位置参数形参的顺序很重要 关键字参数, 以kwarg=value形式定义的参数 关键字参数使用注意...

继续阅读 »

Discuz论坛附件下载权限绕过漏洞

近日,有网友在乌云上发布了一则Discuz论坛附件下载权限绕过漏洞,能够任意下载带有权限的附件并且无需扣除自身积分。目前Discuz正在处理中,但暂未放出漏洞补丁,有需要的朋友不妨趁漏洞修补之前到各论坛大肆搜刮一番。 漏洞重现步骤: 找到任一带有权限附件,右键点击选择复制链接地址 得到类似下列网址,将aid=其后部分复制 http://***/forum.php?mod=attachme...

继续阅读 »

关于MMO游戏服务器的思考

实现一个MMO游戏框架需要考虑的问题 游戏服务器与web服务器的不同之处 游戏服务器说到底,最重要的几点就是保持状态、低延迟、交互。这几点就让游戏服务器和普通的服务器(比如电商后端)区分开来了 游戏服务器特有的 保持连接:游戏一般来说需要保持一个客户端到服务端的连接,可以对客户端的玩家的行为(移动,攻击,操作,互动,聊天)进行及时的反馈以及主动推送给相关的玩家。所以游戏更多的使用TCP来保持...

继续阅读 »

python二进制操作汇总

数据编码之间的转化 设计到的格式 十六进制字符串 "9A 00 1B CB 34 00 C7 00 00 30 10 00" 十进制字符串 "154 0 27 203 52 0" 大端模式 十六进制转字符串 转化方法 # 十进制(数字) -> 十六进制(字符串) hex(128) == '0x80' # True hex(128) == '80' # False hex(1...

继续阅读 »

Python中的冷知识

可变对象与不可变对象 为了理解对象的可变与不可变, 首先理解什么是变量, 什么是对象 在 Python 中,变量都是指针;指针的内存空间与数据类型无关,其内存空间保存了指向数据的内存地址。 在 Python 中,一切皆对象,其主要由以下部分组成: identity(ID):标识对象的“内存地址”,可使用 id(obj) 获取(唯一标识) type(类型):标识对象的“类型”,可使用 typ...

继续阅读 »

关于进程/线程/协程以及一些相关概念的整理

本文涉及到的一些概念 多线程发展史 并发与并行 CPU的密集型(CPU-Bound) IO密集型 (I/O Bound) 各种IO模型 各种并发模型 多线程发展史 起因:如何最大化的利用CPU CPU运算速度和IO速度的不平衡一直是计算机优化的一个课题,我们都知道CPU运算速度要以百倍千倍程度快于IO的速度,而在进行任务的执行的时候往往都会需要进行数据的IO(涉及硬盘io,网络io,内存...

继续阅读 »

关于try catch的理解问题

以下来自于知乎的一位网友对try catch的理解, 并拿之和go的err做比较, 针对try catch说的比较好理解~~ 我们不谈Java的checked exception。这货在其他语言里面并不多见。我们只谈一般的异常处理。好,那么,throw是什么很差的设计么?当然不是。throw再差也比err code强。为什么呢?你仔细想想,throw和return从逻辑上(注意:抽象地从逻辑...

继续阅读 »

游戏中自动寻路算法: A*、NavMesh、WayPoint

注意: 这里可以查看https://github.com/qiao/PathFinding.js各种寻路算法,并查看其在线演示. A*(基础算法) 优点 简单,易于实现 对地图编辑器友好 特定方格的消耗/可通行性易于修改,当然重新加权的方格太多也会影响速度 从游戏地图位置容易映射到方格位置,坐标除以每个网格的边长即可 缺点 对于大型地图,方格属于内存密集型 通常需要对所得的路径进行路...

继续阅读 »

C#高级特性之LINQ(语言集成查询)

什么是linq, 它解决了什么问题 在工程中我们少不了要定义类或者结构去储存数据,这些数据将被临时地储存在内存中,现在我们想要对其完成一些类似于查找、过滤等等常见的任务的时候,我们该如何去做呢? 以前我们可以自己写代码去对集合中的每个对象进行遍历,检查变量的每个字段看其是否满足条件。 LINQ(Language Integrated Query)即语言集成查询, linq可以像SQL一样用来...

继续阅读 »

从0到1构建python web框架

框架功能 第一部分: WSGI(gunicorn)/请求处理程序/路由(简单和参数化) 新建项目gunicorn安装 # 新建项目目录 mkdir longfei cd longfei python -m venv venv # 创建虚拟环境 source venv/bin/activate # 激活虚拟环境 pip install gunicorn # 安装WSGI服务器 项目目录中, ...

继续阅读 »

Python的import详解与模块自动加载

import与sys.path 模块import导入顺序 在 sys.modules 中查找,它缓存了所有已导入的模块, 这里默认在运行前会自动加载内置库. 此变量中包括了解释器的内置库,即在sys.builtin_module_names中搜索,返回第一个找到的结果 在 sys.meta_path 中查找,它支持自定义的加载器 按顺序在sys.path中搜索,排在前面的优先被找...

继续阅读 »