
笔记
文章平均质量分 59
2021_fc
加油啊小菜鸡,你能行的。加油
展开
-
被迫学习Java线程池
前言:今天写了一段让自己头大的代码,没有几十年精神病写不出来的那种。给大家瞅瞅/** * 用于向开发库插入数据 * 300万条数据 */public class ThreadSaveDB { public static void main(String[] args) { int size = 3000000; for (int i=0;i<size;i++){ ThreadPoolExecutor executor = n原创 2021-09-30 13:56:29 · 407 阅读 · 1 评论 -
开发环境批量插数据
前言上一节被迫把线程池给整会了。但是仍然没有把实际问题给解决:向数据库插300万条数据(太慢啦)。下面是我一步步加快执行速度的记录。实现步骤先来看下整会线程池之后的代码。public class ThreadSaveDB { public static void main(String[] args) { int size = 3000000; ThreadPoolExecutor executor = new ThreadPoolExecutor(30,3原创 2021-09-30 13:55:14 · 362 阅读 · 1 评论 -
自定义注解
创建一个自定义注解需要两步自定义注解一. 创建自定义注解/** * 我自己用于测试的注解 * @author mjw * @version 1.0.0 */@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.METHOD, ElementType.FIELD})@Documentedpublic @interface MyAnnotationCheck {}二. 创建切面/*** * 我自己的注解切面 *.原创 2021-09-24 16:15:50 · 107 阅读 · 0 评论 -
深入理解零拷贝【ZERO COPY】
深入理解零拷贝在操作系统的层面上分为两个空间:用户空间与内核空间内核空间和用户空间一般通过系统调用进行通信。用户空间就是用户进程所在的内存区域,系统空间就是操作系统占据的内存区域。 用户进程和系统进程的所有数据都在内存中。传统的I/O操作Java虚拟机发出read()系统调用,(不是我们常使用的read()方法,这是操作系统底层的系统调用)。-> 用户空间向内核空间发出一个系统调用,发生一次上下文切换,用户空间模式切换为内核空间模式。由内核空间正真的向磁盘发出读取数据的请求,然后通过原创 2020-07-22 00:46:53 · 377 阅读 · 0 评论 -
NIO/Selector详解[Netty系列]
NIO/selector简单看下selector的源码注释可以直接跳过,后面都会详细讲到/** * A multiplexor of SelectableChannel objects. * * A selector may be created by invoking the open method of * this class, which will use the system's default {@link * java.nio.channels.spi.SelectorProv原创 2020-07-21 23:55:24 · 341 阅读 · 0 评论 -
小菜鸡带你gRPC入门[Netty系列]
gRPC介绍及实际应用介绍在之前我已经学习过protobuf。而gRPC可以将protobuf用作其接口定义语言(IDL)和其基础消息交换格式。我们来看官网给出的一张图 可以看出什么?至少我们可以看出grpc支持多种语言之间的通信吧。服务器端和客户端可以使用不同语言进行定义。官方 在gRPC中,客户端应用程序可以直接在其计算机上的服务器应用程序上调用方法,就好像它是本地对象,这使得你可以更加轻松的创建分布式应用程序和服务。与许多RPC框架一样,gRPC围绕定义服务的思想,指定可通过其参数和返回原创 2020-06-08 00:01:54 · 1463 阅读 · 1 评论 -
Java内部类的用法
内部类内部类(inner class)是定义在一个类中的类。为什么要使用内部类?内部类方法可以访问该类定义所在的作用域的数据,包括私有的数据。内部类可以对同一个包中的其他类隐藏起来。当想要定义一个回调函数且不想编写大量代码时,使用匿名(anonymous)内部类比较便捷。接下来我们来写一个简单的例子来进行分析。public class InnerClassTest { public static void main(String[] args) { OtherClass原创 2020-06-01 23:18:14 · 184 阅读 · 0 评论 -
Gradle的下载安装及Gradlew的使用
Gradle的下载安装及Gradlew的使用window下安装Gradle Gradle官网我这里下载的gradle版本是4.4 大家可以可以安装最新版本的 gradle4.4下载完压缩包解压到指定路径即可配置环境变量key:GRADLE_HOMR value:D:\Java\gradle-4.4-all\gradle-4.4path:%GRADLE_HOME%\bin好啦现在我们就完成啦!接下来我们使用Idea来创建一个Gralde项目吧Finish即可构建完成!之后Gra原创 2020-05-31 22:36:33 · 9994 阅读 · 0 评论 -
Git
GIT简单了解及学习其实工作中用的是SVN并没有用到GIT 那我咋会想起来学一下git勒在学习Netty的过程中发现下载GRpc编译器的时候需要用到git 就干脆来学一下了 反正也就花个两天时间啦SVNSVN:集中式版本管理工具SVN的缺点:服务器单点故障容错性差一旦服务器挂了 我们客户端就没办法更新代码了GitGit是分布式版本管理系统,它是没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要互联网了,因为版本都是在自己的电脑上。那如何实现多人协作呢?原创 2020-05-24 16:12:52 · 153 阅读 · 0 评论 -
对于RPC和Restful的理解
对于RPC和Restful的理解这段时间在学习Netty 之前没有接触过RPC 对于这一直不太理解 就百度啊官网啊再自己总结了一下 自己现在也总算是理解了点了 内容仅供参考注:很多都是百度和别的博文上抄过来的如有侵权马上删除RPC(Remote Procedure Call 远程过程调用)我之前一直理解 RPC是一种框架 具体详细查了一下才发现自己的理解一直是错误的就像 Restful 是一种风格一样 我也一直以为restful属于框架RPC是一种远程过程调用协议来说说RPC和HTT原创 2020-05-17 22:24:42 · 326 阅读 · 0 评论 -
Netty入门[Netty学习]
Netty入门Netty是什么?Netty官网的声明:Netty是 一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。 官网https://netty.io/ 大佬的博文: Netty 是一个异步通信框架 (通信框架) 详情请看:Netty 是什么?使用的管理根据 Gradle解决Gradle下载依赖过慢问题:使用阿里云的镜像plugins { id 'java'}group 'com.mjw'version '1.0-SNAPSHOT原创 2020-05-17 22:16:54 · 173 阅读 · 0 评论 -
Protobuf介绍及简单使用[Netty学习]
Protobuf入门下载及安装Protobuf官网地址 :需要去 git 下载你所需要的编译器 我在这里使用的是win32的下载下来之后配置一下环境变量即可官网给出的关于Protobuf的定义: 协议缓冲区是Google的与语言无关,与平台无关,可扩展的机制,用于对结构化数据进行序列化(例如XML),但更小,更快,更简单。您定义要一次构造数据的方式,然后可以使用生成的特殊源代码轻松地使用各种语言在各种数据流中写入和读取结构化数据。用来进行RPC的数据传输自定义的一种协议,以体积更小的方式对原创 2020-05-17 22:07:42 · 453 阅读 · 0 评论 -
Socket入门[Netty学习]
在学习Socket之前我们需要先了解通信协议通信协议(两个计算机通信,也就是两个计算机交流数据)通信规则UDP 速度快 不需要建立连接 不可靠TCP 速度慢 需要通过三次握手建立连接 可靠举例 UDP: 发短信 TCP: 打电话网络编程三要素 IP地址、端口号、通信协议Socket 套接字在程序中我们通过Socket进行通信...原创 2020-05-04 20:27:10 · 233 阅读 · 0 评论 -
Spring中基于注解的IOC及简单的CRUD
Spring中基于注解的IOCspring中ioc的常用注解曾经xml的配置<bean id="accountService" class="com.mjw.service.impl.AccountServiceImpl" scope="" init-method="" destroy-method=""> <property name="" value="" ref=...原创 2020-05-02 20:47:20 · 169 阅读 · 0 评论 -
哈?Lambda表达式竟然这么简单
哈?Lambda表达式竟然这么简单lambda表达式采用一种简洁的语法定义代码块那我们应该如何编写lambda表达式呢??我们先来看一段代码 -> 我们定义一个定时器,希望它每一秒打印当前的时间首先我们创建一个类实现ActionListener接口,定时器需要调用它的actionPerformed方法public class Timeing implements ActionLi...原创 2020-04-19 01:17:40 · 244 阅读 · 0 评论