自定义博客皮肤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)
  • 收藏
  • 关注

原创 windows消息循环之手撸一个Win32窗口程序

在Windows操作系统中,一个程序通过不断地接收和处理消息来保持活动状态的一种机制。在Windows编程中,消息循环是处理用户输入、操作系统事件和其他消息的关键部分。在Windows应用程序中,用户与程序交互时,比如点击鼠标、按键盘键等,操作系统会生成相应的消息,并将这些消息发送给程序。程序通过消息循环来接收并处理这些消息,然后做出相应的响应。消息循环通常位于程序的主线程中,不断地等待并处理消息,从而实现用户界面的交互和响应。

2024-01-29 16:34:47 770

原创 使用Windows API实现屏幕截图及服务器传输

在本篇博客中,我们将探讨如何使用Windows GDI和GDI+库,通过C++代码实现屏幕截图的捕获,并将其发送至服务器。这个过程包括获取屏幕信息、创建图像对象、保存截图为PNG格式,并最终通过网络传输至服务器。

2024-01-29 10:57:33 1075 1

原创 自定义包的设计与实现

这是一个 CPacket 类,用于解析包含固定格式的数据。该类的成员变量包括固定包头 sHead、包长度 nLength、控制命令 sCmd、包数据 strData 和和校验 sSum。

2024-01-27 23:21:33 455

原创 IO复用之epoll模型

epoll 是 Linux 操作系统提供的一种高性能的事件通知机制,用于处理大量文件描述符上的事件。它是一种 I/O 事件通知机制,通常用于处理网络编程中的并发连接。在传统的 I/O 模型中,程序通常使用 select 或 poll 函数来等待多个文件描述符上的事件。这种方式有一些性能上的限制,特别是当需要监视的文件描述符数量很大时。epoll 的设计旨在解决这些性能问题。

2024-01-27 23:10:07 759

原创 套接字的多种可选项(修改IO缓冲区大小及TCP_NODELAY)

我们进行套接字编程时往往只关注数据通信,而忽略了套接字具有的不同特性。但是,理解这些特性并根据实际需要进行更改也十分重要。从上表可以看出,套接字可选项是分层的。IPPROTOIP层可选项是IP协议相关事项,IPPROTO_TCP层可选项是TCP协议相关的事项,SOL_SOCKET层是套接字相关的通用可选项。我们几乎可以针对上表中的所有可选项进行读取(Get)和设置(Set)(当然,有些可选项只能进行一种操作)。可选项的读取和设置通过如下2个函数完成。

2024-01-27 22:41:22 967

原创 模拟springMVC实现自己的mvc架构

写一个baseServlet继承httpServlet,重写service方法,在service方法中对前端的url进行解析,通过反射调用方法,执行module层的逻辑。我们只需要写servlet去继承baseServlet,不需要继承httpServlet,重写里面的方法。流程如下:baseServlet类:中央控制器,负责调度分配请求UserServlet类:继承baseServlet,写业务逻辑...

2022-07-07 20:34:32 484 1

原创 23种设计模式之策略模式

该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。策略模式...

2022-07-06 22:40:48 491

原创 23种设计模式之观察者模式

定义:又被称为发布-订阅(Publish/Subscribe)模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己。在观察者模式中有如下角色:在使用微信公众号时,大家都会有这样的体验,当你关注的公众号中有新内容更新的话,它就会推送给关注公众号的微信用户端。我们使用观察者模式来模拟这样的场景,微信用户就是观察者,微信公众号是被观察者,有多个的微信用户关注了程序猿这个公众号。抽象观察者类观察者类抽象主题类具

2022-07-06 22:30:37 201

原创 23种设计模式之模板方法

在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某些步骤的实现与具体的环境相关。例如,去银行办理业务一般要经过以下4个流程:取号、排队、办理具体业务、对银行工作人员进行评分等,其中取号、排队和对银行工作人员进行评分的业务对每个客户是一样的,可以在父类中实现,但是办理具体业务却因人而异,它可能是存款、取款或者转账等,可以延迟到子类中实现。定义:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使

2022-07-06 21:25:18 287

原创 23种设计模式之建造者模式

将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。建造者(Builder)模式包含如下角色:创建共享单车生产自行车是一个复杂的过程,它包含了车架,车座等组件的生产。而车架又有碳纤维,铝合金等材质的,车座有橡胶,真皮等材质。对于自行车的生产就可以使用建造者模式。这里Bike是产品,包含车架,车座等组件;Builder是抽象建造者,MobikeBuilder和OfoBuilder是具体的建造者;Director是指挥者。类图如下:上面示例是 Builder模式的常规用法,指挥者类 Di

2022-07-06 20:29:17 218

原创 23种设计模式之工厂模式

需求:设计一个咖啡店点餐系统。设计一个咖啡类(Coffee),并定义其两个子类(美式咖啡【AmericanCoffee】和拿铁咖啡【LatteCoffee】);再设计一个咖啡店类(CoffeeStore),咖啡店具有点咖啡的功能。在java中,万物皆对象,这些对象都需要创建,如果创建的时候直接new该对象,就会对该对象耦合严重,假如我们要更换对象,所有new对象的地方都需要修改一遍,这显然违背了软件设计的开闭原则。如果我们使用工厂来生产对象,我们就只和工厂打交道就可以了,彻底和对象解耦,如果要更换对象,直

2022-07-05 23:17:36 154

原创 23种设计模式之单例模式

单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。单例模式的主要有以下角色:单例设计模式分类两种:饿汉式:类加载就会导致该单实例对象被创建懒汉式:类加载不会导致该单实例对象被创建,而是首次使用该对象时才会创建说明:该方式在成员位置声明Singleton

2022-07-05 22:20:57 267

原创 在双重检查锁模式中为什么需要使用 volatile 关键字?

在java内存模型中,volatile 关键字作用可以是保证可见性或者禁止指令重排。这里是因为 singleton = new Singleton() ,它并非是一个原子操作,事实上,在 JVM 中上述语句至少做了以下这 3 件事:这里需要留意一下 1-2-3 的顺序,因为存在指令重排序的优化,也就是说第 2 步和第 3 步的顺序是不能保证的,最终的执行顺序,可能是 1-2-3,也有可能是 1-3-2。如果是 1-3-2,那么在第 3 步执行完以后,singleton 就不是 null 了,可是这时第 2

2022-07-05 22:09:18 576

原创 工作中遇到的生僻sql语法汇总(长期更新)

盘点工作中遇到的一些实用但不常见sql语法

2022-07-05 21:14:10 187

原创 springboot之异步、定时、邮件

springboot之异步、定时、邮件

2022-06-29 22:58:14 112

原创 理解SpringBoot自动装配

Spring Boot 基于 Spring 开发,Spirng Boot 本身并不提供 Spring 框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于 Spring 框架的应用程序。也就是说,它并不是用来替代 Spring 的解决方案,而是和 Spring 框架紧密结合用于提升 Spring 开发者体验的工具。Spring Boot 以约定大于配置的核心思想,默认帮我们进行了很多设置,多数 Spring Boot 应用只需要很少的 Spring 配置。同时它集成了大量常用的第三方库配置(例如

2022-06-29 22:17:30 199

原创 springMVC概念介绍及工作原理

Model(模型):数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型或JavaBean组件(包含数据和行为),不过现在一般都分离开来:Value Object(数据Dao) 和 服务层(行为Service)。也就是模型提供了模型数据查询和模型数据的状态更新等功能,包括数据和业务。View(视图):负责进行模型的展示,一般就是我们见到的用户界面,客户想看到的东西。Controller(控制器):接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回给视图,由视图负责展示

2022-06-26 22:46:46 441

原创 spring事务管理

事务四个属性ACIDSpring在不同的事务管理API之上定义了一个抽象层,使得开发人员不必了解底层的事务管理API就可以使用Spring的事务管理机制。Spring支持编程式事务管理和声明式的事务管理。编程式事务管理声明式事务管理使用Spring管理事务,注意头文件的约束导入 : tx事务管理器JDBC事务配置好事务管理器后我们需要去配置事务的通知spring事务传播特性:事务传播行为就是多个事务方法相互调用时,事务如何在这些方法间传播。spring支持7种事务传播行为:Spring 默认的事务传

2022-06-21 22:56:28 104

原创 springAOP详解

jdk动态代理与cglib动态代理的思想都是通过字节码去生成一个类,然后对原来的类进行功能增强JDK动态代理是实现InvocationHandler接口,重写invoke(),通过反射的方式去调用目标类的代码。JDK的代理是针对接口的,所以被代理的对象必须要实现接口实现MethodInterceptor接口,重写intercept(),对目标类生成子类覆盖他的方法,由于采用的是继承的方式,故目标类不可以被final修饰区别:jdk动态代理要求目标类必须实现接口在代理类时,jdk动态代理生成一个文

2022-06-21 22:20:12 137

原创 深入学习springIOC

控制反转IoC(Inversion of Control),是一种设计思想,DI(依赖注入)是实现IoC的一种方法,也有人认为DI只是IoC的另一种说法。没有IoC的程序中 , 我们使用面向对象编程 , 对象的创建与对象间的依赖关系完全硬编码在程序中,对象的创建由程序自己控制,控制反转后将对象的创建转移给第三方,个人认为所谓控制反转就是:获得依赖对象的方......

2022-06-20 23:34:33 255

原创 Spring概述

Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器(框架)

2022-06-20 21:09:26 86

原创 狂神说注解和反射学习笔记整理

反射与注解的使用

2022-06-07 22:57:40 134

原创 多线程学习笔记02

多线程

2022-06-07 00:12:18 95

原创 多线程学习笔记01

多线程详解

2022-06-06 23:53:56 76

原创 mysql触发器

mysql触发器

2022-06-04 03:37:06 81

原创 mysql存储过程详解02

mysql存储过程

2022-06-04 00:17:46 153

原创 mysql存储过程详解01

存储过程详解

2022-06-01 23:17:59 171

原创 mysql知识点整理--sql优化02

mysql性能优化详解

2022-06-01 21:52:34 123

原创 Mysql知识点整理--sql优化01

sql性能调优

2022-05-31 00:14:20 96

原创 mysql知识点整理--索引使用02

mysql数据库索引使用

2022-05-29 21:07:36 81

原创 mysql知识点整理--索引的使用01

mysql索引使用

2022-05-25 23:52:36 221

原创 mysql性能分析--执行计划explain

mysql执行计划

2022-05-25 23:19:30 61

原创 mysql性能分析--查看sql执行频率,慢查询日志,profile详情

mysql性能分析

2022-05-25 22:59:13 1501

原创 mysql知识点整理--索引02

mysql索引知识点

2022-05-25 22:36:42 279

原创 mysql知识点整理--索引01

mysql索引知识点整理

2022-05-25 21:24:08 121

原创 mysql知识点整理--事务

mysql事务

2022-05-25 00:18:09 119

原创 Redis学习笔记12--缓存穿透、击穿和雪崩

redis热点面试题,缓存穿透,击穿和雪崩

2022-05-24 09:30:00 148

原创 Redis学习笔记11--哨兵模式

redis哨兵模式

2022-05-23 23:42:58 130

原创 Redis学习笔记10--Redis主从复制

redis主从复制

2022-05-17 23:53:06 156

原创 面试亮点--聊聊函数式的monad

monad

2022-05-16 23:40:04 335

空空如也

空空如也

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

TA关注的人

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