RandomAccessFile中read()方法的返回值

RandomAccessFile raf=
new RandomAccessFile("D:/fis2.txt","rw");
raf.write(100);
raf.seek(0);
int a=raf.read();
System.out.println(a);//输出 100
raf.close();
之前所了解到的知识是:
read()方法返回值是所读取到byte的个数
以上的返回值如何理解?

1个回答

你的理解是有误的,read的api是这样的:

 Reads a byte of data from this file. The byte is returned as an integer in the range 0 to 255 

即读取一个字节的数据,并返回这个字节数据对于的byte类型的值。你的代码添加注释如下:

     //将100作为一个字节数据写入文件
            raf.write(100);
            //将指针移到文件开头处
            raf.seek(0);
            //从文件中读取一个字节的数据
            int a = raf.read();
            //输出100说明你读取的一个字节的数据和你先写入的一个字节是同一个
            System.out.println(a);

主要就是seek(0)操作将文件指针重置到开头位置了,如果你没有这个重置操作,那么你read的数据就不是你先前写入的那个字节的数据了。而是文件的下一个字节的数据。

syd_ddd
syd_ddd API里第一行说这个byte返回了一个integer。而方法的返回值注释的是返回下一个byte。经过代码测试返回的是当前byte的integer。是API描述有误,还是我哪里理解错误? 谢谢(*°∀°)=3
接近 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
JAVA RandomAccessFile方法的一些问题
学习RandomAccessFile的过程中,老师说String类型的长度固定为16, 返回方法的size()中String是16乘2,这是一个问题 还有一个我在一个空的文件里存储一个int类型的数据,实际是2字节,但是占用空间是4096字节 老师说的int类型是长度是4,对于这些有点迷糊,可能我表达也不是很清楚,打扰了...
RandomAccessFile类的write(byte[])方法怎么用?
RandomAccessFile类的write(byte[])方法怎么用?
Java RandomAccessFile的读取问题
代码如下: public static void main(String[] args) { //(十) 使用随机文件流类RandomAccessFile将一个文本文件倒置读出。 File file = new File("ma.dat"); try { RandomAccessFile raf = new RandomAccessFile(file,"r"); //??? int b=raf.read(); System.out.println(b); /*int b = raf.readByte(); System.out.println(b);*/ int c=raf.readByte(); System.out.println(c); int d=raf.readByte(); System.out.println((char)d); char ch = '建'; System.out.println(Integer.toBinaryString(ch)); //101111011111010 } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } 然后ma.dat里的内容是: 建2ield&*@` 中文乱码 如何解决? 打印到控制台的结果是: 189 -88 2 101111011111010 为什么结果是189,-88???后面的2和101111011111010我懂。就是不懂前面二个结果?求大牛解答!感激不尽!
RandomAccessFile流是否可以读写对象
我知道RandomAccessFile可以读写文件我想问的是RandomAccessFile流是否可以读写对象
请教:关于RandomAccessFile阻塞ScheduledExecutorService的问题
大家好, 我想实现 读一个正在动态增长的日志 的功能,下面第一段代码本够用了,可惜 那个日志还会不定时自动 归档(滚动,也就是 *.log 变 *.log1 ,*.log1变 *.log2 ,类推) 已经打开的 RandomAccessFile 仍然盯着最早关联的文件,无法识别关联到新生成的 *.log, 所以我修改了这段代码,就是下面第二段代码 新的问题是: 程序已运行到 randomFile.close(); 处就卡住 ,不能进行了 想知道原因,我对多线程了解不多,请大家指点。谢谢了 final RandomAccessFile randomFile = new RandomAccessFile(logFile, "rw"); ScheduledExecutorService exec = Executors.newScheduledThreadPool(1); exec.scheduleWithFixedDelay(new Runnable() { public void run() { try { RandomAccessFile randomFile = new RandomAccessFile(logFile, "rw"); randomFile.seek(lastTimeFileSize); String tmp = ""; while ((tmp = randomFile.readLine()) != null) { //do something } } catch (IOException e) { throw new RuntimeException(e); } ScheduledExecutorService exec = Executors.newScheduledThreadPool(1); exec.scheduleWithFixedDelay(new Runnable() { public void run() { try { RandomAccessFile randomFile = new RandomAccessFile(logFile, "rw"); randomFile.seek(lastTimeFileSize); String tmp = ""; while ((tmp = randomFile.readLine()) != null) { //do something } //程序会停止到这个位置,无法进行下去,没有报任何异常或错误 //如果把 close() 给删除掉,程序就可以正常往下运行了 randomFile.close(); } catch (IOException e) { throw new RuntimeException(e); } } }, 0, 10, TimeUnit.SECONDS);
新人再次求问,各路大神进来看看啊
为什么RandomAccessFile类的read方法和write方法用int类型存byte数据
对于RandomAccessFile的seek函数的一些疑问?
seek就是查询的意思,可以根据文件中的字节进行查询数据(不知道这么说对不对) 下面这个函数中 ``` private void setThreadBreakpoint( File file, File tempFile, long contentLength, long[] startPos, long[] endPos) { RandomAccessFile tempFileFos = null; try { if (file.exists()) { System.out.println("file " + fileName + " has exists!"); long localFileSize = file.length(); // 下载的目标文件已存在,判断目标文件是否完整 if (localFileSize < contentLength) { System.out.println("Now download continue ... "); tempFileFos = new RandomAccessFile(tempFile, "rw"); // 遍历目标文件的所有临时文件,设置断点的位置,即每个临时文件的长度 for (int i = 0; i < threadNum; i++) { tempFileFos.seek(4 + 24 * i + 8); endPos[i] = tempFileFos.readLong(); tempFileFos.seek(4 + 24 * i + 16); startPos[i] = tempFileFos.readLong(); } } else { System.out.println("This file has download complete!"); } } else { // 如果下载的目标文件不存在,则创建新文件 file.createNewFile(); tempFile.createNewFile(); tempFileFos = new RandomAccessFile(tempFile, "rw"); tempFileFos.writeInt(threadNum); for (int i = 0; i < threadNum; i++) { // 创建子线程来负责下载数据,每段数据的起始位置为(threadLength * i) startPos[i] = threadLength * i; tempFileFos.writeLong(startPos[i]); /* * 设置子线程的终止位置,非最后一个线程即为(threadLength * (i + 1) - 1) * 最后一个线程的终止位置即为下载内容的长度 */ if (i == threadNum - 1) { endPos[i] = contentLength; } else { endPos[i] = threadLength * (i + 1) - 1; } // end position tempFileFos.writeLong(endPos[i]); // current position tempFileFos.writeLong(startPos[i]); } } } catch (IOException e1) { e1.printStackTrace(); } finally { try { tempFileFos.close(); } catch (IOException e2) { e2.printStackTrace(); } } } ``` 这个循环方法体里 ``` // 遍历目标文件的所有临时文件,设置断点的位置,即每个临时文件的长度 for (int i = 0; i < threadNum; i++) { tempFileFos.seek(4 + 24 * i + 8); endPos[i] = tempFileFos.readLong(); tempFileFos.seek(4 + 24 * i + 16); startPos[i] = tempFileFos.readLong(); } ``` 这句话 ``` tempFileFos.seek(4 + 24 * i + 8); ``` 这里面seek的参数是根据什么确定的?
jsp 用 RandomAccessFile上传文件
File a=new File("D:/ceshi/2/2.txt"); FileOutputStream a1=new FileOutputStream(a); InputStream b1=request.getInputStream(); byte v[]=new byte[20000]; int n; while((n=b1.read(v))!=-1) a1.write(v, 0, n); a1.close(); b1.close(); String filename="t.txt"; byte cc[]=filename.getBytes("ISO-8859-1"); filename=new String(cc); File c1=new File("D:/ceshi/2/"+filename); RandomAccessFile randomwrite=new RandomAccessFile(c1,"rw"); RandomAccessFile randomread=new RandomAccessFile(a,"r"); int second=1; String secondLine=null; while(second<=2) { secondLine=randomread.readLine(); second++; } randomread.seek(0); long four=0; int four1=1; while((n=randomread.readByte())!=-1&&(four1<=4)) { if(n=='\n') { four=randomread.getFilePointer(); four1++; } } randomread.seek(randomread.length()); long end=randomread.getFilePointer(); int j=1; while( (end>=0) && (j<6)) { end--; randomread.seek(end); n=randomread.readByte(); if(n=='\n') { end=randomread.getFilePointer(); j++; } randomread.seek(four); while(four<end-1) { n=randomread.readByte(); randomwrite.write(n); four=randomread.getFilePointer(); } randomread.close(); randomwrite.close(); } 每次传完 文件后面都有一行多余的代码
用okhttp实现断点续传,网络请求进OnFailure,急急急,大神们
ProgressDownloader类 ``` public class ProgressDownloader { public static final String TAG = "TestProgressDownloader"; private ProgressResponseBody.ProgressListener progressListener; private String url; private OkHttpClient client; private File destination; private Call call; public ProgressDownloader(String url, File destination, ProgressResponseBody.ProgressListener progressListener) { this.url = url; this.destination = destination; this.progressListener = progressListener; //在下载、暂停后的继续下载中可复用同一个client对象 client = getProgressClient(); } //每次下载需要新建新的Call对象 private Call newCall(long startPoints) { Request request = new Request.Builder() .get() .url(url) .header("RANGE", "bytes=" + startPoints + "-")//断点续传要用到的,指示下载的区间 .build(); return client.newCall(request); } public OkHttpClient getProgressClient() { // 拦截器,用上ProgressResponseBody Interceptor interceptor = new Interceptor() { @Override public Response intercept(Chain chain) throws IOException { Response originalResponse = chain.proceed(chain.request()); return originalResponse.newBuilder() .body(new ProgressResponseBody(originalResponse.body(), progressListener)) .build(); } }; return new OkHttpClient.Builder() .addNetworkInterceptor(interceptor) .build(); } //startsPoint指定开始下载的点 public void download(final long startsPoint) { call = newCall(startsPoint); call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { Log.e("=======================","fail"); } @Override public void onResponse(Call call, Response response) throws IOException { Log.e("=======================","pass"); } }); } public void pause() { if(call!=null){ call.cancel(); } } private void save(Response response, long startsPoint) { ResponseBody body = response.body(); InputStream in = body.byteStream(); FileChannel channelOut = null; // 随机访问文件,可以指定断点续传的起始位置 RandomAccessFile randomAccessFile = null; try { randomAccessFile = new RandomAccessFile(destination, "rwd"); //Chanel NIO中的用法,由于RandomAccessFile没有使用缓存策略,直接使用会使得下载速度变慢,亲测缓存下载3.3秒的文件,用普通的RandomAccessFile需要20多秒。 channelOut = randomAccessFile.getChannel(); // 内存映射,直接使用RandomAccessFile,是用其seek方法指定下载的起始位置,使用缓存下载,在这里指定下载位置。 MappedByteBuffer mappedBuffer = channelOut.map(FileChannel.MapMode.READ_WRITE, startsPoint, body.contentLength()); byte[] buffer = new byte[1024]; int len; while ((len = in.read(buffer)) != -1) { mappedBuffer.put(buffer, 0, len); } } catch (IOException e) { e.printStackTrace(); }finally { try { in.close(); if (channelOut != null) { channelOut.close(); } if (randomAccessFile != null) { randomAccessFile.close(); } } catch (IOException e) { e.printStackTrace(); } } } } ``` MainActivity类 ``` /** * 1.添加依赖 * 2.生成带进度监听的ProgressResponseBody * 3.创建ProgressDownloader * 4.清单文件中添加网络权限和文件访问权限 */ public class MainActivity extends AppCompatActivity implements ProgressResponseBody.ProgressListener{ public static final String TAG = "MainActivity"; public static final String PACKAGE_URL = "http://gdown.baidu.com/data/wisegame/df65a597122796a4/weixin_821.apk"; @Bind(R.id.progressBar) ProgressBar progressBar; private long breakPoints; private ProgressDownloader downloader; private File file; private long totalBytes; private long contentLength; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); } @OnClick({R.id.downloadButton, R.id.cancel_button, R.id.continue_button}) public void onClick(View view) { switch (view.getId()) { case R.id.downloadButton: // 新下载前清空断点信息 breakPoints = 0L; file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "sample.apk"); downloader = new ProgressDownloader(PACKAGE_URL, file, this); downloader.download(0L); break; case R.id.cancel_button: downloader.pause(); Toast.makeText(this, "下载暂停", Toast.LENGTH_SHORT).show(); // 存储此时的totalBytes,即断点位置。 breakPoints = totalBytes; break; case R.id.continue_button: downloader.download(breakPoints); break; } } @Override public void onPreExecute(long contentLength) { // 文件总长只需记录一次,要注意断点续传后的contentLength只是剩余部分的长度 if (this.contentLength == 0L) { this.contentLength = contentLength; progressBar.setMax((int) (contentLength / 1024)); } } @Override public void update(long totalBytes, boolean done) { // 注意加上断点的长度 this.totalBytes = totalBytes + breakPoints; progressBar.setProgress((int) (totalBytes + breakPoints) / 1024); if (done) { // 切换到主线程 Observable .empty() .observeOn(AndroidSchedulers.mainThread()) .doOnCompleted(new Action0() { @Override public void call() { Toast.makeText(MainActivity.this, "下载完成", Toast.LENGTH_SHORT).show(); } }) .subscribe(); } } } ``` 代码链接:https://blog.csdn.net/halaoda/article/details/78502693
【求助】代码问题,关于RandomAccessFile类的定长写入读取
正在做一个交作业用的本地小型数据库,在删除属性的部分,听老师的建议把原来的内容用新内容覆盖。但在关于定长写入读取的部分有了错误。代码如下 写入部分: ``` for (int i = 0; i < num; i++) {//写入定长属性名 randoms.writeBytes(RandomAccessFiles.format(attris[i], 20, attris[i].length())); } randoms.write("\r\n".getBytes()); for (int i = 0; i < num; i++) {//写入定长类型 randoms.writeBytes(RandomAccessFiles.format(types[i], 10, types[i].length())); } randoms.write("\r\n".getBytes()); for (int i = 0; i < num; i++) {//写入长度 randoms.writeInt(length[i]); } randoms.write("\r\n".getBytes()); for (int i = 0; i < num; i++) {//写入是否主键 randoms.writeBoolean(key[i]); } randoms.write("\r\n".getBytes()); for (int i = 0; i < num; i++) {//写入是否允许空值 randoms.writeBoolean(isnull[i]); } randoms.write("\r\n".getBytes()); randoms.close(); ``` 这是读取和替换的部分,指针位置是没问题的。value里保存删除后的新内容,最后一并写入 ``` int x = 0; byte[] b = new byte[20]; for (int i = 0; i < num; i++) { random.read(b, 0, 20); if (new String(b).trim().equals(attri)) { //查找属性名 x = i; }else { value.append(new String(b)); } } random.readLine();//将换行符读掉 value.append("\r\n"); s = random.readLine();//类型组 System.out.println(s.length()); System.out.println(s); s = s.substring(0 ,x*10) + s.substring((x + 1)*10, s.length()); //数据类型 //System.out.println(s); value.append(s + "\r\n"); s = random.readLine(); System.out.println(s.length()); s = s.substring(0 ,x*4) + s.substring((x + 1)*4, s.length()); //数据长度 //System.out.println(s); value.append(s + "\r\n"); s = random.readLine(); System.out.println(s.length()); s = s.substring(0, x) + s.substring(x + 1, s.length()); //是否key //System.out.println(s); value.append(s + "\r\n"); s = random.readLine(); System.out.println(s.length()); s = s.substring(0, x) + s.substring(x + 1, s.length()); //是否null //System.out.println(s); value.append(s + "\r\n"); ``` 因为属性组、长度组、标志组都是定长的,删除的时候也只要定长搜索到要删除的属性是第几个,然后用substring方法就可以越过被删除的数据。但是后续测试中发现,substring方法偶尔会出现越界、偶尔不会,但删除了非对应属性的类型。尤其在读取长度那里,用readline方法读取后输出长度,(测试时输入了4个属性,writeInt应该写入四个4字节长度),竟然是9?顿时迷茫了,有大神帮帮忙,检查一下代码吗?
使用RandomAccessFile写文件出现乱码
各位前辈!请教一下为什么使用RandomAccessFile写文件出现乱码? 具体代码如下: import java.io.*; public class mRandomAccess { public static void main(String[] args) throws IOException { RandomAccessFile file = new RandomAccessFile("f:\\360Downloads\\movie\\moviess\\text.txt", "rw"); file.writeBoolean(false); file.writeBoolean(true); file.writeFloat(1.23f); file.writeDouble(1.234343); file.writeLong(1234L); file.writeShort(123); file.writeUTF("好学"); file.close(); } } 其运行结果为: ?漰?罂農緮 ? { 濂藉 ? { 濂藉 ? { 榛庢磱
length cannot be resolved or not a field咋解决,谢谢(网络传输)
package downutil; import java.net.URL; import java.util.RandomAccess; import java.io.RandomAccessFile; import java.io.Serializable; import java.net.HttpURLConnection; public class DownUtil { private DownThread[] threads; private String path; private String targetFile; private int threadNum; private int fileSize; private long startPos; private int currentPartSize; private RandomAccessFile currentPart; public DownUtil(String path,String targetFile,int threadNum) { this.path=path; this.threadNum=threadNum; threads = new DownThread[threadNum]; this.targetFile=targetFile; } public void download()throws Exception{ URL url=new URL(path); HttpURLConnection conn=(HttpURLConnection)url.openConnection(); conn.setConnectTimeout(5*1000); conn.setRequestMethod("GET"); conn.setRequestProperty( "Accept", "image/gif,image/jpeg,image/pjpeg,image/pjpeg," +"application/x-shockwave-falsh,application/xaml+xml," +"application/vnd.ms-xpsdocument,application/x-ms-xbap," +"application/x-ms-application,application/vnd.ms-excel," + "application/vnd.ms-powerpoint,application/msword,*/*"); conn.setRequestProperty("Accept-Language", "zh-CN");; conn.setRequestProperty("Charset", "UTF-8"); conn.setRequestProperty("Connection","Keep-Alive"); fileSize=conn.getContentLength(); conn.disconnect(); int currentPartSize=fileSize/threadNum+1; RandomAccessFile file=new RandomAccessFile(targetFile,"rw"); file.setLength(fileSize);; file.close(); for(int i=0;i<threadNum;i++) { int startPos=i*currentPartSize; RandomAccessFile currentPart=new RandomAccessFile(targetFile,"rw"); currentPart.seek(startPos);; threads[i]= new DownThread(startPos, currentPartSize,currentPart); threads[i].start(); } } public double getCompleteRate() { int sumSize=0; for(int i=0;i<threadNum;i++){ // 此处显示length cannot be resolved or not a field? sumSize+=threads[i].length; } return sumSize*1.0/fileSize; } public class DownThread extends Thread{ private int startPos; private int currentPartSize; private RandomAccessFile currentPart; private int[] threadNum; public DownThread(int startPos, int currentPartSize,RandomAccessFile currentPart) { this.startPos=startPos; this.currentPartSize=currentPartSize; this.currentPart= currentPart; } } public void run() { try { URL url=new URL(path); HttpURLConnection conn=(HttpURLConnection)url.openConnection(); conn.setConnectTimeout(5*1000); conn.setRequestMethod("GET"); conn.setRequestProperty("Accept", "image/gif,image/jpeg,image/pjpeg,image/pjpeg," +"applicaton/x-shockwave-flash,application/xaml+xml," +"spplication/vnd.ms-xpsdocument,application/x-ms-xbap," +"application/x-ms-application,application/vnd.ms-excel," +"appplication/vnd.ms-powerpoint,application/mswerd,*/*"); conn.setRequestProperty("Accept-Language", "zh-CN"); conn.setRequestProperty("Charset", "UTF-8"); java.io.InputStream inStream=conn.getInputStream(); inStream.skip(this.startPos); byte[] buffer=new byte[1024]; int hasRead=0; int length; while(length<currentPartSize&&(hasRead=inStream.read(buffer))!=-1); { currentPart.write(buffer,0,hasRead); length+=hasRead; currentPart.close(); inStream.close(); } } catch(Exception e) { e.printStackTrace(); } } public class MultiThreadDown{ public static void main(String[] args)throws Exception{ final DownUtil downUtil=new DownUtil("http://127.0.0.1/"+ "/ProgramData/网页/摄影/0001.jpg", "ios.jpg",4); downUtil.download(); new Thread(()->{ while( downUtil.getCompleteRate()<1){ System.out.println("已完成:"+downUtil.getCompleteRate()); try { Thread.sleep(1000);} catch(Exception ex) {} } }).start(); } }
java RandomAccessFile问题,求解答
raf = new RandomAccessFile(file, "rw"); //利用读写模式实例化随机文件 raf.seek(file.length()); //文件指针跳至文件尾,准备追加数据 byte b[] = new byte[16]; //声明数组,表示地名 StringBuffer sb = new StringBuffer(16); //实例化字符缓冲对象,长度为16B sb.replace(0, 16," "); //填充16个空格确保地名长度相同 sb.replace(0,nation.length()*2, nation);//把地名信息放在字符缓冲对象sb中 b = sb.toString().getBytes(); raf.write(b); raf.close(); 写入文件的内容不对啊,求大神解答
JSP菜鸟一枚,请教如何实现在JSP页面点击button 按钮提交POST请求,并获取返回值
JSP菜鸟一枚,请教如何实现在JSP页面点击button 按钮提交POST请求,并获取返回值,问题很困扰。 因为之前不太了解框架和技术,之前用过ajax、jquery,请求成功,但是返回值取不出来,因为跨域请求安全问题。准备用servlet,但是servlet需要在服务端做修改,显然不适合,我是接口调用。请问大家有什么好的方法,实现JSP页面按钮提交求情获取返回值,最好能给一段代码示例。 Index.jsp <%@ page language="java" import="java.util.*" %> <%@ page pageEncoding="UTF-8" contentType="text/html;charset=utf-8" %> <%@ page import="WEB_API.*"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head header("Access-Control-Allow-Methods:GET,POST");> <base href="<%=basePath%>"> <title>中文显示示例</title> <meta http-equiv="Access-Control-Allow-Origin" content="http://eucpwx.mb345.com:443"> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <% WEB_API wa=new WEB_API(); String res=wa.sendPost("17761280053", "验证码是123"); System.out.println(res); %> <script type="text/JavaScript" src="js/jquery-3.0.0.min.js" ></script> <script type="text/javascript"> function dianji(){ $.post("http://eucpwx.mb345.com:443/AppApi/User/GetUserList?UserID=SU0126&GetType=1&NowID=&GetNum=1&Other=&SearchUserName=", function(data){ alert("Data Loaded: " + data); }); } </script> </head> <body>中文显示示例 <br> <input id="test" type="text" value="jquery"/> <input id="btn" type="button" onclick="dianji()" value="单击弹窗"/> </body> </html> WEB_API.java package WEB_API; import java.awt.EventQueue; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.io.UnsupportedEncodingException; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.net.URLEncoder; import javax.swing.*; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.sql.Types; import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; import java.io.FileReader; import java.io.RandomAccessFile; import java.util.ArrayList; import java.util.List; import com.alibaba.fastjson.JSON.*; public class WEB_API{ private static Connection con = null; public static void main(String[] args) { } public WEB_API(){ } public static String sendPost(String url, String param) { PrintWriter out = null; BufferedReader in = null; String result = ""; String strUrl="http://eucpwx.mb345.com:443/AppApi/User/GetUserList?"; String strparam = "UserID=SU0126&GetType=1&NowID=&GetNum=1&Other=&SearchUserName="; try { URL realUrl = new URL(strUrl); URLConnection conn = realUrl.openConnection(); conn.setRequestProperty("accept", "*/*"); conn.setRequestProperty("connection", "Keep-Alive"); conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); conn.setDoOutput(true); conn.setDoInput(true); out = new PrintWriter(conn.getOutputStream()); out.print(strparam); out.flush(); in = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8")); String line; while ((line = in.readLine()) != null) { result += line; } } catch (Exception e) { System.out.println("发送POST请求出现异常!" + e); e.printStackTrace(); } finally { try { if (out != null) { out.close(); } if (in != null) { in.close(); } } catch (IOException ex) { ex.printStackTrace(); } } return result; } } 火狐浏览器显示: ![图片说明](https://img-ask.csdn.net/upload/201709/07/1504778539_257069.png)
如何使用可能是内部类,刚学java
package downutil; import java.net.URL; import java.io.RandomAccessFile; import java.net.HttpURLConnection; import java.lang.Thread; import org.omg.CORBA_2_3.portable.InputStream; public class DownUtil<DownThread> { private String path; private String targetFile; private int threadNum; private DownThread[] threads; private int fileSize; public DownUtil(String path, String targetFile, int threadNum) { this.path = path; this.threadNum = threadNum; //此处DownThread类不能用,以下如此,亦不能实例化 threads = (DownThread[]) new DownThread(threadNum); this.targetFile = targetFile; } public void download() throws Exception { URL url = new URL(path); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(5 * 1000); conn.setRequestMethod("GET"); conn.setRequestProperty("Accept", "image/gif,image/jpeg,image/pjpeg,image/pjpeg," + "application/x-shockwave-falsh,application/xaml+xml," + "application/vnd.ms-xpsdocument,application/x-ms-xbap," + "application/x-ms-application,application/vnd.ms-excel," + "application/vnd.ms-powerpoint,application/msword,*/*"); conn.setRequestProperty("Accept-Language", "zh-CN"); ; conn.setRequestProperty("Charset", "UTF-8"); conn.setRequestProperty("Connection", "Keep-Alive"); fileSize = conn.getContentLength(); conn.disconnect(); int currentPartSize = fileSize / threadNum + 1; RandomAccessFile file = new RandomAccessFile(targetFile, "rw"); file.setLength(fileSize); ; file.close(); for (int i = 0; i < threadNum; i++) { int startPos = i * currentPartSize; RandomAccessFile currentPart = new RandomAccessFile(targetFile, "rw"); currentPart.seek(startPos); ; //此处如此DownTread threads[i] = new DownThread(startPos, currentPartSize, currentPart); ((Thread) threads[i]).start(); } } public double getCompleteRate() { int sumSize = 0; for (int i = 0; i < threadNum; i++) { //此处length报错,不知啥问题 sumSize += threads[i].length; } return sumSize * 1.0 / fileSize; //此处DownThread不知啥问题 private class DownThread extends Thread { private int startPos; private int currentPartSize; private RandomAccessFile currentPart; public int length; public DownThread(int startPos, int currentPartSize, RandomAccessFile currentPart) { this.startPos = startPos; this.currentPartSize = currentPartSize; this.currentPart = currentPart; } public void run() { try { URL url = new URL(path); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(5 * 1000); conn.setRequestMethod("GET"); conn.setRequestProperty("Accept", "image/gif,image/jpeg,image/pjpeg,image/pjpeg," + "applicaton/x-shockwave-flash,application/xaml+xml," + "spplication/vnd.ms-xpsdocument,application/x-ms-xbap," + "application/x-ms-application,application/vnd.ms-excel," + "appplication/vnd.ms-powerpoint,application/mswerd,*/*"); conn.setRequestProperty("Accept-Language", "zh-CN"); conn.setRequestProperty("Charset", "UTF-8"); java.io.InputStream inStream = conn.getInputStream(); inStream.skip(this.startPos); byte[] buffer = new byte[1024]; int hasRead = 0; while (length < currentPartSize && (hasRead = inStream.read(buffer)) != -1) ; { currentPart.write(buffer, 0, hasRead); length += hasRead; currentPart.close(); inStream.close(); } } catch (Exception e) { e.printStackTrace(); } }; } } public static class MultiThreadDown { public static void main(String[] args) throws Exception { final DownUtil downUtil = new DownUtil( "http://www.crazyit.org/" + "attachments/month_1403/1403202355ff6cc9a4fbf6f14a.png", "ios.png", 4); downUtil.download(); new Thread(() -> { while (downUtil.getCompleteRate() < 1) { System.out.println("已完成:" + downUtil.getCompleteRate()); try { Thread.sleep(1000); } catch (Exception ex) { } } }).start(); } } }
FtpClient 中completePendingCommand 方法卡住
自己的代码如下: RandomAccessFile raf = new RandomAccessFile(localFile, "r"); OutputStream out; //读写操作 .................. out.flush(); raf.close(); out.close(); Log.i(TAG, "befor setDefaultTimeout"); CLogger.i(TAG, "befor setDefaultTimeout"); ftpClient.setDefaultTimeout(1000 * 10); Log.i(TAG, "befor completePendingCommand"); boolean result = ftpClient.completePendingCommand(); Log.i(TAG, "after completePendingCommand"); 从log中看出: befor completePendingCommand 已打印 after completePendingCommand 未打印 可以判断是completePendingCommand方法一直没有返回。 我看了FtpClient 的源码,发现completePendingCommand做的事比较简单: public boolean completePendingCommand() throws IOException { return FTPReply.isPositiveCompletion(getReply()); } 不知道为何会阻塞。 求高人指点,多谢!!
jsp 页面怎么通过按钮提交POST请求,并获取返回值。
我用过ajax,jquery,提交请求可以,但是返回值获取不到,提示跨域请求的问题。直接放弃,因为我是接口请求。 index.jsp <%@ page language="java" import="java.util.*" %> <%@ page pageEncoding="UTF-8" contentType="text/html;charset=utf-8" %> <%@ page import="WEB_API.*"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head header("Access-Control-Allow-Methods:GET,POST");> <base href="<%=basePath%>"> <title>中文显示示例</title> <meta http-equiv="Access-Control-Allow-Origin" content="http://eucpwx.mb345.com:443"> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <% WEB_API wa=new WEB_API(); String res=wa.sendPost("17761280053", "验证码是123"); System.out.println(res); %> <script type="text/JavaScript" src="js/jquery-3.0.0.min.js" ></script> <script type="text/javascript"> function dianji(){ $.post("http://eucpwx.mb345.com:443/AppApi/User/GetUserList?UserID=SU0126&GetType=1&NowID=&GetNum=1&Other=&SearchUserName=", function(data){ alert("Data Loaded: " + data); }); } </script> </head> <body>中文显示示例 <br> <input id="test" type="text" value="jquery"/> <input id="btn" type="button" onclick="dianji()" value="单击弹窗"/> </body> </html> WEB_API.java package WEB_API; import java.awt.EventQueue; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.io.UnsupportedEncodingException; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.net.URLEncoder; import javax.swing.*; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.sql.Types; import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; import java.io.FileReader; import java.io.RandomAccessFile; import java.util.ArrayList; import java.util.List; import com.alibaba.fastjson.JSON.*; public class WEB_API{ private static Connection con = null; public static void main(String[] args) { } public WEB_API(){ } public static String sendPost(String url, String param) { PrintWriter out = null; BufferedReader in = null; String result = ""; String strUrl="http://eucpwx.mb345.com:443/AppApi/User/GetUserList?"; String strparam = "UserID=SU0126&GetType=1&NowID=&GetNum=1&Other=&SearchUserName="; try { URL realUrl = new URL(strUrl); URLConnection conn = realUrl.openConnection(); conn.setRequestProperty("accept", "*/*"); conn.setRequestProperty("connection", "Keep-Alive"); conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); conn.setDoOutput(true); conn.setDoInput(true); out = new PrintWriter(conn.getOutputStream()); out.print(strparam); out.flush(); in = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8")); String line; while ((line = in.readLine()) != null) { result += line; } } catch (Exception e) { System.out.println("发送POST请求出现异常!" + e); e.printStackTrace(); } finally { try { if (out != null) { out.close(); } if (in != null) { in.close(); } } catch (IOException ex) { ex.printStackTrace(); } } return result; } } ![图片说明](https://img-ask.csdn.net/upload/201709/07/1504780002_204864.png)
编译时没出错,运行时在类DownUtil中找不到主方法
`import java.io.IOException; import java.io.RandomAccessFile; import java.net.HttpURLConnection; import java.net.URL; import org.omg.CORBA.portable.InputStream; public class DownUtil { private String path; private String targetFile; private int threadNum; private DownThread[] threads; private int fileSize; public DownUtil(String path,String targetFile,int threadNum) { this.path=path; this.threadNum = threadNum; threads=new DownThread[threadNum]; this.targetFile = targetFile; } public void download() throws Exception { URL url = new URL(path); HttpURLConnection conn=(HttpURLConnection)url.openConnection(); conn.setConnectTimeout(5*1000); conn.setRequestMethod("GET"); conn.setRequestProperty("Accept","image/gif,image/jpeg,image/pjpeg,image/pjpeg," +"application/x-shockwave-flash,application/xaml+xml," +"application/vnd.ms-xpsdocument,application/x-ms-xbap," +"application/x-ms-application,application/vnd.ms-excel," +"application/vnd.ms-powerpoint,application/msword,*/*"); conn.setRequestProperty("Accept-Language","zh-CN"); conn.setRequestProperty("Charset","UTF-8"); conn.setRequestProperty("Connection","Keep-Alive"); fileSize = conn.getContentLength(); conn.disconnect(); int currentPartSize=fileSize/threadNum+1; RandomAccessFile file = new RandomAccessFile(targetFile,"rw"); file.setLength(fileSize); file.close(); for(int i=0;i<threadNum;i++) { int startPos = i*currentPartSize; RandomAccessFile currentPart=new RandomAccessFile(targetFile,"rw"); currentPart.seek(startPos); threads[i] = new DownThread(startPos,currentPartSize,currentPart); threads[i].start(); } } public double getCompleteRate() { int sumSize=0; for(int i=0;i<threadNum;i++) { sumSize+=threads[i].Length; } return sumSize*1.0/fileSize; } private class DownThread extends Thread { private int startPos; private int currentPartSize; private RandomAccessFile currentPart; public int Length; public DownThread(int startPos,int currentPartSize,RandomAccessFile currentPart) { this.startPos = startPos; this.currentPartSize = currentPartSize; this.currentPart = currentPart; } public void run() { try { URL url = new URL(path); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); conn.setConnectTimeout(5*1000); conn.setRequestMethod("GET"); conn.setRequestProperty("Accept", "image/gif,image/jpeg,image/pjpeg,image/pjpeg," +"application/x-shockwave-flash,application/xaml+xml," +"application/vnd.ms-xpsdocument,application/x-ms-xbap," +"application/x-ms-application,application/vnd.ms-excel," +"application/vnd.ms-powerpoint,application/msword,*/*"); conn.setRequestProperty("Accept-Language","zh-CN"); conn.setRequestProperty("Charset","UTF-8"); InputStream instream =(InputStream)conn.getInputStream(); instream.skip(this.startPos); byte[] buffer = new byte[1024]; int hasRead=0; while(Length<currentPartSize&&(hasRead=instream.read(buffer))!=-1) { currentPart.write(buffer,0,hasRead); Length+=hasRead; } currentPart.close(); instream.close(); } catch(IOException e) { e.printStackTrace(); } } } } 这是一本书中的代码,只有中间一部分,头没有,运行时找不到主方法 显示请将主方法定义为public static void main(String[] args), 刚学使用eclipse 还不咋会,只能做到这,有错误帮助完成一下,谢谢`` ``` ``` ``` ``` ``` ``` ``` ``` ``` ``` ``` ``` ``` ``` ``` ``` ``` ```
Java微信开发上传下载语音怎么获取amr语音的秒数,传给APP端
微信端发语音,微信显示语音的秒数,微信接收到语音也能显示秒数,怎么获得这个秒数? 查了很多资料例子 amr获取时长的例子,运行得到的与真实的秒数不符合: 用的方法是下面的: public static int getAmrDuration(File file) throws IOException { long duration = -1; int[] packedSize = { 12, 13, 15, 17, 19, 20, 26, 31, 5, 0, 0, 0, 0, 0, 0, 0 }; RandomAccessFile randomAccessFile = null; try { randomAccessFile = new RandomAccessFile(file, "rw"); long length = file.length();// 文件的长度 int pos = 6;// 设置初始位置 int frameCount = 0;// 初始帧数 int packedPos = -1; byte[] datas = new byte[1];// 初始数据值 while (pos <= length) { randomAccessFile.seek(pos); if (randomAccessFile.read(datas, 0, 1) != 1) { duration = length > 0 ? ((length - 6) / 650) : 0; break; } packedPos = (datas[0] >> 3) & 0x0F; pos += packedSize[packedPos] + 1; frameCount++; } duration += frameCount * 20;// 帧数*20 } finally { if (randomAccessFile != null) { randomAccessFile.close(); } } return (int)((duration/1000)+1); }
相见恨晚的超实用网站
搞学习 知乎:www.zhihu.com 简答题:http://www.jiandati.com/ 网易公开课:https://open.163.com/ted/ 网易云课堂:https://study.163.com/ 中国大学MOOC:www.icourse163.org 网易云课堂:study.163.com 哔哩哔哩弹幕网:www.bilibili.com 我要自学网:www.51zxw
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载    点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量 path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。
字节跳动视频编解码面经
引言 本文主要是记录一下面试字节跳动的经历。 三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时
开源一个功能完整的SpringBoot项目框架
福利来了,给大家带来一个福利。 最近想了解一下有关Spring Boot的开源项目,看了很多开源的框架,大多是一些demo或者是一个未成形的项目,基本功能都不完整,尤其是用户权限和菜单方面几乎没有完整的。 想到我之前做的框架,里面通用模块有:用户模块,权限模块,菜单模块,功能模块也齐全了,每一个功能都是完整的。 打算把这个框架分享出来,供大家使用和学习。 为什么用框架? 框架可以学习整体
源码阅读(19):Java中主要的Map结构——HashMap容器(下1)
(接上文《源码阅读(18):Java中主要的Map结构——HashMap容器(中)》) 3.4.4、HashMap添加K-V键值对(红黑树方式) 上文我们介绍了在HashMap中table数组的某个索引位上,基于单向链表添加新的K-V键值对对象(HashMap.Node&lt;K, V&gt;类的实例),但是我们同时知道在某些的场景下,HashMap中table数据的某个索引位上,数据是按照红黑树
c++制作的植物大战僵尸,开源,一代二代结合游戏
    此游戏全部由本人自己制作完成。游戏大部分的素材来源于原版游戏素材,少部分搜集于网络,以及自己制作。 此游戏为同人游戏而且仅供学习交流使用,任何人未经授权,不得对本游戏进行更改、盗用等,否则后果自负。 目前有六种僵尸和六种植物,植物和僵尸的动画都是本人做的。qq:2117610943 开源代码下载 提取码:3vzm 点击下载--&gt; 11月28日 新增四种植物 统一植物画风,全部修
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
Python——画一棵漂亮的樱花树(不同种樱花+玫瑰+圣诞树喔)
最近翻到一篇知乎,上面有不少用Python(大多是turtle库)绘制的树图,感觉很漂亮,我整理了一下,挑了一些我觉得不错的代码分享给大家(这些我都测试过,确实可以生成喔~) one 樱花树 动态生成樱花 效果图(这个是动态的): 实现代码 import turtle as T import random import time # 画樱花的躯干(60,t) def Tree(branch
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 顺便拉下票,我在参加csdn博客之星竞选,欢迎投票支持,每个QQ或者微信每天都可以投5票,扫二维码即可,http://m234140.nofollow.ax.
Python 基础(一):入门必备知识
目录1 标识符2 关键字3 引号4 编码5 输入输出6 缩进7 多行8 注释9 数据类型10 运算符10.1 常用运算符10.2 运算符优先级 1 标识符 标识符是编程时使用的名字,用于给变量、函数、语句块等命名,Python 中标识符由字母、数字、下划线组成,不能以数字开头,区分大小写。 以下划线开头的标识符有特殊含义,单下划线开头的标识符,如:_xxx ,表示不能直接访问的类属性,需通过类提供
深度学习图像算法在内容安全领域的应用
互联网给人们生活带来便利的同时也隐含了大量不良信息,防范互联网平台有害内容传播引起了多方面的高度关注。本次演讲从技术层面分享网易易盾在内容安全领域的算法实践经验,包括深度学习图
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 欢迎 改进 留言。 演示地点跳到演示地点 html代码如下`&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;music&lt;/title&gt; &lt;meta charset="utf-8"&gt
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
Python 编程实用技巧
Python是一门很灵活的语言,也有很多实用的方法,有时候实现一个功能可以用多种方法实现,我这里总结了一些常用的方法,并会持续更新。
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
"狗屁不通文章生成器"登顶GitHub热榜,分分钟写出万字形式主义大作
GitHub 被誉为全球最大的同性交友网站,……,陪伴我们已经走过 10+ 年时间,它托管了大量的软件代码,同时也承载了程序员无尽的欢乐。 万字申请,废话报告,魔幻形式主义大作怎么写?兄dei,狗屁不通文章生成器了解一下。这个富有灵魂的项目名吸引了众人的目光。项目仅仅诞生一周,便冲上了GitHub趋势榜榜首(Js中文网 -前端进阶资源教程)、是榜首哦
推荐几款比较实用的工具,网站
1.盘百度PanDownload 这个云盘工具是免费的,可以进行资源搜索,提速(偶尔会抽风????) 不要去某站买付费的???? PanDownload下载地址 2.BeJSON 这是一款拥有各种在线工具的网站,推荐它的主要原因是网站简洁,功能齐全,广告相比其他广告好太多了 bejson网站 3.二维码美化 这个网站的二维码美化很好看,网站界面也很...
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
相关热词 如何提升c#开发能力 矩阵乘法c# c#调用谷歌浏览器 c# 去空格去转义符 c#用户登录窗体代码 c# 流 c# linux 可视化 c# mvc 返回图片 c# 像素空间 c# 日期 最后一天
立即提问