自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Ocelot 结成 Consul 做配置以及服务发现出现的一些小问题

首先创建 web 项目dotnet new web -n ApiGateway然后安装对应的 nuget 包dotnet add package Ocelotdotnet add package Ocelot.Provider.ConsulProgram 配置using Ocelot.Middleware;using Ocelot.DependencyInjection;usin...

2023-04-09 23:37:00 284

原创 使用 AutoRest 遇到的问题

AutoRest 提供读取 swagger.json 文档,然后生成客户端代码的功能。首先是 AutoRest 默认使用 operationid 作为生成对应接口请求方法的名称,而莫得 swagger.json 文档上面默认没有这个值,所以需要设置。然后就是 asp.net core 支持多种请求格式,包括 text/json, applicaiton/json 等,然后 AutoRest ...

2023-04-07 18:02:00 167

原创 MAUI 开发 Android 程序配置

首先安装工作负荷然后设置 Android SDK 的代理,网上的一些旧的博文可能会使用 android 命令,实际上该命令已经被 google 弃用,应该使用 sdkmanager 命令打开此文件夹(如果 VS 为默认安装位置)然后设置代理运行一下命令.\sdkmanager.bat --proxy=http --proxy_host=mirrors.neusoft.edu.cn --...

2023-02-23 21:33:00 875

原创 C# 的基本代码规范

个人遵守的通用 C# 代码规范,其中参考了微软的代码规范。实际上在是使用一些框架开发时(例如 ASP.NET Core)也应该遵循一定的模式规范,但是本文只讨论一些比较通用的代码规范。文章将从下面的几个方面来谈论规范:代码排版标识符命名类型设计代码排版良好的代码排版是整洁代码目标的起点,方法中的代码应该按照逻辑功能分块,并以空行分隔。并在必要时,或者能够代码比较大的重用性的时候将...

2023-02-20 13:29:00 1224

原创 RabbitMQ 快速入门

RabbitMQ 是一款实现了 AMQP 协议的消息中间件,使用 Erlang 编写。这篇博客简单介绍一下 RabbitMQ, 但不介绍特定库的 API核心概念RabbitMQ 存在一下概念,清楚了一下概念也就基本了解了 RabbitMQ发布者消费者帧消息连接信道 Channel交换机队列死信队列路由键properties绑定首先 发布者将消息发布到 Rabbi...

2023-02-13 23:36:00 94

原创 OAuth2 简介

OAuth 是一种授权框架,用来让用户允许第三方应用访问他的账户资源的一种授权框架,例如很多网站提供的 QQ/微信/微博登录,即使该网站和腾讯微博并没有什么关系。OAuth 定义了四个角色:Resource Owner:资源所有者,也就是用户Client:客户端,例如你想要使用 QQ 登录博客园网站,那么博客园就是 ClientResource Server:资源服务器,例如 QQ 服务...

2023-01-31 20:41:00 106

原创 Autofac 快速入门

Autofac 是 .NET 下的一个开源 Ioc 容器的实现库,虽然实际上系统自带有一个 Microsoft.Extensions.DependencyInjection,已经提供了基础的依赖注入的能力。但是我发现很多人喜欢用 Autofac,因为这个 Ioc 容器提供的功能更多更加强大。首先简单介绍一下控制反转,依赖注入,虽然这个应该网上有很多文章都有讲过,但还是介绍一下自己的看法(不保证...

2023-01-30 15:28:00 1113

原创 通过 eShopOnContainers 项目学习一下微服务

这里是项目地址 https://github.com/dotnet-architecture/eShopOnContainers, 这是微软创建的一个基于 .NET 平台的微服务架构的示例应用程序,里面基本上市面上主流的时髦的技术都用上了。因为涉及的内容比较多,所以我们只简单查看一下微服务的代码实现和 DockerFile 的编写,至于K8s,网关,鉴权等,我们不查看。首先查看项目结构我们...

2023-01-28 18:33:00 1029

原创 C# 中的闭包一个小问题

using System;var funs = new Action[10];for (var i = 0; i < 10; i++) funs[i] = () => Console.WriteLine(i);foreach (var fn in funs) fn();猜测这段代码运行结果 1-9,实际运行结果为全部的 10 在 SharpLab 中查看...

2023-01-15 12:20:00 320

原创 .NET 程序员的快速正则表达式入门

正则表达式是处理文本的一个极为有效的工具,例如现在想要搜索项目中所有以 Fetch 名称开头的函数定义,那么我会使用如下的正则表达式(?<=[\w\d_]+\s)Fetch[^()]+([^()]+)如果看不懂这个正则很正常,让我们继续。正则表达式确实很擅长处理文本,但是有些问题单单使用正则表达式是很难解决的(或者是使用正则表达式根本无法解决的,这是由正则表达式本身的性质决定的),并...

2023-01-13 15:48:00 401

原创 最近关于如何写代码的一些思考

Table of Contents1. 关于最近思考的如何写代码1.1. 少即是多1.2. 概念和面向对象1.3. 关于抽象设计的两个方法1. 关于最近思考的如何写代码1.1. 少即是多越少越好,API 接口越少越能降低人的理解负担。尽量少设计 API ,而应该尽量使用API 功能的组合。例如 Java 的流式 API,C# 的 Linq,他们这...

2022-09-13 22:25:00 60

原创 关于最近烦闷的工作

关于恶心人的屎山代码最近在维护公司以前的代码,准确来说应该是重构,之前看这个项目的时候我还以为这玩意儿应该至少是7,8年前的代码了,然后看了一下 SVN(忽略为什么现在这公司在用 SVN,我也不知道呵呵).呵呵,大部分的代码都是 2019 年的代码,我实在不能够想到 2019 年能将代码写成那个样子。2019年,C# 8 也已经发布了吧(先忽略,我为什么又跑去写 C# 了),实在搞不能够为...

2022-09-02 22:45:00 52

原创 高阶函数三板斧:map,filter,reduce

这三个高阶函数比较简单,但也特别常用。他们提供的抽象分别是map -> 变换filter -> 筛选reduce -> 归并这三个函数只需要了解了就能够立即运用到自己的代码中,所以了解以下还是比较有用的。map转换一组值,但是该函数只是提供转换的一个抽象,如何转换需要由使用者提供,例如:def square(x): return x * xl = ra...

2022-03-04 09:51:00 70

原创 Python性能优化

Python性能优化Python性能优化有两个方面:绕过Python解释器代码优化绕过Python解释器首先绕过Python解释器,大致有以下几个方法:不使用默认的C解释器实现,使用Pypy,Jyhton等编写C扩展,Numba等编译器其他解释器实现使用非默认的解释器实现,其实获得的好处并没有失去的多,因为使用非官方的解释器实现相当于意味着围绕着官方解释器所衍生...

2022-02-28 21:49:00 63

原创 Python 中的属性覆盖和猴子补丁

一般说,在基类中定义的访问基类中属性的方法,即使派生类覆盖他也不会造成影响,没懂?????我的意思是这个???? 举一个简单的例子public class Person { private final String _name = "person"; public String getName() { return this._name; }}public...

2021-12-15 21:06:00 39

原创 设计模式入门(三):Observer模式

观察者模式,又称为发布订阅模式,属于行为模式。定义一对多的依赖关系,观察者和被观察者,订阅者发发布者的比喻都很形象。java中对该模式有原生实现,这里贴上删除注释的代码public interface Observer { void update(Observable o, Object arg);}public class Observable { private ...

2021-12-10 21:53:00 42

原创 设计模式入门(二):策略模式和桥接模式

为什么又是两个模式放在一起呢?因为这两个模式也是非常非常的像,但是他们却分属不同的分类,策略模式属于行为型模式,而桥接模式则属于结构型模式。首先看两幅UML图空心三角连线表示继承关系,空心菱形连线表示组合关系(其中有并使用,是其一部分)。可以看到当用面向对象UML表述时,他俩的结构是十分相似的。但仍然能看到区别,但是这个区别是由内在的区别而反应出来的,并非是其本质的区别。策略模式的关...

2021-12-07 15:51:00 76

原创 设计模式入门(一):外观模式和适配器模式

最简单的两个模式,同属结构性模式,为啥把他俩放在一起呢?因为他俩实在太像了,并且我也觉得没啥区分的必要。实际上他俩的实现方式都差不多,通过组合已有类对象来实现。那么他俩的区别是什么呢?唯一的区别就在于外观模式创建的对象他的接口是供程序员使用的(目的),所以“外观”相较于“被外观的”接口更简单(特征)。而适配器就不一定,他创建的接口不一定会更简单,当时会为了适配已经存在的类使用的接口(目的),...

2021-12-05 21:51:00 60

原创 Docker 简介

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。 --百度百科Docker中镜像是未运行的容器模板,而容器是运行中的镜像实例。Docker镜像按照分层叠加而形成。每一层都有一个独特的Hash,不同的Docker镜...

2021-11-29 14:06:00 53

原创 移位

對於csapp上面謀道習題,這是我的答案#include <stdio.h>/** * Do rotating left shift. Assume 0 <= n < w * Examples when x = 0x12345678 and w = 32: * n = 4 -> 0x23456781, n = 20 -> 0x67812345 *...

2021-08-09 21:31:00 49

原创 char到int的隐式类型转换

#include <stdio.h>int show_bytes(void *ptr, int length);int main(){ int x = 0xff; show_bytes(&x, sizeof(int));}int show_bytes(void *ptr, int length){ char *byte_ptr = ptr;...

2021-08-05 17:56:00 76

原创 面向对象和面向过程对比随想.....

仅仅一些暂时的想法...我觉得面向对象相对与面向过程,最大的改善不是应对软件的变化而是对于客户程序/过程/函数的私有数据/函数的隐藏。面向过程程序设计通过良好的结构设计,高内聚低耦合,实际上也能够比较容易通过较小的修改来的应对变化。面向过程的程序设计中虽然总是强调高内聚低耦合,但是实际过程中总是不一定设计的所有子程序都是功能内聚松耦合的,同时还有可能存在数据结构耦合(我感觉结构化设计中最容...

2021-06-15 22:21:00 25

原创 防抖和节流

防抖和节流两者都是在一段时间内连续触发同一事件而为了避免事件处理函数频繁连续的调用而采取的解决方案。防抖就是合并一段时间内连续的触发的事件而节流控制相同事件之间必须要具有一定的时间间隔打个比方,假如同一事件在10秒内触发了N次,如果采用防抖的方案,那么事件处理函数在10秒内只会触发一次。而如果采用节流的方案,可能就是在每间隔1秒的地方触发一次。防抖的代码:function debou...

2021-04-17 18:15:00 28

原创 事件处理的三个阶段

事件处理的三个阶段今天面试被问到这个问题,我听得一脸懵,啥三个阶段,我只知道触发事件,事件冒泡,别的还真不知道,上网搜索了一下,W3C的原文链接The capture phase: The event object propagates through the target’s ancestors from the Window to the target’s parent. This p...

2021-04-13 21:02:00 53

原创 js中的迭代器

JS高级程序设计中,js可迭代协议的定义是,"支持迭代的自我识别和创建实现Iterator接口对象的能力"(原话)然后迭代器的定义是,能够维护自己的状态并重复执行一段代码+能够生成迭代器然后他是将两个分开讲的,7.2.1可迭代协议,7.2.2迭代器协议我猜他的意思是这样:// 这里用java描述(有接口方便)public interface Iterable<T> ...

2021-01-05 20:46:00 205

原创 tomcat

Tomcat软件的常见架构有C/S架构和B/S架构。B/S架构中浏览器通过请求和响应进行通信。服务器资源分类:静态资源: 所有用户访问,得到相同的结果。可以直接被浏览器解析。动态资源:每个用户访问相同资源得到不同的结果。动态资源需要向被解析成为静态资源后,返回。浏览器拥有静态资源解析引擎,浏览器可以解析静态资源,展示效果。网络通信三要素IP 设备在网络中的唯...

2020-10-23 23:07:00 169

原创 java 中的xml操作

XML全称为Extensible Markup Language 可扩展标记语言。一般作为配置文件,可在网络中传输。和html的区别是,它的语法规定更加严格,同时,xml中的标签都是自定义的,而html中的标签是预定义的。xml一般用来存储数据,而html一般用来展示数据。xml文档的第一行必须为形如<?xml 属性列表 ?>的文档声明。必须要有一个根标签,标签必须正...

2020-10-21 22:16:00 202

原创 数据库连接池

数据库连接池一个用来存放数据库连接的容器。当被创建时,容器初始化,创建连接对象。当用户需要访问数据库是,从容器中获取连接对象,在访问完毕以后,归还连接对象到连接池中。使用数据库连接池的好处是:节约资源,用户访问更加高效。DataSource该接口为数据库连接池应该实现的标准接口getConnection 从连接池获取连接,返回一个Connection对象当对该方法返回的Co...

2020-10-19 22:55:00 59

原创 jdbc

JDBCjdbc全称为java database connectivity。是一组规范客户端应用程序如何来访问数据库的应用程序接口。但是其具体如何访问数据库的操作是由数据库厂商提供的驱动来实现的。官方定义的一套操作所有关系型数据库的规则/接口。各个数据库厂商去实现这套接口,提供数据库驱动这套接口,这是执行的代码时驱动jar包中的实现类。使用步骤步骤,如下导入驱动:驱动一般为...

2020-10-15 21:50:00 56

原创 Java 注解

注解有以下几个作用:编写文档代码分析编译检查内置注解java中常用的内置注解有:@Override 重写方法@Deprecated 标注内容已过时@SuppressWarnings("all") 压制所有警告⚠自定义注解注解继承自Annotation接口创建指定以注解格式如下:@Target({ElementType.TYPE})...

2020-10-14 20:59:00 54

原创 There is no getter for property named...

错误信息org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'nul' in 'class com.qinsfu.param.AdminP...

2020-10-11 13:33:00 1100

原创 跨站请求攻击

简单来说就是用户在访问攻击者A的站点时,通过图片,表单等的url向被攻击站点发送一个请求,同时这个请求会携带之前该站点存储在用户浏览器中的cookie。假如此时cookie中存储的就是标志用户登录状态的jwt。被攻击站点将会认为该请求为已登录的用户发出而进行响应,攻击者借此获取或篡改用户信息,达到攻击的目的。...

2020-10-08 22:27:00 114

原创 Invalid byte tag in constant pool: 19

错误信息严重: Unable to process Jar entry [module-info.class] from Jar [jar:file:/C:/Users/qinsfu/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.11.2/jackson-core-2.11.2.jar!/] for annotatio...

2020-10-04 22:01:00 202

原创 java反射

反射java类拥有三个阶段。第一个阶段时源代码阶段,此时java类存在于.java后缀的文本文件中。第二阶段时字节码阶段,此时java类存在于.class的字节码文件中。第三个阶段是运行时阶段,任何类在被jvm读取的同时都会自动创建一个java.lang.Class对象,该对象没有公开的构造方法,是由jvm自动创建的。通过java.lang.Class对象就可以访问到jvm中对...

2020-10-03 22:44:00 93

原创 Result Maps collection does not contain value for Xxx.Xxxx.Xxx

这个报错一般和他指出的方法没有关系。事实是只要映射文件中有一个映射操作的Result Map有错误,他就将会抛出这个错误,并且在错误信息中表示是由正在执行的映射方法引起的。检查文件中的其他结果映射即可。...

2020-10-03 18:02:00 101

原创 多线程

多线程一个进程是程序运行的实例线程是一个进程中的执行场景/执行单元一个进程可以启动多个线程每个java程序都至少启动了两个线程:main主线程和垃圾回收线程在不同线程间 堆和方法区共享,但是一个线程一个栈在多线程的环境中,当main 方法结束只是意味着主栈空了,但是其他的分支线程拥有的支栈还在压栈弹栈。实现多线程的方法实现多线程的方法有:编写一个类,继承java.l...

2020-10-02 22:48:00 69

原创 序列化

序列化序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。将java对象从文件中恢复称为 反序列化 DeSerializetion。参与序列化和反序列化的对象必须实现Serializeable接口。Serializeabl...

2020-10-02 12:39:00 63

原创 javase 文件IO相关

IO流IO流的分类按流的方向分:输入流,输出流读取数据的方式按照字节读取 字节流按照字符读取 文本流java中所有的文件读取相关的类都是在java.io包下,同时所有的IO流类都实现了Closeable接口,这意味着所有流在使用以后都需要关闭。所有的输出流实现了Flushable。输出流在输出完成之后一定要flush将管道中剩余的数据写入文件。字节流java....

2020-09-28 22:53:00 62

原创 Redis:连接报错

报错信息为Error: 远程主机强迫关闭了一个现有的连接。或者 Error: 你的主机中的软件中止了一个已建立的连接。在远程Redis服务及中连接redis正常,但是在客户机上连接时态。解决方法是关闭protected-mode,并且开放所有端口的访问0.0.0.0。当然,实际/生产情况或许并不建议你这么做,但是对于我的提供Redis服务的虚拟机而言,并没有什么问题。原因在Re...

2020-09-26 21:57:00 448

原创 java基础类,方法和对象

api 即为应用程序编程接口,英文为Application programming interfaceSystemSystem.currentimeMillis 获取毫秒数(事件戳)System.exit 退出虚拟机System.gc 建议运行gcObject类Object 根类,所有类的超类toString 方法,默认打印类路径+对象地址哈希clone 负责对象克隆e...

2020-09-26 16:12:00 94

空空如也

空空如也

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

TA关注的人

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