readline

StringTable结构以及基本调优

故事扮演 提交于 2020-08-11 04:23:16
  JDK1.8中StringTable的底层类似于HashTable,由数组和链表实现,数组又称为桶数组。比如有这样一段代码: public class Demo4 { public static void main(String[] args) { int i = 0 ; System.out.println(i); } } 我们设置虚拟机参数“-Xmx10m -XX:+PrintStringTableStatistics -XX:+PrintGCDetails -verbose:gc“,参数具体的意思是 设置堆内存大小为10M,输出StringTableStatistics信息,输出GC细节。运行代码控制台会有相应的输出,主要看下StringTable部分。默认桶的个数是60013,存储的字符串对象个数为1752,串池中字符串常量个数为也是1752,总的占用空间约为0.6M。上面代码只是输出i,但串池中常量个数为1752,那是因为类名、方法名等这些数据也是以常量的形式存在串池中。 接着稍微改动代码: public class Demo4 { public static void main(String[] args) { int i = 0 ; // 往串池中添加100个字符串 for ( int j = 0; j < 100; j++ ) { String.valueOf

学习rabbitmq (二) 使用rabbitmq <完结>

大城市里の小女人 提交于 2020-08-11 02:33:31
以为rabbitmq会折腾很久,但没有想到就这么多点内容,主要是服务端的懒得去折腾,比如docker的转移啊,发布啊,部署啥的 今天写了一些代码,用的c#弄的,新建两个项目,一个sender,一个rec,需要说的都在代码里了 就说一下在vs里安装rabbitmq的client,如果看不懂,也懒得说了 以下是发送端的代码,就一个窗体 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using RabbitMQ.Client; using RabbitMQ.Client.Events; namespace rabbitmq_example_sender { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click( object sender, EventArgs e) { // 简单队列模式 var factory =

Java基础学习 day_14 File类

 ̄綄美尐妖づ 提交于 2020-08-10 16:39:15
File类 //构造方法 File file = new File ( "" ) ; File file = new File ( "" , "" ) 创建文件 //创建文件 File file = new File ( "d:\\Test01\\aaa.txt" ) ; File file1 = new File ( "D:\\Test01" , "qq.txt" ) ; if ( ! file1 . exists ( ) ) { boolean b = file1 . createNewFile ( ) ; System . out . println ( "创建结果:" + b ) ; } else { System . out . println ( "文件已经创建" ) ; } //删除文件 //直接删除 boolean delete = file . delete ( ) ; System . out . println ( "删除结果:" + delete ) ; //JVM删除 // Thread.sleep(5000); file . deleteOnExit ( ) ; //获取信息 System . out . println ( "文件长度:" + file . length ( ) ) ; System . out . println ( "文件名称:"

C#实现局域网聊天 通讯 Socket TCP 多人

老子叫甜甜 提交于 2020-08-10 06:39:25
程序分别为服务端与客户端,服务端创建套接字使用多线程侦听多客户端请求 代码需要引用System.Net;和System.Net.Socket;这两个类 分享源码demo:https://pan.baidu.com/s/10RuE9Vk0cIoxY91uzx4Gig 提取码:4eds 运行图: 服务端 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace ConsoleServer 7 { 8 class Program 9 { 10 static void Main( string [] args) 11 { 12 ServerControl Server = new ServerControl(); // 初始化Socket 13 Server.Start(); // 启动侦听连接 14 // Console.WriteLine("123"); 15 Console.Read(); 16 } 17 } 18 } 展开查看代码 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5

C#实现局域网聊天 通讯 Socket TCP 多人

老子叫甜甜 提交于 2020-08-09 18:04:56
程序分别为服务端与客户端,服务端创建套接字使用多线程侦听多客户端请求 代码需要引用System.Net;和System.Net.Socket;这两个类 分享源码demo:https://pan.baidu.com/s/10RuE9Vk0cIoxY91uzx4Gig 提取码:4eds 运行图: 服务端 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace ConsoleServer 7 { 8 class Program 9 { 10 static void Main( string [] args) 11 { 12 ServerControl Server = new ServerControl(); // 初始化Socket 13 Server.Start(); // 启动侦听连接 14 // Console.WriteLine("123"); 15 Console.Read(); 16 } 17 } 18 } 展开查看代码 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5

银企直联-前置机-企业接入-Java-socket

流过昼夜 提交于 2020-08-09 15:59:34
银企直联一般都是通过前置机与银行服务进行通信,企业服务 前置机 银行三者关系如下 在企业应用在这里就相当于客户端,前置机就相当服务端 ERP 与 CT 之间的交易数据报文采用 TCP/IP 协议的 Socket 同步短连接方式。 这里有个 ERP 与 CT 通信的 简单的demo import java.io.*; import java.net.Socket; import java.net.UnknownHostException; /** * @Title: * @Description: 接收第三方--->发送前置机--->接收前置机--->发送第三方 等步奏 * @Created by yangjie on 2020/5/19/14:23. */ public class SocketDemo { public static void main(String[] args) { Socket socket = null; OutputStream outputStream = null; InputStream inputStream = null; BufferedReader bufferedReader = null; try { socket = new Socket("192.168.13.51", 10010); String reqNo = "ly0000"

Java并发编程(04):线程间通信,等待/通知机制

此生再无相见时 提交于 2020-08-09 13:46:29
本文源码: GitHub·点这里 || GitEE·点这里 一、概念简介 1、线程通信 在操作系统中,线程是个独立的个体,但是在线程执行过程中,如果处理同一个业务逻辑,可能会产生资源争抢,导致并发问题,通常使用互斥锁来控制该逻辑。但是在还有这样一类场景,任务执行是有顺序控制的,例如常见的报表数据生成: 启动数据分析任务,生成报表数据; 报表数据存入指定位置数据容器; 通知数据搬运任务,把数据写入报表库; 该场景在相对复杂的系统中非常常见,如果基于多线程来描述该过程,则需要线程之间通信协作,才能有条不紊的处理该场景业务。 2、等待通知机制 如上的业务场景,如果线程A生成数据过程中,线程B一直在访问数据容器,判断该过程的数据是否已经生成,则会造成资源浪费。正常的流程应该如图,线程A和线程B同时启动,线程A开始处理数据生成任务,线程B尝试获取容器数据,数据还没过来,线程B则进入等待状态,当线程A的任务处理完成,则通知线程B去容器中获取数据,这样基于线程等待和通知的机制来协作完成任务。 3、基础方法 等待/通知机制的相关方法是Java中Object层级的基础方法,任何对象都有该方法: notify:随机通知一个在该对象上等待的线程,使其结束wait状态返回; notifyAll:唤醒在该对象上所有等待的线程,进入对象锁争抢队列中; wait:线程进入waiting等待状态,不会争抢锁对象

异常Exception(二)

自作多情 提交于 2020-08-09 10:57:53
学习网址: https://docs.microsoft.com/zh-cn/dotnet/standard/exceptions/exception-class-and-properties 了解Exception的常见属性。 Data :Exception的 键/值对 数据。 using System; using System.Collections; namespace ConsoleApp5 { class Program { static void Main( string [] args) { try { NestedRoutine1( true ); } catch (Exception e) { // 打印Data if (e.Data.Count > 0 ) { foreach (DictionaryEntry de in e.Data) Console.WriteLine( " Key: {0,-20} Value: {1} " , " ' " + de.Key.ToString() + " ' " , de.Value); } } Console.ReadLine(); } public static void NestedRoutine1( bool displayDetails) { try { NestedRoutine2(displayDetails

pygrib学习

微笑、不失礼 提交于 2020-08-09 07:10:30
pygrib-2.0.3/docs/index.html 导入pygrib模块 >>> import pygrib 打开grib文件,获取grib消息迭代器 >>> grbs = pygrib.open('sampledata/flux.grb') 和打开正常的python文件对象一样,pygrib使用seek, tell, read, readline, 和close方法打开grib文件。唯一的不同的是,偏移量用grib消息衡量,而不是用字节。 >>> grbs.seek(2 ) >>> grbs.tell() 2 >>> grb = grbs.read(1)[0] # read returns a list with the next N (N=1 in this case) messages. >>> grb # printing a grib message object displays summary info 3:Maximum temperature:K (instant):regular_gg:heightAboveGround:level 2 m:fcst time 108-120 hrs: from 200402291200 >>> grbs.tell() 3 输出文件清单: >>> grbs.seek(0) >>> for grb in grbs: >>>

RabbitMQ学习-简单DEMO实现

回眸只為那壹抹淺笑 提交于 2020-08-08 20:54:56
介绍: RabbitMQ是一个由erlang开发的基于AMQP(Advanced Message Queue )协议的开源实现。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面都非常的优秀。是当前最主流的消息中间件之一。(官网: http://www.rabbitmq.com ) AMQP,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,同样,消息使用者也不用知道发送者的存在。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。   消息队列的使用过程大概如下:     (1)客户端连接到消息队列服务器,打开一个channel。     (2)客户端声明一个exchange,并设置相关属性。     (3)客户端声明一个queue,并设置相关属性。     (4)客户端使用routing key,在exchange和queue之间建立好绑定关系。   (5) 客户端投递消息到exchange。exchange接收到消息后,就根据消息的key和已经设置的binding,进行消息路由,将消息投递到一个或多个队列里。     P: 为Producer,数据的发送方。     C:为Consumer,数据的接收方。     Exchange:消息交换机