因帅判自杀 因帅判自杀
他们说很强
关注数: 62 粉丝数: 44 发帖数: 6,480 关注贴吧数: 4
今天要弄的java package day05.chat; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /** * 服务端应用程序 * @author Administrator * */ public class Server { //ServerSocket运行在服务端的Socket private ServerSocket server; //保存所有客户端输出流的集合,用于共享以便广播 private List<PrintWriter> allOut; //线程池 private ExecutorService threadPool; /** * 构造方法,用于初始化服务端 */ public Server(){ try { server = new ServerSocket(Config.getKeyToInt("server_port")); allOut = new ArrayList<PrintWriter>(); threadPool = Executors.newFixedThreadPool(40); } catch (Exception e) { throw new RuntimeException(e); } } /** * 向共享集合中添加一个客户端的输出流 * @param pw */ public synchronized void addOut(PrintWriter pw){ allOut.add(pw); } /** * 将给定的客户端的输出流从共享集合中删除 * @param pw */ public synchronized void removeOut(PrintWriter pw){ allOut.remove(pw); } /** * 将给定的消息转发给所有的客户端 * @param message */ public synchronized void sendMessageToAllClient(String message){ for(PrintWriter pw : allOut){ pw.println(message); } } /** * 启动服务端的方法 */ public void start(){ try { //监听8088端口,等待客户端的连接 /* * accept方法是一个阻塞方法,直到一个客户端 * 连接,该方法会返回针对该客户端的Socket * 也就是说,通过这个Socket就可以与连接上 * 的客户端进行交互了 */ while(true){ System.out.println("等待客户端连接..."); Socket socket = server.accept(); System.out.println("客户端连接了."); /* * 当一个客户端连接后, * 启动一个线程(ClientHandler),将连接的 * 客户端的Socket传入。 */ ClientHandler handler = new ClientHandler(socket); //创建线程,指派任务并启动 // Thread thread = new Thread(handler); // thread.start(); //将任务交给线程池 threadPool.execute(handler); } } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e); } } public static void main(String[] args) { Server server = new Server(); server.start(); } /** * Server用于处理不同客户端的多线程任务。 * 该类主要负责与给定的客户端进行交互 * @author Administrator * */ class ClientHandler implements Runnable{ //用于交互的客户端Socket private Socket socket; /** * 构造该线程任务的同时要求指派需要交互的 * 客户端的Socket * @param socket */ public ClientHandler(Socket socket){ this.socket = socket; } public void run() { //定义在try外面,保证finally可以关闭它 PrintWriter pw = null; try { /* * 线程启动后,我们首先获取该客户端的 * 输出流,将其放入共享集合。 */ OutputStream out = socket.getOutputStream(); OutputStreamWriter osw = new OutputStreamWriter(out,"UTF-8"); pw = new PrintWriter(osw,true); //将该客户端的输出流存入共享集合 addOut(pw); /* * 输出当前在线人数: * 思路: * 保存所有输出流的集合中有多少元素 * 就说明有多少个用户,所以我们直接 * 输出集合的元素数量即可 */ System.out.println( "当前在线人数:"+allOut.size()); //获取远端(客户端)的信息 InetAddress inet = socket.getInetAddress(); System.out.println( "客户端端口:"+socket.getPort()); System.out.println( "客户端完全限定名:"+inet.getCanonicalHostName()); /* * 服务端这边我们通过该客户端的Socket * 获取输入流,来读取客户端发送过来的 * 信息 */ //java.io.InputStream InputStream in = socket.getInputStream(); InputStreamReader isr = new InputStreamReader(in,"UTF-8"); BufferedReader br = new BufferedReader(isr); /* * windows与linux的差异 * 对于客户端主动断开连接后 * windows通过输入流读取数据时会 * 抛出异常。 * br.readLine()//抛出异常 * * linux则通过输入流读取数据时获取null * br.readLine()//返回值为null * 对于缓冲字符输入流的readLine方法 * 若返回值为null,表示任何数据可读了 */ String line = null; /* * 第一次读取到的用户输入的信息是 * 该用户的昵称 */ String nickName = br.readLine(); while((line = br.readLine()) != null){ // System.out.println( // "客户端说:"+br.readLine()); /* * 每当读取到客户端发送过来的消息后 * 就广播给所有客户端 */ sendMessageToAllClient(nickName+"说:"+line); } } catch (Exception e) { } finally{ /* * 无论是否正常交互完毕,最终都要与该 * 客户端断开连接 */ try { /* * 首先,当服务端要与客户端断开连接 * 前,先将该客户端的输出流从共享 * 集合中删除,这样,后续的消息就不用0 * 转发给该客户端了。 */ removeOut(pw); /* * 当一个客户端下线后,同样输出 * 当前在线人数 */ System.out.println( "当前在线人数:"+allOut.size()); /* * 关闭Socket那么通过该Socket * 获取的输入与输出流就全部关闭 * 了 */ socket.close(); } catch (IOException e) { } } } } }
java记录--提供有相应注解,高兴的可以一起聊聊 import java.io.FileOutputStream; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Document; import org.w3c.dom.Element; /* * 第一件事,获得document文档 * 第二件事,将document文档转化为数据源 * 第三件事,获得目标文件以及流 * 第四件事,通过transformer将数据源写入目标文件 * 所用到的API(就是可以拿来直接用的方法)在原始的jdk里边有的 */ public class W3c_dom_CreateXMLDemo { public static void main(String[] args) { /* * 获得document文档 */ try{ /* * 获得document文档 */ DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance(); DocumentBuilder builder=factory.newDocumentBuilder(); Document document=builder.newDocument(); /* * 创建文档树 */ Element element=document.createElement("qinyongdi"); document.appendChild(element); /** * 文档转为数据源 */ DOMSource source=new DOMSource(document); /** * 获得流 */ FileOutputStream fos=new FileOutputStream("qinyongdi.xml"); /** * 文档输出流StreamResult */ StreamResult result=new StreamResult(fos); /** * 获得写入文件的工具, */ TransformerFactory tFactory=TransformerFactory.newInstance(); Transformer transformer=tFactory.newTransformer(); transformer.transform(source, result); }catch(Exception e){ e.printStackTrace(); } } }
农民工万余元,部分拾到者归还 来沪务工人员跪求还钱最终只捡回3700元  ■逾百网友表示愿资助其过年  1.76万血汗钱被风吹走,失主自己找回3000元,有3名路人捡到700元还给他。  失主是安徽来沪务工人员,1.76万是他与83岁的父亲打工一年存下来的钱,父亲是青浦一家家具厂的保洁员,一个月工资1200元。  昨晚有市民捐款,失主表示愿意接受捐款,非常感激,但若捐款数额超过他丢的数目,他将把多余的钱再捐给其他需要帮助的人。  东方网2月4日消息:据《东方早报》报道,1.76万元现金撒落在地,有人捡起归还、更有人捡完离开——昨天下午近1时,发生在长宁区北翟路协和路路口附近的这一幕激起众议。  经记者调查,丢钱的是一名安徽凤台县来沪务工人员,1.76万是他与83岁父亲打工一年存下来的钱,17600元现金被风吹走后他自己找回3000元,有3名路人捡到700元还给他,更多的人捡钱后离开。  截至今天凌晨消息,当时参与捡钱的环卫工人后来陆续归还了1100元,当时捡钱的车主归还了1600元,截至今天凌晨,还有11200元没有归还。  仅几十秒   1万多元被一捡而空   昨天,上海气温突降,风力3-4级。风虽不大,但吹冷了31岁外地来沪务工者秦某回家的心情。  北翟路协和路路口附近,分布有多个外来务工人员聚集住所,昨天下午近1时,31岁的安徽来沪务工人员秦先生将现金用纸一包塞在牛仔裤后兜内,骑电瓶车去银行存钱,途中转弯时钱撒落,引来数名路人捡拾。  目击者对记者描述,当时风力较大,钱飘在空中后,很快沿北翟路吹散,沿街飘散20米左右,因为范围过大,秦先生来不及一一捡回。  当时的路人较多,“马路上有很多开汽车和电瓶车的人,停下来哄抢,年轻男子跪下让他们不要抢,说这是他一年的血汗钱,是回家过年的钱,甚至有一辆面包车上的人,在马路中间停下来,蹲着捡钱,脚都被撞伤了。” 目击者于先生称。  仅几十秒的工夫,钱就被一卷而空。多数人捡到后归为己有,“有一个骑电动车穿红衣服的人,拿了钱后就马上骑车走了。”上海西联清洁卫生有限公司的一名清洁工回忆。  失主跪求  两人捡到钱后交还  事发时,正值两家清洁公司的上下班时间,不少清洁工路过现场,上海西联清洁卫生有限公司的一名清洁工告诉记者,当时她看到路口聚了很多人,很多人捡钱后拿走,失主甚至跪在地上,向还钱的人磕头,嘴里称道“谢谢你,谢谢你”。  警方表示,有2人捡到钱后,交还给失主。这名清洁工对记者表示,一位名为韩锁华(音)的同事捡到200元后交给失主,“(清洁工小组)组长还挨个问我们有没有人捡到,要我们捡到后交回去。人家辛辛苦苦的血汗钱,怎么能随便拿呢?”   中午12时59分,秦先生拨打110求助,**于下午1时06分到场处置。最终,秦先生的17600元共收回来3000多元,其中路人帮他捡回700元。秦先生表示,这17600元,本来想过年前从银行汇回老家的,让家里人开心一点。  *****调阅监控录像发现,事发后,共有两辆汽车停下来,车内人员下车捡钱后驶离,部分行人参与捡钱,其中包括几名身着蓝黄相间的制服人员。 
1 下一页