读取三菱的触摸屏与PLC通讯的日志文件

大家好,想咨询一个问题
设备:一台三菱PLC机器、一个触摸屏、一台PC
条件:触摸屏通过串口连接PLC机器进行操作控制
需求:通过PC去读取PLC机器中存储的通信事件日志
请问这个可以实现吗?怎样才能实现?

1个回答

如果网卡能够通信,那么就是通过网卡给PLC发送对应的数据, 然后读取它的返回,这个需要查看它的SDK等

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
服务器与PLC通讯,怎么读取数据
想要读取PLC中的数据,不用MODBUS,应该要怎么去读取数据?求解。。。。。。。。
java程序读取PLC的浮点数,读取到的小数位错误,请问如何解决?
1.采用modbus4j实现了modbus通信,但读取PLC的浮点数时,读取到整数位正确,小数位错误,请问如何解决? 2. 读取PLC保持寄存器的方法如下: ``` readHoldingRegistersTest(master,1,1,4); private static void readHoldingRegistersTest(ModbusMaster master, int slaveId, int start, int len) { try { ReadHoldingRegistersRequest request = new ReadHoldingRegistersRequest( slaveId, start, len); ReadHoldingRegistersResponse response = (ReadHoldingRegistersResponse) master .send(request); if (response.isException()) { System.out.println("Exception response: message=" + response.getExceptionMessage()); } else { System.out.println(Arrays.toString(response.getShortData())); short[] list = response.getShortData(); byte[] bb = shortToBytes(list); Float ff=byte2float(bb,0); System.out.println("读到"+ff); } } catch (ModbusTransportException e) { e.printStackTrace(); } } ``` 3.和PLC通讯时,PLC给出的数字为46.68,程序读取到的数字为46.5,![图片说明](https://img-ask.csdn.net/upload/201912/10/1575987797_782854.png) 4.和modbus slave仿真软件通讯时,数据读取正常。控制台输出如下:
基于VB的三菱PLC跟PC通信的(读取PLC的X寄存器状态)的例子
PLC是FX3u-48M的,小弟想做一个通讯的试验,我给PLC 的X0高电平后,想从VB上的程序读出X寄存器为高电平或低电平,Y寄存器的通断可以,但是要读X寄存器的状态该怎样设置?
c语言如何删除文本文件的内容,和读取指定文件夹里的文件?
具体来说,逐行读取部分的文件,读取其中部分数据,判断后决定是否删除本行数据,文件每天都在更新,想达到放入指定文件夹就可以读取并且删除部分不合格数据的功能,我是个c萌新,求大家帮个忙,谢谢!
springboot logback日志不能每天生成新的日志文件,全部日志在一个文件里?
如题:springboot+logback日志不能每天切割出新的日志文件,全部的日志在一个文件里。 logback配置如下,已经用了 SizeAndTimeBasedRollingPolicy 滚动策略,但是日志不会自动按天切分,只有在重启的时候才会重新读取当天日期,生成新的日志文件。 ``` <?xml version="1.0" encoding="utf-8" ?> <configuration> <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender"> <layout class="ch.qos.logback.classic.PatternLayout"> <!-- <pattern> %d - %msg%n &lt;!&ndash; 控制台打印日志文件体 时间-信息 &ndash;&gt; </pattern>--> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </layout> </appender> <!-- info日志 --> <appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 过滤日志 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <onMatch>DENY</onMatch> <!-- 如果命中就禁止这条日志 --> <onMismatch>ACCEPT</onMismatch> <!-- 如果没有命中就使用这条规则 --> </filter> <encoder> <!--格式化输出,%d:日期;%thread:线程名;%-5level:级别,从左显示5个字符宽度;%msg:日志消息;%n:换行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> <!-- 设置字符集 --> <charset>UTF-8</charset> </encoder> <!-- 滚动策略 --> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- 设置info日志路径 日志文件输出的文件名--> <fileNamePattern>../logs/%d{yyyy-MM}/api-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <!--日志文件保留天数--> <MaxHistory>30</MaxHistory> <!--日志文件最大的大小--> <maxFileSize>5MB</maxFileSize> </rollingPolicy> </appender> <!-- error日志 --> <appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 过滤日志 --> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>ERROR</level> </filter> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> <!-- 滚动策略 --> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- 设置error日志路径 --> <fileNamePattern>../logs/%d{yyyy-MM}/api-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <!--日志文件保留天数--> <MaxHistory>30</MaxHistory> <!--日志文件最大的大小--> <maxFileSize>5MB</maxFileSize> </rollingPolicy> </appender> <!-- api访问日志 --> <appender name="apiTopicLog" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 过滤日志 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>../logs/%d{yyyy-MM}/api_topic-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <MaxHistory>30</MaxHistory> <!--日志文件最大的大小--> <maxFileSize>5MB</maxFileSize> </rollingPolicy> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n</pattern> </encoder> </appender> <!-- 1. 输出SQL 到控制台和文件--> <logger name="org.hibernate.SQL" additivity="false"> <level value="DEBUG"/> <!-- <appender-ref ref="fileInfoLog"/>--> <appender-ref ref="consoleLog"/> </logger> <!-- 2. 输出SQL 的参数到控制台和文件--> <logger name="org.hibernate.type.descriptor.sql.BasicBinder" additivity="false" level="TRACE"> <level value="TRACE"/> <!-- <appender-ref ref="fileInfoLog"/>--> <appender-ref ref="consoleLog"/> </logger> <logger name="apiTopic" additivity="false"> <!-- 添加appender --> <appender-ref ref="fileInfoLog"/> <appender-ref ref="apiTopicLog"/> <appender-ref ref="consoleLog"/> </logger> <!-- 设置默认日志级别为INFO --> <root level="info"> <appender-ref ref="consoleLog"/> <appender-ref ref="fileInfoLog"/> <appender-ref ref="fileErrorLog"/> </root> </configuration> ```
Modbus poll工具与台达plc通讯读取寄存器D0的值,读不了,大神看看该怎么做?
![图片说明](https://img-ask.csdn.net/upload/201912/20/1576809266_568403.jpg) ![图片说明](https://img-ask.csdn.net/upload/201912/20/1576809292_881763.jpg) ![图片说明](https://img-ask.csdn.net/upload/201912/20/1576809309_100691.jpg)
从linux服务器中读取文件数据
现有一个需求: 在一台服务器上写日志文件,每当日志文件写到一定大小时,比如是1G,会将这个日志文件改名成另一个名字,并新建一个与原文件名相同的日志文件,再往这个新建的日志文件里写数据;要求写一个程序能实时地读取日志文件中的内容,并且不能写日志操作、重命名操作、不能修改日志文件的任何数据,保持日志文件的完整性。 首先,这个问题在windows下几乎无解,因为一个程序打开了一个文件,再要对文件重命名是不可能的;而在Linux下,可以得到完美解决。因为Linux的文件系统有别于windows,Linux不使用文件名,而是使用inode号码来识别文件。 现在的问题是,使用Apache的文件FTPClient读取文件时,不能保证你读取的数据文件会不会出现重命名等现象。 请问大家,有什么好的解决思路吗?
Logstash 读取日志文件,增量
input { file { path => "/usr/local/elk/mos-log/mt.log" type => "mos-mt-log" codec => multiline { pattern => "^\[" negate => true what => "next" } start_position => "end" } file { path => "/usr/local/elk/mos-log/rpt.log" type => "mos-rpt-log" codec => multiline { pattern => "^\[" negate => true what => "next" } start_position => "end" } } 这是conf文件中的input,再我每往日志文件手动添加一条日志时,logstash总是从头读取一遍,怎么样使logstash只去读取我新添加的日志
c# 运用serialport与PLC串口通讯,读取(例如D200)的数据
网上下的 c# 运用serialport与PLC串口通讯程序,小白看不太懂下的程序,求大神帮忙分析下,主要想知道程序中的tebox1、textbox4、textbox5、textbox6、textbox7分别对应图中哪个空,对应的空应填写什么,例如想读取三菱F3X系列PLC D200的数据,初始地址填200?那设备地址和长度填啥? 界面如下:![图片说明](https://img-ask.csdn.net/upload/201806/14/1528961750_92350.png) 主要程序如下: private void btn_open_Click(object sender, EventArgs e) { int nSelect; btn_open.Enabled = false; Object selectedItem = cbxCOMPort.SelectedItem; sp.PortName = selectedItem.ToString();//串口 selectedItem = cbxBaudRate.SelectedItem; sp.BaudRate = int.Parse(selectedItem.ToString());//波特率 nSelect = cbxDataBits.SelectedIndex;//数据位 switch (nSelect) { case 0: sp.DataBits = 8; break; case 1: sp.DataBits = 7; break; case 2: sp.DataBits = 6; break; case 3: sp.DataBits = 5; break; } nSelect = cbxParity.SelectedIndex; switch (nSelect) { case 0: sp.Parity = Parity.None; break; case 1: sp.Parity = Parity.Odd; break; case 2: sp.Parity = Parity.Even; break; case 3: sp.Parity = Parity.Mark; break; case 4: sp.Parity = Parity.Space; break; } nSelect = cbxStopBits.SelectedIndex; switch (nSelect) { case 0: sp.StopBits = StopBits.None; break; case 1: sp.StopBits = StopBits.One; break; case 2: sp.StopBits = StopBits.OnePointFive; break; case 3: sp.StopBits = StopBits.Two; break; } sp.Open(); btn_close.Enabled = true; } private void btn_send_Click(object sender, EventArgs e) { textBox1.Text = ""; int n = 6; byte[] buf = new byte[n]; string ee = textBox4.Text; buf[0] = Convert.ToByte(ee); if (comboBox1.Text == "3X") { buf[1] = Convert.ToByte(3); } else { buf[1] = Convert.ToByte(4); } if (int.Parse(textBox5.Text) <= 255) { buf[2] = Convert.ToByte(0); buf[3] = Convert.ToByte(int.Parse(textBox5.Text)); } else { if (Convert.ToString(int.Parse(textBox5.Text), 16).Length < 4) { int b = Convert.ToInt32(Convert.ToString(int.Parse(textBox5.Text), 16).Substring(0, 1), 16); buf[2] = Convert.ToByte(b); int c = Convert.ToInt32(Convert.ToString(int.Parse(textBox5.Text), 16).Substring(1, 2), 16); buf[3] = Convert.ToByte(c); } else { int b = Convert.ToInt32(Convert.ToString(int.Parse(textBox5.Text), 16).Substring(0, 2), 16); buf[2] = Convert.ToByte(b); int c = Convert.ToInt32(Convert.ToString(int.Parse(textBox5.Text), 16).Substring(2, 2), 16); buf[3] = Convert.ToByte(c); } } if (int.Parse(textBox6.Text) <= 255) { buf[4] = Convert.ToByte(0); buf[5] = Convert.ToByte(int.Parse(textBox6.Text)); } else { if (Convert.ToString(int.Parse(textBox6.Text), 16).Length < 4) { int d = Convert.ToInt32(Convert.ToString(int.Parse(textBox6.Text), 16).Substring(0, 1), 16); buf[4] = Convert.ToByte(d); int f = Convert.ToInt32(Convert.ToString(int.Parse(textBox6.Text), 16).Substring(1, 2), 16); buf[5] = Convert.ToByte(f); } else { int d = Convert.ToInt32(Convert.ToString(int.Parse(textBox6.Text), 16).Substring(0, 2), 16); buf[4] = Convert.ToByte(d); int f = Convert.ToInt32(Convert.ToString(int.Parse(textBox6.Text), 16).Substring(2, 2), 16); buf[5] = Convert.ToByte(f); } } p = int.Parse(textBox6.Text) * 2 + 5; byte[] buf1 = new byte[n + 2]; byte[] ReturnData = new byte[2]; ReturnData = CRC16_C(buf); for (int i = 0; i < n; i++) { buf1[i] = buf[i]; } buf1[n] = ReturnData[1]; buf1[n + 1] = ReturnData[0]; sp.Write(buf1.ToArray(), 0, n + 2); } void sp_DataReceived(object sender, SerialDataReceivedEventArgs e) { int n = sp.BytesToRead; byte[] TxData = new byte[n];//声明一个临时数组存储当前来的串口数据 sp.Read(TxData, 0, n); //读取缓冲数据 m = m + n; this.Invoke((EventHandler) (delegate { Array.Resize(ref TxData2, m);//改写数组大小 TxData.CopyTo(TxData2, m - TxData.Length); if (m == p) { byte[] data = new byte[p - 2]; for (int i = 0; i < TxData2.Length - 2; i++) { data[i] = TxData2[i]; } byte[] data2 = new byte[2]; data2[0] = TxData2[TxData2.Length - 2]; data2[1] = TxData2[TxData2.Length - 1]; byte[] data1 = new byte[2]; data1 = CRC16_C(data); if (data1[0] == data2[1] && data1[1] == data2[0]) { for (int j = 3; j <= m - 4; j = j + 2) { string s1 = TxData2[j].ToString(); string s2 = TxData2[j + 1].ToString(); string s = s1 + s2; int g = Convert.ToInt32(s, 10); string h = g.ToString(); textBox1.Text += h + " "; } textBox7.Text = "读取成功"; } else { textBox7.Text = "读取失败"; } m = 0; } } ) ); } public byte[] CRC16_C(byte[] data) { byte CRC16Lo; byte CRC16Hi; byte CL; byte CH; byte SaveHi; byte SaveLo; byte[] tmpData; int Flag; CRC16Lo = 0xFF; CRC16Hi = 0xFF; CL = 0x01; CH = 0xA0; tmpData = data; for (int i = 0; i < tmpData.Length; i++) { CRC16Lo = (byte)(CRC16Lo ^ tmpData[i]); for (Flag = 0; Flag <= 7; Flag++) { SaveHi = CRC16Hi; SaveLo = CRC16Lo; CRC16Hi = (byte)(CRC16Hi >> 1); CRC16Lo = (byte)(CRC16Lo >> 1); if ((SaveHi & 0x01) == 0x01) { CRC16Lo = (byte)(CRC16Lo | 0x80); } if ((SaveLo & 0x01) == 0x01) { CRC16Hi = (byte)(CRC16Hi ^ CH); CRC16Lo = (byte)(CRC16Lo ^ CL); } } } byte[] ReturnData = new byte[2]; ReturnData[0] = CRC16Hi; ReturnData[1] = CRC16Lo; return ReturnData;
JAVA 如何倒序读取并输出rtf文件的内容?
我本地有一个损坏的rtf文件,word打不开了,我想用程序读取其中的内容进行输出。但是,只能输出前边一小部分内容,我想要后边的一部分内容,各位大神有没有人知道如何倒序读取rtf文件的内容并打印到控制台上?
centos或ubuntu中的音频管理器是如何实现实时读取音频通道状态的
如题,因最近有一个需求需要获取当前音频通道,如Rear Mic、line in等;通过检测input下的event只能获取到设备插入或拔出信息,而不能读取到程序运行前音频通道的状态,即不发生设备插拔事件的话就无法获知设备的状态。而os中的sound设置中的gui却是实时显示通道状态的,因此我想知道这种功能是如何实现的,是读取dev下的哪个文件吗?
已知Avro的schema信息,如何用avro读取二进制文件流(非.avro文件)?
RT,输入为二进制文件流,或者ByteBuffer;Avro的Schema对象信息。 需要输出Avro泛型对象GenericRecord。 求解
读取多个文件进行并根据文件第一列进行聚合
需求:读取文件1到文件4,输出最终文件。 ![图片说明](https://img-ask.csdn.net/upload/201912/25/1577271529_370724.png)
Java语言读取软驱中软盘上的文件,并且拷贝到硬盘上,怎么写程序的呢
Java语言读取软驱中软盘上的文件,并且拷贝到硬盘上,怎么写程序的呢
关于读取大量日志文件问题。
本人在做一个 文件入库程序。 文件基本上就是日志文件。。。以天问单位。。 文件的读取格式是行读取,每一行会封装成对象。。。。。 一个文件有500行。。 一次作业大概要处理4个文件。 最终的目的是将所有文件,按照行封装成对象后。放到一个容器中。。但是,按照现在的处理方法,太慢了。。。 我想问问。有什么比较地道的做法吗。 本人现在的做法,就是加大虚拟机内存。。 一个一个文件遍历存储。
java代码读取文件夹下所有文件内容,实现读取一个文件处理一个文件!?
java代码读取文件夹下所有文件内容,实现读取一个文件根据经、纬度字段计算距离,最后写出的文件命名均以文件夹下原文件的名字命名(比如原文件是1.txt,写出的文件就是1.txt) 求大神给个java代码实现!!!!!
Huffman编码与解码 从文件读取
Huffman编码与解码(Huffman编码、二叉树) [问题描述] 对一篇不少于5000字符的英文文章(source.txt),统计各字符出现的次数,实现Huffman编码(code.dat),以及对编码结果的解码(recode.txt)。 [基本要求] (1) 输出每个字符出现的次数和编码,并存储文件(Huffman.txt)。 (2) 在Huffman编码后,英文文章编码结果保存到文件中(code.dat),编码结果必须是二进制形式,即0 1的信息用比特位表示,不能用字符’0’和’1’表示(*)。 (3) 实现解码功能。
如何读取txt文件中的单词?
我本来想用random.choice来从一个txt文件中随机读取单词,但他给我的不是单词,是单个的字母,请问如何解决?
求助:一段程序从桌面的“图片”文件夹读取二进制文件传到已经有的缓冲区handle。?
一段控制台程序从桌面的“图片”文件夹读取二进制文件传到已经有的缓冲区handle。 求一段完整的代码最好包涵头文件啥的
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 cpp 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7 p...
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小型人工智障。 知识可以运用在不同地方,不一定非是天气预报。
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
英特尔不为人知的 B 面
从 PC 时代至今,众人只知在 CPU、GPU、XPU、制程、工艺等战场中,英特尔在与同行硬件芯片制造商们的竞争中杀出重围,且在不断的成长进化中,成为全球知名的半导体公司。殊不知,在「刚硬」的背后,英特尔「柔性」的软件早已经做到了全方位的支持与支撑,并持续发挥独特的生态价值,推动产业合作共赢。 而对于这一不知人知的 B 面,很多人将其称之为英特尔隐形的翅膀,虽低调,但是影响力却不容小觑。 那么,在...
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
刷了几千道算法题,这些我私藏的刷题网站都在这里了!
遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活… 然而我是谁,我可是死狗中的战斗鸡,智力不够那刷题来凑,开始了夜以继日哼哧哼哧刷题的日子,从此"读题与提交齐飞, AC 与 WA 一色 ",我惊喜的发现被题虐既刺激又有快感,那一刻我泪流满面。这么好的事儿作为一个正直的人绝不能自己独享,经过激烈的颅内斗争,我决定把我私藏的十几个 T 的,阿不,十几个刷题网...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看...
白话阿里巴巴Java开发手册高级篇
不久前,阿里巴巴发布了《阿里巴巴Java开发手册》,总结了阿里巴巴内部实际项目开发过程中开发人员应该遵守的研发流程规范,这些流程规范在一定程度上能够保证最终的项目交付质量,通过在时间中总结模式,并推广给广大开发人员,来避免研发人员在实践中容易犯的错误,确保最终在大规模协作的项目中达成既定目标。 无独有偶,笔者去年在公司里负责升级和制定研发流程、设计模板、设计标准、代码标准等规范,并在实际工作中进行...
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
Nginx 原理和架构
Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器。Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。 Nginx 的整体架构 Nginx 里有一个 master 进程和多个 worker 进程。master 进程并不处理网络请求,主要负责调度工作进程:加载配置、启动工作进程及非停升级。worker 进程负责处...
【图解经典算法题】如何用一行代码解决约瑟夫环问题
约瑟夫环问题算是很经典的题了,估计大家都听说过,然后我就在一次笔试中遇到了,下面我就用 3 种方法来详细讲解一下这道题,最后一种方法学了之后保证让你可以让你装逼。 问题描述:编号为 1-N 的 N 个士兵围坐在一起形成一个圆圈,从编号为 1 的士兵开始依次报数(1,2,3…这样依次报),数到 m 的 士兵会被杀死出列,之后的士兵再从 1 开始报数。直到最后剩下一士兵,求这个士兵的编号。 1、方...
吐血推荐珍藏的Visual Studio Code插件
作为一名Java工程师,由于工作需要,最近一个月一直在写NodeJS,这种经历可以说是一部辛酸史了。好在有神器Visual Studio Code陪伴,让我的这段经历没有更加困难。眼看这段经历要告一段落了,今天就来给大家分享一下我常用的一些VSC的插件。 VSC的插件安装方法很简单,只需要点击左侧最下方的插件栏选项,然后就可以搜索你想要的插件了。 下面我们进入正题 Material Theme ...
如何防止抄袭PCB电路板
目录 1、抄板是什么 2、抄板是否属于侵权 3、如何防止抄板 1、抄板是什么 抄板也叫克隆或仿制,是对设计出来的PCB板进行反向技术研究;目前全新的定义:从狭义上来说,抄板仅指对电子产品电路板PCB文件的提取还原和利用文件进行电路板克隆的过程;从广义上来说,抄板不仅包括对电路板文件提取、电路板克隆、电路板仿制等技术过程,而且包括对电路板文件进行修改(即改板)、对电子产品外形模具进行三维...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
Python 植物大战僵尸代码实现(2):植物卡片选择和种植
这篇文章要介绍的是: - 上方植物卡片栏的实现。 - 点击植物卡片,鼠标切换为植物图片。 - 鼠标移动时,判断当前在哪个方格中,并显示半透明的植物作为提示。
相关热词 c# 二进制截断字符串 c#实现窗体设计器 c#检测是否为微信 c# plc s1200 c#里氏转换原则 c# 主界面 c# do loop c#存为组套 模板 c# 停掉协程 c# rgb 读取图片
立即提问