多人聊天器求大神代码! 100C
  1. 对功能的规定
    分必选项和任选项,其中,必选项是必须完成的,属于项目答辩的入口条件,所有人都要做,未完成者取消答辩资格; 任选项不是入口条件,但每完成一项都会加分,对于完成了必选项的同学,尽可能地多完成一些任选项,以期获得更高的答辩成绩。 如果所有项(包括必选和任选)都完成,那么功能分就是满分。 如果设计思路、界面效果、代码组织等方面有个性(或和别人的不同),则获得附加分。

1.1 服务器功能
1.1.1配置文件
属性:任选
描述:服务器的配置从配置文件中获取,内容包括服务器地址(服务器IP 和 port),具体格式如下:
SERVER_IP = 192.168.1.11
PORT = 12012
注意:具体IP和port以本地为准

1.1.2账户文件
    属性:必选
    描述:客户端注册的用户名和密码需要服务器保存。必须完成下列所有情况:
    ●内容为用户名和用户密码列表;
    ●必须用文本形式;
    ●用户注册用户名重复,需要提示重新选择用户名
    ●用户登录时用户名重复,需要提示重新选择用户名
    ●用户名密码输入错误,应该提示。给3次连续错误机会,超过3次退出。

1.1.3支持多客户端
    属性:必选
    描述:基于tcp协议的客户端服务器通讯,服务器采用多线程支持多个客户端连接。

1.1.4业务功能
    属性:必选
    描述:群聊,单聊

1.1.5链表记录会话连接
    属性:必选
    描述:服务端使用链表记录当前客户端的会话连接,多个线程访问同一个链表,采用互斥锁来控制。
          链表包含下列信息:客户端的ip地址、连接时间,用户名。

1.1.6链表记录动态维护
    属性:任选
    描述:服务端能够动态维护链表记录;服务器有命令供查询显示。

1.1 客户端功能
1.2.1注册
属性:必选
描述:客户端提供注册用户名,密码功能,用户名密码通过网络传输到服务器认证(用户名不可重复),认证通过后写入账户文件。

1.2.2登陆(认证)
    属性:必选
    描述:服务器和客户端增加用户密码登陆机制,包含如下流程:
      ●客户端把接受的用户名密码发送至服务器;
      ●服务器启动后从配置文件中读取用户信息形成数据表,根据此来验证密码。验证后返回认证结果给客户端(不可一个用户名同时登录)
      ●如果认证正确,服务器开始接受客户端的命令;认证错误重新认证(3次登陆错误退出)

1.3心跳机制
    属性:必选
    描述:客户端与服务端之间使用心跳机制,必须完成下列所有情况:
      ●客户端定时向服务端发送一个数据包(心跳包,内容不限,3秒间隔),证明自己活着;
      ●服务端显示来自某个IP地址客户端的心跳包;


1.4心跳异常
    属性:任选
    描述:服务器超过一定的时间没有收到客户端的心跳包(3秒间隔),连续5个包没有接收到则说明客户端出现问题,必须做出如下的处理:
      ●记录状况;
      ●断开连接;

1.5聊天功能
    属性:必选
    描述:两客户端之间能够直接文字通信(类似于QQ聊天),
      ●能够查询在线列表,具体信息从服务器的链表记录获得;
      ●可以和别的客户端聊天,发数据采用“用户名后面加数据”方式;

1.6日志文件
    属性:任选
    描述:服务端通过一个日志文件记录所有客户端连接、命令执行、断开信息(时间,IP地址,执行的命令,心跳包超时等)。 例如:“客户端连接时间 客户端IP地址 客户端的命令 数据包类型(就是上面1.6的data_type) 客户端发送的信息 ”。

2.对性能的规定

本系统在设计方面本着方便、实用的宗旨,性能方面应遵循如下原则:
●执行效率(时间): 软件运行应该尽量高效;避免没有必要的循环处理、重复处理;
●资源损耗(空间):设计尽量节约资源(内存、数组、链表等);不用的资源要及时释放;
●初始化: 变量、数组、内存块、链表节点(其next要置NULL)等都要初始化;
●健壮性:不能出现野指针、内存泄露、数组越界访问等等:
◎申请内存之后,应该立即检查指针值是否为NULL;动态内存的申请与释放必须配对,防止内存泄漏。释放了内存之后,立即将指针设置为NULL,防止产生“野指针”;
◎函数的入参必须进行有效性判断;用户输入、函数返回值(如果用到的话)都要判断;
◎switch-case一定要有default;if-else if等后要有else,除非if满足后返回或退出;
◎数组的下标不要发生“多1”或者“少1”操作。

3.对排版的规定

●缩进要对齐;
●长行拆分;
●二元操作符的前后应当加空格,包括如下操作符:
赋值操作符、比较操作符、算术操作符、逻辑操作符、位域操作符,如"="、"+=" ">="、"<="、"+"、"*"、"%"、"&&"、"||"、"<<", "^" 等;
●空行:
◎结构体 声明之后、每个函数定义结束之后都要加1行空行;
◎逻揖上密切相关的语句之间不加空行,其它地方应加空行分隔;
◎一行代码只做一件事情;
◎"if"、"for"、"while"、"do"等语句自占一行,执行语句不得紧跟其后。不论执行语句有多少都要加 "{ }";

4.对可维护性的规定

对可维护性的最终要求:别人能够轻松上手你的代码。
●结构清晰:
◎模块化:对界面(显示)、菜单管理、逻辑管理、文件操作等等代码要独立,必须多个.java文件;
◎封装:一个函数只做一件事,函数功能要单一;一个函数不能超过50行;
避免重复、冗余代码;
◎代码块清晰。
●变量命名规范,变量名应该具有自明性:
◎常量,枚举和宏定义命名
常量名,宏和枚举值由全大写字母组成,单词间通过下划线来界定;
◎函数的命名:
使用"动词"或者"动词+名词"(动宾词组)的形式,由一个或多个单词组成且以小写字母开头,以后每个单词的首字母必须大写
◎变量的命名与定义
应当使用"名词"或者"形容词+名词",由一个或多个单词组成且以小写字母开头,以后每个单词之间用下划线隔开。
●注释充分:变量、函数(包括参数、返回值)、代码功能块、一些复杂算法……等都需要
清晰明了地说明;

5.对个性的规定

把项目做出个性出来。下列各项中有和比人不同之处、或很有创意,即可认为有个性。独立设计的软件,一般都会出现一些个性。参考、抄袭不会出现个性。

●设计思路:包括软件的整体架构、功能块的设计思路、函数封装等等;
●功能实现:从用户的角度,使用上发现与众不同的地方;
●其它方面;

2个回答

这个东西很简单的。。。 我这里有一个第三方的需不? QQ 707767073

哥们,这是本科毕设吧?

weixin_36810634
断-殇 哎,坑死了 ,我心急如焚!
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
多人聊天器,求大神发源代码!初来乍到,小弟实在不是很懂,望大神指教!在线等大神!

1. 对功能的规定 分必选项和任选项,其中,必选项是必须完成的,属于项目答辩的入口条件,所有人都要做,未完成者取消答辩资格; 任选项不是入口条件,但每完成一项都会加分,对于完成了必选项的同学,尽可能地多完成一些任选项,以期获得更高的答辩成绩。 如果所有项(包括必选和任选)都完成,那么功能分就是满分。 如果设计思路、界面效果、代码组织等方面有个性(或和别人的不同),则获得附加分。 1.1 服务器功能 1.1.1配置文件 属性:任选 描述:服务器的配置从配置文件中获取,内容包括服务器地址(服务器IP 和 port),具体格式如下: SERVER_IP = 192.168.1.11 PORT = 12012 注意:具体IP和port以本地为准 1.1.2账户文件 属性:必选 描述:客户端注册的用户名和密码需要服务器保存。必须完成下列所有情况: ●内容为用户名和用户密码列表; ●必须用文本形式; ●用户注册用户名重复,需要提示重新选择用户名 ●用户登录时用户名重复,需要提示重新选择用户名 ●用户名密码输入错误,应该提示。给3次连续错误机会,超过3次退出。 1.1.3支持多客户端 属性:必选 描述:基于tcp协议的客户端服务器通讯,服务器采用多线程支持多个客户端连接。 1.1.4业务功能 属性:必选 描述:群聊,单聊 1.1.5链表记录会话连接 属性:必选 描述:服务端使用链表记录当前客户端的会话连接,多个线程访问同一个链表,采用互斥锁来控制。 链表包含下列信息:客户端的ip地址、连接时间,用户名。 1.1.6链表记录动态维护 属性:任选 描述:服务端能够动态维护链表记录;服务器有命令供查询显示。 1.1 客户端功能 1.2.1注册 属性:必选 描述:客户端提供注册用户名,密码功能,用户名密码通过网络传输到服务器认证(用户名不可重复),认证通过后写入账户文件。 1.2.2登陆(认证) 属性:必选 描述:服务器和客户端增加用户密码登陆机制,包含如下流程: ●客户端把接受的用户名密码发送至服务器; ●服务器启动后从配置文件中读取用户信息形成数据表,根据此来验证密码。验证后返回认证结果给客户端(不可一个用户名同时登录) ●如果认证正确,服务器开始接受客户端的命令;认证错误重新认证(3次登陆错误退出) 1.3心跳机制 属性:必选 描述:客户端与服务端之间使用心跳机制,必须完成下列所有情况: ●客户端定时向服务端发送一个数据包(心跳包,内容不限,3秒间隔),证明自己活着; ●服务端显示来自某个IP地址客户端的心跳包; 1.4心跳异常 属性:任选 描述:服务器超过一定的时间没有收到客户端的心跳包(3秒间隔),连续5个包没有接收到则说明客户端出现问题,必须做出如下的处理: ●记录状况; ●断开连接; 1.5聊天功能 属性:必选 描述:两客户端之间能够直接文字通信(类似于QQ聊天), ●能够查询在线列表,具体信息从服务器的链表记录获得; ●可以和别的客户端聊天,发数据采用“用户名后面加数据”方式; 1.6日志文件 属性:任选 描述:服务端通过一个日志文件记录所有客户端连接、命令执行、断开信息(时间,IP地址,执行的命令,心跳包超时等)。 例如:“客户端连接时间 客户端IP地址 客户端的命令 数据包类型(就是上面1.6的data_type) 客户端发送的信息 ”。 2.对性能的规定 本系统在设计方面本着方便、实用的宗旨,性能方面应遵循如下原则: ●执行效率(时间): 软件运行应该尽量高效;避免没有必要的循环处理、重复处理; ●资源损耗(空间):设计尽量节约资源(内存、数组、链表等);不用的资源要及时释放; ●初始化: 变量、数组、内存块、链表节点(其next要置NULL)等都要初始化; ●健壮性:不能出现野指针、内存泄露、数组越界访问等等: ◎申请内存之后,应该立即检查指针值是否为NULL;动态内存的申请与释放必须配对,防止内存泄漏。释放了内存之后,立即将指针设置为NULL,防止产生“野指针”; ◎函数的入参必须进行有效性判断;用户输入、函数返回值(如果用到的话)都要判断; ◎switch-case一定要有default;if-else if等后要有else,除非if满足后返回或退出; ◎数组的下标不要发生“多1”或者“少1”操作。 3.对排版的规定 ●缩进要对齐; ●长行拆分; ●二元操作符的前后应当加空格,包括如下操作符: 赋值操作符、比较操作符、算术操作符、逻辑操作符、位域操作符,如"="、"+=" ">="、"<="、"+"、"*"、"%"、"&&"、"||"、"<<", "^" 等; ●空行: ◎结构体 声明之后、每个函数定义结束之后都要加1行空行; ◎逻揖上密切相关的语句之间不加空行,其它地方应加空行分隔; ◎一行代码只做一件事情; ◎"if"、"for"、"while"、"do"等语句自占一行,执行语句不得紧跟其后。不论执行语句有多少都要加 "{ }"; 4.对可维护性的规定 对可维护性的最终要求:别人能够轻松上手你的代码。 ●结构清晰: ◎模块化:对界面(显示)、菜单管理、逻辑管理、文件操作等等代码要独立,必须多个.java文件; ◎封装:一个函数只做一件事,函数功能要单一;一个函数不能超过50行; 避免重复、冗余代码; ◎代码块清晰。 ●变量命名规范,变量名应该具有自明性: ◎常量,枚举和宏定义命名 常量名,宏和枚举值由全大写字母组成,单词间通过下划线来界定; ◎函数的命名: 使用"动词"或者"动词+名词"(动宾词组)的形式,由一个或多个单词组成且以小写字母开头,以后每个单词的首字母必须大写 ◎变量的命名与定义 应当使用"名词"或者"形容词+名词",由一个或多个单词组成且以小写字母开头,以后每个单词之间用下划线隔开。 ●注释充分:变量、函数(包括参数、返回值)、代码功能块、一些复杂算法……等都需要 清晰明了地说明; 5.对个性的规定 把项目做出个性出来。下列各项中有和比人不同之处、或很有创意,即可认为有个性。独立设计的软件,一般都会出现一些个性。参考、抄袭不会出现个性。 ●设计思路:包括软件的整体架构、功能块的设计思路、函数封装等等; ●功能实现:从用户的角度,使用上发现与众不同的地方; ●其它方面;

java如何使用Socket实现多线程多人聊天

java如何使用Socket实现多线程多人聊天,提供源码最好了。希望说详细一点。

求教关于安卓开发多人聊天的!

为什么使用MultiUserChat.getJoinedRooms(connection, connection.getUser());方法得不到自己已经加入过的房间? 为什么使用muc = new MultiUserChat(connection,roomName + "@conference."+ connection.getServiceName()); muc.join(user); muc.getOccupants();得不到聊天室的用户。 为什么使用muc = new MultiUserChat(connection,roomName + "@conference."+ connection.getServiceName()); muc.join(user); muc.getOwners();方法得不到房间的拥有者信息?

java制作多人聊天室怎样显示在线人数?

JLabel label3 = new JLabel("当前在线人数:");//当前在线人数 label3.setBounds(140, 30, 100,60); window.add(label3); nu = new JTextField(); nu.setBounds(230,50,30,20); window.add(nu);

用nat123搭建外网聊天服务器戳烂F5 坐等大神!!!!!

利用nat123 动态解析和端口转发功能,搭建一个外网聊天服务器。具体设想是这样的: 客户端通过socket(外网域名,外网端口) 与本机服务器端的连接 ,本地服务器端负责为客户端转发聊天数据。有没有办法实现。戳烂F5 只为等人群中的大神支招!!!!

基于TCP实现多人聊天,遇到线程不够用的现象

如果要用TCP协议建立一个一百人的聊天室,使用线程池处理客户端的消息,有一个客户端连接就把这个客户端加入任务队列中,再使用线程池中的线程处理客户端与服务端的消息发送与显示,那么在一百个人同时在线发送消息的时候是不是要在线程池中开启100个线程? 或者有其他办法吗? 谢谢各位大神指导一下!

求关于spring的websocket实现单人和多人聊天的例子

求大神推荐几个关于spring的websocket的例子工程呗,或者试过可以运行的博客都可以,我弄了好久要绝望了。。。

angular 如何实现多人聊天的窗口,除了用iframe, 还有没有更好的办法?

angular实现多人聊天的窗口,如何实现,使每个tab里的content是相互独立的,除了用iframe,是否还有更好的办法?

如果要自己在android上实现多人视频通话,需要了解什么技术啊?求大神科普一下

rt,要自己去写多人视频通话,不用第三方的集成。需要用到什么技术啊??求大神来科普一下。

PHP WEB版QQ多人聊天,数据无法插入数据库

制作WEB版QQ多人聊天过程中, 无法将数据插入数据库,查找了多遍,实在不知哪里有错误,请各位老师帮忙看一下,给指点,非常感谢! 下面是各文件: ``` //my.js function getXmlHttpObject(){ var xmlHttpRequest; if(window.ActiveXObject){ xmlHttpRequest=new ActiveXObject("Microsoft.XMLHTTP"); }else{ xmlHttpRequest=new XMLHttpRequest; } return xmlHttpRequest; } function $(id){ return document.getElementById(id); } <!-- login.php --> <?php ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>登录页面</title> </head> <body style="text-align: center;"> <h1>欢迎登录聊天室</h1> <form action="LoginController.php" method="post"> 用户名: <input type="text" name="username" /><br /><br /> 密&nbsp;码: <input type="password" name="passwd" /><br /><br /> <input type="submit" value="登录聊天室" /> </form> </body> </html> <!-- friendList.php --> <?php ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>好友列表</title> <script src="scripts/my.js"></script> <script> function change1(val,obj){ if(val=='over'){ obj.style.color="red"; obj.style.cursor="pointer"; }else if(val=='out'){ obj.style.color="black"; } } function openChatRoom(obj){ window.open("chatRoom.php?username="+obj.innerText,'',"width=300,height=500"); } </script> </head> <body style="text-align: center;"> <h1>好友列表</h1> <ul> <li onmouseover="change1('over',this)" onmouseout="change1('out',this)" onclick="openChatRoom(this)">小张</li> <li onmouseover="change1('over',this)" onmouseout="change1('out',this)" onclick="openChatRoom(this)">小王</li> <li onmouseover="change1('over',this)" onmouseout="change1('out',this)" onclick="openChatRoom(this)">小刘</li> </ul> </body> </html> <!-- LoginController.php --> <?php $loginUser=$_POST['username']; $pwd=$_POST['passwd']; if($pwd=="123"){ session_start(); $_SESSION['loginuser']=$loginUser; header("Location: friendList.php"); }else{ header("Location: login.php"); } ?> <!-- SendMessageController.php --> <?php include_once 'MessageService.class.php'; $sender=$_POST['sender']; $getter=$_POST['getter']; $con=$_POST['con']; // file_put_contents("d :/mylog.log",$sender."-".$getter."-".$con."\r\n",FILE_APPEND); $messageService=new MessageService(); $res=$messageService->addMessage($sender, $getter, $con); if($res==1){ }else{ echo "err"; } ?> <!-- MessageService.class.php --> <?php include_once 'SqlHelper.class.php'; class MessageService { function addMessage($sender, $getter, $con) { $sql="insert into messages(sender,getter,content,sendTime) values('$sender','$getter','$con',now())"; $sqlHelper=new SqlHelper(); return $sqlHelper->execute_dml($sql); } } ?> <!-- SqlHelper.class.php --> <?php class SqlHelper { public $conn; public $dbname="chat"; public $username="root"; public $password="123"; public $host="localhost"; public function __construct(){ $this->conn=mysql_connect($this->host,$this->username,$this->password); if(!$this->conn){ die("连接失败".mysql_error()); } mysql_select_db($this->dbname,$this->conn); } //执行dql语句 public function execute_dql($sql){ $res=mysql_query($sql,$this->conn) or die(mysql_error()); return $res; } //执行dql语句,但是返回的是一个数组 public function execute_dql2($sql){ $arr=array(); $res=mysql_query($sql,$this->conn) or die(mysql_error()); //把$res=>$arr 把结果集内容转移到一个数组中. while($row=mysql_fetch_assoc($res)){ $arr[]=$row; } //这里就可以马上把$res关闭. mysql_free_result($res); return $arr; } //考虑分页情况的查询,这是一个比较通用的并体现oop编程思想的代码 //$sql1="select * from where 表名 limit 0,6"; //$sql2="select count(id) from 表名" public function exectue_dql_fenye($sql1,$sql2,$fenyePage){ //这里我们查询了要分页显示的数据 $res=mysql_query($sql1,$this->conn) or die(mysql_error()); //$res=>array() $arr=array(); //把$res转移到$arr while($row=mysql_fetch_assoc($res)){ $arr[]=$row; } mysql_free_result($res); $res2=mysql_query($sql2,$this->conn) or die(mysql_error()); if($row=mysql_fetch_row($res2)){ $fenyePage->pageCount=ceil($row[0]/$fenyePage->pageSize); $fenyePage->rowCount=$row[0]; } mysql_free_result($res2); //把导航信息也封装到fenyePage对象中 $navigate=""; if ($fenyePage->pageNow>1){ $prePage=$fenyePage->pageNow-1; $navigate="<a href='{$fenyePage->gotoUrl}?pageNow=$prePage'>上一页</a>&nbsp;"; } if($fenyePage->pageNow<$fenyePage->pageCount){ $nextPage=$fenyePage->pageNow+1; $navigate.="<a href='{$fenyePage->gotoUrl}?pageNow=$nextPage'>下一页</a>&nbsp;"; } $page_whole=10; $start=floor(($fenyePage->pageNow-1)/$page_whole)*$page_whole+1; $index=$start; //整体每10页向前翻 //如果当前pageNow在1-10页数,就没有向前翻动的超连接 if($fenyePage->pageNow>$page_whole){ $navigate.="&nbsp;&nbsp;<a href='{$fenyePage->gotoUrl}?pageNow=".($start-1)."'>&nbsp;&nbsp;<<&nbsp;&nbsp;</a>"; } //定$start 1---》10 floor((pageNow-1)/10)=0*10+1 11->20 floor((pageNow-1)/10)=1*10+1 21-30 floor((pageNow-1)/10)=2*10+1 for(;$start<$index+$page_whole;$start++){ $navigate.="<a href='{$fenyePage->gotoUrl}?pageNow=$start'>[$start]</a>"; } //整体每10页翻动 $navigate.="&nbsp;&nbsp;<a href='{$fenyePage->gotoUrl}?pageNow=$start'>&nbsp;&nbsp;>>&nbsp;&nbsp;</a>"; //显示当前页和共有多少页 $navigate.=" 当前页{$fenyePage->pageNow}/共{$fenyePage->pageCount}页"; //把$arr赋给$fenyePage $fenyePage->res_array=$arr; $fenyePage->navigate=$navigate; } //执行dml语句 public function execute_dml($sql){ $b=mysql_query($sql,$this->conn) or die(mysql_error()); if(!$b){ return 0; //失败 }else{ if(mysql_affected_rows($this->conn)>0){ return 1;//表示执行ok }else{ return 2;//表示没有行受到影响 } } } //关闭连接的方法 public function close_connect(){ if(!empty($this->conn)){ mysql_close($this->conn); } } } ?> 数据库 create database chat; create table messages( id int unsigned primary key auto_increment, sender varchar(64) not null, getter varchar(64) not null, content varchar(3600) not null, sendTime datetime not null, isGet tinyint default 0) ``` 请老师们指点,多谢!

java websocket 想做一个多人语音聊天室怎么做?你们有做过的吗?

谢谢各位老哥 帮帮忙 试用期老板说这个做好了就转正,谁能帮帮我呢

初次写JAVA 使用Socket的多线程的多人聊天出现服务端不能接收。

用gui+socket写的,已实现服务端可以发送信息给客户端,客户端可以接收信息, 但客户端发给服务端却不能接收。只用了输入、输出流,没用多线程先。 刚学,没有写过,有很多不懂,希望有人能帮我看看出了什么错,谢谢! 类Server package tcp_udp; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.*; import java.net.ServerSocket; import java.net.Socket; import javax.swing.*; public class Server extends JFrame{ static JTextArea w; static JTextArea send1; static String t1;//发送框里的内容 Server() { setTitle("服务器"); w=new JTextArea(); JButton send2=new JButton("发送"); send1=new JTextArea(3,8); JPanel s1=new JPanel(); send2.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub // Server.t1=send1.getText(); socket.prin(send1.getText()); }}); add(w,"Center"); s1.add(send1); s1.add(send2); add(s1,"South"); setVisible(true); setSize(300,300); setLocationRelativeTo(null);//窗口居中 } public static void main(String[] args) { // TODO Auto-generated method stub new Server(); socket q2=new socket(); q2.start(); } } class socket extends Thread { ServerSocket s; Socket s1; static PrintStream p1; BufferedReader in; static String L2; socket(){ try { s=new ServerSocket(9984); System.out.println("服务器开启:"); while(true) { s1=s.accept(); p1=new PrintStream(s1.getOutputStream()); in=new BufferedReader(new InputStreamReader(s1.getInputStream())); L2=in.readLine(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void run()//接收 { // String L2=in.readLine(); if(L2!=null&&L2.trim()!="") {String n="[客户:]"; new Add2(n,L2); } } static void prin( String t)//发送 {String n=""; p1.println(t); new Add2(n,t); }} class Add2//将发送或接收的信息显示在文本框 { Add2(String n,String L1) { Server.w.append(n+L1+"\n"); }} 类Cilent package tcp_udp; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.*; import java.net.Socket; import javax.swing.*; public class Cilent extends JFrame{ static JTextArea w; static JTextArea send2; Cilent() { setTitle("客户"); w=new JTextArea(); JButton send=new JButton("发送"); send2=new JTextArea(3,8); JPanel s1=new JPanel(); send.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub Socket1.prin(send2.getText()); }}); add(w,"Center"); s1.add(send2); s1.add(send); add(s1,"South"); setVisible(true); setSize(300,300); setLocationRelativeTo(null);//窗口居中 } public static void main(String[] args) { // TODO Auto-generated method stub new Cilent(); Socket1 q1=new Socket1(); q1.start(); }} class Add1//将发送或接收的信息显示在文本框 { Add1(String n,String L1) { Cilent.w.append(n+L1+"\n"); } } class Socket1 extends Thread { static BufferedReader in1; static PrintStream out; static String L1; Socket1(){ try { Socket ss1=new Socket("127.0.0.1",9984); in1=new BufferedReader(new InputStreamReader(ss1.getInputStream())); out=new PrintStream(ss1.getOutputStream()); L1=in1.readLine(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } static void prin( String t)//发送 {String n=""; out.println(t); System.out.print(t+"hhah"); new Add1(n,t); } public void run()//接收 { if(L1!=null&&L1.trim() != "") {String n="[服务器:]"; new Add1(n,Socket1.L1); } } }

自己用C#做了一个可以实现多人聊天的程序 调试时一直提示错误 大神帮帮忙 修改一下!!!谢谢了

文件下载地址:https://pan.baidu.com/s/1i3NdLf3 提取密码:iw3h 大神帮忙看看 修改一下 小弟谢谢了!!!

代码有错误,求大神帮忙指点迷津!!!!

public class ChatFragment extends BaseFragment implements OnClickListener,ReceiveMsgListener{ // private NetThreadHelper netThreadHelper; // private ImageView chat_item_head; //头像 private TextView chat_name; //名字及IP private TextView chat_mood; //组名 private Button chat_quit; //退出按钮 private ListView chat_list; //聊天列表 private EditText chat_input; //聊天输入框 private Button chat_send; //发送按钮 private List<ChatMessage> msgList; //用于显示的消息list private String receiverName; //要接收本activity所发送的消息的用户名字 private String receiverIp; //要接收本activity所发送的消息的用户IP private String receiverGroup; //要接收本activity所发送的消息的用户组名 private ChatListAdapter adapter; //ListView对应的adapter private String selfName; private String selfGroup; private final static int MENU_ITEM_SENDFILE = Menu.FIRST; //发送文件 private final static int MENU_ITEM_EXIT = Menu.FIRST + 1; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View chatLayout = inflater.inflate(R.layout.chat, container, false); return chatLayout; // findViews(); // netThreadHelper = NetThreadHelper.newInstance(); msgList = new ArrayList<ChatMessage>(); Intent intent = getIntent(); Bundle bundle = intent.getExtras(); receiverName = bundle.getString("receiverName"); receiverIp = bundle.getString("receiverIp"); receiverGroup = bundle.getString("receiverGroup"); selfName = "android飞鸽"; selfGroup = "android"; chat_name.setText(receiverName + "(" + receiverIp + ")"); chat_mood.setText("组名:" + receiverGroup); chat_quit.setOnClickListener(this); chat_send.setOnClickListener(this); Iterator<ChatMessage> it = netThreadHelper.getReceiveMsgQueue().iterator(); while(it.hasNext()){ //循环消息队列,获取队列中与本聊天activity相关信息 ChatMessage temp = it.next(); //若消息队列中的发送者与本activity的消息接收者IP相同,则将这个消息拿出,添加到本activity要显示的消息list中 if(receiverIp.equals(temp.getSenderIp())){ msgList.add(temp); //添加到显示list it.remove(); //将本消息从消息队列中移除 } } adapter = new ChatListAdapter(getActivity(), msgList); chat_list.setAdapter(adapter); netThreadHelper.addReceiveMsgListener(this); //注册到listeners } public void onViewCreated(View view, Bundle savedInstanceState) { // TODO Auto-generated method stub super.onViewCreated(view, savedInstanceState); chat_name = (TextView)view.findViewById(R.id.chat_name); chat_mood = (TextView) view.findViewById(R.id.chat_mood); chat_quit = (Button) view.findViewById(R.id.chat_quit); chat_list = (ListView) view.findViewById(R.id.chat_list); chat_input = (EditText) view.findViewById(R.id.chat_input); chat_send = (Button) view.findViewById(R.id.chat_send); } @Override public void processMessage(Message msg) { // TODO Auto-generated method stub switch(msg.what){ case IpMessageConst.IPMSG_SENDMSG: adapter.notifyDataSetChanged(); //刷新ListView break; case IpMessageConst.IPMSG_RELEASEFILES:{ //拒绝接受文件,停止发送文件线程 if(NetTcpFileSendThread.server != null){ try { NetTcpFileSendThread.server.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } break; case UsedConst.FILESENDSUCCESS:{ //文件发送成功 makeTextShort("文件发送成功"); } break; } //end of switch } @Override public boolean receive(ChatMessage msg) { // TODO Auto-generated method stub if(receiverIp.equals(msg.getSenderIp())){ //若消息与本activity有关,则接收 msgList.add(msg); //将此消息添加到显示list中 sendEmptyMessage(IpMessageConst.IPMSG_SENDMSG); //使用handle通知,来更新UI BaseFragment.playMsg(); return true; } return false; } @Override public void finish() { // TODO Auto-generated method stub //一定要移除,不然信息接收会出现问题 netThreadHelper.removeReceiveMsgListener(this); super.finish(); } @Override public void onClick(View v) { // TODO Auto-generated method stub if(v == chat_send){ sendAndAddMessage(); }else if(v == chat_quit){ finish(); } } /** * 发送消息并将该消息添加到UI显示 */ private void sendAndAddMessage(){ String msgStr = chat_input.getText().toString().trim(); if(!"".equals(msgStr)){ //发送消息 IpMessageProtocol sendMsg = new IpMessageProtocol(); sendMsg.setVersion(String.valueOf(IpMessageConst.VERSION)); sendMsg.setSenderName(selfName); sendMsg.setSenderHost(selfGroup); sendMsg.setCommandNo(IpMessageConst.IPMSG_SENDMSG); sendMsg.setAdditionalSection(msgStr); InetAddress sendto = null; try { sendto = InetAddress.getByName(receiverIp); } catch (UnknownHostException e) { // TODO Auto-generated catch block Log.e("MyFeiGeChatActivity", "发送地址有误"); } if(sendto != null) netThreadHelper.sendUdpData(sendMsg.getProtocolString() + "\0", sendto, IpMessageConst.PORT); //添加消息到显示list ChatMessage selfMsg = new ChatMessage("localhost", selfName, msgStr, new Date()); selfMsg.setSelfMsg(true); //设置为自身消息 msgList.add(selfMsg); }else{ makeTextShort("不能发送空内容"); } chat_input.setText(""); adapter.notifyDataSetChanged();//更新UI } @Override public boolean onCreateOptionsMenu(Menu menu) { // TODO Auto-generated method stub super.onCreateOptionsMenu(menu); menu.add(0, MENU_ITEM_SENDFILE, 0, "发送文件"); menu.add(0, MENU_ITEM_EXIT, 0, "退出"); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // TODO Auto-generated method stub switch(item.getItemId()){ case MENU_ITEM_SENDFILE: Intent intent = new Intent(getActivity(), FileFragment.class); startActivityForResult(intent, 0); break; case MENU_ITEM_EXIT: finish(); break; } return super.onOptionsItemSelected(item); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); if(resultCode == RESULT_OK){ //得到发送文件的路径 Bundle bundle = data.getExtras(); String filePaths = bundle.getString("filePaths"); //附加文件信息串,多个文件使用"\0"进行分隔 // Toast.makeText(this, filePaths, Toast.LENGTH_SHORT).show(); String[] filePathArray = filePaths.split("\0"); //发送传送文件UDP数据报 IpMessageProtocol sendPro = new IpMessageProtocol(); sendPro.setVersion("" +IpMessageConst.VERSION); sendPro.setCommandNo(IpMessageConst.IPMSG_SENDMSG | IpMessageConst.IPMSG_FILEATTACHOPT); sendPro.setSenderName(selfName); sendPro.setSenderHost(selfGroup); String msgStr = ""; //发送的消息 StringBuffer additionInfoSb = new StringBuffer(); //用于组合附加文件格式的sb for(String path:filePathArray){ File file = new File(path); additionInfoSb.append("0:"); additionInfoSb.append(file.getName() + ":"); additionInfoSb.append(Long.toHexString(file.length()) + ":"); //文件大小十六进制表示 additionInfoSb.append(Long.toHexString(file.lastModified()) + ":"); //文件创建时间,现在暂时已最后修改时间替代 additionInfoSb.append(IpMessageConst.IPMSG_FILE_REGULAR + ":"); byte[] bt = {0x07}; //用于分隔多个发送文件的字符 String splitStr = new String(bt); additionInfoSb.append(splitStr); } sendPro.setAdditionalSection(msgStr + "\0" + additionInfoSb.toString() + "\0"); InetAddress sendto = null; try { sendto = InetAddress.getByName(receiverIp); } catch (UnknownHostException e) { // TODO Auto-generated catch block Log.e("MyFeiGeChatActivity", "发送地址有误"); } if(sendto != null) netThreadHelper.sendUdpData(sendPro.getProtocolString(), sendto, IpMessageConst.PORT); //监听2425端口,准备接受TCP连接请求 Thread netTcpFileSendThread = new Thread(new NetTcpFileSendThread(filePathArray)); netTcpFileSendThread.start(); //启动线程 } } } ![![![图片说明](https://img-ask.csdn.net/upload/201605/12/1463064059_713861.png)图片说明](https://img-ask.csdn.net/upload/201605/12/1463063989_240367.png)图片说明](https://img-ask.csdn.net/upload/201605/12/1463063930_306003.png) 求大神指点

jsp调用javabean问题! 求大神解答啊!!

1. jsp中调用javabean,报错如下: org.apache.jasper.JasperException: Unable to compile class for JSP: An error occurred at line: 13 in the jsp file: /send.jsp The type org.apache.http.client.ClientProtocolException cannot be resolved. It is indirectly referenced from required .class files 10: String mywords = request.getParameter("message"); 11: String t = ""; 12: box.setMsg(mywords); 13: String Text=box.func(); 14: if (application.getAttribute("words") == null 15: && mywords != null) { 16: t = "鎴戯細" + ":" + mywords + "<br/>" + "鏈哄櫒浜猴細" An error occurred at line: 13 in the jsp file: /send.jsp The method func() from the type Box refers to the missing type ClientProtocolException 10: String mywords = request.getParameter("message"); 11: String t = ""; 12: box.setMsg(mywords); 13: String Text=box.func(); 14: if (application.getAttribute("words") == null 15: && mywords != null) { 16: t = "鎴戯細" + ":" + mywords + "<br/>" + "鏈哄櫒浜猴細" 请问是怎么回事啊 jsp文件: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ page language="java" contentType="text/html;charset=GB2312"%> <html> <body> <jsp:useBean id="box" class="bean.Box" > </jsp:useBean> <% try { request.setCharacterEncoding("GB2312"); String mywords = request.getParameter("message"); String t = ""; box.setMsg(mywords); String Text=box.func(); if (application.getAttribute("words") == null && mywords != null) { t = "我:" + ":" + mywords + "<br/>" + "机器人:" + Text + "<br/>"; application.setAttribute("words", (Object) t); } else if (mywords != null) { t = (String) application.getAttribute("words"); t += "我:" + ":" + mywords + "<br/>" + "机器人:" + Text + "<br/>"; application.setAttribute("words", (Object) t); } } catch (Exception e) { } %> <form method="post" action="send.jsp"> <input name="message" type="text" size=50> <input type="submit" value="send"> </form> </body> </html> javabean文件: package bean; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import java.util.Scanner; import net.sf.json.JSONObject; import org.apache.http.client.ClientProtocolException; public class Box { String msg; public Box() { msg=null; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public String func1() { return "OK"; } public String func() throws ClientProtocolException, IOException { String APIKEY="**********************"; String INFO = URLEncoder.encode(msg, "utf-8"); String requesturl = "http://www.tuling123.com/openapi/api?key="+APIKEY+"&info="+INFO+"&userid=wisdom123"; URL getURL=new URL(requesturl); HttpURLConnection connection=(HttpURLConnection)getURL.openConnection(); connection.connect(); BufferedReader reader = new BufferedReader(new InputStreamReader( connection.getInputStream(), "utf-8")); StringBuffer sb = new StringBuffer(); String line = ""; while ((line = reader.readLine()) != null) { sb.append(line); } reader.close(); connection.disconnect(); String a=sb.toString(); JSONObject obj= JSONObject.fromObject(a); //System.out.println(); return obj.getString("text"); } public static void main(String[] args) throws ClientProtocolException, IOException { String msg=null; while(true) { Scanner input=new Scanner(System.in); //System.out.println("请输入聊天内容:"); msg=input.nextLine(); Box a=new Box(); a.setMsg(msg); System.out.println(a.func()); } } }

聊天机器人项目训练报错

* train_nlu.py 不能训练 * 运行命令如下: python -m rasa_nlu.train -c nlu_tensorflow.yml --fixed_model_name current --data data/nlu/ -o models --project nlu --verbose * 报错提示:UnicodeEncodeError: 'ascii' codec can't encode characters in position 9-11: ordinal not in range(128) ![最后一行,报错](https://img-ask.csdn.net/upload/201903/14/1552566505_123934.png) 在网上查找都未能解决, Python环境3.6 求大神解决!!!!

求大神帮忙做聊天页面的私聊代码,就是“”你悄悄的对谁说“”

这是发送按钮里的代码 ``` nchatlist = nchatlist + "<p>"+Session["username"].ToString().Trim()+biaoqing.Text.ToString().Trim()+"着说:" + chatcontent.Text.ToString().Trim()+"</p>"; string sql; sql = "insert into ltjl(username,biaoqing,content) values('"+Session["username"].ToString().Trim()+"','"+biaoqing.Text.ToString().Trim()+"','" + chatcontent.Text.ToString().Trim() + "')"; int result; result = new Class1().hsgexucute(sql); //执行此sql语句 ```

如何用visual studio 和SQL实现类似qq的聊天室,可以聊天传文件视频等等

大三在读,刚刚接触VS和SQL 不太懂 老师让做这个 求大神告知 给个思路~

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

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

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

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

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

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

抖音上很火的时钟效果

反正,我的抖音没人看,别人都有几十万个赞什么的。 发到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那些大厂我连投简历的勇气都没有),最后选择了中软,我知道这是一家外包公司,待遇各方面甚至不如我的上一家公司,但是对我而言这可是外包华为,能...

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

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

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

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

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

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

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

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

推荐9个能让你看一天的网站

分享的这9个保证另你意外的网站,每个都非常实用!非常干货!毫不客气的说,这些网站最少值10万块钱。 利用好这些网站,会让你各方面的技能都得到成长,不说让你走上人生巅峰,但对比现在的你,在眼界、学识、技能方面都有质的飞跃。 一、AIRPANO 传送门:https://www.airpano.com/360photo_list.php 这是一个可以躺在家里,就能环游世界的神奇网站。 世界那么大,绝大多...

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

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

都前后端分离了,咱就别做页面跳转了!统统 JSON 交互

文章目录1. 无状态登录1.1 什么是有状态1.2 什么是无状态1.3 如何实现无状态1.4 各自优缺点2. 登录交互2.1 前后端分离的数据交互2.2 登录成功2.3 登录失败3. 未认证处理方案4. 注销登录 这是本系列的第四篇,有小伙伴找不到之前文章,松哥给大家列一个索引出来: 挖一个大坑,Spring Security 开搞! 松哥手把手带你入门 Spring Security,别再问密...

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的生命...

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

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

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

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

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

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

一场疫情,炸出了退休的COBOL程序员

COBOL编程语言,估计大多数程序员从没听说过,我这样的编程老司机,也是只闻其名,从未一睹芳容。出门问了问度娘,答案如下:COBOL语言,是一种面向过程的高级程序设计语言,主要用于数据...

爬虫(101)爬点重口味的

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

讲真,这两款idea插件,能治愈你英语不好的病

时不时就有小伙伴问我,“二哥,能推荐一款 IDE 吗?”你看这话问的,现在搞 Java 的不都在用 Intellij IDEA 吗,还用得着推荐(我已经和 Eclipse 分手了)。然后小伙伴又说,“二哥,IDEA 支持中文吗?我英语不太好。”你看这话问的,搞编程的,英语不好是硬伤啊! 不过,随着 IDEA 最新版(版本号是 2020.1)的发布,英语不好的病可以彻底治愈了。为什么这么说呢?因为 ...

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

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

又一起程序员被抓事件

就在昨天互联网又发生一起让人心酸的程序员犯罪事件,著名的百度不限速下载软件 Pandownload PC 版作者被警方抓获。案件大致是这样的:软件的作者不仅非法盗取用户数据,还在QQ群进...

瑞德西韦重症用药结果再曝光,上百名重症一周内好转,股价大涨19%

郭一璞 发自 凹非寺量子位 报道 | 公众号 QbitAI期盼已久的瑞德西韦临床数据,现在“偷跑”了。在芝加哥大学医学院的临床试验中,125名病人参与,大部分人都已经出院,其中只有2名病...

应聘3万的职位,有必要这么刁难我么。。。沙雕。。。

又一次被面试官带到坑里面了。面试官:springmvc用过么?我:用过啊,经常用呢面试官:springmvc中为什么需要用父子容器?我:嗯。。。没听明白你说的什么。面试官:就是contr...

Vue商城——详情页功能

详情页实现思路 点击商品进去详情页,根据点击请求更加详细的信息,要传过来goodsItem的iid,根据id去服务器请求更加详细的信息;配置路由映射关系,点击进行跳转,带参数传递跳转 itemClick(){ this.$router.push('/detail/'+this.goodsItem.iid) /* this.$router.push({ ...

太狠了,疫情期间面试,一个问题砍了我5000!

疫情期间找工作确实有点难度,想拿到满意的薪资,确实要点实力啊!面试官:Spring中的@Value用过么,介绍一下我:@Value可以标注在字段上面,可以将外部配置文件中的数据,比如可以...

自学编程的 6 个致命误区

嗨,小伙伴们大家好,我是沉默王二。本篇文章来和大家聊聊自学编程中的一些误区——这是我在 B 站上看了羊哥的一期视频后有感而发的文章。因为确实有很多读者也曾私信问过我这些方面的问题,很有代表性,所以我就结合自己的亲身体会来谈一谈,希望对小伙伴们有所启发。 01、追求时髦 所谓基础不牢,地动山摇啊。可很多小伙伴压根就没注意过这个问题,市面上出什么新鲜的技术就想去尝试,结果把自己学的乱七八糟,心灰意冷...

你离黑客的距离,就差这20个神器了

郑重声明:本文仅限技术交流,不得用于从事非法活动 在不少电影电视剧中,主角的身边都有这么一位电脑高手:他们分分钟可以黑进反派的网络,攻破安全防线,破解口令密码,拿到重要文件。他们的电脑屏幕上都是一些看不懂的图形和数字,你能看懂的就只有那个进度条,伴随着紧张的BGM,慢慢的向100%靠近······ 上面的场景和套路是不是很眼熟? 影视作品中的黑客当然有夸张和戏剧化的表现,不过,现实世界中的黑客也...

立即提问