WilliamCode
码龄9年
关注
提问 私信
  • 博客:155,872
    社区:2,400
    问答:2,656
    动态:26
    160,954
    总访问量
  • 105
    原创
  • 1,850,487
    排名
  • 111
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:上海市
  • 加入CSDN时间: 2016-02-29
博客简介:

WilliamCode的博客

查看详细资料
个人成就
  • 获得182次点赞
  • 内容获得43次评论
  • 获得973次收藏
  • 代码片获得1,061次分享
创作历程
  • 1篇
    2023年
  • 5篇
    2022年
  • 4篇
    2021年
  • 24篇
    2020年
  • 17篇
    2019年
  • 26篇
    2018年
  • 2篇
    2017年
  • 26篇
    2016年
成就勋章
TA的专栏
  • Linux
    6篇
  • 网络编程
    5篇
  • Java课程设计
    3篇
  • 算法与数据结构c++&Java
    14篇
  • WilliamCode算法大师
    26篇
  • java飞机大战
    4篇
  • java
    21篇
  • 滤波算法
    1篇
  • Data structure
    19篇
  • Tensorflow
    2篇
  • python
    23篇
  • MySQL
    5篇
  • Q-Learning
    1篇
  • 电赛白赛
  • 电控
    1篇
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

182人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

Linux下使用HugePage减少TLB-Miss,以及使用HugePage创建共享内存

TLB miss是导致程序内存访问延迟的一大原因。特别是使用大量内存时TLB会变得异常拥挤。一个常见的TLB miss导致的内存延迟的现象是:访问一个连续数组,每4KB出现一次较大的访问延迟。因此使用HugePage(巨页)能够改善内存访问延迟。本文主要介绍在共享内存IPC场景下使用HugePage的方法。单进程访问内存的方式会更简单。
原创
发布博客 2023.04.27 ·
1035 阅读 ·
1 点赞 ·
1 评论 ·
2 收藏

epoll socket编程中的错误处理

epoll socket编程中的错误处理
原创
发布博客 2022.10.10 ·
2303 阅读 ·
2 点赞 ·
0 评论 ·
6 收藏

C++Atomic与内存序

C++ 内存模型
原创
发布博客 2022.08.03 ·
1146 阅读 ·
1 点赞 ·
0 评论 ·
8 收藏

Windows和Linux下使用共享内存在C++和Python之间共享DataFrame

参考资料windows api: https://docs.microsoft.com/en-us/windows/win32/api/《Linux-UNIX系统编程手册》Python Doc: https://docs.python.org/3/library/mmap.htmlLinux manual: https://man7.org/linux/man-pages/man2/mmap.2.html实现(windows)主要功能用C++创建共享内存,用Python进行读取,用csv格
原创
发布博客 2022.05.03 ·
3247 阅读 ·
3 点赞 ·
1 评论 ·
31 收藏

C++线程池(固定线程数,条件变量通知,future返回)

参考资料:《C++并发编程实战》https://en.cppreference.com代码下载https://github.com/541380000/csdn_share/tree/main/threadpool_cpp实现(见注释)#pragma once#include <vector>#include <queue>#include <thread>#include <atomic>#include <condition
原创
发布博客 2022.05.03 ·
1142 阅读 ·
1 点赞 ·
0 评论 ·
5 收藏

手写一个 RPC 远程调用(C++)

手写一个 RPC 远程调用(C++)
原创
发布博客 2022.02.25 ·
3919 阅读 ·
5 点赞 ·
4 评论 ·
19 收藏

一些常用的Linux命令

1.查找文件 find ./ -name "name.txt" (精准匹配)2.去掉文件夹下,所有文件的prefix_前缀,比如prefix_text.txt -> text.txtfor f in `ls`; do mv $f `echo $f | sed "s/^prefix_//g"`; done3.给文件夹下所有文件加一个前缀prefix_for f in `ls`; do mv $f "prefix_$f"; done...
原创
发布博客 2021.10.12 ·
112 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Libevent基础之 Reactor模式

个人作品,未经允许禁止转载!该代码意在说明reactor的原理,没有深究细节。详见注释#include<stdio.h>#include <sys/epoll.h>#include <sys/socket.h>#include <fcntl.h>#include <ctime>#include <netinet/in.h>#include <cerrno>#include <cstdlib&
原创
发布博客 2021.10.09 ·
227 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Epoll编程笔记

个人作品,未经允许禁止转载!!!解决IO问题的编程模型及特点1.阻塞等待缺点:一个fd等待时,其他fd无法被监听2.多线程阻塞等待缺点:一个fd占用一个线程,线程过多,效率很低3.非阻塞、忙轮询缺点:无效轮询占用大量CPU时间4.Select缺点:能够打开的fd数量受内核限制,如需修改,需要编译内核。效率较低,每次需要遍历fd数组,复杂度和最大fd数量相同5.Epoll优点:用红黑树管理fd,每次返回可以读写或者发生其他事件的fd,大部分情况下效率高于select
原创
发布博客 2021.10.09 ·
210 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

Libevent安装

最近在学习libevent,记录一下安装过程,方便日后查看。首先,安装openssl1.下载openssl源码:/source/index.html (openssl.org)wget https://www.openssl.org/source/openssl-1.1.1l.tar.gz2.解压tar -zxvf openssl-1.1.1l.tar.gzcd openssl-1.1.1l/3.编译安装./configmake -j16sudo make inst.
原创
发布博客 2021.10.09 ·
2621 阅读 ·
2 点赞 ·
0 评论 ·
15 收藏

【设计模式】

软件设计的6大基本原则SOLID1、Single单一性原则一个类只负责一类方法的封装,一个方法只负责单一的功能的封装。该原则是高内聚,低耦合的基础。高内聚指功能相同的方法内聚在同一个类中,共同完成一个功能的代码块聚合在一个方法中;低耦合指一个类之间的方法尽量少的相互调用,修改一个方法不会或者很少的影响另外一个方法。2、Open&Close 开闭原则对扩展开放,对修改关闭。由于旧代码已经经过测试和实践检验,不能对旧代码进行修改,而是只能在旧代码基础上进行扩展,添加新的代码,而非修改
原创
发布博客 2020.12.03 ·
334 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

Mybatis 自动类型转换

1、新建类xxxTypeHandler,实现TypeHandler接口 或 继承 BaseTypeHandler类package com.william.typehandler;import com.william.mapper.IdCardType;import org.apache.ibatis.type.JdbcType;import org.apache.ibatis.type.TypeHandler;import java.sql.CallableStatement;impor
原创
发布博客 2020.10.20 ·
2191 阅读 ·
0 点赞 ·
1 评论 ·
1 收藏

Mybatis 插入并获取自增主键

1、编写select<insert id="insertUserTestAutoIncrement" parameterType="Student" useGeneratedKeys="true" keyProperty="id"> insert into students(password,age,salary,name) values (#{st.password}, #{st.age}, #{st.salary}, #{st.name}); </insert>
原创
发布博客 2020.10.20 ·
586 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Mybatis联合查询

一对一联合查询查询student表和pwd表的一对一1、写resultMap<resultMap id="OneToOneResultMap" type="Student"> <id column="id" jdbcType="INTEGER" property="id" /> <result column="password" jdbcType="VARCHAR" property="password" /> <result
原创
发布博客 2020.10.19 ·
342 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Mybatis批量插入方式比较

效率:普通for循环 < BATCH方式获取mapper < foreach标签拼接sql主函数代码:package com.william;import com.william.mapper.Student;import com.william.mapper.StudentExample;import com.william.mapper.StudentMapper;import lombok.Data;import lombok.extern.slf4j.Slf4j;
原创
发布博客 2020.10.19 ·
180 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

使用MybatisGenerator

1、向pom.xml添加依赖项<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.22</version></dependency><dependency>
原创
发布博客 2020.10.19 ·
185 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Java多线程的3种实现方法:Thread,Runnable,Callable

1、继承Thread类,重写run方法public class Main { static public void main(String[] args){ Thread thread = new Thread(){ public void run(){ System.out.println("正在执行的线程名:" + Thread.currentThread().getName()); }
原创
发布博客 2020.10.18 ·
268 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Mysql安装

1、下载安装包(8.0.19版本):链接:https://pan.baidu.com/s/1vORXjeap7US2bdWDZA6pNQ提取码:cu792、解压到d盘的任意目录下,但是要知道解压到了哪。比如解压到D:\MySQL,得到新的文件夹mysql-8.0.19-winx643、将D:\MySQL\mysql-8.0.19-winx64\bin,加入系统环境变量PATH4...
原创
发布博客 2020.03.03 ·
249 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

【Java】基于敏捷开发的简易Web服务器(附下载)

这是一款简易的Web服务器,使用JavaSE的基本工具,实现了主页、404页面、登录、注册、动态页面等最原始的功能。github地址:https://github.com/541380000/Easy-Web-Server-Java 通过敏捷开发的方式,14个小版本快速更迭,能够看到代码的快速变化与结构调整。 项目实现的具体功能有:1、对Http请求的解...
原创
发布博客 2020.02.23 ·
439 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏
加载更多