netty的channelRead方法是单线程调用还是多线程调用

输出的线程名显示是多线程调用,但是打断点之后所有的请求都阻塞了,是单线程还是多线程呢?在这个地方需要考虑并发问题吗?

1个回答

肯定是多线程处理,你打断点,相当于所有整个进程阻塞了。

SwordOfWarrior
SwordOfWarrior 我现在遇到一个问题,就是用户的数据突然回到了几分钟之前的状态。如果这个方法是异步调用,一个线程运行了几分钟,然后用老数据覆盖新数据,就解释得通了。现在没法验证这个思路
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
netty channelRead接收数据问题

![图片说明](https://img-ask.csdn.net/upload/202006/02/1591069807_433903.png) 我用postman模拟客户端请求,发送的数据,netty这边貌似把请求头都接收到了,我只想要我发送的json数据,怎么处理啊。 ![图片说明](https://img-ask.csdn.net/upload/202006/02/1591069682_446162.png) 还有我如何针对每台不同的客户端进行处理数据和返回数据。

关于Netty4 的channelread的ByteBuf写回客户端信息的迷惑 。

关于Netty4 的channelread的ByteBuf写回客户端信息的迷惑 ``` @Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { ByteBuf buf = (ByteBuf) msg; ctx.writeAndFlush(buf); } ``` 为什么在ServerHanlder的channelread方法里,这样直接把客户端发来的消息写回客户端,客户端收不到消息 而: ``` @Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { ByteBuf buf = (ByteBuf) msg; byte[] reg = new byte[buf.readableBytes()]; buf.readBytes(reg); String body = new String(reg, "UTF-8"); ByteBuf respByteBuf = Unpooled.copiedBuffer(body.getBytes()); ctx.writeAndFlush(respByteBuf ); } ``` 这样转成字符串再转回来却能将客户端发来的消息写回去,客户端也能接收到。。小白很迷求解这样强制转换有什么不同吗,跪谢大佬!

netty:一个包的数据,channelRead回调的bytebuf数据不完整?

![图片说明](https://img-ask.csdn.net/upload/201904/17/1555466944_332865.png) ``` <netty.version>4.1.32.Final</netty.version> ``` 第一次channelRead读取的数据: ``` FEFCBFFFFFFFFEFFFEFFDCFFF5FFC8FFFDFFFAFFFCFBFFF8DDFFFFFFFFFFFFFFEFFFE0FFE0FFFFFFF4FFF4FFEFFFF0FFFFFEA1FFFF8AEBF246061C44B2E8493F ``` 第二次channelRead读取的数据: ``` A5540814A1 ``` 两次读取才是一个包的完整数据 一个包的数据,被分为两次读取,这个结论是通过抓包得到的 虽然问题得到解决,但是不知道为何会发生这种情况 请群里大神解答一下 因使用的是最简单的tcp文本协议, 没有包头和包长度 采用的方案是判断接收一个包的字符串长度 [使用netty4.x客户端接收较大数据量报文时发生的读取不完整bug修复记录](https://www.cnblogs.com/GoQC/p/6137160.html ) 我是通过这个文章的思路解决的问题

Netty多线程客户端服务器端通信

现在实现了Netty客户端服务器端编码解析json格式数据,如何是用多线程进行客户端服务器端的通信?进行tps统计? 有没有有经验的大佬点拨一下?

使用netty5,收消息和发消息是同一个线程吗

现在的问题是,我作为客户端通过netty连接一个服务端,接收到服务端的消息后,不开新线程,处理消息是串行的。这个没问题,但是我发消息也发不出去?这个不应该吧,难道netty的收消息和发消息使用的是同一个线程?

netty多线程通信一次传输较大数据遇到的问题

您好,刚入门netty,想请教大神们几个问题,对于只有一个线程一次传输过大的数据,通过这个方法解决了:传输时头4个字节保存数据大小,后面保存内容,接收时如果发现读取的数据长度不够,则累积到下一次读取,最后得到的message则为需要的数据。部分代码如下: 发送消息: public static void sendMsg(ChannelHandlerContext ctx,byte[] bytes){ ByteBuf buf = ctx.alloc().buffer(); buf.writeInt(bytes.length); buf.writeBytes(bytes); ctx.writeAndFlush(buf); } 接收消息: public class Decoder extends ByteToMessageDecoder { @Override protected void decode(ChannelHandlerContext ctx, ByteBuf buf, List<Object> out) throws Exception { if (buf.readableBytes()<buf.getInt(buf.readerIndex())){ return; } out.add(buf.readBytes(buf.readableBytes())); } } 现在我有个情景是,在传输数据时是多线程的,同一个时间会多次调用ctx.writeAndFlush方法发送数据(多线程使用的是同一个ctx对象),每次发送的数据也是比较大的数据,在接收的时候,是否会出现数据混乱的情况(一次传输数据过大,会多次调用decode方法,多线程环境下是否会出现问题?),我开50个线程测试时发现if (buf.readableBytes()<buf.getInt(buf.readerIndex()))这句代码报数组越位的异常,请问有什么好的解决办法吗,感谢!

多线程真的比单线程执行效率高吗?

对于单核CPU下多线程程序在同一时间点都只能有一个线程运行,对于多核CPU可以实现真正的并发同步运行,这种说法正确吗? 另外在多线程的情况下使用互斥对象来实现线程同步,这样的话多线程程序的运行效率受影响吗?

netty 里面,可以httpserver hander channelRead0里再new一个socket client么

netty 里面,可以httpserver hander channelRead0里再new一个socket client么

netty4.0 read0方法 wirteflush之后,就捕获异常了。

netty4 io.netty.util.IllegalReferenceCountException: refCnt: 0, decrement: 1 网上也看了,是relase了,造成实例被收回。这个要怎么处理?前提这是tcp长连接,怎么也会被收回???

一个netty服务端调用dubbo的阻塞问题

环境介绍:系统a通过netty与系统b通讯,在系统b中业务代码通过dubbo调用了系统c的服务 问题:当b中在接收到a的请求后,调用dubbo服务出现阻塞问题,在处理socket请求的netty handler中为每个请求创建一个新线程去执行业务代码才会解决这个问题,请问合理性如何,为什么需要这么做?

netty线程模型如何测试

netty权威指南中说netty的线程模型有以下特点 1.主从模式,主线程组负责处理链接accept,从线程组负责io处理和任务处理 2.串行模式,当一个io线程select到io就绪后就会直接在该线程调用pipline中的操作 另外当execute任务之前io线程也会selectnow一次,以执行就绪的io操作,从而实现串行化 请问有没有方法或思路对以上内容进行验证。就是我要测试上面内容的正确性需要如何编写代码 经过断点测试,发现server通道注册在主线程组的线程下,socket通道注册在从线程组的线程中,而且每个eventloop中注册的通道都不相同,execute是在线程组中的下一个eventloop中执行的,

关于netty工作线程并发的问题。

最近在做一个项目的压测是有关netty并发的。 1.工作线程coresize设置最小20,最大100,但是worker线程数一直都是20从来没超过,也增加过并发量,不知道是什么原因。 2.尝试把coresize调整为50,工作线程只创建到48。 想请教下, 1中为何线程数达不到最大线程设置; work线程的工作机制究竟是咋么样; 现打算进行调优,该从哪方面下手。

netty服务端接收到中文通信乱码问题

不多说 问题如题 以下是服务端代码 public void channelRead(ChannelHandlerContext ctx, Object msg) { try { ByteBuf buf = (ByteBuf) msg; byte[] req = new byte[buf.readableBytes()]; buf.readBytes(req); String body = new String(req, "UTF-8"); System.out.println("服务器接收到消息:" + body); ctx.writeAndFlush(getSendByteBuf("服务器发送的数据APPLE")); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } private ByteBuf getSendByteBuf(String message) throws UnsupportedEncodingException { byte[] req = message.getBytes("UTF-8"); ByteBuf pingMessage = Unpooled.buffer(); pingMessage.writeBytes(req); return pingMessage; } 以下是客户端代码 public void channelActive(ChannelHandlerContext ctx) throws Exception { byte[] data = "服务器,给我一个APPLE".getBytes(); firstMessage=Unpooled.buffer(); firstMessage.writeBytes(data); ctx.writeAndFlush(firstMessage); } @Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { ByteBuf buf = (ByteBuf) msg; String rev = getMessage(buf); System.out.println("客户端收到服务器数据:" + rev); } private String getMessage(ByteBuf buf) { byte[] con = new byte[buf.readableBytes()]; buf.readBytes(con); try { return new String(con, "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); return null; } } 如需要更详细代码请回复跟帖 我跟帖告诉

netty 的ChannelOutboundHandler中的read()方法和write()方法什么时候调用

请教一个netty的问题,服务端注册了4个channel,2个InboundHandler,2个OutboundHandler,我在客户端的ChannelInboundHandler的channelActive方法里向服务端发了一条消息,发现这个OutboundHandler里的read会被调用两次,一次在InboundHandler的read方法之前,另一次在这个InboundHandler.channelReadComplete之后 服务端打印的结果: ``` ==========Server console: SecondOutServerHandler.read ==========Server console: FirstOutServerHandler.read ==========Server console: FirstInServerHandler.channelRead ClientInHandler -> ==========Server console:SecondInServerHandler.channelRead FirstInServerHandler -> ==========Server console: FirstInServerHandler.channelReadComplete ==========Server console: SecondInServerHandler.channelReadComplete ==========Server console: SecondOutServerHandler.read ==========Server console: FirstOutServerHandler.read Disconnected from the target VM, address: '127.0.0.1:56338', transport: 'socket' ``` 我的问题是这个OutboundHandler不是拦截出站事件的么,怎么象拦截的这个InboundHandler,一次写入怎么会调用两次服务 的OutboundHandlerread()方法?netty 的ChannelOutboundHandler中的read()方法和write()方法什么时候调用? ``` package com.bugStack.testHandle; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; import io.netty.util.CharsetUtil; public class ClientInHandler extends SimpleChannelInboundHandler<ByteBuf>{ @Override protected void channelRead0(ChannelHandlerContext ctx, ByteBuf msg) throws Exception { System.out.println("==========Client Console ClientInHandler.channelRead0: " + msg.toString(CharsetUtil.UTF_8)); } @Override public void channelActive(ChannelHandlerContext ctx) throws Exception { ctx.writeAndFlush(Unpooled.copiedBuffer("ClientInHandler -> ", CharsetUtil.UTF_8)); } @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { cause.printStackTrace(); ctx.close(); } } package com.bugStack.testHandle; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelOutboundHandlerAdapter; import io.netty.channel.ChannelPromise; import io.netty.util.CharsetUtil; public class ClientOutHandler extends ChannelOutboundHandlerAdapter { @Override public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception { ByteBuf in = (ByteBuf) msg; System.out.println("=========ClientOutHandler.write "+ in.toString(CharsetUtil.UTF_8)); /* ctx.writeAndFlush(Unpooled.copiedBuffer(in, Unpooled.copiedBuffer("ClientOutHandler", CharsetUtil.UTF_8)));*/ super.write(ctx, msg, promise); } @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { cause.printStackTrace(); ctx.close(); } } package com.bugStack.testHandle; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter; import io.netty.util.CharsetUtil; public class FirstInServerHandler extends ChannelInboundHandlerAdapter { @Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { ByteBuf in = (ByteBuf) msg; System.out.println("==========Server console: FirstInServerHandler.channelRead " + in.toString(CharsetUtil.UTF_8)); ctx.fireChannelRead(Unpooled.copiedBuffer("FirstInServerHandler -> ", CharsetUtil.UTF_8)); } @Override public void channelReadComplete(ChannelHandlerContext ctx) throws Exception { System.out.println("==========Server console: FirstInServerHandler.channelReadComplete "); super.channelReadComplete(ctx); } } package com.bugStack.testHandle; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import io.netty.channel.ChannelFutureListener; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelOutboundHandlerAdapter; import io.netty.channel.ChannelPromise; import io.netty.util.CharsetUtil; public class FirstOutServerHandler extends ChannelOutboundHandlerAdapter { @Override public void read(ChannelHandlerContext ctx) throws Exception { System.out.println("==========Server console: FirstOutServerHandler.read "); super.read(ctx); } @Override public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception { ByteBuf in = (ByteBuf) msg; System.out.println("==========Server console: FirstOutServerHandler.write " + in.toString(CharsetUtil.UTF_8)); /* ctx.writeAndFlush(Unpooled.copiedBuffer(in, Unpooled.copiedBuffer("FirstOutServerHandler", CharsetUtil.UTF_8))) .addListener(ChannelFutureListener.CLOSE);*/ super.write(ctx, msg, promise); } @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { cause.printStackTrace(); ctx.close(); } } package com.bugStack.testHandle; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter; import io.netty.util.CharsetUtil; public class SecondInServerHandler extends ChannelInboundHandlerAdapter { @Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { ByteBuf in = (ByteBuf) msg; System.out.println("==========Server console:SecondInServerHandler.channelRead " + in.toString(CharsetUtil.UTF_8)); /* ctx.write(Unpooled.copiedBuffer(in, Unpooled.copiedBuffer("SecondInServerHandler -> ", CharsetUtil.UTF_8)));*/ } @Override public void channelReadComplete(ChannelHandlerContext ctx) throws Exception { System.out.println("==========Server console: SecondInServerHandler.channelReadComplete "); ctx.flush(); } @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { cause.printStackTrace(); ctx.close(); } } package com.bugStack.testHandle; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelOutboundHandlerAdapter; import io.netty.channel.ChannelPromise; import io.netty.util.CharsetUtil; public class SecondOutServerHandler extends ChannelOutboundHandlerAdapter { @Override public void read(ChannelHandlerContext ctx) throws Exception { System.out.println("==========Server console: SecondOutServerHandler.read "); super.read(ctx); } @Override public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception { ByteBuf in = (ByteBuf) msg; System.out.println("==========Server console: SecondOutServerHandler.write" + in.toString(CharsetUtil.UTF_8)); /* ctx.writeAndFlush(Unpooled.copiedBuffer(in, Unpooled.copiedBuffer("SecondOutServerHandler -> ", CharsetUtil.UTF_8)));*/ super.write(ctx, msg, promise); } } package com.bugStack.testHandle; import io.netty.bootstrap.Bootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelPipeline; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.SocketChannel; import io.netty.channel.socket.nio.NioSocketChannel; public class HelloClientDemo { public static void main(String[] args) { HelloClientDemo client = new HelloClientDemo(); client.start("localhost", 20000); } public void start(String ip, int port) { NioEventLoopGroup workerGroup = new NioEventLoopGroup(); try { Bootstrap bootstrap = new Bootstrap(); bootstrap.group(workerGroup); bootstrap.channel(NioSocketChannel.class); bootstrap.handler(new ChannelInitializer<SocketChannel>() { @Override protected void initChannel(SocketChannel ch) throws Exception { ChannelPipeline pipeline = ch.pipeline(); pipeline.addLast(new ClientOutHandler()); pipeline.addLast(new ClientInHandler()); } }); ChannelFuture future = bootstrap.connect(ip, port).sync(); future.channel().closeFuture().sync(); } catch (Exception e) { e.printStackTrace(); } finally { workerGroup.shutdownGracefully(); } } } package com.bugStack.testHandle; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelPipeline; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.SocketChannel; import io.netty.channel.socket.nio.NioServerSocketChannel; public class HelloServerDemo { public static void main(String[] args) { HelloServerDemo server = new HelloServerDemo(); server.start(20000); } public void start(int port) { NioEventLoopGroup bossGroup = new NioEventLoopGroup(1); NioEventLoopGroup workerGroup = new NioEventLoopGroup(); try { ServerBootstrap bootstrap = new ServerBootstrap(); bootstrap.group(bossGroup, workerGroup); bootstrap.channel(NioServerSocketChannel.class); bootstrap.childHandler(new ChannelInitializer<SocketChannel>() { @Override protected void initChannel(SocketChannel ch) throws Exception { ChannelPipeline pipeline = ch.pipeline(); pipeline.addLast(new FirstOutServerHandler()); pipeline.addLast(new SecondOutServerHandler()); pipeline.addLast(new FirstInServerHandler()); pipeline.addLast(new SecondInServerHandler()); } }); ChannelFuture future = bootstrap.bind(port).sync(); future.channel().closeFuture().sync(); } catch (Exception e) { e.printStackTrace(); } finally { bossGroup.shutdownGracefully(); workerGroup.shutdownGracefully(); } } } ```

netty高并发项目的boss/worker线程数,和业务线程数如何设置?

用netty搭建的高并发项目,比如游戏服务端,boss/worker和业务线程数如何确定?

netty传输inputstream

netty客户端如何接收服务端传输的InputStream 服务端Handler: @Override public void channelActive(ChannelHandlerContext ctx) { try { InputStream input ...; ChunkedStream chunkedStream = new ChunkedStream(input); ChannelFuture writeFuture = ctx.write(chunkedStream); writeFuture.addListener(ChannelFutureListener.CLOSE); } catch (IOException ex) { ex.printStackTrace(); } }

netty基于http协议实现二进制文件和文本文件的传输;

实现的功能是 netty客户端发送二进制文件(图片、视频等转化成流的形式) netty服务端接收并保存到本地,并响应给客户端另一个文件,并保存下来 (有没有这样的demo ps:有客户端和服务端)

Netty默认是对回车换行符过滤的,那么他是在什么时候过滤的呢,在什么地方可有监听到它过滤了回车换行

Netty LineBasedFrameDecoder默认是对回车换行符过滤的,那么他是在什么时候过滤的呢,在什么地方可有监听到它过滤了回车换行

netty测试高并发的问题

先上代码,大家帮忙看下。 服务端: package Server; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelOption; import io.netty.channel.EventLoopGroup; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.nio.NioServerSocketChannel; public class HelloServer { private static final int port = 7878; public void start() throws InterruptedException { EventLoopGroup bossGroup = new NioEventLoopGroup(); EventLoopGroup workGroup = new NioEventLoopGroup(); try { ServerBootstrap b = new ServerBootstrap(); b.group(bossGroup, workGroup); b.channel(NioServerSocketChannel.class); b.option(ChannelOption.SO_BACKLOG, 1024); b.childHandler(new SCCHandler()); // 绑定端口 ChannelFuture f = b.bind(port).sync(); // 等待服务端监听端口关闭 f.channel().closeFuture().sync(); } finally { // 优雅的退出 bossGroup.shutdownGracefully(); workGroup.shutdownGracefully(); } } public static void main(String[] args) { try { new HelloServer().start(); } catch (InterruptedException e) { e.printStackTrace(); } } } 客户端测试高并发的DEMO: package Client; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import io.netty.bootstrap.Bootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelOption; import io.netty.channel.EventLoopGroup; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.nio.NioSocketChannel; public class HelloClient { public static void main(String[] args) throws Exception { ScheduledExecutorService scheduledThreadPool = Executors .newScheduledThreadPool(3000); for (int i = 0; i < 3000; i++) { scheduledThreadPool.schedule(new Runnable() { public void run() { try { System.out.println("go"); new HelloClient("192.168.2.88", 7878).start(); } catch (Exception e) { System.out.println("压力测试失败->" + e.toString()); } } }, 200, TimeUnit.MILLISECONDS); } System.out.println("压力测试提交完成"); } private final String host; private final int port; public HelloClient(String host, int port) { this.host = host; this.port = port; } public void start() throws Exception { System.out.println("链接服务器开始"); EventLoopGroup group = new NioEventLoopGroup(); try { Bootstrap b = new Bootstrap(); b.group(group); b.channel(NioSocketChannel.class); // b.remoteAddress(new InetSocketAddress(host, port)); b.option(ChannelOption.TCP_NODELAY, true); b.handler(new ClientCCHandler()); // ChannelFuture f = b.connect().sync(); ChannelFuture f = b.connect(host, port); f.channel().closeFuture().sync(); } finally { group.shutdownGracefully(); } } } 到5000以上就就会出现无法连接的状态了……求解!!

如果能重来,我不会选择北漂——初见北京

一个人走的路

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

我说我不会算法,阿里把我挂了。

不说了,字节跳动也反手把我挂了。

2020年大厂Java面试前复习的正确姿势(800+面试题答案解析)

前言 个人觉得面试也像是一场全新的征程,失败和胜利都是平常之事。所以,劝各位不要因为面试失败而灰心、 丧失斗志。也不要因为面试通过而沾沾自喜,等待你的将是更美好的未来,继续加油! 本篇分享的面试题内容包括:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Redis、MySQL、Spring、SpringBoot、SpringCloud、RabbitMQ...

抖音上很火的时钟效果

反正,我的抖音没人看,别人都有几十万个赞什么的。 发到CSDN上来,大家交流下~ 主要用到原生态的 JS+CSS3。 具体不解释了,看注释: &lt;!DOCTYPE html&gt; &lt;html lang="en"&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;Title&lt;/tit...

记录下入职中软一个月(外包华为)

我在年前从上一家公司离职,没想到过年期间疫情爆发,我也被困在家里,在家呆着的日子让人很焦躁,于是我疯狂的投简历,看面试题,希望可以进大公司去看看。 我也有幸面试了我觉得还挺大的公司的(虽然不是bat之类的大厂,但是作为一名二本计算机专业刚毕业的大学生bat那些大厂我连投简历的勇气都没有),最后选择了中软,我知道这是一家外包公司,待遇各方面甚至不如我的上一家公司,但是对我而言这可是外包华为,能...

又出事了?网站被攻击了?高中生?

北京时间2020年3月27日9点整,如往常一样来到公司,带开电脑,正准备打开Github网站看一会源代码,再开始手头的工作。哟吼,一直打不开,一直出现如下页面: 我想很多网友也尝到了甜头,各大技术群炸开了锅,据网友反馈有攻击者正在发起大规模的中间人挟持,京东和Github等网站等网站都受到了影响。 什么是中间中间人挟持呢? 简而言之,就是攻击者在数据网络传输的过程中,截获传输过程中的数据并篡改...

培训班出来的人后来都怎么样了?(二)

接着上回说,培训班学习生涯结束了。后面每天就是无休止的背面试题,不是没有头脑的背,培训公司还是有方法的,现在回想当时背的面试题好像都用上了,也被问到了。回头找找面试题,当时都是打印下来天天看,天天背。 不理解呢也要背,面试造飞机,上班拧螺丝。班里的同学开始四处投简历面试了,很快就有面试成功的,刚开始一个,然后越来越多。不知道是什么原因,尝到胜利果实的童鞋,不满足于自己通过的公司,嫌薪水要少了,选择...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

工作八年,月薪60K,裸辞两个月,投简历投到怀疑人生!

近日,有网友在某职场社交平台吐槽,自己裸辞两个月了,但是找工作却让自己的心态都要崩溃了,全部无果,不是已查看无回音,就是已查看不符合。 “工作八年,两年一跳,裸辞两个月了,之前月薪60K,最近找工作找的心态崩了!所有招聘工具都用了,全部无果,不是已查看无回音,就是已查看不符合。进头条,滴滴之类的大厂很难吗???!!!投简历投的开始怀疑人生了!希望 可以收到大厂offer” 先来看看网...

我把华为小米年报放一起,发现华为才是真·手机公司,小米确实不靠卖手机赚钱...

郭一璞 发自 凹非寺量子位 报道 | 公众号 QbitAI国产手机界的两大玩家,华为&amp;小米,昨天在同一天前后脚发布了2019年财报。同行冤家,发财报也碰在了同一天。那我们就对比...

大牛都会用的IDEA调试技巧!!!

导读 前天面试了一个985高校的实习生,问了他平时用什么开发工具,他想也没想的说IDEA,于是我抛砖引玉的问了一下IDEA的调试用过吧,你说说怎么设置断点...

97年世界黑客编程大赛冠军作品(大小仅为16KB),惊艳世界的编程巨作

这是世界编程大赛第一名作品(97年Mekka ’97 4K Intro比赛)汇编语言所写。 整个文件只有4095个字节, 大小仅仅为16KB! 不仅实现了3D动画的效果!还有一段震撼人心的背景音乐!!! 内容无法以言语形容,实在太强大! 下面是代码,具体操作看最后! @echo off more +1 %~s0|debug e100 33 f6 bf 0 20 b5 10 f3 a5...

不要再到处使用 === 了

我们知道现在的开发人员都使用 === 来代替 ==,为什么呢?我在网上看到的大多数教程都认为,要预测 JavaScript 强制转换是如何工作这太复杂了,因此建议总是使用===。这些都...

什么是a站、b站、c站、d站、e站、f站、g站、h站、i站、j站、k站、l站、m站、n站?00后的世界我不懂!

A站 AcFun弹幕视频网,简称“A站”,成立于2007年6月,取意于Anime Comic Fun,是中国大陆第一家弹幕视频网站。A站以视频为载体,逐步发展出基于原生内容二次创作的完整生态,拥有高质量互动弹幕,是中国弹幕文化的发源地;拥有大量超粘性的用户群体,产生输出了金坷垃、鬼畜全明星、我的滑板鞋、小苹果等大量网络流行文化,也是中国二次元文化的发源地。 B站 全称“哔哩哔哩(bilibili...

十个摸鱼,哦,不对,是炫酷(可以玩一整天)的网站!!!

文章目录前言正文**1、Kaspersky Cyberthreat real-time map****2、Finding Home****3、Silk – Interactive Generative Art****4、Liquid Particles 3D****5、WINDOWS93****6、Staggering Beauty****7、Ostagram图片生成器网址****8、全历史网址*...

终于,月薪过5万了!

来看几个问题想不想月薪超过5万?想不想进入公司架构组?想不想成为项目组的负责人?想不想成为spring的高手,超越99%的对手?那么本文内容是你必须要掌握的。本文主要详解bean的生命...

毕业5年,我熬夜整理出了这50个优质的电子书网站,吐血推荐!

大家好,我是武哥,最近经常有小伙伴问我要电子书,都什么年代了,还找不到电子书吗?如果要说原因,那就是你还没遇到武哥我(手动滑稽~)!我今天把这么多年我经常看的电子书网站整理一下给大家,基本上能解决大家的需求。不管是在校生还是已经工作了,相信肯定对你有所帮助! 1.鸠摩搜书 首先给大家推荐的网站是:鸠摩搜书 地址:https://www.jiumodiary.com/ 这个网上非常棒,上面有很多优质...

MySQL性能优化(五):为什么查询速度这么慢

前期回顾: MySQL性能优化(一):MySQL架构与核心问题 MySQL性能优化(二):选择优化的数据类型 MySQL性能优化(三):深入理解索引的这点事 MySQL性能优化(四):如何高效正确的使用索引 前面章节我们介绍了如何选择优化的数据类型、如何高效的使用索引,这些对于高性能的MySQL来说是必不可少的。但这些还完全不够,还需要合理的设计查询。如果查询写的很糟糕,即使表结构再合理、索引再...

大厂的 404 页面都长啥样?最后一个笑了...

每天浏览各大网站,难免会碰到404页面啊。你注意过404页面么?猿妹搜罗来了下面这些知名网站的404页面,以供大家欣赏,看看哪个网站更有创意: 正在上传…重新上传取消 腾讯 正在上传…重新上传取消 网易 淘宝 百度 新浪微博 正在上传…重新上传取消 新浪 京东 优酷 腾讯视频 搜...

自从喜欢上了B站这12个UP主,我越来越觉得自己是个废柴了!

不怕告诉你,我自从喜欢上了这12个UP主,哔哩哔哩成为了我手机上最耗电的软件,几乎每天都会看,可是吧,看的越多,我就越觉得自己是个废柴,唉,老天不公啊,不信你看看…… 间接性踌躇满志,持续性混吃等死,都是因为你们……但是,自己的学习力在慢慢变强,这是不容忽视的,推荐给你们! 都说B站是个宝,可是有人不会挖啊,没事,今天咱挖好的送你一箩筐,首先啊,我在B站上最喜欢看这个家伙的视频了,为啥 ,咱撇...

代码注释如此沙雕,会玩还是你们程序员!

某站后端代码被“开源”,同时刷遍全网的,还有代码里的那些神注释。 我们这才知道,原来程序员个个都是段子手;这么多年来,我们也走过了他们的无数套路… 首先,产品经理,是永远永远吐槽不完的!网友的评论也非常扎心,说看这些代码就像在阅读程序员的日记,每一页都写满了对产品经理的恨。 然后,也要发出直击灵魂的质问:你是尊贵的付费大会员吗? 这不禁让人想起之前某音乐app的穷逼Vip,果然,穷逼在哪里都是...

总结了Mybatis,原来知识点也没多少嘛

看完这篇Mybatis,感觉你三天就会用了。

爬虫(101)爬点重口味的

小弟最近在学校无聊的很哪,浏览网页突然看到一张图片,都快流鼻血。。。然后小弟冥思苦想,得干一点有趣的事情python 爬虫库安装https://s.taobao.com/api?_ks...

疫情后北上广深租房价格跌了吗? | Alfred数据室

去年3月份我们发布了《北上广深租房图鉴》(点击阅读),细数了北上广深租房的各种因素对租房价格的影响。一年过去了,在面临新冠疫情的后续影响、城市尚未完全恢复正常运转、学校还没开学等情况下...

面试官给我挖坑:a[i][j] 和 a[j][i] 有什么区别?

点击上方“朱小厮的博客”,选择“设为星标”后台回复&#34;1024&#34;领取公众号专属资料本文以一个简单的程序开头——数组赋值:int LEN = 10000; int[][] ...

在拼多多上班,是一种什么样的体验?我心态崩了呀!

之前有很多读者咨询我:武哥,在拼多多上班是一种什么样的体验?由于一直很忙,没抽出时间来和大家分享。上周末特地花点时间来写了一篇文章,跟大家分享一下拼多多的日常。 1. 倒时差的作息 可能很多小伙伴都听说了,拼多多加班很严重。这怎么说呢?作息上确实和其他公司有点区别,大家知道 996,那么自然也就能理解拼多多的“11 11 6”了。 所以当很多小伙伴早上出门时,他们是这样的: 我们是这样的: 当...

相关热词 c# 开发接口 c# 中方法上面的限制 c# java 时间戳 c#单元测试入门 c# 数组转化成文本 c#实体类主外键关系设置 c# 子函数 局部 c#窗口位置设置 c# list 查询 c# 事件 执行顺序
立即提问
相关内容推荐